frajul-auto-upgrade: only run once a day
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
This commit is contained in:
@ -8,7 +8,8 @@
|
|||||||
|
|
||||||
flagFile = "/var/lib/frajul-auto-upgrade/flag";
|
flagFile = "/var/lib/frajul-auto-upgrade/flag";
|
||||||
lockFile = "/var/lib/frajul-auto-upgrade/lock";
|
lockFile = "/var/lib/frajul-auto-upgrade/lock";
|
||||||
lastStatusFile = "/var/lib/nixos-auto-upgrade/last-status";
|
lastStatusFile = "/var/lib/frajul-auto-upgrade/last-status";
|
||||||
|
lastAttemptFile = "/var/lib/frajul-auto-upgrade/last-attempt";
|
||||||
in {
|
in {
|
||||||
options.modules.frajulAutoUpgrade = {
|
options.modules.frajulAutoUpgrade = {
|
||||||
enable = lib.mkEnableOption "NixOS auto-upgrade on boot";
|
enable = lib.mkEnableOption "NixOS auto-upgrade on boot";
|
||||||
@ -31,6 +32,7 @@ in {
|
|||||||
"d /var/lib/frajul-auto-upgrade 0755 root root -"
|
"d /var/lib/frajul-auto-upgrade 0755 root root -"
|
||||||
"f ${flagFile} 0766 root root -"
|
"f ${flagFile} 0766 root root -"
|
||||||
"f ${lastStatusFile} 0644 root root -"
|
"f ${lastStatusFile} 0644 root root -"
|
||||||
|
"f ${lastAttemptFile} 0644 root root -"
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
@ -39,11 +41,24 @@ in {
|
|||||||
FLAG_FILE="${flagFile}"
|
FLAG_FILE="${flagFile}"
|
||||||
LOCK_FILE="${lockFile}"
|
LOCK_FILE="${lockFile}"
|
||||||
LAST_STATUS_FILE="${lastStatusFile}"
|
LAST_STATUS_FILE="${lastStatusFile}"
|
||||||
|
LAST_ATTEMPT_FILE="${lastAttemptFile}"
|
||||||
|
|
||||||
|
TODAY=$(date +%Y-%m-%d)
|
||||||
|
|
||||||
if [ ! -f "$FLAG_FILE" ] || [ "$(cat "$FLAG_FILE")" != "enabled" ]; then
|
if [ ! -f "$FLAG_FILE" ] || [ "$(cat "$FLAG_FILE")" != "enabled" ]; then
|
||||||
|
echo "Auto upgrade disabled. Exiting."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check if already attempted today
|
||||||
|
if [ -f "$LAST_ATTEMPT_FILE" ]; then
|
||||||
|
LAST_ATTEMPT_DATE=$(cut -d' ' -f1 "$LAST_ATTEMPT_FILE")
|
||||||
|
if [ "$LAST_ATTEMPT_DATE" = "$TODAY" ]; then
|
||||||
|
echo "Update already attempted today. Skipping."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -f "$LOCK_FILE" ]; then
|
if [ -f "$LOCK_FILE" ]; then
|
||||||
echo "Already running"
|
echo "Already running"
|
||||||
exit 1
|
exit 1
|
||||||
@ -57,6 +72,9 @@ in {
|
|||||||
else
|
else
|
||||||
echo "failure" > "$LAST_STATUS_FILE"
|
echo "failure" > "$LAST_STATUS_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Write full timestamp
|
||||||
|
date '+%Y-%m-%d %H:%M:%S' > "$LAST_ATTEMPT_FILE"
|
||||||
'')
|
'')
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "frajul-auto-upgrade-status" ''
|
(pkgs.writeShellScriptBin "frajul-auto-upgrade-status" ''
|
||||||
@ -64,25 +82,31 @@ in {
|
|||||||
FLAG_FILE="${flagFile}"
|
FLAG_FILE="${flagFile}"
|
||||||
LOCK_FILE="${lockFile}"
|
LOCK_FILE="${lockFile}"
|
||||||
LAST_STATUS_FILE="${lastStatusFile}"
|
LAST_STATUS_FILE="${lastStatusFile}"
|
||||||
|
LAST_ATTEMPT_FILE="${lastAttemptFile}"
|
||||||
|
|
||||||
if [ -f "$LOCK_FILE" ]; then
|
if [ -f "$LOCK_FILE" ]; then
|
||||||
ICON=" "
|
ICON=" "
|
||||||
STATUS="running"
|
STATUS="running"
|
||||||
elif [ -f "$FLAG_FILE" ] && [ "$(cat "$FLAG_FILE")" == "enabled" ]; then
|
elif [ -f "$FLAG_FILE" ] && [ "$(cat "$FLAG_FILE")" == "enabled" ]; then
|
||||||
LAST="unknown"
|
LAST_STATUS="unknown"
|
||||||
|
LAST_ATTEMPT="never"
|
||||||
if [ -f "$LAST_STATUS_FILE" ]; then
|
if [ -f "$LAST_STATUS_FILE" ]; then
|
||||||
LAST=$(cat "$LAST_STATUS_FILE")
|
LAST_STATUS=$(cat "$LAST_STATUS_FILE")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$LAST" = "success" ]; then
|
if [ -f "$LAST_ATTEMPT_FILE" ]; then
|
||||||
|
LAST_ATTEMPT=$(cat "$LAST_ATTEMPT_FILE")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$LAST_STATUS" = "success" ]; then
|
||||||
ICON=""
|
ICON=""
|
||||||
elif [ "$LAST" = "failure" ]; then
|
elif [ "$LAST_STATUS" = "failure" ]; then
|
||||||
ICON=""
|
ICON=""
|
||||||
else
|
else
|
||||||
ICON=""
|
ICON=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
STATUS="enabled (last: $LAST)"
|
STATUS="enabled (last attempt: $LAST_ATTEMPT, $LAST_STATUS)"
|
||||||
else
|
else
|
||||||
ICON=" "
|
ICON=" "
|
||||||
STATUS="disabled"
|
STATUS="disabled"
|
||||||
|
Reference in New Issue
Block a user