diff options
Diffstat (limited to 'public/install-nixos.sh')
-rwxr-xr-x | public/install-nixos.sh | 67 |
1 files changed, 64 insertions, 3 deletions
diff --git a/public/install-nixos.sh b/public/install-nixos.sh index 311205f..f5bf321 100755 --- a/public/install-nixos.sh +++ b/public/install-nixos.sh @@ -1,9 +1,70 @@ #!/usr/bin/env nix-shell -#!nix-shell --pure -i bash -p bash jq envsubst +#!nix-shell --pure -i bash -p bash jq envsubst wget # shellcheck shell=bash set -Eeuo pipefail -# download nix files before starting -# generate local nix-file: get input for hostName +end="\033[0m" + +green() { + green_color="\033[0;32m" + echo -e "${green_color}${1}${end}" +} + +yellow() { + yellow_color="\033[0;33m" + echo -e "${yellow_color}${1}${end}" +} + +blue() { + blue_color="\033[0;34m" + echo -e "${blue_color}${1}${end}" +} + +red() { + red_color="\033[0;31m" + echo -e "${red_color}${1}${end}" +} + +usage() { + red "Missing input argument $1.\n" + cat <<EOF +Usage: + install-nixos.sh <HOST_NAME> <DEVICE> + + Arguments + HOST_NAME The networking.hostName of the installation. Something like 'velhinho-nixos'. + DEVICE The LUKS device where to install to. Use lsblk or similar tools to get it's name. + +Examples: + Download install-nixos.sh and run it with 'velhinho-nixos' as hostName and '/dev/sda3' as LUKS device: + wget -O- https://euandre.org/dotfiles/install-nixos.sh | sh -s velhinho-nixos /dev/sda3 +EOF +} + +HOST_NAME="${1:-}" +DEVICE="${2:-}" + +[[ -z "${HOST_NAME}" ]] && { + usage 'HOST_NAME' + exit 2 +} + +[[ -z "${DEVICE}" ]] && { + usage 'DEVICE' + exit 2 +} + +SERVER="https://euandre.org/dotfiles" + +yellow "Downloading Nix files..." +TMP_DIR="$(mktemp -d)" +wget -O "${TMP_DIR}/configuration.nix" "${SERVER}/configuration.nix" +wget -O "${TMP_DIR}/hardware-configuration.nix" "${SERVER}/hardware-configuration.nix" +wget -O "${TMP_DIR}/template.nix" "${SERVER}/template.nix" +green "Done." + +export HOST_NAME +export DEVICE +envsubst < "${TMP_DIR}/template.nix" > /etc/nixos/local-configuration.nix # fdisk |