diff options
Diffstat (limited to 'hosts/sif')
| -rw-r--r-- | hosts/sif/default.nix | 71 | ||||
| -rw-r--r-- | hosts/sif/email/default.nix | 17 | ||||
| -rw-r--r-- | hosts/sif/greetd/default.nix | 123 | ||||
| -rw-r--r-- | hosts/sif/greetd/wallpaper.png | bin | 6073128 -> 0 bytes | |||
| -rw-r--r-- | hosts/sif/hw.nix | 2 |
5 files changed, 125 insertions, 88 deletions
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix index 6214569a..258a83f7 100644 --- a/hosts/sif/default.nix +++ b/hosts/sif/default.nix | |||
| @@ -13,9 +13,8 @@ in { | |||
| 13 | imports = with flake.nixosModules.systemProfiles; [ | 13 | imports = with flake.nixosModules.systemProfiles; [ |
| 14 | ./hw.nix | 14 | ./hw.nix |
| 15 | ./email ./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 |
| 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,13 +50,8 @@ 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 | }; |
| @@ -64,19 +62,27 @@ in { | |||
| 64 | kernelPatches = [ | 62 | kernelPatches = [ |
| 65 | { name = "edac-config"; | 63 | { name = "edac-config"; |
| 66 | patch = null; | 64 | patch = null; |
| 67 | extraStructuredConfig = with lib.kernel; { | 65 | structuredExtraConfig = with lib.kernel; { |
| 68 | EDAC = yes; | 66 | EDAC = yes; |
| 69 | EDAC_IE31200 = yes; | 67 | EDAC_IE31200 = yes; |
| 70 | }; | 68 | }; |
| 71 | } | 69 | } |
| 72 | { name = "zswap-default"; | 70 | { name = "zswap-default"; |
| 73 | patch = null; | 71 | patch = null; |
| 74 | extraStructuredConfig = with lib.kernel; { | 72 | structuredExtraConfig = with lib.kernel; { |
| 75 | ZSWAP_DEFAULT_ON = yes; | 73 | ZSWAP_DEFAULT_ON = yes; |
| 76 | ZSWAP_SHRINKER_DEFAULT_ON = yes; | 74 | ZSWAP_SHRINKER_DEFAULT_ON = yes; |
| 77 | }; | 75 | }; |
| 78 | } | 76 | } |
| 79 | ]; | 77 | ]; |
| 78 | consoleLogLevel = 3; | ||
| 79 | kernelParams = [ | ||
| 80 | "quiet" | ||
| 81 | "boot.shell_on_fail" | ||
| 82 | "udev.log_priority=3" | ||
| 83 | "rd.systemd.show_status=auto" | ||
| 84 | "plymouth.use-simpledrm" | ||
| 85 | ]; | ||
| 80 | 86 | ||
| 81 | tmp.useTmpfs = true; | 87 | tmp.useTmpfs = true; |
| 82 | 88 | ||
| @@ -98,6 +104,8 @@ in { | |||
| 98 | server ptbtime2.ptb.de prefer iburst nts | 104 | server ptbtime2.ptb.de prefer iburst nts |
| 99 | server ptbtime3.ptb.de prefer iburst nts | 105 | server ptbtime3.ptb.de prefer iburst nts |
| 100 | server ptbtime4.ptb.de prefer iburst nts | 106 | server ptbtime4.ptb.de prefer iburst nts |
| 107 | pool ntppool1.time.nl prefer iburst nts | ||
| 108 | pool ntppool2.time.nl prefer iburst nts | ||
| 101 | 109 | ||
| 102 | authselectmode require | 110 | authselectmode require |
| 103 | minsources 3 | 111 | minsources 3 |
| @@ -394,10 +402,10 @@ in { | |||
| 394 | 402 | ||
| 395 | thinkfan.enable = true; | 403 | thinkfan.enable = true; |
| 396 | 404 | ||
| 397 | logind = { | 405 | logind.settings.Login = { |
| 398 | lidSwitch = "suspend"; | 406 | HandleLidSwitch = "suspend"; |
| 399 | lidSwitchDocked = "ignore"; | 407 | HandleLidSwitchDocked = "ignore"; |
| 400 | lidSwitchExternalPower = "ignore"; | 408 | HandleLidSwitchExternalPower = "ignore"; |
| 401 | }; | 409 | }; |
| 402 | 410 | ||
| 403 | atd = { | 411 | atd = { |
| @@ -439,11 +447,6 @@ in { | |||
| 439 | 447 | ||
| 440 | systemd.tmpfiles.settings = { | 448 | systemd.tmpfiles.settings = { |
| 441 | "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; | 449 | "10-localtime"."/etc/localtime".L.argument = "/.bcachefs/etc/localtime"; |
| 442 | |||
| 443 | # "10-regreet"."/var/cache/regreet/cache.toml".C.argument = toString ((pkgs.formats.toml {}).generate "cache.toml" { | ||
| 444 | # last_user = "gkleen"; | ||
| 445 | # user_to_last_sess.gkleen = "Niri"; | ||
| 446 | # }); | ||
| 447 | }; | 450 | }; |
| 448 | 451 | ||
| 449 | users = { | 452 | users = { |
| @@ -569,10 +572,9 @@ in { | |||
| 569 | # setLdLibraryPath = true; | 572 | # setLdLibraryPath = true; |
| 570 | }; | 573 | }; |
| 571 | 574 | ||
| 572 | firmware = [ pkgs.firmwareLinuxNonfree ]; | 575 | firmware = [ pkgs.linux-firmware ]; |
| 573 | 576 | ||
| 574 | keyboard.uhk.enable = true; | 577 | keyboard.uhk.enable = true; |
| 575 | nitrokey.enable = true; | ||
| 576 | }; | 578 | }; |
| 577 | 579 | ||
| 578 | # sound.enable = true; | 580 | # sound.enable = true; |
| @@ -626,6 +628,10 @@ in { | |||
| 626 | dconf.enable = true; | 628 | dconf.enable = true; |
| 627 | niri.enable = true; | 629 | niri.enable = true; |
| 628 | fuse.userAllowOther = true; | 630 | fuse.userAllowOther = true; |
| 631 | captive-browser = { | ||
| 632 | enable = true; | ||
| 633 | interface = "wlp82s0"; | ||
| 634 | }; | ||
| 629 | }; | 635 | }; |
| 630 | 636 | ||
| 631 | services.pcscd.enable = true; | 637 | services.pcscd.enable = true; |
| @@ -637,11 +643,6 @@ in { | |||
| 637 | group = "users"; | 643 | group = "users"; |
| 638 | }; | 644 | }; |
| 639 | 645 | ||
| 640 | i18n.inputMethod = { | ||
| 641 | enable = true; | ||
| 642 | type = "ibus"; | ||
| 643 | }; | ||
| 644 | |||
| 645 | environment.sessionVariables."GTK_USE_PORTAL" = "1"; | 646 | environment.sessionVariables."GTK_USE_PORTAL" = "1"; |
| 646 | xdg.portal = { | 647 | xdg.portal = { |
| 647 | enable = true; | 648 | enable = true; |
| @@ -652,7 +653,7 @@ in { | |||
| 652 | "org.freedesktop.impl.portal.OpenFile" = ["gtk"]; | 653 | "org.freedesktop.impl.portal.OpenFile" = ["gtk"]; |
| 653 | "org.freedesktop.impl.portal.Access" = ["gtk"]; | 654 | "org.freedesktop.impl.portal.Access" = ["gtk"]; |
| 654 | "org.freedesktop.impl.portal.Notification" = ["gtk"]; | 655 | "org.freedesktop.impl.portal.Notification" = ["gtk"]; |
| 655 | "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; | 656 | "org.freedesktop.impl.portal.Secret" = ["none"]; |
| 656 | "org.freedesktop.impl.portal.Inhibit" = ["none"]; | 657 | "org.freedesktop.impl.portal.Inhibit" = ["none"]; |
| 657 | }; | 658 | }; |
| 658 | }; | 659 | }; |
| @@ -672,24 +673,16 @@ in { | |||
| 672 | "/var/lib/bluetooth" | 673 | "/var/lib/bluetooth" |
| 673 | "/var/lib/upower" | 674 | "/var/lib/upower" |
| 674 | "/var/lib/postfix" | 675 | "/var/lib/postfix" |
| 676 | "/var/lib/regreet" | ||
| 675 | "/etc/NetworkManager/system-connections" | 677 | "/etc/NetworkManager/system-connections" |
| 678 | config.boot.lanzaboote.pkiBundle | ||
| 676 | ]; | 679 | ]; |
| 677 | files = [ | 680 | files = [ |
| 678 | ]; | 681 | ]; |
| 682 | timezone = true; | ||
| 679 | }; | 683 | }; |
| 680 | 684 | ||
| 681 | systemd.services.timezone = { | 685 | security.pam.services.quickshell = {}; |
| 682 | wantedBy = [ "multi-user.target" ]; | ||
| 683 | serviceConfig = { | ||
| 684 | Type = "oneshot"; | ||
| 685 | RemainAfterExit = true; | ||
| 686 | ExecStart = "${pkgs.coreutils}/bin/cp -vP /.bcachefs/etc/localtime /etc/localtime"; | ||
| 687 | ExecStop = "${pkgs.coreutils}/bin/cp -vP /etc/localtime /.bcachefs/etc/localtime"; | ||
| 688 | }; | ||
| 689 | }; | ||
| 690 | services.tzupdate.enable = true; | ||
| 691 | |||
| 692 | security.pam.services.gtklock = {}; | ||
| 693 | 686 | ||
| 694 | home-manager.sharedModules = [ flakeInputs.nixVirt.homeModules.default ]; | 687 | home-manager.sharedModules = [ flakeInputs.nixVirt.homeModules.default ]; |
| 695 | 688 | ||
diff --git a/hosts/sif/email/default.nix b/hosts/sif/email/default.nix index 4eda236e..bebf7980 100644 --- a/hosts/sif/email/default.nix +++ b/hosts/sif/email/default.nix | |||
| @@ -5,11 +5,12 @@ | |||
| 5 | enableSmtp = false; | 5 | enableSmtp = false; |
| 6 | enableSubmission = false; | 6 | enableSubmission = false; |
| 7 | setSendmail = true; | 7 | setSendmail = true; |
| 8 | networksStyle = "host"; | 8 | # networksStyle = "host"; |
| 9 | hostname = "sif.midgard.yggdrasil"; | 9 | settings.main = { |
| 10 | destination = []; | 10 | recpipient_delimiter = "+"; |
| 11 | recipientDelimiter = "+"; | 11 | mydestination = []; |
| 12 | config = { | 12 | myhostname = "sif.midgard.yggdrasil"; |
| 13 | |||
| 13 | mydomain = "yggdrasil.li"; | 14 | mydomain = "yggdrasil.li"; |
| 14 | 15 | ||
| 15 | local_transport = "error:5.1.1 No local delivery"; | 16 | local_transport = "error:5.1.1 No local delivery"; |
| @@ -19,7 +20,7 @@ | |||
| 19 | 20 | ||
| 20 | inet_interfaces = "loopback-only"; | 21 | inet_interfaces = "loopback-only"; |
| 21 | 22 | ||
| 22 | message_size_limit = "0"; | 23 | message_size_limit = 0; |
| 23 | 24 | ||
| 24 | authorized_submit_users = "inline:{ gkleen= }"; | 25 | authorized_submit_users = "inline:{ gkleen= }"; |
| 25 | authorized_flush_users = "inline:{ gkleen= }"; | 26 | authorized_flush_users = "inline:{ gkleen= }"; |
| @@ -41,7 +42,7 @@ | |||
| 41 | /^uni2work(-[^@]*)?@ifi\.lmu\.de$/ uni2work@ifi.lmu.de | 42 | /^uni2work(-[^@]*)?@ifi\.lmu\.de$/ uni2work@ifi.lmu.de |
| 42 | /@ifi\.lmu\.de$/ gregor.kleen@ifi.lmu.de | 43 | /@ifi\.lmu\.de$/ gregor.kleen@ifi.lmu.de |
| 43 | ''}''; | 44 | ''}''; |
| 44 | relayhost = "[surtr.yggdrasil.li]:465"; | 45 | relayhost = ["[surtr.yggdrasil.li]:465"]; |
| 45 | default_transport = "relay"; | 46 | default_transport = "relay"; |
| 46 | 47 | ||
| 47 | smtp_sasl_auth_enable = true; | 48 | smtp_sasl_auth_enable = true; |
| @@ -56,7 +57,7 @@ | |||
| 56 | smtp_tls_loglevel = "1"; | 57 | smtp_tls_loglevel = "1"; |
| 57 | smtp_dns_support_level = "dnssec"; | 58 | smtp_dns_support_level = "dnssec"; |
| 58 | }; | 59 | }; |
| 59 | masterConfig = { | 60 | settings.master = { |
| 60 | submission = { | 61 | submission = { |
| 61 | type = "inet"; | 62 | type = "inet"; |
| 62 | private = false; | 63 | private = false; |
diff --git a/hosts/sif/greetd/default.nix b/hosts/sif/greetd/default.nix index 37ca13c5..081b6346 100644 --- a/hosts/sif/greetd/default.nix +++ b/hosts/sif/greetd/default.nix | |||
| @@ -1,49 +1,92 @@ | |||
| 1 | { pkgs, ... }: | 1 | { config, pkgs, lib, flakeInputs, ... }: |
| 2 | { | 2 | |
| 3 | let | ||
| 4 | gkleenConfig = config.home-manager.users."gkleen"; | ||
| 5 | toIni = lib.generators.toINI { | ||
| 6 | mkKeyValue = | ||
| 7 | key: value: | ||
| 8 | let | ||
| 9 | value' = if lib.isBool value then lib.boolToString value else toString value; | ||
| 10 | in | ||
| 11 | "${lib.escape [ "=" ] key}=${value'}"; | ||
| 12 | }; | ||
| 13 | toDconfIni = let | ||
| 14 | gvariant = import (flakeInputs.home-manager + "/modules/lib/gvariant.nix") { inherit lib; }; | ||
| 15 | mkIniKeyValue = key: value: "${key}=${toString (gvariant.mkValue value)}"; | ||
| 16 | in lib.generators.toINI { mkKeyValue = mkIniKeyValue; }; | ||
| 17 | in { | ||
| 3 | config = { | 18 | config = { |
| 4 | services.greetd = { | 19 | services.greetd = { |
| 5 | enable = true; | 20 | enable = true; |
| 6 | # settings.default_session.command = let | 21 | settings.default_session.command = lib.getExe (pkgs.writeShellApplication { |
| 7 | # cfg = config.programs.regreet; | 22 | name = "sway"; |
| 8 | # in pkgs.writeShellScript "greeter" '' | 23 | runtimeInputs = [ pkgs.sway pkgs.fontconfig ]; |
| 9 | # modprobe -r nvidia_drm | 24 | runtimeEnv = { |
| 25 | XDG_DATA_DIRS = lib.makeSearchPath "share" [ | ||
| 26 | pkgs.equilux-theme pkgs.paper-icon-theme pkgs.fira | ||
| 27 | ]; | ||
| 28 | QT_PLUGIN_PATH = lib.makeSearchPath (pkgs.qt6.qtbase.qtPluginPrefix) [ | ||
| 29 | pkgs.qt6Packages.qtbase | ||
| 30 | ]; | ||
| 31 | QML2_IMPORT_PATH = lib.makeSearchPath (pkgs.qt6.qtbase.qtQmlPrefix) [ | ||
| 32 | pkgs.qt6Packages.qtbase | ||
| 33 | ]; | ||
| 34 | QT_QPA_PLATFORMTHEME = "gtk3"; | ||
| 35 | XDG_CONFIG_DIR = pkgs.symlinkJoin { | ||
| 36 | name = "config"; | ||
| 37 | paths = [ | ||
| 38 | (pkgs.writeTextDir "gtk-3.0/settings.ini" (toIni { | ||
| 39 | Settings = { | ||
| 40 | gtk-font-name = "Fira Sans 10"; | ||
| 41 | gtk-theme-name = "Equilux-compact"; | ||
| 42 | gtk-icon-theme-name = "Paper-Mono-Dark"; | ||
| 43 | }; | ||
| 44 | })) | ||
| 45 | ]; | ||
| 46 | }; | ||
| 47 | # XDG_CACHE_HOME = "/var/cache/greetd/greeter"; | ||
| 48 | # XDG_CONFIG_HOME = "/var/cache/greetd/greeter/config"; | ||
| 49 | }; | ||
| 50 | text = '' | ||
| 51 | exec &>/tmp/sway-$$.log | ||
| 52 | |||
| 53 | unset MANAGERPID SYSTEMD_EXEC_PID | ||
| 54 | |||
| 55 | # ${lib.getExe' pkgs.coreutils "mkdir"} -p ''${XDG_CONFIG_HOME}/dconf | ||
| 56 | ${lib.getExe pkgs.dconf} load / < ${pkgs.writeText "dconf.ini" (toDconfIni { | ||
| 57 | "org/gnome/desktop/interface" = { | ||
| 58 | "color-scheme" = "prefer-dark"; | ||
| 59 | "font-name" = "Fira Sans 10"; | ||
| 60 | "gtk-theme" = "Equilux-compact"; | ||
| 61 | "icon-theme" = "Paper-Mono-Dark"; | ||
| 62 | }; | ||
| 63 | })} | ||
| 64 | |||
| 65 | exec sway --unsupported-gpu --config ${pkgs.writeText "sway-config" '' | ||
| 66 | exec "${lib.getExe' config.systemd.package "systemctl"} --user import-environment {,WAYLAND_}DISPLAY SWAYSOCK; ${lib.getExe gkleenConfig.programs.quickshell.package} --path ${gkleenConfig.xdg.configFile."quickshell".source}/displaymanager.qml; swaymsg exit" | ||
| 10 | 67 | ||
| 11 | # exec ${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package} | 68 | input type:keyboard { |
| 12 | # ''; | 69 | xkb_layout "us,us" |
| 70 | xkb_variant "dvp," | ||
| 71 | xkb_options "compose:caps,grp:win_space_toggle" | ||
| 72 | } | ||
| 73 | |||
| 74 | output eDP-1 scale 1.5 | ||
| 75 | ''} | ||
| 76 | ''; | ||
| 77 | }); | ||
| 13 | }; | 78 | }; |
| 14 | systemd.services.greetd.environment = { | 79 | |
| 15 | XKB_DEFAULT_LAYOUT = "us,us"; | 80 | # security.pam.services.greetd.fprintAuth = false; |
| 16 | XKB_DEFAULT_VARIANT = "dvp,"; | 81 | |
| 17 | XKB_DEFAULT_OPTIONS = "compose:caps,grp:win_space_toggle"; | 82 | systemd.services.greetd.serviceConfig = { |
| 83 | ExecStartPre = ''${lib.getExe' pkgs.coreutils "install"} -d -o greeter -g greeter -m 0700 ''${CACHE_DIRECTORY}/greeter''; | ||
| 84 | # CacheDirectory = "greetd"; | ||
| 18 | }; | 85 | }; |
| 19 | programs.regreet = { | 86 | |
| 20 | enable = true; | 87 | users.users.greeter = { |
| 21 | theme = { | 88 | home = "/var/lib/greeter"; |
| 22 | package = pkgs.equilux-theme; | 89 | createHome = true; |
| 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 | }; | 90 | }; |
| 48 | }; | 91 | }; |
| 49 | } | 92 | } |
diff --git a/hosts/sif/greetd/wallpaper.png b/hosts/sif/greetd/wallpaper.png deleted file mode 100644 index 20fc761a..00000000 --- a/hosts/sif/greetd/wallpaper.png +++ /dev/null | |||
| Binary files differ | |||
diff --git a/hosts/sif/hw.nix b/hosts/sif/hw.nix index 1bcf0261..e567c37d 100644 --- a/hosts/sif/hw.nix +++ b/hosts/sif/hw.nix | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | # system.etc.overlay.enable = false; | 25 | # system.etc.overlay.enable = false; |
| 26 | 26 | ||
| 27 | boot.initrd.systemd.packages = [ | 27 | boot.initrd.systemd.packages = [ |
| 28 | (pkgs.writeTextDir "/etc/systemd/system/\\x2ebcachefs.mount.d/block_scan.conf" '' | 28 | (pkgs.writeTextDir "/etc/systemd/system/sysroot-.bcachefs.mount.d/block_scan.conf" '' |
| 29 | [Mount] | 29 | [Mount] |
| 30 | Environment=BCACHEFS_BLOCK_SCAN=1 | 30 | Environment=BCACHEFS_BLOCK_SCAN=1 |
| 31 | '') | 31 | '') |
