<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotfiles/nix/common.nix, branch master</title>
<subtitle>My linux config and rc files</subtitle>
<id>https://git.sommerfeld.dev/dotfiles/atom/nix/common.nix?h=master</id>
<link rel='self' href='https://git.sommerfeld.dev/dotfiles/atom/nix/common.nix?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/'/>
<updated>2026-05-29T10:18:16Z</updated>
<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>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>
<entry>
<title>feat(nix): add ipython to common profile</title>
<updated>2026-05-22T09:41:22Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:22Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=7968c511c3c49c98c5b2217240058e9f64c79a68'/>
<id>urn:sha1:7968c511c3c49c98c5b2217240058e9f64c79a68</id>
<content type='text'>
Interactive python REPL. Uses python3Packages.ipython so only the
`ipython` binary lands on PATH — no stray system `python`/`python3`,
preserving the 'tools managed by uv per-project' policy in common.nix.
</content>
</entry>
<entry>
<title>feat(nix): silence home-manager news notifications</title>
<updated>2026-05-22T09:41:21Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:21Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=07989419e371213fc94021198631dac34523f8e0'/>
<id>urn:sha1:07989419e371213fc94021198631dac34523f8e0</id>
<content type='text'>
Stops the 'X news items unread' banner on every home-manager switch.
</content>
</entry>
<entry>
<title>nix: re-add github-copilot-cli (now prebuilt-binary derivation)</title>
<updated>2026-05-20T12:56:11Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-20T12:56:11Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=a30807262e2a6b79090d9f03cd4d7192eabf08e3'/>
<id>urn:sha1:a30807262e2a6b79090d9f03cd4d7192eabf08e3</id>
<content type='text'>
Upstream rewrote the derivation in 1.0.43+ to fetch a prebuilt binary
from the copilot-cli releases (autoPatchelf + makeBinaryWrapper) instead
of buildNpmPackage, sidestepping the /var/empty/.cache EACCES that
blocked 1.0.40.
</content>
</entry>
<entry>
<title>nix: add codex; meta: virt-viewer to work.txt</title>
<updated>2026-05-20T12:56:11Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-20T12:56:11Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=fe26523a4c0145036ed2bcd07d13594b2c39985b'/>
<id>urn:sha1:fe26523a4c0145036ed2bcd07d13594b2c39985b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor(nix): deployment in vm.nix only; host uses chezmoi for dotfiles</title>
<updated>2026-05-20T12:56:11Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-20T12:56:11Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=639f3cb82ef9f1e6dd0b47cf506ff3c09fd4a5a7'/>
<id>urn:sha1:639f3cb82ef9f1e6dd0b47cf506ff3c09fd4a5a7</id>
<content type='text'>
Per user decision: on the Arch host, chezmoi remains the single deployer
of $HOME dotfiles. nix/common.nix's xdg.configFile + sshConfig
activation + .zshenv home.file block was causing home-manager to fight
chezmoi on every nix-switch, materializing .backup files for nvim,
zellij, zsh, git, ghostty, direnv.

Resolution:

- nix/common.nix: drop the entire deployment block, drop the
  my.dotfilesPath option, drop the let..in dotfiles/link helpers.
  Module is now deployment-agnostic: only installs packages.

- nix/host.nix: drop my.dotfilesPath; explicit comment that chezmoi
  owns dotfile deployment on the host.

- nix/vm.nix: gains everything previously in common.nix's deployment
  block — xdg.configFile (nvim/zellij/zsh/git/ghostty/direnv),
  home.activation.sshConfig, home.file.".zshenv". The 'dotfiles'
  let-binding (= $HOME/.local/share/dotfiles) and 'link' helper move
  here too, since they're vm-only now.

Host runbook unchanged (`just sync`); first run after pulling will
just be a no-op nix-switch instead of a backup-file storm.
</content>
</entry>
<entry>
<title>fix(nix): parameterize dotfiles path per profile; rename dockerfile LSP</title>
<updated>2026-05-20T12:56:10Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-20T12:56:10Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=58f2d61be4c55c7cf7bdbb12f3fed6794e7481b5'/>
<id>urn:sha1:58f2d61be4c55c7cf7bdbb12f3fed6794e7481b5</id>
<content type='text'>
- common.nix hardcoded the runtime dotfiles checkout to
  ~/.local/share/dotfiles, which is correct for the remote-dev VM but
  not the Arch host (where the canonical clone lives at ~/dotfiles).
  ssh activation was failing with 'cannot stat
  /home/sommerfeld/.local/share/dotfiles/private_dot_ssh/config' on
  every host nix-switch.

  Promote the path to a typed option (config.my.dotfilesPath) and set
  it from each profile:
    nix/host.nix -&gt; $HOME/dotfiles
    nix/vm.nix   -&gt; $HOME/.local/share/dotfiles
  common.nix now wraps its config in 'config = { ... }' so the
  options can sit alongside.

- dockerfile-language-server-nodejs was renamed in nixpkgs to
  dockerfile-language-server; pick up the new name to silence the
  evaluation warning (the rename will eventually become a hard error).
</content>
</entry>
<entry>
<title>fix(nix,nvim): drop nodePackages.* (removed from nixpkgs), drop github-copilot-cli (broken)</title>
<updated>2026-05-20T12:56:10Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-20T12:56:10Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=3bc07df183cba19a9824ccf074041347a8bd1490'/>
<id>urn:sha1:3bc07df183cba19a9824ccf074041347a8bd1490</id>
<content type='text'>
nodePackages was removed wholesale from nixpkgs; everything that lived
under it must be referenced via its top-level name or dropped.

- prettier: moved nodePackages.prettier -&gt; prettier (top-level alias).
- jsonlint: not available at top level. Dropped from nix/common.nix
  AND from the nvim-lint and conform-nvim configs in
  dot_config/nvim/lua/plugins/lsp.lua. jsonls already provides
  schema-aware diagnostics; jq still handles formatting. The
  jsonlint redundancy is acceptable to lose.
- github-copilot-cli (1.0.40 in nixpkgs): buildNpmPackage derivation
  doesn't redirect HOME during npm postinstall, so it fails with
  EACCES on /var/empty/.cache on Determinate nix. Removed; install
  manually from https://github.com/github/copilot-cli into
  /usr/local/bin/ as before (current host already has it there).
</content>
</entry>
<entry>
<title>fix(nix,nvim): drop gh-actions-language-server (not in nixpkgs); export USER in nix-switch</title>
<updated>2026-05-20T12:56:10Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-20T12:56:10Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=40d8fd056bef4526acbe38a9b6ff98fc0c3fd8c9'/>
<id>urn:sha1:40d8fd056bef4526acbe38a9b6ff98fc0c3fd8c9</id>
<content type='text'>
- gh-actions-language-server is an npm package (lttb/gh-actions-language-server)
  not packaged in nixpkgs. Removed from nix/common.nix and from the
  vim.lsp.enable list in dot_config/nvim/lua/plugins/lsp.lua. Restore
  later via a per-project flake.nix if working on a workflows-heavy repo.

- just runs recipes with a sanitized env where $USER may be unset;
  home-manager's activation script dereferences it unconditionally
  and fails with 'USER: unbound variable'. Export USER (and HOME for
  symmetry) at the top of the nix-switch recipe.
</content>
</entry>
</feed>
