#! @shell@ -e showSyntax() { # !!! more or less cut&paste from # system/switch-to-configuration.sh (which we call, of course). cat <&1 | grep -q 'running'; then export NIX_REMOTE=${NIX_REMOTE:-daemon} fi # If ‘--upgrade’ is given, run ‘nix-channel --update nixos’. if [ -n "$upgrade" ]; then nix-channel --update nixos fi # First build Nix, since NixOS may require a newer version than the # current one. Of course, the same goes for Nixpkgs, but Nixpkgs is # more conservative. if [ -n "$buildNix" ]; then echo "building Nix..." >&2 if ! nix-build '' -A config.environment.nix -o $tmpDir/nix $extraBuildFlags > /dev/null; then if ! nix-build '' -A nixFallback -o $tmpDir/nix $extraBuildFlags > /dev/null; then nix-build '' -A nixUnstable -o $tmpDir/nix $extraBuildFlags > /dev/null fi fi PATH=$tmpDir/nix/bin:$PATH fi # Either upgrade the configuration in the system profile (for "switch" # or "boot"), or just build it and create a symlink "result" in the # current directory (for "build" and "test"). if test -z "$rollback"; then echo "building the system configuration..." >&2 if test "$action" = switch -o "$action" = boot; then nix-env $extraBuildFlags -p /nix/var/nix/profiles/system -f '' --set -A system pathToConfig=/nix/var/nix/profiles/system elif test "$action" = test -o "$action" = build -o "$action" = dry-run; then nix-build '' -A system -K -k $extraBuildFlags > /dev/null pathToConfig=./result elif [ "$action" = build-vm ]; then nix-build '' -A vm -K -k $extraBuildFlags > /dev/null pathToConfig=./result elif [ "$action" = build-vm-with-bootloader ]; then nix-build '' -A vmWithBootLoader -K -k $extraBuildFlags > /dev/null pathToConfig=./result else showSyntax fi else # test -n "$rollback" if test "$action" = switch -o "$action" = boot; then nix-env --rollback -p /nix/var/nix/profiles/system pathToConfig=/nix/var/nix/profiles/system elif test "$action" = test -o "$action" = build; then systemNumber=$( nix-env -p /nix/var/nix/profiles/system --list-generations | sed -n '/current/ {g; p;}; s/ *\([0-9]*\).*/\1/; h' ) ln -sT /nix/var/nix/profiles/system-${systemNumber}-link ./result pathToConfig=./result else showSyntax fi fi # If we're not just building, then make the new configuration the boot # default and/or activate it now. if test "$action" = switch -o "$action" = boot -o "$action" = test; then # Just in case the new configuration hangs the system, do a sync now. sync $pathToConfig/bin/switch-to-configuration "$action" fi if test "$action" = build-vm; then cat >&2 <