feat(arch-layer,scripts): linux-gated desktop configs + package install scripts

niri (exact_config.d, scripts), noctalia (plugins excluded — runtime
state with embedded token), fontconfig, mimeapps.list,
niri-dynamic-workspaces, systemd user unit files (enable-state not
managed; only nirinit enabled by run_once), niri-launch vendored from
/usr/bin (unowned hand-written script, shellcheck warnings pre-existing).

Scripts: packages (pacman --needed + paru, brew on darwin, root-safe,
keyed on packages.yaml hash), gh extensions (idempotent), user services
(linux), post (tpm clone, bat cache, fc-cache). All shellcheck-clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Prad NukalaandClaude Fable 5 committed 2026-08-09 14:56:09 -04:00
1 parent 20891f3910
commit 2142bdf9cb
61 files changed
+3113 -3

No files matched your search

@@ -0,0 +1,6 @@
[Unit]
Description=Second-brain lens %i
[Service]
Type=oneshot
ExecStart=%h/Documents/Obsidian/Brain/_System/Brain/run-lens.sh %i
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens build-next schedule
[Timer]
OnCalendar=*-*-* 01,07,13,19:37:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens coach schedule
[Timer]
OnCalendar=*-*-* 03,09,15,21:07:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens digest schedule
[Timer]
OnCalendar=*-*-* 08:03:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens what-worked schedule
[Timer]
OnCalendar=*-*-* 00,06,12,18:07:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,9 @@
[Unit]
Description=Second-brain lens write-next schedule
[Timer]
OnCalendar=*-*-* 04,10,16,22:37:00
Persistent=true
[Install]
WantedBy=timers.target
@@ -0,0 +1,27 @@
[Unit]
Description=Hermes Agent Gateway - Messaging Platform Integration
After=network-online.target
Wants=network-online.target
StartLimitIntervalSec=0
[Service]
Type=simple
ExecStart=/home/prad/.hermes/hermes-agent/venv/bin/python -m hermes_cli.main gateway run
WorkingDirectory=/home/prad/.hermes
Environment="PATH=/home/prad/.hermes/hermes-agent/venv/bin:/home/prad/.hermes/hermes-agent/node_modules/.bin:/home/prad/.local/share/mise/installs/node/latest/bin:/home/prad/.local/bin:/home/prad/.cargo/bin:/home/prad/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="VIRTUAL_ENV=/home/prad/.hermes/hermes-agent/venv"
Environment="HERMES_HOME=/home/prad/.hermes"
Restart=always
RestartSec=5
RestartForceExitStatus=75
RestartPreventExitStatus=78
KillMode=mixed
KillSignal=SIGTERM
ExecReload=/bin/kill -USR1 $MAINPID
ExecStopPost=-/home/prad/.hermes/hermes-agent/venv/bin/python -m gateway.cgroup_cleanup
TimeoutStopSec=210
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=default.target
+14
View File
@@ -0,0 +1,14 @@
[Unit]
Description=nirinit - Niri session save/restore
PartOf=graphical-session.target
After=graphical-session.target
Requisite=graphical-session.target
[Service]
Type=simple
ExecStart=%h/.cargo/bin/nirinit --save-interval 300
Restart=on-failure
RestartSec=2
[Install]
WantedBy=graphical-session.target
+10
View File
@@ -0,0 +1,10 @@
[Unit]
Description=omp agent loop: %i
[Service]
Type=oneshot
ExecStart=%h/.omp/loops/bin/run-loop.sh %i
# Loops are green (read-only + own state file) but belt-and-braces:
# no interactive session, hard runtime ceiling above the script's own caps.
TimeoutStartSec=45min
Nice=10
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: answer-gap
[Timer]
OnCalendar=Thu 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: brand-radar
[Timer]
OnCalendar=Wed 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: competitor-watch
[Timer]
OnCalendar=Fri 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: intel-refresh
[Timer]
OnCalendar=Mon 06:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: regulatory-digest
[Timer]
OnCalendar=Tue 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: repeat-offender
[Timer]
OnCalendar=Sun 18:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,10 @@
[Unit]
Description=Timer for omp loop: share-of-model
[Timer]
OnCalendar=Mon 07:00
Persistent=true
RandomizedDelaySec=10min
[Install]
WantedBy=timers.target
@@ -0,0 +1,15 @@
[Unit]
Description=Open WebUI connected to Hermes Agent
After=default.target
[Service]
Type=simple
ExecStart=/bin/bash %h/.local/bin/start-open-webui-hermes.sh
Restart=always
RestartSec=3
WorkingDirectory=%h
StandardOutput=append:%h/.hermes/logs/openwebui.log
StandardError=append:%h/.hermes/logs/openwebui.error.log
[Install]
WantedBy=default.target
@@ -0,0 +1,7 @@
[Unit]
Description=Rclone SFTP Service for gdrive-hyperauth
Requires=rclone-gdrive-hyperauth.socket
[Service]
Type=simple
ExecStart=/usr/bin/rclone serve sftp gdrive-hyperauth: --vfs-cache-mode full --vfs-fast-fingerprint --user yazi --pass yazi
@@ -0,0 +1,8 @@
[Unit]
Description=Rclone SFTP Socket for gdrive-hyperauth
[Socket]
ListenStream=127.0.0.1:2223
[Install]
WantedBy=sockets.target
@@ -0,0 +1,7 @@
[Unit]
Description=Rclone SFTP Service for gdrive-personal
Requires=rclone-gdrive-personal.socket
[Service]
Type=simple
ExecStart=/usr/bin/rclone serve sftp gdrive-personal: --vfs-cache-mode full --vfs-fast-fingerprint --user yazi --pass yazi
@@ -0,0 +1,8 @@
[Unit]
Description=Rclone SFTP Socket for gdrive-personal
[Socket]
ListenStream=127.0.0.1:2221
[Install]
WantedBy=sockets.target
@@ -0,0 +1,7 @@
[Unit]
Description=Rclone SFTP Service for gdrive-sonr
Requires=rclone-gdrive-sonr.socket
[Service]
Type=simple
ExecStart=/usr/bin/rclone serve sftp gdrive-sonr: --vfs-cache-mode full --vfs-fast-fingerprint --user yazi --pass yazi
@@ -0,0 +1,8 @@
[Unit]
Description=Rclone SFTP Socket for gdrive-sonr
[Socket]
ListenStream=127.0.0.1:2222
[Install]
WantedBy=sockets.target
@@ -0,0 +1,12 @@
[Unit]
Description=Shelly Notifications tray service
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/shelly-notifications
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=graphical-session.target
+17
View File
@@ -0,0 +1,17 @@
[Unit]
Description=Voxtype push-to-talk voice-to-text daemon
Documentation=https://voxtype.io
PartOf=graphical-session.target
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/voxtype daemon
Restart=on-failure
RestartSec=5
# Ensure we have access to the display
Environment=XDG_RUNTIME_DIR=%t
[Install]
WantedBy=graphical-session.target