diff options
Diffstat (limited to 'hosts/sif')
-rw-r--r-- | hosts/sif/default.nix | 187 | ||||
-rw-r--r-- | hosts/sif/email/default.nix | 110 | ||||
-rw-r--r-- | hosts/sif/email/relay.crt | 11 | ||||
-rw-r--r-- | hosts/sif/email/relay.key | 19 | ||||
-rw-r--r-- | hosts/sif/email/secrets.yaml (renamed from hosts/sif/mail/secrets.yaml) | 0 | ||||
-rw-r--r-- | hosts/sif/greetd/default.nix | 49 | ||||
-rw-r--r-- | hosts/sif/greetd/wallpaper.png | bin | 0 -> 6073128 bytes | |||
-rw-r--r-- | hosts/sif/hw.nix | 5 | ||||
-rw-r--r-- | hosts/sif/libvirt/default.nix | 1 | ||||
-rw-r--r-- | hosts/sif/mail/default.nix | 70 | ||||
-rw-r--r-- | hosts/sif/ruleset.nft | 8 |
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 | |||
12 | in { | 12 | in { |
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----- | ||
2 | MIIBjDCCAQygAwIBAgIPQAAAAGgLfNoL/PSMAsutMAUGAytlcTAXMRUwEwYDVQQD | ||
3 | DAx5Z2dkcmFzaWwubGkwHhcNMjUwNDI1MTIwOTQ1WhcNMzUwNDI2MTIxNDQ1WjAR | ||
4 | MQ8wDQYDVQQDDAZna2xlZW4wKjAFBgMrZXADIQB3outi3/3F4YO7Q97WAAaMHW0a | ||
5 | m+Blldrgee+EZnWnD6N1MHMwHwYDVR0jBBgwFoAUTtn+VjMw6Ge1f68KD8dT1CWn | ||
6 | l3YwHQYDVR0OBBYEFFOa4rYZYMbXUVdKv98NB504GUhjMA4GA1UdDwEB/wQEAwID | ||
7 | 6DAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAUGAytlcQNzABC0 | ||
8 | 0UgIt7gLZrU1TmzGoqPBris8R1DbKOJacicF5CU0MIIjHcX7mPFW8KtB4qm6KcPq | ||
9 | kF6IaEPmgKpX3Nubk8HJik9vhIy9ysfINcVTvzXx8pO1bxbvREJRyA/apj10nzav | ||
10 | yauId0cXHvN6g5RLAMsMAA== | ||
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 |