`inventory/home-config-census.md` was dated 2026-08-28, tagged `unverified`,
and every path in it was `/home/dank` — it described another box, yet
`inventory/index.md` still advertised it as the input for the pruning session,
so the pruning session would have pruned against fiction.
Rebuilt from this box, purpose stated in line one. Classification is per FILE
because the tracked unit is a symlink into `dotfiles/`: a directory can look
"real" while every file inside it is tracked (`niri` 12/1, `gtk-3.0` 3/0), and
a directory can be one whole symlink (`lazyvim`). The classifier command is in
the page so tomorrow's agent reruns it instead of trusting the table.
The generated/authored split is the load-bearing part: 24 `noctalia*` palette
files across 20 apps are one generator pass, proven by the
`2026-10-14 19:05:40.330…40.813` same-second cluster and later single re-stamps
(`bat` 10-18, `niri` 10-18, `mango` 10-17). A same-second mass write is
generation, never authorship — so the source palette stays tracked and the
expansion never is. Adoption candidates are limited to programs that pass
`command -v`, with authorship read from the file; the prune list extends the
expected 14 with `pywalfox`, `qt5ct`, `qt6ct`, `turborepo`, and notes that six
of the orphan dirs contain nothing but generated palette.
`fib-watchdog.{service,timer}` is recorded as owned by the bench repo, not
adopted here: its `ExecStart` and `WorkingDirectory` are that project's
internals. It is flagged as a reinstall risk instead, which is the honest
status. Deleted: the `/home/dank` rows, `~/.pi`, Steam library sizes, and the
old offender/summary tables — numbers for software that is not installed here
fail the purpose test.
Refs #40
190 lines
12 KiB
Markdown
190 lines
12 KiB
Markdown
---
|
|
type: reference
|
|
title: Home Configuration Census (blankpad)
|
|
description: Per-file tracked-vs-box-only census of ~/.config on blankpad — the input for the dotfiles pruning/adoption session.
|
|
tags: [inventory, census, dotfiles, config]
|
|
created: 2026-08-28
|
|
census-date: 2026-10-20
|
|
verified: 2026-10-20
|
|
source: blankpad (CachyOS, /home/blank)
|
|
---
|
|
|
|
This page is the input for the dotfiles pruning/adoption session: for every
|
|
`~/.config` entry it separates what the repo already tracks from what lives only
|
|
on this box, and sorts the box-only half into adopt / never-track / prune.
|
|
|
|
## Method
|
|
|
|
Classification is per **FILE**, not per directory: the tracked unit is a symlink
|
|
into `~/.omp/dotfiles/`. A directory can look "real" (a plain folder, not itself
|
|
a symlink) while every file inside it is a tracked symlink — `niri` and `gtk-3.0`
|
|
do exactly that. Conversely a directory can be a whole symlink into `dotfiles`
|
|
(`lazyvim`) and be entirely tracked. So a directory-level verdict lies; only the
|
|
leaf symlink target is ground truth.
|
|
|
|
- **tracked** = a file whose fully-resolved target (`readlink -f`) is under
|
|
`/home/blank/.omp/dotfiles/`.
|
|
- **box-only** = a regular file, or a symlink that resolves elsewhere.
|
|
|
|
Rerun this classifier rather than trusting the table below:
|
|
|
|
```bash
|
|
DOT=/home/blank/.omp/dotfiles; CFG=/home/blank/.config
|
|
for d in "$CFG"/*; do
|
|
[ -L "$d" ] && case "$(readlink -f "$d")" in "$DOT"/*) echo "$(basename "$d"): tracked=ALL box-only=0"; continue;; esac
|
|
[ -d "$d" ] || { echo "$(basename "$d"): FILE (top-level)"; continue; }
|
|
tr=0; bo=0; names=""
|
|
while IFS= read -r -d '' f; do
|
|
if [ -L "$f" ]; then case "$(readlink -f "$f")" in "$DOT"/*) tr=$((tr+1)); continue;; esac; fi
|
|
bo=$((bo+1)); names+=" ${f#"$CFG"/}"
|
|
done < <(find "$d" -mindepth 1 \( -type f -o -type l \) -print0 2>/dev/null)
|
|
printf '%s: tracked=%d box-only=%d%s\n' "$(basename "$d")" "$tr" "$bo" "$names"
|
|
done
|
|
```
|
|
|
|
## ~/.config — tracked vs box-only
|
|
|
|
Profile/browser dirs (`mozilla` 5471 files, `obsidian` 99, `FreeTube` 56,
|
|
`nirimod` 116, `google-chrome-for-testing` 5) are app state, never tracked, and
|
|
are omitted as rows. Box-only bulk that is regenerated-by-the-program is named
|
|
by category, not file-by-file.
|
|
|
|
| `~/.config/` dir | tracked | box-only | box-only files |
|
|
|---|--:|--:|---|
|
|
| alacritty | 1 | 1 | `themes/noctalia.toml` (generated) |
|
|
| autostart | 0 | 3 | `Flameshot.desktop`, `cachyos-hello.desktop`, `.AGENTTRASH/Handy.desktop` |
|
|
| bat | 0 | 2 | `config`, `themes/noctalia.tmTheme` (generated) |
|
|
| btop | 0 | 2 | `btop.conf`, `themes/noctalia.theme` (generated) |
|
|
| cachyos | 0 | 1 | `cachyos-hello/cachyos-hello.log` (state) |
|
|
| cava | 0 | 1 | `themes/noctalia` (generated) — program absent, prune |
|
|
| crush | 0 | 37 | `skills/<37>` — skills-CLI install |
|
|
| containers | 0 | 2 | `systemd/franksign-db.container`, `systemd/postgres.env` (see §Owned-elsewhere / secret tier) |
|
|
| dconf | 0 | 1 | `user` (compiled dconf db, state) |
|
|
| devin | 0 | 37 | `skills/<37>` — skills-CLI install |
|
|
| fastfetch | 0 | 1 | `themes/noctalia.jsonc` (generated) |
|
|
| fish | 2 | 1 | `fish_variables` (fish var store, state) |
|
|
| flameshot | 0 | 1 | `flameshot.ini` |
|
|
| foot | 0 | 2 | `foot.ini`, `themes/noctalia` (generated) — program absent, prune |
|
|
| fzf | 0 | 2 | `themes/noctalia.sh`, `themes/noctalia.fish` (generated) |
|
|
| ghostty | 2 | 1 | `themes/noctalia` (generated) |
|
|
| glow | 0 | 2 | `glow.yml`, `noctalia.json` (generated) |
|
|
| goose | 0 | 37 | `skills/<37>` — skills-CLI install |
|
|
| gtk-3.0 | 3 | 0 | — |
|
|
| gtk-4.0 | 2 | 1 | `servers` (KDE-generated) |
|
|
| helix | 0 | 1 | `themes/noctalia.toml` (generated) — `hx` absent, prune |
|
|
| herdr | 0 | 1 | `noctalia-colors.toml` (generated) |
|
|
| hypr | 0 | 2 | `hyprland.conf`, `noctalia.conf` (generated) — `hyprland` absent, prune |
|
|
| kimchi | 0 | 37 | `harness/skills/<37>` — skills-CLI install |
|
|
| kitty | 0 | 2 | `kitty.conf`, `themes/noctalia.conf` (generated) — program absent, prune |
|
|
| labwc | 0 | 2 | `rc.xml`, `noctalia.conf` (generated) — program absent, prune |
|
|
| lazygit | 0 | 2 | `config.yml`, `themes/noctalia.yml` (generated) |
|
|
| lazyvim | ALL | 0 | — (whole dir symlink → `dotfiles/lazyvim`) |
|
|
| mango | 0 | 2 | `config.conf`, `noctalia.conf` (generated) — program absent, prune |
|
|
| micro | 0 | 154 | adopt: `settings.json`, `bindings.json`; generated: `colorschemes/noctalia.micro`; bundled/state: `syntax/*` (146), `buffers/history` |
|
|
| mpv | 0 | 0 | — (empty) |
|
|
| nautilus | 0 | 0 | — (empty) |
|
|
| niri | 12 | 1 | `noctalia.kdl` (generated) |
|
|
| noctalia | 2 | 0 | — |
|
|
| nvim | 0 | 0 | — (empty) |
|
|
| pywalfox | 0 | 1 | `config.json` — program absent, prune |
|
|
| qt5ct | 0 | 1 | `colors/noctalia.conf` (generated) — program absent, prune |
|
|
| qt6ct | 0 | 1 | `colors/noctalia.conf` (generated) — program absent, prune |
|
|
| rofi | 0 | 1 | `noctalia.rasi` (generated) — program absent, prune |
|
|
| scroll | 0 | 2 | `config`, `noctalia` (generated) — program absent, prune |
|
|
| secrets | 0 | 4 | `gitea`, `hf_token`, `hf_token_write`, `kagi_api_key` (names only — secret tier) |
|
|
| shelly | 0 | 2 | `config.json`, `settings.json` |
|
|
| sway | 0 | 2 | `config`, `noctalia` (generated) — program absent, prune |
|
|
| systemd | 9 | 3 | `user/fib-watchdog.service`, `user/fib-watchdog.timer`, `user/timers.target.wants/fib-watchdog.timer` |
|
|
| tmux | 0 | 1 | `themes/noctalia.conf` (generated) |
|
|
| turborepo | 0 | 1 | `telemetry.json` — `turbo` absent, prune |
|
|
| umbriel | 0 | 2 | `config.toml`, `noctalia.toml` (generated) — program absent, prune |
|
|
| unity3d | 0 | 235 | RimWorld state: `Saves` (201), `Config` (21), other (13) — never track |
|
|
| wezterm | 0 | 1 | `colors/Noctalia.toml` (generated) — program absent, prune |
|
|
| yay | 0 | 0 | — (empty) |
|
|
| ytm-player | 0 | 1 | `theme.toml` — program absent, prune |
|
|
|
|
### Top-level `~/.config` files (not directories)
|
|
|
|
All regular files, none symlinked into `dotfiles`:
|
|
`starship.toml` (prune — `starship` absent), `frank-job-hunt.env` (secret tier),
|
|
`kdeglobals`, `partitionmanagerrc`, `pavucontrol.ini`, `cachyos-hello.json`,
|
|
`user-dirs.dirs`, `user-dirs.locale` (XDG/desktop state).
|
|
|
|
## Adoption candidates (program passes `command -v`)
|
|
|
|
Pre-vetted box-only files worth moving into `dotfiles`. Authorship is from the
|
|
file contents, read directly.
|
|
|
|
| File | Program (path) | Authored or default |
|
|
|---|---|---|
|
|
| `~/.gitconfig` | git (`/usr/bin/git`) | Authored — single setting line: `credential.helper = store --file ~/.config/secrets/gitea` (points at the secret tier; adopt the line, never the file it names) |
|
|
| `~/.config/bat/config` | bat (`/usr/bin/bat`) | Authored — one line `--theme=noctalia` |
|
|
| `~/.config/lazygit/config.yml` | lazygit (`/usr/bin/lazygit`) | Authored — 28-line custom noctalia color theme |
|
|
| `~/.config/micro/settings.json` | micro (`/usr/bin/micro`) | Authored — `{"colorscheme":"noctalia"}` |
|
|
| `~/.config/micro/bindings.json` | micro (`/usr/bin/micro`) | Default — empty `{}`, no custom bindings |
|
|
| `~/.config/flameshot/flameshot.ini` | flameshot (`/usr/bin/flameshot`) | Authored — `contrastOpacity=188`, `startupLaunch=true` |
|
|
| `~/.config/glow/glow.yml` | glow (`/usr/bin/glow`) | Default — shipped template, all default values (noctalia look comes from the generated `noctalia.json`, not this file) |
|
|
| `~/.config/autostart/Flameshot.desktop` | flameshot (`/usr/bin/flameshot`) | Authored — `Exec=flameshot`, `X-GNOME-Autostart-enabled=true` |
|
|
|
|
Every `~/.config` box-only row above lists each file, so the session can extend
|
|
beyond these seven (e.g. `btop/btop.conf`, `shelly/*` are also installed-program
|
|
configs).
|
|
|
|
## Never track (box-only)
|
|
|
|
| Reason | Contents |
|
|
|---|---|
|
|
| **Generated palette expansion** | Every `themes/noctalia*`, `*/noctalia.*`, `*/colors/noctalia*` / `Noctalia*` (24 files outside app-profile dirs). Machine-written by matugen/noctalia, not hand-authored: the `stat -c '%y %n'` cluster `2026-10-14 19:05:40.330…40.813 -0700` writes 24 files in one second (`alacritty/themes/noctalia.toml` at `.330212397`, `btop/themes/noctalia.theme` at `.334212456`, `tmux/themes/noctalia.conf` at `.813219586`, …); later re-runs re-stamp singles — `bat/themes/noctalia.tmTheme` `2026-10-18 17:11:22`, `niri/noctalia.kdl` `2026-10-18 17:36:27`, `mango/noctalia.conf` `2026-10-17 18:23:37`. A same-second mass-write is generation, never an edit. |
|
|
| **App state / profiles** | `mozilla` (5471), `unity3d` RimWorld state (235), `nirimod` (116), `obsidian` (99), `FreeTube` (56), `google-chrome-for-testing` (5); plus per-program state inside tracked dirs: `dconf/user`, `fish/fish_variables`, `micro/syntax/*`+`micro/buffers/history`, `gtk-4.0/servers`, `cachyos/cachyos-hello.log`. |
|
|
| **Skills-CLI installs** | `crush` (37), `devin` (37), `goose` (37), `kimchi/harness` (37) skill trees — provisioned by the skills CLI, owned by the store, not this repo. See [skills/store-wiring](/skills/store-wiring.md). |
|
|
| **Secret tier** | `~/.config/secrets/` (`gitea`, `hf_token`, `hf_token_write`, `kagi_api_key` — names only), top-level `frank-job-hunt.env`, `containers/systemd/postgres.env`. Never tracked, values never printed. |
|
|
|
|
## Owned-elsewhere (do not adopt here)
|
|
|
|
- `~/.config/containers/systemd/franksign-db.container` — header:
|
|
*"Installed by `infra/setup-dev.sh` into `~/.config/containers/systemd/`."*
|
|
Owned by the franksign repo; its quadlet, not this box's config.
|
|
- `~/.config/systemd/user/fib-watchdog.service` + `.timer` — box-only.
|
|
`ExecStart=/usr/bin/bun src/cli.ts worker` with
|
|
`WorkingDirectory=/home/blank/Projects/frank-intelligence-bench`.
|
|
`systemctl --user is-active fib-watchdog.timer` → **inactive**. This box holds
|
|
the only copy. Do **not** adopt it into `dotfiles`: `ExecStart` and
|
|
`WorkingDirectory` are the bench project's internals, so that repo owns the
|
|
unit — land it there and this row becomes "deployed by the bench repo". Until
|
|
then it is a reinstall risk recorded here, not a dotfiles gap.
|
|
- **Hygiene finding, fixed 2026-10-20:** the enable-symlink
|
|
`~/.config/systemd/user/default.target.wants/blankpad-desk-autoswitch.service`
|
|
pointed into `~/.omp/wt/de-redesign-20261009/…`, a worktree the heartbeat had
|
|
already reaped — so desk auto-switching was silently off while
|
|
`systemctl --user is-enabled` still answered `enabled`. Relinked to
|
|
`dotfiles/zz-blankpad/.config/systemd/user/blankpad-desk-autoswitch.service`
|
|
and `daemon-reload`ed; left `inactive` on purpose, because starting it mid-
|
|
session applies a desk profile and the box is in use. Law and diagnosis:
|
|
[dotfiles-deploy](/tools/dotfiles-deploy.md).
|
|
|
|
## Prune list (owning program absent from `command -v`)
|
|
|
|
All verified with `command -v <prog>` (git resolves to `/usr/bin/git`; a session
|
|
alias can mask it, so probe in a clean shell).
|
|
|
|
| Config | Program checked |
|
|
|---|---|
|
|
| `sway`, `hypr`, `labwc`, `mango`, `scroll`, `umbriel` | `sway` `hyprland` `labwc` `mango` `scroll` `umbriel` — all ABSENT |
|
|
| `wezterm`, `kitty`, `foot` | `wezterm` `kitty` `foot` — all ABSENT |
|
|
| `rofi`, `helix`, `cava`, `ytm-player`, `starship.toml` | `rofi` `hx` `cava` `ytm-player` `starship` — all ABSENT |
|
|
| `pywalfox`, `qt5ct`, `qt6ct`, `turborepo` | `pywalfox` `qt5ct` `qt6ct` `turbo` — all ABSENT |
|
|
|
|
The first three rows are the expected set (all 14 confirmed absent). **My check
|
|
disagrees with the expected set by extending it**: `pywalfox`, `qt5ct`, `qt6ct`,
|
|
`turborepo` are also installed-nowhere config dirs and belong in the prune list.
|
|
Note the orphan dirs `cava`, `rofi`, `helix`, `wezterm`, `qt5ct`, `qt6ct` contain
|
|
*only* a generated noctalia palette file — pruning them removes no authored
|
|
config. `crush`/`devin`/`goose`/`kimchi` also fail `command -v` but are the
|
|
skills-CLI tier above, not this session's prune targets.
|
|
|
|
## Links
|
|
|
|
- [skills/store-wiring](/skills/store-wiring.md) — owns the skills-CLI tier
|
|
claim (`crush`/`devin`/`goose`/`kimchi`).
|
|
- [KB index](/index.md) — knowledge-base entry point.
|