greenhouse

kore

my public infrastructure monorepo

git clone [email protected]:kore.git

feat(home/feats/*): fetch tool and foot padding

commit08b5e16a23c1931490af5b7d2b19f3c19fd81f04
parentf102fe4965551a26446375c53d9682d44e1d7d15
authorlostduk <[email protected]>
date2026-10-16 02:02 +0700
home/features/cli/bash.nix80++++++++++++++++++++++++++++++++++++++++
home/features/wayland/foot.nix1+

2 files changed, -1/+80

home/features/cli/bash.nix

@@ -1,4 +1,76 @@-{+{ osConfig, pkgs, ... }:++let+  fetch = pkgs.writeShellApplication {+    name = "fetch";+    runtimeInputs = [ pkgs.coreutils pkgs.gnused pkgs.gnugrep osConfig.nix.package ];+    text = ''+      os="$(sed -n 's/^ID=//p' /etc/os-release) $(sed -n 's/^VERSION_ID=//p' /etc/os-release | tr -d '"')"++      vendor="$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null || true)"+      model="$(cat /sys/class/dmi/id/product_name 2>/dev/null || true)"+      case "$model" in ""|*"Default string"*|*"To be filled"*|*"System Product Name"*)+        model="$(cat /sys/class/dmi/id/board_name 2>/dev/null || true)" ;;+      esac+      host="''${vendor%% *} $model"++      read -r up _ < /proc/uptime+      up=''${up%.*}+      days=$((up / 86400)) hours=$((up % 86400 / 3600)) mins=$((up % 3600 / 60))+      uptime="''${mins}m"+      [ "$hours" -gt 0 ] && uptime="''${hours}h $uptime"+      [ "$days" -gt 0 ] && uptime="''${days}d $uptime"++      while read -r key value _; do+        case "$key" in+          MemTotal:) total=$value ;;+          MemAvailable:) avail=$value ;;+        esac+      done < /proc/meminfo+      memory="$(((total - avail) / 1024))M / $((total / 1024))M"++      user="''${USER:-$(id -un)}"+      pkgs=0+      for profile in /run/current-system "/etc/profiles/per-user/$user"; do+        [ -e "$profile" ] || continue+        root="$(readlink -f "$profile")"+        count="$(nix-store -qR "$profile" \+          | while read -r path; do [ "$path" != "$root" ] && [ -d "$path" ] && printf '%s\n' "''${path##*/}"; done \+          | grep -vE -- '-(doc|man|info|dev|bin)$' | grep -cE '[0-9]+\.[0-9]' || true)"+        pkgs=$((pkgs + count))+      done++      r=$'\e[31m' g=$'\e[32m' y=$'\e[33m' d=$'\e[37m' f=$'\e[97m' z=$'\e[0m'++      art=(+        "$r    .-.-.    "+        "$r  .( $y@@@$r ).  "+        "$r (  $y@@@@@$r  ) "+        "$r  '.($y@@@$r).'  "+        "$g  \\_  |  _/  "+        "$g    '-|-'    "+        "$g      |      "+      )+      info=(+        "$f$user$d@$f$HOSTNAME"+        "''${g}os$z      $os"+        "''${g}host$z    $host"+        "''${g}kernel$z  $(uname -r)"+        "''${g}uptime$z  $uptime"+        "''${g}pkgs$z    $pkgs"+        "''${g}memory$z  $memory"+      )++      printf '\n'+      for i in "''${!art[@]}"; do+        printf '  %s%s  %s%s\n' "''${art[$i]}" "$z" "''${info[$i]}" "$z"+      done+      printf '\n'+    '';+  };+in {+  home.packages = [ fetch ];+   programs = {     eza.enable = true; @@ -13,6 +85,12 @@          dev = "cd $HOME/documents/dev";       };++      initExtra = ''+        if [[ -z "''${TMUX:-}" && -z "''${SSH_CONNECTION:-}" && "$TERM" == foot* ]]; then+          fetch+        fi+      '';     };   }; }

home/features/wayland/foot.nix

@@ -9,6 +9,7 @@ in {       main = {         font = "Fantasque Sans Mono:size=11";         line-height = "16px";+        pad = "30x30 center";       };        colors-dark = {