diff --git a/flake.lock b/flake.lock index 3eb22f7..3643c52 100644 --- a/flake.lock +++ b/flake.lock @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1755946532, - "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", + "lastModified": 1755632680, + "narHash": "sha256-EjaD8+d7AiAV2fGRN4NTMboWDwk8szDfwbzZ8DL1PhQ=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", + "rev": "50637ed23e962f0db294d6b0ef534f37b144644b", "type": "github" }, "original": { @@ -139,11 +139,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1756741629, - "narHash": "sha256-n+mgH3NoQf8d1jd8cDp/9Mt++hhyuE3LO3ZAxzjWRZw=", + "lastModified": 1756028045, + "narHash": "sha256-j6ehEdta7YnXtk42cdYQEElCKfnbe24yfeHJwszgyes=", "owner": "catppuccin", "repo": "nix", - "rev": "cd22197da06df1eb6fabdaa2fc22c170c4f67382", + "rev": "ad015344f592b6ebb82de853b747dd577926ec77", "type": "github" }, "original": { @@ -161,11 +161,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1756606761, - "narHash": "sha256-lcHMwq0LVcS1mP9o0pq00Von8PsXMsFPPo3ZXGWa7DU=", + "lastModified": 1756202691, + "narHash": "sha256-/TlUDQtCDCUtT3ipDLYFBUKf9XrWhgsYPOAyUowmwgI=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "9e9e58125b4ba190658235106858f9733b25a1b4", + "rev": "9f9193761b28fc36e3d1ec9cff46227da69ea5b5", "type": "github" }, "original": { @@ -290,11 +290,11 @@ ] }, "locked": { - "lastModified": 1756733629, - "narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=", + "lastModified": 1756115622, + "narHash": "sha256-iv8xVtmLMNLWFcDM/HcAPLRGONyTRpzL9NS09RnryRM=", "owner": "nix-community", "repo": "disko", - "rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1", + "rev": "bafad29f89e83b2d861b493aa23034ea16595560", "type": "github" }, "original": { @@ -309,11 +309,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1756832996, - "narHash": "sha256-pW+QqeXIIKzo4GkX+WM86t7vai++RHaDE32aMDAIUJs=", + "lastModified": 1756201896, + "narHash": "sha256-e2KacadZeySNwACB6v+7vr/Usw07Db5+OzGDL6fQ1qI=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "73c17b083cd9383d9dd0c98ca33c5d7cdabfec6c", + "rev": "cf7aaac09acc0fad9b15d8fe76745396125c0e3e", "type": "github" }, "original": { @@ -330,11 +330,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1756785812, - "narHash": "sha256-B3cR5keCkTTaI7hCI1YIopLWT3CviWf/uwOjC9AQ27Y=", + "lastModified": 1756181002, + "narHash": "sha256-bPChgpfVqZQxkX0sqFVypO4CFu+swVqqgWySHWK+1wc=", "owner": "rycee", "repo": "nur-expressions", - "rev": "eeb9ccaba785ca13fc2dcf9d83613633a0605feb", + "rev": "3cb5445c6a575cf7ece61678449bee89eec864d7", "type": "gitlab" }, "original": { @@ -569,11 +569,11 @@ ] }, "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "lastModified": 1754487366, + "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", + "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", "type": "github" }, "original": { @@ -859,11 +859,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1756850146, - "narHash": "sha256-6bHIDP99bxK4H3PsEQjKaGG3RhxZY3HrMzL/soqXzfk=", + "lastModified": 1756197898, + "narHash": "sha256-0X6qBT9lbKlQPZH5PRopNyJcdsgh6NU8rxQf2DK47EM=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "8d11c08db3263e0507bfe010e4c423a61b323ac0", + "rev": "4630369f874fe8fab0607c7e4f2b375d7ab78741", "type": "github" }, "original": { @@ -1060,11 +1060,11 @@ ] }, "locked": { - "lastModified": 1756261190, - "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", + "lastModified": 1756022458, + "narHash": "sha256-J1i35r4HfNDdPpwL0vOBaZopQudAUVtartEerc1Jryc=", "owner": "nix-community", "repo": "home-manager", - "rev": "77f348da3176dc68b20a73dab94852a417daf361", + "rev": "9e3a33c0bcbc25619e540b9dfea372282f8a9740", "type": "github" }, "original": { @@ -1080,11 +1080,11 @@ ] }, "locked": { - "lastModified": 1756842514, - "narHash": "sha256-XbtRMewPGJwTNhBC4pnBu3w/xT1XejvB0HfohC2Kga8=", + "lastModified": 1756022458, + "narHash": "sha256-J1i35r4HfNDdPpwL0vOBaZopQudAUVtartEerc1Jryc=", "owner": "nix-community", "repo": "home-manager", - "rev": "30fc1b532645a21e157b6e33e3f8b4c154f86382", + "rev": "9e3a33c0bcbc25619e540b9dfea372282f8a9740", "type": "github" }, "original": { @@ -1159,11 +1159,11 @@ ] }, "locked": { - "lastModified": 1755678602, - "narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=", + "lastModified": 1754305013, + "narHash": "sha256-u+M2f0Xf1lVHzIPQ7DsNCDkM1NYxykOSsRr4t3TbSM4=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "157cc52065a104fc3b8fa542ae648b992421d1c7", + "rev": "4c1d63a0f22135db123fc789f174b89544c6ec2d", "type": "github" }, "original": { @@ -1184,11 +1184,11 @@ "systems": "systems_7" }, "locked": { - "lastModified": 1756291201, - "narHash": "sha256-YzRWE3rCnsY0WDRJcn4KvyWUoe+5zdkUYNIaHGP9BZ4=", + "lastModified": 1752164251, + "narHash": "sha256-v/FnmgSkOypGkpDHQW8KK0uVIyh2njVgEa7hOpWW9ZM=", "owner": "hyprwm", "repo": "hypridle", - "rev": "5430b73ddf148651bcf35fa39ed4d757c7534028", + "rev": "dda793b66a79e5602675fa370dd9a93f1d70a60e", "type": "github" }, "original": { @@ -1213,11 +1213,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1756811803, - "narHash": "sha256-MuR2EcPnJ7VOhK1ipdOcyRvGgRFZbRWA1fl27Gzrie0=", + "lastModified": 1756069181, + "narHash": "sha256-FPur4yuDwzM9uHhPFJW6KD3Xys5fz0xmRmZqFfWQD3Y=", "ref": "refs/heads/main", - "rev": "127aab815908ecbd3db4d23f127d2e96b79855f9", - "revCount": 6408, + "rev": "0ed880f3f7dc2c746bf3590eee266c010d737558", + "revCount": 6393, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1441,11 +1441,11 @@ ] }, "locked": { - "lastModified": 1756117388, - "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", + "lastModified": 1755416120, + "narHash": "sha256-PosTxeL39YrLvCX5MqqPA6NNWQ4T5ea5K55nmN7ju9Q=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", + "rev": "e631ea36ddba721eceda69bfee6dd01068416489", "type": "github" }, "original": { @@ -1513,11 +1513,11 @@ ] }, "locked": { - "lastModified": 1756201372, - "narHash": "sha256-bK5j5cwJgO5AZXlDl5AgISzpOv9YV1Fcv2nDr9RW/5o=", + "lastModified": 1755931229, + "narHash": "sha256-j8ghatY34DbEnHe42r8VtAe05WyMUK+d66uGKsfLbbk=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "9f6745bd704ab7f2617d41c2b02f4fd5f9ed0e89", + "rev": "bcad5af8eb475df936f6cf2d04b076dc6784af95", "type": "github" }, "original": { @@ -1665,11 +1665,11 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1756857991, - "narHash": "sha256-RCdKAApSgXHhwt7236TygtgV04qlIojySDAJXVNM1Nc=", + "lastModified": 1756193366, + "narHash": "sha256-QpWwQwb8PkyAw2kY0ni4/GGhIlGVxXZifhxH5dP2gII=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "d18b36e17f51d0e5ff51d4e74f573c6683e496ab", + "rev": "fe523067daca6e8dd050d07bdca0b4bddec89694", "type": "github" }, "original": { @@ -1681,11 +1681,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1756837279, - "narHash": "sha256-exFuBMScGX9vjLGQ4p/uZKyDCot5xF5Ta864Dv0ys/0=", + "lastModified": 1756164261, + "narHash": "sha256-VOjIxnuuOGxglYA91ra5dZkUTP12kWWuGJK13JLSB3g=", "owner": "neovim", "repo": "neovim", - "rev": "431004dda2bbfe1565afcaa5117a0287317b0215", + "rev": "821bfc02fbae7f1cf984037cf479c9cbc0eb1418", "type": "github" }, "original": { @@ -1704,11 +1704,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1756801989, - "narHash": "sha256-eOIQ1CUMHwU4zsBGaCj9jCgNTxzyq2aeHuwgx0xLFwo=", + "lastModified": 1756188424, + "narHash": "sha256-LvfwTK+Ngf+hRrfjCziQL9XEjqmFJUMqmE7bU8JujK4=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "d6a98b86d86b512c6167601ea646ab785137bada", + "rev": "c7341b5b3b1b7deb164bcaa54cc240a809352470", "type": "github" }, "original": { @@ -1725,16 +1725,15 @@ "rust-overlay": "rust-overlay_5" }, "locked": { - "lastModified": 1756761382, - "narHash": "sha256-1XIhLlAc/x9K6LXRK8yMD8G3RiHPOiVRHmWNgIFGVi0=", - "owner": "visualglitch91", + "lastModified": 1756121001, + "narHash": "sha256-qAS8KtQSInO80zmTwTxmlOZzD9tTl8tc1hY0CYRSr78=", + "owner": "YaLTeR", "repo": "niri", - "rev": "ceda5689ce260339ba5cb6d1da5d776f830d7c96", + "rev": "9b622b1c8cee332b0dd5a92ba07242b3d0dc2198", "type": "github" }, "original": { - "owner": "visualglitch91", - "ref": "feat/blur", + "owner": "YaLTeR", "repo": "niri", "type": "github" } @@ -1742,16 +1741,16 @@ "niri-stable": { "flake": false, "locked": { - "lastModified": 1756556321, - "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", + "lastModified": 1748151941, + "narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=", "owner": "YaLTeR", "repo": "niri", - "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", + "rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7", "type": "github" }, "original": { "owner": "YaLTeR", - "ref": "v25.08", + "ref": "v25.05.1", "repo": "niri", "type": "github" } @@ -1759,11 +1758,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1756728273, - "narHash": "sha256-7tYNlNO/qVRA6shdWxNuBMYOE+pGgxqE0f54S4Wr9PE=", + "lastModified": 1756121001, + "narHash": "sha256-qAS8KtQSInO80zmTwTxmlOZzD9tTl8tc1hY0CYRSr78=", "owner": "YaLTeR", "repo": "niri", - "rev": "77465e11fe36fdd9bc0a304b96bb2558116568af", + "rev": "9b622b1c8cee332b0dd5a92ba07242b3d0dc2198", "type": "github" }, "original": { @@ -1852,11 +1851,11 @@ }, "nixos-stable": { "locked": { - "lastModified": 1756754095, - "narHash": "sha256-9Rsn9XEWINExosFkKEqdp8EI6Mujr1gmQiyrEcts2ls=", + "lastModified": 1755922037, + "narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7c815e513adbf03c9098b2bd230c1e0525c8a7f9", + "rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c", "type": "github" }, "original": { @@ -1868,11 +1867,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1756125398, + "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", "type": "github" }, "original": { @@ -1998,11 +1997,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1756754095, - "narHash": "sha256-9Rsn9XEWINExosFkKEqdp8EI6Mujr1gmQiyrEcts2ls=", + "lastModified": 1755922037, + "narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7c815e513adbf03c9098b2bd230c1e0525c8a7f9", + "rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c", "type": "github" }, "original": { @@ -2040,11 +2039,11 @@ }, "nixpkgs_12": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1755186698, + "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", "type": "github" }, "original": { @@ -2104,11 +2103,11 @@ }, "nixpkgs_16": { "locked": { - "lastModified": 1756819007, - "narHash": "sha256-12V64nKG/O/guxSYnr5/nq1EfqwJCdD2+cIGmhz3nrE=", + "lastModified": 1756128520, + "narHash": "sha256-R94HxJBi+RK1iCm8Y4Q9pdrHZl0GZoDPIaYwjxRNPh4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "aaff8c16d7fc04991cac6245bee1baa31f72b1e1", + "rev": "c53baa6685261e5253a1c355a1b322f82674a824", "type": "github" }, "original": { @@ -2120,11 +2119,11 @@ }, "nixpkgs_17": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1756125398, + "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", "type": "github" }, "original": { @@ -2136,11 +2135,11 @@ }, "nixpkgs_18": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1756125398, + "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", "type": "github" }, "original": { @@ -2310,11 +2309,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1755615617, + "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "20075955deac2583bb12f07151c2df830ef346b4", "type": "github" }, "original": { @@ -2326,11 +2325,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1756125398, + "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", "type": "github" }, "original": { @@ -2390,11 +2389,11 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1756125398, + "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", "type": "github" }, "original": { @@ -2471,11 +2470,11 @@ ] }, "locked": { - "lastModified": 1755960406, - "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", + "lastModified": 1755446520, + "narHash": "sha256-I0Ok1OGDwc1jPd8cs2VvAYZsHriUVFGIUqW+7uSsOUM=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", + "rev": "4b04db83821b819bbbe32ed0a025b31e7971f22e", "type": "github" }, "original": { @@ -2533,11 +2532,11 @@ ] }, "locked": { - "lastModified": 1756352679, - "narHash": "sha256-UkKaPXTPzT7HAcBOV4NlWx2GAEJaTf0eb5OX6Q6jPqg=", + "lastModified": 1753595452, + "narHash": "sha256-vqkSDvh7hWhPvNjMjEDV4KbSCv2jyl2Arh73ZXe274k=", "ref": "refs/heads/master", - "rev": "f7597cdae2d537c5b12843599955856090dc49d5", - "revCount": 668, + "rev": "a5431dd02dc23d9ef1680e67777fed00fe5f7cda", + "revCount": 665, "type": "git", "url": "https://git.outfoxxed.me/outfoxxed/quickshell" }, @@ -2575,11 +2574,11 @@ "systems": "systems_14" }, "locked": { - "lastModified": 1756660474, - "narHash": "sha256-1bNQXQGTfBvzbY13r+dCE5CXsvdLVpKYCnegm5TrzRc=", + "lastModified": 1756146752, + "narHash": "sha256-by4nWLsk81FOAli4jLb5sTSrMcv20HBU1wQa+x4SMqA=", "owner": "raphamorim", "repo": "rio", - "rev": "1b5c90a33841214cefce281ed117ac11653f5213", + "rev": "7f387a9d71a6e0cdd7845533fd97e14ce387e49d", "type": "github" }, "original": { @@ -2642,11 +2641,11 @@ ] }, "locked": { - "lastModified": 1756434910, - "narHash": "sha256-5UJRyxZ8QCm+pgh5pNHXFJMmopMqHVraUhRA1g2AmA0=", + "lastModified": 1756003222, + "narHash": "sha256-lmEMhIIbjt8Wp1EYbNqCojuU9ygyDFv8Tu0X1k8qIMc=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "86e5140961c91a9ee1dde1c17d18a787d44ceef8", + "rev": "88ceedecde53e809b4bf8b5fd10d181889d9bac7", "type": "github" }, "original": { @@ -2738,11 +2737,11 @@ "nixpkgs": "nixpkgs_22" }, "locked": { - "lastModified": 1756521112, - "narHash": "sha256-/YW9DI+vZ2lbTvYAek6BsudUXdpWr0FybTDod4P42L4=", + "lastModified": 1755916474, + "narHash": "sha256-r0WnHKwA8DQNSHDmN3LNaqu41GbWDYqLS7IQAGR+6Wg=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "2243e3f251ea18486f83133cf8e325d2b9b71e89", + "rev": "897ecf2b25be05e6ccb7661703f9f2fdec155f42", "type": "github" }, "original": { @@ -2758,11 +2757,11 @@ ] }, "locked": { - "lastModified": 1756780571, - "narHash": "sha256-xX0B7Sgx3OQvf6anaNW0vXyYDXbchSx2mnT8rqAPbWA=", + "lastModified": 1756197489, + "narHash": "sha256-S16rPaBH1TnMbDyL5NlGSJcYd7wPlOEWTStdBDL7BHw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "2c18db2acc837a71146ed2d6dae27bf03e3b7a4b", + "rev": "8ec04f46f1edeeed3f870da62191745b93975da7", "type": "github" }, "original": { @@ -2866,11 +2865,11 @@ "systems": "systems_17" }, "locked": { - "lastModified": 1756614537, - "narHash": "sha256-qyszmZO9CEKAlj5NBQo1AIIADm5Fgqs5ZggW1sU1TVo=", + "lastModified": 1756009939, + "narHash": "sha256-lD4Zn37DWEx0X1DqM3npH68b7oh81H8BaaO3c6Ol/DQ=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "374eb5d97092b97f7aaafd58a2012943b388c0df", + "rev": "2bedaf52261ef2adbe71af70820aeb41dfe9a5ef", "type": "github" }, "original": { @@ -3224,11 +3223,11 @@ ] }, "locked": { - "lastModified": 1756662192, - "narHash": "sha256-F1oFfV51AE259I85av+MAia221XwMHCOtZCMcZLK2Jk=", + "lastModified": 1755934250, + "narHash": "sha256-CsDojnMgYsfshQw3t4zjRUkmMmUdZGthl16bXVWgRYU=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "1aabc6c05ccbcbf4a635fb7a90400e44282f61c4", + "rev": "74e1a52d5bd9430312f8d1b8b0354c92c17453e5", "type": "github" }, "original": { @@ -3372,11 +3371,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1756679414, - "narHash": "sha256-yQGJ/n6mRwoIQnaL5oV2TGOHg4SEHpINTaoHrvkjr1Q=", + "lastModified": 1755963545, + "narHash": "sha256-hGXzVhlk+gelqagKAgOHbilNYasM+jM3T8JPshDl2/M=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "c0497c990d46fcc012d9deff885bbe533e91e044", + "rev": "d759c64681bab7cd34f48122037d7420d42f3024", "type": "github" }, "original": { @@ -3391,11 +3390,11 @@ "nixpkgs": "nixpkgs_25" }, "locked": { - "lastModified": 1756840469, - "narHash": "sha256-TtOazKYiRtYEEKnLmeBihr/E+PN1xdT/to1NPNsoxQQ=", + "lastModified": 1756182225, + "narHash": "sha256-LDYO3FTzt3ZDn5l3ke5dI55j/tRW9MmfWhHOeO6dlco=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "0532bd5938efddca7d9462778ba7989b3734f965", + "rev": "3ac45e49f9a8e0edd956b43d587d34adcaa2a007", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index df8bc1b..5a5f13d 100644 --- a/flake.nix +++ b/flake.nix @@ -141,10 +141,7 @@ disko.url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs"; - # niri-src.url = "github:YaLTeR/niri"; - # niri-src.inputs.nixpkgs.follows = "nixpkgs"; - - niri-src.url = "github:visualglitch91/niri/feat/blur"; + niri-src.url = "github:YaLTeR/niri"; niri-src.inputs.nixpkgs.follows = "nixpkgs"; quickshell = { diff --git a/homes/x86_64-linux/zoey@earth/default.nix b/homes/x86_64-linux/zoey@earth/default.nix index 651bab9..097347e 100644 --- a/homes/x86_64-linux/zoey@earth/default.nix +++ b/homes/x86_64-linux/zoey@earth/default.nix @@ -274,6 +274,8 @@ options = ["--cmd cd"]; }; + services.quickshell.enable = false; + home.file.".mozilla/native-messaging-hosts/gpgmejson.json".text = builtins.toJSON { name = "gpgmejson"; description = "JavaScript binding for GnuPG"; diff --git a/modules/home/apps/term/ghostty/default.nix b/modules/home/apps/term/ghostty/default.nix index 3ce39f1..a129c36 100644 --- a/modules/home/apps/term/ghostty/default.nix +++ b/modules/home/apps/term/ghostty/default.nix @@ -29,6 +29,8 @@ in { gtk-single-instance = true; gtk-titlebar = false; + background = colors.crust.hex; + alpha-blending = "linear-corrected"; window-padding-x = 20; diff --git a/modules/home/apps/term/kitty/default.nix b/modules/home/apps/term/kitty/default.nix index 5850db6..a6603c2 100644 --- a/modules/home/apps/term/kitty/default.nix +++ b/modules/home/apps/term/kitty/default.nix @@ -27,13 +27,35 @@ in { settings = { window_padding_width = 20; - background_opacity = "0.9"; + # background_opacity = "0.9"; + background = colors.crust.hex; + foreground = colors.text.hex; font_hinting = "slight"; cursor_trail = 3; text_composition_strategy = "1.2 10"; + + # Normal colors + color0 = colors.surface1.hex; # black + color1 = colors.red.hex; # red + color2 = colors.green.hex; # green + color3 = colors.yellow.hex; # yellow + color4 = colors.blue.hex; # blue + color5 = colors.mauve.hex; # magenta + color6 = colors.teal.hex; # cyan + color7 = colors.text.hex; # white + + # Bright colors + color8 = colors.surface2.hex; # bright black + color9 = colors.red.hex; # bright red + color10 = colors.green.hex; # bright green + color11 = colors.yellow.hex; # bright yellow + color12 = colors.blue.hex; # bright blue + color13 = colors.mauve.hex; # bright magenta + color14 = colors.teal.hex; # bright cyan + color15 = colors.text.hex; # bright white }; }; }; diff --git a/modules/home/apps/tools/neovim/config/lua/config/options.lua b/modules/home/apps/tools/neovim/config/lua/config/options.lua index 2dbae62..ac34dc9 100644 --- a/modules/home/apps/tools/neovim/config/lua/config/options.lua +++ b/modules/home/apps/tools/neovim/config/lua/config/options.lua @@ -12,16 +12,4 @@ vim.g.lazyvim_blink_main = true vim.g.snacks_animate = false vim.o.termguicolors = true --- Minimal UI borders for floats -vim.diagnostic.config({ - virtual_text = false, - float = { border = "none" }, -}) - --- Use crisp single-line borders in LSP handlers -local border = "none" -local handlers = vim.lsp.handlers -handlers["textDocument/hover"] = vim.lsp.with(handlers.hover, { border = border }) -handlers["textDocument/signatureHelp"] = vim.lsp.with(handlers.signature_help, { border = border }) - vim.g.lazyvim_prettier_needs_config = true diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua index e9e6514..04c7607 100644 --- a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua +++ b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua @@ -8,90 +8,9 @@ return { }, { "catppuccin", - opts = function(_, opts) - local module = require("catppuccin.groups.integrations.bufferline") - if module then - module.get = module.get_theme - end - opts.transparent_background = true - opts.flavour = "mocha" - opts.no_bold = true - opts.no_italic = true - opts.dim_inactive = { - enabled = true, - percentage = 0.75, - } - opts.integrations = vim.tbl_deep_extend("force", opts.integrations or {}, { - noice = true, - blink_cmp = true, - notify = true, - treesitter = true, - lsp_trouble = true, - telescope = true, - which_key = true, - native_lsp = { - enabled = true, - inlay_hints = { - background = false, - }, - }, - indent_blankline = { - enabled = true, - scope_color = "overlay0", - colored_indent_levels = false, - }, - }) - opts.custom_highlights = function(colors) - return { - Normal = { bg = "NONE" }, - NormalNC = { bg = "NONE" }, - NormalFloat = { bg = "NONE" }, - FloatBorder = { fg = "NONE", bg = "NONE" }, - FloatTitle = { fg = colors.subtext0, bg = "NONE" }, - -- WinSeparator = { fg = colors.surface1 }, - -- CursorLine = { bg = colors.mantle }, - -- Visual = { bg = colors.surface0 }, - -- Pmenu = { bg = colors.bg, fg = colors.text }, - -- PmenuSel = { bg = colors.surface0, fg = colors.text }, - -- PmenuSbar = { bg = colors.bg }, - -- PmenuThumb = { bg = colors.surface1 }, - -- StatusLine = { bg = colors.bg, fg = colors.subtext0 }, - -- StatusLineNC = { bg = colors.bg, fg = colors.overlay0 }, - -- TabLine = { bg = colors.bg, fg = colors.overlay1 }, - -- TabLineSel = { bg = colors.bg, fg = colors.text }, - -- TabLineFill = { bg = colors.bg }, - -- SignColumn = { bg = colors.bg }, - -- LineNr = { fg = colors.overlay1 }, - DiagnosticUnderlineError = { sp = colors.red, undercurl = true }, - DiagnosticUnderlineWarn = { sp = colors.yellow, undercurl = true }, - DiagnosticUnderlineInfo = { sp = colors.teal, undercurl = true }, - DiagnosticUnderlineHint = { sp = colors.sky, undercurl = true }, - -- Noice popup and cmdline transparent, borderless - NoiceCmdlinePopup = { bg = "NONE", fg = colors.text }, - NoiceCmdlinePopupBorder = { fg = "NONE", bg = "NONE" }, - NoiceCmdlinePopupTitle = { bg = "NONE", fg = colors.subtext0 }, - NoicePopup = { bg = "NONE", fg = colors.text }, - NoicePopupBorder = { fg = "NONE", bg = "NONE" }, - -- Blink.cmp: flat boxes with padding and pop colors - BlinkCmpMenu = { bg = "NONE", fg = colors.text }, - BlinkCmpMenuBorder = { fg = "NONE", bg = "NONE" }, - BlinkCmpMenuSelection = { bg = colors.surface0, fg = colors.text }, - BlinkCmpMenuMatch = { fg = colors.mauve }, - BlinkCmpDoc = { bg = "NONE" }, - BlinkCmpDocBorder = { fg = "NONE", bg = "NONE" }, - BlinkCmpDocSelection = { bg = colors.surface0 }, - BlinkCmpKind = { fg = colors.sky }, - BlinkCmpSource = { fg = colors.subtext0 }, - -- Reduce scope highlighting prominence - IlluminatedWordText = { bg = colors.mantle }, - IlluminatedWordRead = { bg = colors.mantle }, - IlluminatedWordWrite = { bg = colors.mantle }, - TreesitterContext = { bg = colors.mantle }, - TreesitterContextLineNumber = { fg = colors.subtext0, bg = colors.mantle }, - } - end - return opts - end, + opts = { + transparent_background = true, + }, -- config = function() -- require("catppuccin").setup({ -- transparent_background = true, @@ -126,7 +45,7 @@ return { -- end, -- color_overrides = { -- mocha = { - -- bg = "#11111b", + -- base = "#11111b", -- mantle = "#11111b", -- crust = "#11111b", -- }, @@ -214,80 +133,8 @@ return { }, }, }, - --- minimal crisp single-line borders for LSP windows - inlay_hints = { enabled = true }, - diagnostics = { virtual_text = false }, }, }, - -- Minimal Noice styling - { - "folke/noice.nvim", - opts = function(_, opts) - opts = opts or {} - opts.presets = vim.tbl_deep_extend("force", opts.presets or {}, { - bottom_search = false, - command_palette = false, - long_message_to_split = true, - inc_rename = false, - lsp_doc_border = false, - }) - opts.cmdline = vim.tbl_deep_extend("force", opts.cmdline or {}, { - view = "cmdline_popup", - }) - opts.views = vim.tbl_deep_extend("force", opts.views or {}, { - cmdline_popup = { - border = { style = "none", padding = { 1, 2 } }, - win_options = { - -- winhighlight = { "Normal:NoiceCmdlinePopup,FloatBorder:NoiceCmdlinePopupBorder,FloatTitle:NoiceCmdlinePopupTitle" }, - winhighlight = { - Normal = "NoiceCmdlinePopup", - FloatBorder = "NoiceCmdlinePopupBorder", - FloatTitle = "NoiceCmdlinePopupTitle", - }, - winblend = 0, - }, - position = { row = "40%", col = "50%" }, - size = { width = 60 }, - }, - popupmenu = { - border = { style = "none", padding = { 1, 2 } }, - win_options = { winblend = 0, winhighlight = "Normal:NoicePopup,FloatBorder:NoicePopupBorder" }, - }, - mini = { - border = { style = "none", padding = { 1, 2 } }, - win_options = { winblend = 0, winhighlight = "Normal:NoicePopup,FloatBorder:NoicePopupBorder" }, - }, - }) - return opts - end, - }, - -- Minimal bufferline (if present in LazyVim) - { - "akinsho/bufferline.nvim", - opts = function(_, opts) - opts = opts or {} - opts.options = vim.tbl_deep_extend("force", opts.options or {}, { - separator_style = "none", - show_buffer_close_icons = false, - show_close_icon = false, - always_show_bufferline = false, - indicator = { style = "underline" }, - }) - return opts - end, - }, - -- Minimal indent guides - { - "lukas-reineke/indent-blankline.nvim", - main = "ibl", - opts = function(_, opts) - opts = opts or {} - opts.indent = { char = "│" } - opts.scope = { enabled = false } - opts.whitespace = { remove_blankline_trail = true } - return opts - end, - }, "pimalaya/himalaya-vim", { "rachartier/tiny-inline-diagnostic.nvim", diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua b/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua index d248658..e3cd4ba 100644 --- a/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua +++ b/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua @@ -5,24 +5,7 @@ return { -- Author: shadmansaleh -- Credit: glepnir local lualine = require("lualine") - local ctp = require("catppuccin.palettes").get_palette("macchiato") - - -- Utility to blend two hex colors: result = (1 - alpha) * a + alpha * b - local function blend_hex(hex_a, hex_b, alpha) - local function hex_to_rgb(h) - h = h:gsub("#", "") - return tonumber(h:sub(1, 2), 16), tonumber(h:sub(3, 4), 16), tonumber(h:sub(5, 6), 16) - end - local function rgb_to_hex(r, g, b) - return string.format("#%02x%02x%02x", math.floor(r + 0.5), math.floor(g + 0.5), math.floor(b + 0.5)) - end - local ar, ag, ab = hex_to_rgb(hex_a) - local br, bg, bb = hex_to_rgb(hex_b) - local r = ar * (1 - alpha) + br * alpha - local g = ag * (1 - alpha) + bg * alpha - local b = ab * (1 - alpha) + bb * alpha - return rgb_to_hex(r, g, b) - end + local ctp = require("catppuccin.palettes").get_palette("mocha") local conditions = { buffer_not_empty = function() @@ -41,11 +24,15 @@ return { -- Config local config = { options = { + -- Disable sections and component separators component_separators = "", section_separators = "", theme = { - normal = { c = { fg = ctp.text, bg = "NONE" } }, - inactive = { c = { fg = ctp.overlay0, bg = "NONE" } }, + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighted by c theme . So we + -- are just setting default looks o statusline + normal = { c = { fg = ctp.text, bg = ctp.base } }, + inactive = { c = { fg = ctp.overlay0, bg = ctp.base } }, }, }, sections = { @@ -177,41 +164,6 @@ return { return mode_colors[current_mode] or ctp.subtext0 -- Default to a neutral color if mode not found end - -- Human-readable mode labels - local function get_mode_label() - local m = vim.api.nvim_get_mode().mode - local normal = { - n = true, - no = true, - nov = true, - ["noV"] = true, - ["no\22"] = true, - niI = true, - niR = true, - niV = true, - nt = true, - } - if normal[m] then - return "NORM" - end - if m == "i" or m == "ic" or m == "ix" then - return "INS" - end - if m == "v" or m == "V" or m == "\22" or m == "vs" or m == "Vs" or m == "\22s" then - return "VIS" - end - if m == "R" or m == "Rc" or m == "Rx" or m == "Rv" or m == "Rvc" or m == "Rvx" then - return "REPL" - end - if m == "c" or m == "cv" or m == "ce" then - return "CMD" - end - if m == "t" or m == "!" then - return "TERM" - end - return "?" - end - -- Inserts a component in lualine_c at left section local function ins_left(component) table.insert(config.sections.lualine_c, component) @@ -224,14 +176,13 @@ return { ins_left({ function() - return get_mode_label() + return get_mode_abbr() end, color = function() - local mode_color = get_mode_color() - local mode_bg = blend_hex(ctp.base, mode_color, 0.254) - return { fg = mode_color, bg = mode_bg, gui = "bold" } - end, - padding = { left = 1, right = 1 }, + local color = get_mode_color() + return { fg = ctp.base, bg = color, gui = "bold" } + end, -- Sets highlighting of component + padding = { left = 1, right = 1 }, -- We don't need space before this }) ins_left({ @@ -240,13 +191,19 @@ return { color = { fg = ctp.subtext0 }, }) - -- visual separation using color only, no ASCII separators - ins_left({ "location", color = { fg = ctp.overlay1 } }) + ins_left({ + -- filesize component + "filesize", + cond = conditions.buffer_not_empty, + color = { fg = ctp.subtext1 }, + }) + + ins_left({ "location", color = { fg = ctp.subtext1 } }) ins_left({ "diagnostics", sources = { "nvim_diagnostic" }, - symbols = { error = "", warn = "", info = "" }, + symbols = { error = " ", warn = " ", info = " " }, diagnostics_color = { error = { fg = ctp.red }, warn = { fg = ctp.yellow }, @@ -262,13 +219,14 @@ return { end, }) - -- LSP client indicator (badge) ins_right({ + -- Lsp server name . function() + local msg = "none" local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 }) local clients = vim.lsp.get_clients() if next(clients) == nil then - return "" + return msg end for _, client in ipairs(clients) do local filetypes = client.config.filetypes @@ -276,41 +234,42 @@ return { return client.name end end - return "" + return msg end, - color = function() - return { fg = ctp.sapphire, bg = blend_hex(ctp.base, ctp.sapphire, 0.254), gui = "bold" } - end, - padding = { left = 1, right = 1 }, + icon = "", + color = { fg = ctp.overlay1, gui = "bold" }, + }) + + -- Add components to right sections + ins_right({ + "branch", + icon = "", + color = { fg = ctp.mauve, gui = "bold" }, + }) + + ins_right({ + "diff", + -- Is it me or the symbol for modified us really weird + symbols = { added = " ", modified = "󰝤 ", removed = " " }, + diff_color = { + added = { fg = ctp.green }, + modified = { fg = ctp.peach }, + removed = { fg = ctp.red }, + }, + cond = conditions.hide_in_width, }) - -- CMP badge (visible in insert mode) ins_right({ function() - return "CMP" + return "▊" end, - cond = function() - local mode = vim.api.nvim_get_mode().mode - return mode == "i" or mode == "ic" or mode == "ix" - end, - color = { fg = ctp.base, bg = ctp.teal }, - padding = { left = 1, right = 1 }, - }) - - -- Language/filetype badge - ins_right({ - "filetype", - colored = false, - icon_only = false, color = function() - return { fg = ctp.text, ctp.surface0, gui = "bold" } - end, - padding = { left = 1, right = 1 }, + local color = get_mode_color() + return { fg = color } + end, -- Sets highlighting of component + padding = { left = 1 }, }) - -- Minimal right side - ins_right({ "progress", color = { fg = ctp.overlay1 } }) - -- Now don't forget to initialize lualine lualine.setup(config) end, diff --git a/modules/home/apps/tools/neovim/default.nix b/modules/home/apps/tools/neovim/default.nix index 474ee97..941b8f9 100644 --- a/modules/home/apps/tools/neovim/default.nix +++ b/modules/home/apps/tools/neovim/default.nix @@ -38,7 +38,7 @@ in { catppuccin.enable = false; enable = true; defaultEditor = true; - package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; + # package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; extraLuaPackages = ps: [ps.magick]; extraPackages = with pkgs; [ # Formatters diff --git a/modules/home/apps/tools/tmux/default.nix b/modules/home/apps/tools/tmux/default.nix index 4ba5bcb..1325924 100644 --- a/modules/home/apps/tools/tmux/default.nix +++ b/modules/home/apps/tools/tmux/default.nix @@ -18,6 +18,7 @@ in { enable = true; extraConfig = '' set -g @catppuccin_window_status_style "basic" + set -g @catppuccin_status_background "#11111b" ''; }; diff --git a/modules/home/wms/hyprland/default.nix b/modules/home/wms/hyprland/default.nix index 87a008f..9546e70 100644 --- a/modules/home/wms/hyprland/default.nix +++ b/modules/home/wms/hyprland/default.nix @@ -246,6 +246,7 @@ in { # }; # }; + services.quickshell.enable = true; services.wallpaper.enable = true; }; } diff --git a/modules/home/wms/niri/default.nix b/modules/home/wms/niri/default.nix index a5d4f27..99fafcb 100644 --- a/modules/home/wms/niri/default.nix +++ b/modules/home/wms/niri/default.nix @@ -45,752 +45,485 @@ with lib.custom; { patches = prev.patches ++ [../../../../fix-niri-nvidia.patch]; }); - config = '' - input { - keyboard { - xkb { - layout "" - model "" - rules "" - variant "" - } - repeat-delay 600 - repeat-rate 40 - track-layout "global" - } - touchpad { - tap - disabled-on-external-mouse - natural-scroll - } - mouse { - accel-speed 0.200000 - accel-profile "flat" - } - warp-mouse-to-focus - } - output "DP-1" { - scale 1 - transform "normal" - position x=2560 y=0 - mode "2560x1440@239.972000" - variable-refresh-rate on-demand=true - } - output "DP-3" { - scale 1.500000 - focus-at-startup - transform "normal" - position x=0 y=0 - mode "3840x2160@240.000000" - variable-refresh-rate on-demand=true - } - screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" - prefer-no-csd - layout { - gaps 16 - struts { - left 0 - right 0 - top 0 - bottom 0 - } - focus-ring { - width 4 - active-gradient angle=45 from="#89b4fa" relative-to="window" to="#89dceb" - inactive-gradient angle=45 from="#45475a" relative-to="workspace-view" to="#585b70" - } - blur { - on - passes 4 - radius 4.0 - noise 0.1 - } - border { - width 0 - active-color "#89b4fa" - inactive-color "#1e1e2e" - } - default-column-width { proportion 0.500000; } - preset-column-widths { - proportion 0.333330 - proportion 0.500000 - proportion 0.666670 - } - center-focused-column "never" - } - cursor { - xcursor-theme "default" - xcursor-size 24 - } - hotkey-overlay { skip-at-startup; } - environment { DISPLAY ":0"; } - binds { - Ctrl+Alt+Delete { quit; } - Mod+1 { focus-workspace 1; } - Mod+2 { focus-workspace 2; } - Mod+3 { focus-workspace 3; } - Mod+4 { focus-workspace 4; } - Mod+5 { focus-workspace 5; } - Mod+6 { focus-workspace 6; } - Mod+7 { focus-workspace 7; } - Mod+8 { focus-workspace 8; } - Mod+9 { focus-workspace 9; } - Mod+BracketLeft { consume-or-expel-window-left; } - Mod+BracketRight { consume-or-expel-window-right; } - Mod+C { center-column; } - Mod+Comma { consume-window-into-column; } - Mod+Ctrl+Down { move-window-down; } - Mod+Ctrl+End { move-column-to-last; } - Mod+Ctrl+F { expand-column-to-available-width; } - Mod+Ctrl+H { move-column-left; } - Mod+Ctrl+Home { move-column-to-first; } - Mod+Ctrl+I { move-column-to-workspace-up; } - Mod+Ctrl+J { move-window-down; } - Mod+Ctrl+K { move-window-up; } - Mod+Ctrl+L { move-column-right; } - Mod+Ctrl+Left { move-column-left; } - "Mod+Ctrl+Page_Down" { move-column-to-workspace-down; } - "Mod+Ctrl+Page_Up" { move-column-to-workspace-up; } - Mod+Ctrl+R { reset-window-height; } - Mod+Ctrl+Right { move-column-right; } - Mod+Ctrl+Shift+F { toggle-windowed-fullscreen; } - Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } - Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } - Mod+Ctrl+U { move-column-to-workspace-down; } - Mod+Ctrl+Up { move-window-up; } - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } - Mod+Ctrl+WheelScrollLeft { move-column-left; } - Mod+Ctrl+WheelScrollRight { move-column-right; } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } - Mod+D { spawn "fuzzel"; } - Mod+Down { focus-window-down; } - Mod+End { focus-column-last; } - Mod+Equal { set-column-width "+10%"; } - Mod+F { maximize-column; } - Mod+H { focus-column-left; } - Mod+Home { focus-column-first; } - Mod+I { focus-workspace-up; } - Mod+J { focus-window-down; } - Mod+K { focus-window-up; } - Mod+L { focus-column-right; } - Mod+Left { focus-column-left; } - Mod+Minus { set-column-width "-10%"; } - "Mod+Page_Down" { focus-workspace-down; } - "Mod+Page_Up" { focus-workspace-up; } - Mod+Period { expel-window-from-column; } - Mod+Q { close-window; } - Mod+R { switch-preset-column-width; } - Mod+Return { spawn "kitty"; } - Mod+Right { focus-column-right; } - Mod+Shift+1 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "1"; } - Mod+Shift+2 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "2"; } - Mod+Shift+3 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "3"; } - Mod+Shift+4 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "4"; } - Mod+Shift+5 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "5"; } - Mod+Shift+6 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "6"; } - Mod+Shift+7 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "7"; } - Mod+Shift+8 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "8"; } - Mod+Shift+9 { spawn "/nix/store/kqk80x8bbv05c8rxfvjiyy96jvqng3p2-niri-082d058/bin/niri" "msg" "action" "move-column-to-workspace" "9"; } - Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } - Mod+Shift+Ctrl+H { move-column-to-monitor-left; } - Mod+Shift+Ctrl+J { move-column-to-monitor-down; } - Mod+Shift+Ctrl+K { move-column-to-monitor-up; } - Mod+Shift+Ctrl+L { move-column-to-monitor-right; } - Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } - Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } - Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } - Mod+Shift+Down { focus-monitor-down; } - Mod+Shift+E { quit; } - Mod+Shift+Equal { set-window-height "+10%"; } - Mod+Shift+F { fullscreen-window; } - Mod+Shift+H { focus-monitor-left; } - Mod+Shift+I { move-workspace-up; } - Mod+Shift+J { focus-workspace-down; } - Mod+Shift+K { focus-workspace-up; } - Mod+Shift+L { focus-monitor-right; } - Mod+Shift+Left { focus-monitor-left; } - Mod+Shift+Minus { set-window-height "-10%"; } - Mod+Shift+P { power-off-monitors; } - "Mod+Shift+Page_Down" { move-workspace-down; } - "Mod+Shift+Page_Up" { move-workspace-up; } - Mod+Shift+R { switch-preset-window-height; } - Mod+Shift+Right { focus-monitor-right; } - Mod+Shift+Slash { show-hotkey-overlay; } - Mod+Shift+U { move-workspace-down; } - Mod+Shift+Up { focus-monitor-up; } - Mod+Shift+WheelScrollDown { focus-column-right; } - Mod+Shift+WheelScrollUp { focus-column-left; } - Mod+U { focus-workspace-down; } - Mod+Up { focus-window-up; } - Mod+V { toggle-window-floating; } - Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } - Mod+WheelScrollLeft { focus-column-left; } - Mod+WheelScrollRight { focus-column-right; } - Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } - Print { screenshot; } - Super+Alt+L { spawn "swaylock"; } - XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; } - XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } - XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } - XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; } - } - workspace "browser" - workspace "code" - workspace "chat" - workspace "work" - spawn-at-startup "xwayland-satellite" - spawn-at-startup "thunderbird" - spawn-at-startup "zen" - spawn-at-startup "vesktop" - spawn-at-startup "cider-2" - spawn-at-startup "${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday" - window-rule { - match app-id="^org\\.keepassxc\\.KeePassXC$" - match app-id="^org\\.gnome\\.World\\.Secrets$" - match app-id="^1Password$" - match app-id="^thunderbird$" - match app-id="^signal$" - match app-id="^vesktop$" - match app-id="^slack$" - block-out-from "screen-capture" - } - window-rule { - geometry-corner-radius 12.000000 12.000000 12.000000 12.000000 - clip-to-geometry true - } - window-rule { - match is-window-cast-target=true - focus-ring { - active-color "#f38ba8" - inactive-color "#89556B" - } - shadow { color "#7d0d2d70"; } - tab-indicator { - active-color "#f38ba8" - inactive-color "#89556B" - } - } - window-rule { - match app-id="^steam$" - exclude title="^Steam$" - open-floating true - open-focused false - default-floating-position relative-to="bottom-right" x=16 y=16 - } - window-rule { - match app-id="^cyberpunk2077.exe$" - match app-id="^Overwatch2.exe$" - variable-refresh-rate true - } - window-rule { - match app-id="^zen$" at-startup=true - open-on-workspace "browser" - open-maximized true - } - window-rule { - match app-id="^spotify$" at-startup=true - match app-id="^vesktop$" at-startup=true - open-on-workspace "chat" - } - window-rule { - match app-id="^Slack$" at-startup=true - match app-id="^thunderbird$" at-startup=true - open-on-workspace "work" - } - layer-rule { - match namespace="notifications$" - block-out-from "screen-capture" - } - ''; + settings = { + # Input device configuration + input = { + keyboard = { + # xkb settings are empty in KDL, using defaults/empty strings + xkb = { + rules = ""; + model = ""; + layout = ""; + variant = ""; + options = null; # Or "" if you prefer explicit empty + }; + }; - # settings = { - # # Input device configuration - # input = { - # keyboard = { - # # xkb settings are empty in KDL, using defaults/empty strings - # xkb = { - # rules = ""; - # model = ""; - # layout = ""; - # variant = ""; - # options = null; # Or "" if you prefer explicit empty - # }; - # - # repeat-rate = 40; - # }; - # - # touchpad = { - # enable = true; # Not explicitly 'off' in KDL - # tap = true; - # dwt = false; # Commented out in KDL - # dwtp = false; # Commented out in KDL - # natural-scroll = true; - # # accel-speed = 0.2; # Commented out - # # accel-profile = "flat"; # Commented out - # # scroll-method = "two-finger"; # Commented out - # disabled-on-external-mouse = true; - # }; - # - # mouse = { - # enable = true; # Not explicitly 'off' in KDL - # natural-scroll = false; # Commented out in KDL - # accel-speed = 0.2; - # accel-profile = "flat"; - # # scroll-method = "no-scroll"; # Commented out - # }; - # - # trackpoint = { - # enable = true; # Not explicitly 'off' in KDL - # natural-scroll = false; # Commented out - # # accel-speed = 0.2; # Commented out - # # accel-profile = "flat"; # Commented out - # # scroll-method = "on-button-down"; # Commented out - # # scroll-button = 273; # Commented out - # middle-emulation = false; # Commented out - # }; - # - # warp-mouse-to-focus = true; - # - # focus-follows-mouse = { - # enable = false; # Commented out in KDL - # # max-scroll-amount = "0%"; # Only relevant if enabled - # }; - # }; - # - # # Output configuration - # outputs."DP-1" = { - # enable = true; # Not explicitly 'off' - # mode = { - # width = 2560; - # height = 1440; - # refresh = 239.972; - # }; - # variable-refresh-rate = "on-demand"; - # scale = 1; - # transform = { - # # "normal" - # rotation = 0; - # flipped = false; - # }; - # position = { - # x = 2560; - # y = 0; - # }; - # }; - # - # outputs."DP-3" = { - # enable = true; # Not explicitly 'off' - # mode = { - # width = 3840; - # height = 2160; - # refresh = 240.0; - # }; - # variable-refresh-rate = "on-demand"; - # focus-at-startup = true; - # scale = 1.5; - # transform = { - # # "normal" - # rotation = 0; - # flipped = false; - # }; - # position = { - # x = 0; - # y = 0; - # }; - # }; - # - # # Environment variables - # environment = { - # DISPLAY = ":0"; # for applications using xwayland-satillite - # }; - # - # hotkey-overlay = { - # skip-at-startup = true; - # }; - # - # # Layout settings - # layout = { - # gaps = 16; - # center-focused-column = "never"; - # - # preset-column-widths = [ - # {proportion = 0.33333;} - # {proportion = 0.5;} - # {proportion = 0.66667;} - # # { fixed = 1920; } # Example if needed - # ]; - # - # # preset-window-heights = []; # Empty in KDL - # - # default-column-width = {proportion = 0.5;}; - # # default-column-width = {}; # Alternative from KDL comments - # - # blur = { - # enable = true; - # passes = 4; - # radius = 4.0; - # noise = 0.1; - # }; - # - # focus-ring = { - # enable = true; # Not explicitly 'off' - # width = 4; - # active = mkGradient colors.blue.hex colors.sky.hex {angle = 45;}; - # # active = mkColor "#7fc8ff"; # Alternative solid color from KDL - # inactive = mkGradient colors.surface1.hex colors.surface2.hex { - # angle = 45; - # relative-to = "workspace-view"; - # }; - # # inactive = mkColor "#505050"; # Alternative solid color from KDL - # }; - # - # border = { - # enable = true; # Explicitly 'off' in KDL - # width = 0; - # active = mkColor colors.blue.hex; - # inactive = mkColor colors.base.hex; - # # active-gradient = ... # Commented out in KDL - # # inactive-gradient = ... # Commented out in KDL - # }; - # - # struts = { - # # left = 64; # Commented out - # # right = 64; # Commented out - # # top = 64; # Commented out - # # bottom = 64; # Commented out - # }; - # }; - # - # # Spawn processes at startup - # spawn-at-startup = [ - # {command = ["xwayland-satellite"];} - # {command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];} - # {command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];} - # {command = ["vesktop"];} - # {command = ["cider-2"];} - # - # {command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];} - # ]; - # - # # Prefer server-side decorations - # prefer-no-csd = true; - # - # # Screenshot path - # screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; - # # screenshot-path = null; # Alternative from KDL comments - # - # # Animation settings - # animations = { - # enable = true; # Not explicitly 'off' - # # slowdown = 3.0; # Commented out - # # Individual animation settings can be added here if needed - # }; - # - # layer-rules = [ - # { - # matches = [ - # {namespace = "notifications$";} - # ]; - # - # block-out-from = "screen-capture"; - # } - # ]; - # - # # Window rules - # window-rules = [ - # # Password manager rule (example from KDL comments) - # { - # matches = [ - # {app-id = "^org\\.keepassxc\\.KeePassXC$";} - # {app-id = "^org\\.gnome\\.World\\.Secrets$";} - # {app-id = "^1Password$";} - # {app-id = "^thunderbird$";} - # {app-id = "^signal$";} - # {app-id = "^vesktop$";} - # {app-id = "^slack$";} - # ]; - # block-out-from = "screen-capture"; - # } - # # Rounded corners rule (example from KDL comments) - # { - # # No matches means apply to all windows - # geometry-corner-radius = { - # top-left = 12.0; - # top-right = 12.0; - # bottom-left = 12.0; - # bottom-right = 12.0; - # }; - # clip-to-geometry = true; - # } - # # Window cast target rule - # { - # matches = [{is-window-cast-target = true;}]; - # focus-ring = { - # active = mkColor colors.red.hex; - # inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); - # }; - # shadow = { - # # Only color is specified in KDL rule - # color = "#7d0d2d70"; - # }; - # tab-indicator = { - # active = mkColor colors.red.hex; - # inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); - # }; - # } - # - # # fix steam popups holy fuck they're annoying - # { - # matches = [ - # {app-id = "^steam$";} - # ]; - # - # excludes = [{title = "^Steam$";}]; - # - # open-floating = true; - # - # open-focused = false; - # - # default-floating-position = { - # relative-to = "bottom-right"; - # x = 16; - # y = 16; - # }; - # } - # { - # matches = [ - # { - # app-id = "^cyberpunk2077.exe$"; - # } - # { - # app-id = "^Overwatch2.exe$"; - # } - # ]; - # - # variable-refresh-rate = true; - # } - # { - # matches = [ - # { - # at-startup = true; - # app-id = "^zen$"; - # } - # ]; - # - # open-maximized = true; - # - # open-on-workspace = "browser"; - # } - # { - # matches = [ - # { - # at-startup = true; - # app-id = "^spotify$"; - # } - # { - # at-startup = true; - # app-id = "^vesktop$"; - # } - # ]; - # - # open-on-workspace = "chat"; - # } - # { - # matches = [ - # { - # at-startup = true; - # app-id = "^Slack$"; - # } - # { - # at-startup = true; - # app-id = "^thunderbird$"; - # } - # ]; - # - # open-on-workspace = "work"; - # } - # ]; - # - # workspaces."01-browser" = { - # name = "browser"; - # }; - # workspaces."02-code" = { - # name = "code"; - # }; - # workspaces."03-chat" = { - # name = "chat"; - # }; - # workspaces."04-work" = { - # name = "work"; - # }; - # - # # Keybindings - # binds = - # { - # "Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;}; - # - # "Mod+Return" = {action = actions.spawn "kitty";}; - # "Mod+D" = {action = actions.spawn "fuzzel";}; - # "Super+Alt+L" = {action = actions.spawn "swaylock";}; - # # "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; }; - # - # # "Mod+S" = {action = actions.set-dynamic-cast-window;}; - # # - # # "Mod+Shift+S" = {action = actions.set-dynamic-cast-monitor;}; - # # - # # "Mod+Z" = {action = actions.clear-dynamic-cast-target;}; - # - # "XF86AudioRaiseVolume" = { - # allow-when-locked = true; - # action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; - # }; - # "XF86AudioLowerVolume" = { - # allow-when-locked = true; - # action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; - # }; - # "XF86AudioMute" = { - # allow-when-locked = true; - # action = actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; - # }; - # "XF86AudioMicMute" = { - # allow-when-locked = true; - # action = - # actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; - # }; - # - # "Mod+Q" = {action = actions.close-window;}; - # - # "Mod+Left" = {action = actions.focus-column-left;}; - # "Mod+Down" = {action = actions.focus-window-down;}; - # "Mod+Up" = {action = actions.focus-window-up;}; - # "Mod+Right" = {action = actions.focus-column-right;}; - # "Mod+H" = {action = actions.focus-column-left;}; - # "Mod+J" = {action = actions.focus-window-down;}; - # "Mod+K" = {action = actions.focus-window-up;}; - # "Mod+L" = {action = actions.focus-column-right;}; - # - # "Mod+Ctrl+Left" = {action = actions.move-column-left;}; - # "Mod+Ctrl+Down" = {action = actions.move-window-down;}; - # "Mod+Ctrl+Up" = {action = actions.move-window-up;}; - # "Mod+Ctrl+Right" = {action = actions.move-column-right;}; - # "Mod+Ctrl+H" = {action = actions.move-column-left;}; - # "Mod+Ctrl+J" = {action = actions.move-window-down;}; - # "Mod+Ctrl+K" = {action = actions.move-window-up;}; - # "Mod+Ctrl+L" = {action = actions.move-column-right;}; - # - # # Alternative commands (commented out in KDL) - # # "Mod+J" = { action = actions.focus-window-or-workspace-down; }; - # # "Mod+K" = { action = actions.focus-window-or-workspace-up; }; - # # "Mod+Ctrl+J" = { action = actions.move-window-down-or-to-workspace-down; }; - # # "Mod+Ctrl+K" = { action = actions.move-window-up-or-to-workspace-up; }; - # - # "Mod+Home" = {action = actions.focus-column-first;}; - # "Mod+End" = {action = actions.focus-column-last;}; - # "Mod+Ctrl+Home" = {action = actions.move-column-to-first;}; - # "Mod+Ctrl+End" = {action = actions.move-column-to-last;}; - # - # "Mod+Shift+Left" = {action = actions.focus-monitor-left;}; - # "Mod+Shift+Down" = {action = actions.focus-monitor-down;}; - # "Mod+Shift+Up" = {action = actions.focus-monitor-up;}; - # "Mod+Shift+Right" = {action = actions.focus-monitor-right;}; - # "Mod+Shift+H" = {action = actions.focus-monitor-left;}; - # "Mod+Shift+J" = {action = actions.focus-workspace-down;}; - # "Mod+Shift+K" = {action = actions.focus-workspace-up;}; - # "Mod+Shift+L" = {action = actions.focus-monitor-right;}; - # - # "Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;}; - # - # "Mod+Shift+Ctrl+Left" = {action = actions.move-column-to-monitor-left;}; - # "Mod+Shift+Ctrl+Down" = {action = actions.move-column-to-monitor-down;}; - # "Mod+Shift+Ctrl+Up" = {action = actions.move-column-to-monitor-up;}; - # "Mod+Shift+Ctrl+Right" = {action = actions.move-column-to-monitor-right;}; - # "Mod+Shift+Ctrl+H" = {action = actions.move-column-to-monitor-left;}; - # "Mod+Shift+Ctrl+J" = {action = actions.move-column-to-monitor-down;}; - # "Mod+Shift+Ctrl+K" = {action = actions.move-column-to-monitor-up;}; - # "Mod+Shift+Ctrl+L" = {action = actions.move-column-to-monitor-right;}; - # - # "Mod+Page_Down" = {action = actions.focus-workspace-down;}; - # "Mod+Page_Up" = {action = actions.focus-workspace-up;}; - # "Mod+U" = {action = actions.focus-workspace-down;}; - # "Mod+I" = {action = actions.focus-workspace-up;}; - # "Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;}; - # "Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;}; - # "Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;}; - # "Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;}; - # - # "Mod+Shift+Page_Down" = {action = actions.move-workspace-down;}; - # "Mod+Shift+Page_Up" = {action = actions.move-workspace-up;}; - # "Mod+Shift+U" = {action = actions.move-workspace-down;}; - # "Mod+Shift+I" = {action = actions.move-workspace-up;}; - # - # "Mod+WheelScrollDown" = { - # cooldown-ms = 150; - # action = actions.focus-workspace-down; - # }; - # "Mod+WheelScrollUp" = { - # cooldown-ms = 150; - # action = actions.focus-workspace-up; - # }; - # "Mod+Ctrl+WheelScrollDown" = { - # cooldown-ms = 150; - # action = actions.move-column-to-workspace-down; - # }; - # "Mod+Ctrl+WheelScrollUp" = { - # cooldown-ms = 150; - # action = actions.move-column-to-workspace-up; - # }; - # - # "Mod+WheelScrollRight" = {action = actions.focus-column-right;}; - # "Mod+WheelScrollLeft" = {action = actions.focus-column-left;}; - # "Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;}; - # "Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;}; - # - # "Mod+Shift+WheelScrollDown" = {action = actions.focus-column-right;}; - # "Mod+Shift+WheelScrollUp" = {action = actions.focus-column-left;}; - # "Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-column-right;}; - # "Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-column-left;}; - # - # "Mod+Comma" = {action = actions.consume-window-into-column;}; - # "Mod+Period" = {action = actions.expel-window-from-column;}; - # - # "Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;}; - # "Mod+BracketRight" = {action = actions.consume-or-expel-window-right;}; - # - # "Mod+R" = {action = actions.switch-preset-column-width;}; - # "Mod+Shift+R" = {action = actions.switch-preset-window-height;}; - # "Mod+Ctrl+R" = {action = actions.reset-window-height;}; - # "Mod+F" = {action = actions.maximize-column;}; - # "Mod+Shift+F" = {action = actions.fullscreen-window;}; - # "Mod+C" = {action = actions.center-column;}; - # "Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;}; - # - # "Mod+V" = {action = actions.toggle-window-floating;}; - # - # "Mod+Minus" = {action = actions.set-column-width "-10%";}; - # "Mod+Equal" = {action = actions.set-column-width "+10%";}; - # - # "Mod+Shift+Minus" = {action = actions.set-window-height "-10%";}; - # "Mod+Shift+Equal" = {action = actions.set-window-height "+10%";}; - # - # "Print" = {action = actions.screenshot {};}; # Empty attrset for default args - # "Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation - # "Ctrl+Alt+Delete" = {action = actions.quit {};}; - # - # "Mod+Shift+P" = {action = actions.power-off-monitors;}; - # } - # // lib.attrsets.listToAttrs (builtins.concatMap (i: - # with actions; [ - # { - # name = "Mod+${toString i}"; - # value.action = focus-workspace i; - # } - # # FIXME: use this action directly untril sodiboo/niri-flake#1018 is fixed. - # { - # name = "Mod+Shift+${toString i}"; - # value.action = spawn [niri "msg" "action" "move-column-to-workspace" (toString i)]; - # } - # ]) (lib.range 1 9)); - # }; + touchpad = { + enable = true; # Not explicitly 'off' in KDL + tap = true; + dwt = false; # Commented out in KDL + dwtp = false; # Commented out in KDL + natural-scroll = true; + # accel-speed = 0.2; # Commented out + # accel-profile = "flat"; # Commented out + # scroll-method = "two-finger"; # Commented out + disabled-on-external-mouse = true; + }; + + mouse = { + enable = true; # Not explicitly 'off' in KDL + natural-scroll = false; # Commented out in KDL + accel-speed = 0.2; + accel-profile = "flat"; + # scroll-method = "no-scroll"; # Commented out + }; + + trackpoint = { + enable = true; # Not explicitly 'off' in KDL + natural-scroll = false; # Commented out + # accel-speed = 0.2; # Commented out + # accel-profile = "flat"; # Commented out + # scroll-method = "on-button-down"; # Commented out + # scroll-button = 273; # Commented out + middle-emulation = false; # Commented out + }; + + warp-mouse-to-focus = true; + + focus-follows-mouse = { + enable = false; # Commented out in KDL + # max-scroll-amount = "0%"; # Only relevant if enabled + }; + }; + + # Output configuration + outputs."DP-1" = { + enable = true; # Not explicitly 'off' + mode = { + width = 2560; + height = 1440; + refresh = 239.972; + }; + variable-refresh-rate = "on-demand"; + scale = 1; + transform = { + # "normal" + rotation = 0; + flipped = false; + }; + position = { + x = 2560; + y = 0; + }; + }; + + outputs."DP-3" = { + enable = true; # Not explicitly 'off' + mode = { + width = 3840; + height = 2160; + refresh = 240.0; + }; + variable-refresh-rate = "on-demand"; + focus-at-startup = true; + scale = 1.5; + transform = { + # "normal" + rotation = 0; + flipped = false; + }; + position = { + x = 0; + y = 0; + }; + }; + + # Environment variables + environment = { + DISPLAY = ":0"; # for applications using xwayland-satillite + }; + + hotkey-overlay = { + skip-at-startup = true; + }; + + # Layout settings + layout = { + gaps = 16; + center-focused-column = "never"; + + preset-column-widths = [ + {proportion = 0.33333;} + {proportion = 0.5;} + {proportion = 0.66667;} + # { fixed = 1920; } # Example if needed + ]; + + # preset-window-heights = []; # Empty in KDL + + default-column-width = {proportion = 0.5;}; + # default-column-width = {}; # Alternative from KDL comments + + focus-ring = { + enable = true; # Not explicitly 'off' + width = 4; + active = mkGradient colors.blue.hex colors.sky.hex {angle = 45;}; + # active = mkColor "#7fc8ff"; # Alternative solid color from KDL + inactive = mkGradient colors.surface1.hex colors.surface2.hex { + angle = 45; + relative-to = "workspace-view"; + }; + # inactive = mkColor "#505050"; # Alternative solid color from KDL + }; + + border = { + enable = true; # Explicitly 'off' in KDL + width = 0; + active = mkColor colors.blue.hex; + inactive = mkColor colors.base.hex; + # active-gradient = ... # Commented out in KDL + # inactive-gradient = ... # Commented out in KDL + }; + + struts = { + # left = 64; # Commented out + # right = 64; # Commented out + # top = 64; # Commented out + # bottom = 64; # Commented out + }; + }; + + # Spawn processes at startup + spawn-at-startup = [ + {command = ["xwayland-satellite"];} + {command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];} + {command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];} + {command = ["vesktop"];} + {command = ["cider-2"];} + + {command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];} + ]; + + # Prefer server-side decorations + prefer-no-csd = true; + + # Screenshot path + screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; + # screenshot-path = null; # Alternative from KDL comments + + # Animation settings + animations = { + enable = true; # Not explicitly 'off' + # slowdown = 3.0; # Commented out + # Individual animation settings can be added here if needed + }; + + layer-rules = [ + { + matches = [ + {namespace = "notifications$";} + ]; + + block-out-from = "screen-capture"; + } + ]; + + # Window rules + window-rules = [ + # Password manager rule (example from KDL comments) + { + matches = [ + {app-id = "^org\\.keepassxc\\.KeePassXC$";} + {app-id = "^org\\.gnome\\.World\\.Secrets$";} + {app-id = "^1Password$";} + {app-id = "^thunderbird$";} + {app-id = "^signal$";} + {app-id = "^vesktop$";} + {app-id = "^slack$";} + ]; + block-out-from = "screen-capture"; + } + # Rounded corners rule (example from KDL comments) + { + # No matches means apply to all windows + geometry-corner-radius = { + top-left = 12.0; + top-right = 12.0; + bottom-left = 12.0; + bottom-right = 12.0; + }; + clip-to-geometry = true; + } + # Window cast target rule + { + matches = [{is-window-cast-target = true;}]; + focus-ring = { + active = mkColor colors.red.hex; + inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); + }; + shadow = { + # Only color is specified in KDL rule + color = "#7d0d2d70"; + }; + tab-indicator = { + active = mkColor colors.red.hex; + inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); + }; + } + + # fix steam popups holy fuck they're annoying + { + matches = [ + {app-id = "^steam$";} + ]; + + excludes = [{title = "^Steam$";}]; + + open-floating = true; + + open-focused = false; + + default-floating-position = { + relative-to = "bottom-right"; + x = 16; + y = 16; + }; + } + { + matches = [ + { + app-id = "^cyberpunk2077.exe$"; + } + { + app-id = "^Overwatch2.exe$"; + } + ]; + + variable-refresh-rate = true; + } + { + matches = [ + { + at-startup = true; + app-id = "^zen$"; + } + ]; + + open-maximized = true; + + open-on-workspace = "browser"; + } + { + matches = [ + { + at-startup = true; + app-id = "^spotify$"; + } + { + at-startup = true; + app-id = "^vesktop$"; + } + ]; + + open-on-workspace = "chat"; + } + { + matches = [ + { + at-startup = true; + app-id = "^Slack$"; + } + { + at-startup = true; + app-id = "^thunderbird$"; + } + ]; + + open-on-workspace = "work"; + } + ]; + + workspaces."01-browser" = { + name = "browser"; + }; + workspaces."02-code" = { + name = "code"; + }; + workspaces."03-chat" = { + name = "chat"; + }; + workspaces."04-work" = { + name = "work"; + }; + + # Keybindings + binds = + { + "Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;}; + + "Mod+Return" = {action = actions.spawn "kitty";}; + "Mod+D" = {action = actions.spawn "fuzzel";}; + "Super+Alt+L" = {action = actions.spawn "swaylock";}; + # "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; }; + + # "Mod+S" = {action = actions.set-dynamic-cast-window;}; + # + # "Mod+Shift+S" = {action = actions.set-dynamic-cast-monitor;}; + # + # "Mod+Z" = {action = actions.clear-dynamic-cast-target;}; + + "XF86AudioRaiseVolume" = { + allow-when-locked = true; + action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; + }; + "XF86AudioLowerVolume" = { + allow-when-locked = true; + action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; + }; + "XF86AudioMute" = { + allow-when-locked = true; + action = actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; + }; + "XF86AudioMicMute" = { + allow-when-locked = true; + action = + actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; + }; + + "Mod+Q" = {action = actions.close-window;}; + + "Mod+Left" = {action = actions.focus-column-left;}; + "Mod+Down" = {action = actions.focus-window-down;}; + "Mod+Up" = {action = actions.focus-window-up;}; + "Mod+Right" = {action = actions.focus-column-right;}; + "Mod+H" = {action = actions.focus-column-left;}; + "Mod+J" = {action = actions.focus-window-down;}; + "Mod+K" = {action = actions.focus-window-up;}; + "Mod+L" = {action = actions.focus-column-right;}; + + "Mod+Ctrl+Left" = {action = actions.move-column-left;}; + "Mod+Ctrl+Down" = {action = actions.move-window-down;}; + "Mod+Ctrl+Up" = {action = actions.move-window-up;}; + "Mod+Ctrl+Right" = {action = actions.move-column-right;}; + "Mod+Ctrl+H" = {action = actions.move-column-left;}; + "Mod+Ctrl+J" = {action = actions.move-window-down;}; + "Mod+Ctrl+K" = {action = actions.move-window-up;}; + "Mod+Ctrl+L" = {action = actions.move-column-right;}; + + # Alternative commands (commented out in KDL) + # "Mod+J" = { action = actions.focus-window-or-workspace-down; }; + # "Mod+K" = { action = actions.focus-window-or-workspace-up; }; + # "Mod+Ctrl+J" = { action = actions.move-window-down-or-to-workspace-down; }; + # "Mod+Ctrl+K" = { action = actions.move-window-up-or-to-workspace-up; }; + + "Mod+Home" = {action = actions.focus-column-first;}; + "Mod+End" = {action = actions.focus-column-last;}; + "Mod+Ctrl+Home" = {action = actions.move-column-to-first;}; + "Mod+Ctrl+End" = {action = actions.move-column-to-last;}; + + "Mod+Shift+Left" = {action = actions.focus-monitor-left;}; + "Mod+Shift+Down" = {action = actions.focus-monitor-down;}; + "Mod+Shift+Up" = {action = actions.focus-monitor-up;}; + "Mod+Shift+Right" = {action = actions.focus-monitor-right;}; + "Mod+Shift+H" = {action = actions.focus-monitor-left;}; + "Mod+Shift+J" = {action = actions.focus-workspace-down;}; + "Mod+Shift+K" = {action = actions.focus-workspace-up;}; + "Mod+Shift+L" = {action = actions.focus-monitor-right;}; + + "Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;}; + + "Mod+Shift+Ctrl+Left" = {action = actions.move-column-to-monitor-left;}; + "Mod+Shift+Ctrl+Down" = {action = actions.move-column-to-monitor-down;}; + "Mod+Shift+Ctrl+Up" = {action = actions.move-column-to-monitor-up;}; + "Mod+Shift+Ctrl+Right" = {action = actions.move-column-to-monitor-right;}; + "Mod+Shift+Ctrl+H" = {action = actions.move-column-to-monitor-left;}; + "Mod+Shift+Ctrl+J" = {action = actions.move-column-to-monitor-down;}; + "Mod+Shift+Ctrl+K" = {action = actions.move-column-to-monitor-up;}; + "Mod+Shift+Ctrl+L" = {action = actions.move-column-to-monitor-right;}; + + "Mod+Page_Down" = {action = actions.focus-workspace-down;}; + "Mod+Page_Up" = {action = actions.focus-workspace-up;}; + "Mod+U" = {action = actions.focus-workspace-down;}; + "Mod+I" = {action = actions.focus-workspace-up;}; + "Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;}; + "Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;}; + "Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;}; + "Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;}; + + "Mod+Shift+Page_Down" = {action = actions.move-workspace-down;}; + "Mod+Shift+Page_Up" = {action = actions.move-workspace-up;}; + "Mod+Shift+U" = {action = actions.move-workspace-down;}; + "Mod+Shift+I" = {action = actions.move-workspace-up;}; + + "Mod+WheelScrollDown" = { + cooldown-ms = 150; + action = actions.focus-workspace-down; + }; + "Mod+WheelScrollUp" = { + cooldown-ms = 150; + action = actions.focus-workspace-up; + }; + "Mod+Ctrl+WheelScrollDown" = { + cooldown-ms = 150; + action = actions.move-column-to-workspace-down; + }; + "Mod+Ctrl+WheelScrollUp" = { + cooldown-ms = 150; + action = actions.move-column-to-workspace-up; + }; + + "Mod+WheelScrollRight" = {action = actions.focus-column-right;}; + "Mod+WheelScrollLeft" = {action = actions.focus-column-left;}; + "Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;}; + "Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;}; + + "Mod+Shift+WheelScrollDown" = {action = actions.focus-column-right;}; + "Mod+Shift+WheelScrollUp" = {action = actions.focus-column-left;}; + "Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-column-right;}; + "Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-column-left;}; + + "Mod+Comma" = {action = actions.consume-window-into-column;}; + "Mod+Period" = {action = actions.expel-window-from-column;}; + + "Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;}; + "Mod+BracketRight" = {action = actions.consume-or-expel-window-right;}; + + "Mod+R" = {action = actions.switch-preset-column-width;}; + "Mod+Shift+R" = {action = actions.switch-preset-window-height;}; + "Mod+Ctrl+R" = {action = actions.reset-window-height;}; + "Mod+F" = {action = actions.maximize-column;}; + "Mod+Shift+F" = {action = actions.fullscreen-window;}; + "Mod+C" = {action = actions.center-column;}; + "Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;}; + + "Mod+V" = {action = actions.toggle-window-floating;}; + + "Mod+Minus" = {action = actions.set-column-width "-10%";}; + "Mod+Equal" = {action = actions.set-column-width "+10%";}; + + "Mod+Shift+Minus" = {action = actions.set-window-height "-10%";}; + "Mod+Shift+Equal" = {action = actions.set-window-height "+10%";}; + + "Print" = {action = actions.screenshot {};}; # Empty attrset for default args + "Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation + "Ctrl+Alt+Delete" = {action = actions.quit {};}; + + "Mod+Shift+P" = {action = actions.power-off-monitors;}; + } + // lib.attrsets.listToAttrs (builtins.concatMap (i: + with actions; [ + { + name = "Mod+${toString i}"; + value.action = focus-workspace i; + } + # FIXME: use this action directly untril sodiboo/niri-flake#1018 is fixed. + { + name = "Mod+Shift+${toString i}"; + value.action = spawn [niri "msg" "action" "move-column-to-workspace" (toString i)]; + } + ]) (lib.range 1 9)); + }; }; services.wallpaper.enable = true; diff --git a/modules/nixos/hardware/nvidia/default.nix b/modules/nixos/hardware/nvidia/default.nix index 3b362b5..ecb5651 100644 --- a/modules/nixos/hardware/nvidia/default.nix +++ b/modules/nixos/hardware/nvidia/default.nix @@ -43,14 +43,7 @@ in { nvidiaSettings = false; # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.mkDriver { - version = "580.82.07"; - sha256_64bit = "sha256-Bh5I4R/lUiMglYEdCxzqm3GLolQNYFB0/yJ/zgYoeYw="; - sha256_aarch64 = "sha256-or3//aV4TQcPDgcLxFB75H/kB8n+3RzwTO1C2ZbJAJI="; - openSha256 = "sha256-8/7ZrcwBMgrBtxebYtCcH5A51u3lAxXTCY00LElZz08="; - settingsSha256 = "sha256-lx1WZHsW7eKFXvi03dAML6BoC5glEn63Tuiz3T867nY="; - persistencedSha256 = "sha256-1JCk2T3H5NNFQum0gA9cnio31jc0pGvfGIn2KkAz9kA="; - }; + package = config.boot.kernelPackages.nvidiaPackages.stable; }; boot.initrd.kernelModules = ["nvidia"]; diff --git a/modules/nixos/protocols/wayland/default.nix b/modules/nixos/protocols/wayland/default.nix index f98739c..380f6e8 100644 --- a/modules/nixos/protocols/wayland/default.nix +++ b/modules/nixos/protocols/wayland/default.nix @@ -61,7 +61,9 @@ in { }; programs.niri.enable = true; - programs.niri.package = inputs.niri-src.packages.${pkgs.system}.niri; + programs.niri.package = inputs.niri-src.packages.${pkgs.system}.niri.overrideAttrs (final: prev: { + patches = prev.patches ++ [../../../../fix-niri-nvidia.patch]; + }); environment = { variables = { diff --git a/systems/x86_64-linux/earth/default.nix b/systems/x86_64-linux/earth/default.nix index f7b262b..9fdccbf 100644 --- a/systems/x86_64-linux/earth/default.nix +++ b/systems/x86_64-linux/earth/default.nix @@ -153,7 +153,7 @@ # services.scx.scheduler = "scx_rusty"; # services.scx.package = pkgs.scx_git.full; - boot.kernelPackages = pkgs.linuxPackages_zen; + boot.kernelPackages = pkgs.linuxPackages_cachyos-lto; # CachyOS-inspired kernel parameters for better desktop responsiveness and gaming boot.kernelParams = [ "nowatchdog"