summaryrefslogtreecommitdiff
path: root/hosts/sif
diff options
context:
space:
mode:
Diffstat (limited to 'hosts/sif')
-rw-r--r--hosts/sif/default.nix187
-rw-r--r--hosts/sif/email/default.nix110
-rw-r--r--hosts/sif/email/relay.crt11
-rw-r--r--hosts/sif/email/relay.key19
-rw-r--r--hosts/sif/email/secrets.yaml (renamed from hosts/sif/mail/secrets.yaml)0
-rw-r--r--hosts/sif/greetd/default.nix49
-rw-r--r--hosts/sif/greetd/wallpaper.pngbin0 -> 6073128 bytes
-rw-r--r--hosts/sif/hw.nix5
-rw-r--r--hosts/sif/libvirt/default.nix1
-rw-r--r--hosts/sif/mail/default.nix70
-rw-r--r--hosts/sif/ruleset.nft8
11 files changed, 255 insertions, 205 deletions
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix
index 088e1022..4cdd4aa7 100644
--- a/hosts/sif/default.nix
+++ b/hosts/sif/default.nix
@@ -12,9 +12,8 @@ let
12in { 12in {
13 imports = with flake.nixosModules.systemProfiles; [ 13 imports = with flake.nixosModules.systemProfiles; [
14 ./hw.nix 14 ./hw.nix
15 ./mail ./libvirt 15 ./email ./libvirt ./greetd
16 tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines 16 tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines niri-unstable networkmanager lanzaboote
17 networkmanager
18 flakeInputs.nixos-hardware.nixosModules.lenovo-thinkpad-p1 17 flakeInputs.nixos-hardware.nixosModules.lenovo-thinkpad-p1
19 flakeInputs.impermanence.nixosModules.impermanence 18 flakeInputs.impermanence.nixosModules.impermanence
20 flakeInputs.nixVirt.nixosModules.default 19 flakeInputs.nixVirt.nixosModules.default
@@ -35,6 +34,10 @@ in {
35 initrd = { 34 initrd = {
36 systemd = { 35 systemd = {
37 emergencyAccess = config.users.users.root.hashedPassword; 36 emergencyAccess = config.users.users.root.hashedPassword;
37 extraBin = {
38 "vim" = lib.getExe pkgs.vim;
39 "grep" = lib.getExe pkgs.gnugrep;
40 };
38 }; 41 };
39 luks.devices = { 42 luks.devices = {
40 nvm0 = { device = "/dev/disk/by-uuid/bef17e86-d929-4a60-97cb-6bfa133face7"; bypassWorkqueues = true; }; 43 nvm0 = { device = "/dev/disk/by-uuid/bef17e86-d929-4a60-97cb-6bfa133face7"; bypassWorkqueues = true; };
@@ -48,12 +51,8 @@ in {
48 51
49 blacklistedKernelModules = [ "nouveau" ]; 52 blacklistedKernelModules = [ "nouveau" ];
50 53
51 # Use the systemd-boot EFI boot loader. 54 lanzaboote.configurationLimit = 15;
52 loader = { 55 loader = {
53 systemd-boot = {
54 enable = true;
55 configurationLimit = 15;
56 };
57 efi.canTouchEfiVariables = true; 56 efi.canTouchEfiVariables = true;
58 timeout = null; 57 timeout = null;
59 }; 58 };
@@ -61,15 +60,20 @@ in {
61 plymouth.enable = true; 60 plymouth.enable = true;
62 61
63 kernelPackages = pkgs.linuxPackages_latest; 62 kernelPackages = pkgs.linuxPackages_latest;
64 extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
65 kernelModules = ["v4l2loopback"];
66 kernelPatches = [ 63 kernelPatches = [
67 { name = "edac-config"; 64 { name = "edac-config";
68 patch = null; 65 patch = null;
69 extraConfig = '' 66 extraStructuredConfig = with lib.kernel; {
70 EDAC y 67 EDAC = yes;
71 EDAC_IE31200 y 68 EDAC_IE31200 = yes;
72 ''; 69 };
70 }
71 { name = "zswap-default";
72 patch = null;
73 extraStructuredConfig = with lib.kernel; {
74 ZSWAP_DEFAULT_ON = yes;
75 ZSWAP_SHRINKER_DEFAULT_ON = yes;
76 };
73 } 77 }
74 ]; 78 ];
75 79
@@ -93,6 +97,8 @@ in {
93 server ptbtime2.ptb.de prefer iburst nts 97 server ptbtime2.ptb.de prefer iburst nts
94 server ptbtime3.ptb.de prefer iburst nts 98 server ptbtime3.ptb.de prefer iburst nts
95 server ptbtime4.ptb.de prefer iburst nts 99 server ptbtime4.ptb.de prefer iburst nts
100 pool ntppool1.time.nl prefer iburst nts
101 pool ntppool2.time.nl prefer iburst nts
96 102
97 authselectmode require 103 authselectmode require
98 minsources 3 104 minsources 3
@@ -121,40 +127,16 @@ in {
121 rulesetFile = ./ruleset.nft; 127 rulesetFile = ./ruleset.nft;
122 }; 128 };
123 129
124 # firewall = {
125 # enable = true;
126 # allowedTCPPorts = [ 22 # ssh
127 # 8000 # quickserve
128 # ];
129 # };
130
131 # wlanInterfaces = {
132 # wlan0 = {
133 # device = "wlp82s0";
134 # };
135 # };
136
137 # bonds = {
138 # "lan" = {
139 # interfaces = [ "wlan0" "enp0s31f6" "dock0" ];
140 # driverOptions = {
141 # miimon = "1000";
142 # mode = "active-backup";
143 # primary_reselect = "always";
144 # };
145 # };
146 # };
147
148 useDHCP = false; 130 useDHCP = false;
149 useNetworkd = true; 131 useNetworkd = true;
150
151 # interfaces."tinc.yggdrasil" = {
152 # virtual = true;
153 # virtualType = config.services.tinc.networks.yggdrasil.interfaceType;
154 # macAddress = "5c:93:21:c3:61:39";
155 # };
156 }; 132 };
157 133
134 environment.etc."NetworkManager/dnsmasq.d/dnssec.conf" = {
135 text = ''
136 conf-file=${pkgs.dnsmasq}/share/dnsmasq/trust-anchors.conf
137 dnssec
138 '';
139 };
158 environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { 140 environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = {
159 text = '' 141 text = ''
160 except-interface=virbr0 142 except-interface=virbr0
@@ -397,19 +379,6 @@ in {
397 ]; 379 ];
398 380
399 services = { 381 services = {
400 uucp = {
401 enable = true;
402 nodeName = "sif";
403 remoteNodes = {
404 "ymir" = {
405 publicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG6KNtsCOl5fsZ4rV7udTulGMphJweLBoKapzerWNoLY root@ymir"];
406 hostnames = ["ymir.yggdrasil.li" "ymir.niflheim.yggdrasil"];
407 };
408 };
409
410 defaultCommands = lib.mkForce [];
411 };
412
413 avahi.enable = true; 382 avahi.enable = true;
414 383
415 fwupd.enable = true; 384 fwupd.enable = true;
@@ -428,8 +397,8 @@ in {
428 397
429 logind = { 398 logind = {
430 lidSwitch = "suspend"; 399 lidSwitch = "suspend";
431 lidSwitchDocked = "lock"; 400 lidSwitchDocked = "ignore";
432 lidSwitchExternalPower = "lock"; 401 lidSwitchExternalPower = "ignore";
433 }; 402 };
434 403
435 atd = { 404 atd = {
@@ -438,7 +407,7 @@ in {
438 }; 407 };
439 408
440 xserver = { 409 xserver = {
441 enable = true; 410 enable = false;
442 411
443 xkb = { 412 xkb = {
444 layout = "us"; 413 layout = "us";
@@ -464,47 +433,18 @@ in {
464 }; 433 };
465 libinput.enable = true; 434 libinput.enable = true;
466 435
467 greetd = { 436 envfs.enable = false;
468 enable = true;
469 # settings.default_session.command = let
470 # cfg = config.programs.regreet;
471 # in pkgs.writeShellScript "greeter" ''
472 # modprobe -r nvidia_drm
473 437
474 # exec ${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package} 438 displayManager.defaultSession = "Niri";
475 # '';
476 };
477 }; 439 };
478 440
479 programs.regreet = {
480 enable = true;
481 theme = {
482 package = pkgs.equilux-theme;
483 name = "Equilux-compact";
484 };
485 iconTheme = {
486 package = pkgs.paper-icon-theme;
487 name = "Paper-Mono-Dark";
488 };
489 font = {
490 package = pkgs.fira;
491 name = "Fira Sans";
492 # size = 6;
493 };
494 cageArgs = [ "-s" "-m" "last" ];
495 settings = {
496 GTK.application_prefer_dark_theme = true;
497 };
498 };
499 programs.hyprland.enable = true;
500
501 systemd.tmpfiles.settings = { 441 systemd.tmpfiles.settings = {
502 "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; 442 "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime";
503 443
504 "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" { 444 # "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" {
505 last_user = "gkleen"; 445 # last_user = "gkleen";
506 user_to_last_sess.gkleen = "Hyprland"; 446 # user_to_last_sess.gkleen = "Niri";
507 }); 447 # });
508 }; 448 };
509 449
510 users = { 450 users = {
@@ -613,15 +553,15 @@ in {
613 }; 553 };
614 554
615 nvidia = { 555 nvidia = {
616 open = true; 556 open = false;
617 modesetting.enable = true; 557 modesetting.enable = true;
618 powerManagement.enable = true; 558 powerManagement.enable = true;
619 prime = { 559 # prime = {
620 nvidiaBusId = "PCI:1:0:0"; 560 # nvidiaBusId = "PCI:1:0:0";
621 intelBusId = "PCI:0:2:0"; 561 # intelBusId = "PCI:0:2:0";
622 reverseSync.enable = true; 562 # reverseSync.enable = true;
623 offload.enableOffloadCmd = true; 563 # offload.enableOffloadCmd = true;
624 }; 564 # };
625 }; 565 };
626 566
627 graphics = { 567 graphics = {
@@ -664,25 +604,6 @@ in {
664 604
665 environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf; 605 environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf;
666 606
667 systemd.services."ac-plugged" = {
668 description = "Inhibit handling of lid-switch and sleep";
669
670 path = with pkgs; [ systemd coreutils ];
671
672 script = ''
673 exec systemd-inhibit --what=handle-lid-switch --why="AC is connected" --mode=block sleep infinity
674 '';
675
676 serviceConfig = {
677 Type = "simple";
678 };
679 };
680
681 services.udev.extraRules = with pkgs; lib.mkAfter ''
682 SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="${systemd}/bin/systemctl --no-block stop ac-plugged.service"
683 SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="${systemd}/bin/systemctl --no-block start ac-plugged.service"
684 '';
685
686 systemd.services."nix-daemon".serviceConfig = { 607 systemd.services."nix-daemon".serviceConfig = {
687 MemoryAccounting = true; 608 MemoryAccounting = true;
688 MemoryHigh = "50%"; 609 MemoryHigh = "50%";
@@ -695,6 +616,7 @@ in {
695 616
696 services.dbus.packages = with pkgs; 617 services.dbus.packages = with pkgs;
697 [ dbus dconf 618 [ dbus dconf
619 xdg-desktop-portal-gtk
698 ]; 620 ];
699 621
700 services.udisks2.enable = true; 622 services.udisks2.enable = true;
@@ -703,12 +625,8 @@ in {
703 light.enable = true; 625 light.enable = true;
704 wireshark.enable = true; 626 wireshark.enable = true;
705 dconf.enable = true; 627 dconf.enable = true;
706 }; 628 niri.enable = true;
707 629 fuse.userAllowOther = true;
708 zramSwap = {
709 enable = true;
710 algorithm = "zstd";
711 writebackDevice = "/dev/disk/by-label/swap";
712 }; 630 };
713 631
714 services.pcscd.enable = true; 632 services.pcscd.enable = true;
@@ -728,6 +646,16 @@ in {
728 environment.sessionVariables."GTK_USE_PORTAL" = "1"; 646 environment.sessionVariables."GTK_USE_PORTAL" = "1";
729 xdg.portal = { 647 xdg.portal = {
730 enable = true; 648 enable = true;
649 extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
650 config.niri = {
651 default = ["gnome" "gtk"];
652 "org.freedesktop.impl.portal.FileChooser" = ["gtk"];
653 "org.freedesktop.impl.portal.OpenFile" = ["gtk"];
654 "org.freedesktop.impl.portal.Access" = ["gtk"];
655 "org.freedesktop.impl.portal.Notification" = ["gtk"];
656 "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
657 "org.freedesktop.impl.portal.Inhibit" = ["none"];
658 };
731 }; 659 };
732 660
733 environment.persistence."/.bcachefs" = { 661 environment.persistence."/.bcachefs" = {
@@ -735,19 +663,18 @@ in {
735 directories = [ 663 directories = [
736 "/nix" 664 "/nix"
737 "/root" 665 "/root"
666 "/home"
738 "/var/log" 667 "/var/log"
739 "/var/lib/sops-nix" 668 "/var/lib/sops-nix"
740 "/var/lib/nixos" 669 "/var/lib/nixos"
741 "/var/lib/systemd" 670 "/var/lib/systemd"
742 "/home"
743 "/var/lib/chrony" 671 "/var/lib/chrony"
744 "/var/lib/fprint" 672 "/var/lib/fprint"
745 "/var/lib/bluetooth" 673 "/var/lib/bluetooth"
746 "/var/lib/upower" 674 "/var/lib/upower"
747 "/var/lib/postfix" 675 "/var/lib/postfix"
748 "/etc/NetworkManager/system-connections" 676 "/etc/NetworkManager/system-connections"
749 { directory = "/var/uucp"; user = "uucp"; group = "uucp"; mode = "0700"; } 677 config.boot.lanzaboote.pkiBundle
750 { directory = "/var/spool/uucp"; user = "uucp"; group = "uucp"; mode = "0750"; }
751 ]; 678 ];
752 files = [ 679 files = [
753 ]; 680 ];
diff --git a/hosts/sif/email/default.nix b/hosts/sif/email/default.nix
new file mode 100644
index 00000000..4eda236e
--- /dev/null
+++ b/hosts/sif/email/default.nix
@@ -0,0 +1,110 @@
1{ config, lib, pkgs, ... }:
2{
3 services.postfix = {
4 enable = true;
5 enableSmtp = false;
6 enableSubmission = false;
7 setSendmail = true;
8 networksStyle = "host";
9 hostname = "sif.midgard.yggdrasil";
10 destination = [];
11 recipientDelimiter = "+";
12 config = {
13 mydomain = "yggdrasil.li";
14
15 local_transport = "error:5.1.1 No local delivery";
16 alias_database = [];
17 alias_maps = [];
18 local_recipient_maps = [];
19
20 inet_interfaces = "loopback-only";
21
22 message_size_limit = "0";
23
24 authorized_submit_users = "inline:{ gkleen= }";
25 authorized_flush_users = "inline:{ gkleen= }";
26 authorized_mailq_users = "inline:{ gkleen= }";
27
28 smtp_generic_maps = "inline:{ root=root+sif }";
29
30 mynetworks = ["127.0.0.0/8" "[::1]/128"];
31 smtpd_client_restrictions = ["permit_mynetworks" "reject"];
32 smtpd_relay_restrictions = ["permit_mynetworks" "reject"];
33
34 sender_dependent_default_transport_maps = ''regexp:${pkgs.writeText "sender_relay" ''
35 /@(cip|stud)\.ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtp.ifi.lmu.de
36 /@ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtpin1.ifi.lmu.de:587
37 /@math(ematik)?\.(lmu|uni-muenchen)\.de$/ smtps:smtp.math.lmu.de:465
38 /@(campus\.)?lmu\.de$/ smtp:postout.lrz.de
39 ''}'';
40 sender_bcc_maps = ''regexp:${pkgs.writeText "sender_bcc" ''
41 /^uni2work(-[^@]*)?@ifi\.lmu\.de$/ uni2work@ifi.lmu.de
42 /@ifi\.lmu\.de$/ gregor.kleen@ifi.lmu.de
43 ''}'';
44 relayhost = "[surtr.yggdrasil.li]:465";
45 default_transport = "relay";
46
47 smtp_sasl_auth_enable = true;
48 smtp_sender_dependent_authentication = true;
49 smtp_sasl_tls_security_options = "noanonymous";
50 smtp_sasl_mechanism_filter = ["plain"];
51 smtp_sasl_password_maps = "regexp:/run/credentials/postfix.service/sasl_passwd";
52 smtp_cname_overrides_servername = false;
53 smtp_always_send_ehlo = true;
54 smtp_tls_security_level = "dane";
55
56 smtp_tls_loglevel = "1";
57 smtp_dns_support_level = "dnssec";
58 };
59 masterConfig = {
60 submission = {
61 type = "inet";
62 private = false;
63 command = "smtpd";
64 args = [
65 "-o" "syslog_name=postfix/$service_name"
66 ];
67 };
68 smtp = { };
69 smtps = {
70 type = "unix";
71 private = true;
72 privileged = true;
73 chroot = false;
74 command = "smtp";
75 args = [
76 "-o" "smtp_tls_wrappermode=yes"
77 "-o" "smtp_tls_security_level=encrypt"
78 ];
79 };
80 relay = {
81 command = "smtp";
82 args = [
83 "-o" "smtp_fallback_relay="
84 "-o" "smtp_tls_security_level=verify"
85 "-o" "smtp_tls_wrappermode=yes"
86 "-o" "smtp_tls_cert_file=${./relay.crt}"
87 "-o" "smtp_tls_key_file=/run/credentials/postfix.service/relay.key"
88 ];
89 };
90 };
91 };
92
93 systemd.services.postfix = {
94 serviceConfig.LoadCredential = [
95 "sasl_passwd:${config.sops.secrets."postfix-sasl-passwd".path}"
96 "relay.key:${config.sops.secrets."relay-key".path}"
97 ];
98 };
99
100 sops.secrets = {
101 postfix-sasl-passwd = {
102 key = "sasl-passwd";
103 sopsFile = ./secrets.yaml;
104 };
105 relay-key = {
106 format = "binary";
107 sopsFile = ./relay.key;
108 };
109 };
110}
diff --git a/hosts/sif/email/relay.crt b/hosts/sif/email/relay.crt
new file mode 100644
index 00000000..ac13e7cb
--- /dev/null
+++ b/hosts/sif/email/relay.crt
@@ -0,0 +1,11 @@
1-----BEGIN CERTIFICATE-----
2MIIBjDCCAQygAwIBAgIPQAAAAGgLfNoL/PSMAsutMAUGAytlcTAXMRUwEwYDVQQD
3DAx5Z2dkcmFzaWwubGkwHhcNMjUwNDI1MTIwOTQ1WhcNMzUwNDI2MTIxNDQ1WjAR
4MQ8wDQYDVQQDDAZna2xlZW4wKjAFBgMrZXADIQB3outi3/3F4YO7Q97WAAaMHW0a
5m+Blldrgee+EZnWnD6N1MHMwHwYDVR0jBBgwFoAUTtn+VjMw6Ge1f68KD8dT1CWn
6l3YwHQYDVR0OBBYEFFOa4rYZYMbXUVdKv98NB504GUhjMA4GA1UdDwEB/wQEAwID
76DAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAUGAytlcQNzABC0
80UgIt7gLZrU1TmzGoqPBris8R1DbKOJacicF5CU0MIIjHcX7mPFW8KtB4qm6KcPq
9kF6IaEPmgKpX3Nubk8HJik9vhIy9ysfINcVTvzXx8pO1bxbvREJRyA/apj10nzav
10yauId0cXHvN6g5RLAMsMAA==
11-----END CERTIFICATE-----
diff --git a/hosts/sif/email/relay.key b/hosts/sif/email/relay.key
new file mode 100644
index 00000000..412a44e0
--- /dev/null
+++ b/hosts/sif/email/relay.key
@@ -0,0 +1,19 @@
1{
2 "data": "ENC[AES256_GCM,data:lBlTuzOS75pvRmcTKT4KhHMH44RlE2SvCFAUP+GfsXws1Uai7DZ1MmbhvxxCa+pcLW19+sQYxrXLRNZWby1yOeKBJ2UQeYV5LOk9LSL/WIE3FZkCo5Dv0O0gSFKjjb61WN22a4JnHbLWADf/mLT3GZv91XfvFDo=,iv:ho8wQH3UNzX9JPW5gVcUGtxZzdVwsMFus0Z4KYe5t48=,tag:dAgZyHOva2xVVhE1nTl+lg==,type:str]",
3 "sops": {
4 "age": [
5 {
6 "recipient": "age1rmmhetcmllq0ahl5qznlr0eya2zdxwl9h6y5wnl97d2wtyx5t99sm2u866",
7 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6eTVRSUdFNUZGZmcxSUlT\nWmlsOGNyWXIzMGNTZjlKbXlhcEdZUXFRVkR3Cll0T0RMd0h2UW16QkR3SHlhYmNZ\nNDFrYXh3Rkp5NWsvcWc3UFJJaHVwT1UKLS0tIHhXVEI0VHBZVkpDQ1FzWENjMmJH\nb1FQWXVUUTBiZ1pKWG00MTNqVEo2SjAKK3VOU+QgRuxWYWEcrJiVMRFCprBICz4F\ngD+9zuPUzPezyJkYwTs+M+wX5GYkXppqm5W58yQLS2UDD38sr+SRjg==\n-----END AGE ENCRYPTED FILE-----\n"
8 },
9 {
10 "recipient": "age1fj65apkhfkrwyv5tx6zcs9nkjg8267fy733qph30sc7zfn7vapjqkd5kne",
11 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzWmJmZDVFazN2bDY1TkNG\nNXpJN2twMFFjZUxMTVdSNzJwQTFiYktrcGdrCjk4eFVHTko0bFVMSlFFWm9tbjMr\nbWNHMEQ1Rm1qUVhodlB1RGw2aDc4TUEKLS0tIERBK0J5NkN4OXJEZ1ZOZXhNc1Jm\naWNnUmZGbTIxdmNkYi9TZ2h2bGs3MVEKPQGaEf7M/5/xvSOfawpIp50fB3QfFSuz\nPgkrPMneaBeUx+uBYMyEFX4rpzLIBR3pnYMjAfoc+bjWaOtGQuEqyQ==\n-----END AGE ENCRYPTED FILE-----\n"
12 }
13 ],
14 "lastmodified": "2025-04-25T12:14:44Z",
15 "mac": "ENC[AES256_GCM,data:pObl2bJA93az9E3Ya+hA3ekI8TKKZ9NNTi0KzmWZBOiQwi9FuQYtpnmmT80L1KXWyOKJV6wGdAri3mNe/ue2S0TziSbQ/4+Dj4ubFKgkH7thb5q2dFyxw5FzhYzRQiXFqD/pxcNN9uL0lQI2Al0Eci0zX8Kcd1rAQ6RzLEoSmco=,iv:zo/3QFKTUEDxLy1k5yyU7Z1JMZ7cKdYUc6GHjaTTZKQ=,tag:f63Eja3lBfwJCYAOyEt56g==,type:str]",
16 "unencrypted_suffix": "_unencrypted",
17 "version": "3.10.2"
18 }
19}
diff --git a/hosts/sif/mail/secrets.yaml b/hosts/sif/email/secrets.yaml
index 3c74b710..3c74b710 100644
--- a/hosts/sif/mail/secrets.yaml
+++ b/hosts/sif/email/secrets.yaml
diff --git a/hosts/sif/greetd/default.nix b/hosts/sif/greetd/default.nix
new file mode 100644
index 00000000..37ca13c5
--- /dev/null
+++ b/hosts/sif/greetd/default.nix
@@ -0,0 +1,49 @@
1{ pkgs, ... }:
2{
3 config = {
4 services.greetd = {
5 enable = true;
6 # settings.default_session.command = let
7 # cfg = config.programs.regreet;
8 # in pkgs.writeShellScript "greeter" ''
9 # modprobe -r nvidia_drm
10
11 # exec ${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package}
12 # '';
13 };
14 systemd.services.greetd.environment = {
15 XKB_DEFAULT_LAYOUT = "us,us";
16 XKB_DEFAULT_VARIANT = "dvp,";
17 XKB_DEFAULT_OPTIONS = "compose:caps,grp:win_space_toggle";
18 };
19 programs.regreet = {
20 enable = true;
21 theme = {
22 package = pkgs.equilux-theme;
23 name = "Equilux-compact";
24 };
25 iconTheme = {
26 package = pkgs.paper-icon-theme;
27 name = "Paper-Mono-Dark";
28 };
29 font = {
30 package = pkgs.fira;
31 name = "Fira Sans";
32 # size = 6;
33 };
34 cageArgs = [ "-s" "-m" "last" ];
35 settings = {
36 GTK.application_prefer_dark_theme = true;
37 widget.clock.format = "%F %H:%M:%S%:z";
38 background = {
39 path = pkgs.runCommand "wallpaper.png" {
40 buildInputs = with pkgs; [ imagemagick ];
41 } ''
42 magick ${./wallpaper.png} -filter Gaussian -resize 6.25% -define filter:sigma=2.5 -resize 1600% "$out"
43 '';
44 fit = "Cover";
45 };
46 };
47 };
48 };
49}
diff --git a/hosts/sif/greetd/wallpaper.png b/hosts/sif/greetd/wallpaper.png
new file mode 100644
index 00000000..20fc761a
--- /dev/null
+++ b/hosts/sif/greetd/wallpaper.png
Binary files differ
diff --git a/hosts/sif/hw.nix b/hosts/sif/hw.nix
index d1fb2934..e567c37d 100644
--- a/hosts/sif/hw.nix
+++ b/hosts/sif/hw.nix
@@ -19,10 +19,13 @@
19 "/var/lib/sops-nix".neededForBoot = true; 19 "/var/lib/sops-nix".neededForBoot = true;
20 "/var/lib/systemd".neededForBoot = true; 20 "/var/lib/systemd".neededForBoot = true;
21 }; 21 };
22 swapDevices = [
23 { label = "swap"; }
24 ];
22 # system.etc.overlay.enable = false; 25 # system.etc.overlay.enable = false;
23 26
24 boot.initrd.systemd.packages = [ 27 boot.initrd.systemd.packages = [
25 (pkgs.writeTextDir "/etc/systemd/system/\\x2ebcachefs.mount.d/block_scan.conf" '' 28 (pkgs.writeTextDir "/etc/systemd/system/sysroot-.bcachefs.mount.d/block_scan.conf" ''
26 [Mount] 29 [Mount]
27 Environment=BCACHEFS_BLOCK_SCAN=1 30 Environment=BCACHEFS_BLOCK_SCAN=1
28 '') 31 '')
diff --git a/hosts/sif/libvirt/default.nix b/hosts/sif/libvirt/default.nix
index d0be7dff..9712d0d9 100644
--- a/hosts/sif/libvirt/default.nix
+++ b/hosts/sif/libvirt/default.nix
@@ -8,6 +8,7 @@ with flakeInputs.nixVirt.lib;
8 qemu.swtpm.enable = true; 8 qemu.swtpm.enable = true;
9 allowedBridges = ["virbr0" "rz-0971" "rz-2403"]; 9 allowedBridges = ["virbr0" "rz-0971" "rz-2403"];
10 }; 10 };
11 virtualisation.spiceUSBRedirection.enable = true;
11 virtualisation.libvirt = { 12 virtualisation.libvirt = {
12 enable = true; 13 enable = true;
13 swtpm.enable = true; 14 swtpm.enable = true;
diff --git a/hosts/sif/mail/default.nix b/hosts/sif/mail/default.nix
deleted file mode 100644
index f36cd599..00000000
--- a/hosts/sif/mail/default.nix
+++ /dev/null
@@ -1,70 +0,0 @@
1{ config, pkgs, ... }:
2{
3 services.postfix = {
4 enable = true;
5 enableSmtp = true;
6 enableSubmission = false;
7 setSendmail = true;
8 networksStyle = "host";
9 hostname = "sif.midgard.yggdrasil";
10 destination = [];
11 relayHost = "uucp:ymir";
12 recipientDelimiter = "+";
13 masterConfig = {
14 uucp = {
15 type = "unix";
16 private = true;
17 privileged = true;
18 chroot = false;
19 command = "pipe";
20 args = [ "flags=Fqhu" "user=uucp" ''argv=${config.security.wrapperDir}/uux -z -a $sender - $nexthop!rmail ($recipient)'' ];
21 };
22 smtps = {
23 type = "unix";
24 private = true;
25 privileged = true;
26 chroot = false;
27 command = "smtp";
28 args = [ "-o" "smtp_tls_wrappermode=yes" "-o" "smtp_tls_security_level=encrypt" ];
29 };
30 };
31 config = {
32 default_transport = "uucp:ymir";
33
34 inet_interfaces = "loopback-only";
35
36 authorized_submit_users = ["!uucp" "static:anyone"];
37 message_size_limit = "0";
38
39 sender_dependent_default_transport_maps = ''regexp:${pkgs.writeText "sender_relay" ''
40 /@(cip|stud)\.ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtp.ifi.lmu.de
41 /@ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtpin1.ifi.lmu.de:587
42 /@math(ematik)?\.(lmu|uni-muenchen)\.de$/ smtps:smtp.math.lmu.de:465
43 /@(campus\.)?lmu\.de$/ smtp:postout.lrz.de
44 ''}'';
45 sender_bcc_maps = ''regexp:${pkgs.writeText "sender_bcc" ''
46 /^uni2work(-[^@]*)?@ifi\.lmu\.de$/ uni2work@ifi.lmu.de
47 /@ifi\.lmu\.de$/ gregor.kleen@ifi.lmu.de
48 ''}'';
49
50 smtp_sasl_auth_enable = true;
51 smtp_sender_dependent_authentication = true;
52 smtp_sasl_tls_security_options = "noanonymous";
53 smtp_sasl_mechanism_filter = ["plain"];
54 smtp_sasl_password_maps = "regexp:/var/db/postfix/sasl_passwd";
55 smtp_cname_overrides_servername = false;
56 smtp_always_send_ehlo = true;
57 smtp_tls_security_level = "dane";
58
59 smtp_tls_loglevel = "1";
60 smtp_dns_support_level = "dnssec";
61 };
62 };
63
64 sops.secrets.postfix-sasl-passwd = {
65 key = "sasl-passwd";
66 path = "/var/db/postfix/sasl_passwd";
67 owner = "postfix";
68 sopsFile = ./secrets.yaml;
69 };
70}
diff --git a/hosts/sif/ruleset.nft b/hosts/sif/ruleset.nft
index 2af8b2ee..62339f69 100644
--- a/hosts/sif/ruleset.nft
+++ b/hosts/sif/ruleset.nft
@@ -61,7 +61,7 @@ table inet filter {
61 counter mosh-rx {} 61 counter mosh-rx {}
62 counter wg-rx {} 62 counter wg-rx {}
63 counter yggdrasil-gre-rx {} 63 counter yggdrasil-gre-rx {}
64 counter quickserve-rx {} 64 counter miniserve-rx {}
65 counter ausweisapp2-rx {} 65 counter ausweisapp2-rx {}
66 66
67 counter established-rx {} 67 counter established-rx {}
@@ -81,7 +81,7 @@ table inet filter {
81 counter mosh-tx {} 81 counter mosh-tx {}
82 counter wg-tx {} 82 counter wg-tx {}
83 counter yggdrasil-gre-tx {} 83 counter yggdrasil-gre-tx {}
84 counter quickserve-tx {} 84 counter miniserve-tx {}
85 85
86 counter tx {} 86 counter tx {}
87 87
@@ -134,7 +134,7 @@ table inet filter {
134 tcp dport 22 counter name ssh-rx accept 134 tcp dport 22 counter name ssh-rx accept
135 udp dport 60000-61000 counter name mosh-rx accept 135 udp dport 60000-61000 counter name mosh-rx accept
136 136
137 tcp dport 8000 counter name quickserve-rx accept 137 tcp dport 8080 counter name miniserve-rx accept
138 udp dport 24727 counter name ausweisapp2-rx accept 138 udp dport 24727 counter name ausweisapp2-rx accept
139 139
140 udp dport 51820-51822 counter name wg-rx accept 140 udp dport 51820-51822 counter name wg-rx accept
@@ -173,7 +173,7 @@ table inet filter {
173 udp sport 51820-51822 counter name wg-tx 173 udp sport 51820-51822 counter name wg-tx
174 iifname "yggdrasil-wg-*" meta l4proto gre counter name yggdrasil-gre-tx 174 iifname "yggdrasil-wg-*" meta l4proto gre counter name yggdrasil-gre-tx
175 175
176 tcp sport 8000 counter name quickserve-tx accept 176 tcp sport 8080 counter name miniserve-tx accept
177 177
178 oifname virbr0 udp sport 67 counter name libvirt-dhcp accept 178 oifname virbr0 udp sport 67 counter name libvirt-dhcp accept
179 oifname virbr0 udp sport 547 counter name libvirt-dhcp accept 179 oifname virbr0 udp sport 547 counter name libvirt-dhcp accept