diff --git a/doc/manual/man-nixos-deploy-network.xml b/doc/manual/man-nixos-deploy-network.xml deleted file mode 100644 index 9667fef180ec..000000000000 --- a/doc/manual/man-nixos-deploy-network.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - - nixos-deploy-network - 8 - NixOS - - - - - nixos-deploy-network - deploy a network of NixOS configurations into a network of machines - - - - - nixos-deploy-network - - - - network.nix - - - -Description - -This command automatically deploys a network of NixOS -configurations into a network of machines. -First, it tries to build all the system derivations defined -in the network expression. Then it efficiently transfers -the closures to the machines in the network. Finally, the configurations -are activated. In case of a failure, a rollback is performed, -which brings all the updated configurations back into the previous -state. - -A network Nix expression has the following structure: - - -{ - test1 = {pkgs, config, ...}: - { - services.openssh.enable = true; - nixpkgs.system = "i686-linux"; - deployment.targetHost = "test1.example.net"; - - # Other NixOS options - }; - - test2 = {pkgs, config, ...}: - { - services.openssh.enable = true; - services.httpd.enable = true; - environment.systemPackages = [ pkgs.lynx ]; - nixpkgs.system = "x86_64-linux"; - deployment.targetHost = "test2.example.net"; - - # Other NixOS options - }; -} - - -Each attribute in the expression represents a machine in the network -(e.g. test1 and test2) -referring to a function defining a NixOS configuration. -In each NixOS configuration, two attributes have a special meaning. -The deployment.targetHost specifies the address -(domain name or IP address) -of the system which is used by ssh to perform -remote deployment operations. The nixpkgs.system -attribute can be used to specify an architecture for the target machine, -such as i686-linux which builds a 32-bit NixOS -configuration. Omitting this property will build the configuration -for the same architecture as the host system. - - - - -Options - -This command accepts the following options: - - - - - - - Shows a trace of the output. - - - - - - - Do not create a 'result' symlink. - - - - - , - - Shows the usage of this command to the user. - - - - - - - - - diff --git a/doc/manual/man-pages.xml b/doc/manual/man-pages.xml index ffe0100c5ed3..7840e1b897b0 100644 --- a/doc/manual/man-pages.xml +++ b/doc/manual/man-pages.xml @@ -26,6 +26,6 @@ - + diff --git a/modules/installer/tools/nixos-deploy-network/deploy.nix b/modules/installer/tools/nixos-deploy-network/deploy.nix deleted file mode 100644 index 7ece202a990c..000000000000 --- a/modules/installer/tools/nixos-deploy-network/deploy.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ nixos ? /etc/nixos/nixos -, nixpkgs ? /etc/nixos/nixpkgs -, networkExprs -, targetProperty ? "targetHost" -}: - -let - pkgs = import nixpkgs {}; - - inherit (builtins) attrNames getAttr listToAttrs; - inherit (pkgs.lib) concatMapStrings zipAttrs; - - networks = map (networkExpr: import networkExpr) networkExprs; - - network = zipAttrs networks; - - generateRollbackSucceededPhase = network: configs: - concatMapStrings (configurationName: - let - config = getAttr configurationName configs; - in - '' - if [ "$rollback" != "$succeeded" ] - then - ssh $NIX_SSHOPTS ${getAttr targetProperty (config.deployment)} nix-env -p /nix/var/nix/profiles/system --rollback - ssh $NIX_SSHOPTS ${getAttr targetProperty (config.deployment)} /nix/var/nix/profiles/system/bin/switch-to-configuration switch - - rollback=$((rollback + 1)) - fi - '' - ) (attrNames network) - ; - - generateDistributionPhase = network: configs: - concatMapStrings (configurationName: - let - config = getAttr configurationName configs; - in - '' - echo "=== copy system closure to ${getAttr targetProperty (config.deployment)} ===" - nix-copy-closure --to ${getAttr targetProperty (config.deployment)} ${config.system.build.toplevel} - '' - ) (attrNames network) - ; - - generateActivationPhase = network: configs: - concatMapStrings (configurationName: - let - config = getAttr configurationName configs; - in - '' - echo "=== activating system configuration on ${getAttr targetProperty (config.deployment)} ===" - ssh $NIX_SSHOPTS ${getAttr targetProperty (config.deployment)} nix-env -p /nix/var/nix/profiles/system --set ${config.system.build.toplevel} || - (ssh $NIX_SSHOPTS ${getAttr targetProperty (config.deployment)} nix-env -p /nix/var/nix/profiles/system --rollback; rollbackSucceeded) - - ssh $NIX_SSHOPTS ${getAttr targetProperty (config.deployment)} /nix/var/nix/profiles/system/bin/switch-to-configuration switch || - ( ssh $NIX_SSHOPTS ${getAttr targetProperty (config.deployment)} nix-env -p /nix/var/nix/profiles/system --rollback - ssh $NIX_SSHOPTS ${getAttr targetProperty (config.deployment)} /nix/var/nix/profiles/system/bin/switch-to-configuration switch - rollbackSucceeded - ) - - succeeded=$((succeeded + 1)) - '' - ) (attrNames network) - ; - - evaluateMachines = network: - listToAttrs (map (configurationName: - let - modules = getAttr configurationName network; - in - { name = configurationName; - value = (import "${nixos}/lib/eval-config.nix" { - inherit nixpkgs; - modules = - modules ++ - [ # Provide a default hostname and deployment target equal - # to the attribute name of the machine in the model. - { key = "set-default-hostname"; - networking.hostName = pkgs.lib.mkOverride 900 configurationName; - deployment.targetHost = pkgs.lib.mkOverride 900 configurationName; - } - ]; - extraArgs = { nodes = evaluateMachines network; }; - }).config; } - ) (attrNames (network))); - - configs = evaluateMachines network; -in -pkgs.stdenv.mkDerivation { - name = "deploy-script"; - - # This script has a zillion dependencies and is trivial to build, so - # we don't want to build it remotely. - preferLocalBuild = true; - - buildCommand = - '' - ensureDir $out/bin - cat > $out/bin/deploy-systems << "EOF" - #! ${pkgs.stdenv.shell} -e - - rollbackSucceeded() - { - rollback=0 - ${generateRollbackSucceededPhase network configs} - } - - # Distribution phase - - ${generateDistributionPhase network configs} - - # Activation phase - - succeeded=0 - - ${generateActivationPhase network configs} - EOF - chmod +x $out/bin/deploy-systems - ''; -} diff --git a/modules/installer/tools/nixos-deploy-network/nixos-deploy-network.sh b/modules/installer/tools/nixos-deploy-network/nixos-deploy-network.sh deleted file mode 100644 index 28580e2f49de..000000000000 --- a/modules/installer/tools/nixos-deploy-network/nixos-deploy-network.sh +++ /dev/null @@ -1,70 +0,0 @@ -#! @shell@ -e - -# Shows the usage of this command to the user - -showUsage() -{ - echo "Usage: $0 network_expr [network_expr2 ...]" - echo "Options:" - echo - echo "--show-trace Shows an output trace" - echo "--no-out-link Do not create a 'result' symlink" - echo "-h,--help Shows the usage of this command" -} - -# Parse valid argument options - -PARAMS=`getopt -n $0 -o h -l show-trace,no-out-link,help -- "$@"` - -if [ $? != 0 ] -then - showUsage - exit 1 -fi - -eval set -- "$PARAMS" - -# Evaluate valid options - -while [ "$1" != "--" ] -do - case "$1" in - --show-trace) - showTraceArg="--show-trace" - ;; - --no-out-link) - noOutLinkArg="--no-out-link" - ;; - -h|--help) - showUsage - exit 0 - ;; - esac - - shift -done - -shift - -# Validate the given options - -if [ -z "$NIXOS" ] -then - NIXOS=/etc/nixos/nixos -fi - -if [ "$@" = "" ] -then - echo "ERROR: At least one network Nix expression must be specified!" >&2 - exit 1 -else - for i in $@ - do - networkExprs="$networkExprs \"$(readlink -f $i)\"" - done -fi - -# Deploy the network - -vms=`nix-build $NIXOS/modules/installer/tools/nixos-deploy-network/deploy.nix --arg networkExprs "[ $networkExprs ]" --argstr nixos $NIXOS $showTraceArg $noOutLinkArg` -$vms/bin/deploy-systems diff --git a/modules/installer/tools/tools.nix b/modules/installer/tools/tools.nix index 740bfcbbb0cf..b0276bba8812 100644 --- a/modules/installer/tools/tools.nix +++ b/modules/installer/tools/tools.nix @@ -17,11 +17,6 @@ let src = ./nixos-build-vms/nixos-build-vms.sh; }; - nixosDeployNetwork = makeProg { - name = "nixos-deploy-network"; - src = ./nixos-deploy-network/nixos-deploy-network.sh; - }; - nixosInstall = makeProg { name = "nixos-install"; src = ./nixos-install.sh;