37 lines
871 B
Bash
Executable File
37 lines
871 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Change into script dir.
|
|
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null || exit
|
|
nixosDir=$(pwd)
|
|
|
|
# Get short hostname to work with host specific configurations.
|
|
host=$(hostname -s)
|
|
if [[ -n $nixHostOverride ]]; then
|
|
host=$nixHostOverride
|
|
fi
|
|
|
|
if (( EUID==0 )); then
|
|
sudoCmd="sudo -u grmrgecko"
|
|
fi
|
|
|
|
# Confirm host configuration is available; If not, we should not continue.
|
|
if ! grep -q "nixosConfigurations.$host " flake.nix; then
|
|
host="default"
|
|
fi
|
|
|
|
# Update nixpkgs.
|
|
if ! $sudoCmd nix flake update "$nixosDir"; then
|
|
echo "Update failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Add updated lock file to git staging for rebuild below.
|
|
$sudoCmd git add flake.lock
|
|
|
|
# Commit update.
|
|
$sudoCmd git commit -m "Flake update $(date)"
|
|
|
|
# Rebuild and switch.
|
|
# shellcheck disable=SC2068
|
|
sudo nixos-rebuild switch --impure --flake "path:$nixosDir/#$host" $@
|