<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotfiles/nix, branch master</title>
<subtitle>My linux config and rc files</subtitle>
<id>https://git.sommerfeld.dev/dotfiles/atom/nix?h=master</id>
<link rel='self' href='https://git.sommerfeld.dev/dotfiles/atom/nix?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/'/>
<updated>2026-05-29T10:18:16Z</updated>
<entry>
<title>chore(nix): flake.lock update (home-manager, tuicr)</title>
<updated>2026-05-29T10:18:16Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:16Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=365e67bc811a9be00d192d54513eb7a4547d6ea9'/>
<id>urn:sha1:365e67bc811a9be00d192d54513eb7a4547d6ea9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(nix/common): expose run-clang-tidy missing from nixpkgs clang-tools</title>
<updated>2026-05-29T10:18:16Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:16Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=c84bc29a8e9e963c9d8b4adce40653dddcb02f4c'/>
<id>urn:sha1:c84bc29a8e9e963c9d8b4adce40653dddcb02f4c</id>
<content type='text'>
nixpkgs' clang-tools derivation symlinks scripts from clang-unwrapped
only when they're executable; run-clang-tidy loses the +x bit during
the multi-output split and gets skipped. Re-expose it ourselves by
probing clang-unwrapped's main and python outputs (bin/ first, then
the legacy share/clang/ layout) and installing the first hit at
$out/bin/run-clang-tidy.
</content>
</entry>
<entry>
<title>refactor(eer): install external-editor-revived via nix on the host</title>
<updated>2026-05-29T10:18:16Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:16Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=be3c6fda881bc11d5123d6b3a09ce9d250199b32'/>
<id>urn:sha1:be3c6fda881bc11d5123d6b3a09ce9d250199b32</id>
<content type='text'>
The AUR `external-editor-revived` PKGBUILD declares a hard `thunderbird`
dependency, which blocks removing the unused system Thunderbird binary
alongside the org.mozilla.thunderbird flatpak (and pacman's
`AssumeInstalled` is a CLI flag, not a pacman.conf directive, so the
previous workaround was nonfunctional).

Nixpkgs' `external-editor-revived` is just `rustPlatform.buildRustPackage`
plus a relocatable native-messaging manifest — zero mailer dep — so the
host gets it from nix instead.

* nix/host.nix: add `external-editor-revived` to `home.packages`. Kept
  out of `common.nix` so the remote-dev VM (which has no Thunderbird)
  doesn't carry the build closure.
* run_onchange_after_deploy-tb-eer.sh.tmpl: search
  `~/.nix-profile/{bin,lib/mozilla/native-messaging-hosts}` first and
  fall through to the legacy pacman paths. The chezmoi manifest-hash
  probe now checks the nix path too, so the hook re-runs cleanly when
  nix bumps the EER version.
* meta/base.txt: drop the `external-editor-revived` AUR entry and
  rewrite the comment to point at the nix declaration.
* etc/pacman.conf: revert the bogus `AssumeInstalled` directive
  (CLI-only, not pacman.conf).

On-host migration:

    home-manager switch --flake ~/dotfiles/nix#host    # picks up EER
    sudo pacman -Rns external-editor-revived thunderbird mpv
    chezmoi apply -v                                   # re-runs tb-eer hook
</content>
</entry>
<entry>
<title>chore(nix): flake.lock update (tuicr)</title>
<updated>2026-05-29T10:18:15Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:15Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=32a667ae11fe067c7328567c93357cda809286d7'/>
<id>urn:sha1:32a667ae11fe067c7328567c93357cda809286d7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore(nix): flake.lock update (home-manager, nixpkgs, tuicr)</title>
<updated>2026-05-29T10:18:11Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:11Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=368f2aa6a09d7314b169f87e2a1466ed5a301a77'/>
<id>urn:sha1:368f2aa6a09d7314b169f87e2a1466ed5a301a77</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(nix): tuicr switched to packages.${system}.default schema</title>
<updated>2026-05-29T10:18:09Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:09Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=dc3769542376b45d3f2cdf414c13abd1c884f826'/>
<id>urn:sha1:dc3769542376b45d3f2cdf414c13abd1c884f826</id>
<content type='text'>
Upstream tuicr commit 5b19712 migrated from the legacy
`defaultPackage.&lt;system&gt;` flake output to the standard
`packages.&lt;system&gt;.default`, which broke `nix-update` with:

    error: attribute 'defaultPackage' missing
