mirror of
https://github.com/NiklasGollenstede/nixos-installer.git
synced 2024-11-25 01:14:13 +01:00
41 lines
2.0 KiB
Bash
41 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
|
: << '```bash'
|
|
|
|
# Installer Script Overrides (Example)
|
|
|
|
This is an example on how to customize the default installation process.
|
|
The [`config.installer.commands.*`](../modules/installer.nix.md) can be used for some per-host customization, but for further reaching changes that are supposed to affect all hosts in a configuration, it may be necessary or more appropriate to extend/override the [default installer functions](../lib/setup-scripts/).
|
|
|
|
This file would need to be included in the configuration like this:
|
|
```nix
|
|
{ config.installer.scripts.my-customizations = { path = .../installer.sh.md; order = 1500; }; }
|
|
```
|
|
|
|
## Implementation
|
|
|
|
```bash
|
|
|
|
## Replace/Extend a Command or Function
|
|
# For example, »nixos-install-cmd $mnt $topLevel« gets called to perform the last step(s) of the installation, after the »/nix/store« contents has been copied to the new filesystems.
|
|
# Usually it just installs the bootloader, but we can hook into the function to have it do additional stuff:
|
|
copy-function nixos-install-cmd nixos-install-cmd-default # (if we still want to call the previous implementation)
|
|
function nixos-install-cmd {( # 1: mnt, 2: topLevel
|
|
# ... do things beforehand ...
|
|
nixos-install-cmd-default "$@"
|
|
# ... do things afterwards ...
|
|
)}
|
|
# This schema works with any of the existing commands or functions they use.
|
|
|
|
## Add a New COMMAND
|
|
# Any bash function defined in any of the setup scripts can be called as »nix run .#$hostname -- COMMAND«, but a proper COMMAND should be documented as such:
|
|
declare-command my-thing withThese coolArguments << 'EOD'
|
|
This does my thing with these cool arguments -- duh!
|
|
EOD
|
|
declare-flag my-thing laser-color COLOR "Color of the laser used for my thing."
|
|
function run-qemu { # 1: withThese, 2: coolArguments
|
|
local withThese=$1
|
|
local coolThings=$2
|
|
echo "I am playing $withThese to shoot $coolArguments with ${args[laser-color]:-red} lasers!"
|
|
}
|
|
# $ nix run .#example -- my-thing --laser-color=powerful 'friends' -- 'nothing, cuz that would be irresponsible,'
|