History: october 2026
Edit on GitHub15 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
settingswould makesettings.jsona read-only store link, so the declared keys rideVICINAE_OVERRIDESon the unit and win over it. • ENCRYPTED HISTORY, NO INPUT SERVER.encrypt_sensitive_datais 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 thevpnCLI stay; the Zen guard's prompt moved tozenity --passwordwith every fail-closed exit intact. • TWO EXTENSIONS NEEDED A LOCK PATCH: dbus-next's optionalusocketpins 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~/Projectsin 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 onesconfig.home.homeDirectory, which the NixOS integration derives from it, somodules/home/default.nixstopped setting it. • NOT A NEW OPTION. The item asked formy.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 readQuickshell.env("HOME")instead of a Nix value. • ONE LITERAL STAYS, ON PURPOSE: codex'sconfig.tomlis 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 pinnedgtk3over 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 becausedolphin --daemontook 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.yamlhas 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 withbase16:draculamoved Quickshell, Hyprland, GTK, kitty, bat, Kvantum, Zen and fzf together, then went back. • ONE FINDING LEFT OPEN: Qt runs ongtk3, 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
archbranch was deleted, andmainis 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. Thearchive/arch-finaltag 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.historyblocked the deletion, soarchleft itsincludeand the file was re-applied before the push. It guardsmainalone now; the tags are what a careless delete would cost, and no branch rule covers them. -
nixosbecamemain, and the Arch tree becamearch(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 OLDmainfor even a moment would have zeroed it, which is the august incident and the reason the swap was never the tool here. • THE OLDmainWAS FOLDED INTOarchFIRST.archwasmainminus 2 commits (the netextender NAT gateway and one VS Code setting), so a fast-forward made it complete, andarchive/arch-finalwas tagged on the same tip (ecbaa32). The tag was not optional:archive/pre-nix-2026-07-16forks off at2ccecf9and 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. Thehistoryruleset blocks the deletion the rename needed, so it was disabled for the window and re-applied from its file. Thegithub-pagesenvironment only deployed fromnixos, so the site would have stopped publishing. And Actions do not follow a rename, so the threebranches: [nixos]triggers were rewritten in the first commit pushed tomain, 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.statwithout-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 wrongparent; 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 frommy.theme.palettewith 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. -
~/Downloadsbecame an inbox (28/10/2026): loose files that sat for an hour are sorted into one folder per type every 30 min, inside~/Downloadsitself. 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 neverrm, so 60 days to recover countingtrash-expire. • NO PACKAGED TOOL. organize is not in nixpkgs, so the rules are Nix generating a shellcase. -
The home's persistence list exists before impermanence does (28/10/2026): user folders whole, hidden state by app, and
persist-diffto 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-writtenacuttis-point*user units that no module declares would have vanished at the first wiped boot.