diff --git a/_sources/generated.nix b/_sources/generated.nix index cd30fe9..351693e 100644 --- a/_sources/generated.nix +++ b/_sources/generated.nix @@ -59,14 +59,6 @@ }; date = "2018-10-22"; }; - poll = { - pname = "poll"; - version = "latest"; - src = fetchurl { - url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/poll.patch"; - sha256 = "sha256-Weh2+C5v2ORYO8JFYzntpPmJyGseFqArByZwLpX2CCU="; - }; - }; replay-fish = { pname = "replay-fish"; version = "d2ecacd3fe7126e822ce8918389f3ad93b14c86c"; diff --git a/flake.in.nix b/flake.in.nix index 6019718..2a02874 100644 --- a/flake.in.nix +++ b/flake.in.nix @@ -29,19 +29,17 @@ hyprland-plugins = mkFollowing "hyprwm/hyprland-plugins" "hyprland"; hyprpanel = mkInput "Jas-SinghFSU/HyprPanel"; hyprspace = mkFollowing "KZDKM/Hyprspace" "hyprland"; - hypr-dynamic-cursors = { - url = "path:///home/marshall/hypr-dynamic-cursors"; - inputs.hyprland.follows = "hyprland"; - }; + hypr-dynamic-cursors = mkFollowing "VirtCode/hypr-dynamic-cursors" "hyprland"; impermanence = mkInput "nix-community/impermanence"; nix-colors = mkInput "Misterio77/nix-colors"; + nixos-apple-silicon = mkInput "tpwrules/nixos-apple-silicon"; nixos-facter-modules = mkInput "numtide/nixos-facter-modules"; nixpkgs = mkInput "NixOS/nixpkgs/nixos-unstable"; nixvim = mkInput "pupbrained/nvim-config"; treefmt-nix = mkInput "numtide/treefmt-nix"; xmonad-contrib = mkInput "xmonad/xmonad-contrib"; wezterm = mkInput "wez/wezterm?dir=nix"; - zen-browser = mkInput "qlexqndru/zen-browser-flake"; + zen-browser = mkInput "youwen5/zen-browser-flake"; niri = mkFollowingNixpkgs "sodiboo/niri-flake"; cosmic = mkFollowingNixpkgs "lilyinstarlight/nixos-cosmic"; diff --git a/flake.lock b/flake.lock index 3a59edb..9887f27 100644 --- a/flake.lock +++ b/flake.lock @@ -129,7 +129,7 @@ "codeium": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_14" + "nixpkgs": "nixpkgs_15" }, "locked": { "lastModified": 1733165974, @@ -385,6 +385,21 @@ } }, "flake-compat_4": { + "locked": { + "lastModified": 1688025799, + "narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=", + "owner": "nix-community", + "repo": "flake-compat", + "rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { "locked": { "lastModified": 1696426674, "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", @@ -398,7 +413,7 @@ "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" } }, - "flake-compat_5": { + "flake-compat_6": { "flake": false, "locked": { "lastModified": 1696426674, @@ -415,7 +430,7 @@ "type": "github" } }, - "flake-compat_6": { + "flake-compat_7": { "flake": false, "locked": { "lastModified": 1650374568, @@ -431,7 +446,7 @@ "type": "github" } }, - "flake-compat_7": { + "flake-compat_8": { "flake": false, "locked": { "lastModified": 1650374568, @@ -830,7 +845,7 @@ }, "git-ignore-nix": { "inputs": { - "nixpkgs": "nixpkgs_20" + "nixpkgs": "nixpkgs_21" }, "locked": { "lastModified": 1709087332, @@ -849,7 +864,7 @@ }, "git-ignore-nix_2": { "inputs": { - "nixpkgs": "nixpkgs_22" + "nixpkgs": "nixpkgs_23" }, "locked": { "lastModified": 1709087332, @@ -1020,14 +1035,17 @@ "nixpkgs": "nixpkgs_9" }, "locked": { - "lastModified": 1734564409, - "narHash": "sha256-SlrRTl9/nxjNZaVcfxA0p4pTs/VZf1TqPeayksprpKc=", - "path": "/home/marshall/hypr-dynamic-cursors", - "type": "path" + "lastModified": 1734570720, + "narHash": "sha256-EeNVNDNxbz1dGWs/jJ/JQbZtWkN+i4qfU7SAiQOMwwY=", + "owner": "VirtCode", + "repo": "hypr-dynamic-cursors", + "rev": "111669a699f998b5eb5a0d5610b5fcb748aab038", + "type": "github" }, "original": { - "path": "/home/marshall/hypr-dynamic-cursors", - "type": "path" + "owner": "VirtCode", + "repo": "hypr-dynamic-cursors", + "type": "github" } }, "hyprcursor": { @@ -1606,6 +1624,26 @@ "url": "https://flakehub.com/f/NixOS/nix/%3D2.25.3" } }, + "nixos-apple-silicon": { + "inputs": { + "flake-compat": "flake-compat_4", + "nixpkgs": "nixpkgs_13", + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1733377410, + "narHash": "sha256-tZ9JEAaHIs3TPdRZeZzHsnJmUilkcnVaUTvyprbRb1A=", + "owner": "tpwrules", + "repo": "nixos-apple-silicon", + "rev": "e8c07c3ae199b55a8c1c35a7c067c5cef9c7e929", + "type": "github" + }, + "original": { + "owner": "tpwrules", + "repo": "nixos-apple-silicon", + "type": "github" + } + }, "nixos-facter-modules": { "locked": { "lastModified": 1734596637, @@ -1797,6 +1835,22 @@ } }, "nixpkgs_13": { + "locked": { + "lastModified": 1733212471, + "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { "locked": { "lastModified": 1734424634, "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", @@ -1812,7 +1866,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_15": { "locked": { "lastModified": 1702346276, "narHash": "sha256-eAQgwIWApFQ40ipeOjVSoK4TEHVd6nbSd9fApiHIw5A=", @@ -1828,7 +1882,7 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_16": { "locked": { "lastModified": 1734474063, "narHash": "sha256-Yk7+G3aWZpl9dnPBbZievN3htxiONcLXcxwdE9n0mX4=", @@ -1843,7 +1897,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_17": { "locked": { "lastModified": 1734119587, "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", @@ -1859,22 +1913,6 @@ "type": "github" } }, - "nixpkgs_17": { - "locked": { - "lastModified": 1733097829, - "narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_18": { "locked": { "lastModified": 1733097829, @@ -1893,15 +1931,15 @@ }, "nixpkgs_19": { "locked": { - "lastModified": 1729265718, - "narHash": "sha256-4HQI+6LsO3kpWTYuVGIzhJs1cetFcwT7quWCk/6rqeo=", - "owner": "NixOS", + "lastModified": 1733097829, + "narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "ccc0c2126893dd20963580b6478d1a10a4512185", + "rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -1924,6 +1962,22 @@ } }, "nixpkgs_20": { + "locked": { + "lastModified": 1729265718, + "narHash": "sha256-4HQI+6LsO3kpWTYuVGIzhJs1cetFcwT7quWCk/6rqeo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ccc0c2126893dd20963580b6478d1a10a4512185", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { "locked": { "lastModified": 1666603677, "narHash": "sha256-apAEIj+z1iwMaMJ4tB21r/VTetfGDLDzuhXRHJknIAU=", @@ -1937,21 +1991,21 @@ "type": "indirect" } }, - "nixpkgs_21": { - "locked": { - "lastModified": 1734126203, - "narHash": "sha256-0XovF7BYP50rTD2v4r55tR5MuBLet7q4xIz6Rgh3BBU=", - "rev": "71a6392e367b08525ee710a93af2e80083b5b3e2", - "revCount": 721840, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nixpkgs-weekly/0.1.721840%2Brev-71a6392e367b08525ee710a93af2e80083b5b3e2/0193d31f-3510-7908-9918-67e1b00081be/source.tar.gz" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, "nixpkgs_22": { + "locked": { + "lastModified": 1734126203, + "narHash": "sha256-0XovF7BYP50rTD2v4r55tR5MuBLet7q4xIz6Rgh3BBU=", + "rev": "71a6392e367b08525ee710a93af2e80083b5b3e2", + "revCount": 721840, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nixpkgs-weekly/0.1.721840%2Brev-71a6392e367b08525ee710a93af2e80083b5b3e2/0193d31f-3510-7908-9918-67e1b00081be/source.tar.gz" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_23": { "locked": { "lastModified": 1666603677, "narHash": "sha256-apAEIj+z1iwMaMJ4tB21r/VTetfGDLDzuhXRHJknIAU=", @@ -1965,7 +2019,7 @@ "type": "indirect" } }, - "nixpkgs_23": { + "nixpkgs_24": { "locked": { "lastModified": 1734126203, "narHash": "sha256-0XovF7BYP50rTD2v4r55tR5MuBLet7q4xIz6Rgh3BBU=", @@ -1979,7 +2033,7 @@ "type": "indirect" } }, - "nixpkgs_24": { + "nixpkgs_25": { "locked": { "lastModified": 1725634671, "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", @@ -2107,7 +2161,7 @@ "inputs": { "codeium": "codeium", "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_16", "nixvim": "nixvim_2", "treefmt-nix": "treefmt-nix_3" }, @@ -2128,12 +2182,12 @@ "nixvim_2": { "inputs": { "devshell": "devshell", - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_5", "flake-parts": "flake-parts_2", "git-hooks": "git-hooks", "home-manager": "home-manager_4", "nix-darwin": "nix-darwin", - "nixpkgs": "nixpkgs_16", + "nixpkgs": "nixpkgs_17", "nuschtosSearch": "nuschtosSearch", "treefmt-nix": "treefmt-nix_2" }, @@ -2219,8 +2273,9 @@ "niri": "niri", "nix-colors": "nix-colors", "nix-index-database": "nix-index-database", + "nixos-apple-silicon": "nixos-apple-silicon", "nixos-facter-modules": "nixos-facter-modules", - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_14", "nixvim": "nixvim", "snowfall-flake": "snowfall-flake", "snowfall-lib": "snowfall-lib_2", @@ -2252,6 +2307,22 @@ } }, "rust-overlay_2": { + "flake": false, + "locked": { + "lastModified": 1686795910, + "narHash": "sha256-jDa40qRZ0GRQtP9EMZdf+uCbvzuLnJglTUI2JoHfWDc=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "5c2b97c0a9bc5217fc3dfb1555aae0fb756d99f9", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { "inputs": { "nixpkgs": [ "wezterm", @@ -2274,7 +2345,7 @@ }, "snowfall-flake": { "inputs": { - "flake-compat": "flake-compat_5", + "flake-compat": "flake-compat_6", "nixpkgs": [ "nixpkgs" ], @@ -2296,7 +2367,7 @@ }, "snowfall-lib": { "inputs": { - "flake-compat": "flake-compat_6", + "flake-compat": "flake-compat_7", "flake-utils-plus": "flake-utils-plus", "nixpkgs": [ "snowfall-flake", @@ -2320,7 +2391,7 @@ }, "snowfall-lib_2": { "inputs": { - "flake-compat": "flake-compat_7", + "flake-compat": "flake-compat_8", "flake-utils-plus": "flake-utils-plus_2", "nixpkgs": [ "nixpkgs" @@ -2593,7 +2664,7 @@ }, "treefmt-nix_3": { "inputs": { - "nixpkgs": "nixpkgs_17" + "nixpkgs": "nixpkgs_18" }, "locked": { "lastModified": 1733761991, @@ -2611,7 +2682,7 @@ }, "treefmt-nix_4": { "inputs": { - "nixpkgs": "nixpkgs_18" + "nixpkgs": "nixpkgs_19" }, "locked": { "lastModified": 1734543842, @@ -2649,8 +2720,8 @@ "freetype2": "freetype2", "harfbuzz": "harfbuzz", "libpng": "libpng", - "nixpkgs": "nixpkgs_19", - "rust-overlay": "rust-overlay_2", + "nixpkgs": "nixpkgs_20", + "rust-overlay": "rust-overlay_3", "zlib": "zlib" }, "locked": { @@ -2714,7 +2785,7 @@ "inputs": { "flake-utils": "flake-utils_10", "git-ignore-nix": "git-ignore-nix_2", - "nixpkgs": "nixpkgs_23", + "nixpkgs": "nixpkgs_24", "unstable": "unstable" }, "locked": { @@ -2735,7 +2806,7 @@ "inputs": { "flake-utils": "flake-utils_9", "git-ignore-nix": "git-ignore-nix", - "nixpkgs": "nixpkgs_21", + "nixpkgs": "nixpkgs_22", "xmonad": "xmonad" }, "locked": { @@ -2787,22 +2858,64 @@ }, "zen-browser": { "inputs": { - "nixpkgs": "nixpkgs_24" + "nixpkgs": "nixpkgs_25", + "zen-browser-aarch64": "zen-browser-aarch64", + "zen-browser-generic": "zen-browser-generic", + "zen-browser-specific": "zen-browser-specific" }, "locked": { - "lastModified": 1734250224, - "narHash": "sha256-jK9VT5x0XXsFWVcB5t52h3259y67mYZwiJMwFE9Jvzc=", - "owner": "qlexqndru", + "lastModified": 1734667644, + "narHash": "sha256-vluyzRt6RikEn78Yk0t7Qd96iZZfyRBt4+ESI0mtlhk=", + "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "4fee855ff88b1cba3bf445a94adae15aca53e85d", + "rev": "8c8af380bf45b42ae14b2f6d5252be3627332f23", "type": "github" }, "original": { - "owner": "qlexqndru", + "owner": "youwen5", "repo": "zen-browser-flake", "type": "github" } }, + "zen-browser-aarch64": { + "flake": false, + "locked": { + "lastModified": 1734641206, + "narHash": "sha256-F5FwGqAgL4kfEy5rNWvofRQl8SH0udQvEIMhysRMDgs=", + "type": "tarball", + "url": "https://github.com/zen-browser/desktop/releases/download/1.0.2-b.3/zen.linux-aarch64.tar.bz2" + }, + "original": { + "type": "tarball", + "url": "https://github.com/zen-browser/desktop/releases/download/1.0.2-b.3/zen.linux-aarch64.tar.bz2" + } + }, + "zen-browser-generic": { + "flake": false, + "locked": { + "lastModified": 1734646830, + "narHash": "sha256-slIWuEWSV9PK1JTr6UKKC+VP4oLNaczwkxkYiqcjZM8=", + "type": "tarball", + "url": "https://github.com/zen-browser/desktop/releases/download/1.0.2-b.3/zen.linux-generic.tar.bz2" + }, + "original": { + "type": "tarball", + "url": "https://github.com/zen-browser/desktop/releases/download/1.0.2-b.3/zen.linux-generic.tar.bz2" + } + }, + "zen-browser-specific": { + "flake": false, + "locked": { + "lastModified": 1734645803, + "narHash": "sha256-zAo93sHeB8cTW2JBAqxx0wo3CANcxCgjEcTQgbDeWT4=", + "type": "tarball", + "url": "https://github.com/zen-browser/desktop/releases/download/1.0.2-b.3/zen.linux-specific.tar.bz2" + }, + "original": { + "type": "tarball", + "url": "https://github.com/zen-browser/desktop/releases/download/1.0.2-b.3/zen.linux-specific.tar.bz2" + } + }, "zlib": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 1cb8d0b..3584aa9 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,7 @@ }; hypr-dynamic-cursors = { inputs.hyprland.follows = "hyprland"; - url = "path:///home/marshall/hypr-dynamic-cursors"; + url = "github:VirtCode/hypr-dynamic-cursors"; }; hyprland = { submodules = true; @@ -47,6 +47,7 @@ inputs.nixpkgs.follows = "nixpkgs"; url = "github:nix-community/nix-index-database"; }; + nixos-apple-silicon.url = "github:tpwrules/nixos-apple-silicon"; nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixvim.url = "github:pupbrained/nvim-config"; @@ -61,7 +62,7 @@ treefmt-nix.url = "github:numtide/treefmt-nix"; wezterm.url = "github:wez/wezterm?dir=nix"; xmonad-contrib.url = "github:xmonad/xmonad-contrib"; - zen-browser.url = "github:qlexqndru/zen-browser-flake"; + zen-browser.url = "github:youwen5/zen-browser-flake"; }; outputs = inputs: inputs.flakegen ./flake.in.nix inputs; } diff --git a/homes/aarch64-linux/marshall@canis-nix/default.nix b/homes/aarch64-linux/marshall@canis-nix/default.nix new file mode 100644 index 0000000..c616cf3 --- /dev/null +++ b/homes/aarch64-linux/marshall@canis-nix/default.nix @@ -0,0 +1,97 @@ +{ + pkgs, + inputs, + ... +}: { + imports = with inputs; [ + catppuccin.homeManagerModules.catppuccin + chaotic.homeManagerModules.default + hyprland.homeManagerModules.default + nix-colors.homeManagerModules.default + nix-index-database.hmModules.nix-index + + ./hyprland + ./screenshot + ]; + + snowfallorg.user = { + enable = true; + name = "marshall"; + }; + + colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha; + + home = { + packages = with pkgs; + [ + alejandra + bitwarden-cli + bitwarden-desktop + duf + eternal-terminal + equibop + firefox + glow + grc + jdk21 + killall + libnotify + loupe + mullvad-vpn + nodejs + playerctl + prismlauncher + (python312.withPackages + (p: + with p; [ + epc + orjson + sexpdata + six + setuptools + paramiko + rapidfuzz + ])) + telegram-desktop + ] + ++ (with inputs; [ + nixvim.packages.${pkgs.system}.default + zen-browser.packages.${pkgs.system}.default + ]); + + stateVersion = "25.05"; + }; + + dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = ["qemu:///system"]; + uris = ["qemu:///system"]; + }; + }; + + xdg.enable = true; + + catppuccin = { + enable = true; + pointerCursor.enable = true; + flavor = "mocha"; + accent = "green"; + }; + + programs = { + wezterm.extraConfig = builtins.readFile ./wezterm.lua; + + git = { + extraConfig.credential.helper = "libsecret"; + signing.key = "F24149297CE98BE0"; + }; + + mpv = { + enable = true; + scripts = [pkgs.mpvScripts.uosc]; + catppuccin.enable = true; + }; + }; + + systemd.user.startServices = "sd-switch"; +} diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/default.nix b/homes/aarch64-linux/marshall@canis-nix/hyprland/default.nix new file mode 100644 index 0000000..a4919f0 --- /dev/null +++ b/homes/aarch64-linux/marshall@canis-nix/hyprland/default.nix @@ -0,0 +1,241 @@ +{ + pkgs, + inputs, + ... +}: +with pkgs; { + imports = [ + ./rofi.nix + ./services.nix + ]; + + home.packages = [ + hyprpanel + swww + wl-clipboard + ]; + + wayland.windowManager.hyprland = { + enable = true; + systemd.variables = ["--all"]; + + plugins = with inputs; [ + hyprspace.packages.${pkgs.system}.default + ]; + + settings = let + rofi-clipboard = pkgs.writeScript "rofi-clipboard" '' + tmp_dir="/tmp/cliphist" + rm -rf "$tmp_dir" + + if [[ -n "$1" ]]; then + cliphist decode <<<"$1" | wl-copy + exit + fi + + mkdir -p "$tmp_dir" + + read -r -d "" prog <$tmp_dir/"grp[1]"."grp[3]) + print \$0"\0icon\x1f$tmp_dir/"grp[1]"."grp[3] + next + } + 1 + EOF + + cliphist list | gawk "$prog" + ''; + + scratchpad = pkgs.writeScript "hyprscratchpad" '' + COMMAND=$1 + CLASS=$2 + WORKSPACE=$3 + + if [[ $(hyprctl clients | grep -v '"title":' | grep "class: $CLASS") ]];then + hyprctl dispatch togglespecialworkspace $WORKSPACE + else + hyprctl dispatch togglespecialworkspace $WORKSPACE && hyprctl dispatch exec "$COMMAND" + fi + ''; + + mod = "SUPER"; + modC = "SUPER CTRL"; + modS = "SUPER SHIFT"; + + browser = "zen"; + colorPicker = "notify-send -i gtk-color-picker $(${lib.getExe hyprpicker} -a) 'Copied to clipboard.'"; + fileManager = "nautilus"; + launcher = "rofi -show drun"; + clipboard = "rofi -modi '   ':${rofi-clipboard} -show '   ' -show-icons"; + terminal = "wezterm"; + + screenshot = mode: "${lib.getExe hyprshot} --clipboard-only -m ${mode}"; + in { + decoration.rounding = 5; + dwindle.preserve_split = true; + gestures.workspace_swipe = true; + + input.touchpad = { + clickfinger_behavior = true; + natural_scroll = true; + }; + + device = [ + { + name = "logitech-usb-receiver"; + sensitivity = -0.5; + } + ]; + + windowrule = [ + "float, ^(equibop)$" + "float, ^(org.telegram.desktop)$" + ]; + + layerrule = [ + "dimaround, rofi" + ]; + + animations = { + enabled = true; + + bezier = [ + "overshot,0.7,0.6,0.1,1.1" + "bounce,1,1.6,0.1,0.85" + ]; + + animation = [ + "windows,1,5,bounce,popin" + "border,1,20,default" + "fade,1,5,default" + "workspaces,1,5,overshot,slide" + ]; + }; + + general = { + border_size = 2; + gaps_in = 10; + resize_on_border = true; + + "col.active_border" = "rgba(f38ba8ee) rgba(fab387ee) rgba(a6e3a1ee) rgba(89dcebee) rgba(89b4faee) rgba(cba6f7ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + }; + + exec-once = [ + "hyprpanel" + "swww-daemon" + "${writeScript "wallpaper" '' + while : ; do + for file in $(${uutils-coreutils}/bin/uutils-ls ${./walls}/*.jpg | sort -R | tail -1); do + swww img "$file" --transition-fps 165 + sleep 5m + done + done + ''}" + ]; + + misc = { + force_default_wallpaper = 0; + disable_hyprland_logo = true; + }; + + monitor = [ + "eDP-1, 2560x1664@60, auto, 1.333333" + ]; + + env = [ + # Nvidia stuff + "__GLX_VENDOR_LIBRARY_NAME, nvidia" + "LIBVA_DRIVER_NAME, nvidia" + "NVD_BACKEND, direct" + + # Cursors + "HYPRCURSOR_SIZE, 32" + "XCURSOR_SIZE, 32" + ]; + + bindm = [ + "${mod}, mouse:272, movewindow" + "${mod}, mouse:273, resizewindow" + ]; + + bind = + [ + # Apps + "${mod}, v, exec, ${clipboard}" + "${mod}, c, exec, ${colorPicker}" + "${mod}, w, exec, ${browser}" + "${mod}, e, exec, ${fileManager}" + "${mod}, r, exec, ${launcher}" + "${mod}, Return, exec, ${terminal}" + + # Scratchpads + "${mod}, d, exec, ${scratchpad} equibop equibop equibop" + "${mod}, t, exec, ${scratchpad} telegram-desktop org.telegram.desktop telegram" + + # Screenshots + "${modS}, s, exec, ${screenshot "window"}" + "${modC}, 3, exec, ${screenshot "output -c"}" + "${modC}, 4, exec, ${screenshot "region -C 0,0"}" + + # Mouse controls + "${mod}, mouse_down, workspace, e-1" + "${mod}, mouse_up, workspace, e+1" + + # Quitting + "${mod}, q, killactive" + "${modS}, q, exit" + + # Toggles + "${mod}, Space, togglefloating" + + "${mod}, o, overview:toggle" + + # Focus movements + "${mod}, h, movefocus, l" + "${mod}, j, movefocus, d" + "${mod}, k, movefocus, u" + "${mod}, l, movefocus, r" + + # Window movements + "${modS}, h, movewindow, l" + "${modS}, j, movewindow, d" + "${modS}, k, movewindow, u" + "${modS}, l, movewindow, r" + + # Window resizing + "${modC}, h, resizeactive, -30 0" + "${modC}, j, resizeactive, 0 30" + "${modC}, k, resizeactive, 0 -30" + "${modC}, l, resizeactive, 30 0" + + # Volume controls + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + + # Media controls + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + ] + ++ ( + builtins.concatLists (builtins.genList ( + x: let + ws = let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in [ + # Workspaces + "${mod}, ${ws}, workspace, ${builtins.toString (x + 1)}" + "${modS}, ${ws}, movetoworkspace, ${builtins.toString (x + 1)}" + ] + ) + 10) + ); + }; + }; +} diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/rofi.nix b/homes/aarch64-linux/marshall@canis-nix/hyprland/rofi.nix new file mode 100644 index 0000000..7d86723 --- /dev/null +++ b/homes/aarch64-linux/marshall@canis-nix/hyprland/rofi.nix @@ -0,0 +1,28 @@ +{pkgs, ...}: { + programs.rofi = { + enable = true; + catppuccin.enable = true; + package = pkgs.rofi-wayland; + + extraConfig = { + modi = "run,drun,window"; + icon-theme = "Oranchelo"; + show-icons = true; + terminal = "wezterm"; + drun-display-format = "{icon} {name}"; + location = 0; + disable-history = false; + hide-scrollbar = true; + display-drun = "  Apps "; + display-run = "  Run "; + display-window = " 󰍲 Window"; + display-Network = " 󰤨 Network"; + sidebar-mode = true; + }; + + theme = { + "*".font = "Maple Mono NF 14"; + window.border-radius = 10; + }; + }; +} diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/services.nix b/homes/aarch64-linux/marshall@canis-nix/hyprland/services.nix new file mode 100644 index 0000000..29c3355 --- /dev/null +++ b/homes/aarch64-linux/marshall@canis-nix/hyprland/services.nix @@ -0,0 +1,6 @@ +{...}: { + services = { + cliphist.enable = true; + udiskie.enable = false; + }; +} diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/car.jpg b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/car.jpg new file mode 100644 index 0000000..0ea7a8d Binary files /dev/null and b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/car.jpg differ diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/clouds.jpg b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/clouds.jpg new file mode 100644 index 0000000..0f503ab Binary files /dev/null and b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/clouds.jpg differ diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wall-e-upon-the-endless-sky.jpg b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wall-e-upon-the-endless-sky.jpg new file mode 100644 index 0000000..60025ba Binary files /dev/null and b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wall-e-upon-the-endless-sky.jpg differ diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wallhaven-d6y12l.jpg b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wallhaven-d6y12l.jpg new file mode 100644 index 0000000..6f94f2d Binary files /dev/null and b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wallhaven-d6y12l.jpg differ diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wallhaven-jxd9p5.png b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wallhaven-jxd9p5.png new file mode 100644 index 0000000..4d7f656 Binary files /dev/null and b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/wallhaven-jxd9p5.png differ diff --git a/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/ytkkbowirm061.jpg b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/ytkkbowirm061.jpg new file mode 100644 index 0000000..fab6d45 Binary files /dev/null and b/homes/aarch64-linux/marshall@canis-nix/hyprland/walls/ytkkbowirm061.jpg differ diff --git a/homes/aarch64-linux/marshall@canis-nix/screenshot/clipboard.svg b/homes/aarch64-linux/marshall@canis-nix/screenshot/clipboard.svg new file mode 100644 index 0000000..443f6b3 --- /dev/null +++ b/homes/aarch64-linux/marshall@canis-nix/screenshot/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/homes/aarch64-linux/marshall@canis-nix/screenshot/default.nix b/homes/aarch64-linux/marshall@canis-nix/screenshot/default.nix new file mode 100644 index 0000000..88149e4 --- /dev/null +++ b/homes/aarch64-linux/marshall@canis-nix/screenshot/default.nix @@ -0,0 +1,85 @@ +{pkgs, ...}: +with pkgs; { + home.packages = [ + (writeScriptBin "screenshot" '' + notify_user() { + ${pulseaudio}/bin/paplay ${sound-theme-freedesktop}/share/sounds/freedesktop/stereo/screen-capture.oga 2>/dev/null & + ${libnotify}/bin/notify-send \ + -a Clipboard \ + -i ${builtins.toString ./clipboard.svg} \ + -u low \ + -r 699 "Clipboard" "Screenshot saved on clipboard" + } + + screen() { + ${maim}/bin/maim -u -f png | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png + notify_user + } + + window() { + window_geometry=$(${xdotool}/bin/xdotool getwindowgeometry $(${xdotool}/bin/xdotool getactivewindow) | tail -n +2 | awk '{print $2}' | tac) + last_line=$(echo "$window_geometry" | tail -n 1) + modified_last_line=$(echo "$last_line" | awk 'BEGIN {FS=OFS=","} {for(i=1; i<=NF; i++) $i+=2; print}' | sed -E "s/([+-]?[0-9]+),([+-]?[0-9]+)/+\1+\2/g; s/\+\-/\-/g") + final_string=$(echo "$window_geometry" | sed '$s/.*/'"$modified_last_line"'/' | paste -sd "") + + ${maim}/bin/maim -u -f png -g "$final_string" | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png + notify_user + } + + area() { + ${maim}/bin/maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png + notify_user + } + + menu() { + screen="󰍹" + area="󰒉" + window="" + + chosen="$(printf "%s\n%s\n%s\n%s\n" "$screen" "$area" "$window" | rofi -theme ${builtins.toString ./screenshot.rasi} -p 'Take Screenshot' -dmenu -selected-row 0 -theme-str 'listview {lines: 3;}')" + + case $chosen in + "$screen") + screen + ;; + "$area") + area + ;; + "$window") + window + ;; + esac + } + + docs() { + echo " + Usage: screenshot [Options] + --help - Prints this message + Options: + --screen - Take screenshot of the screen + --window - Take screenshot of the focused window + --area - Take screenshot of the selected area + --menu - Opens a gui selector + " + } + + case $1 in + --screen) + screen + ;; + --window) + window + ;; + --area) + area + ;; + --menu) + menu + ;; + --help | *) + docs + ;; + esac + '') + ]; +} diff --git a/homes/aarch64-linux/marshall@canis-nix/screenshot/screenshot.rasi b/homes/aarch64-linux/marshall@canis-nix/screenshot/screenshot.rasi new file mode 100644 index 0000000..dd70c3f --- /dev/null +++ b/homes/aarch64-linux/marshall@canis-nix/screenshot/screenshot.rasi @@ -0,0 +1,67 @@ +* { + font: "Maple Mono NF 12"; + accent: #a6e3a1; + base: #1e1e2e; + mantle: #181825; + text: #cdd6f4; +} + +configuration { + location: 4; + show-icons: false; + click-to-exit: true; +} + +window { + transparency: "real"; + background-color: @base; + text-color: @text; + border: 2px solid; + border-color: @mantle; + border-radius: 12px; + width: 100px; + x-offset: -10; +} + +mainbox { + background-color: @base; + spacing: 10px; + padding: 20px; + children: [ listview ]; +} + +listview { + background-color: @mantle; + border-radius: 100%; + columns: 1; + cycle: true; + dynamic: true; + fixed-height: true; + fixed-columns: true; + layout: vertical; +} + +element { + background-color: transparent; + text-color: @text; + orientation: horizontal; + border-radius: 100%; + padding: 14px; + cursor: pointer; +} + + +element-text { + background-color: inherit; + text-color: inherit; + font: "Phosphor 16"; + horizontal-align: 0.25; + vertical-align: 0.5; + margin: 0px; + cursor: inherit; +} + +element selected.normal { + background-color: @accent; + text-color: @mantle; +} diff --git a/homes/aarch64-linux/marshall@canis-nix/wezterm.lua b/homes/aarch64-linux/marshall@canis-nix/wezterm.lua new file mode 100644 index 0000000..8b093c4 --- /dev/null +++ b/homes/aarch64-linux/marshall@canis-nix/wezterm.lua @@ -0,0 +1,133 @@ +local c = wezterm.config_builder() +wezterm.on('user-var-changed', function(window, pane, name, value) + local overrides = window:get_config_overrides() or {} + if name == 'ZEN_MODE' then + local incremental = value:find('+') + local number_value = tonumber(value) + if incremental ~= nil then + while number_value > 0 do + window:perform_action(wezterm.action.IncreaseFontSize, pane) + number_value = number_value - 1 + end + overrides.enable_tab_bar = false + elseif number_value < 0 then + window:perform_action(wezterm.action.ResetFontSize, pane) + overrides.font_size = nil + overrides.enable_tab_bar = true + else + overrides.font_size = number_value + overrides.enable_tab_bar = false + end + end + window:set_config_overrides(overrides) +end) +wezterm.on('format-window-title', function(tab, pane, tabs, panes, config) + local zoomed = '' + + if tab.active_pane.is_zoomed then + zoomed = '[Z] ' + end + + local index = '' + + if #tabs > 1 then + index = string.format('[%d/%d] ', tab.tab_index + 1, #tabs) + end + + return 'WezTerm - ' .. zoomed .. index .. tab.active_pane.title +end) + +wezterm.plugin.require('https://github.com/nekowinston/wezterm-bar').apply_to_config(c, { + position = 'bottom', + max_width = 32, + dividers = 'slant_right', + indicator = { + leader = { + enabled = true, + off = ' ', + on = ' ', + }, + mode = { + enabled = true, + names = { + resize_mode = 'RESIZE', + copy_mode = 'VISUAL', + search_mode = 'SEARCH', + }, + }, + }, + tabs = { + numerals = 'arabic', + pane_count = 'subscript', + brackets = { + active = { '', ':' }, + inactive = { '', ':' }, + }, + }, + clock = { + enabled = true, + format = '%l:%M %p', + }, +}) + +local act = wezterm.action + +local keybinds = { + { + key = 'Enter', + mods = 'CTRL|SHIFT', + action = act.SplitHorizontal({ domain = 'CurrentPaneDomain' }), + }, + { + key = 'h', + mods = 'CTRL|SHIFT', + action = act.ActivatePaneDirection('Left'), + }, + { + key = 'l', + mods = 'CTRL|SHIFT', + action = act.ActivatePaneDirection('Right'), + }, + { + key = 'k', + mods = 'CTRL|SHIFT', + action = act.ActivatePaneDirection('Up'), + }, + { + key = 'j', + mods = 'CTRL|SHIFT', + action = act.ActivatePaneDirection('Down'), + }, + { + key = 't', + mods = 'CTRL|SHIFT', + action = act.SpawnCommandInNewTab({ cwd = wezterm.home_dir }), + }, +} + +local config = { + adjust_window_size_when_changing_font_size = false, + color_scheme = 'Catppuccin Mocha', + cursor_blink_ease_in = 'Constant', + cursor_blink_ease_out = 'Constant', + cursor_blink_rate = 500, + default_cursor_style = 'BlinkingBar', + enable_kitty_graphics = true, + enable_scroll_bar = false, + enable_wayland = true, + font_size = 12, + font = wezterm.font('Maple Mono NF'), + keys = keybinds, + underline_position = -4, + use_fancy_tab_bar = false, + window_background_opacity = 0.8, + window_decorations = 'NONE', + warn_about_missing_glyphs = false, + window_padding = { left = 0, right = 0, top = 0, bottom = 0 }, +} + +for k, v in pairs(config) do + c[k] = v +end + +return c diff --git a/homes/x86_64-linux/marshall@navis/default.nix b/homes/x86_64-linux/marshall@navis/default.nix index 94deeb3..c07545a 100644 --- a/homes/x86_64-linux/marshall@navis/default.nix +++ b/homes/x86_64-linux/marshall@navis/default.nix @@ -124,7 +124,7 @@ ]) ++ (with inputs; [ nixvim.packages.${pkgs.system}.default - zen-browser.packages.${pkgs.system}.specific + zen-browser.packages.${pkgs.system}.default chaotic.packages.${pkgs.system}.distrobox_git chaotic.packages.${pkgs.system}.zed-editor_git ]); diff --git a/nvfetcher.toml b/nvfetcher.toml index e1be152..824e3a4 100644 --- a/nvfetcher.toml +++ b/nvfetcher.toml @@ -26,10 +26,6 @@ fetch.github = "oh-my-fish/plugin-bang-bang" src.manual = "latest" fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch" -[poll] -src.manual = "latest" -fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/poll.patch" - [round-undecorated-frame] src.manual = "latest" fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch" diff --git a/systems/aarch64-linux/canis-nix/default.nix b/systems/aarch64-linux/canis-nix/default.nix new file mode 100644 index 0000000..61214cb --- /dev/null +++ b/systems/aarch64-linux/canis-nix/default.nix @@ -0,0 +1,375 @@ +{ + lib, + pkgs, + inputs, + ... +}: { + imports = with inputs; [ + ./hardware.nix + + nixos-apple-silicon.nixosModules.apple-silicon-support + ]; + + hardware.asahi = { + useExperimentalGPUDriver = true; + experimentalGPUInstallMode = "replace"; + setupAsahiSound = true; + peripheralFirmwareDirectory = ./firmware; + }; + + boot.kernelParams = [ + "hid_apple.iso_layout=0" + "apple_dcp.show_notch=1" + ]; + + networking = { + hostName = "canis-nix"; + + wireless.iwd = { + enable = true; + settings.General.EnableNetworkConfiguration = true; + }; + }; + + security = { + rtkit.enable = true; + + pam = { + services.login.enableGnomeKeyring = true; + + loginLimits = [ + { + domain = "*"; + item = "nofile"; + type = "-"; + value = "32768"; + } + { + domain = "*"; + item = "memlock"; + type = "-"; + value = "32768"; + } + ]; + }; + + sudo-rs = { + enable = true; + wheelNeedsPassword = false; + execWheelOnly = true; + }; + }; + + fonts = { + packages = with pkgs.nerd-fonts; + [ + _0xproto + _3270 + agave + anonymice + arimo + aurulent-sans-mono + bigblue-terminal + bitstream-vera-sans-mono + blex-mono + caskaydia-cove + caskaydia-mono + code-new-roman + comic-shanns-mono + commit-mono + cousine + d2coding + daddy-time-mono + dejavu-sans-mono + departure-mono + droid-sans-mono + envy-code-r + fantasque-sans-mono + fira-code + fira-mono + geist-mono + go-mono + gohufont + hack + hasklug + heavy-data + hurmit + im-writing + inconsolata + inconsolata-go + inconsolata-lgc + intone-mono + iosevka + iosevka-term + iosevka-term-slab + jetbrains-mono + lekton + liberation + lilex + martian-mono + meslo-lg + monaspace + monofur + monoid + mononoki + mplus + noto + open-dyslexic + overpass + profont + proggy-clean-tt + recursive-mono + roboto-mono + sauce-code-pro + shure-tech-mono + space-mono + symbols-only + terminess-ttf + tinos + ubuntu + ubuntu-mono + ubuntu-sans + victor-mono + zed-mono + ] + ++ (with pkgs.iosevka-comfy; [ + comfy + comfy-duo + comfy-fixed + comfy-motion + comfy-motion-duo + comfy-motion-fixed + comfy-wide + comfy-wide-duo + comfy-wide-fixed + comfy-wide-motion + comfy-wide-motion-duo + comfy-wide-motion-fixed + ]); + }; + + console.catppuccin.enable = true; + + systemd.user.extraConfig = let + path = lib.concatStringsSep ":" [ + "/run/wrappers/bin" + "/etc/profiles/per-user/%u/bin" + "/nix/var/nix/profiles/default/bin" + "/run/current-system/sw/bin" + ]; + in '' + DefaultEnvironment="PATH=${path}" + ''; + + environment = { + sessionVariables = { + COSMIC_DATA_CONTROL_ENABLED = 1; + BROWSER = "zen"; + DIRENV_WARN_TIMEOUT = "100s"; + EDITOR = "nvim"; + NIXOS_OZONE_WL = 1; + TERMINAL = "wezterm"; + }; + + systemPackages = with pkgs; [ + sound-theme-freedesktop + uutils-coreutils-noprefix + xclip + yt-dlp + (callPackage ./pkgs/sddm-theme-minesddm.nix {}) + ]; + }; + + boot = { + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + nix = { + daemonCPUSchedPolicy = "batch"; + daemonIOSchedClass = "idle"; + daemonIOSchedPriority = 7; + + gc = { + automatic = true; + dates = "Sat *-*-* 03:00"; + options = "--delete-older-than 30d"; + }; + + optimise = { + automatic = true; + dates = ["04:00"]; + }; + + settings = { + auto-optimise-store = true; + builders-use-substitutes = true; + flake-registry = "/etc/nix/registry.json"; + keep-going = true; + log-lines = 30; + max-jobs = "auto"; + sandbox-fallback = false; + sandbox = true; + system-features = [ + "nixos-test" + "kvm" + "recursive-nix" + "big-parallel" + "gccarch-x86-64-v4" + ]; + use-cgroups = true; + use-xdg-base-directories = true; + warn-dirty = false; + + allowed-users = [ + "root" + "@wheel" + "nix-builder" + ]; + trusted-users = [ + "root" + "@wheel" + "nix-builder" + ]; + + min-free = "${toString (5 * 1024 * 1024 * 1024)}"; + max-free = "${toString (10 * 1024 * 1024 * 1024)}"; + + extra-experimental-features = [ + "flakes" # flakes + "nix-command" # experimental nix commands + "recursive-nix" # let nix invoke itself + "ca-derivations" # content addressed nix + "auto-allocate-uids" # allow nix to automatically pick UIDs, rather than creating nixbld* user accounts + "cgroups" # allow nix to execute builds inside cgroups + ]; + + substituters = [ + "https://cache.nixos.org?priority=100" + "https://cache.privatevoid.net" + "https://cosmic.cachix.org/" + "https://cuda-maintainers.cachix.org" + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "cache.privatevoid.net:SErQ8bvNWANeAvtsOESUwVYr2VJynfuc9JRwlzTTkVg=" + "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" + "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; + }; + + programs = { + dconf.enable = true; + fish.enable = true; + gnupg.agent.enable = true; + + appimage = { + enable = true; + binfmt = true; + }; + + hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + }; + + nh = { + enable = true; + flake = "/home/marshall/nix-config"; + }; + + obs-studio = { + enable = true; + enableVirtualCamera = true; + }; + }; + + time = { + hardwareClockInLocalTime = true; + timeZone = "America/New_York"; + }; + + services = { + flatpak.enable = true; + getty.autologinUser = "marshall"; + gnome.gnome-keyring.enable = true; + mullvad-vpn.enable = true; + openssh.enable = true; + + displayManager.sddm = { + enable = true; + wayland.enable = true; + wayland.compositor = "kwin"; + theme = "minesddm"; + }; + desktopManager.cosmic.enable = false; + + libinput = { + enable = true; + touchpad.naturalScrolling = true; + }; + + pipewire = { + enable = true; + pulse.enable = true; + }; + }; + + users = { + mutableUsers = true; + + users.marshall = { + isNormalUser = true; + shell = pkgs.fish; + + extraGroups = [ + "disk" + "gamemode" + "networkmanager" + "wheel" + ]; + }; + }; + + snowfallorg.users.marshall = { + create = true; + admin = true; + }; + + home-manager.useGlobalPkgs = true; + + hardware = { + bluetooth.enable = true; + i2c.enable = true; + + graphics = { + enable = true; + extraPackages = with pkgs; [ + vaapiVdpau + ]; + }; + }; + + xdg.portal = { + enable = true; + xdgOpenUsePortal = true; + + config.common.default = "*"; + + extraPortals = [ + pkgs.xdg-desktop-portal-cosmic + pkgs.xdg-desktop-portal-gnome + pkgs.xdg-desktop-portal-gtk + ]; + }; + + system.stateVersion = "25.05"; +} diff --git a/systems/aarch64-linux/canis-nix/firmware/all_firmware.tar.gz b/systems/aarch64-linux/canis-nix/firmware/all_firmware.tar.gz new file mode 100755 index 0000000..8115002 Binary files /dev/null and b/systems/aarch64-linux/canis-nix/firmware/all_firmware.tar.gz differ diff --git a/systems/aarch64-linux/canis-nix/firmware/kernelcache.release.mac14g b/systems/aarch64-linux/canis-nix/firmware/kernelcache.release.mac14g new file mode 100755 index 0000000..72c731f Binary files /dev/null and b/systems/aarch64-linux/canis-nix/firmware/kernelcache.release.mac14g differ diff --git a/systems/aarch64-linux/canis-nix/hardware.nix b/systems/aarch64-linux/canis-nix/hardware.nix new file mode 100644 index 0000000..e463032 --- /dev/null +++ b/systems/aarch64-linux/canis-nix/hardware.nix @@ -0,0 +1,31 @@ +{ + lib, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = ["usb_storage"]; + boot.initrd.kernelModules = []; + boot.kernelModules = []; + boot.extraModulePackages = []; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/674b5f97-f66d-43f1-b135-cfd3c68f9c3f"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/D95F-13F4"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; + + swapDevices = []; + + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; +} diff --git a/systems/aarch64-linux/canis-nix/pkgs/sddm-theme-minesddm.nix b/systems/aarch64-linux/canis-nix/pkgs/sddm-theme-minesddm.nix new file mode 100644 index 0000000..2c30265 --- /dev/null +++ b/systems/aarch64-linux/canis-nix/pkgs/sddm-theme-minesddm.nix @@ -0,0 +1,11 @@ +{pkgs, ...}: let + sources = import ../../../../_sources/generated.nix {inherit (pkgs) fetchurl fetchFromGitHub;}; +in + pkgs.stdenv.mkDerivation { + inherit (sources.sddm-theme-minesddm) src pname version; + dontBuild = true; + installPhase = '' + mkdir -p $out/share/sddm/themes + cp -aR $src/minesddm $out/share/sddm/themes + ''; + }