46 lines
1.1 KiB
Nix
46 lines
1.1 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
|
|
disko-script = pkgs.writeShellScriptBin "disko-script" "${config.system.build.diskoScript}";
|
|
disko-mount = pkgs.writeShellScriptBin "disko-mount" "${config.system.build.mountScript}";
|
|
disko-format = pkgs.writeShellScriptBin "disko-format" "${config.system.build.formatScript}";
|
|
|
|
install-system = pkgs.writeShellScriptBin "install-system" ''
|
|
set -euo pipefail
|
|
|
|
echo "Formatting disks..."
|
|
${disko-script}/bin/disko-script
|
|
|
|
echo "Installing system..."
|
|
nixos-install --no-root-password --system ${config.system.build.toplevel}
|
|
|
|
echo "Done!"
|
|
'';
|
|
|
|
installer-package = pkgs.symlinkJoin {
|
|
name = "installer-package-${config.node.name}";
|
|
paths = [
|
|
disko-script
|
|
disko-mount
|
|
disko-format
|
|
install-system
|
|
];
|
|
};
|
|
in
|
|
{
|
|
options.system.build.installFromLive = lib.mkOption {
|
|
type = lib.types.package;
|
|
description = ''
|
|
A single script that can be used from a live system, which will
|
|
format disks and copy the derivation.
|
|
'';
|
|
default = installer-package;
|
|
readOnly = true;
|
|
};
|
|
}
|