mirror of
https://github.com/nix-community/nixos-anywhere.git
synced 2024-08-16 11:50:24 +03:00
add --vm-test mode for local vm tests
Update src/nixos-anywhere.sh
This commit is contained in:
parent
11d3803cc6
commit
581053b2c4
@ -83,7 +83,23 @@ example uses a local directory on the source machine.
|
||||
5. On the target machine, make sure you have access as root via ssh by adding
|
||||
your SSH key to the file `authorized_keys` in the directory `/root/.ssh`
|
||||
|
||||
6. You can now run **nixos-anywhere** from the command line as shown below,
|
||||
6. (Optional) Test your nixos and disko configuration:
|
||||
|
||||
The following command will automatically test your nixos configuration and run
|
||||
disko inside a virtual machine, where
|
||||
|
||||
- `<path to configuration>` is the path to the directory or repository
|
||||
containing `flake.nix` and `disk-config.nix`
|
||||
|
||||
- `<configuration name>` must match the name that immediately follows the text
|
||||
`nixosConfigurations.` in the flake, as indicated by the comment in the
|
||||
[example](https://github.com/numtide/nixos-anywhere-examples/blob/main/flake.nix)).
|
||||
|
||||
```
|
||||
nix run github:numtide/nixos-anywhere -- --flake <path to configuration>#<configuration name> --vm-test
|
||||
```
|
||||
|
||||
7. You can now run **nixos-anywhere** from the command line as shown below,
|
||||
where:
|
||||
|
||||
- `<path to configuration>` is the path to the directory or repository
|
||||
|
@ -46,6 +46,8 @@ Options:
|
||||
URL of the source Nix store to copy the nixos and disko closure from
|
||||
* --build-on-remote
|
||||
build the closure on the remote machine instead of locally and copy-closuring it
|
||||
* --vm-test
|
||||
build the system and test the disk configuration inside a VM without installing it to the target.
|
||||
USAGE
|
||||
}
|
||||
|
||||
@ -155,7 +157,9 @@ while [[ $# -gt 0 ]]; do
|
||||
--build-on-remote)
|
||||
build_on_remote=y
|
||||
;;
|
||||
|
||||
--vm-test)
|
||||
vm_test=y
|
||||
;;
|
||||
*)
|
||||
if [[ -z ${ssh_connection-} ]]; then
|
||||
ssh_connection="$1"
|
||||
@ -198,17 +202,19 @@ nix_build() {
|
||||
"$@"
|
||||
}
|
||||
|
||||
if [[ -z ${ssh_connection-} ]]; then
|
||||
abort "ssh-host must be set"
|
||||
fi
|
||||
if [[ -z ${vm_test-} ]]; then
|
||||
if [[ -z ${ssh_connection-} ]]; then
|
||||
abort "ssh-host must be set"
|
||||
fi
|
||||
|
||||
# we generate a temporary ssh keypair that we can use during nixos-anywhere
|
||||
ssh_key_dir=$(mktemp -d)
|
||||
trap 'rm -rf "$ssh_key_dir"' EXIT
|
||||
mkdir -p "$ssh_key_dir"
|
||||
# ssh-copy-id requires this directory
|
||||
mkdir -p "$HOME/.ssh/"
|
||||
ssh-keygen -t ed25519 -f "$ssh_key_dir"/nixos-anywhere -P "" -C "nixos-anywhere" >/dev/null
|
||||
# we generate a temporary ssh keypair that we can use during nixos-anywhere
|
||||
ssh_key_dir=$(mktemp -d)
|
||||
trap 'rm -rf "$ssh_key_dir"' EXIT
|
||||
mkdir -p "$ssh_key_dir"
|
||||
# ssh-copy-id requires this directory
|
||||
mkdir -p "$HOME/.ssh/"
|
||||
ssh-keygen -t ed25519 -f "$ssh_key_dir"/nixos-anywhere -P "" -C "nixos-anywhere" >/dev/null
|
||||
fi
|
||||
|
||||
# parse flake nixos-install style syntax, get the system attr
|
||||
if [[ -n ${flake-} ]]; then
|
||||
@ -222,6 +228,14 @@ if [[ -n ${flake-} ]]; then
|
||||
exit 1
|
||||
fi
|
||||
if [[ ${build_on_remote-n} == "n" ]]; then
|
||||
if [[ -n ${vm_test-} ]]; then
|
||||
exec nix build \
|
||||
--print-out-paths \
|
||||
--no-link \
|
||||
-L \
|
||||
"${nix_options[@]}" \
|
||||
"${flake}#nixosConfigurations.\"${flakeAttr}\".config.system.build.installTest"
|
||||
fi
|
||||
disko_script=$(nix_build "${flake}#nixosConfigurations.\"${flakeAttr}\".config.system.build.diskoScript")
|
||||
nixos_system=$(nix_build "${flake}#nixosConfigurations.\"${flakeAttr}\".config.system.build.toplevel")
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user