commit c58272461eda5d48cdda09f903479949a1da8c28
parent e1cacc6a8a48a1e5c465b0cf46228beffad27328
Author: breadcat <breadcat@users.noreply.github.com>
Date: Tue, 5 Aug 2025 18:07:49 +0100
Add blog-status script and timer
Work in progress, need to port some information and move over more containers
Diffstat:
2 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/common/blog-status.nix b/common/blog-status.nix
@@ -0,0 +1,44 @@
+{ pkgs, username, domain, ... }:
+
+let
+ blog-status = pkgs.writeShellScriptBin "blog-status" ''
+ # variables
+ status_uptime=$(($(cut -f1 -d. </proc/uptime) / 86400))
+ # process
+ {
+ printf -- "---\\ntitle: Status\\nlayout: single\\n---\\n\\n"
+ printf "*Generated on %(%Y-%m-%d at %H:%M)T*\\n\\n" -1
+ printf "* Uptime: %s Day%s\\n" "$status_uptime" "$(if (("$status_uptime" > 1)); then echo s; fi)"
+ printf "* CPU Load: %s\\n" "$(cut -d" " -f1-3 </proc/loadavg)"
+ printf "* Users: %s\\n" "$(who | wc -l)"
+ printf "* RAM Usage: %s%%\\n" "$(printf "%.2f" "$(free | awk '/Mem/ {print $3/$2 * 100.0}')")"
+ # printf "* Swap Usage: %s%%\\n" "$(printf "%.2f" "$(free | awk '/Swap/ {print $3/$2 * 100.0}')")"
+ printf "* Root Storage: %s\\n" "$(df / | awk 'END{print $5}')"
+ # TODO printf "* Tank Storage: %s\\n" "$(df | awk -v tank="$directory_tank" '$0 ~ tank {print $5}')"
+ # TODO printf "* Torrent Ratio: %s\\n" "$(echo "scale=3; $(awk '/uploaded/ {print $2}' "$(find_directory docker)"/transmission/stats.json)" / "$(awk '/downloaded/ {print $2}' "$(find_directory docker)"/transmission/stats.json | sed 's/,//g')" | bc)"
+ printf "* NAS Storage: %s\\n" "$(git --git-dir="$HOME/vault/src/logger/.git" show | awk 'END{print $3" "$4}')"
+ printf "* [Containers](https://github.com/breadcat/Dockerfiles): %s\\n" "$(docker ps -q | wc -l)/$(docker ps -aq | wc -l)"
+ # TODO printf "* Packages: %s\\n" "$(pacman -Q | wc -l)"
+ printf "* Monthly Data: %s\\n" "$(vnstat -m --oneline | cut -f11 -d\;)"
+ printf "\\nHardware specifications themselves are covered on the [hardware page](/hardware/#server).\\n"
+ } >"$HOME/vault/src/blog.${domain}/content/status.md"
+ '';
+in {
+ environment.systemPackages = [blog-status];
+
+ systemd.timers.blog-status = {
+ wantedBy = [ "timers.target" ];
+ timerConfig = {
+ OnCalendar = "*:0/10";
+ Persistent = true;
+ };
+ };
+ systemd.services.blog-status = {
+ script = "blog-status";
+ path = [ "/run/current-system/sw" ];
+ serviceConfig = {
+ Type = "oneshot";
+ User = "${username}";
+ };
+ };
+}
diff --git a/machines/artemis.nix b/machines/artemis.nix
@@ -26,6 +26,7 @@ in {
(import "${home-manager}/nixos") # Home-Manager
(import ../common/docker.nix {inherit config pkgs username domain timezone htpasswd todosecret vpnusername vpnpassword;})
(import ../common/blog-duolingo.nix {inherit pkgs domain username;})
+ (import ../common/blog-status.nix {inherit pkgs domain username;})
../common/flakes.nix
../common/garbage.nix
../common/vnstat.nix