|
| 1 | +{ config, lib, ... }: |
| 2 | +let |
| 3 | + debug = |
| 4 | + if (builtins.pathExists "${config.services.xnodeos.xnode-config}/debug") then |
| 5 | + builtins.readFile "${config.services.xnodeos.xnode-config}/debug" |
| 6 | + else |
| 7 | + ""; |
| 8 | +in |
| 9 | +{ |
| 10 | + config = lib.mkIf (debug == "") { |
| 11 | + # Reduce closure size (https://github.com/nix-community/nixos-images/blob/main/nix/noninteractive.nix) |
| 12 | + environment.systemPackages = lib.mkForce [ ]; |
| 13 | + system.extraDependencies = lib.mkForce [ ]; |
| 14 | + boot.supportedFilesystems = lib.mkForce [ |
| 15 | + "vfat" |
| 16 | + "btrfs" |
| 17 | + ]; |
| 18 | + system.disableInstallerTools = lib.mkDefault true; |
| 19 | + programs.nano.enable = lib.mkDefault false; |
| 20 | + security.sudo.enable = lib.mkDefault false; |
| 21 | + |
| 22 | + # https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/minimal.nix |
| 23 | + documentation = { |
| 24 | + enable = lib.mkDefault false; |
| 25 | + doc.enable = lib.mkDefault false; |
| 26 | + info.enable = lib.mkDefault false; |
| 27 | + man.enable = lib.mkDefault false; |
| 28 | + nixos.enable = lib.mkDefault false; |
| 29 | + }; |
| 30 | + |
| 31 | + environment = { |
| 32 | + # Perl is a default package. |
| 33 | + defaultPackages = lib.mkDefault [ ]; |
| 34 | + stub-ld.enable = lib.mkDefault false; |
| 35 | + }; |
| 36 | + |
| 37 | + programs = { |
| 38 | + command-not-found.enable = lib.mkDefault false; |
| 39 | + fish.generateCompletions = lib.mkDefault false; |
| 40 | + }; |
| 41 | + |
| 42 | + services = { |
| 43 | + logrotate.enable = lib.mkDefault false; |
| 44 | + udisks2.enable = lib.mkDefault false; |
| 45 | + }; |
| 46 | + |
| 47 | + xdg = { |
| 48 | + autostart.enable = lib.mkDefault false; |
| 49 | + icons.enable = lib.mkDefault false; |
| 50 | + mime.enable = lib.mkDefault false; |
| 51 | + sounds.enable = lib.mkDefault false; |
| 52 | + }; |
| 53 | + |
| 54 | + # https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/headless.nix |
| 55 | + # Don't start a tty on the serial consoles. |
| 56 | + systemd.services."serial-getty@ttyS0".enable = lib.mkDefault false; |
| 57 | + systemd.services."serial-getty@hvc0".enable = false; |
| 58 | + systemd.services."getty@tty1".enable = false; |
| 59 | + systemd.services."autovt@".enable = false; |
| 60 | + |
| 61 | + # Since we can't manually respond to a panic, just reboot. |
| 62 | + boot.kernelParams = [ |
| 63 | + "panic=1" |
| 64 | + "boot.panic_on_fail" |
| 65 | + "vga=0x317" |
| 66 | + "nomodeset" |
| 67 | + ]; |
| 68 | + |
| 69 | + # Don't allow emergency mode, because we don't have a console. |
| 70 | + systemd.enableEmergencyMode = false; |
| 71 | + |
| 72 | + # Being headless, we don't need a GRUB splash image. |
| 73 | + boot.loader.grub.splashImage = null; |
| 74 | + }; |
| 75 | +} |
0 commit comments