depot/ops/nixos/install.sh

46 lines
989 B
Bash
Raw Normal View History

#!/bin/sh
# SPDX-FileCopyrightText: 2020 Luke Granger-Brown <depot@lukegb.com>
#
# SPDX-License-Identifier: Apache-2.0
set -eu
if [ $EUID -ne 0 ]; then
exec sudo "$0" "$@"
fi
if [ $# -lt 1 ]; then
echo "Usage: $0 hostname" >&2
exit 1
fi
depot_parent() {
pd="$(readlink -f "$1")/"
if [ "${pd#*/depot/}" = "$pd" ]; then
return
fi
pd="$(readlink -f "${pd%/depot/*}/depot")"
echo "$pd"
}
depot_path() {
pd="$(depot_parent "$PWD")"
if [ "$pd" = "" ]; then
pd="$(depot_parent "$(readlink -f "$0")")"
fi
echo "$pd"
}
readonly targethostname="$1"
readonly depot="$(depot_path)"
if [ "$depot" = "" ]; then
echo "This script needs to be executed in-depot (or the script itself should be in-depot)."
exit 1
fi
readonly system="$(nix-build -E '(import "'"$(depot_path)"'" {}).ops.nixos.'"${targethostname}" --option sandbox false --no-out-link)"
nixos-install --root /mnt --system "$system" --no-root-passwd
echo "Copying myself..."
cp -R "$depot/" "/mnt/home/lukegb/depot/"