Split ISO config from installed hosts; auto-include gnome in generated host

This commit is contained in:
randogoth 2026-02-01 22:06:30 +02:00
parent ec1bb28713
commit e927339625
4 changed files with 44 additions and 7 deletions

View file

@ -13,16 +13,28 @@
let let
lib = nixpkgs.lib; lib = nixpkgs.lib;
hostFiles = builtins.attrNames (builtins.readDir ./hosts); hostFiles = builtins.attrNames (builtins.readDir ./hosts);
hostNames = lib.filter (name: hostNames =
lib.hasSuffix ".nix" name && !(lib.hasSuffix "-hardware.nix" name) lib.filter (name:
) hostFiles; lib.hasSuffix ".nix" name
&& !(lib.hasSuffix "-hardware.nix" name)
&& name != "iso.nix"
)
hostFiles;
mkHost = name: lib.nixosSystem { mkHost = name: lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
modules = [ (./hosts + "/${name}.nix") ]; modules = [ (./hosts + "/${name}.nix") ];
}; };
in { 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 = packages.x86_64-linux.install-iso =
self.nixosConfigurations.installer.config.system.build.isoImage; self.nixosConfigurations.installer.config.system.build.isoImage;

View file

@ -2,7 +2,6 @@
{ {
imports = [ imports = [
(inputs.nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix")
inputs.lix-module.nixosModules.lixFromNixpkgs inputs.lix-module.nixosModules.lixFromNixpkgs
../modules/system/base.nix ../modules/system/base.nix
../modules/desktop/gnome-minimal.nix ../modules/desktop/gnome-minimal.nix

25
hosts/iso.nix Normal file
View file

@ -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 = ../.;
}

View file

@ -2,10 +2,10 @@
set -euo pipefail set -euo pipefail
# Non-interactive Btrfs installer using the flake in this repo. # 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} DISK=${DISK:-/dev/vda}
HOSTNAME=${HOSTNAME:-nanuqsaurus} HOSTNAME=${HOSTNAME:-installer}
SCRIPT_DIR=$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd) SCRIPT_DIR=$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd)
REPO_ROOT=$(cd -- "${SCRIPT_DIR}/.." && pwd) REPO_ROOT=$(cd -- "${SCRIPT_DIR}/.." && pwd)
@ -55,6 +55,7 @@ if [ ! -e "${host_file}" ]; then
imports = [ imports = [
inputs.lix-module.nixosModules.lixFromNixpkgs inputs.lix-module.nixosModules.lixFromNixpkgs
../modules/system/base.nix ../modules/system/base.nix
../modules/desktop/gnome-minimal.nix
../modules/users/admin.nix ../modules/users/admin.nix
./${HOSTNAME}-hardware.nix ./${HOSTNAME}-hardware.nix
]; ];