diff --git a/docs/misc/installer.md b/docs/misc/installer.md index 27c829a..8060f97 100644 --- a/docs/misc/installer.md +++ b/docs/misc/installer.md @@ -24,8 +24,11 @@ The custom NixOS installer image used to bootstrap new boxes. `installer-` hostname is set at boot. - `INSTALL_ROOT=/mnt` in the session environment, plus a `show-hw-config` alias wrapping `nixos-generate-config --show-hardware-config --root $INSTALL_ROOT`. -- NixOS documentation enabled, `wpa_supplicant` available but not started, GC and memory-overcommit - tuning for low-memory targets, LVM thin and NFS support. +- NixOS documentation enabled, NetworkManager available but not started at boot (run + `systemctl start NetworkManager`, then `nmtui`), GC and memory-overcommit tuning for low-memory + targets, LVM thin and NFS support. +- Identifies itself as `VARIANT_ID=installer` in `/etc/os-release`, and leaves the target's + persistent pstore entries alone (`Unlink=no`) so an install doesn't evacuate them. - No regular user (`my.user.enable = false`), no tmpfs-root management, no NAT, and not a deploy target (`my.deploy.enable = false`). diff --git a/nixos/installer.nix b/nixos/installer.nix index 1c80360..1c323dd 100644 --- a/nixos/installer.nix +++ b/nixos/installer.nix @@ -32,7 +32,7 @@ }; image = { - baseName = "jackos-installer"; + baseName = mkForce "jackos-installer"; }; isoImage = { volumeID = "jackos-${config.system.nixos.release}-${pkgs.stdenv.hostPlatform.uname.processor}"; @@ -97,10 +97,17 @@ documentation.enable = mkForce true; documentation.nixos.enable = mkForce true; - # Enable wpa_supplicant, but don't start it by default. - networking.wireless.enable = mkDefault true; - networking.wireless.userControlled = true; - systemd.services.wpa_supplicant.wantedBy = mkForce []; + system.nixos.variant_id = mkDefault "installer"; + + # Enable NetworkManager, but don't start it by default. + networking.networkmanager.enable = true; + systemd.services = { + NetworkManager.wantedBy = mkForce []; + NetworkManager-wait-online.wantedBy = mkForce []; + NetworkManager-dispatcher.wantedBy = mkForce []; + # NetworkManager's wireless backend, D-Bus activated on demand + wpa_supplicant.wantedBy = mkForce []; + }; # Tell the Nix evaluator to garbage collect more aggressively. # This is desirable in memory-constrained environments that don't @@ -113,6 +120,18 @@ # download-using-manifests.pl from forking even if there is # plenty of free memory. boot.kernel.sysctl."vm.overcommit_memory" = "1"; + + # Prevent installation media from evacuating persistent storage, as their + # var directory is not persistent and it would thus result in deletion of + # those entries. + environment.etc."systemd/pstore.conf".text = '' + [PStore] + Unlink=no + ''; + + # Remove warning about unset mail + boot.swraid.mdadmConf = "PROGRAM ${pkgs.coreutils}/bin/true"; + services.lvm.boot.thin.enable = true; }; }; diff --git a/nixos/modules/build.nix b/nixos/modules/build.nix index 784d520..0794c6e 100644 --- a/nixos/modules/build.nix +++ b/nixos/modules/build.nix @@ -18,9 +18,6 @@ let "${modulesPath}/installer/cd-dvd/iso-image.nix" allHardware { - # Doesn't work right now... (missing /dev/root) - boot.initrd.systemd.enable = false; - isoImage = { makeEfiBootable = true; makeUsbBootable = true;