From e92733962558a94e87441039ea47992295c10073 Mon Sep 17 00:00:00 2001 From: randogoth Date: Sun, 1 Feb 2026 22:06:30 +0200 Subject: [PATCH] Split ISO config from installed hosts; auto-include gnome in generated host --- flake.nix | 20 ++++++++++++++++---- hosts/installer.nix | 1 - hosts/iso.nix | 25 +++++++++++++++++++++++++ scripts/install-btrfs.sh | 5 +++-- 4 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 hosts/iso.nix diff --git a/flake.nix b/flake.nix index 3423fd1..bbbf5b2 100644 --- a/flake.nix +++ b/flake.nix @@ -13,16 +13,28 @@ let lib = nixpkgs.lib; hostFiles = builtins.attrNames (builtins.readDir ./hosts); - hostNames = lib.filter (name: - lib.hasSuffix ".nix" name && !(lib.hasSuffix "-hardware.nix" name) - ) hostFiles; + hostNames = + lib.filter (name: + lib.hasSuffix ".nix" name + && !(lib.hasSuffix "-hardware.nix" name) + && name != "iso.nix" + ) + hostFiles; mkHost = name: lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ (./hosts + "/${name}.nix") ]; }; in { - nixosConfigurations = lib.genAttrs (map (lib.removeSuffix ".nix") hostNames) mkHost; + nixosConfigurations = + lib.genAttrs (map (lib.removeSuffix ".nix") hostNames) mkHost + // { + installer = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = [ ./hosts/iso.nix ]; + }; + }; packages.x86_64-linux.install-iso = self.nixosConfigurations.installer.config.system.build.isoImage; diff --git a/hosts/installer.nix b/hosts/installer.nix index 446e7bf..4597e90 100644 --- a/hosts/installer.nix +++ b/hosts/installer.nix @@ -2,7 +2,6 @@ { imports = [ - (inputs.nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") inputs.lix-module.nixosModules.lixFromNixpkgs ../modules/system/base.nix ../modules/desktop/gnome-minimal.nix diff --git a/hosts/iso.nix b/hosts/iso.nix new file mode 100644 index 0000000..2ba89bd --- /dev/null +++ b/hosts/iso.nix @@ -0,0 +1,25 @@ +{ config, pkgs, inputs, ... }: + +# ISO-only configuration (uses installation-cd profile). Do not use for installed systems. +{ + imports = [ + (inputs.nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") + inputs.lix-module.nixosModules.lixFromNixpkgs + ../modules/system/base.nix + ../modules/desktop/gnome-minimal.nix + ../modules/users/admin.nix + ]; + + networking.hostName = "iso-installer"; + + environment.etc."INSTALL.txt".source = ../docs/install-help.txt; + environment.etc."motd".text = builtins.readFile ../docs/install-help.txt; + environment.etc."issue".text = '' +${builtins.readFile ../docs/install-help.txt} + +Login: \l + ''; + + # Embed the repo in the live ISO. + environment.etc."nixos".source = ../.; +} diff --git a/scripts/install-btrfs.sh b/scripts/install-btrfs.sh index 2deddfe..5ed00c6 100755 --- a/scripts/install-btrfs.sh +++ b/scripts/install-btrfs.sh @@ -2,10 +2,10 @@ set -euo pipefail # Non-interactive Btrfs installer using the flake in this repo. -# Defaults: DISK=/dev/vda HOSTNAME=nanuqsaurus +# Defaults: DISK=/dev/vda HOSTNAME=installer DISK=${DISK:-/dev/vda} -HOSTNAME=${HOSTNAME:-nanuqsaurus} +HOSTNAME=${HOSTNAME:-installer} SCRIPT_DIR=$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd) REPO_ROOT=$(cd -- "${SCRIPT_DIR}/.." && pwd) @@ -55,6 +55,7 @@ if [ ! -e "${host_file}" ]; then imports = [ inputs.lix-module.nixosModules.lixFromNixpkgs ../modules/system/base.nix + ../modules/desktop/gnome-minimal.nix ../modules/users/admin.nix ./${HOSTNAME}-hardware.nix ];