diff options
author | Soispha <soispha@vhack.eu> | 2024-02-20 16:35:15 +0100 |
---|---|---|
committer | Soispha <soispha@vhack.eu> | 2024-02-20 16:35:15 +0100 |
commit | cc09b607330385d6d81b9c47cf64a2442432e93f (patch) | |
tree | dc7e4503a3341b8936576c6339a70df4adaa2512 /hm/soispha/pkgs/scripts/small_functions/update-sys.sh | |
parent | refactor(hm/conf/zsh/config): Rework old config scripts (diff) | |
download | nixos-config-cc09b607330385d6d81b9c47cf64a2442432e93f.zip |
refactor(treewide): Add a `.sh` extension to shell scripts
Diffstat (limited to 'hm/soispha/pkgs/scripts/small_functions/update-sys.sh')
-rwxr-xr-x | hm/soispha/pkgs/scripts/small_functions/update-sys.sh | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/hm/soispha/pkgs/scripts/small_functions/update-sys.sh b/hm/soispha/pkgs/scripts/small_functions/update-sys.sh new file mode 100755 index 00000000..20e38841 --- /dev/null +++ b/hm/soispha/pkgs/scripts/small_functions/update-sys.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env dash + +# shellcheck source=/dev/null +SHELL_LIBRARY_VERSION="2.0.13" . %SHELL_LIBRARY_PATH + +help() { + cat << EOF +This is a NixOS System flake update manager. + +Usage: + $NAME [--branch <branchname>] [--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 |