diff options
Diffstat (limited to 'hosts/sif')
-rw-r--r-- | hosts/sif/default.nix | 176 | ||||
-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 | 19 | ||||
-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, 260 insertions, 203 deletions
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix index 7c8da63a..6214569a 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 |
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 |
@@ -34,7 +33,6 @@ in { | |||
34 | boot = { | 33 | boot = { |
35 | initrd = { | 34 | initrd = { |
36 | systemd = { | 35 | systemd = { |
37 | enable = false; | ||
38 | emergencyAccess = config.users.users.root.hashedPassword; | 36 | emergencyAccess = config.users.users.root.hashedPassword; |
39 | }; | 37 | }; |
40 | luks.devices = { | 38 | luks.devices = { |
@@ -54,6 +52,7 @@ in { | |||
54 | systemd-boot = { | 52 | systemd-boot = { |
55 | enable = true; | 53 | enable = true; |
56 | configurationLimit = 15; | 54 | configurationLimit = 15; |
55 | netbootxyz.enable = true; | ||
57 | }; | 56 | }; |
58 | efi.canTouchEfiVariables = true; | 57 | efi.canTouchEfiVariables = true; |
59 | timeout = null; | 58 | timeout = null; |
@@ -62,15 +61,20 @@ in { | |||
62 | plymouth.enable = true; | 61 | plymouth.enable = true; |
63 | 62 | ||
64 | kernelPackages = pkgs.linuxPackages_latest; | 63 | kernelPackages = pkgs.linuxPackages_latest; |
65 | extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; | ||
66 | kernelModules = ["v4l2loopback"]; | ||
67 | kernelPatches = [ | 64 | kernelPatches = [ |
68 | { name = "edac-config"; | 65 | { name = "edac-config"; |
69 | patch = null; | 66 | patch = null; |
70 | extraConfig = '' | 67 | extraStructuredConfig = with lib.kernel; { |
71 | EDAC y | 68 | EDAC = yes; |
72 | EDAC_IE31200 y | 69 | EDAC_IE31200 = yes; |
73 | ''; | 70 | }; |
71 | } | ||
72 | { name = "zswap-default"; | ||
73 | patch = null; | ||
74 | extraStructuredConfig = with lib.kernel; { | ||
75 | ZSWAP_DEFAULT_ON = yes; | ||
76 | ZSWAP_SHRINKER_DEFAULT_ON = yes; | ||
77 | }; | ||
74 | } | 78 | } |
75 | ]; | 79 | ]; |
76 | 80 | ||
@@ -122,40 +126,16 @@ in { | |||
122 | rulesetFile = ./ruleset.nft; | 126 | rulesetFile = ./ruleset.nft; |
123 | }; | 127 | }; |
124 | 128 | ||
125 | # firewall = { | ||
126 | # enable = true; | ||
127 | # allowedTCPPorts = [ 22 # ssh | ||
128 | # 8000 # quickserve | ||
129 | # ]; | ||
130 | # }; | ||
131 | |||
132 | # wlanInterfaces = { | ||
133 | # wlan0 = { | ||
134 | # device = "wlp82s0"; | ||
135 | # }; | ||
136 | # }; | ||
137 | |||
138 | # bonds = { | ||
139 | # "lan" = { | ||
140 | # interfaces = [ "wlan0" "enp0s31f6" "dock0" ]; | ||
141 | # driverOptions = { | ||
142 | # miimon = "1000"; | ||
143 | # mode = "active-backup"; | ||
144 | # primary_reselect = "always"; | ||
145 | # }; | ||
146 | # }; | ||
147 | # }; | ||
148 | |||
149 | useDHCP = false; | 129 | useDHCP = false; |
150 | useNetworkd = true; | 130 | useNetworkd = true; |
151 | |||
152 | # interfaces."tinc.yggdrasil" = { | ||
153 | # virtual = true; | ||
154 | # virtualType = config.services.tinc.networks.yggdrasil.interfaceType; | ||
155 | # macAddress = "5c:93:21:c3:61:39"; | ||
156 | # }; | ||
157 | }; | 131 | }; |
158 | 132 | ||
133 | environment.etc."NetworkManager/dnsmasq.d/dnssec.conf" = { | ||
134 | text = '' | ||
135 | conf-file=${pkgs.dnsmasq}/share/dnsmasq/trust-anchors.conf | ||
136 | dnssec | ||
137 | ''; | ||
138 | }; | ||
159 | environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { | 139 | environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { |
160 | text = '' | 140 | text = '' |
161 | except-interface=virbr0 | 141 | except-interface=virbr0 |
@@ -398,19 +378,6 @@ in { | |||
398 | ]; | 378 | ]; |
399 | 379 | ||
400 | services = { | 380 | services = { |
401 | uucp = { | ||
402 | enable = true; | ||
403 | nodeName = "sif"; | ||
404 | remoteNodes = { | ||
405 | "ymir" = { | ||
406 | publicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG6KNtsCOl5fsZ4rV7udTulGMphJweLBoKapzerWNoLY root@ymir"]; | ||
407 | hostnames = ["ymir.yggdrasil.li" "ymir.niflheim.yggdrasil"]; | ||
408 | }; | ||
409 | }; | ||
410 | |||
411 | defaultCommands = lib.mkForce []; | ||
412 | }; | ||
413 | |||
414 | avahi.enable = true; | 381 | avahi.enable = true; |
415 | 382 | ||
416 | fwupd.enable = true; | 383 | fwupd.enable = true; |
@@ -429,8 +396,8 @@ in { | |||
429 | 396 | ||
430 | logind = { | 397 | logind = { |
431 | lidSwitch = "suspend"; | 398 | lidSwitch = "suspend"; |
432 | lidSwitchDocked = "lock"; | 399 | lidSwitchDocked = "ignore"; |
433 | lidSwitchExternalPower = "lock"; | 400 | lidSwitchExternalPower = "ignore"; |
434 | }; | 401 | }; |
435 | 402 | ||
436 | atd = { | 403 | atd = { |
@@ -439,7 +406,7 @@ in { | |||
439 | }; | 406 | }; |
440 | 407 | ||
441 | xserver = { | 408 | xserver = { |
442 | enable = true; | 409 | enable = false; |
443 | 410 | ||
444 | xkb = { | 411 | xkb = { |
445 | layout = "us"; | 412 | layout = "us"; |
@@ -465,47 +432,18 @@ in { | |||
465 | }; | 432 | }; |
466 | libinput.enable = true; | 433 | libinput.enable = true; |
467 | 434 | ||
468 | greetd = { | 435 | envfs.enable = false; |
469 | enable = true; | ||
470 | # settings.default_session.command = let | ||
471 | # cfg = config.programs.regreet; | ||
472 | # in pkgs.writeShellScript "greeter" '' | ||
473 | # modprobe -r nvidia_drm | ||
474 | 436 | ||
475 | # exec ${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package} | 437 | displayManager.defaultSession = "Niri"; |
476 | # ''; | ||
477 | }; | ||
478 | }; | 438 | }; |
479 | 439 | ||
480 | programs.regreet = { | ||
481 | enable = true; | ||
482 | theme = { | ||
483 | package = pkgs.equilux-theme; | ||
484 | name = "Equilux-compact"; | ||
485 | }; | ||
486 | iconTheme = { | ||
487 | package = pkgs.paper-icon-theme; | ||
488 | name = "Paper-Mono-Dark"; | ||
489 | }; | ||
490 | font = { | ||
491 | package = pkgs.fira; | ||
492 | name = "Fira Sans"; | ||
493 | # size = 6; | ||
494 | }; | ||
495 | cageArgs = [ "-s" "-m" "last" ]; | ||
496 | settings = { | ||
497 | GTK.application_prefer_dark_theme = true; | ||
498 | }; | ||
499 | }; | ||
500 | programs.hyprland.enable = true; | ||
501 | |||
502 | systemd.tmpfiles.settings = { | 440 | systemd.tmpfiles.settings = { |
503 | "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; | 441 | "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; |
504 | 442 | ||
505 | "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" { | 443 | # "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" { |
506 | last_user = "gkleen"; | 444 | # last_user = "gkleen"; |
507 | user_to_last_sess.gkleen = "Hyprland"; | 445 | # user_to_last_sess.gkleen = "Niri"; |
508 | }); | 446 | # }); |
509 | }; | 447 | }; |
510 | 448 | ||
511 | users = { | 449 | users = { |
@@ -614,15 +552,15 @@ in { | |||
614 | }; | 552 | }; |
615 | 553 | ||
616 | nvidia = { | 554 | nvidia = { |
617 | open = true; | 555 | open = false; |
618 | modesetting.enable = true; | 556 | modesetting.enable = true; |
619 | powerManagement.enable = true; | 557 | powerManagement.enable = true; |
620 | prime = { | 558 | # prime = { |
621 | nvidiaBusId = "PCI:1:0:0"; | 559 | # nvidiaBusId = "PCI:1:0:0"; |
622 | intelBusId = "PCI:0:2:0"; | 560 | # intelBusId = "PCI:0:2:0"; |
623 | reverseSync.enable = true; | 561 | # reverseSync.enable = true; |
624 | offload.enableOffloadCmd = true; | 562 | # offload.enableOffloadCmd = true; |
625 | }; | 563 | # }; |
626 | }; | 564 | }; |
627 | 565 | ||
628 | graphics = { | 566 | graphics = { |
@@ -665,25 +603,6 @@ in { | |||
665 | 603 | ||
666 | environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf; | 604 | environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf; |
667 | 605 | ||
668 | systemd.services."ac-plugged" = { | ||
669 | description = "Inhibit handling of lid-switch and sleep"; | ||
670 | |||
671 | path = with pkgs; [ systemd coreutils ]; | ||
672 | |||
673 | script = '' | ||
674 | exec systemd-inhibit --what=handle-lid-switch --why="AC is connected" --mode=block sleep infinity | ||
675 | ''; | ||
676 | |||
677 | serviceConfig = { | ||
678 | Type = "simple"; | ||
679 | }; | ||
680 | }; | ||
681 | |||
682 | services.udev.extraRules = with pkgs; lib.mkAfter '' | ||
683 | SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="${systemd}/bin/systemctl --no-block stop ac-plugged.service" | ||
684 | SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="${systemd}/bin/systemctl --no-block start ac-plugged.service" | ||
685 | ''; | ||
686 | |||
687 | systemd.services."nix-daemon".serviceConfig = { | 606 | systemd.services."nix-daemon".serviceConfig = { |
688 | MemoryAccounting = true; | 607 | MemoryAccounting = true; |
689 | MemoryHigh = "50%"; | 608 | MemoryHigh = "50%"; |
@@ -696,6 +615,7 @@ in { | |||
696 | 615 | ||
697 | services.dbus.packages = with pkgs; | 616 | services.dbus.packages = with pkgs; |
698 | [ dbus dconf | 617 | [ dbus dconf |
618 | xdg-desktop-portal-gtk | ||
699 | ]; | 619 | ]; |
700 | 620 | ||
701 | services.udisks2.enable = true; | 621 | services.udisks2.enable = true; |
@@ -704,12 +624,8 @@ in { | |||
704 | light.enable = true; | 624 | light.enable = true; |
705 | wireshark.enable = true; | 625 | wireshark.enable = true; |
706 | dconf.enable = true; | 626 | dconf.enable = true; |
707 | }; | 627 | niri.enable = true; |
708 | 628 | fuse.userAllowOther = true; | |
709 | zramSwap = { | ||
710 | enable = true; | ||
711 | algorithm = "zstd"; | ||
712 | writebackDevice = "/dev/disk/by-label/swap"; | ||
713 | }; | 629 | }; |
714 | 630 | ||
715 | services.pcscd.enable = true; | 631 | services.pcscd.enable = true; |
@@ -729,6 +645,16 @@ in { | |||
729 | environment.sessionVariables."GTK_USE_PORTAL" = "1"; | 645 | environment.sessionVariables."GTK_USE_PORTAL" = "1"; |
730 | xdg.portal = { | 646 | xdg.portal = { |
731 | enable = true; | 647 | enable = true; |
648 | extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; | ||
649 | config.niri = { | ||
650 | default = ["gnome" "gtk"]; | ||
651 | "org.freedesktop.impl.portal.FileChooser" = ["gtk"]; | ||
652 | "org.freedesktop.impl.portal.OpenFile" = ["gtk"]; | ||
653 | "org.freedesktop.impl.portal.Access" = ["gtk"]; | ||
654 | "org.freedesktop.impl.portal.Notification" = ["gtk"]; | ||
655 | "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; | ||
656 | "org.freedesktop.impl.portal.Inhibit" = ["none"]; | ||
657 | }; | ||
732 | }; | 658 | }; |
733 | 659 | ||
734 | environment.persistence."/.bcachefs" = { | 660 | environment.persistence."/.bcachefs" = { |
@@ -736,19 +662,17 @@ in { | |||
736 | directories = [ | 662 | directories = [ |
737 | "/nix" | 663 | "/nix" |
738 | "/root" | 664 | "/root" |
665 | "/home" | ||
739 | "/var/log" | 666 | "/var/log" |
740 | "/var/lib/sops-nix" | 667 | "/var/lib/sops-nix" |
741 | "/var/lib/nixos" | 668 | "/var/lib/nixos" |
742 | "/var/lib/systemd" | 669 | "/var/lib/systemd" |
743 | "/home" | ||
744 | "/var/lib/chrony" | 670 | "/var/lib/chrony" |
745 | "/var/lib/fprint" | 671 | "/var/lib/fprint" |
746 | "/var/lib/bluetooth" | 672 | "/var/lib/bluetooth" |
747 | "/var/lib/upower" | 673 | "/var/lib/upower" |
748 | "/var/lib/postfix" | 674 | "/var/lib/postfix" |
749 | "/etc/NetworkManager/system-connections" | 675 | "/etc/NetworkManager/system-connections" |
750 | { directory = "/var/uucp"; user = "uucp"; group = "uucp"; mode = "0700"; } | ||
751 | { directory = "/var/spool/uucp"; user = "uucp"; group = "uucp"; mode = "0750"; } | ||
752 | ]; | 676 | ]; |
753 | files = [ | 677 | files = [ |
754 | ]; | 678 | ]; |
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 fc20ef7c..1bcf0261 100644 --- a/hosts/sif/hw.nix +++ b/hosts/sif/hw.nix | |||
@@ -8,15 +8,28 @@ | |||
8 | options = [ "fmask=0033" "dmask=0022" ]; | 8 | options = [ "fmask=0033" "dmask=0022" ]; |
9 | }; | 9 | }; |
10 | "/.bcachefs" = | 10 | "/.bcachefs" = |
11 | { device = "/dev/mapper/sif-nvm0:/dev/mapper/sif-nvm1"; | 11 | { options = [ |
12 | "x-systemd.requires=/dev/disk/by-id/dm-name-sif-nvm0" | ||
13 | "x-systemd.requires=/dev/disk/by-id/dm-name-sif-nvm1" | ||
14 | ]; | ||
15 | device = "/dev/disk/by-uuid/fe7bdaac-d2f3-4535-a635-e2fb97ef3802"; | ||
12 | fsType = "bcachefs"; | 16 | fsType = "bcachefs"; |
13 | neededForBoot = true; | 17 | neededForBoot = true; |
14 | }; | 18 | }; |
15 | "/var/lib/sops-nix".neededForBoot = true; | 19 | "/var/lib/sops-nix".neededForBoot = true; |
16 | "/var/lib/systemd".neededForBoot = true; | 20 | "/var/lib/systemd".neededForBoot = true; |
17 | }; | 21 | }; |
18 | system.etc.overlay.enable = false; | 22 | swapDevices = [ |
19 | systemd.sysusers.enable = false; | 23 | { label = "swap"; } |
24 | ]; | ||
25 | # system.etc.overlay.enable = false; | ||
26 | |||
27 | boot.initrd.systemd.packages = [ | ||
28 | (pkgs.writeTextDir "/etc/systemd/system/\\x2ebcachefs.mount.d/block_scan.conf" '' | ||
29 | [Mount] | ||
30 | Environment=BCACHEFS_BLOCK_SCAN=1 | ||
31 | '') | ||
32 | ]; | ||
20 | 33 | ||
21 | # boot.initrd.supportedFilesystems.bcachefs = true; | 34 | # boot.initrd.supportedFilesystems.bcachefs = true; |
22 | # boot.initrd.systemd.units."dev-sif-nvm0:-dev-sif-nvm1.device".enable = false; | 35 | # boot.initrd.systemd.units."dev-sif-nvm0:-dev-sif-nvm1.device".enable = false; |
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 |