summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2025-08-25 14:19:52 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2025-08-25 14:19:52 +0200
commit218ac55d86ee49d151c0ba2dfbca6da104c66703 (patch)
tree1b6546436f71b23c04d4930e46836c9614452abf
parent13000ec4703d1dd49fd12f8c2cb427130e4899b7 (diff)
downloadnixos-218ac55d86ee49d151c0ba2dfbca6da104c66703.tar
nixos-218ac55d86ee49d151c0ba2dfbca6da104c66703.tar.gz
nixos-218ac55d86ee49d151c0ba2dfbca6da104c66703.tar.bz2
nixos-218ac55d86ee49d151c0ba2dfbca6da104c66703.tar.xz
nixos-218ac55d86ee49d151c0ba2dfbca6da104c66703.zip
-rw-r--r--accounts/gkleen@sif/utils/pdf2pdf.nix2
-rw-r--r--flake.lock66
-rw-r--r--hosts/sif/default.nix17
-rw-r--r--hosts/surtr/default.nix2
-rw-r--r--hosts/surtr/tls/default.nix2
-rw-r--r--modules/impermanence-timezone.nix41
-rw-r--r--modules/impermanence.nix6
-rwxr-xr-xoverlays/worktime/worktime/__main__.py10
-rw-r--r--overlays/yt-dlp.nix2
-rw-r--r--system-profiles/bcachefs.nix10
-rw-r--r--system-profiles/initrd-all-crypto-modules.nix2
11 files changed, 103 insertions, 57 deletions
diff --git a/accounts/gkleen@sif/utils/pdf2pdf.nix b/accounts/gkleen@sif/utils/pdf2pdf.nix
index 5e9fb215..9f4cbc3e 100644
--- a/accounts/gkleen@sif/utils/pdf2pdf.nix
+++ b/accounts/gkleen@sif/utils/pdf2pdf.nix
@@ -4,5 +4,5 @@ resholve.writeScriptBin "pdf2pdf" {
4 inputs = with pkgs; [ghostscript_headless]; 4 inputs = with pkgs; [ghostscript_headless];
5 interpreter = lib.getExe zsh; 5 interpreter = lib.getExe zsh;
6} '' 6} ''
7 exec gs -dPDFSETTINGS=/prepress -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER "-sOutputFile=''${2}" "''${1}" 7 exec gs -dPDFSETTINGS=/prepress -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER -dPreserveAnnots=false "-sOutputFile=''${2}" "''${1}"
8'' 8''
diff --git a/flake.lock b/flake.lock
index 14568259..6046d92f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -507,11 +507,11 @@
507 "xwayland-satellite-unstable": "xwayland-satellite-unstable" 507 "xwayland-satellite-unstable": "xwayland-satellite-unstable"
508 }, 508 },
509 "locked": { 509 "locked": {
510 "lastModified": 1754797984, 510 "lastModified": 1755424351,
511 "narHash": "sha256-t2WFkdB2qUyZt5rdqmJ340kqhvQWWOCJBJIc1nQ/Hg4=", 511 "narHash": "sha256-xcorYLNdtLpb0wH5CPlUcpmYQUxeK95j1X855xQw+DY=",
512 "owner": "sodiboo", 512 "owner": "sodiboo",
513 "repo": "niri-flake", 513 "repo": "niri-flake",
514 "rev": "647a310f1eaa59abec8aa215ff69d8979195425e", 514 "rev": "9aa137af01f05386e5bb5050e983750017007a66",
515 "type": "github" 515 "type": "github"
516 }, 516 },
517 "original": { 517 "original": {
@@ -541,11 +541,11 @@
541 "niri-unstable": { 541 "niri-unstable": {
542 "flake": false, 542 "flake": false,
543 "locked": { 543 "locked": {
544 "lastModified": 1754742008, 544 "lastModified": 1755419373,
545 "narHash": "sha256-Tp0FG7VpLudVEC622d91z2hbdfPLCXxw0Nv43iNN4O0=", 545 "narHash": "sha256-EFH3zbpyLYjEboNV2Lmkxf9joEuFCmeYX+MMLRPStpg=",
546 "owner": "YaLTeR", 546 "owner": "YaLTeR",
547 "repo": "niri", 547 "repo": "niri",
548 "rev": "67361f88fd01974ebee4cf80f0e29c87d805cc39", 548 "rev": "a6febb86aa5af0df7bf2792ca027ef95a503d599",
549 "type": "github" 549 "type": "github"
550 }, 550 },
551 "original": { 551 "original": {
@@ -582,11 +582,11 @@
582 ] 582 ]
583 }, 583 },
584 "locked": { 584 "locked": {
585 "lastModified": 1754800038, 585 "lastModified": 1755404379,
586 "narHash": "sha256-UbLO8/0pVBXLJuyRizYOJigtzQAj8Z2bTnbKSec/wN0=", 586 "narHash": "sha256-Q6ZxZDBmD/B988Jjbx7/NchxOKIpOKBBrx9Yb0zMzpQ=",
587 "owner": "Mic92", 587 "owner": "Mic92",
588 "repo": "nix-index-database", 588 "repo": "nix-index-database",
589 "rev": "b65f8d80656f9fcbd1fecc4b7f0730f468333142", 589 "rev": "ebbc1c05f786ae39bb5e04e57bf2c10c44a649e3",
590 "type": "github" 590 "type": "github"
591 }, 591 },
592 "original": { 592 "original": {
@@ -639,11 +639,11 @@
639 }, 639 },
640 "nixos-hardware": { 640 "nixos-hardware": {
641 "locked": { 641 "locked": {
642 "lastModified": 1754564048, 642 "lastModified": 1755330281,
643 "narHash": "sha256-dz303vGuzWjzOPOaYkS9xSW+B93PSAJxvBd6CambXVA=", 643 "narHash": "sha256-aJHFJWP9AuI8jUGzI77LYcSlkA9wJnOIg4ZqftwNGXA=",
644 "owner": "NixOS", 644 "owner": "NixOS",
645 "repo": "nixos-hardware", 645 "repo": "nixos-hardware",
646 "rev": "26ed7a0d4b8741fe1ef1ee6fa64453ca056ce113", 646 "rev": "3dac8a872557e0ca8c083cdcfc2f218d18e113b0",
647 "type": "github" 647 "type": "github"
648 }, 648 },
649 "original": { 649 "original": {
@@ -780,11 +780,11 @@
780 }, 780 },
781 "nixpkgs-stable_3": { 781 "nixpkgs-stable_3": {
782 "locked": { 782 "locked": {
783 "lastModified": 1754689972, 783 "lastModified": 1755274400,
784 "narHash": "sha256-eogqv6FqZXHgqrbZzHnq43GalnRbLTkbBbFtEfm1RSc=", 784 "narHash": "sha256-rTInmnp/xYrfcMZyFMH3kc8oko5zYfxsowaLv1LVobY=",
785 "owner": "NixOS", 785 "owner": "NixOS",
786 "repo": "nixpkgs", 786 "repo": "nixpkgs",
787 "rev": "fc756aa6f5d3e2e5666efcf865d190701fef150a", 787 "rev": "ad7196ae55c295f53a7d1ec39e4a06d922f3b899",
788 "type": "github" 788 "type": "github"
789 }, 789 },
790 "original": { 790 "original": {
@@ -828,11 +828,11 @@
828 }, 828 },
829 "nixpkgs_2": { 829 "nixpkgs_2": {
830 "locked": { 830 "locked": {
831 "lastModified": 1754725699, 831 "lastModified": 1755615617,
832 "narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", 832 "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
833 "owner": "NixOS", 833 "owner": "NixOS",
834 "repo": "nixpkgs", 834 "repo": "nixpkgs",
835 "rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", 835 "rev": "20075955deac2583bb12f07151c2df830ef346b4",
836 "type": "github" 836 "type": "github"
837 }, 837 },
838 "original": { 838 "original": {
@@ -1073,11 +1073,11 @@
1073 ] 1073 ]
1074 }, 1074 },
1075 "locked": { 1075 "locked": {
1076 "lastModified": 1753063383, 1076 "lastModified": 1755484659,
1077 "narHash": "sha256-H+gLv6424OjJSD+l1OU1ejxkN/v0U+yaoQdh2huCXYI=", 1077 "narHash": "sha256-2FfbqsaHVQd12XFFUAinIMAuGO3853LONmva1gT3vKw=",
1078 "owner": "pyproject-nix", 1078 "owner": "pyproject-nix",
1079 "repo": "build-system-pkgs", 1079 "repo": "build-system-pkgs",
1080 "rev": "45888b7fd4bf36c57acc55f07917bdf49ec89ec9", 1080 "rev": "9778e87c2361810ff15e287ca5895c9da4a0e900",
1081 "type": "github" 1081 "type": "github"
1082 }, 1082 },
1083 "original": { 1083 "original": {
@@ -1093,11 +1093,11 @@
1093 ] 1093 ]
1094 }, 1094 },
1095 "locked": { 1095 "locked": {
1096 "lastModified": 1754287816, 1096 "lastModified": 1754923840,
1097 "narHash": "sha256-kDt0HB89oWTlTQMnTwDxx3BlRHK1AdAJ1kMcVYGuccs=", 1097 "narHash": "sha256-QSKpYg+Ts9HYF155ltlj40iBex39c05cpOF8gjoE2EM=",
1098 "owner": "pyproject-nix", 1098 "owner": "pyproject-nix",
1099 "repo": "pyproject.nix", 1099 "repo": "pyproject.nix",
1100 "rev": "efe944d0902f406c28b4e8662312292a37e4de87", 1100 "rev": "023cd4be230eacae52635be09eef100c37ef78da",
1101 "type": "github" 1101 "type": "github"
1102 }, 1102 },
1103 "original": { 1103 "original": {
@@ -1165,11 +1165,11 @@
1165 ] 1165 ]
1166 }, 1166 },
1167 "locked": { 1167 "locked": {
1168 "lastModified": 1754328224, 1168 "lastModified": 1754988908,
1169 "narHash": "sha256-glPK8DF329/dXtosV7YSzRlF4n35WDjaVwdOMEoEXHA=", 1169 "narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=",
1170 "owner": "Mic92", 1170 "owner": "Mic92",
1171 "repo": "sops-nix", 1171 "repo": "sops-nix",
1172 "rev": "49021900e69812ba7ddb9e40f9170218a7eca9f4", 1172 "rev": "3223c7a92724b5d804e9988c6b447a0d09017d48",
1173 "type": "github" 1173 "type": "github"
1174 }, 1174 },
1175 "original": { 1175 "original": {
@@ -1240,11 +1240,11 @@
1240 ] 1240 ]
1241 }, 1241 },
1242 "locked": { 1242 "locked": {
1243 "lastModified": 1754719699, 1243 "lastModified": 1755485731,
1244 "narHash": "sha256-Ek6WILkhVMDWm9j0L23gxHhDt62z1+A68D+pPt0ghao=", 1244 "narHash": "sha256-k8kxwVs8Oze6q/jAaRa3RvZbb50I/K0b5uptlsh0HXI=",
1245 "owner": "pyproject-nix", 1245 "owner": "pyproject-nix",
1246 "repo": "uv2nix", 1246 "repo": "uv2nix",
1247 "rev": "38ead6a16ba1be029dd40fe17fc064d6934847d2", 1247 "rev": "bebbd80bf56110fcd20b425589814af28f1939eb",
1248 "type": "github" 1248 "type": "github"
1249 }, 1249 },
1250 "original": { 1250 "original": {
@@ -1297,11 +1297,11 @@
1297 "xwayland-satellite-unstable": { 1297 "xwayland-satellite-unstable": {
1298 "flake": false, 1298 "flake": false,
1299 "locked": { 1299 "locked": {
1300 "lastModified": 1754533920, 1300 "lastModified": 1755219541,
1301 "narHash": "sha256-fCZ68Yud1sUCq6UNXj0SDyiBgVA8gJUE+14ZFGsFJG8=", 1301 "narHash": "sha256-yKV6xHaPbEbh5RPxAJnb9yTs1wypr7do86hFFGQm1w8=",
1302 "owner": "Supreeeme", 1302 "owner": "Supreeeme",
1303 "repo": "xwayland-satellite", 1303 "repo": "xwayland-satellite",
1304 "rev": "e0d1dad25a158551ab58547b2ece4b7d5a19929c", 1304 "rev": "5a184d435927c3423f0ad189ea2b490578450fb7",
1305 "type": "github" 1305 "type": "github"
1306 }, 1306 },
1307 "original": { 1307 "original": {
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix
index b436542f..ed85ca17 100644
--- a/hosts/sif/default.nix
+++ b/hosts/sif/default.nix
@@ -15,7 +15,6 @@ in {
15 ./email ./libvirt ./greetd 15 ./email ./libvirt ./greetd
16 tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines niri-unstable networkmanager lanzaboote 16 tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines niri-unstable networkmanager lanzaboote
17 flakeInputs.nixos-hardware.nixosModules.lenovo-thinkpad-p1 17 flakeInputs.nixos-hardware.nixosModules.lenovo-thinkpad-p1
18 flakeInputs.impermanence.nixosModules.impermanence
19 flakeInputs.nixVirt.nixosModules.default 18 flakeInputs.nixVirt.nixosModules.default
20 ]; 19 ];
21 20
@@ -63,14 +62,14 @@ in {
63 kernelPatches = [ 62 kernelPatches = [
64 { name = "edac-config"; 63 { name = "edac-config";
65 patch = null; 64 patch = null;
66 extraStructuredConfig = with lib.kernel; { 65 structuredExtraConfig = with lib.kernel; {
67 EDAC = yes; 66 EDAC = yes;
68 EDAC_IE31200 = yes; 67 EDAC_IE31200 = yes;
69 }; 68 };
70 } 69 }
71 { name = "zswap-default"; 70 { name = "zswap-default";
72 patch = null; 71 patch = null;
73 extraStructuredConfig = with lib.kernel; { 72 structuredExtraConfig = with lib.kernel; {
74 ZSWAP_DEFAULT_ON = yes; 73 ZSWAP_DEFAULT_ON = yes;
75 ZSWAP_SHRINKER_DEFAULT_ON = yes; 74 ZSWAP_SHRINKER_DEFAULT_ON = yes;
76 }; 75 };
@@ -682,19 +681,9 @@ in {
682 ]; 681 ];
683 files = [ 682 files = [
684 ]; 683 ];
684 timezone = true;
685 }; 685 };
686 686
687 systemd.services.timezone = {
688 wantedBy = [ "multi-user.target" ];
689 serviceConfig = {
690 Type = "oneshot";
691 RemainAfterExit = true;
692 ExecStart = "${pkgs.coreutils}/bin/cp -vP /.bcachefs/etc/localtime /etc/localtime";
693 ExecStop = "${pkgs.coreutils}/bin/cp -vP /etc/localtime /.bcachefs/etc/localtime";
694 };
695 };
696 services.tzupdate.enable = true;
697
698 security.pam.services.gtklock = {}; 687 security.pam.services.gtklock = {};
699 688
700 home-manager.sharedModules = [ flakeInputs.nixVirt.homeModules.default ]; 689 home-manager.sharedModules = [ flakeInputs.nixVirt.homeModules.default ];
diff --git a/hosts/surtr/default.nix b/hosts/surtr/default.nix
index 63beece3..1c66df2b 100644
--- a/hosts/surtr/default.nix
+++ b/hosts/surtr/default.nix
@@ -30,7 +30,7 @@ with lib;
30 kernelPatches = [ 30 kernelPatches = [
31 { name = "zswap-default"; 31 { name = "zswap-default";
32 patch = null; 32 patch = null;
33 extraStructuredConfig = with lib.kernel; { 33 structuredExtraConfig = with lib.kernel; {
34 ZSWAP_DEFAULT_ON = yes; 34 ZSWAP_DEFAULT_ON = yes;
35 ZSWAP_SHRINKER_DEFAULT_ON = yes; 35 ZSWAP_SHRINKER_DEFAULT_ON = yes;
36 }; 36 };
diff --git a/hosts/surtr/tls/default.nix b/hosts/surtr/tls/default.nix
index b1c05888..b25bd2ea 100644
--- a/hosts/surtr/tls/default.nix
+++ b/hosts/surtr/tls/default.nix
@@ -41,7 +41,7 @@ in {
41 41
42 acceptTerms = true; 42 acceptTerms = true;
43 # DNS challenge is slow 43 # DNS challenge is slow
44 preliminarySelfsigned = true; 44 # preliminarySelfsigned = true;
45 defaults = { 45 defaults = {
46 email = "phikeebaogobaegh@141.li"; 46 email = "phikeebaogobaegh@141.li";
47 # We don't like NIST curves and Let's Encrypt doesn't support 47 # We don't like NIST curves and Let's Encrypt doesn't support
diff --git a/modules/impermanence-timezone.nix b/modules/impermanence-timezone.nix
new file mode 100644
index 00000000..a1edbfa5
--- /dev/null
+++ b/modules/impermanence-timezone.nix
@@ -0,0 +1,41 @@
1{ config, lib, utils, pkgs, ... }:
2
3{
4 options = {
5 environment.persistence = lib.mkOption {
6 type = lib.types.attrsOf (lib.types.submodule {
7 options = {
8 timezone = lib.mkEnableOption "storing system timezone";
9 };
10 });
11 };
12 };
13
14 config = {
15 systemd = lib.mkMerge (lib.mapAttrsToList (name: cfg: lib.mkIf cfg.timezone {
16 services = {
17 "timezone@${utils.escapeSystemdPath name}" = {
18 wantedBy = [ "multi-user.target" ];
19 serviceConfig = {
20 Type = "oneshot";
21 RemainAfterExit = true;
22 ExecStart = "${pkgs.coreutils}/bin/cp -vP ${utils.escapeSystemdExecArg "${name}/etc/localtime"} /etc/localtime";
23 ExecStop = "${pkgs.coreutils}/bin/cp -vP /etc/localtime ${utils.escapeSystemdExecArg "${name}/etc/localtime"}";
24 };
25 };
26 "etc-localtime@${utils.escapeSystemdPath name}" = {
27 serviceConfig = {
28 Type = "oneshot";
29 ExecStart = "${pkgs.coreutils}/bin/cp -vP /etc/localtime ${utils.escapeSystemdExecArg "${name}/etc/localtime"}";
30 };
31 };
32 };
33 paths."etc-localtime@${utils.escapeSystemdPath name}" = {
34 wantedBy = [ "timezone@${utils.escapeSystemdPath name}.service" ];
35 after = [ "timezone@${utils.escapeSystemdPath name}.service" ];
36
37 pathConfig.PathChanged = "/etc/localtime";
38 };
39 }) config.environment.persistence);
40 };
41}
diff --git a/modules/impermanence.nix b/modules/impermanence.nix
new file mode 100644
index 00000000..621576a3
--- /dev/null
+++ b/modules/impermanence.nix
@@ -0,0 +1,6 @@
1{ flakeInputs, ... }:
2{
3 imports = [
4 flakeInputs.impermanence.nixosModules.impermanence
5 ];
6}
diff --git a/overlays/worktime/worktime/__main__.py b/overlays/worktime/worktime/__main__.py
index 3e7aeb9f..016690f0 100755
--- a/overlays/worktime/worktime/__main__.py
+++ b/overlays/worktime/worktime/__main__.py
@@ -375,10 +375,7 @@ class Worktime(object):
375 parse_datestr(stripped_line) 375 parse_datestr(stripped_line)
376 376
377 for day in [fromDay + timedelta(days = x) for x in range(0, (toDay - fromDay).days + 1)]: 377 for day in [fromDay + timedelta(days = x) for x in range(0, (toDay - fromDay).days + 1)]:
378 # if self.end_date.date() < day or day < self.start_date.date(): 378 if self.would_be_workday(day) and self.start_date.date() <= day and day <= self.end_date.date():
379 # continue
380
381 if self.would_be_workday(day):
382 if excused_kind == 'leave': 379 if excused_kind == 'leave':
383 self.leave_days.add(day) 380 self.leave_days.add(day)
384 elif time is not None and time >= self.time_per_day(day): 381 elif time is not None and time >= self.time_per_day(day):
@@ -444,8 +441,9 @@ class Worktime(object):
444 if e.errno != 2: 441 if e.errno != 2:
445 raise e 442 raise e
446 443
447 for year in range(self.end_date.year + 1, max(self.pull_forward.keys()).year + 1): 444 if self.pull_forward:
448 holidays |= {k: v * timedelta(hours = hours_per_week(k)) / len(self.workdays) for k, v in Worktime.holidays(year).items()} 445 for year in range(self.end_date.year + 1, max(self.pull_forward.keys()).year + 1):
446 holidays |= {k: v * timedelta(hours = hours_per_week(k)) / len(self.workdays) for k, v in Worktime.holidays(year).items()}
449 447
450 self.days_to_work = dict() 448 self.days_to_work = dict()
451 449
diff --git a/overlays/yt-dlp.nix b/overlays/yt-dlp.nix
index 94ab1fdd..9a54a32b 100644
--- a/overlays/yt-dlp.nix
+++ b/overlays/yt-dlp.nix
@@ -1,5 +1,7 @@
1{ prev, sources, ... }: { 1{ prev, sources, ... }: {
2 yt-dlp = prev.yt-dlp.overrideAttrs (oldAttrs: { 2 yt-dlp = prev.yt-dlp.overrideAttrs (oldAttrs: {
3 inherit (sources.yt-dlp) pname version src; 3 inherit (sources.yt-dlp) pname version src;
4
5 postPatch = "";
4 }); 6 });
5} 7}
diff --git a/system-profiles/bcachefs.nix b/system-profiles/bcachefs.nix
index 6090c56d..be12bf20 100644
--- a/system-profiles/bcachefs.nix
+++ b/system-profiles/bcachefs.nix
@@ -2,5 +2,15 @@
2 config = { 2 config = {
3 boot.supportedFilesystems.bcachefs = true; 3 boot.supportedFilesystems.bcachefs = true;
4 environment.systemPackages = with pkgs; [ bcachefs-tools ]; 4 environment.systemPackages = with pkgs; [ bcachefs-tools ];
5
6 boot.kernelPatches = [
7 {
8 name = "bcachefs-casefold-fix";
9 patch = null;
10 structuredExtraConfig = with lib.kernel; {
11 UNICODE = lib.mkOverride 90 no;
12 };
13 }
14 ];
5 }; 15 };
6} 16}
diff --git a/system-profiles/initrd-all-crypto-modules.nix b/system-profiles/initrd-all-crypto-modules.nix
index 45cd4b74..da6c781e 100644
--- a/system-profiles/initrd-all-crypto-modules.nix
+++ b/system-profiles/initrd-all-crypto-modules.nix
@@ -18,7 +18,7 @@ in {
18 { 18 {
19 name = "encrypted_key"; 19 name = "encrypted_key";
20 patch = null; 20 patch = null;
21 extraStructuredConfig.ENCRYPTED_KEYS = lib.kernel.yes; 21 structuredExtraConfig.ENCRYPTED_KEYS = lib.kernel.yes;
22 } 22 }
23 ]; 23 ];
24} 24}