dotfiles
LogHistory2026

History: october 2026

Edit on GitHub

15 entries. Index in README.md.

  • Vicinae replaced rofi and cliphist: one launcher for apps, files, the calculator, the clipboard history, my commands and four extensions (13/10/2026). How and why: notes/desktop/vicinae.md. • SETTINGS STAY WRITABLE. Home Manager's settings would make settings.json a read-only store link, so the declared keys ride VICINAE_OVERRIDES on the unit and win over it. • ENCRYPTED HISTORY, NO INPUT SERVER. encrypt_sensitive_data is off by default on Linux and is on here; the uinput helper that pastes and expands snippets is a keyboard-reading capability binary, so selecting copies instead. • NOTHING REIMPLEMENTED. clipboard-push, the cheatsheet's parser and the vpn CLI stay; the Zen guard's prompt moved to zenity --password with every fail-closed exit intact. • TWO EXTENSIONS NEEDED A LOCK PATCH: dbus-next's optional usocket pins a node-gyp that dies on Node 24, which is why upstream's own flake skips them. • MEASURED ON 13/10/2026, this machine, right after the switch: open 11-21 ms in 8 of 10 toggles (two outliers near 1 s), idle CPU 0.11 % of a core over 60 s, PSS about 410 MiB across the four processes, first index of ~/Projects in 66 s. • THE OLD HISTORY CAME ALONG (14/10/2026): 468 of cliphist's 500 entries replayed into Vicinae, 32 secret-looking texts left out, then ~/.cache/cliphist (272 MB) and rofi's caches deleted once I had checked the port.

  • The home path has one source, closing an item open since 16/08/2026 (13/10/2026). NixOS modules read config.users.users.v1cferr.home, home-manager ones config.home.homeDirectory, which the NixOS integration derives from it, so modules/home/default.nix stopped setting it. • NOT A NEW OPTION. The item asked for my.user.home, but the source already existed and three modules read it; a second one would have been rule 11 broken in the name of rule 11. • QML TAKES $HOME. Quickshell's files are linked, not generated, so they read Quickshell.env("HOME") instead of a Nix value. • ONE LITERAL STAYS, ON PURPOSE: codex's config.toml is a mutable symlink that codex itself writes its trusted project paths into, so it is state and not a value of ours. • PROVED A NO-OP: both systems built, and the generated files differ only in store paths.

  • The homelab tail is closed: none of the services Arch had and NixOS does not comes back (13/10/2026). That was the last open area of the Arch parity audit, so the migration is DONE. Each service and what covers it now: arch-parity-audit.md. • ONE BY ONE, NOT AS A BLOCK. Twelve services were weighed with an ID each (the *arr stack, open-webui, Homepage, FileBrowser, RustDesk, spendflow, ap), and every answer was no. • THE PORTS WENT BACK TO THE POOL. The caddy port map "reserved" six numbers for them; a reservation for a service that is not coming is a lie in the map, so it was removed.

  • LibreWolf is on the palette, which closes the last theming item (13/10/2026). How and why: notes/apps/librewolf.md. • NOT A THEME ADD-ON, ON PURPOSE. An unsigned one needs signature checks off for every add-on, a bad trade in a privacy browser, so the frame is a userChrome instead. • THE THEME API'S NAMES ARE DEAD IN 157. A sheet with every --lwt-* changed nothing; each part's real variable was read with InspectorUtils in a throwaway profile, never the real one.

  • Qt is on the palette, closing the item the Stylix entry below left open (13/10/2026). The layers and the measurements are in notes/desktop/theme.md. • THE DECLARED KVANTUM HAD NEVER RUN. platformTheme.name = "kvantum" names a plugin that does not exist, and the Lua pinned gtk3 over it anyway, so Dolphin wore Breeze Dark gray. • THREE LAYERS, EACH MEASURED MISSING: qt6ct hands Kvantum's palette to the app, and a KDE color scheme generated from the palette paints Dolphin's views, which ignore the style. • A FALSE TRAIL FIRST. Every variant measured the same colors because dolphin --daemon took each new window over D-Bus, with the environment it had started with.

  • Stylix applies the palette to every app it knows, and the theme switches to any base16 scheme (13/10/2026). Recorded as decision 0012; the details are in notes/desktop/theme.md. • THE STOCK SCHEME WAS THE TRAP. tokyo-night-dark.yaml has the text as #a9b1d6, its "red" is the text color and its "blue" a cyan. Fed from it, Stylix would have recolored the desktop wrong, which is 0001's argument measured. So Stylix is fed FROM the palette. • GTK WAS THE REAL GAIN. About nine GTK apps were stock Adwaita gray. One more trap there: GTK reads the theme from dconf, and a key removed from Nix stays in dconf. • KITTY WAS NOT MOVED, ON MEASUREMENT. base16 has no bright ANSI slots: Stylix painted color8 #292e42, which nearly hides zsh's autosuggestions. kitty, bat, btop and Spotify keep their official themes, now fed from the palette where they were pinned by name. • THE SWITCH WAS PROVED, not assumed: a build with base16:dracula moved Quickshell, Hyprland, GTK, kitty, bat, Kvantum, Zen and fzf together, then went back. • ONE FINDING LEFT OPEN: Qt runs on gtk3, not on the Kvantum palette the docs describe. Flipping it drew Dolphin wrong, so it is an open item instead of a blind fix.

  • The arch branch was deleted, and main is the only branch left (13/10/2026). Every Arch area was ported, replaced or dropped with its reason written in arch-parity-audit.md; the homelab is the one left open, as its own item. The archive/arch-final tag is the same commit (ecbaa32), so nothing was lost: git show archive/arch-final:<path> reads any old file, and GitHub browses the tag. • KEPT FOR ONE DAY ON PURPOSE. The rename did not delete it because the tail was still open; with the old tree one branch away, every "what did Arch have here?" was a lookup. • THE RULESET WENT FIRST. history blocked the deletion, so arch left its include and the file was re-applied before the push. It guards main alone now; the tags are what a careless delete would cost, and no branch rule covers them.

  • nixos became main, and the Arch tree became arch (12/10/2026). The working branch finally has the conventional name, and nothing from either history was lost. • RENAME, NOT A DEFAULT SWAP. GitHub's branch rename keeps the default pointing at the same commits, so the contributions graph never saw a different history. Pointing the default at the OLD main for even a moment would have zeroed it, which is the august incident and the reason the swap was never the tool here. • THE OLD main WAS FOLDED INTO arch FIRST. arch was main minus 2 commits (the netextender NAT gateway and one VS Code setting), so a fast-forward made it complete, and archive/arch-final was tagged on the same tip (ecbaa32). The tag was not optional: archive/pre-nix-2026-07-16 forks off at 2ccecf9 and misses the last 4 Arch commits, the opposite of what arch-parity-audit.md used to claim. • THREE THINGS NAMED THE BRANCH OUTSIDE GIT, and each would have failed quietly. The history ruleset blocks the deletion the rename needed, so it was disabled for the window and re-applied from its file. The github-pages environment only deployed from nixos, so the site would have stopped publishing. And Actions do not follow a rename, so the three branches: [nixos] triggers were rewritten in the first commit pushed to main, which is also the one that proved them. • THE 16-AREA TAIL DID NOT BLOCK IT. The audit had it as a precondition; with the Arch tree one branch away it is a lookup and not a loss, so it stays a separate task.

  • Fastfetch grew the public IP, plus the NixOS generation, the system age, the GPU driver and the Vulkan version (15/10/2026), in modules/home/shell/fastfetch.nix. • THE PUBLIC IP HAS A 1 S TIMEOUT. It is the only network call in the fetch, and without the cap an offline machine waits on it; the whole fetch measured 0.34 s with it online. • THE GENERATION DATE IS THE LINK'S OWN MTIME. stat without -L: following the profile link lands on the store, where every mtime is epoch 1.

  • The shell became Tokyo Night Adaptive Glass: three floating glass clusters on the bar, a 35% bento band on the standing LG, one design system for both (17/10/2026). How and why: theme.md, bar.md and dash.md. • ONE PANEL AT A TIME. Four hover machines became one coordinator: hover opens after 200 ms, a click pins, a click outside or Escape closes, tested with a virtual pointer and keyboard. • THE OFFICIAL LOGO. The power button draws nixos-artwork's snowflake from nixos-icons. • PIXEL-ALIGNED, CHECKED. The band's 18 card edges were found on their computed pixels in a screenshot, and the LG reserves exactly 672 px (my.dash.share = 0.35, never above 0.40). • THE BAR NOW OWNS THE BAND'S STRIP, because two zones stack in map order and a re-created band once pushed the bar under itself. • THE IDLE COST WAS AN INVISIBLE ANIMATION. The INMET alert pulse ran with no alert, gated on the wrong parent; with it and a looping rain fixed, Quickshell idles at 5.8 to 7.2% of a core, from 18.7 to 20.2%, measured live and A/B in a headless sway.

  • Adaptive Glass v2, the same day: one continuous Powerline with the official NixOS logo on each screen's exact center, the NixOS Center behind it, and HyprGlass packaged (17/10/2026). How and why: bar.md, nixos-center.md and hyprglass.md. • ONE PANEL FOR NOTIFICATIONS AND THE SESSION. The bell, the band's bell and the power menu became the Center: history, DND that survives a restart, and the six actions, three of them asking twice. Toasts cap at three and never cover the Center. • THE LG'S BAR IS STATUS FIRST. No clock (the band has it), and CI 2 / SVC 1 / CI ? from the feeds already read, counting only failures a later run has not fixed; a click turns the band to the detail. • HYPRGLASS IS BUILT FOR THE SESSION'S OWN HYPRLAND and verified in a nested compositor on a temporary headless output, never in the live one; it stays off until switched on. • ON THE WAY: hyprctl was the stable 0.55 against a 0.56 compositor, qs-restart could start a second shell, and the toast and notification lists rebuilt every card on each change.

  • Overwatch back on the NVMe (18/10/2026): it stuttered mid-match from the DRAM-less SATA disk, so competitive games now stay off my.games.linked. How and why: games-disk.md. • ITS OWN SUBVOLUME, so the 83 GiB and every patch stay out of the btrbk snapshots. • NO CACHE IN FRONT OF THE SANDISK. bcache and friends would reformat a disk Windows shares.

  • Spotifast replaced Spotify and spicetify (24/10/2026): a native client (Rust/egui + librespot) instead of a whole CEF. How and why: spotifast.md. • THE RELEASE BINARY, LIKE ZAPFAST. Same author and framework, same libraries, so the same pkgs/ layout and bump; the upstream flake would compile Rust on every bump. • THE COLORS STAYED, THE LOOK DID NOT. The theme is generated from my.theme.palette with the old green accent, but Spotifast themes only colors, so spicetify's mono "text" look is gone. • THREE OVERLAYS LEFT WITH IT: --no-zygote, the Wayland flag and the stale SingletonLock existed only to make CEF open.

  • ~/Downloads became an inbox (28/10/2026): loose files that sat for an hour are sorted into one folder per type every 30 min, inside ~/Downloads itself. How and why: downloads-tidy.md. • THE HAND-MADE FOLDERS ARE NEVER TOUCHED. Only files loose at the root move. • ONLY THE RE-DOWNLOADABLE IS TRASHED: installers and disk images, 30 days after sorting, to the trash and never rm, so 60 days to recover counting trash-expire. • NO PACKAGED TOOL. organize is not in nixpkgs, so the rules are Nix generating a shell case.

  • The home's persistence list exists before impermanence does (28/10/2026): user folders whole, hidden state by app, and persist-diff to show what a boot would wipe. Nothing is switched on. How and why: impermanence.md. • NO FILE-BY-FILE TRIAGE. A 359-entry inventory was built and dropped the same day: the folders are mine to keep tidy, the list only names app state. • THE DIFF EARNED ITS KEEP ON ITS FIRST RUN: hand-written acuttis-point* user units that no module declares would have vanished at the first wiped boot.

No Headings