diff --git a/flake.lock b/flake.lock index 2d7320bd..77fd8ee8 100644 --- a/flake.lock +++ b/flake.lock @@ -79,15 +79,14 @@ "flake-schemas": "flake-schemas", "home-manager": "home-manager_2", "jovian": "jovian", - "nixpkgs": "nixpkgs_3", - "nixpkgs-small": "nixpkgs-small" + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1734987419, - "narHash": "sha256-2K4V615Y29QhMUShX9k52l7gXF2erkq9yH9qGRZGKQ0=", + "lastModified": 1735509923, + "narHash": "sha256-oepXx1SWadUMvRWn7dXmIMpwfRC0ZLD0d/6ZW0meFN0=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "d61084b851dbf3072f8b40c3870b0f7938ca3f22", + "rev": "5ace86fdaab9ab74d6a4ab8ecf64c57230d3cb8a", "type": "github" }, "original": { @@ -157,11 +156,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1735367591, - "narHash": "sha256-a5EMHpDAxLShxBKUdDVmqZMlfiuOtOUzet2xT/E/RiM=", + "lastModified": 1735540357, + "narHash": "sha256-XbIfjxEOM6JmLCILozlFEUrfCpXvQNo9l+VAU7FCahI=", "owner": "nix-community", "repo": "fenix", - "rev": "3743208cafd7bc3c150f0c77c25ef7430e9c0de2", + "rev": "92bb57bf88e4b8e6b4fe4e79fbfff2fc3f04df88", "type": "github" }, "original": { @@ -173,11 +172,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -387,6 +386,41 @@ "type": "github" } }, + "flake-utils_4": { + "inputs": { + "systems": "systems_10" + }, + "locked": { + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "freetype2": { + "flake": false, + "locked": { + "lastModified": 1687587065, + "narHash": "sha256-+Fh+/k+NWL5Ow9sDLtp8Cv/8rLNA1oByQQCIQS/bysY=", + "owner": "wez", + "repo": "freetype2", + "rev": "e4586d960f339cf75e2e0b34aee30a0ed8353c0d", + "type": "github" + }, + "original": { + "owner": "wez", + "repo": "freetype2", + "rev": "e4586d960f339cf75e2e0b34aee30a0ed8353c0d", + "type": "github" + } + }, "ghostty": { "inputs": { "flake-compat": "flake-compat", @@ -395,11 +429,11 @@ "zig": "zig" }, "locked": { - "lastModified": 1735362327, - "narHash": "sha256-kD49xAUMCWU60IRKoJiyJTaEUum7rk45OYjZfwWr3Ck=", + "lastModified": 1735535921, + "narHash": "sha256-cfsHww91bRA2Frni54+blIGZGU9/269vaWzeGcNRNN0=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "6cbd69da7839260508466f9dfb2bc0c0fbb43991", + "rev": "87bd0bb744d6a1c45022aa39f21219d0b6ff3261", "type": "github" }, "original": { @@ -454,11 +488,11 @@ }, "hardware": { "locked": { - "lastModified": 1734954597, - "narHash": "sha256-QIhd8/0x30gEv8XEE1iAnrdMlKuQ0EzthfDR7Hwl+fk=", + "lastModified": 1735388221, + "narHash": "sha256-e5IOgjQf0SZcFCEV/gMGrsI0gCJyqOKShBQU0iiM3Kg=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "def1d472c832d77885f174089b0d34854b007198", + "rev": "7c674c6734f61157e321db595dbfcd8523e04e19", "type": "github" }, "original": { @@ -467,6 +501,23 @@ "type": "github" } }, + "harfbuzz": { + "flake": false, + "locked": { + "lastModified": 1711722720, + "narHash": "sha256-GdxcAPx5QyniSHPAN1ih28AD9JLUPR0ItqW9JEsl3pU=", + "owner": "harfbuzz", + "repo": "harfbuzz", + "rev": "63973005bc07aba599b47fdd4cf788647b601ccd", + "type": "github" + }, + "original": { + "owner": "harfbuzz", + "ref": "8.4.0", + "repo": "harfbuzz", + "type": "github" + } + }, "helix-flake": { "inputs": { "crane": "crane", @@ -475,11 +526,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1735311473, - "narHash": "sha256-PIAQe6E07XFYYwv0ARV9oqgV/d30etcMKEEBzyyI1NU=", + "lastModified": 1735490308, + "narHash": "sha256-aU6svFKnYSbOeorLcfLvUBBtx6G6381CM6Uo2PwaUrk=", "owner": "helix-editor", "repo": "helix", - "rev": "a5a7cff311e909ecab41f840742a5309634aeec3", + "rev": "9cc056e755273156b01cedf47a8cdfdf82d84252", "type": "github" }, "original": { @@ -624,11 +675,11 @@ ] }, "locked": { - "lastModified": 1733684019, - "narHash": "sha256-2kYREgmSmbLsmDpLEq96hxVAU3qz8aCvVhF65yCFZHY=", + "lastModified": 1734906236, + "narHash": "sha256-vH/ysV2ONGQgYZPtcJKwc8jJivzyVxru2aaOxC20ZOE=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "fb2c0268645a77403af3b8a4ce8fa7ba5917f15d", + "rev": "6dea3fba08fd704dd624b6d4b261638fb4003c9c", "type": "github" }, "original": { @@ -715,11 +766,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1735336272, - "narHash": "sha256-kPRvGB80n5Nmqw17z+im4+ssDFGOfQSnP2LKQNdprBs=", + "lastModified": 1735514352, + "narHash": "sha256-EivxqI3NluU/ltdpzly5oyhe+C0oC6dZby2lnf5kBgc=", "owner": "hyprwm", "repo": "hyprland", - "rev": "c600e1aaff293303c8256aca7d2889fc4289e8c2", + "rev": "cb211d83f68542e9fbf7567d57bdf528286cbf7e", "type": "github" }, "original": { @@ -843,6 +894,7 @@ "hyprland", "hyprutils" ], + "hyprwayland-scanner": "hyprwayland-scanner_2", "nixpkgs": [ "hyprland", "nixpkgs" @@ -853,11 +905,11 @@ ] }, "locked": { - "lastModified": 1735312862, - "narHash": "sha256-vvLjD1nfhgb665bmUtAsbeP0iZ0a/BXVetuKiVWISdQ=", + "lastModified": 1735497496, + "narHash": "sha256-lT6f/5NB73xj9cVesi2SNsL5jVciwZJp8QRohiv+3Hk=", "owner": "hyprwm", "repo": "hyprlock", - "rev": "d212f4cc1013f12b6691b0ea851b27c088dd8eb8", + "rev": "3d63d9b129d5def270bc8a2471347e6f97274e2b", "type": "github" }, "original": { @@ -877,7 +929,7 @@ "hyprland", "hyprutils" ], - "hyprwayland-scanner": "hyprwayland-scanner_2", + "hyprwayland-scanner": "hyprwayland-scanner_3", "nixpkgs": [ "hyprland", "nixpkgs" @@ -888,11 +940,11 @@ ] }, "locked": { - "lastModified": 1734906298, - "narHash": "sha256-L0zaWJi2wS/kgdY1WOM8xJuiXDBDh1TMMKLRcmy5ycs=", + "lastModified": 1735493740, + "narHash": "sha256-QmfXYQxWmT2w5wx8y4CCADaMdMBiCPxK2M+8/iP1110=", "owner": "hyprwm", "repo": "hyprpaper", - "rev": "2f305d5f480c12882578e74498301129705a1bb5", + "rev": "505e447b6c48e6b49f3aecf5da276f3cc5780054", "type": "github" }, "original": { @@ -952,6 +1004,31 @@ } }, "hyprwayland-scanner_2": { + "inputs": { + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ], + "systems": [ + "hyprlock", + "systems" + ] + }, + "locked": { + "lastModified": 1735493474, + "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwayland-scanner_3": { "inputs": { "nixpkgs": [ "hyprpaper", @@ -985,11 +1062,11 @@ ] }, "locked": { - "lastModified": 1734725857, - "narHash": "sha256-bivlV9l/UjMtTfz/CZaoNJ5RfH2Lre4P9Ds64conoUQ=", + "lastModified": 1735330405, + "narHash": "sha256-MhXgu1oymyjhhZGY9yewNonJknNAjilzMGPY1FfMR7s=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "dbae2fd6adaf34c947d310bec08deac7c4ed265b", + "rev": "a86d9cf841eff8b33a05d2bf25788abd8e018dbd", "type": "github" }, "original": { @@ -1021,6 +1098,23 @@ "type": "github" } }, + "libpng": { + "flake": false, + "locked": { + "lastModified": 1549245649, + "narHash": "sha256-1+cRp0Ungme/OGfc9kGJbklYIWAFxk8Il1M+NV4KSgw=", + "owner": "glennrp", + "repo": "libpng", + "rev": "8439534daa1d3a5705ba92e653eda9251246dd61", + "type": "github" + }, + "original": { + "owner": "glennrp", + "repo": "libpng", + "rev": "8439534daa1d3a5705ba92e653eda9251246dd61", + "type": "github" + } + }, "microfetch": { "inputs": { "nixpkgs": "nixpkgs_7" @@ -1113,11 +1207,11 @@ "umu": "umu" }, "locked": { - "lastModified": 1735090720, - "narHash": "sha256-Abx/6obaYLgFio8g06pcmMaRPwjKo/bOn1P+gsDMVg0=", + "lastModified": 1735481011, + "narHash": "sha256-u5yRymUN2ZuOavCj1HY1Le0Uyyg2azCTtZRLiXfOpo8=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "95f1cc7ebe63b5a5af6c2d206ffd422739c5959e", + "rev": "578b00c7c0db22464e50d7ae2f492dd9438a284c", "type": "github" }, "original": { @@ -1177,29 +1271,13 @@ "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz" } }, - "nixpkgs-small": { - "locked": { - "lastModified": 1734838250, - "narHash": "sha256-Xi8ST/QiyuYXc3ujnMYOBuRUaMh6p16XWH6BKARa7xQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "da8a31d09dd004be34b5c54eda83f9a27b357726", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable-small", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-stable": { "locked": { - "lastModified": 1735380119, - "narHash": "sha256-A2ZFfk1ztBZk2l7ghx86VLgDYiIMCLdAQbrEsB1xFTw=", + "lastModified": 1733423277, + "narHash": "sha256-TxabjxEgkNbCGFRHgM/b9yZWlBj60gUOUnRT/wbVQR8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "460a2ed3c781c1f30a3cbc4aa165298e4c4f2bc2", + "rev": "e36963a147267afc055f7cf65225958633e536bf", "type": "github" }, "original": { @@ -1243,11 +1321,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1735268880, - "narHash": "sha256-7QEFnKkzD13SPxs+UFR5bUFN2fRw+GlL0am72ZjNre4=", + "lastModified": 1733229606, + "narHash": "sha256-FLYY5M0rpa5C2QAE3CKLYAM6TwbKicdRK6qNrSHlNrE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7cc0bff31a3a705d3ac4fdceb030a17239412210", + "rev": "566e53c2ad750c84f6d31f9ccb9d00f823165550", "type": "github" }, "original": { @@ -1291,11 +1369,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1734649271, - "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=", + "lastModified": 1735291276, + "narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507", + "rev": "634fd46801442d760e09493a794c4f15db2d0cbb", "type": "github" }, "original": { @@ -1370,11 +1448,11 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1735291276, - "narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=", + "lastModified": 1735471104, + "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "634fd46801442d760e09493a794c4f15db2d0cbb", + "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4", "type": "github" }, "original": { @@ -3543,17 +3621,18 @@ "nvf": "nvf", "systems": "systems_8", "tuirun": "tuirun", + "wezterm": "wezterm", "zen-browser": "zen-browser" } }, "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1735338518, - "narHash": "sha256-Cdotb7yLgRBVTkhIF6XEtC9ui62X+sO7251YcDXour0=", + "lastModified": 1735485512, + "narHash": "sha256-B9tZfdCnZF7Qo/Ys/LgKtUlzIr38c9fDYgo/XcS8Gtc=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "d3bb15ecec7c1386767c45776fab497e8a22a30f", + "rev": "59bc7b49d0ad319de8c477c63da552cbc8a05e4c", "type": "github" }, "original": { @@ -3627,6 +3706,27 @@ "type": "github" } }, + "rust-overlay_4": { + "inputs": { + "nixpkgs": [ + "wezterm", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729477859, + "narHash": "sha256-r0VyeJxy4O4CgTB/PNtfQft9fPfN1VuGvnZiCxDArvg=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ada8266712449c4c0e6ee6fcbc442b3c217c79e1", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -3642,6 +3742,21 @@ "type": "github" } }, + "systems_10": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "systems_2": { "locked": { "lastModified": 1689347949, @@ -3771,11 +3886,11 @@ "systems": "systems_9" }, "locked": { - "lastModified": 1735387776, - "narHash": "sha256-4s1V+melYSTBEZ4l1mUe6p7lfiIUoM1pnRWrNYtbhHs=", + "lastModified": 1735478319, + "narHash": "sha256-K+emxdyU5Kne6PUxEhqRH8Vj+E75UaO6QKbLqAJURaY=", "ref": "refs/heads/main", - "rev": "8df9dfcc7e308ac35455d2d0529c32400b1b960b", - "revCount": 34, + "rev": "b6aeef7235191118d76be93911aafbb740d0371b", + "revCount": 35, "type": "git", "url": "https://git.sr.ht/~canasta/tuirun" }, @@ -3793,11 +3908,11 @@ }, "locked": { "dir": "packaging/nix", - "lastModified": 1734207213, - "narHash": "sha256-5CZPAeKm24Y1BKnN8Md3HUViCMCs7AVghRC+05Bdlkk=", + "lastModified": 1735507919, + "narHash": "sha256-4cR4mk1660p3y8wnX0XbHSQh4KX0mbMn6/2YnALNt8o=", "ref": "refs/heads/main", - "rev": "6189d0d9fd062e89a375db20aeae1d1c009e9833", - "revCount": 869, + "rev": "59a82ea8cd284c7535bc06b8f6156abb7da96f6a", + "revCount": 874, "submodules": true, "type": "git", "url": "https://github.com/Open-Wine-Components/umu-launcher/" @@ -3824,6 +3939,35 @@ "type": "github" } }, + "wezterm": { + "inputs": { + "flake-utils": "flake-utils_4", + "freetype2": "freetype2", + "harfbuzz": "harfbuzz", + "libpng": "libpng", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay_4", + "zlib": "zlib" + }, + "locked": { + "dir": "nix", + "lastModified": 1733412933, + "narHash": "sha256-2OPDEgUEh0B6OIcSWtBbkw/zFi8r2VfluLj7FebTaVA=", + "owner": "wez", + "repo": "wezterm", + "rev": "6f375e29a2c4d70b8b51956edd494693196c6692", + "type": "github" + }, + "original": { + "dir": "nix", + "owner": "wez", + "ref": "main", + "repo": "wezterm", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ @@ -3897,11 +4041,11 @@ ] }, "locked": { - "lastModified": 1735345735, - "narHash": "sha256-npV0buuzGZdrstAPJMXNlq1MyrnSigVGBG105khKhoI=", + "lastModified": 1717848532, + "narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "7e09350be2e1622e125e734166edbfacdd8702af", + "rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43", "type": "github" }, "original": { @@ -3909,6 +4053,23 @@ "repo": "zig-overlay", "type": "github" } + }, + "zlib": { + "flake": false, + "locked": { + "lastModified": 1484501380, + "narHash": "sha256-j5b6aki1ztrzfCqu8y729sPar8GpyQWIrajdzpJC+ww=", + "owner": "madler", + "repo": "zlib", + "rev": "cacf7f1d4e3d44d871b605da3b647f07d718623f", + "type": "github" + }, + "original": { + "owner": "madler", + "ref": "v1.2.11", + "repo": "zlib", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 07d1cb66..a6d842cc 100644 --- a/flake.nix +++ b/flake.nix @@ -105,6 +105,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + wezterm = { + url = "github:wez/wezterm/main?dir=nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # Custom apps tuirun = { url = "git+https://git.sr.ht/~canasta/tuirun"; diff --git a/hosts/cnix/default.nix b/hosts/cnix/default.nix index bc14251b..8af07fa2 100644 --- a/hosts/cnix/default.nix +++ b/hosts/cnix/default.nix @@ -8,7 +8,7 @@ in { users.users.cnst = { isNormalUser = true; - shell = pkgs.zsh; + shell = pkgs.fish; extraGroups = ifTheyExist [ "wheel" "networkmanager" diff --git a/hosts/cnix/modules.nix b/hosts/cnix/modules.nix index 7c85090a..4f525887 100644 --- a/hosts/cnix/modules.nix +++ b/hosts/cnix/modules.nix @@ -60,6 +60,9 @@ corectrl = { enable = true; }; + fish = { + enable = true; + }; gamemode = { enable = true; optimizeGpu = { @@ -70,7 +73,7 @@ enable = true; }; ghostty = { - enable = true; + enable = false; }; gimp = { enable = false; @@ -128,7 +131,7 @@ enable = true; }; zsh = { - enable = true; + enable = false; }; }; services = { diff --git a/modules/default.nix b/modules/default.nix index 67593a19..9371c03a 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -11,6 +11,7 @@ ./home/programs/eza ./home/programs/floorp ./home/programs/firefox + ./home/programs/fish ./home/programs/foot ./home/programs/helix ./home/programs/hyprland @@ -38,12 +39,14 @@ ./home/services/blueman-applet ./home/services/copyq ./home/services/dconf + ./home/services/dunst ./home/services/gpg ./home/services/gtk ./home/services/hypridle ./home/services/hyprpaper ./home/services/mako ./home/services/protonmail-bridge + ./home/services/swaync ./home/services/syncthing ./home/services/udiskie ./home/services/xdg @@ -65,6 +68,7 @@ ./nixos/programs/beekeeper ./nixos/programs/blender ./nixos/programs/corectrl + ./nixos/programs/fish ./nixos/programs/gamemode ./nixos/programs/gamescope ./nixos/programs/ghostty diff --git a/modules/home/programs/fish/default.nix b/modules/home/programs/fish/default.nix new file mode 100644 index 00000000..0c198a26 --- /dev/null +++ b/modules/home/programs/fish/default.nix @@ -0,0 +1,113 @@ +{ + config, + lib, + pkgs, + ... +}: let + inherit (lib) mkIf mkEnableOption; + inherit (lib.meta) getExe; + inherit (pkgs) eza bat; + cfg = config.home.programs.fish; +in { + # imports = [./tide.nix]; + options = { + home.programs.fish.enable = mkEnableOption "Enables fish home configuration"; + }; + config = mkIf cfg.enable { + programs.fish = { + enable = true; + plugins = [ + { + name = "hydro"; + src = pkgs.fishPlugins.hydro; + } + ]; + shellAbbrs = { + extract = "extract.sh"; + homemodules = "$EDITOR /home/$USER/.nix-config/users/$USER/modules.nix"; + hmod = "$EDITOR /home/$USER/.nix-config/users/$USER/modules.nix"; + nixosmodules = "$EDITOR /home/$USER/.nix-config/hosts/$hostname/modules.nix"; + nmod = "$EDITOR /home/$USER/.nix-config/hosts/$hostname/modules.nix"; + nixcleanboot = "sudo nix run /home/$USER/.nix-config#cleanup-boot"; + nixclean = "nh clean all --keep 3"; + nixdev = "nix develop ~/.nix-config -c $SHELL"; + nixconfig = "cd /home/$USER/.nix-config/"; + nixup = "nh os switch -H $hostname"; + nixupv = "nh os switch -v -H $hostname"; + flakeup = "nix flake update"; + }; + shellAliases = { + ".." = "cd .."; + "..." = "cd ../../"; + "...." = "cd ../../../"; + "....." = "cd ../../../../"; + "......" = "cd ../../../../../"; + tree = "${getExe eza} --tree --icons=always"; + cat = "${getExe bat} --style=plain"; + ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension"; + ll = "${getExe eza} -l --git --icons --color=auto --group-directories-first -s extension"; + la = "${getExe eza} -lah --tree"; + # Clear screen and scrollback + clear = "printf '\\033[2J\\033[3J\\033[1;1H'"; + }; + functions = { + # Disable greeting + fish_greeting = ""; + # Merge history when pressing up + up-or-search = lib.readFile ./up-or-search.fish; + # Check stuff in PATH + nix-inspect = + /* + fish + */ + '' + set -s PATH | grep "PATH\[.*/nix/store" | cut -d '|' -f2 | grep -v -e "-man" -e "-terminfo" | perl -pe 's:^/nix/store/\w{32}-([^/]*)/bin$:\1:' | sort | uniq + ''; + }; + interactiveShellInit = + /* + fish + */ + '' + # Open command buffer in vim when alt+e is pressed + bind \ee edit_command_buffer + + # Use vim bindings and cursors + fish_vi_key_bindings + set fish_cursor_default block blink + set fish_cursor_insert line blink + set fish_cursor_replace_one underscore blink + set fish_cursor_visual block + + # Use terminal colors + set -x fish_color_autosuggestion brblack + set -x fish_color_cancel -r + set -x fish_color_command brgreen + set -x fish_color_comment brmagenta + set -x fish_color_cwd green + set -x fish_color_cwd_root red + set -x fish_color_end brmagenta + set -x fish_color_error brred + set -x fish_color_escape brcyan + set -x fish_color_history_current --bold + set -x fish_color_host normal + set -x fish_color_host_remote yellow + set -x fish_color_match --background=brblue + set -x fish_color_normal normal + set -x fish_color_operator cyan + set -x fish_color_param brblue + set -x fish_color_quote yellow + set -x fish_color_redirection bryellow + set -x fish_color_search_match 'bryellow' '--background=brblack' + set -x fish_color_selection 'white' '--bold' '--background=brblack' + set -x fish_color_status red + set -x fish_color_user brgreen + set -x fish_color_valid_path --underline + set -x fish_pager_color_completion normal + set -x fish_pager_color_description yellow + set -x fish_pager_color_prefix 'white' '--bold' '--underline' + set -x fish_pager_color_progress 'brwhite' '--background=cyan' + ''; + }; + }; +} diff --git a/modules/home/programs/fish/tide.nix b/modules/home/programs/fish/tide.nix new file mode 100644 index 00000000..c694d4b4 --- /dev/null +++ b/modules/home/programs/fish/tide.nix @@ -0,0 +1,221 @@ +{pkgs, ...}: { + programs.fish = { + plugins = [ + { + name = "hydro"; + src = pkgs.fetchFromGitHub { + owner = "jorgebucaran"; + repo = "hydro"; + rev = "75ab7168a35358b3d08eeefad4ff0dd306bd80d4"; + hash = "sha256-85iU1QzcZmZYGhK30/ZaKwJNLTsx+j3w6St8bFiQWxc="; + }; + } + ]; + interactiveShellInit = + /* + fish + */ + '' + set -x tide_character_color "brgreen" + set -x tide_character_color_failure "brred" + set -x tide_character_icon ">" + set -x tide_character_vi_icon_default "<" + set -x tide_character_vi_icon_replace "|" + set -x tide_character_vi_icon_visual "V" + + set -x tide_status_bg_color "normal" + set -x tide_status_bg_color_failure "normal" + set -x tide_status_color "green" + set -x tide_status_color_failure "red" + set -x tide_status_icon "✔" + set -x tide_status_icon_failure " ✘" + + set -x tide_vi_mode_bg_color_default "normal" + set -x tide_vi_mode_bg_color_insert "normal" + set -x tide_vi_mode_bg_color_replace "normal" + set -x tide_vi_mode_bg_color_visual "normal" + set -x tide_vi_mode_color_default "white" + set -x tide_vi_mode_color_insert "cyan" + set -x tide_vi_mode_color_replace "green" + set -x tide_vi_mode_color_visual "yellow" + set -x tide_vi_mode_icon_default "D" + set -x tide_vi_mode_icon_insert "I" + set -x tide_vi_mode_icon_replace "R" + set -x tide_vi_mode_icon_visual "V" + + set -x tide_prompt_add_newline_before "true" + set -x tide_prompt_color_frame_and_connection "brblack" + set -x tide_prompt_color_separator_same_color "brblack" + set -x tide_prompt_icon_connection " " + set -x tide_prompt_min_cols "34" + set -x tide_prompt_pad_items "false" + set -x tide_prompt_transient_enabled "false" + + set -x tide_left_prompt_frame_enabled "false" + set -x tide_left_prompt_items pwd git newline character + set -x tide_left_prompt_prefix "" + set -x tide_left_prompt_separator_diff_color " " + set -x tide_left_prompt_separator_same_color " " + set -x tide_left_prompt_suffix " " + + set -x tide_right_prompt_frame_enabled "false" + set -x tide_right_prompt_items status cmd_duration context jobs direnv time newline bun node python rustc java php pulumi ruby go gcloud kubectl distrobox toolbox terraform crystal elixir zig + set -x tide_right_prompt_prefix " " + set -x tide_right_prompt_separator_diff_color " " + set -x tide_right_prompt_separator_same_color " " + set -x tide_right_prompt_suffix "" + + set -x tide_pwd_bg_color "normal" + set -x tide_pwd_color_anchors "brcyan" + set -x tide_pwd_color_dirs "cyan" + set -x tide_pwd_color_truncated_dirs "magenta" + set -x tide_pwd_icon "" + set -x tide_pwd_icon_home "" + set -x tide_pwd_icon_unwritable "" + set -x tide_pwd_markers .bzr .citc .git .hg .node-version .python-version .ruby-version .shorten_folder_marker .svn .terraform bun.lockb Cargo.toml composer.json CVS go.mod package.json build.zig + + set -x tide_cmd_duration_bg_color "normal" + set -x tide_cmd_duration_color "brblack" + set -x tide_cmd_duration_decimals "0" + set -x tide_cmd_duration_icon "" + set -x tide_cmd_duration_threshold "3000" + + set -x tide_context_always_display "false" + set -x tide_context_bg_color "normal" + set -x tide_context_color_default "yellow" + set -x tide_context_color_root "bryellow" + set -x tide_context_color_ssh "yellow" + set -x tide_context_hostname_parts "1" + + set -x tide_shlvl_bg_color "normal" + set -x tide_shlvl_color "yellow" + set -x tide_shlvl_icon "" + set -x tide_shlvl_threshold "1" + + set -x tide_git_bg_color "normal" + set -x tide_git_bg_color_unstable "normal" + set -x tide_git_bg_color_urgent "normal" + set -x tide_git_color_branch "brgreen" + set -x tide_git_color_conflicted "brred" + set -x tide_git_color_dirty "bryellow" + set -x tide_git_color_operation "brred" + set -x tide_git_color_staged "bryellow" + set -x tide_git_color_stash "brgreen" + set -x tide_git_color_untracked "brblue" + set -x tide_git_color_upstream "brgreen" + set -x tide_git_icon "" + set -x tide_git_truncation_length "24" + set -x tide_git_truncation_strategy "" + + set -x tide_direnv_bg_color "normal" + set -x tide_direnv_bg_color_denied "normal" + set -x tide_direnv_color "bryellow" + set -x tide_direnv_color_denied "brred" + set -x tide_direnv_icon "▼" + + set -x tide_private_mode_bg_color "normal" + set -x tide_private_mode_color "brwhite" + set -x tide_private_mode_icon "󰗹" + + # Langs, tools + + set -x tide_aws_bg_color "normal" + set -x tide_aws_color "yellow" + set -x tide_aws_icon "" + + set -x tide_bun_bg_color "normal" + set -x tide_bun_color "white" + set -x tide_bun_icon "󰳓" + + set -x tide_crystal_bg_color "normal" + set -x tide_crystal_color "brwhite" + set -x tide_crystal_icon "" + + set -x tide_distrobox_bg_color "normal" + set -x tide_distrobox_color "brmagenta" + set -x tide_distrobox_icon "󰆧" + + set -x tide_docker_bg_color "normal" + set -x tide_docker_color "blue" + set -x tide_docker_default_contexts default colima + set -x tide_docker_icon "" + + set -x tide_elixir_bg_color "normal" + set -x tide_elixir_color "magenta" + set -x tide_elixir_icon "" + + set -x tide_gcloud_bg_color "normal" + set -x tide_gcloud_color "blue" + set -x tide_gcloud_icon "󰊭" + + set -x tide_go_bg_color "normal" + set -x tide_go_color "brcyan" + set -x tide_go_icon "" + + set -x tide_java_bg_color "normal" + set -x tide_java_color "yellow" + set -x tide_java_icon "" + + set -x tide_jobs_bg_color "normal" + set -x tide_jobs_color "green" + set -x tide_jobs_icon "" + set -x tide_jobs_number_threshold "1000" + + set -x tide_kubectl_bg_color "normal" + set -x tide_kubectl_color "blue" + set -x tide_kubectl_icon "󱃾" + + set -x tide_nix3_shell_bg_color "normal" + set -x tide_nix3_shell_color "brblue" + set -x tide_nix3_shell_icon "" + + set -x tide_juju_bg_color "normal" + set -x tide_juju_color "yellow" + set -x tide_juju_icon "" + + set -x tide_node_bg_color "normal" + set -x tide_node_color "green" + set -x tide_node_icon "" + + set -x tide_os_bg_color "normal" + set -x tide_os_color "brwhite" + set -x tide_os_icon "" + + set -x tide_php_bg_color "normal" + set -x tide_php_color "blue" + set -x tide_php_icon "" + + set -x tide_pulumi_bg_color "normal" + set -x tide_pulumi_color "yellow" + set -x tide_pulumi_icon "" + + set -x tide_python_bg_color "normal" + set -x tide_python_color "cyan" + set -x tide_python_icon "󰌠" + + set -x tide_ruby_bg_color "normal" + set -x tide_ruby_color "red" + set -x tide_ruby_icon "" + + set -x tide_rustc_bg_color "normal" + set -x tide_rustc_color "red" + set -x tide_rustc_icon "" + + set -x tide_terraform_bg_color "normal" + set -x tide_terraform_color "magenta" + set -x tide_terraform_icon "󱁢" + + set -x tide_time_bg_color "normal" + set -x tide_time_color "brblack" + set -x tide_time_format "%T" + + set -x tide_toolbox_bg_color "normal" + set -x tide_toolbox_color "magenta" + set -x tide_toolbox_icon "" + + set -x tide_zig_bg_color "normal" + set -x tide_zig_color "yellow" + set -x tide_zig_icon "" + ''; + }; +} diff --git a/modules/home/programs/fish/up-or-search.fish b/modules/home/programs/fish/up-or-search.fish new file mode 100644 index 00000000..5ef444c8 --- /dev/null +++ b/modules/home/programs/fish/up-or-search.fish @@ -0,0 +1,22 @@ +# Taken from Misterio77 https://github.com/Misterio77/nix-config/blob/main/home/gabriel/features/cli/fish/up-or-search.fish +# Merge history upon doing up-or-search +# This lets multiple fish instances share history +if commandline --search-mode + commandline -f history-search-backward + return +end +if commandline --paging-mode + commandline -f up-line + return +end + +set -l lineno (commandline -L) + +switch $lineno + case 1 + commandline -f history-search-backward + # Here we go + history merge + case '*' + commandline -f up-line +end diff --git a/modules/home/programs/hyprland/keybinds.nix b/modules/home/programs/hyprland/keybinds.nix index f17293b5..b57ac572 100644 --- a/modules/home/programs/hyprland/keybinds.nix +++ b/modules/home/programs/hyprland/keybinds.nix @@ -24,11 +24,11 @@ in { # Common Keybind Variables "$fileManager" = "thunar"; "$yazi" = "foot -e yazi"; - "$tuirun" = "tuirun-toggle.sh"; + "$launcher" = "tuirun"; bind = [ - "$mod, SPACE, exec, tuirun" - "$mod, R, exec, $tuirun" + "$mod, SPACE, exec, uwsm app -T $launcher" + "$mod, R, exec, uwsm app -T $launcher" "$mod, L, exec, ${toggle "nwg-bar"}" "$mod SHIFT, B, exec, pkill -SIGUSR2 waybar" "$mod, A, exec, pkill -SIGUSR1 waybar" @@ -95,7 +95,7 @@ in { (mkIf (host == "cnix") { wayland.windowManager.hyprland.settings = { - "$terminal" = "ghostty"; + "$terminal" = "wezterm"; "$browser" = "zen"; "$browserinc" = "zen --private-window"; "$mod" = "SUPER"; diff --git a/modules/home/programs/hyprland/rules.nix b/modules/home/programs/hyprland/rules.nix index 570d4c12..41f14766 100644 --- a/modules/home/programs/hyprland/rules.nix +++ b/modules/home/programs/hyprland/rules.nix @@ -19,11 +19,11 @@ in { "float, initialTitle:^(floatcal)$" # === TUIRUN SETTINGS === - "size 600 300, initialTitle:^(tuirun)$" - "center, initialTitle:^(tuirun)$" + "size 600 300, title:^(tuirun)$" + "center, title:^(tuirun)$" # "workspace special:tuirun, initialTitle:^(tuirun)$" - "noborder, initialTitle:^(tuirun)$" - "float, initialTitle:^(tuirun)$" + "noborder, title:^(tuirun)$" + "float, title:^(tuirun)$" # === KEEPASSXC SETTINGS === "size 843 530, class:^(org.keepassxc.KeePassXC)$" @@ -57,12 +57,8 @@ in { "float, class:^(feh)$" "float, class:^(polkit-gnome-authentication-agent-1)$" "float, class:^(org.gnome.Calculator)$" - "float, class:^(Lxappearance)$" "float, class:^(com.github.hluk.copyq)$" "float, class:^(blueman-manager)$" - "float, class:^(floatranger)$" - "float, class:^(floatnnn)$" - "float, class:^(uwsm app -- tuirun)$" ]; windowrule = []; layerrule = [ diff --git a/modules/home/programs/jujutsu/default.nix b/modules/home/programs/jujutsu/default.nix index cdf6fb0d..b5f80475 100644 --- a/modules/home/programs/jujutsu/default.nix +++ b/modules/home/programs/jujutsu/default.nix @@ -17,21 +17,21 @@ in { name = config.programs.git.userName; email = config.programs.git.userEmail; }; - # ui = { - # diff-editor = lib.mkIf config.programs.neovim.enable [ - # "nvim" - # "-c" - # "DiffEditor $left $right $output" - # ]; - # pager = "less -FRX"; - # }; - # signing = let - # gitCfg = config.programs.git.extraConfig; - # in { - # backend = "gpg"; - # sign-all = gitCfg.commit.gpgSign; - # key = gitCfg.user.signing.key; - # }; + ui = { + diff-editor = lib.mkIf config.programs.helix.enable [ + "hx" + "-c" + "DiffEditor $left $right $output" + ]; + pager = "less -FRX"; + }; + signing = let + gitCfg = config.programs.git.extraConfig; + in { + backend = "ssh"; + sign-all = true; + key = gitCfg.signing.key; + }; templates = { draft_commit_description = '' concat( diff --git a/modules/home/programs/rofi/default.nix b/modules/home/programs/rofi/default.nix index 60124420..23fdc06f 100644 --- a/modules/home/programs/rofi/default.nix +++ b/modules/home/programs/rofi/default.nix @@ -13,9 +13,15 @@ in { config = mkIf cfg.enable { programs.rofi = { enable = true; - package = pkgs.rofi-wayland-unwrapped; - configPath = "home/cnst/.config/rofi/config.rasi"; - font = "Rec Mono Linear 11"; + package = pkgs.rofi-wayland; + extraConfig = { + font = "Input Mono Narrow Light 12"; + show-icons = true; + drun-display-format = "{name}"; + disable-history = false; + sidebar-mode = false; + }; + theme = ./style.rasi; }; }; } diff --git a/modules/home/programs/rofi/style.rasi b/modules/home/programs/rofi/style.rasi new file mode 100644 index 00000000..7d9f2630 --- /dev/null +++ b/modules/home/programs/rofi/style.rasi @@ -0,0 +1,186 @@ +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: gruvbox-dark-soft.rasi + Desc: Gruvbox dark (soft contrast) color theme for Rofi + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 06:04:37 PST -0800 + ========================================================================== */ + +* { + /* Theme settings */ + highlight: bold italic; + scrollbar: true; + + /* Gruvbox dark colors */ + gruvbox-dark-bg0-soft: #32302f; + gruvbox-dark-bg1: #3c3836; + gruvbox-dark-bg3: #665c54; + gruvbox-dark-fg0: #fbf1c7; + gruvbox-dark-fg1: #ebdbb2; + gruvbox-dark-red-dark: #cc241d; + gruvbox-dark-red-light: #fb4934; + gruvbox-dark-yellow-dark: #d79921; + gruvbox-dark-yellow-light: #fabd2f; + gruvbox-dark-gray: #a89984; + + /* Theme colors */ + background: @gruvbox-dark-bg0-soft; + background-color: @background; + foreground: @gruvbox-dark-fg1; + border-color: @gruvbox-dark-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; + normal-foreground: @foreground; + alternate-normal-background: @gruvbox-dark-bg1; + alternate-normal-foreground: @foreground; + selected-normal-background: @gruvbox-dark-bg3; + selected-normal-foreground: @gruvbox-dark-fg0; + + active-background: @gruvbox-dark-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; + alternate-active-foreground: @active-foreground; + selected-active-background: @gruvbox-dark-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @gruvbox-dark-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @gruvbox-dark-red-light; + selected-urgent-foreground: @urgent-foreground; +} +/* ========================================================================== + File: gruvbox-common.rasi + Desc: Shared rules between all gruvbox themes + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 06:06:47 PST -0800 + ========================================================================== */ + +window { + background-color: @background; + border: 2; + padding: 2; +} + +mainbox { + border: 0; + padding: 0; +} + +message { + border: 2px 0 0; + border-color: @separatorcolor; + padding: 1px; +} + +textbox { + highlight: @highlight; + text-color: @foreground; +} + +listview { + border: 2px solid 0 0; + padding: 2px 0 0; + border-color: @separatorcolor; + spacing: 2px; + scrollbar: @scrollbar; +} + +element { + border: 0; + padding: 2px; +} + +element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} + +element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} + +element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} + +element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} + +element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} + +element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} + +element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} + +element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} + +scrollbar { + width: 4px; + border: 0; + handle-color: @scrollbar-handle; + handle-width: 8px; + padding: 0; +} + +sidebar { + border: 2px 0 0; + border-color: @separatorcolor; +} + +inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 2px; + children: [ prompt, textbox-prompt-sep, entry, case-indicator ]; +} + +case-indicator, +entry, +prompt, +button { + spacing: 0; + text-color: @normal-foreground; +} + +button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +textbox-prompt-sep { + expand: false; + str: ":"; + text-color: @normal-foreground; + margin: 0 0.3em 0 0; +} diff --git a/modules/home/programs/waybar/default.nix b/modules/home/programs/waybar/default.nix index 36d4b161..5a85af37 100644 --- a/modules/home/programs/waybar/default.nix +++ b/modules/home/programs/waybar/default.nix @@ -41,7 +41,7 @@ in { "backlight" "battery" "clock" - "custom/mako" + "custom/dunst" ]; "hyprland/workspaces" = { @@ -120,6 +120,34 @@ in { interval = 10; }; + "custom/dunst" = { + exec = "dunst.sh"; + on-click = "dunstctl set-paused toggle"; + restart-interval = 1; + tooltip = false; + }; + + "custom/swaync" = { + tooltip = false; + format = "{} {icon} "; + format-icons = { + "notification" = "󰂚"; + "none" = "󰂚"; + "dnd-notification" = "󱏧"; + "dnd-none" = "󱏧"; + "inhibited-notification" = "󰂚"; + "inhibited-none" = "󰂚"; + "dnd-inhibited-notification" = "󱏧"; + "dnd-inhibited-none" = "󱏧"; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "sleep 0.1 && swaync-client -t -sw"; + on-click-right = "swaync-client -d -sw"; + escape = true; + }; + # "custom/mail" = { # format-icons = { # icon = ""; diff --git a/modules/home/programs/wezterm/default.nix b/modules/home/programs/wezterm/default.nix index 81a5f630..32c05de0 100644 --- a/modules/home/programs/wezterm/default.nix +++ b/modules/home/programs/wezterm/default.nix @@ -6,8 +6,8 @@ ... }: let enable_wayland = "true"; - weztermPkg = pkgs.wezterm; - # weztermFlake = inputs.wezterm.packages.${pkgs.system}.default; + # weztermPkg = pkgs.wezterm; + weztermFlake = inputs.wezterm.packages.${pkgs.system}.default; inherit (lib) mkIf mkEnableOption; cfg = config.home.programs.wezterm; in { @@ -17,41 +17,35 @@ in { config = mkIf cfg.enable { programs.wezterm = { enable = true; - package = weztermPkg; + package = weztermFlake; extraConfig = /* lua */ '' - local wezterm = require 'wezterm'; + local wezterm = require 'wezterm' - local config = { - -- font = wezterm.font("Input Mono Compressed"), - font_size = 12, - check_for_updates = false, - color_scheme = 'Gruvbox Material (Gogh)', - default_cursor_style = 'SteadyBar', - enable_scroll_bar = false, - enable_tab_bar = false, - use_fancy_tab_bar = false, - scrollback_lines = 10000, - window_background_opacity = 0.9, - } - if wezterm.target_triple == "x86_64-pc-windows-msvc" then - config.default_prog = { "powershell.exe" } - else - config.enable_wayland = ${enable_wayland} - -- config.window_decorations = "TITLE" - config.window_close_confirmation = "NeverPrompt" - -- config.freetype_load_target = "Light" - -- config.freetype_render_target = "HorizontalLcd" - local f = wezterm.font_with_fallback({ - {family="Input Mono Compressed", weight="Light"}, - {family="Input Sans Narrow", weight="Light"}, - }) - config.font = f; - end - return config + local config = { + font_size = 12, + check_for_updates = false, + color_scheme = 'Gruvbox Material (Gogh)', + default_cursor_style = 'SteadyBar', + enable_scroll_bar = false, + enable_tab_bar = false, + use_fancy_tab_bar = false, + scrollback_lines = 10000, + window_background_opacity = 0.9, + } + + config.enable_wayland = ${enable_wayland} + config.window_close_confirmation = "NeverPrompt" + local f = wezterm.font_with_fallback({ + { family = "Input Mono Compressed", weight = "Light" }, + { family = "Input Sans Narrow", weight = "Light" }, + }) + config.font = f + + return config ''; }; }; diff --git a/modules/home/programs/zsh/default.nix b/modules/home/programs/zsh/default.nix index da438207..fac3163e 100644 --- a/modules/home/programs/zsh/default.nix +++ b/modules/home/programs/zsh/default.nix @@ -5,9 +5,9 @@ ... }: let inherit (lib) mkIf mkEnableOption; - cfg = config.home.programs.zsh; inherit (lib.meta) getExe; inherit (pkgs) eza bat; + cfg = config.home.programs.zsh; in { options = { home.programs.zsh.enable = mkEnableOption "Enables zsh home configuration"; @@ -88,6 +88,11 @@ in { ZSH_THEME_VIRTUALENV_SUFFIX=$ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=241' + + setopt PROMPT_CR + setopt PROMPT_SP + export PROMPT_EOL_MARK="" + microfetch ''; }; diff --git a/modules/home/services/dunst/default.nix b/modules/home/services/dunst/default.nix new file mode 100644 index 00000000..c2730fe5 --- /dev/null +++ b/modules/home/services/dunst/default.nix @@ -0,0 +1,48 @@ +{ + config, + lib, + pkgs, + ... +}: let + inherit (lib) mkIf mkEnableOption; + cfg = config.home.services.dunst; +in { + options = { + home.services.dunst.enable = mkEnableOption "Enables dunst"; + }; + config = mkIf cfg.enable { + services.dunst = { + enable = true; + iconTheme = { + package = pkgs.papirus-icon-theme; + name = "Papirus"; + }; + settings = { + global = { + browser = "${config.home.sessionVariables.BROWSER}"; + padding = 16; + horizontal_padding = 16; + font = "Input Sans Compressed Light 12"; + frame_color = "#4c7a5d"; + separator_color = "#504945"; + }; + urgency_low = { + msg_urgency = "low"; + background = "#665c54"; + foreground = "#d5c4a1"; + }; + urgency_normal = { + msg_urgency = "normal"; + background = "#3c3836"; + foreground = "#d5c4a1"; + # foreground = "#fbf1c7"; + }; + urgency_critical = { + msg_urgency = "critical"; + background = "#282828"; + foreground = "#c14a4a"; + }; + }; + }; + }; +} diff --git a/modules/home/services/swaync/default.nix b/modules/home/services/swaync/default.nix new file mode 100644 index 00000000..8d5a9242 --- /dev/null +++ b/modules/home/services/swaync/default.nix @@ -0,0 +1,117 @@ +{ + config, + lib, + ... +}: let + inherit (lib) mkIf mkEnableOption; + cfg = config.home.services.swaync; +in { + options = { + home.services.swaync.enable = mkEnableOption "Enables swaync"; + }; + config = mkIf cfg.enable { + services.swaync = { + enable = true; + settings = { + schema = "/etc/xdg/swaync/configSchema.json"; + positionX = "right"; + positionY = "top"; + layer = "overlay"; + control-center-margin-top = 10; + control-center-margin-bottom = 10; + control-center-margin-right = 10; + control-center-margin-left = 10; + notification-icon-size = 64; + notification-body-image-height = 100; + notification-body-image-width = 200; + timeout = 3; + timeout-low = 2; + timeout-critical = 0; + fit-to-screen = false; + control-center-width = 500; + control-center-height = 1025; + notification-window-width = 440; + keyboard-shortcuts = true; + image-visibility = "when-available"; + transition-time = 200; + hide-on-clear = true; + hide-on-action = true; + script-fail-notify = true; + widgets = [ + "title" + "dnd" + "notifications" + "mpris" + "volume" + "buttons-grid" + ]; + widget-config = { + title = { + text = "Notification Center"; + clear-all-button = true; + button-text = "󰆴 Clear All"; + }; + dnd = { + text = "Do Not Disturb"; + }; + label = { + max-lines = 1; + text = "Notification Center"; + }; + mpris = { + image-size = 96; + image-radius = 7; + }; + volume = { + label = "󰕾"; + show-per-app = true; + }; + buttons-grid = { + actions = [ + { + label = "󰐥"; + command = "systemctl poweroff"; + } + { + label = "󰜉"; + command = "systemctl reboot"; + } + { + label = "󰌾"; + command = "$HOME/.config/hypr/scripts/lock-session.sh"; + } + { + label = "󰍃"; + command = "hyprctl dispatch exit"; + } + { + label = "󰤄"; + command = "systemctl suspend"; + } + { + label = "󰕾"; + command = "swayosd-client --output-volume mute-toggle"; + } + { + label = "󰍬"; + command = "swayosd-client --input-volume mute-toggle"; + } + { + label = "󰖩"; + command = "$HOME/.local/bin/shved/rofi-menus/wifi-menu.sh"; + } + { + label = "󰂯"; + command = "blueman-manager"; + } + { + label = ""; + command = "obs"; + } + ]; + }; + }; + }; + }; + }; +} diff --git a/modules/nixos/programs/fish/default.nix b/modules/nixos/programs/fish/default.nix new file mode 100644 index 00000000..653a6a05 --- /dev/null +++ b/modules/nixos/programs/fish/default.nix @@ -0,0 +1,22 @@ +{ + config, + lib, + ... +}: let + inherit (lib) mkIf mkEnableOption; + cfg = config.nixos.programs.fish; +in { + options = { + nixos.programs.fish.enable = mkEnableOption "Enables fish shell"; + }; + config = mkIf cfg.enable { + programs.fish = { + enable = true; + vendor = { + completions.enable = true; + config.enable = true; + functions.enable = true; + }; + }; + }; +} diff --git a/nix/shell/default.nix b/nix/shell/default.nix index b04801c1..5b815fad 100644 --- a/nix/shell/default.nix +++ b/nix/shell/default.nix @@ -51,8 +51,8 @@ # export LD_LIBRARY_PATH="${pkgs.openssl.out}/lib:$LD_LIBRARY_PATH" # Set SHELL to zsh if available - export SHELL=$(which zsh) - if [ "$SHELL" != "$(which zsh)" ]; then + export SHELL=$(which fish) + if [ "$SHELL" != "$(which fish)" ]; then exec $SHELL fi ''; diff --git a/scripts/bin/dunst.sh b/scripts/bin/dunst.sh new file mode 100755 index 00000000..ef589289 --- /dev/null +++ b/scripts/bin/dunst.sh @@ -0,0 +1,18 @@ +readonly ENABLED='󰂚 ' +readonly DISABLED='󱏧 ' +readonly WAITING='󰵙 ' + +dbus-monitor path='/org/freedesktop/Notifications',interface='org.freedesktop.DBus.Properties',member='PropertiesChanged' --profile | + while read -r _; do + PAUSED="$(dunstctl is-paused)" + if [ "$PAUSED" == 'false' ]; then + TEXT="$ENABLED" + else + TEXT="$DISABLED" + COUNT="$(dunstctl count waiting)" + if [ "$COUNT" != '0' ]; then + TEXT="$WAITING" + fi + fi + printf "%s\n" "$TEXT" + done diff --git a/scripts/default.nix b/scripts/default.nix index 53940359..cfadf26f 100644 --- a/scripts/default.nix +++ b/scripts/default.nix @@ -79,6 +79,14 @@ in { text = readFile ./bin/waybar-progress.sh; }); }; + ".local/bin/dunst.sh" = { + source = getExe (pkgs.writeShellApplication { + name = "dunst"; + runtimeInputs = with pkgs; [hyprland dbus]; + text = readFile ./bin/dunst.sh; + }); + }; + ".local/bin/mako.sh" = { source = getExe (pkgs.writeShellApplication { name = "mako"; diff --git a/users/cnst/git.nix b/users/cnst/git.nix index 6b38220f..1c5671ff 100644 --- a/users/cnst/git.nix +++ b/users/cnst/git.nix @@ -15,7 +15,7 @@ in { programs.git = { enable = true; userName = "cnst"; - userEmail = "adamhilmersson@gmail.com"; + userEmail = "adam@cnst.dev"; delta = { enable = true; options.dark = true; diff --git a/users/cnst/modules.nix b/users/cnst/modules.nix index e7cf07a2..053e5184 100644 --- a/users/cnst/modules.nix +++ b/users/cnst/modules.nix @@ -23,7 +23,6 @@ aerc = { enable = false; }; - alacritty = { enable = true; }; @@ -38,7 +37,7 @@ }; discord = { enable = true; - variant = "ptb"; + variant = "vesktop"; }; eza = { enable = true; @@ -49,6 +48,9 @@ firefox = { enable = true; }; + fish = { + enable = true; + }; foot = { enable = true; }; @@ -98,7 +100,7 @@ enable = true; }; wezterm = { - enable = false; + enable = true; }; yazi = { enable = true; @@ -116,7 +118,7 @@ enable = true; }; zsh = { - enable = true; + enable = false; }; }; services = { @@ -131,6 +133,9 @@ color-scheme = "prefer-dark"; }; }; + dunst = { + enable = true; + }; gpg = { enable = false; }; @@ -144,11 +149,14 @@ enable = true; }; mako = { - enable = true; + enable = false; }; protonmail-bridge = { enable = true; }; + swaync = { + enable = false; + }; syncthing = { enable = true; };