summaryrefslogtreecommitdiff
path: root/hosts/sif/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'hosts/sif/default.nix')
-rw-r--r--hosts/sif/default.nix178
1 files changed, 52 insertions, 126 deletions
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix
index 7c8da63a..b0d2fd78 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
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
@@ -94,6 +98,8 @@ in {
94 server ptbtime2.ptb.de prefer iburst nts 98 server ptbtime2.ptb.de prefer iburst nts
95 server ptbtime3.ptb.de prefer iburst nts 99 server ptbtime3.ptb.de prefer iburst nts
96 server ptbtime4.ptb.de prefer iburst nts 100 server ptbtime4.ptb.de prefer iburst nts
101 pool ntppool1.time.nl prefer iburst nts
102 pool ntppool2.time.nl prefer iburst nts
97 103
98 authselectmode require 104 authselectmode require
99 minsources 3 105 minsources 3
@@ -122,40 +128,16 @@ in {
122 rulesetFile = ./ruleset.nft; 128 rulesetFile = ./ruleset.nft;
123 }; 129 };
124 130
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; 131 useDHCP = false;
150 useNetworkd = true; 132 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 }; 133 };
158 134
135 environment.etc."NetworkManager/dnsmasq.d/dnssec.conf" = {
136 text = ''
137 conf-file=${pkgs.dnsmasq}/share/dnsmasq/trust-anchors.conf
138 dnssec
139 '';
140 };
159 environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { 141 environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = {
160 text = '' 142 text = ''
161 except-interface=virbr0 143 except-interface=virbr0
@@ -398,19 +380,6 @@ in {
398 ]; 380 ];
399 381
400 services = { 382 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; 383 avahi.enable = true;
415 384
416 fwupd.enable = true; 385 fwupd.enable = true;
@@ -429,8 +398,8 @@ in {
429 398
430 logind = { 399 logind = {
431 lidSwitch = "suspend"; 400 lidSwitch = "suspend";
432 lidSwitchDocked = "lock"; 401 lidSwitchDocked = "ignore";
433 lidSwitchExternalPower = "lock"; 402 lidSwitchExternalPower = "ignore";
434 }; 403 };
435 404
436 atd = { 405 atd = {
@@ -439,7 +408,7 @@ in {
439 }; 408 };
440 409
441 xserver = { 410 xserver = {
442 enable = true; 411 enable = false;
443 412
444 xkb = { 413 xkb = {
445 layout = "us"; 414 layout = "us";
@@ -465,47 +434,18 @@ in {
465 }; 434 };
466 libinput.enable = true; 435 libinput.enable = true;
467 436
468 greetd = { 437 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 438
475 # exec ${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package} 439 displayManager.defaultSession = "Niri";
476 # '';
477 };
478 }; 440 };
479 441
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 = { 442 systemd.tmpfiles.settings = {
503 "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; 443 "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime";
504 444
505 "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" { 445 # "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" {
506 last_user = "gkleen"; 446 # last_user = "gkleen";
507 user_to_last_sess.gkleen = "Hyprland"; 447 # user_to_last_sess.gkleen = "Niri";
508 }); 448 # });
509 }; 449 };
510 450
511 users = { 451 users = {
@@ -614,15 +554,15 @@ in {
614 }; 554 };
615 555
616 nvidia = { 556 nvidia = {
617 open = true; 557 open = false;
618 modesetting.enable = true; 558 modesetting.enable = true;
619 powerManagement.enable = true; 559 powerManagement.enable = true;
620 prime = { 560 # prime = {
621 nvidiaBusId = "PCI:1:0:0"; 561 # nvidiaBusId = "PCI:1:0:0";
622 intelBusId = "PCI:0:2:0"; 562 # intelBusId = "PCI:0:2:0";
623 reverseSync.enable = true; 563 # reverseSync.enable = true;
624 offload.enableOffloadCmd = true; 564 # offload.enableOffloadCmd = true;
625 }; 565 # };
626 }; 566 };
627 567
628 graphics = { 568 graphics = {
@@ -665,25 +605,6 @@ in {
665 605
666 environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf; 606 environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./wacom.conf;
667 607
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 = { 608 systemd.services."nix-daemon".serviceConfig = {
688 MemoryAccounting = true; 609 MemoryAccounting = true;
689 MemoryHigh = "50%"; 610 MemoryHigh = "50%";
@@ -696,6 +617,7 @@ in {
696 617
697 services.dbus.packages = with pkgs; 618 services.dbus.packages = with pkgs;
698 [ dbus dconf 619 [ dbus dconf
620 xdg-desktop-portal-gtk
699 ]; 621 ];
700 622
701 services.udisks2.enable = true; 623 services.udisks2.enable = true;
@@ -704,12 +626,8 @@ in {
704 light.enable = true; 626 light.enable = true;
705 wireshark.enable = true; 627 wireshark.enable = true;
706 dconf.enable = true; 628 dconf.enable = true;
707 }; 629 niri.enable = true;
708 630 fuse.userAllowOther = true;
709 zramSwap = {
710 enable = true;
711 algorithm = "zstd";
712 writebackDevice = "/dev/disk/by-label/swap";
713 }; 631 };
714 632
715 services.pcscd.enable = true; 633 services.pcscd.enable = true;
@@ -729,6 +647,16 @@ in {
729 environment.sessionVariables."GTK_USE_PORTAL" = "1"; 647 environment.sessionVariables."GTK_USE_PORTAL" = "1";
730 xdg.portal = { 648 xdg.portal = {
731 enable = true; 649 enable = true;
650 extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
651 config.niri = {
652 default = ["gnome" "gtk"];
653 "org.freedesktop.impl.portal.FileChooser" = ["gtk"];
654 "org.freedesktop.impl.portal.OpenFile" = ["gtk"];
655 "org.freedesktop.impl.portal.Access" = ["gtk"];
656 "org.freedesktop.impl.portal.Notification" = ["gtk"];
657 "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
658 "org.freedesktop.impl.portal.Inhibit" = ["none"];
659 };
732 }; 660 };
733 661
734 environment.persistence."/.bcachefs" = { 662 environment.persistence."/.bcachefs" = {
@@ -736,19 +664,17 @@ in {
736 directories = [ 664 directories = [
737 "/nix" 665 "/nix"
738 "/root" 666 "/root"
667 "/home"
739 "/var/log" 668 "/var/log"
740 "/var/lib/sops-nix" 669 "/var/lib/sops-nix"
741 "/var/lib/nixos" 670 "/var/lib/nixos"
742 "/var/lib/systemd" 671 "/var/lib/systemd"
743 "/home"
744 "/var/lib/chrony" 672 "/var/lib/chrony"
745 "/var/lib/fprint" 673 "/var/lib/fprint"
746 "/var/lib/bluetooth" 674 "/var/lib/bluetooth"
747 "/var/lib/upower" 675 "/var/lib/upower"
748 "/var/lib/postfix" 676 "/var/lib/postfix"
749 "/etc/NetworkManager/system-connections" 677 "/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 ]; 678 ];
753 files = [ 679 files = [
754 ]; 680 ];