</content>
</entry>
<entry>
<title>feat(tuicr): configure gruvbox-dark theme</title>
<updated>2026-05-22T09:41:24Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:24Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=b8dce5c1561f27dbd56f5fc34eff0b42fa973bb7'/>
<id>urn:sha1:b8dce5c1561f27dbd56f5fc34eff0b42fa973bb7</id>
<content type='text'>
Add dot_config/tuicr/config.toml with theme = "gruvbox-dark".
Symlinked from nix/vm.nix per the symlink invariant so the same
config applies on both host (via chezmoi) and VM (via home-manager).
</content>
</entry>
<entry>
<title>fix(nix,zsh): tuicr flake schema + restore XDG_DATA_DIRS</title>
<updated>2026-05-22T09:41:23Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:23Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=a97634f5062088f8d4e6d3c06fdf82a87c157167'/>
<id>urn:sha1:a97634f5062088f8d4e6d3c06fdf82a87c157167</id>
<content type='text'>
tuicr's upstream flake uses the legacy 'defaultPackage.&lt;system&gt;' output
schema, not 'packages.&lt;system&gt;.default' — fixes the home-manager switch
error 'attribute packages missing' at nix/flake.nix:28.

zsh: removing the system zsh package took /etc/zsh/zprofile with it,
which used to 'source /etc/profile' and pull in /etc/profile.d/*.sh
(flatpak.sh, nix.sh, etc.). Reconstruct XDG_DATA_DIRS in dot_zprofile
defensively, including per-user + system flatpak exports + nix-profile
share, so 'flatpak update' stops warning and desktop entries from
flatpak/nix-installed apps work in launchers (fuzzel).
</content>
</entry>
<entry>
<title>feat(nix): audit + expand vm xdg.configFile symlink coverage</title>
<updated>2026-05-22T09:41:23Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:23Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=5070187ab99b09ca22514f228f079d032745bde8'/>
<id>urn:sha1:5070187ab99b09ca22514f228f079d032745bde8</id>
<content type='text'>
The VM doesn't run chezmoi, so every config the host gets via chezmoi
must reach the VM via a nix symlink. Audit found gaps for tools whose
binary IS in common.nix but whose dot_config tree was unlinked:

  bat, lsd, yazi, ripgrep, fd, wget, npm, ipython,
  gdb, clangd, ccache

Plus the new tuicr claude-code skill (under ~/.claude/skills/tuicr/,
NOT ~/.config — uses home.file instead of xdg.configFile).

Reorganises the block by category and adds an INVARIANT comment
pointing at the rule in .github/copilot-instructions.md.

GUI/wayland-only tools (sway/mako/waybar/fuzzel/mpv/zathura/etc) stay
unlinked: the VM is headless.
</content>
</entry>
<entry>
<title>feat(nix): add tuicr from upstream flake to common profile</title>
<updated>2026-05-22T09:41:23Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:23Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=668b9846a6eccb16a619f57d305f1bd6bdaeb7bc'/>
<id>urn:sha1:668b9846a6eccb16a619f57d305f1bd6bdaeb7bc</id>
<content type='text'>
tuicr (TUI git-change reviewer) isn't packaged in nixpkgs, so pull it
as a flake input with an overlay exposing pkgs.tuicr. The companion
claude-code skill lives in dot_claude/skills/tuicr/ (separate commit).
</content>
</entry>
</feed>
