aboutsummaryrefslogtreecommitdiffstats
path: root/sys/nixpkgs/pkgs/scripts/source/small_functions/update-sys.sh
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2024-02-24 14:59:50 +0100
committerSoispha <soispha@vhack.eu>2024-02-24 15:04:49 +0100
commit8284b6a7b4d212913083b003a819fda8d4931d4d (patch)
tree1a41cb60fe64f3f9b1a8c33bd2895ad419366cb5 /sys/nixpkgs/pkgs/scripts/source/small_functions/update-sys.sh
parentfix(hm/pkgs/git-update-index): Remove '--' from help text (diff)
downloadnixos-config-8284b6a7b4d212913083b003a819fda8d4931d4d.zip
refactor(hm/pkgs): Implement with an nixpkgs overlay
Diffstat (limited to 'sys/nixpkgs/pkgs/scripts/source/small_functions/update-sys.sh')
-rwxr-xr-xsys/nixpkgs/pkgs/scripts/source/small_functions/update-sys.sh77
1 files changed, 77 insertions, 0 deletions
diff --git a/sys/nixpkgs/pkgs/scripts/source/small_functions/update-sys.sh b/sys/nixpkgs/pkgs/scripts/source/small_functions/update-sys.sh
new file mode 100755
index 00000000..68fb342d
--- /dev/null
+++ b/sys/nixpkgs/pkgs/scripts/source/small_functions/update-sys.sh
@@ -0,0 +1,77 @@
+#!/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