diff --git a/flake.lock b/flake.lock index c32ad6c..0faf643 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1753590784, - "narHash": "sha256-Q30DFlPwD1ZK52TD4wSnqDO5gk9Kvifr923siI8AdVQ=", + "lastModified": 1754887838, + "narHash": "sha256-npC+H+Wl60EdrV75sjqm+bbbLbKgCCGn4ALSM0B2OWA=", "owner": "KZDKM", "repo": "Hyprspace", - "rev": "a847f1d6a7326395d17fe9b6b4ab63a10eb152eb", + "rev": "2b61fd2115262243b03aa9afe8dfd8a78e71636c", "type": "github" }, "original": { @@ -62,11 +62,11 @@ ] }, "locked": { - "lastModified": 1752743471, - "narHash": "sha256-4izhj1j7J4mE8LgljCXSIUDculqOsxxhdoC81VhqizM=", + "lastModified": 1753216019, + "narHash": "sha256-zik7WISrR1ks2l6T1MZqZHb/OqroHdJnSnAehkE0kCk=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "e31b575d19e7cf8a8f4398e2f9cffe27a1332506", + "rev": "be166e11d86ba4186db93e10c54a141058bdce49", "type": "github" }, "original": { @@ -84,11 +84,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1754907869, - "narHash": "sha256-tzshAAjt0xDjCc/aOgii6PSqePIc2rWYSXF8VnqEhIg=", + "lastModified": 1755119384, + "narHash": "sha256-2wIRUehzcbn3Q3CaXHTfE5bj0fSG6c+RLEeXOmk1Mg4=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "b5f83e0d7bce67af178f6aaef95853fedf4c00a0", + "rev": "99bb796d77a42ad265f9cebaf489f4e3468f50b8", "type": "github" }, "original": { @@ -120,11 +120,11 @@ ] }, "locked": { - "lastModified": 1753140376, - "narHash": "sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb+mYCodI5uuB8=", + "lastModified": 1754971456, + "narHash": "sha256-p04ZnIBGzerSyiY2dNGmookCldhldWAu03y0s3P8CB0=", "owner": "nix-community", "repo": "disko", - "rev": "545aba02960caa78a31bd9a8709a0ad4b6320a5c", + "rev": "8246829f2e675a46919718f9a64b71afe3bfb22d", "type": "github" }, "original": { @@ -142,11 +142,11 @@ ] }, "locked": { - "lastModified": 1753925620, - "narHash": "sha256-i39h2itBWoMgiKT0m5tf3/B+mUFk4m6/+GgTc4g3rsE=", + "lastModified": 1755083788, + "narHash": "sha256-CXiS6gfw0NH+luSpNhtRZjy4NqVFrmsYpoetu3N/fMk=", "owner": "nix-community", "repo": "flake-firefox-nightly", - "rev": "7d4349a2c46b51ed4712e66e0cb372d828bd92ae", + "rev": "523078b104590da5850a61dfe291650a6b49809c", "type": "github" }, "original": { @@ -173,11 +173,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -189,11 +189,11 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -237,11 +237,11 @@ "flake-compat_6": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -266,6 +266,22 @@ "type": "github" } }, + "flake-compat_8": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -295,11 +311,11 @@ ] }, "locked": { - "lastModified": 1753121425, - "narHash": "sha256-TVcTNvOeWWk1DXljFxVRp+E0tzG1LhrVjOGGoMHuXio=", + "lastModified": 1754487366, + "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "644e0fc48951a860279da645ba77fe4a6e814c5e", + "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", "type": "github" }, "original": { @@ -417,7 +433,7 @@ }, "flake-utils_5": { "inputs": { - "systems": "systems_8" + "systems": "systems_9" }, "locked": { "lastModified": 1731533236, @@ -437,16 +453,17 @@ "inputs": { "flake-compat": "flake-compat_2", "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable", + "nixpkgs-unstable": "nixpkgs-unstable", "zig": "zig", "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1753893528, - "narHash": "sha256-5oc0by3pe2KqJDbbkQP5R5u5ybx4Fj/5Ff8eAZ4yG6s=", + "lastModified": 1746806042, + "narHash": "sha256-Hx92i3f5IjHaWpReyCKvGdqG55bZFU3wxGzA3wv9VLA=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "d4c825186e4b80c3d95db4e5ccf8b7dcfc671197", + "rev": "7f9bb3c0e54f585e11259bc0c9064813d061929c", "type": "github" }, "original": { @@ -466,11 +483,11 @@ ] }, "locked": { - "lastModified": 1750779888, - "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", + "lastModified": 1754416808, + "narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", + "rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864", "type": "github" }, "original": { @@ -575,11 +592,31 @@ ] }, "locked": { - "lastModified": 1753888434, - "narHash": "sha256-xQhSeLJVsxxkwchE4s6v1CnOI6YegCqeA1fgk/ivVI4=", + "lastModified": 1754886238, + "narHash": "sha256-LTQomWOwG70lZR+78ZYSZ9sYELWNq3HJ7/tdHzfif/s=", "owner": "nix-community", "repo": "home-manager", - "rev": "0630790b31d4547d79ff247bc3ba1adda3a017d9", + "rev": "0d492b89d1993579e63b9dbdaed17fd7824834da", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1755121891, + "narHash": "sha256-UtYkukiGnPRJ5rpd4W/wFVrLMh8fqtNkqHTPgHEtrqU=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "279ca5addcdcfa31ac852b3ecb39fc372684f426", "type": "github" }, "original": { @@ -604,11 +641,11 @@ ] }, "locked": { - "lastModified": 1749155331, - "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=", + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", "type": "github" }, "original": { @@ -633,11 +670,40 @@ ] }, "locked": { - "lastModified": 1752149140, - "narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=", + "lastModified": 1754305013, + "narHash": "sha256-u+M2f0Xf1lVHzIPQ7DsNCDkM1NYxykOSsRr4t3TbSM4=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "340494a38b5ec453dfc542c6226481f736cc8a9a", + "rev": "4c1d63a0f22135db123fc789f174b89544c6ec2d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprgraphics_2": { + "inputs": { + "hyprutils": [ + "hyprlock", + "hyprutils" + ], + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ], + "systems": [ + "hyprlock", + "systems" + ] + }, + "locked": { + "lastModified": 1750621377, + "narHash": "sha256-8u6b5oAdX0rCuoR8wFenajBRmI+mzbpNig6hSCuWUzE=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "b3d628d01693fb9bb0a6690cd4e7b80abda04310", "type": "github" }, "original": { @@ -658,11 +724,11 @@ ] }, "locked": { - "lastModified": 1752219718, - "narHash": "sha256-P4tM0eom+p3XE+nqM+uI/s+nH15HfCGCaWOjfdUO1iI=", + "lastModified": 1755092449, + "narHash": "sha256-HVdEAFT1jJ96Gn+bPxq22CQBfUQeq/PYilLKqWcLMhE=", "owner": "horriblename", "repo": "hyprgrass", - "rev": "7dafd92afedda246a9c1c4187784c3fc1d6261e5", + "rev": "2b65ef7878b95e7c5f07e94f2ecf7450830532a2", "type": "github" }, "original": { @@ -687,11 +753,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1753917125, - "narHash": "sha256-AiLcR+4gVhJnJsO2fMEW83dMZbGPYs13d6S8yrbPXew=", + "lastModified": 1755071134, + "narHash": "sha256-jYxnXkjlVVa1lxg0lyBCvb34MLJham3+FEs3Wuo1TP8=", "ref": "refs/heads/main", - "rev": "3e35797b18d35baae82657bb0438af88156e273f", - "revCount": 6328, + "rev": "aa6a78f0a4e17c49ed4aff8b58c3f7ec7ef0408f", + "revCount": 6361, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -719,11 +785,11 @@ ] }, "locked": { - "lastModified": 1753894287, - "narHash": "sha256-yPeP6mY5Mdozji7xZBWYy6K166RcCuJgnOXxQt7vl3s=", + "lastModified": 1754935480, + "narHash": "sha256-GHN5Yq/zyexUkffW0tUPrGgHljlYfJZgzrxd/3S9ASI=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "bf310cda4a09b79725c2919688881959ebf3229e", + "rev": "984669ebb57f0d17f271598e82e1d2ab55296f20", "type": "github" }, "original": { @@ -812,11 +878,11 @@ ] }, "locked": { - "lastModified": 1750371812, - "narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=", + "lastModified": 1753819801, + "narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "b13c7481e37856f322177010bdf75fccacd1adc8", + "rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc", "type": "github" }, "original": { @@ -841,11 +907,11 @@ ] }, "locked": { - "lastModified": 1750371198, - "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=", + "lastModified": 1753622892, + "narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b", + "rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809", "type": "github" }, "original": { @@ -892,14 +958,14 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_5" + "systems": "systems_6" }, "locked": { - "lastModified": 1753964521, - "narHash": "sha256-hHTJ65uOiGqQgI2XbH9jqIGHUcA86K+GJbnhAKhRWNo=", + "lastModified": 1754413248, + "narHash": "sha256-d2C75Ij8JCuNwy6Vgq32Fe1iSrEOOnBnOX4JZJvtAFA=", "owner": "hyprwm", "repo": "hyprlock", - "rev": "bdf0ef82822a4c434b79c8d315518c9db9a10f34", + "rev": "347e05a40ec3bc48b3f21f44dea551d07773e214", "type": "github" }, "original": { @@ -918,14 +984,14 @@ "hyprland", "nixpkgs" ], - "systems": "systems_6" + "systems": "systems_7" }, "locked": { - "lastModified": 1752803880, - "narHash": "sha256-T25rxIWR2+PwrUBlFCLNHp5D0O3ec9Em+8lt+0yUb+8=", + "lastModified": 1754263431, + "narHash": "sha256-EmGvVOQcY/93SnoHL5OAsLI5ltvVrTeMu2pgeoc3Z/I=", "owner": "raybbian", "repo": "hyprtasking", - "rev": "c4e1fa4d0d125c2d3280040343c5e42e4f153a8b", + "rev": "a803c56cc2ae98b8bd3f7102388fae4826697927", "type": "github" }, "original": { @@ -946,11 +1012,36 @@ ] }, "locked": { - "lastModified": 1753800567, - "narHash": "sha256-W0xgXsaqGa/5/7IBzKNhf0+23MqGPymYYfqT7ECqeTE=", + "lastModified": 1754481650, + "narHash": "sha256-6u6HdEFJh5gY6VfyMQbhP7zDdVcqOrCDTkbiHJmAtMI=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "c65d41d4f4e6ded6fdb9d508a73e2fe90e55cdf7", + "rev": "df6b8820c4a0835d83d0c7c7be86fbc555f1f7fd", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprutils_2": { + "inputs": { + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ], + "systems": [ + "hyprlock", + "systems" + ] + }, + "locked": { + "lastModified": 1751061882, + "narHash": "sha256-g9n8Vrbx+2JYM170P9BbvGHN39Wlkr4U+V2WLHQsXL8=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "4737241eaf8a1e51671a2a088518071f9a265cf4", "type": "github" }, "original": { @@ -1063,11 +1154,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1753618592, - "narHash": "sha256-9sDACkrSbZOA1srKWQzvbkBFHZeXvHW8EYpWrVZPxDg=", + "lastModified": 1754828166, + "narHash": "sha256-i7c+fpXVsnvj2+63Gl3YfU1hVyxbLeqeFj55ZBZACWI=", "owner": "nix-community", "repo": "lib-aggregate", - "rev": "81b2f78680ca3864bfdc0d4cbc3444af3e1ff271", + "rev": "f01c8d121a3100230612be96e4ac668e15eafb77", "type": "github" }, "original": { @@ -1087,11 +1178,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1753917868, - "narHash": "sha256-khP5mhM320Uzu1lz0T2iVOFMdTdOFCsCW4ZOgQjBm4M=", + "lastModified": 1755112706, + "narHash": "sha256-8RiIwry9yHcbgRoHCvh7hnB+5bTSKOXXSbla1DUqYSU=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "76251f3ad50697027b37cfc602b847e24fb5834f", + "rev": "8b2a6a10e76f6c0c07c27c4abf0259e1a9ec2784", "type": "github" }, "original": { @@ -1103,11 +1194,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1753830218, - "narHash": "sha256-PpZUuVOB11MD7gNql5XIS/rEzbhkSmdODK+WUqDah6w=", + "lastModified": 1755040869, + "narHash": "sha256-vEzYYF+uaFAG0c5X18NmGPChYkRTYEI/i+5buZC1PnE=", "owner": "neovim", "repo": "neovim", - "rev": "1256daeead27722263614c1e57899dff6d802b98", + "rev": "35be59cc7b8d39f91b70aa57eaa09dc9b4636806", "type": "github" }, "original": { @@ -1146,11 +1237,11 @@ ] }, "locked": { - "lastModified": 1753589988, - "narHash": "sha256-y1JlcMB2dKFkrr6g+Ucmj8L//IY09BtSKTH/A7OU7mU=", + "lastModified": 1754800038, + "narHash": "sha256-UbLO8/0pVBXLJuyRizYOJigtzQAj8Z2bTnbKSec/wN0=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "f0736b09c43028fd726fb70c3eb3d1f0795454cf", + "rev": "b65f8d80656f9fcbd1fecc4b7f0730f468333142", "type": "github" }, "original": { @@ -1166,11 +1257,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1753928630, - "narHash": "sha256-ASqyvmJ2EEUCyDJGMHRQ1ZqWnCd4SiVd7hi7dGBuSvw=", + "lastModified": 1755137329, + "narHash": "sha256-9MxuOLH7jk58IVUUDWwLeqk9U4ATE6X37955Ld+4/zw=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "30af81148ee29a4a13c938c25d3e68877b1b27fb", + "rev": "d9330bc35048238597880e89fb173799de9db5e9", "type": "github" }, "original": { @@ -1199,24 +1290,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748189127, - "narHash": "sha256-zRDR+EbbeObu4V2X5QCd2Bk5eltfDlCr5yvhBwUT6pY=", - "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334", - "type": "tarball", - "url": "https://releases.nixos.org/nixos/25.05/nixos-25.05.802491.7c43f080a7f2/nixexprs.tar.xz" + "lastModified": 1755027561, + "narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "005433b926e16227259a1843015b5b2b7f7d1fc3", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://channels.nixos.org/nixos-25.05/nixexprs.tar.xz" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs-lib": { "locked": { - "lastModified": 1753579242, - "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", "type": "github" }, "original": { @@ -1226,6 +1320,22 @@ } }, "nixpkgs-stable": { + "locked": { + "lastModified": 1741992157, + "narHash": "sha256-nlIfTsTrMSksEJc1f7YexXiPVuzD1gOfeN1ggwZyUoc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "da4b122f63095ca1199bd4d526f9e26426697689", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { "locked": { "lastModified": 1730741070, "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", @@ -1241,45 +1351,45 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1752687322, - "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", - "owner": "NixOS", + "lastModified": 1741865919, + "narHash": "sha256-4thdbnP6dlbdq+qZWTsm4ffAwoS8Tiq1YResB+RP6WE=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", + "rev": "573c650e8a14b2faa0041645ab18aed7e60f0c9a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1753750875, - "narHash": "sha256-J1P0aQymehe8AHsID9wwoMjbaYrIB2eH5HftoXhF9xk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "871381d997e4a063f25a3994ce8a9ac595246610", - "type": "github" - }, - "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, + "nixpkgs_10": { + "locked": { + "lastModified": 1727348695, + "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { - "lastModified": 1752687322, - "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", + "lastModified": 1754725699, + "narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", + "rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", "type": "github" }, "original": { @@ -1291,11 +1401,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1753151930, - "narHash": "sha256-XSQy6wRKHhRe//iVY5lS/ZpI/Jn6crWI8fQzl647wCg=", + "lastModified": 1754990257, + "narHash": "sha256-eEq2wlYNF2t89PsNyEv5Sz4lSxdukZCj4SdhZBVAGpI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "83e677f31c84212343f4cc553bab85c2efcad60a", + "rev": "372d9eeeafa5b15913201e2b92e8e539ac7c64d1", "type": "github" }, "original": { @@ -1323,11 +1433,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1753694789, - "narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=", + "lastModified": 1755027561, + "narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dc9637876d0dcc8c9e5e22986b857632effeb727", + "rev": "005433b926e16227259a1843015b5b2b7f7d1fc3", "type": "github" }, "original": { @@ -1339,11 +1449,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1753694789, - "narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=", + "lastModified": 1755027561, + "narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dc9637876d0dcc8c9e5e22986b857632effeb727", + "rev": "005433b926e16227259a1843015b5b2b7f7d1fc3", "type": "github" }, "original": { @@ -1370,6 +1480,22 @@ } }, "nixpkgs_8": { + "locked": { + "lastModified": 1753934836, + "narHash": "sha256-G06FmIBj0I5bMW1Q8hAEIl5N7IHMK7+Ta4KA+BmneDA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "8679b16e11becd487b45d568358ddf9d5640d860", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { "locked": { "lastModified": 1752596105, "narHash": "sha256-lFNVsu/mHLq3q11MuGkMhUUoSXEdQjCHvpReaGP1S2k=", @@ -1395,11 +1521,11 @@ ] }, "locked": { - "lastModified": 1750779888, - "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", + "lastModified": 1754416808, + "narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", + "rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864", "type": "github" }, "original": { @@ -1419,7 +1545,7 @@ "lanzaboote", "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable" + "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { "lastModified": 1731363552, @@ -1439,6 +1565,7 @@ "inputs": { "Hyprspace": "Hyprspace", "actual-budget-api": "actual-budget-api", + "chaotic": "chaotic", "disko": "disko", "firefox": "firefox", "ghostty": "ghostty", @@ -1549,11 +1676,11 @@ "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1752544651, - "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", + "lastModified": 1754988908, + "narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=", "owner": "Mic92", "repo": "sops-nix", - "rev": "2c8def626f54708a9c38a5861866660395bb3461", + "rev": "3223c7a92724b5d804e9988c6b447a0d09017d48", "type": "github" }, "original": { @@ -1673,6 +1800,21 @@ } }, "systems_7": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_8": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1687,7 +1829,7 @@ "type": "github" } }, - "systems_8": { + "systems_9": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1710,11 +1852,11 @@ ] }, "locked": { - "lastModified": 1753772294, - "narHash": "sha256-8rkd13WfClfZUBIYpX5dvG3O9V9w3K9FPQ9rY14VtBE=", + "lastModified": 1754847726, + "narHash": "sha256-2vX8QjO5lRsDbNYvN9hVHXLU6oMl+V/PsmIiJREG4rE=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "6b9214fffbcf3f1e608efa15044431651635ca83", + "rev": "7d81f6fb2e19bf84f1c65135d1060d829fae2408", "type": "github" }, "original": { @@ -1751,11 +1893,11 @@ ] }, "locked": { - "lastModified": 1751300244, - "narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=", + "lastModified": 1753633878, + "narHash": "sha256-js2sLRtsOUA/aT10OCDaTjO80yplqwOIaLUqEe0nMx0=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a", + "rev": "371b96bd11ad2006ed4f21229dbd1be69bed3e8a", "type": "github" }, "original": { @@ -1767,15 +1909,15 @@ "yazi": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_8", - "rust-overlay": "rust-overlay_2" + "nixpkgs": "nixpkgs_9", + "rust-overlay": "rust-overlay_4" }, "locked": { - "lastModified": 1753894134, - "narHash": "sha256-krVLqRHpRG+qxjYuXgV3m1HzkJRRYJL7dtYvz655doo=", + "lastModified": 1755142006, + "narHash": "sha256-3PXLb+3tWkFh+eOe2wrgkxUXA+Ip4EOxoSdBQZGou/o=", "owner": "sxyazi", "repo": "yazi", - "rev": "da97e5a8b4580add8f5eb2f97f0fe80886becf06", + "rev": "2ec3a6c645324295331c0f2ef6d4d946cf11c06b", "type": "github" }, "original": { @@ -1805,8 +1947,7 @@ "zig": { "inputs": { "flake-compat": [ - "ghostty", - "flake-compat" + "ghostty" ], "flake-utils": [ "ghostty", @@ -1814,15 +1955,15 @@ ], "nixpkgs": [ "ghostty", - "nixpkgs" + "nixpkgs-stable" ] }, "locked": { - "lastModified": 1748261582, - "narHash": "sha256-3i0IL3s18hdDlbsf0/E+5kyPRkZwGPbSFngq5eToiAA=", + "lastModified": 1741825901, + "narHash": "sha256-aeopo+aXg5I2IksOPFN79usw7AeimH1+tjfuMzJHFdk=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "aafb1b093fb838f7a02613b719e85ec912914221", + "rev": "0b14285e283f5a747f372fb2931835dd937c4383", "type": "github" }, "original": { @@ -1839,7 +1980,7 @@ ], "nixpkgs": [ "ghostty", - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { @@ -1852,8 +1993,8 @@ }, "original": { "owner": "jcollie", + "ref": "56c159be489cc6c0e73c3930bd908ddc6fe89613", "repo": "zon2nix", - "rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613", "type": "github" } } diff --git a/flake.nix b/flake.nix index 1107539..0dd7e9e 100644 --- a/flake.nix +++ b/flake.nix @@ -91,6 +91,7 @@ }; chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + actual-budget-api = { url = "github:DACHXY/actual-budget-api"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/pkgs/options/dovecot.nix b/pkgs/options/dovecot.nix index a239ac8..6c55db8 100644 --- a/pkgs/options/dovecot.nix +++ b/pkgs/options/dovecot.nix @@ -81,15 +81,14 @@ let # Those settings are automatically set based on other parts # of this module. - automaticallySetPluginSettings = - [ - "sieve_plugins" - "sieve_extensions" - "sieve_global_extensions" - "sieve_pipe_bin_dir" - ] - ++ (builtins.attrNames sieveScriptSettings) - ++ (builtins.attrNames imapSieveMailboxSettings); + automaticallySetPluginSettings = [ + "sieve_plugins" + "sieve_extensions" + "sieve_global_extensions" + "sieve_pipe_bin_dir" + ] + ++ (builtins.attrNames sieveScriptSettings) + ++ (builtins.attrNames imapSieveMailboxSettings); # The idea is to match everything that looks like `$term =` # but not `# $term something something` @@ -702,38 +701,37 @@ in ); }; - users.users = - { - dovenull = { - uid = config.ids.uids.dovenull2; - description = "Dovecot user for untrusted logins"; - group = "dovenull"; - }; - } - // optionalAttrs (cfg.user == "dovecot") { - dovecot = { - uid = config.ids.uids.dovecot; - description = "Dovecot user"; - group = cfg.group; - }; - } - // optionalAttrs (cfg.createMailUser && cfg.mailUser != null) { - ${cfg.mailUser} = { - description = "Virtual Mail User"; - isSystemUser = true; - } // optionalAttrs (cfg.mailGroup != null) { group = cfg.mailGroup; }; + users.users = { + dovenull = { + uid = config.ids.uids.dovenull2; + description = "Dovecot user for untrusted logins"; + group = "dovenull"; }; + } + // optionalAttrs (cfg.user == "dovecot") { + dovecot = { + uid = config.ids.uids.dovecot; + description = "Dovecot user"; + group = cfg.group; + }; + } + // optionalAttrs (cfg.createMailUser && cfg.mailUser != null) { + ${cfg.mailUser} = { + description = "Virtual Mail User"; + isSystemUser = true; + } + // optionalAttrs (cfg.mailGroup != null) { group = cfg.mailGroup; }; + }; - users.groups = - { - dovenull.gid = config.ids.gids.dovenull2; - } - // optionalAttrs (cfg.group == "dovecot") { - dovecot.gid = config.ids.gids.dovecot; - } - // optionalAttrs (cfg.createMailUser && cfg.mailGroup != null) { - ${cfg.mailGroup} = { }; - }; + users.groups = { + dovenull.gid = config.ids.gids.dovenull2; + } + // optionalAttrs (cfg.group == "dovecot") { + dovecot.gid = config.ids.gids.dovecot; + } + // optionalAttrs (cfg.createMailUser && cfg.mailGroup != null) { + ${cfg.mailGroup} = { }; + }; environment.etc."dovecot/dovecot.conf".source = cfg.configFile; @@ -804,44 +802,43 @@ in # When copying sieve scripts preserve the original time stamp # (should be 0) so that the compiled sieve script is newer than # the source file and Dovecot won't try to compile it. - preStart = - '' - rm -rf ${stateDir}/sieve ${stateDir}/imapsieve - '' - + optionalString (cfg.sieve.scripts != { }) '' - mkdir -p ${stateDir}/sieve - ${concatStringsSep "\n" ( - mapAttrsToList (to: from: '' - if [ -d '${from}' ]; then - mkdir '${stateDir}/sieve/${to}' - cp -p "${from}/"*.sieve '${stateDir}/sieve/${to}' - else - cp -p '${from}' '${stateDir}/sieve/${to}' - fi - ${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/sieve/${to}' - '') cfg.sieve.scripts - )} - chown -R '${cfg.mailUser}:${cfg.mailGroup}' '${stateDir}/sieve' - '' - + optionalString (cfg.imapsieve.mailbox != [ ]) '' - mkdir -p ${stateDir}/imapsieve/{before,after} + preStart = '' + rm -rf ${stateDir}/sieve ${stateDir}/imapsieve + '' + + optionalString (cfg.sieve.scripts != { }) '' + mkdir -p ${stateDir}/sieve + ${concatStringsSep "\n" ( + mapAttrsToList (to: from: '' + if [ -d '${from}' ]; then + mkdir '${stateDir}/sieve/${to}' + cp -p "${from}/"*.sieve '${stateDir}/sieve/${to}' + else + cp -p '${from}' '${stateDir}/sieve/${to}' + fi + ${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/sieve/${to}' + '') cfg.sieve.scripts + )} + chown -R '${cfg.mailUser}:${cfg.mailGroup}' '${stateDir}/sieve' + '' + + optionalString (cfg.imapsieve.mailbox != [ ]) '' + mkdir -p ${stateDir}/imapsieve/{before,after} - ${concatMapStringsSep "\n" ( - el: - optionalString (el.before != null) '' - cp -p ${el.before} ${stateDir}/imapsieve/before/${baseNameOf el.before} - ${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/imapsieve/before/${baseNameOf el.before}' - '' - + optionalString (el.after != null) '' - cp -p ${el.after} ${stateDir}/imapsieve/after/${baseNameOf el.after} - ${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/imapsieve/after/${baseNameOf el.after}' - '' - ) cfg.imapsieve.mailbox} + ${concatMapStringsSep "\n" ( + el: + optionalString (el.before != null) '' + cp -p ${el.before} ${stateDir}/imapsieve/before/${baseNameOf el.before} + ${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/imapsieve/before/${baseNameOf el.before}' + '' + + optionalString (el.after != null) '' + cp -p ${el.after} ${stateDir}/imapsieve/after/${baseNameOf el.after} + ${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/imapsieve/after/${baseNameOf el.after}' + '' + ) cfg.imapsieve.mailbox} - ${optionalString ( - cfg.mailUser != null && cfg.mailGroup != null - ) "chown -R '${cfg.mailUser}:${cfg.mailGroup}' '${stateDir}/imapsieve'"} - ''; + ${optionalString ( + cfg.mailUser != null && cfg.mailGroup != null + ) "chown -R '${cfg.mailUser}:${cfg.mailGroup}' '${stateDir}/imapsieve'"} + ''; }; environment.systemPackages = [ dovecotPkg ]; diff --git a/system/dev/dn-server/default.nix b/system/dev/dn-server/default.nix index 82bb708..e0c01d9 100644 --- a/system/dev/dn-server/default.nix +++ b/system/dev/dn-server/default.nix @@ -2,7 +2,9 @@ pkgs, lib, inputs, + system, username, + config, ... }: let @@ -92,14 +94,14 @@ in caFile = "" + ../../extra/ca.crt; virtualMailDir = "/var/mail/vhosts"; domain = "net.dn"; - rootAlias = "${settings.personal.username}"; + rootAlias = "${username}"; networks = [ "127.0.0.0/8" "10.0.0.0/24" ]; virtual = '' - admin@net.dn ${settings.personal.username}@net.dn - postmaster@net.dn ${settings.personal.username}@net.dn + admin@net.dn ${username}@net.dn + postmaster@net.dn ${username}@net.dn ''; openFirewall = true; oauth = { @@ -120,7 +122,6 @@ in ../../../home/user/config.nix ../../../home/user/direnv.nix ../../../home/user/environment.nix - ../../../home/user/git.nix ../../../home/user/nvim.nix ../../../home/user/shell.nix ../../../home/user/tmux.nix diff --git a/system/modules/mail-server/server.nix b/system/modules/mail-server/server.nix index 07c1b14..5035371 100644 --- a/system/modules/mail-server/server.nix +++ b/system/modules/mail-server/server.nix @@ -40,12 +40,12 @@ let } ''; - dovecotDomain = config.services.postfix.hostname; + dovecotDomain = config.services.postfix.settings.main.myhostname; in { config = mkIf cfg.enable { security.acme.certs = { - "${config.services.postfix.hostname}" = { + "${config.services.postfix.settings.main.myhostname}" = { dnsProvider = null; webroot = "/var/lib/acme/acme-challenge"; postRun = '' @@ -74,11 +74,12 @@ in systemd.services.postfix = { requires = [ - "acme-finished-${config.services.postfix.hostname}.target" + "acme-finished-${config.services.postfix.settings.main.myhostname}.target" ]; serviceConfig.LoadCredential = let - certDir = config.security.acme.certs."${config.services.postfix.hostname}".directory; + certDir = + config.security.acme.certs."${config.services.postfix.settings.main.myhostname}".directory; in [ "cert.pem:${certDir}/cert.pem" @@ -88,28 +89,26 @@ in services.postfix = { enable = true; - hostname = "mail.${cfg.domain}"; - origin = cfg.origin; - destination = cfg.destination; - networks = cfg.networks; virtual = cfg.virtual; enableSubmissions = true; - relayPort = 465; - submissionOptions = { - milter_macro_daemon_name = "ORIGINATING"; - smtpd_client_restrictions = "permit_mynetworks, permit_sasl_authenticated, reject"; - smtpd_relay_restrictions = "permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination"; - smtpd_tls_security_level = "encrypt"; - smtpd_tls_loglevel = "10"; - }; - config = + settings.main = let credsDir = "/run/credentials/postfix.service"; certDir = "${credsDir}/cert.pem"; keyDir = "${credsDir}/key.pem"; in { + myhostname = "mail.${cfg.domain}"; + mynetworks = cfg.networks; + mydestination = cfg.destination; + myorigin = if cfg.origin == "" then cfg.domain else cfg.origin; + relayhost = [ "0.0.0.0:465" ]; + smtpd_tls_security_level = "encrypt"; + smtpd_client_restrictions = "permit_mynetworks, permit_sasl_authenticated, reject"; + smtpd_relay_restrictions = "permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination"; + milter_macro_daemon_name = "ORIGINATING"; + virtual_uid_maps = [ "static:${toString cfg.uid}" ]; @@ -308,7 +307,7 @@ in ssl = required service auth { - unix_listener ${config.services.postfix.config.queue_directory}/private/auth { + unix_listener ${config.services.postfix.settings.main.queue_directory}/private/auth { mode = 0660 user = ${config.services.postfix.user} group = ${config.services.postfix.group} @@ -317,7 +316,7 @@ in } service lmtp { - unix_listener ${config.services.postfix.config.queue_directory}/private/dovecot-lmtp { + unix_listener ${config.services.postfix.settings.main.queue_directory}/private/dovecot-lmtp { mode = 0660 user = ${config.services.postfix.user} group = ${config.services.postfix.group} @@ -600,7 +599,7 @@ in recommendedProxySettings = mkDefault true; virtualHosts = { - "${config.services.postfix.hostname}" = { + "${config.services.postfix.settings.main.myhostname}" = { enableACME = true; forceSSL = true; locations."/dovecot/ping".proxyPass = "http://localhost:${toString 5002}/ping";