<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotfiles/dot_config/nvim/lua, branch master</title>
<subtitle>My linux config and rc files</subtitle>
<id>https://git.sommerfeld.dev/dotfiles/atom/dot_config/nvim/lua?h=master</id>
<link rel='self' href='https://git.sommerfeld.dev/dotfiles/atom/dot_config/nvim/lua?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/'/>
<updated>2026-07-02T10:35:35Z</updated>
<entry>
<title>Prune stale dotfiles commentary</title>
<updated>2026-07-02T10:35:35Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-07-02T10:35:35Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=f0c626059451e1f8621600e610240739d5633560'/>
<id>urn:sha1:f0c626059451e1f8621600e610240739d5633560</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Migrate VM dotfiles to chezmoi</title>
<updated>2026-06-19T16:57:23Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-19T16:57:23Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=cf5a2f46f0167c8495d28de5b1364c8bc460b6d0'/>
<id>urn:sha1:cf5a2f46f0167c8495d28de5b1364c8bc460b6d0</id>
<content type='text'>
Move VM dotfile deployment out of Home Manager and into chezmoi with a machineRole guard.

Add VM recipes for applying chezmoi state and restarting the Nix GnuPG agent.

Make host-only hooks no-op on the VM and render container storage per role.
</content>
</entry>
<entry>
<title>Update blink.pairs native library setup</title>
<updated>2026-06-19T15:35:57Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-19T15:35:57Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=f484c7be7e72b18b337c57e6427bc4eaed5b3d13'/>
<id>urn:sha1:f484c7be7e72b18b337c57e6427bc4eaed5b3d13</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reduce Arch package surface</title>
<updated>2026-06-18T11:06:20Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-18T11:06:20Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=511793cba498f52b0f92904965ea5c9afa8b6ea4'/>
<id>urn:sha1:511793cba498f52b0f92904965ea5c9afa8b6ea4</id>
<content type='text'>
</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>
<entry>
<title>refactor(nvim,zsh): remove Mason; use Home-Manager-provisioned tooling</title>
<updated>2026-05-20T12:56:09Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-20T12:56:09Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=2d9ed00606be2f8c63aba719d00adf70fe6d4393'/>
<id>urn:sha1:2d9ed00606be2f8c63aba719d00adf70fe6d4393</id>
<content type='text'>
LSPs, formatters, linters, and the lldb-dap debugger now come from
~/.nix-profile/bin (see nix/common.nix). lspconfig keeps the default
configs; we just opt-in via vim.lsp.enable() with an explicit list.

Changes:
  - dot_config/nvim/lua/plugins/lsp.lua: drop mason*, replace
    mason-lspconfig handler with explicit vim.lsp.enable({...}); drop
    groovy/jenkins formatters and lint entries; drop systemd lint
    (nginx + groovy + systemdlint tools dropped per plan).
  - dot_config/nvim/lua/plugins/debug.lua: drop mason-nvim-dap; drop
    codelldb adapter; switch dap.configurations.cpp to type='lldb'
    (lldb-dap is the upstream successor, ships with pkgs.lldb).
  - dot_config/nvim/init.lua: remove mason.nvim, mason-lspconfig.nvim,
    mason-tool-installer.nvim, mason-nvim-dap.nvim from vim.pack.add.
  - dot_config/nvim/lua/config/update.lua: remove MasonToolsUpdateSync.
  - dot_config/zsh/dot_zshrc: flip plugin source order — prefer
    ~/.nix-profile/share, fall back to /usr/share/zsh (was the other
    way around).
  - nix/bootstrap.sh: drop the uv-python3.11 step (no longer needed
    once Mason no longer source-builds Python LSPs on Ubuntu 20.04).

Phase 6 of the nix-on-host migration plan.
</content>
</entry>
<entry>
<title>fix(nvim): wrap vim.pack.update in :PackUpdate user command</title>
<updated>2026-05-20T12:56:08Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-20T12:56:08Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=0bdd2fe6a755c8bf6582ad2258921751cd14653e'/>
<id>urn:sha1:0bdd2fe6a755c8bf6582ad2258921751cd14653e</id>
<content type='text'>
nvim_create_user_command passes the callback a table with command
metadata (args, bang, ...). Newer neovim's vim.pack.update validates
its first arg as a list of names — that metadata table fails the
list check with 'names: expected list, got table'. Wrap it.
</content>
</entry>
<entry>
<title>fix(remote-dev): install basedpyright outside Mason</title>
<updated>2026-05-14T11:29:15Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-14T11:29:15Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=8e5f5efc70680128545d26864263e5628fc74276'/>
<id>urn:sha1:8e5f5efc70680128545d26864263e5628fc74276</id>
<content type='text'>
Mason's pypi distribution of basedpyright pulls nodejs-wheel-binaries
which only ships manylinux_2_28 Linux wheels. uv's python-build-
standalone interpreter is tagged manylinux2014 (glibc 2.17 for max
portability) and rejects those wheels; pip then falls back to building
Node 24 from source, which fails on Ubuntu 20.04's gcc 9.4 (needs
gcc &gt;=10 for -std=gnu++20).

Provide basedpyright via the system package manager instead:
- pacman on Arch (added to meta/base.txt)
- pkgs.basedpyright on the VM (added to remote-dev/home.nix)

Drop it from mason-tool-installer's ensure_installed; lspconfig picks
it up from PATH. Document the exception in remote-dev/README.md.
</content>
</entry>
<entry>
<title>feat(nvim): wire OSC 52 clipboard provider on SSH sessions</title>
<updated>2026-05-14T10:51:01Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-14T10:51:01Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=e20942db608da333482d7485f123342962e1127a'/>
<id>urn:sha1:e20942db608da333482d7485f123342962e1127a</id>
<content type='text'>
Previously `clipboard` was set to empty inside SSH sessions on the
assumption no clipboard tool would be reachable. That broke yank →
host-clipboard on the remote-dev VM.

nvim ≥0.10 ships a built-in OSC 52 provider
(vim.ui.clipboard.osc52). The terminal emulator (ghostty locally,
zellij forwarding inside it) handles the escape sequence and writes
to the host's clipboard, so we get yank-to-host without needing
wl-copy/xclip on the VM. Paste over OSC 52 is rarely supported by
terminals (security), so we wire it but it's effectively a no-op;
bracketed paste from the terminal still delivers clipboard contents
into the buffer.
</content>
</entry>
</feed>
