use stdenv on nixos-deploy derivation
This commit is contained in:
parent
8a1af741dd
commit
79a2576dfd
1 changed files with 120 additions and 97 deletions
|
|
@ -1,14 +1,26 @@
|
||||||
{
|
{ lib
|
||||||
lib,
|
, stdenv
|
||||||
writeShellScript,
|
, nixos-rebuild
|
||||||
nixos-rebuild,
|
, openssh
|
||||||
openssh,
|
, coreutils
|
||||||
coreutils,
|
, gnugrep
|
||||||
gnugrep,
|
, gawk
|
||||||
gawk,
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
writeShellScript "nixos-deploy" ''
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "nixos-deploy";
|
||||||
|
version = "1.0";
|
||||||
|
|
||||||
|
src = lib.fakeSha256; # will be ignored since we're using `installPhase`
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
buildInputs = [ ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cat > $out/bin/nixos-deploy << 'EOF'
|
||||||
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
LOCAL_BUILD=false
|
LOCAL_BUILD=false
|
||||||
|
|
@ -79,17 +91,17 @@ writeShellScript "nixos-deploy" ''
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$TARGET_HOST" == *"@"* ]]; then
|
if [[ "$TARGET_HOST" == *"@"* ]]; then
|
||||||
SSH_USER="''${TARGET_HOST%@*}"
|
SSH_USER="${TARGET_HOST%@*}"
|
||||||
SSH_HOST="''${TARGET_HOST#*@}"
|
SSH_HOST="${TARGET_HOST#*@}"
|
||||||
else
|
else
|
||||||
SSH_USER="$(${coreutils}/bin/whoami)"
|
SSH_USER="$("${coreutils}/bin/whoami")"
|
||||||
SSH_HOST="$TARGET_HOST"
|
SSH_HOST="$TARGET_HOST"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Deploying $FLAKE_URI to $SSH_HOST as user $SSH_USER (action: $ACTION)"
|
echo "Deploying $FLAKE_URI to $SSH_HOST as user $SSH_USER (action: $ACTION)"
|
||||||
|
|
||||||
if [[ "$LOCAL_BUILD" != "true" ]]; then
|
if [[ "$LOCAL_BUILD" != "true" ]]; then
|
||||||
GC_ROOT_PATH="/tmp/nixos-deploy-$SSH_HOST-$"
|
GC_ROOT_PATH="/tmp/nixos-deploy-$SSH_HOST-$$"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
REBUILD_CMD="${nixos-rebuild}/bin/nixos-rebuild $ACTION --flake $FLAKE_URI --target-host $TARGET_HOST"
|
REBUILD_CMD="${nixos-rebuild}/bin/nixos-rebuild $ACTION --flake $FLAKE_URI --target-host $TARGET_HOST"
|
||||||
|
|
@ -108,4 +120,15 @@ writeShellScript "nixos-deploy" ''
|
||||||
|
|
||||||
echo -e "Running: $REBUILD_CMD"
|
echo -e "Running: $REBUILD_CMD"
|
||||||
exec $REBUILD_CMD
|
exec $REBUILD_CMD
|
||||||
''
|
EOF
|
||||||
|
chmod +x $out/bin/nixos-deploy
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Tool to deploy a NixOS flake to a remote host using nixos-rebuild";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ ];
|
||||||
|
platforms = platforms.unix;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue