#!/usr/bin/env nix-shell #!nix-shell --pure -i bash -p bash jq envsubst wget # shellcheck shell=bash set -Eeuo pipefail 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 < 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