From e21663c8e36bfcb0c02e31c32744a982561b5ad4 Mon Sep 17 00:00:00 2001 From: maralorn Date: Fri, 17 Mar 2023 15:52:57 +0100 Subject: [PATCH] Fetch based system update --- home-manager/machines.nix | 2 +- .../{hourly-maintenance.nix => refresh-config.nix} | 4 ++-- packages/status-script/exe/Main.hs | 10 +++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) rename home-manager/roles/{hourly-maintenance.nix => refresh-config.nix} (81%) diff --git a/home-manager/machines.nix b/home-manager/machines.nix index 1a49e572..4ba41e56 100644 --- a/home-manager/machines.nix +++ b/home-manager/machines.nix @@ -58,6 +58,7 @@ let ++ [ (makeAutostart "kassandra2") (makeAutostart "unlock-ssh") + ./roles/refresh-config.nix ./roles/firefox.nix ./roles/kassandra.nix ./roles/mode-switching.nix @@ -138,7 +139,6 @@ in { ./roles/untrusted-env.nix ]; zeus = daily-driver "zeus" [ - ./roles/hourly-maintenance.nix (import ./roles/state.nix "orga") ./roles/trusted-env.nix ./roles/monitor-config diff --git a/home-manager/roles/hourly-maintenance.nix b/home-manager/roles/refresh-config.nix similarity index 81% rename from home-manager/roles/hourly-maintenance.nix rename to home-manager/roles/refresh-config.nix index 66cd0de9..2b520c49 100644 --- a/home-manager/roles/hourly-maintenance.nix +++ b/home-manager/roles/refresh-config.nix @@ -8,10 +8,10 @@ in { systemd.user = { services.update-config = { - Unit.Description = "Routine maintenance"; + Unit.Description = "Fetch config repo"; Service = { Type = "oneshot"; - ExecStart = "${configGit} pull --ff-only"; + ExecStart = "${configGit} fetch origin main"; }; }; timers.update-config = { diff --git a/packages/status-script/exe/Main.hs b/packages/status-script/exe/Main.hs index c0883fb8..a2d1962b 100644 --- a/packages/status-script/exe/Main.hs +++ b/packages/status-script/exe/Main.hs @@ -7,6 +7,7 @@ import Control.Exception (catch, onException) import Control.Exception qualified as Exception import Data.ByteString.Char8 qualified as ByteString import Data.ByteString.Lazy qualified as LBS +import Data.ByteString.Lazy.Char8 qualified as LBSC import Data.String.Interpolate (i) import Data.Text qualified as Text import Data.Time qualified as Time @@ -214,7 +215,14 @@ main = do , simpleModule (5 * oneSecond) $ do current_kernel <- readlink "/run/current-system/kernel" |> captureTrim booted_kernel <- readlink "/run/booted-system/kernel" |> captureTrim - when' (current_kernel /= booted_kernel) $ withColor "ffff00" "Booted kernel stale" + when' (current_kernel /= booted_kernel) $ withColor yellow "Booted kernel stale" + , simpleModule (5 * oneSecond) $ do + mode <- read_mode + behind <- + if mode /= Klausur + then tryCmd (git "--no-optional-locks" "-C" git_dir "log" "--oneline" "origin/main" "^main") + else pure "" + when' (not $ LBS.null behind) $ withColor yellow [i|Config #{show (length (LBSC.lines behind))} commits behind.|] , \var -> do commit_var <- newTVarIO "" system_var <- newTVarIO ""