summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_sources/generated.json36
-rw-r--r--_sources/generated.nix36
-rw-r--r--accounts/gkleen@sif/default.nix17
-rw-r--r--flake.lock66
-rw-r--r--hosts/surtr/email/default.nix42
-rw-r--r--overlays/etesync-dav.nix47
-rw-r--r--overlays/prometheus-lvm-exporter.nix2
-rw-r--r--overlays/spice-record.nix2
-rw-r--r--overlays/swayosd/default.nix2
-rw-r--r--system-profiles/nfsroot.nix2
10 files changed, 115 insertions, 137 deletions
diff --git a/_sources/generated.json b/_sources/generated.json
index ad09ec7c..4498b987 100644
--- a/_sources/generated.json
+++ b/_sources/generated.json
@@ -22,7 +22,7 @@
22 }, 22 },
23 "bpf-examples": { 23 "bpf-examples": {
24 "cargoLocks": null, 24 "cargoLocks": null,
25 "date": "2025-05-27", 25 "date": "2025-07-04",
26 "extract": null, 26 "extract": null,
27 "name": "bpf-examples", 27 "name": "bpf-examples",
28 "passthru": null, 28 "passthru": null,
@@ -34,12 +34,12 @@
34 "name": null, 34 "name": null,
35 "owner": "xdp-project", 35 "owner": "xdp-project",
36 "repo": "bpf-examples", 36 "repo": "bpf-examples",
37 "rev": "4fae19c659726963d5195ec124f01634620f0c71", 37 "rev": "588d0064f575e58878f27bfa7eb52e460150dc6a",
38 "sha256": "sha256-PKvknYKq/BYtzRvXZT4t76DdC794aj9uYXXE/tHtY2o=", 38 "sha256": "sha256-8wp2lfp7RQYmMJmHp0hzpCYQXj6hQXDIIKhpiCBYTt0=",
39 "sparseCheckout": [], 39 "sparseCheckout": [],
40 "type": "github" 40 "type": "github"
41 }, 41 },
42 "version": "4fae19c659726963d5195ec124f01634620f0c71" 42 "version": "588d0064f575e58878f27bfa7eb52e460150dc6a"
43 }, 43 },
44 "emacs-scratch_el": { 44 "emacs-scratch_el": {
45 "cargoLocks": null, 45 "cargoLocks": null,
@@ -327,11 +327,11 @@
327 "passthru": null, 327 "passthru": null,
328 "pinned": false, 328 "pinned": false,
329 "src": { 329 "src": {
330 "sha256": "sha256-Ooaj+5npHkgo4eoletkhFbGQL+1ScE+39MaL6bnp+yw=", 330 "sha256": "sha256-JDKt+MzxxyaFWnzuq/7FfT/JPUknH/RRw4Cb8XDOtlk=",
331 "type": "tarball", 331 "type": "tarball",
332 "url": "https://github.com/hansmi/prometheus-lvm-exporter/archive/refs/tags/v0.5.0.tar.gz" 332 "url": "https://github.com/hansmi/prometheus-lvm-exporter/archive/refs/tags/v0.6.0.tar.gz"
333 }, 333 },
334 "version": "0.5.0" 334 "version": "0.6.0"
335 }, 335 },
336 "psql-versioning": { 336 "psql-versioning": {
337 "cargoLocks": null, 337 "cargoLocks": null,
@@ -397,7 +397,7 @@
397 }, 397 },
398 "swayosd": { 398 "swayosd": {
399 "cargoLocks": null, 399 "cargoLocks": null,
400 "date": "2025-04-20", 400 "date": "2025-07-07",
401 "extract": null, 401 "extract": null,
402 "name": "swayosd", 402 "name": "swayosd",
403 "passthru": null, 403 "passthru": null,
@@ -407,13 +407,13 @@
407 "fetchSubmodules": false, 407 "fetchSubmodules": false,
408 "leaveDotGit": false, 408 "leaveDotGit": false,
409 "name": null, 409 "name": null,
410 "rev": "ce1f34d80a7f8b4393a5551ea0535bd8beabb28c", 410 "rev": "73aed75146b81aaf67c4301353790ff5a17aed1f",
411 "sha256": "sha256-Z9c/5jKxs5ctUuVu7g+BXA1Wy4lyZLpGATtj2jd84jI=", 411 "sha256": "sha256-p31HNelptAw7Sk0NmYP4FkoUCdA5uAsrXC20JJp24Vw=",
412 "sparseCheckout": [], 412 "sparseCheckout": [],
413 "type": "git", 413 "type": "git",
414 "url": "https://github.com/ErikReider/SwayOSD" 414 "url": "https://github.com/ErikReider/SwayOSD"
415 }, 415 },
416 "version": "ce1f34d80a7f8b4393a5551ea0535bd8beabb28c" 416 "version": "73aed75146b81aaf67c4301353790ff5a17aed1f"
417 }, 417 },
418 "tomorrow-night-paradise-theme": { 418 "tomorrow-night-paradise-theme": {
419 "cargoLocks": null, 419 "cargoLocks": null,
@@ -437,7 +437,7 @@
437 }, 437 },
438 "v4l2loopback": { 438 "v4l2loopback": {
439 "cargoLocks": null, 439 "cargoLocks": null,
440 "date": "2025-06-11", 440 "date": "2025-07-08",
441 "extract": null, 441 "extract": null,
442 "name": "v4l2loopback", 442 "name": "v4l2loopback",
443 "passthru": null, 443 "passthru": null,
@@ -449,12 +449,12 @@
449 "name": null, 449 "name": null,
450 "owner": "umlaeute", 450 "owner": "umlaeute",
451 "repo": "v4l2loopback", 451 "repo": "v4l2loopback",
452 "rev": "8219e4b00101dba8b6865108405cf656302a173d", 452 "rev": "e3fb6825ebb4bc6da2e15a515e24769d76c93332",
453 "sha256": "sha256-oaPhLQPM9zywRrEklZBC8Unz3gKfNwxin2ukh3ZCfbI=", 453 "sha256": "sha256-cgxdWuIwmNaOIYmMA1mEvC+1FQFhTGsffVv71md5yXo=",
454 "sparseCheckout": [], 454 "sparseCheckout": [],
455 "type": "github" 455 "type": "github"
456 }, 456 },
457 "version": "8219e4b00101dba8b6865108405cf656302a173d" 457 "version": "e3fb6825ebb4bc6da2e15a515e24769d76c93332"
458 }, 458 },
459 "xcompose": { 459 "xcompose": {
460 "cargoLocks": null, 460 "cargoLocks": null,
@@ -486,10 +486,10 @@
486 "pinned": false, 486 "pinned": false,
487 "src": { 487 "src": {
488 "name": null, 488 "name": null,
489 "sha256": "sha256-dR9To7YTU1Ir+AX6MLvL0WZmEmU345cG6rT4w2jxEaw=", 489 "sha256": "sha256-bQroVcClW/zCjf+6gE7IUlublV00pBGRoVYaTOwD2L0=",
490 "type": "url", 490 "type": "url",
491 "url": "https://pypi.org/packages/source/y/yt_dlp/yt_dlp-2025.6.9.tar.gz" 491 "url": "https://pypi.org/packages/source/y/yt_dlp/yt_dlp-2025.6.30.tar.gz"
492 }, 492 },
493 "version": "2025.6.9" 493 "version": "2025.6.30"
494 } 494 }
495} \ No newline at end of file 495} \ No newline at end of file
diff --git a/_sources/generated.nix b/_sources/generated.nix
index a912f452..f470ad9e 100644
--- a/_sources/generated.nix
+++ b/_sources/generated.nix
@@ -18,15 +18,15 @@
18 }; 18 };
19 bpf-examples = { 19 bpf-examples = {
20 pname = "bpf-examples"; 20 pname = "bpf-examples";
21 version = "4fae19c659726963d5195ec124f01634620f0c71"; 21 version = "588d0064f575e58878f27bfa7eb52e460150dc6a";
22 src = fetchFromGitHub { 22 src = fetchFromGitHub {
23 owner = "xdp-project"; 23 owner = "xdp-project";
24 repo = "bpf-examples"; 24 repo = "bpf-examples";
25 rev = "4fae19c659726963d5195ec124f01634620f0c71"; 25 rev = "588d0064f575e58878f27bfa7eb52e460150dc6a";
26 fetchSubmodules = true; 26 fetchSubmodules = true;
27 sha256 = "sha256-PKvknYKq/BYtzRvXZT4t76DdC794aj9uYXXE/tHtY2o="; 27 sha256 = "sha256-8wp2lfp7RQYmMJmHp0hzpCYQXj6hQXDIIKhpiCBYTt0=";
28 }; 28 };
29 date = "2025-05-27"; 29 date = "2025-07-04";
30 }; 30 };
31 emacs-scratch_el = { 31 emacs-scratch_el = {
32 pname = "emacs-scratch_el"; 32 pname = "emacs-scratch_el";
@@ -196,10 +196,10 @@
196 }; 196 };
197 prometheus-lvm-exporter = { 197 prometheus-lvm-exporter = {
198 pname = "prometheus-lvm-exporter"; 198 pname = "prometheus-lvm-exporter";
199 version = "0.5.0"; 199 version = "0.6.0";
200 src = fetchTarball { 200 src = fetchTarball {
201 url = "https://github.com/hansmi/prometheus-lvm-exporter/archive/refs/tags/v0.5.0.tar.gz"; 201 url = "https://github.com/hansmi/prometheus-lvm-exporter/archive/refs/tags/v0.6.0.tar.gz";
202 sha256 = "sha256-Ooaj+5npHkgo4eoletkhFbGQL+1ScE+39MaL6bnp+yw="; 202 sha256 = "sha256-JDKt+MzxxyaFWnzuq/7FfT/JPUknH/RRw4Cb8XDOtlk=";
203 }; 203 };
204 }; 204 };
205 psql-versioning = { 205 psql-versioning = {
@@ -242,17 +242,17 @@
242 }; 242 };
243 swayosd = { 243 swayosd = {
244 pname = "swayosd"; 244 pname = "swayosd";
245 version = "ce1f34d80a7f8b4393a5551ea0535bd8beabb28c"; 245 version = "73aed75146b81aaf67c4301353790ff5a17aed1f";
246 src = fetchgit { 246 src = fetchgit {
247 url = "https://github.com/ErikReider/SwayOSD"; 247 url = "https://github.com/ErikReider/SwayOSD";
248 rev = "ce1f34d80a7f8b4393a5551ea0535bd8beabb28c"; 248 rev = "73aed75146b81aaf67c4301353790ff5a17aed1f";
249 fetchSubmodules = false; 249 fetchSubmodules = false;
250 deepClone = false; 250 deepClone = false;
251 leaveDotGit = false; 251 leaveDotGit = false;
252 sparseCheckout = [ ]; 252 sparseCheckout = [ ];
253 sha256 = "sha256-Z9c/5jKxs5ctUuVu7g+BXA1Wy4lyZLpGATtj2jd84jI="; 253 sha256 = "sha256-p31HNelptAw7Sk0NmYP4FkoUCdA5uAsrXC20JJp24Vw=";
254 }; 254 };
255 date = "2025-04-20"; 255 date = "2025-07-07";
256 }; 256 };
257 tomorrow-night-paradise-theme = { 257 tomorrow-night-paradise-theme = {
258 pname = "tomorrow-night-paradise-theme"; 258 pname = "tomorrow-night-paradise-theme";
@@ -270,15 +270,15 @@
270 }; 270 };
271 v4l2loopback = { 271 v4l2loopback = {
272 pname = "v4l2loopback"; 272 pname = "v4l2loopback";
273 version = "8219e4b00101dba8b6865108405cf656302a173d"; 273 version = "e3fb6825ebb4bc6da2e15a515e24769d76c93332";
274 src = fetchFromGitHub { 274 src = fetchFromGitHub {
275 owner = "umlaeute"; 275 owner = "umlaeute";
276 repo = "v4l2loopback"; 276 repo = "v4l2loopback";
277 rev = "8219e4b00101dba8b6865108405cf656302a173d"; 277 rev = "e3fb6825ebb4bc6da2e15a515e24769d76c93332";
278 fetchSubmodules = true; 278 fetchSubmodules = true;
279 sha256 = "sha256-oaPhLQPM9zywRrEklZBC8Unz3gKfNwxin2ukh3ZCfbI="; 279 sha256 = "sha256-cgxdWuIwmNaOIYmMA1mEvC+1FQFhTGsffVv71md5yXo=";
280 }; 280 };
281 date = "2025-06-11"; 281 date = "2025-07-08";
282 }; 282 };
283 xcompose = { 283 xcompose = {
284 pname = "xcompose"; 284 pname = "xcompose";
@@ -294,10 +294,10 @@
294 }; 294 };
295 yt-dlp = { 295 yt-dlp = {
296 pname = "yt-dlp"; 296 pname = "yt-dlp";
297 version = "2025.6.9"; 297 version = "2025.6.30";
298 src = fetchurl { 298 src = fetchurl {
299 url = "https://pypi.org/packages/source/y/yt_dlp/yt_dlp-2025.6.9.tar.gz"; 299 url = "https://pypi.org/packages/source/y/yt_dlp/yt_dlp-2025.6.30.tar.gz";
300 sha256 = "sha256-dR9To7YTU1Ir+AX6MLvL0WZmEmU345cG6rT4w2jxEaw="; 300 sha256 = "sha256-bQroVcClW/zCjf+6gE7IUlublV00pBGRoVYaTOwD2L0=";
301 }; 301 };
302 }; 302 };
303} 303}
diff --git a/accounts/gkleen@sif/default.nix b/accounts/gkleen@sif/default.nix
index 706eb241..a1a694ea 100644
--- a/accounts/gkleen@sif/default.nix
+++ b/accounts/gkleen@sif/default.nix
@@ -172,6 +172,7 @@ in {
172 }; 172 };
173 }; 173 };
174 }; 174 };
175 chromium.enable = true;
175 176
176 zathura = { 177 zathura = {
177 enable = true; 178 enable = true;
@@ -509,14 +510,14 @@ in {
509 wrappedYTMDesktop libsForQt5.qt5ct playerctl evince papers 510 wrappedYTMDesktop libsForQt5.qt5ct playerctl evince papers
510 thunderbird zoom-us xdg-desktop-portal steam steam-run 511 thunderbird zoom-us xdg-desktop-portal steam steam-run
511 wireshark virt-manager rclone cached-nix-shell worktime 512 wireshark virt-manager rclone cached-nix-shell worktime
512 fira-code-symbols libreoffice xournalpp google-chrome 513 fira-code-symbols libreoffice xournalpp
513 nixos-shell virt-viewer freerdp gnome-icon-theme 514 nixos-shell virt-viewer freerdp gnome-icon-theme
514 paper-icon-theme sshpassSecret weechat element-desktop 515 paper-icon-theme sshpassSecret weechat element-desktop
515 sieve-connect gimp3 inkscape udiskie glab nitrokey-app 516 sieve-connect gimp3 inkscape udiskie glab nitrokey-app
516 pynitrokey gtklock wlrctl remmina openscad spice-record 517 pynitrokey gtklock wlrctl remmina openscad spice-record
517 libguestfs-with-appliance nerd-fonts.fira-mono 518 libguestfs-with-appliance nerd-fonts.fira-mono
518 nerd-fonts.symbols-only nerd-fonts.fira-code powerline-fonts 519 nerd-fonts.symbols-only nerd-fonts.fira-code powerline-fonts
519 swtpm (hunspellWithDicts (with hunspellDicts; [en_GB-large de_DE])) 520 swtpm (hunspell.withDicts (dicts: with dicts; [en_GB-large de_DE]))
520 libation libqalculate 521 libation libqalculate
521 ] ++ mapAttrsToList (_name: pkg: pkgs.callPackage pkg {}) (customUtils.nixImport { dir = ./utils; }); 522 ] ++ mapAttrsToList (_name: pkg: pkgs.callPackage pkg {}) (customUtils.nixImport { dir = ./utils; });
522 523
@@ -695,10 +696,10 @@ in {
695 ${lib.getExe' config.systemd.package "systemd-run"} --wait --user --slice-inherit \ 696 ${lib.getExe' config.systemd.package "systemd-run"} --wait --user --slice-inherit \
696 --property 'CPUAccounting=yes' --property 'CPUQuotaPeriodSec=50ms' \ 697 --property 'CPUAccounting=yes' --property 'CPUQuotaPeriodSec=50ms' \
697 -E DSCP=46 -E NIXOS_OZONE_WL \ 698 -E DSCP=46 -E NIXOS_OZONE_WL \
698 -- ${lib.getExe pkgs.dscp} ${lib.getExe' pkgs.google-chrome "google-chrome-stable"} \ 699 -- ${lib.getExe pkgs.dscp} ${lib.getExe cfg.programs.chromium.package} \
699 --class=Rainbow \ 700 --class=Rainbow \
700 --app="https://web.openrainbow.com" \ 701 --app="https://web.openrainbow.com" \
701 --user-data-dir=''${HOME}/.config/google-chrome-rainbow 702 --user-data-dir=''${HOME}/.config/chromium-rainbow
702 ''); 703 '');
703 icon = pkgs.fetchurl { 704 icon = pkgs.fetchurl {
704 url = "https://web.openrainbow.com/rb/2.139.17/assets/skins/rainbow/images/homepage/logo__rainbow.svg"; 705 url = "https://web.openrainbow.com/rb/2.139.17/assets/skins/rainbow/images/homepage/logo__rainbow.svg";
@@ -712,10 +713,10 @@ in {
712 name = "Kimai"; 713 name = "Kimai";
713 exec = toString (pkgs.writeShellScript "kimai" '' 714 exec = toString (pkgs.writeShellScript "kimai" ''
714 exec -- \ 715 exec -- \
715 ${lib.getExe' pkgs.google-chrome "google-chrome-stable"} \ 716 ${lib.getExe cfg.programs.chromium.package} \
716 --class=Kimai \ 717 --class=Kimai \
717 --app="https://kimai.yggdrasil.li" \ 718 --app="https://kimai.yggdrasil.li" \
718 --user-data-dir=''${HOME}/.config/google-chrome-kimai 719 --user-data-dir=''${HOME}/.config/chromium-kimai
719 ''); 720 '');
720 icon = pkgs.fetchurl { 721 icon = pkgs.fetchurl {
721 url = "https://www.kimai.org/images/kimai_logo.png"; 722 url = "https://www.kimai.org/images/kimai_logo.png";
@@ -730,10 +731,10 @@ in {
730 name = "Audiobookshelf"; 731 name = "Audiobookshelf";
731 exec = toString (pkgs.writeShellScript "audiobookshelf" '' 732 exec = toString (pkgs.writeShellScript "audiobookshelf" ''
732 exec -- \ 733 exec -- \
733 ${lib.getExe' pkgs.google-chrome "google-chrome-stable"} \ 734 ${lib.getExe cfg.programs.chromium.package} \
734 --class=Audiobookshelf \ 735 --class=Audiobookshelf \
735 --app="https://audiobookshelf.yggdrasil.li" \ 736 --app="https://audiobookshelf.yggdrasil.li" \
736 --user-data-dir=''${HOME}/.config/google-chrome-audiobookshelf 737 --user-data-dir=''${HOME}/.config/chromium-audiobookshelf
737 ''); 738 '');
738 icon = pkgs.fetchurl { 739 icon = pkgs.fetchurl {
739 url = "https://www.audiobookshelf.org/Logo.png"; 740 url = "https://www.audiobookshelf.org/Logo.png";
diff --git a/flake.lock b/flake.lock
index e4c3a97c..404d81b6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -407,11 +407,11 @@
407 "xwayland-satellite-unstable": "xwayland-satellite-unstable" 407 "xwayland-satellite-unstable": "xwayland-satellite-unstable"
408 }, 408 },
409 "locked": { 409 "locked": {
410 "lastModified": 1750735687, 410 "lastModified": 1752078530,
411 "narHash": "sha256-pscxcZpLGcEEJGVjFAM7X77cARABc7M+zVyUN6qsEmU=", 411 "narHash": "sha256-TrRmlYdhWcadWvBpDjB9Xlry4uT4ZUIO46d+o5tjtCQ=",
412 "owner": "sodiboo", 412 "owner": "sodiboo",
413 "repo": "niri-flake", 413 "repo": "niri-flake",
414 "rev": "a581a91b7406a0b9039ef22e37e5166bd3b1a139", 414 "rev": "d231d92313192d4d0c78d6ef04167fed9dee87cf",
415 "type": "github" 415 "type": "github"
416 }, 416 },
417 "original": { 417 "original": {
@@ -441,11 +441,11 @@
441 "niri-unstable": { 441 "niri-unstable": {
442 "flake": false, 442 "flake": false,
443 "locked": { 443 "locked": {
444 "lastModified": 1750684365, 444 "lastModified": 1750791124,
445 "narHash": "sha256-BqtoSRCgmutJXnQFZs+KFMNvp3LuX6POIHjXIxWdlTE=", 445 "narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=",
446 "owner": "YaLTeR", 446 "owner": "YaLTeR",
447 "repo": "niri", 447 "repo": "niri",
448 "rev": "4c02f3bba451747c3f337f4c131b0c7f9ef41bb7", 448 "rev": "37458d94b288945f6cfbd3c5c233f634d59f246c",
449 "type": "github" 449 "type": "github"
450 }, 450 },
451 "original": { 451 "original": {
@@ -482,11 +482,11 @@
482 ] 482 ]
483 }, 483 },
484 "locked": { 484 "locked": {
485 "lastModified": 1750565152, 485 "lastModified": 1751774635,
486 "narHash": "sha256-A6ZIoIgaPPkzIVxKuaxwEJicPOeTwC/MD9iuC3FVhDM=", 486 "narHash": "sha256-DuOznGdgMxeSlPpUu6Wkq0ZD5e2Cfv9XRZeZlHWMd1s=",
487 "owner": "Mic92", 487 "owner": "Mic92",
488 "repo": "nix-index-database", 488 "repo": "nix-index-database",
489 "rev": "78cd697acc2e492b4e92822a4913ffad279c20e6", 489 "rev": "85686025ba6d18df31cc651a91d5adef63378978",
490 "type": "github" 490 "type": "github"
491 }, 491 },
492 "original": { 492 "original": {
@@ -539,11 +539,11 @@
539 }, 539 },
540 "nixos-hardware": { 540 "nixos-hardware": {
541 "locked": { 541 "locked": {
542 "lastModified": 1750431636, 542 "lastModified": 1752048960,
543 "narHash": "sha256-vnzzBDbCGvInmfn2ijC4HsIY/3W1CWbwS/YQoFgdgPg=", 543 "narHash": "sha256-gATnkOe37eeVwKKYCsL+OnS2gU4MmLuZFzzWCtaKLI8=",
544 "owner": "NixOS", 544 "owner": "NixOS",
545 "repo": "nixos-hardware", 545 "repo": "nixos-hardware",
546 "rev": "1552a9f4513f3f0ceedcf90320e48d3d47165712", 546 "rev": "7ced9122cff2163c6a0212b8d1ec8c33a1660806",
547 "type": "github" 547 "type": "github"
548 }, 548 },
549 "original": { 549 "original": {
@@ -664,11 +664,11 @@
664 }, 664 },
665 "nixpkgs-stable_2": { 665 "nixpkgs-stable_2": {
666 "locked": { 666 "locked": {
667 "lastModified": 1750622754, 667 "lastModified": 1751943650,
668 "narHash": "sha256-kMhs+YzV4vPGfuTpD3mwzibWUE6jotw5Al2wczI0Pv8=", 668 "narHash": "sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4+f9C1mZQ=",
669 "owner": "NixOS", 669 "owner": "NixOS",
670 "repo": "nixpkgs", 670 "repo": "nixpkgs",
671 "rev": "c7ab75210cb8cb16ddd8f290755d9558edde7ee1", 671 "rev": "88983d4b665fb491861005137ce2b11a9f89f203",
672 "type": "github" 672 "type": "github"
673 }, 673 },
674 "original": { 674 "original": {
@@ -712,11 +712,11 @@
712 }, 712 },
713 "nixpkgs_2": { 713 "nixpkgs_2": {
714 "locked": { 714 "locked": {
715 "lastModified": 1750506804, 715 "lastModified": 1751984180,
716 "narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=", 716 "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
717 "owner": "NixOS", 717 "owner": "NixOS",
718 "repo": "nixpkgs", 718 "repo": "nixpkgs",
719 "rev": "4206c4cb56751df534751b058295ea61357bbbaa", 719 "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
720 "type": "github" 720 "type": "github"
721 }, 721 },
722 "original": { 722 "original": {
@@ -950,11 +950,11 @@
950 ] 950 ]
951 }, 951 },
952 "locked": { 952 "locked": {
953 "lastModified": 1750499893, 953 "lastModified": 1751557494,
954 "narHash": "sha256-ThKBd8XSvITAh2JqU7enOp8AfKeQgf9u7zYC41cnBE4=", 954 "narHash": "sha256-dnueIffmEKtG0V4feifalsOYaHXXsrGMaoKI+4O7v/8=",
955 "owner": "pyproject-nix", 955 "owner": "pyproject-nix",
956 "repo": "pyproject.nix", 956 "repo": "pyproject.nix",
957 "rev": "e824458bd917b44bf4c38795dea2650336b2f55d", 957 "rev": "939ef94aea81c17bfd2f388465309eab76c45c37",
958 "type": "github" 958 "type": "github"
959 }, 959 },
960 "original": { 960 "original": {
@@ -1000,11 +1000,11 @@
1000 ] 1000 ]
1001 }, 1001 },
1002 "locked": { 1002 "locked": {
1003 "lastModified": 1750119275, 1003 "lastModified": 1751606940,
1004 "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=", 1004 "narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=",
1005 "owner": "Mic92", 1005 "owner": "Mic92",
1006 "repo": "sops-nix", 1006 "repo": "sops-nix",
1007 "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2", 1007 "rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d",
1008 "type": "github" 1008 "type": "github"
1009 }, 1009 },
1010 "original": { 1010 "original": {
@@ -1075,11 +1075,11 @@
1075 ] 1075 ]
1076 }, 1076 },
1077 "locked": { 1077 "locked": {
1078 "lastModified": 1749778965, 1078 "lastModified": 1752195249,
1079 "narHash": "sha256-MDq5YPXq3VO7aGrIIz9IMexJcdRiLCcDK4Bk3Kev7Sw=", 1079 "narHash": "sha256-xJ4P6Ekm1tQTtUHboca+vqosXQZHPCDTYOq/HfZ6o1M=",
1080 "owner": "pyproject-nix", 1080 "owner": "pyproject-nix",
1081 "repo": "uv2nix", 1081 "repo": "uv2nix",
1082 "rev": "22ddf88e3a06551b769f0a585601d89180c69a38", 1082 "rev": "06b039bb2fa0bc57ac6e611e05de70d36bb1af8b",
1083 "type": "github" 1083 "type": "github"
1084 }, 1084 },
1085 "original": { 1085 "original": {
@@ -1098,11 +1098,11 @@
1098 ] 1098 ]
1099 }, 1099 },
1100 "locked": { 1100 "locked": {
1101 "lastModified": 1747383113, 1101 "lastModified": 1752562190,
1102 "narHash": "sha256-/YW7eOKU3gsNplxvUDpEj1LiXtcCENSFpS1c8kXSDWw=", 1102 "narHash": "sha256-zWOMCNe56H2PHUd3rJZ6tklZUZBLgRo85jd9IlK1g9o=",
1103 "owner": "gkleen", 1103 "owner": "gkleen",
1104 "repo": "Waybar", 1104 "repo": "Waybar",
1105 "rev": "919036587381595f15010ac95644992fe6d7343d", 1105 "rev": "d008cd998369c40f2344a856caf39cdbbd7bd068",
1106 "type": "github" 1106 "type": "github"
1107 }, 1107 },
1108 "original": { 1108 "original": {
@@ -1132,11 +1132,11 @@
1132 "xwayland-satellite-unstable": { 1132 "xwayland-satellite-unstable": {
1133 "flake": false, 1133 "flake": false,
1134 "locked": { 1134 "locked": {
1135 "lastModified": 1750686869, 1135 "lastModified": 1751228685,
1136 "narHash": "sha256-FS/rYXd96VBtKNJRTV2xTpTk8CgrYP+lFsFj0+VKgoY=", 1136 "narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=",
1137 "owner": "Supreeeme", 1137 "owner": "Supreeeme",
1138 "repo": "xwayland-satellite", 1138 "repo": "xwayland-satellite",
1139 "rev": "117af56a83e2d1d25016fbd504a2a040babe586a", 1139 "rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b",
1140 "type": "github" 1140 "type": "github"
1141 }, 1141 },
1142 "original": { 1142 "original": {
diff --git a/hosts/surtr/email/default.nix b/hosts/surtr/email/default.nix
index 2879c4a6..fa7ddac6 100644
--- a/hosts/surtr/email/default.nix
+++ b/hosts/surtr/email/default.nix
@@ -261,7 +261,7 @@ in {
261 virtual_transport = "dvlmtp:unix:/run/dovecot-lmtp"; 261 virtual_transport = "dvlmtp:unix:/run/dovecot-lmtp";
262 smtputf8_enable = false; 262 smtputf8_enable = false;
263 263
264 authorized_submit_users = "inline:{ root= postfwd= dovecot2= }"; 264 authorized_submit_users = "inline:{ root= postfwd= ${config.services.dovecot2.user}= }";
265 authorized_flush_users = "inline:{ root= }"; 265 authorized_flush_users = "inline:{ root= }";
266 authorized_mailq_users = "inline:{ root= }"; 266 authorized_mailq_users = "inline:{ root= }";
267 267
@@ -503,7 +503,7 @@ in {
503 }; 503 };
504 }; 504 };
505 505
506 users.groups.${config.services.rspamd.group}.members = [ config.services.postfix.user "dovecot2" ]; 506 users.groups.${config.services.rspamd.group}.members = [ config.services.postfix.user config.services.dovecot2.user ];
507 507
508 services.redis.servers.rspamd.enable = true; 508 services.redis.servers.rspamd.enable = true;
509 509
@@ -513,8 +513,8 @@ in {
513 services.dovecot2 = { 513 services.dovecot2 = {
514 enable = true; 514 enable = true;
515 enablePAM = false; 515 enablePAM = false;
516 sslServerCert = "/run/credentials/dovecot2.service/surtr.yggdrasil.li.pem"; 516 sslServerCert = "/run/credentials/dovecot.service/surtr.yggdrasil.li.pem";
517 sslServerKey = "/run/credentials/dovecot2.service/surtr.yggdrasil.li.key.pem"; 517 sslServerKey = "/run/credentials/dovecot.service/surtr.yggdrasil.li.key.pem";
518 sslCACert = toString ./ca/ca.crt; 518 sslCACert = toString ./ca/ca.crt;
519 mailLocation = "maildir:/var/lib/mail/%u/maildir:UTF-8:INDEX=/var/lib/dovecot/indices/%u"; 519 mailLocation = "maildir:/var/lib/mail/%u/maildir:UTF-8:INDEX=/var/lib/dovecot/indices/%u";
520 mailPlugins.globally.enable = [ "fts" "fts_xapian" ]; 520 mailPlugins.globally.enable = [ "fts" "fts_xapian" ];
@@ -527,8 +527,8 @@ in {
527 dovecotSqlConf = pkgs.writeText "dovecot-sql.conf" '' 527 dovecotSqlConf = pkgs.writeText "dovecot-sql.conf" ''
528 driver = pgsql 528 driver = pgsql
529 connect = dbname=email 529 connect = dbname=email
530 password_query = SELECT (CASE WHEN '%k' = 'valid' AND '%m' = 'EXTERNAL' THEN NULL ELSE "password" END) as password, (CASE WHEN '%k' = 'valid' AND '%m' = 'EXTERNAL' THEN true WHEN password IS NULL THEN true ELSE NULL END) as nopassword, "user", quota_rule, 'dovecot2' as uid, 'dovecot2' as gid FROM imap_user WHERE "user" = '%n' 530 password_query = SELECT (CASE WHEN '%k' = 'valid' AND '%m' = 'EXTERNAL' THEN NULL ELSE "password" END) as password, (CASE WHEN '%k' = 'valid' AND '%m' = 'EXTERNAL' THEN true WHEN password IS NULL THEN true ELSE NULL END) as nopassword, "user", quota_rule, '${config.services.dovecot2.user}' as uid, '${config.services.dovecot2.group}' as gid FROM imap_user WHERE "user" = '%n'
531 user_query = SELECT "user", quota_rule, 'dovecot2' as uid, 'dovecot2' as gid FROM imap_user WHERE "user" = '%n' 531 user_query = SELECT "user", quota_rule, '${config.services.dovecot2.user}' as uid, 'dovecot2' as gid FROM imap_user WHERE "user" = '%n'
532 iterate_query = SELECT "user" FROM imap_user 532 iterate_query = SELECT "user" FROM imap_user
533 ''; 533 '';
534 in '' 534 in ''
@@ -536,16 +536,16 @@ in {
536 536
537 mail_plugins = $mail_plugins quota 537 mail_plugins = $mail_plugins quota
538 538
539 first_valid_uid = ${toString config.users.users.dovecot2.uid} 539 first_valid_uid = ${toString config.users.users.${config.services.dovecot2.user}.uid}
540 last_valid_uid = ${toString config.users.users.dovecot2.uid} 540 last_valid_uid = ${toString config.users.users.${config.services.dovecot2.user}.uid}
541 first_valid_gid = ${toString config.users.groups.dovecot2.gid} 541 first_valid_gid = ${toString config.users.groups.${config.services.dovecot2.group}.gid}
542 last_valid_gid = ${toString config.users.groups.dovecot2.gid} 542 last_valid_gid = ${toString config.users.groups.${config.services.dovecot2.group}.gid}
543 543
544 ${concatMapStringsSep "\n\n" (domain: 544 ${concatMapStringsSep "\n\n" (domain:
545 concatMapStringsSep "\n" (subdomain: '' 545 concatMapStringsSep "\n" (subdomain: ''
546 local_name ${subdomain} { 546 local_name ${subdomain} {
547 ssl_cert = </run/credentials/dovecot2.service/${subdomain}.pem 547 ssl_cert = </run/credentials/dovecot.service/${subdomain}.pem
548 ssl_key = </run/credentials/dovecot2.service/${subdomain}.key.pem 548 ssl_key = </run/credentials/dovecot.service/${subdomain}.key.pem
549 } 549 }
550 '') ["imap.${domain}" domain] 550 '') ["imap.${domain}" domain]
551 ) emailDomains} 551 ) emailDomains}
@@ -566,10 +566,10 @@ in {
566 auth_debug = yes 566 auth_debug = yes
567 567
568 service auth { 568 service auth {
569 user = dovecot2 569 user = ${config.services.dovecot2.user}
570 } 570 }
571 service auth-worker { 571 service auth-worker {
572 user = dovecot2 572 user = ${config.services.dovecot2.user}
573 } 573 }
574 574
575 userdb { 575 userdb {
@@ -590,7 +590,7 @@ in {
590 args = ${pkgs.writeText "dovecot-sql.conf" '' 590 args = ${pkgs.writeText "dovecot-sql.conf" ''
591 driver = pgsql 591 driver = pgsql
592 connect = dbname=email 592 connect = dbname=email
593 user_query = SELECT DISTINCT ON (extension IS NULL, local IS NULL) "user", quota_rule, 'dovecot2' as uid, 'dovecot2' as gid FROM lmtp_mapping WHERE CASE WHEN extension IS NOT NULL AND local IS NOT NULL THEN ('%n' :: citext) = local || '+' || extension AND domain = ('%d' :: citext) WHEN local IS NOT NULL THEN (local = ('%n' :: citext) OR ('%n' :: citext) ILIKE local || '+%%') AND domain = ('%d' :: citext) WHEN extension IS NOT NULL THEN ('%n' :: citext) ILIKE '%%+' || extension AND domain = ('%d' :: citext) ELSE domain = ('%d' :: citext) END ORDER BY (extension IS NULL) ASC, (local IS NULL) ASC 593 user_query = SELECT DISTINCT ON (extension IS NULL, local IS NULL) "user", quota_rule, '${config.services.dovecot2.user}' as uid, '${config.services.dovecot2.group}' as gid FROM lmtp_mapping WHERE CASE WHEN extension IS NOT NULL AND local IS NOT NULL THEN ('%n' :: citext) = local || '+' || extension AND domain = ('%d' :: citext) WHEN local IS NOT NULL THEN (local = ('%n' :: citext) OR ('%n' :: citext) ILIKE local || '+%%') AND domain = ('%d' :: citext) WHEN extension IS NOT NULL THEN ('%n' :: citext) ILIKE '%%+' || extension AND domain = ('%d' :: citext) ELSE domain = ('%d' :: citext) END ORDER BY (extension IS NULL) ASC, (local IS NULL) ASC
594 ''} 594 ''}
595 595
596 skip = never 596 skip = never
@@ -713,8 +713,8 @@ in {
713 713
714 systemd.services.dovecot-fts-xapian-optimize = { 714 systemd.services.dovecot-fts-xapian-optimize = {
715 description = "Optimize dovecot indices for fts_xapian"; 715 description = "Optimize dovecot indices for fts_xapian";
716 requisite = [ "dovecot2.service" ]; 716 requisite = [ "dovecot.service" ];
717 after = [ "dovecot2.service" ]; 717 after = [ "dovecot.service" ];
718 startAt = "*-*-* 22:00:00 Europe/Berlin"; 718 startAt = "*-*-* 22:00:00 Europe/Berlin";
719 serviceConfig = { 719 serviceConfig = {
720 Type = "oneshot"; 720 Type = "oneshot";
@@ -779,14 +779,14 @@ in {
779 779
780 security.acme.rfc2136Domains = { 780 security.acme.rfc2136Domains = {
781 "surtr.yggdrasil.li" = { 781 "surtr.yggdrasil.li" = {
782 restartUnits = [ "postfix.service" "dovecot2.service" ]; 782 restartUnits = [ "postfix.service" "dovecot.service" ];
783 }; 783 };
784 } // listToAttrs (map (domain: nameValuePair "spm.${domain}" { restartUnits = ["nginx.service"]; }) spmDomains) 784 } // listToAttrs (map (domain: nameValuePair "spm.${domain}" { restartUnits = ["nginx.service"]; }) spmDomains)
785 // listToAttrs (concatMap (domain: [ 785 // listToAttrs (concatMap (domain: [
786 (nameValuePair domain { restartUnits = ["postfix.service" "dovecot2.service"]; }) 786 (nameValuePair domain { restartUnits = ["postfix.service" "dovecot.service"]; })
787 (nameValuePair "mailin.${domain}" { restartUnits = ["postfix.service"]; }) 787 (nameValuePair "mailin.${domain}" { restartUnits = ["postfix.service"]; })
788 (nameValuePair "mailsub.${domain}" { restartUnits = ["postfix.service"]; }) 788 (nameValuePair "mailsub.${domain}" { restartUnits = ["postfix.service"]; })
789 (nameValuePair "imap.${domain}" { restartUnits = ["dovecot2.service"]; }) 789 (nameValuePair "imap.${domain}" { restartUnits = ["dovecot.service"]; })
790 (nameValuePair "mta-sts.${domain}" { restartUnits = ["nginx.service"]; }) 790 (nameValuePair "mta-sts.${domain}" { restartUnits = ["nginx.service"]; })
791 ]) emailDomains); 791 ]) emailDomains);
792 792
@@ -798,7 +798,7 @@ in {
798 ] ++ concatMap (domain: map tlsCredential [domain "mailin.${domain}" "mailsub.${domain}"]) emailDomains; 798 ] ++ concatMap (domain: map tlsCredential [domain "mailin.${domain}" "mailsub.${domain}"]) emailDomains;
799 }; 799 };
800 800
801 systemd.services.dovecot2 = { 801 systemd.services.dovecot = {
802 preStart = '' 802 preStart = ''
803 for f in /etc/dovecot/sieve_flag.d/*.sieve /etc/dovecot/sieve_before.d/*.sieve; do 803 for f in /etc/dovecot/sieve_flag.d/*.sieve /etc/dovecot/sieve_before.d/*.sieve; do
804 ${getExe' pkgs.dovecot_pigeonhole "sievec"} $f 804 ${getExe' pkgs.dovecot_pigeonhole "sievec"} $f
diff --git a/overlays/etesync-dav.nix b/overlays/etesync-dav.nix
index cec216e2..f7a5146f 100644
--- a/overlays/etesync-dav.nix
+++ b/overlays/etesync-dav.nix
@@ -1,54 +1,29 @@
1{ final, prev, ... }: { 1{ final, prev, ... }: {
2 etesync-dav = prev.python3Packages.buildPythonApplication rec { 2 etesync-dav = final.python3Packages.buildPythonApplication rec {
3 pname = "etesync-dav"; 3 pname = "etesync-dav";
4 version = "0.33.4"; 4 version = "0.35.0";
5 format = "pyproject";
5 6
6 src = prev.fetchFromGitHub { 7 src = prev.fetchFromGitHub {
7 owner = "etesync"; 8 owner = "etesync";
8 repo = "etesync-dav"; 9 repo = "etesync-dav";
9 rev = "v${version}"; 10 tag = "v${version}";
10 hash = "sha256-g+rK762tSWPDaBsaTwpTzfK/lqVs+Z/Qrpq2HCpipQE="; 11 hash = "sha256-CD02nuA9GD/oe7mjExUHIftkPxM1pZQKyDalXSoOhXY=";
11 }; 12 };
12 13
13 dependencies = with prev.python3Packages; [ 14 build-system = with final.python3Packages; [ setuptools ];
15
16 pythonRelaxDeps = [ "radicale" ];
17
18 dependencies = with final.python3Packages; [
14 appdirs 19 appdirs
15 etebase 20 etebase
16 etesync 21 etesync
17 flask 22 flask
18 flask-wtf 23 flask-wtf
19 msgpack 24 msgpack
20 setuptools 25 (final.python3Packages.toPythonModule (final.radicale.override { inherit (final) python3; }))
21 (toPythonModule (buildPythonApplication rec {
22 pname = "radicale";
23 version = "3.2.3";
24 pyproject = true;
25
26 src = prev.fetchFromGitHub {
27 owner = "Kozea";
28 repo = "Radicale";
29 rev = "refs/tags/v${version}";
30 hash = "sha256-1IlnXVetQQuKBt6+QVKNeMM6qBQAiUhqc+4x3xOnSdE=";
31 };
32
33 build-system = [
34 setuptools
35 ];
36
37 dependencies =
38 [
39 defusedxml
40 passlib
41 vobject
42 pika
43 python-dateutil
44 pytz # https://github.com/Kozea/Radicale/issues/816
45 ]
46 ++ passlib.optional-dependencies.bcrypt;
47
48 doCheck = false;
49 }))
50 requests 26 requests
51 types-setuptools
52 requests.optional-dependencies.socks 27 requests.optional-dependencies.socks
53 ]; 28 ];
54 29
diff --git a/overlays/prometheus-lvm-exporter.nix b/overlays/prometheus-lvm-exporter.nix
index b0230b63..cae45003 100644
--- a/overlays/prometheus-lvm-exporter.nix
+++ b/overlays/prometheus-lvm-exporter.nix
@@ -3,7 +3,7 @@
3 pname = "prometheus-lvm-exporter"; 3 pname = "prometheus-lvm-exporter";
4 inherit (sources.prometheus-lvm-exporter) version src; 4 inherit (sources.prometheus-lvm-exporter) version src;
5 5
6 vendorHash = "sha256-5H99RpUV3QV1hithBN7ztJlZdBi+SlaKegga8jDs0AM="; 6 vendorHash = "sha256-QpJM11Rg+TUV0GWYlvIkwuQqiTsfSdQNtPpD6zT08ew=";
7 7
8 doCheck = false; 8 doCheck = false;
9 9
diff --git a/overlays/spice-record.nix b/overlays/spice-record.nix
index 06a114da..2d37079b 100644
--- a/overlays/spice-record.nix
+++ b/overlays/spice-record.nix
@@ -8,5 +8,7 @@
8 wrapProgram $out/bin/spice-record \ 8 wrapProgram $out/bin/spice-record \
9 --prefix PATH : ${prev.lib.makeBinPath (with prev; [ ffmpeg-full ])} 9 --prefix PATH : ${prev.lib.makeBinPath (with prev; [ ffmpeg-full ])}
10 ''; 10 '';
11 pyproject = true;
12 build-system = [ prev.python3Packages.setuptools ];
11 }; 13 };
12} 14}
diff --git a/overlays/swayosd/default.nix b/overlays/swayosd/default.nix
index b4601a03..5e715dae 100644
--- a/overlays/swayosd/default.nix
+++ b/overlays/swayosd/default.nix
@@ -4,7 +4,7 @@
4 cargoDeps = prev.rustPlatform.fetchCargoVendor { 4 cargoDeps = prev.rustPlatform.fetchCargoVendor {
5 inherit (oldAttrs) pname; 5 inherit (oldAttrs) pname;
6 inherit version src; 6 inherit version src;
7 hash = "sha256-yWybf4GKxHrk4WrW5SmjfPD0Gv79tpXOwNLlWeykYy0="; 7 hash = "sha256-J2sl6/4+bRWlkvaTJtFsMqvvOxYtWLRjJcYWcu0loRE=";
8 }; 8 };
9 patches = (oldAttrs.patches or []) ++ [ 9 patches = (oldAttrs.patches or []) ++ [
10 ./exponential.patch 10 ./exponential.patch
diff --git a/system-profiles/nfsroot.nix b/system-profiles/nfsroot.nix
index 12d5d2b4..e3dc2d2e 100644
--- a/system-profiles/nfsroot.nix
+++ b/system-profiles/nfsroot.nix
@@ -86,7 +86,7 @@ in {
86 mkdir -p /mnt-root/etc/ 86 mkdir -p /mnt-root/etc/
87 cp /etc/resolv.conf /mnt-root/etc/resolv.conf 87 cp /etc/resolv.conf /mnt-root/etc/resolv.conf
88 ''; 88 '';
89 networking.useDHCP = true; 89 networking.useDHCP = mkImageMediaOverride true;
90 networking.resolvconf.enable = false; 90 networking.resolvconf.enable = false;
91 networking.dhcpcd.persistent = true; 91 networking.dhcpcd.persistent = true;
92 92