#!/usr/bin/env dash # shellcheck source=/dev/null SHELL_LIBRARY_VERSION="1.1.3" . %SHELL_LIBRARY_PATH help() { cat << EOF This is a NixOS System flake update manager. Usage: $NAME [--branch ] [--help] Options: --branch | -b BRANCHNAME select a branch to update from. --mode | -m MODE select a mode to update with --help | -h output this help. EOF exit "$1"; } default_branch=$(mktmp); BRANCH=""; while [ "$#" -gt 0 ];do case "$1" in "--help" | "-h") help 0; ;; "--branch" | "-b") if [ -n "$2" ];then BRANCH="$2"; else error "$1 requires an argument"; help 1; fi shift 2; ;; "--mode" | "-m") if [ -n "$2" ];then MODE="$2"; else error "$1 requires an argument"; help 1; fi shift 2; ;; *) error "the option $1 does not exist!"; help 1; ;; esac done cd /etc/nixos || die "No /etc/nixos"; msg "Starting system update..."; git remote update origin --prune > /dev/null 2>&1; if ! [ "$BRANCH" = "" ];then git switch "$BRANCH" > /dev/null 2>&1 && msg2 "Switched to branch '$BRANCH'"; fi msg2 "Updating git repository..."; git pull --rebase; git remote show origin | grep 'HEAD' | cut -d':' -f2 | sed -e 's/^ *//g' -e 's/ *$//g' > "$default_branch" & msg2 "Updating system..."; if [ -n "$MODE" ]; then nixos-rebuild "$MODE"; else nixos-rebuild switch; fi git switch "$(cat "$default_branch")" > /dev/null 2>&1 && msg2 "Switched to branch '$(cat "$default_branch")'"; msg "Finished Update!"; # vim: ft=sh