From 28ccf4f3f9f18d488c9ee67bc3878ddc0e7fcd05 Mon Sep 17 00:00:00 2001 From: David Arnold Date: Mon, 25 Jan 2021 16:48:51 -0500 Subject: [PATCH] host: add deault implementation for system.build.isoImage target (per host) --- README.md | 5 ++--- hosts/default.nix | 34 +++++++++++++++++++++++++++++++++- hosts/niximg.nix | 13 ------------- shell/default.nix | 4 ++-- 4 files changed, 37 insertions(+), 19 deletions(-) delete mode 100644 hosts/niximg.nix diff --git a/README.md b/README.md index 46e74a6..7a06a82 100644 --- a/README.md +++ b/README.md @@ -170,10 +170,9 @@ nix build ./#homeConfigurations.NixOS.nixos.home.activationPackage ## Build an ISO -You can make an ISO and customize it by modifying the [niximg](./hosts/niximg.nix) -file: +You can make an ISO out of any config: ```sh -flk iso +flk iso yourConfig # build an iso for hosts/yourConfig.nix ``` ## Hardware Specific Profile for a Single Host diff --git a/hosts/default.nix b/hosts/default.nix index 52d2a59..55a197d 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -15,8 +15,40 @@ let unstableModules = [ ]; addToDisabledModules = [ ]; + libExt = lib.extend ( + final: prev: { + nixosSystemExtended = { modules, ... } @ args: + lib.nixosSystem (args // { + modules = + let + isoConfig = ( + import (nixos + "/nixos/lib/eval-config.nix") + ( + args // { + modules = modules ++ [ + (nixos + "/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix") + ({ config, ... }: { + isoImage.isoBaseName = "nixos-" + config.networking.hostName; + }) + ]; + } + ) + ).config; + in + modules ++ [ + { + system.build = { + iso = isoConfig.system.build.isoImage; + }; + } + ]; + } + ); + } + ); + config = hostName: - lib.nixosSystem { + libExt.nixosSystemExtended { inherit system; specialArgs = diff --git a/hosts/niximg.nix b/hosts/niximg.nix deleted file mode 100644 index 823eeb6..0000000 --- a/hosts/niximg.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ unstableModulesPath, ... }: { - imports = [ - # passwd is nixos by default - ../users/nixos - # passwd is empty by default - ../users/root - "${unstableModulesPath}/installer/cd-dvd/iso-image.nix" - ]; - - isoImage.makeEfiBootable = true; - isoImage.makeUsbBootable = true; - networking.networkmanager.enable = true; -} diff --git a/shell/default.nix b/shell/default.nix index 038ca2d..f651115 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -12,7 +12,7 @@ let flk = pkgs.writeShellScriptBin "flk" '' if [[ -z "$1" ]]; then - echo "Usage: $(basename "$0") [ iso | up | install {host} | {host} [switch|boot|test] | home {host} {user} [switch] ]" + echo "Usage: $(basename "$0") [ up | iso {host} | install {host} | {host} [switch|boot|test] | home {host} {user} [switch] ]" elif [[ "$1" == "up" ]]; then mkdir -p $DEVSHELL_ROOT/up hostname=$(hostname) @@ -24,7 +24,7 @@ let git add -f $DEVSHELL_ROOT/up/$hostname git add -f $DEVSHELL_ROOT/hosts/up-$hostname.nix elif [[ "$1" == "iso" ]]; then - nix build $DEVSHELL_ROOT#nixosConfigurations.niximg.${build}.isoImage "${"\${@:2}"}" + nix build $DEVSHELL_ROOT#nixosConfigurations.$2.${build}.iso "${"\${@:3}"}" elif [[ "$1" == "install" ]]; then sudo nixos-install --flake "$DEVSHELL_ROOT#$2" "${"\${@:3}"}" elif [[ "$1" == "home" ]]; then