Commit Diff


commit - 34df38c7207c83a80e4f88140e33d2e8af877f71
commit + 075e3db8dd3343d230cece2997109bb55ba78598
blob - 3677ec78531a77c7d00104428b4ca9328e98a2af
blob + 40c1f959c86c57c52accc32e0ef36f420fef31bc
--- flake.lock
+++ flake.lock
@@ -164,11 +164,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1784588016,
-        "narHash": "sha256-ouZe80aWEhMLVMkqICFDN+JUw+0FJtCr/bh+hHtRtMg=",
+        "lastModified": 1784690067,
+        "narHash": "sha256-t86pRs7IPs3RTMPueWvvdcxyTFrctHAv2Jl7jnjsSf8=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "deeb6b7eb7e0c44ae1819c051ce175bd92a85100",
+        "rev": "6d8d61567802997f9ec3086b2a837e3ef31fac16",
         "type": "github"
       },
       "original": {
blob - cdb0fb125d64b0bfb072decf1d72f3cbaebac80a
blob + 65c4695fc4b0e1abc7a7d486fee6d33403be2153
--- home.nix
+++ home.nix
@@ -41,6 +41,7 @@
     builtins.elem (lib.getName pkg) [
       "xnviewmp"
       "tarsnap"
+      "winbox"
     ];
 
   nix = {
blob - 90e1e523ff9499702fd77d3fed84785dd024183c
blob + 0c19f876b3ac142fb09bccbb6507d8baacda4689
Binary files hosts/nixaran/configuration.nix and hosts/nixaran/configuration.nix differ
blob - 1cecb4b0beab7cccba7e2cf7d22ffd0a9e78f87a
blob + ea419444a3a9d8fbe34d9f69ec9e8c90b3e39e8c
--- hosts/void/default.nix
+++ hosts/void/default.nix
@@ -90,6 +90,7 @@
       boring
       oha
       rathole
+      winbox
     ];
 
     media = [
@@ -180,6 +181,7 @@
       picard
       xnviewmp
       tigervnc
+      gittyup
     ];
 
     llm = [
blob - b885959136cef2078a895995944c708a0d60c2cd
blob + faaec611de4cacda20f5c12b7064f2d068d78817
--- hosts/void/overlays/home/nbrc
+++ hosts/void/overlays/home/nbrc
@@ -1,5 +1,5 @@
 #!/usr/bin/env bash
-export EDITOR="emacsclient -n"
+export EDITOR="emacs"
 export NB_DEFAULT_EXTENSION="${NB_DEFAULT_EXTENSION:-org}"
 export NB_SYNTAX_THEME="${NB_SYNTAX_THEME:-base16}"
 export NB_COLOR_THEME="${NB_COLOR_THEME:-smoke}"
blob - 837a5010228521a56e7caca4b08dde3dc90c17d6
blob + 561ba65bc279b4a58c40003ed71888359da22734
--- modules/mixins/dotfiles/bin/bum
+++ modules/mixins/dotfiles/bin/bum
@@ -6,11 +6,6 @@ REGION="$(pass show bum/region)"
 
 BASE="$HOME/misc/mnt/puck"
 
-tailscale status >/dev/null 2>&1 || {
-	echo "tailscale not up" >&2
-	exit 1
-}
-
 bucket=$(
 	aws --profile "$PROFILE" --endpoint-url "$ENDPOINT" --region "$REGION" s3 ls 2>/dev/null |
 		awk '{print $NF}' |
blob - d40a8b614bde6e36e2c67dbde1163912ca7bb7fd
blob + 957acd3923d0ad08c8b8285b102a34836b50e078
--- modules/mixins/dotfiles/bin/givecover
+++ modules/mixins/dotfiles/bin/givecover
@@ -3,16 +3,18 @@
 
 process_file() {
 	local file="$1"
-	local COVER_NAMES=("cover.jpg" "Cover.jpg" "cover.png" "Cover.png")
 	local dir
 	dir=$(dirname "$file")
+	shopt -s nocaseglob
+	local COVER_NAMES=("$dir"/cover.* "$dir"/front.* "$dir"/folder.*)
 	local cover=""
 	for name in "${COVER_NAMES[@]}"; do
-		if [ -f "$dir/$name" ]; then
-			cover="$dir/$name"
+		if [[ ${name,,} =~ (cover|front|folder)\.(jpg|jpeg|png)$ ]] && [ -f "$name" ]; then
+			cover="$name"
 			break
 		fi
 	done
+	shopt -u nocaseglob
 
 	if [ -z "$cover" ]; then
 		echo "[—] $file (no cover found in $dir)"
blob - 759cb26226059447aac845d82a50f5b60903dc38
blob + 6a78ab59255fda852a702e8d05216b7cd8f15e99
--- modules/mixins/dotfiles/config/aerc/aerc.conf
+++ modules/mixins/dotfiles/config/aerc/aerc.conf
@@ -30,4 +30,4 @@ text/html=pandoc -f html -t plain
 x-scheme-handler/http*=printf '%s' {} | wl-copy
 
 [hooks]
-mail-received=pimsync sync contacts >/dev/null 2>&1 & [ "$AERC_ACCOUNT" = "fastmail" ] && [ "$AERC_FOLDER" != "Spam" ] && [ "$AERC_FOLDER" != "Trash" ] && [ "$AERC_FROM_ADDRESS" != "notifications@github.com" ] && notify-send -a aerc "$AERC_FROM_ADDRESS" "$AERC_SUBJECT" || true
+mail-received=pimsync sync contacts >/dev/null 2>&1 & [ "$AERC_ACCOUNT" = "fastmail" ] && [ "$AERC_FOLDER" != "Spam" ] && [ "$AERC_FOLDER" != "Trash" ] && [ "$AERC_FOLDER" != "misc/freebsd" ] && [ "$AERC_FROM_ADDRESS" != "notifications@github.com" ] && notify-send -a aerc "$AERC_FROM_ADDRESS" "$AERC_SUBJECT" || true
blob - bb9cbedee9b07dbcb63a4638b92888161133f101
blob + 2d13389ae309f841e6033fab4dd11276e74ee727
--- modules/services/monitoring/loki.nix
+++ modules/services/monitoring/loki.nix
@@ -17,6 +17,11 @@ in {
       default = 3100;
       description = "Port for Loki HTTP listener";
     };
+    pushPort = lib.mkOption {
+      type = lib.types.port;
+      default = 3101;
+      description = "Tailnet port for Alloy's remote log-push receiver";
+    };
     dataDir = lib.mkOption {
       type = lib.types.str;
       default = "/var/lib/loki";
@@ -60,14 +65,20 @@ in {
     services.alloy = {
       enable = true;
       configPath = pkgs.writeText "alloy-config.river" ''
-        // ── Logs ────────────────────────────────────────────────────────────
-
         loki.write "default" {
           endpoint {
             url = "http://127.0.0.1:${toString cfg.loki.port}/loki/api/v1/push"
           }
         }
 
+        loki.source.api "remote_push" {
+          http {
+            listen_address = "100.64.0.2"
+            listen_port    = ${toString cfg.loki.pushPort}
+          }
+          forward_to = [loki.write.default.receiver]
+        }
+
         loki.relabel "journal" {
           forward_to = []
 
@@ -124,6 +135,45 @@ in {
           forward_to    = [loki.write.default.receiver]
           tail_from_end = true
         }
+
+        loki.relabel "openbsd_syslog" {
+          forward_to = []
+
+          rule {
+            source_labels = ["__syslog_message_app_name"]
+            target_label  = "app"
+          }
+
+          rule {
+            source_labels = ["__syslog_message_severity"]
+            target_label  = "level"
+          }
+
+          rule {
+            source_labels = ["__syslog_message_facility"]
+            target_label  = "facility"
+          }
+        }
+
+        loki.source.syslog "openbsd" {
+          listener {
+            // OpenBSD syslogd forwards in traditional RFC3164 format, whose
+            // timestamps carry no timezone so we stamp on receive.
+            address                = "100.64.0.2:1514"
+            protocol               = "tcp"
+            syslog_format          = "rfc3164"
+            use_incoming_timestamp = false
+            labels = {
+              job = "openbsd-syslog",
+              // RFC3164 from OpenBSD doesn't yield a parseable hostname here,
+              // and this listener only serves helios, so label it statically.
+              host = "helios",
+            }
+          }
+
+          relabel_rules = loki.relabel.openbsd_syslog.rules
+          forward_to    = [loki.write.default.receiver]
+        }
       '';
     };
   };