nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

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:
Acommon/blog-status.nix | 44++++++++++++++++++++++++++++++++++++++++++++
Mmachines/artemis.nix | 1+
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