diff options
Diffstat (limited to 'hosts/sif/default.nix')
| -rw-r--r-- | hosts/sif/default.nix | 161 |
1 files changed, 38 insertions, 123 deletions
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix index 0897e1d8..2dcf5459 100644 --- a/hosts/sif/default.nix +++ b/hosts/sif/default.nix | |||
| @@ -12,10 +12,9 @@ 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 ./greetd | 15 | ./email ./libvirt ./greetd |
| 16 | tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines niri-unstable networkmanager | 16 | tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines niri-unstable networkmanager lanzaboote zswap |
| 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 | ||
| @@ -34,6 +33,10 @@ in { | |||
| 34 | initrd = { | 33 | initrd = { |
| 35 | systemd = { | 34 | systemd = { |
| 36 | emergencyAccess = config.users.users.root.hashedPassword; | 35 | emergencyAccess = config.users.users.root.hashedPassword; |
| 36 | extraBin = { | ||
| 37 | "vim" = lib.getExe pkgs.vim; | ||
| 38 | "grep" = lib.getExe pkgs.gnugrep; | ||
| 39 | }; | ||
| 37 | }; | 40 | }; |
| 38 | luks.devices = { | 41 | luks.devices = { |
| 39 | nvm0 = { device = "/dev/disk/by-uuid/bef17e86-d929-4a60-97cb-6bfa133face7"; bypassWorkqueues = true; }; | 42 | nvm0 = { device = "/dev/disk/by-uuid/bef17e86-d929-4a60-97cb-6bfa133face7"; bypassWorkqueues = true; }; |
| @@ -47,35 +50,22 @@ in { | |||
| 47 | 50 | ||
| 48 | blacklistedKernelModules = [ "nouveau" ]; | 51 | blacklistedKernelModules = [ "nouveau" ]; |
| 49 | 52 | ||
| 50 | # Use the systemd-boot EFI boot loader. | 53 | lanzaboote.configurationLimit = 15; |
| 51 | loader = { | 54 | loader = { |
| 52 | systemd-boot = { | ||
| 53 | enable = true; | ||
| 54 | configurationLimit = 15; | ||
| 55 | netbootxyz.enable = true; | ||
| 56 | }; | ||
| 57 | efi.canTouchEfiVariables = true; | 55 | efi.canTouchEfiVariables = true; |
| 58 | timeout = null; | 56 | timeout = null; |
| 59 | }; | 57 | }; |
| 60 | 58 | ||
| 61 | plymouth.enable = true; | 59 | plymouth.enable = true; |
| 62 | 60 | ||
| 63 | kernelPackages = pkgs.linuxPackages_latest; | 61 | kernelPackages = pkgs.linuxPackages_6_18; |
| 64 | kernelPatches = [ | 62 | consoleLogLevel = 3; |
| 65 | { name = "edac-config"; | 63 | kernelParams = [ |
| 66 | patch = null; | 64 | "quiet" |
| 67 | extraStructuredConfig = with lib.kernel; { | 65 | "boot.shell_on_fail" |
| 68 | EDAC = yes; | 66 | "udev.log_priority=3" |
| 69 | EDAC_IE31200 = yes; | 67 | "rd.systemd.show_status=auto" |
| 70 | }; | 68 | "plymouth.use-simpledrm" |
| 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 | }; | ||
| 78 | } | ||
| 79 | ]; | 69 | ]; |
| 80 | 70 | ||
| 81 | tmp.useTmpfs = true; | 71 | tmp.useTmpfs = true; |
| @@ -98,6 +88,8 @@ in { | |||
| 98 | server ptbtime2.ptb.de prefer iburst nts | 88 | server ptbtime2.ptb.de prefer iburst nts |
| 99 | server ptbtime3.ptb.de prefer iburst nts | 89 | server ptbtime3.ptb.de prefer iburst nts |
| 100 | server ptbtime4.ptb.de prefer iburst nts | 90 | server ptbtime4.ptb.de prefer iburst nts |
| 91 | pool ntppool1.time.nl prefer iburst nts | ||
| 92 | pool ntppool2.time.nl prefer iburst nts | ||
| 101 | 93 | ||
| 102 | authselectmode require | 94 | authselectmode require |
| 103 | minsources 3 | 95 | minsources 3 |
| @@ -126,40 +118,16 @@ in { | |||
| 126 | rulesetFile = ./ruleset.nft; | 118 | rulesetFile = ./ruleset.nft; |
| 127 | }; | 119 | }; |
| 128 | 120 | ||
| 129 | # firewall = { | ||
| 130 | # enable = true; | ||
| 131 | # allowedTCPPorts = [ 22 # ssh | ||
| 132 | # 8000 # quickserve | ||
| 133 | # ]; | ||
| 134 | # }; | ||
| 135 | |||
| 136 | # wlanInterfaces = { | ||
| 137 | # wlan0 = { | ||
| 138 | # device = "wlp82s0"; | ||
| 139 | # }; | ||
| 140 | # }; | ||
| 141 | |||
| 142 | # bonds = { | ||
| 143 | # "lan" = { | ||
| 144 | # interfaces = [ "wlan0" "enp0s31f6" "dock0" ]; | ||
| 145 | # driverOptions = { | ||
| 146 | # miimon = "1000"; | ||
| 147 | # mode = "active-backup"; | ||
| 148 | # primary_reselect = "always"; | ||
| 149 | # }; | ||
| 150 | # }; | ||
| 151 | # }; | ||
| 152 | |||
| 153 | useDHCP = false; | 121 | useDHCP = false; |
| 154 | useNetworkd = true; | 122 | useNetworkd = true; |
| 155 | |||
| 156 | # interfaces."tinc.yggdrasil" = { | ||
| 157 | # virtual = true; | ||
| 158 | # virtualType = config.services.tinc.networks.yggdrasil.interfaceType; | ||
| 159 | # macAddress = "5c:93:21:c3:61:39"; | ||
| 160 | # }; | ||
| 161 | }; | 123 | }; |
| 162 | 124 | ||
| 125 | environment.etc."NetworkManager/dnsmasq.d/dnssec.conf" = { | ||
| 126 | text = '' | ||
| 127 | conf-file=${pkgs.dnsmasq}/share/dnsmasq/trust-anchors.conf | ||
| 128 | dnssec | ||
| 129 | ''; | ||
| 130 | }; | ||
| 163 | environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { | 131 | environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { |
| 164 | text = '' | 132 | text = '' |
| 165 | except-interface=virbr0 | 133 | except-interface=virbr0 |
| @@ -402,19 +370,6 @@ in { | |||
| 402 | ]; | 370 | ]; |
| 403 | 371 | ||
| 404 | services = { | 372 | services = { |
| 405 | uucp = { | ||
| 406 | enable = true; | ||
| 407 | nodeName = "sif"; | ||
| 408 | remoteNodes = { | ||
| 409 | "ymir" = { | ||
| 410 | publicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG6KNtsCOl5fsZ4rV7udTulGMphJweLBoKapzerWNoLY root@ymir"]; | ||
| 411 | hostnames = ["ymir.yggdrasil.li" "ymir.niflheim.yggdrasil"]; | ||
| 412 | }; | ||
| 413 | }; | ||
| 414 | |||
| 415 | defaultCommands = lib.mkForce []; | ||
| 416 | }; | ||
| 417 | |||
| 418 | avahi.enable = true; | 373 | avahi.enable = true; |
| 419 | 374 | ||
| 420 | fwupd.enable = true; | 375 | fwupd.enable = true; |
| @@ -431,10 +386,10 @@ in { | |||
| 431 | 386 | ||
| 432 | thinkfan.enable = true; | 387 | thinkfan.enable = true; |
| 433 | 388 | ||
| 434 | logind = { | 389 | logind.settings.Login = { |
| 435 | lidSwitch = "suspend"; | 390 | HandleLidSwitch = "suspend"; |
| 436 | lidSwitchDocked = "lock"; | 391 | HandleLidSwitchDocked = "ignore"; |
| 437 | lidSwitchExternalPower = "lock"; | 392 | HandleLidSwitchExternalPower = "ignore"; |
| 438 | }; | 393 | }; |
| 439 | 394 | ||
| 440 | atd = { | 395 | atd = { |
| @@ -476,11 +431,6 @@ in { | |||
| 476 | 431 | ||
| 477 | systemd.tmpfiles.settings = { | 432 | systemd.tmpfiles.settings = { |
| 478 | "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; | 433 | "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; |
| 479 | |||
| 480 | # "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" { | ||
| 481 | # last_user = "gkleen"; | ||
| 482 | # user_to_last_sess.gkleen = "Niri"; | ||
| 483 | # }); | ||
| 484 | }; | 434 | }; |
| 485 | 435 | ||
| 486 | users = { | 436 | users = { |
| @@ -606,10 +556,9 @@ in { | |||
| 606 | # setLdLibraryPath = true; | 556 | # setLdLibraryPath = true; |
| 607 | }; | 557 | }; |
| 608 | 558 | ||
| 609 | firmware = [ pkgs.firmwareLinuxNonfree ]; | 559 | firmware = [ pkgs.linux-firmware ]; |
| 610 | 560 | ||
| 611 | keyboard.uhk.enable = true; | 561 | keyboard.uhk.enable = true; |
| 612 | nitrokey.enable = true; | ||
| 613 | }; | 562 | }; |
| 614 | 563 | ||
| 615 | # sound.enable = true; | 564 | # sound.enable = true; |
| @@ -640,25 +589,6 @@ in { | |||
| 640 | 589 | ||
| 641 | environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf; | 590 | environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf; |
| 642 | 591 | ||
| 643 | systemd.services."ac-plugged" = { | ||
| 644 | description = "Inhibit handling of lid-switch and sleep"; | ||
| 645 | |||
| 646 | path = with pkgs; [ systemd coreutils ]; | ||
| 647 | |||
| 648 | script = '' | ||
| 649 | exec systemd-inhibit --what=handle-lid-switch --why="AC is connected" --mode=block sleep infinity | ||
| 650 | ''; | ||
| 651 | |||
| 652 | serviceConfig = { | ||
| 653 | Type = "simple"; | ||
| 654 | }; | ||
| 655 | }; | ||
| 656 | |||
| 657 | services.udev.extraRules = with pkgs; lib.mkAfter '' | ||
| 658 | SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="${systemd}/bin/systemctl --no-block stop ac-plugged.service" | ||
| 659 | SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="${systemd}/bin/systemctl --no-block start ac-plugged.service" | ||
| 660 | ''; | ||
| 661 | |||
| 662 | systemd.services."nix-daemon".serviceConfig = { | 592 | systemd.services."nix-daemon".serviceConfig = { |
| 663 | MemoryAccounting = true; | 593 | MemoryAccounting = true; |
| 664 | MemoryHigh = "50%"; | 594 | MemoryHigh = "50%"; |
| @@ -682,6 +612,10 @@ in { | |||
| 682 | dconf.enable = true; | 612 | dconf.enable = true; |
| 683 | niri.enable = true; | 613 | niri.enable = true; |
| 684 | fuse.userAllowOther = true; | 614 | fuse.userAllowOther = true; |
| 615 | captive-browser = { | ||
| 616 | enable = true; | ||
| 617 | interface = "wlp82s0"; | ||
| 618 | }; | ||
| 685 | }; | 619 | }; |
| 686 | 620 | ||
| 687 | services.pcscd.enable = true; | 621 | services.pcscd.enable = true; |
| @@ -693,11 +627,6 @@ in { | |||
| 693 | group = "users"; | 627 | group = "users"; |
| 694 | }; | 628 | }; |
| 695 | 629 | ||
| 696 | i18n.inputMethod = { | ||
| 697 | enable = true; | ||
| 698 | type = "ibus"; | ||
| 699 | }; | ||
| 700 | |||
| 701 | environment.sessionVariables."GTK_USE_PORTAL" = "1"; | 630 | environment.sessionVariables."GTK_USE_PORTAL" = "1"; |
| 702 | xdg.portal = { | 631 | xdg.portal = { |
| 703 | enable = true; | 632 | enable = true; |
| @@ -708,7 +637,7 @@ in { | |||
| 708 | "org.freedesktop.impl.portal.OpenFile" = ["gtk"]; | 637 | "org.freedesktop.impl.portal.OpenFile" = ["gtk"]; |
| 709 | "org.freedesktop.impl.portal.Access" = ["gtk"]; | 638 | "org.freedesktop.impl.portal.Access" = ["gtk"]; |
| 710 | "org.freedesktop.impl.portal.Notification" = ["gtk"]; | 639 | "org.freedesktop.impl.portal.Notification" = ["gtk"]; |
| 711 | "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; | 640 | "org.freedesktop.impl.portal.Secret" = ["none"]; |
| 712 | "org.freedesktop.impl.portal.Inhibit" = ["none"]; | 641 | "org.freedesktop.impl.portal.Inhibit" = ["none"]; |
| 713 | }; | 642 | }; |
| 714 | }; | 643 | }; |
| @@ -718,7 +647,7 @@ in { | |||
| 718 | directories = [ | 647 | directories = [ |
| 719 | "/nix" | 648 | "/nix" |
| 720 | "/root" | 649 | "/root" |
| 721 | "/home" | 650 | "/home" |
| 722 | "/var/log" | 651 | "/var/log" |
| 723 | "/var/lib/sops-nix" | 652 | "/var/lib/sops-nix" |
| 724 | "/var/lib/nixos" | 653 | "/var/lib/nixos" |
| @@ -728,33 +657,19 @@ in { | |||
| 728 | "/var/lib/bluetooth" | 657 | "/var/lib/bluetooth" |
| 729 | "/var/lib/upower" | 658 | "/var/lib/upower" |
| 730 | "/var/lib/postfix" | 659 | "/var/lib/postfix" |
| 660 | "/var/lib/regreet" | ||
| 731 | "/etc/NetworkManager/system-connections" | 661 | "/etc/NetworkManager/system-connections" |
| 732 | { directory = "/var/uucp"; user = "uucp"; group = "uucp"; mode = "0700"; } | 662 | config.boot.lanzaboote.pkiBundle |
| 733 | { directory = "/var/spool/uucp"; user = "uucp"; group = "uucp"; mode = "0750"; } | ||
| 734 | ]; | 663 | ]; |
| 735 | files = [ | 664 | files = [ |
| 736 | ]; | 665 | ]; |
| 666 | timezone = true; | ||
| 737 | }; | 667 | }; |
| 738 | 668 | ||
| 739 | systemd.services.timezone = { | 669 | security.pam.services.quickshell = {}; |
| 740 | wantedBy = [ "multi-user.target" ]; | ||
| 741 | serviceConfig = { | ||
| 742 | Type = "oneshot"; | ||
| 743 | RemainAfterExit = true; | ||
| 744 | ExecStart = "${pkgs.coreutils}/bin/cp -vP /.bcachefs/etc/localtime /etc/localtime"; | ||
| 745 | ExecStop = "${pkgs.coreutils}/bin/cp -vP /etc/localtime /.bcachefs/etc/localtime"; | ||
| 746 | }; | ||
| 747 | }; | ||
| 748 | services.tzupdate.enable = true; | ||
| 749 | |||
| 750 | security.pam.services.gtklock = {}; | ||
| 751 | 670 | ||
| 752 | home-manager.sharedModules = [ flakeInputs.nixVirt.homeModules.default ]; | 671 | home-manager.sharedModules = [ flakeInputs.nixVirt.homeModules.default ]; |
| 753 | 672 | ||
| 754 | environment.pathsToLink = [ | ||
| 755 | "share/zsh" | ||
| 756 | ]; | ||
| 757 | |||
| 758 | system.stateVersion = "24.11"; | 673 | system.stateVersion = "24.11"; |
| 759 | }; | 674 | }; |
| 760 | } | 675 | } |
