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.nix152
1 files changed, 38 insertions, 114 deletions
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix
index 6b710f2b..6214569a 100644
--- a/hosts/sif/default.nix
+++ b/hosts/sif/default.nix
@@ -12,7 +12,7 @@ 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 niri-unstable networkmanager 16 tmpfs-root bcachefs initrd-all-crypto-modules default-locale openssh rebuild-machines niri-unstable networkmanager
17 flakeInputs.nixos-hardware.nixosModules.lenovo-thinkpad-p1 17 flakeInputs.nixos-hardware.nixosModules.lenovo-thinkpad-p1
18 flakeInputs.impermanence.nixosModules.impermanence 18 flakeInputs.impermanence.nixosModules.impermanence
@@ -26,9 +26,6 @@ in {
26 allowUnfree = true; 26 allowUnfree = true;
27 pulseaudio = true; 27 pulseaudio = true;
28 }; 28 };
29 extraOverlays = [
30 flakeInputs.niri-flake.overlays.niri
31 ];
32 }; 29 };
33 30
34 time.timeZone = null; 31 time.timeZone = null;
@@ -55,6 +52,7 @@ in {
55 systemd-boot = { 52 systemd-boot = {
56 enable = true; 53 enable = true;
57 configurationLimit = 15; 54 configurationLimit = 15;
55 netbootxyz.enable = true;
58 }; 56 };
59 efi.canTouchEfiVariables = true; 57 efi.canTouchEfiVariables = true;
60 timeout = null; 58 timeout = null;
@@ -128,40 +126,16 @@ in {
128 rulesetFile = ./ruleset.nft; 126 rulesetFile = ./ruleset.nft;
129 }; 127 };
130 128
131 # firewall = {
132 # enable = true;
133 # allowedTCPPorts = [ 22 # ssh
134 # 8000 # quickserve
135 # ];
136 # };
137
138 # wlanInterfaces = {
139 # wlan0 = {
140 # device = "wlp82s0";
141 # };
142 # };
143
144 # bonds = {
145 # "lan" = {
146 # interfaces = [ "wlan0" "enp0s31f6" "dock0" ];
147 # driverOptions = {
148 # miimon = "1000";
149 # mode = "active-backup";
150 # primary_reselect = "always";
151 # };
152 # };
153 # };
154
155 useDHCP = false; 129 useDHCP = false;
156 useNetworkd = true; 130 useNetworkd = true;
157
158 # interfaces."tinc.yggdrasil" = {
159 # virtual = true;
160 # virtualType = config.services.tinc.networks.yggdrasil.interfaceType;
161 # macAddress = "5c:93:21:c3:61:39";
162 # };
163 }; 131 };
164 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 };
165 environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = { 139 environment.etc."NetworkManager/dnsmasq.d/libvirt_dnsmasq.conf" = {
166 text = '' 140 text = ''
167 except-interface=virbr0 141 except-interface=virbr0
@@ -404,19 +378,6 @@ in {
404 ]; 378 ];
405 379
406 services = { 380 services = {
407 uucp = {
408 enable = true;
409 nodeName = "sif";
410 remoteNodes = {
411 "ymir" = {
412 publicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG6KNtsCOl5fsZ4rV7udTulGMphJweLBoKapzerWNoLY root@ymir"];
413 hostnames = ["ymir.yggdrasil.li" "ymir.niflheim.yggdrasil"];
414 };
415 };
416
417 defaultCommands = lib.mkForce [];
418 };
419
420 avahi.enable = true; 381 avahi.enable = true;
421 382
422 fwupd.enable = true; 383 fwupd.enable = true;
@@ -435,8 +396,8 @@ in {
435 396
436 logind = { 397 logind = {
437 lidSwitch = "suspend"; 398 lidSwitch = "suspend";
438 lidSwitchDocked = "lock"; 399 lidSwitchDocked = "ignore";
439 lidSwitchExternalPower = "lock"; 400 lidSwitchExternalPower = "ignore";
440 }; 401 };
441 402
442 atd = { 403 atd = {
@@ -471,47 +432,18 @@ in {
471 }; 432 };
472 libinput.enable = true; 433 libinput.enable = true;
473 434
474 greetd = { 435 envfs.enable = false;
475 enable = true;
476 # settings.default_session.command = let
477 # cfg = config.programs.regreet;
478 # in pkgs.writeShellScript "greeter" ''
479 # modprobe -r nvidia_drm
480 436
481 # exec ${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package} 437 displayManager.defaultSession = "Niri";
482 # '';
483 };
484 };
485
486 programs.regreet = {
487 enable = true;
488 theme = {
489 package = pkgs.equilux-theme;
490 name = "Equilux-compact";
491 };
492 iconTheme = {
493 package = pkgs.paper-icon-theme;
494 name = "Paper-Mono-Dark";
495 };
496 font = {
497 package = pkgs.fira;
498 name = "Fira Sans";
499 # size = 6;
500 };
501 cageArgs = [ "-s" "-m" "last" ];
502 settings = {
503 GTK.application_prefer_dark_theme = true;
504 };
505 }; 438 };
506 programs.niri.enable = true;
507 439
508 systemd.tmpfiles.settings = { 440 systemd.tmpfiles.settings = {
509 "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; 441 "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime";
510 442
511 "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" {
512 last_user = "gkleen"; 444 # last_user = "gkleen";
513 user_to_last_sess.gkleen = "Niri"; 445 # user_to_last_sess.gkleen = "Niri";
514 }); 446 # });
515 }; 447 };
516 448
517 users = { 449 users = {
@@ -620,15 +552,15 @@ in {
620 }; 552 };
621 553
622 nvidia = { 554 nvidia = {
623 open = true; 555 open = false;
624 modesetting.enable = true; 556 modesetting.enable = true;
625 powerManagement.enable = false; 557 powerManagement.enable = true;
626 prime = { 558 # prime = {
627 nvidiaBusId = "PCI:1:0:0"; 559 # nvidiaBusId = "PCI:1:0:0";
628 intelBusId = "PCI:0:2:0"; 560 # intelBusId = "PCI:0:2:0";
629 reverseSync.enable = true; 561 # reverseSync.enable = true;
630 offload.enableOffloadCmd = true; 562 # offload.enableOffloadCmd = true;
631 }; 563 # };
632 }; 564 };
633 565
634 graphics = { 566 graphics = {
@@ -671,25 +603,6 @@ in {
671 603
672 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;
673 605
674 systemd.services."ac-plugged" = {
675 description = "Inhibit handling of lid-switch and sleep";
676
677 path = with pkgs; [ systemd coreutils ];
678
679 script = ''
680 exec systemd-inhibit --what=handle-lid-switch --why="AC is connected" --mode=block sleep infinity
681 '';
682
683 serviceConfig = {
684 Type = "simple";
685 };
686 };
687
688 services.udev.extraRules = with pkgs; lib.mkAfter ''
689 SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="${systemd}/bin/systemctl --no-block stop ac-plugged.service"
690 SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="${systemd}/bin/systemctl --no-block start ac-plugged.service"
691 '';
692
693 systemd.services."nix-daemon".serviceConfig = { 606 systemd.services."nix-daemon".serviceConfig = {
694 MemoryAccounting = true; 607 MemoryAccounting = true;
695 MemoryHigh = "50%"; 608 MemoryHigh = "50%";
@@ -702,6 +615,7 @@ in {
702 615
703 services.dbus.packages = with pkgs; 616 services.dbus.packages = with pkgs;
704 [ dbus dconf 617 [ dbus dconf
618 xdg-desktop-portal-gtk
705 ]; 619 ];
706 620
707 services.udisks2.enable = true; 621 services.udisks2.enable = true;
@@ -710,6 +624,8 @@ in {
710 light.enable = true; 624 light.enable = true;
711 wireshark.enable = true; 625 wireshark.enable = true;
712 dconf.enable = true; 626 dconf.enable = true;
627 niri.enable = true;
628 fuse.userAllowOther = true;
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 ];