diff --git a/README.md b/README.md index 46e74a6a..7a06a828 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/flake.nix b/flake.nix index 8f0ec617..cbd4e9b2 100644 --- a/flake.nix +++ b/flake.nix @@ -60,9 +60,7 @@ overlay = import ./pkgs; - lib = import ./lib { - inherit (nixos) lib; - }; + lib = import ./lib { inherit nixos; }; templates.flk.path = ./.; diff --git a/hosts/default.nix b/hosts/default.nix index d30617b6..788c2184 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -9,14 +9,14 @@ , ... }: let - inherit (lib.flk) recImport; + inherit (lib.flk) recImport nixosSystemExtended; inherit (builtins) attrValues removeAttrs; unstableModules = [ ]; addToDisabledModules = [ ]; config = hostName: - lib.nixosSystem { + nixosSystemExtended { inherit system; specialArgs = diff --git a/hosts/niximg.nix b/hosts/niximg.nix deleted file mode 100644 index 823eeb60..00000000 --- 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/lib/default.nix b/lib/default.nix index 145a9362..6d393b89 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,9 +1,9 @@ -{ lib, ... }: +{ nixos, ... }: let inherit (builtins) attrNames attrValues isAttrs readDir listToAttrs mapAttrs; - inherit (lib) fold filterAttrs hasSuffix mapAttrs' nameValuePair removeSuffix - recursiveUpdate genAttrs; + inherit (nixos.lib) fold filterAttrs hasSuffix mapAttrs' nameValuePair removeSuffix + recursiveUpdate genAttrs nixosSystem mkForce; # mapFilterAttrs :: # (name -> value -> bool ) @@ -55,6 +55,34 @@ in nameValuePair ("") (null)) (readDir dir); + nixosSystemExtended = { modules, ... } @ args: + nixosSystem (args // { + modules = + let + modpath = "nixos/modules"; + cd = "installer/cd-dvd/installation-cd-minimal-new-kernel.nix"; + isoConfig = (nixosSystem + (args // { + modules = modules ++ [ + "${nixos}/${modpath}/${cd}" + ({ config, ... }: { + isoImage.isoBaseName = "nixos-" + config.networking.hostName; + # confilcts with networking.wireless which might be slightly + # more useful on a stick + networking.networkmanager.enable = mkForce false; + # confilcts with networking.wireless + networking.wireless.iwd.enable = mkForce false; + }) + ]; + })).config; + in + modules ++ [{ + system.build = { + iso = isoConfig.system.build.isoImage; + }; + }]; + }); + nixosModules = let # binary cache diff --git a/shell/default.nix b/shell/default.nix index 52737a5e..1e983cb4 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -15,7 +15,7 @@ let system=${"\${system//\\\"/"}} 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) @@ -27,7 +27,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