2195 Commits

Author SHA1 Message Date
Robert Helgesson
5de7dbd151 restic: escape environment variables
This allows better handling of, e.g., file names with spaces.
2026-04-06 08:39:40 +02:00
Roverp
1089b2caba opencode: add programs.opencode.tui option
OpenCode v1.2.15 introduced a separate tui.json file for TUI-specific
settings, deprecating theme/keybinds in config.json.
Changes:
- Add programs.opencode.tui option for TUI settings
- Generate separate ~/.config/opencode/tui.json with proper schema
- Add deprecation warnings for theme/keybinds in settings
- Add tests for new functionality
- Fix existing tests that used deprecated theme in settings

See: https://opencode.ai/docs/config#tui
Release: https://github.com/anomalyco/opencode/releases/tag/v1.2.15

Co-authored-by: Thierry Delafontaine <delafthi@pm.me>
2026-04-04 22:48:59 -05:00
Benedikt Rips
8ec54491cd sshAuthSock: fix naming scheme 2026-04-04 22:28:41 -05:00
nescias
e78a997d2e restic: allow setting password command
Includes asserting that either password file or password command
should be set.
2026-04-04 22:27:18 -05:00
Yiheng He
5ee3b3ef63 awww: remove blank space after awww-daemon when extraArgs is empty
awww: split graphical-session-target test into awww-default and awww-extraArgs
2026-04-04 11:33:34 -05:00
Yiheng He
5b6f55b784 awww: run daemon dependent on program mainProgram name 2026-04-04 11:33:34 -05:00
Benedikt Rips
9dc93220c1 ssh_auth_sock: assert that at most one agent is enabled 2026-04-03 21:15:34 -05:00
Benedikt Rips
a61b22e323 ssh_auth_sock: init module
`$SSH_AUTH_SOCK` must not be set unconditionally through
'home.sessionVariables' since its value needs to be preserved if it
stems from a forwarded SSH agent. Hence, this commit establishes a
centralized, internal 'ssh_auth_sock.initialization' option for setting
`$SSH_AUTH_SOCK`. It checks whether its value has to be preserved and
injects the initialization code into the proper
'programs.(bash|fish|nushell|zsh).*' options.
2026-04-03 21:15:34 -05:00
Yiheng He
03bdcf84f0 awww: rename swww to awww
Upstream project name has changed
2026-04-03 15:21:14 -05:00
oneorseveralcats
eb6f347055 aria2: add systemd service 2026-04-02 16:20:22 +02:00
Austin Horstman
41e6e2ab37 codex: add support for managed rules files 2026-04-01 23:29:17 -05:00
squat
6267895e98 opencode: add environmentFile option to set OPENCODE_SERVER_PASSWORD
This commit introduces a new option for the Opencode web service to
allow configuring an environment file so that we can safely specify an
`OPENCODE_SERVER_PASSWORD` environment variable to secure access to the
service without exposing the secret to the Nix store.
2026-04-01 16:47:32 -05:00
Matthieu Coudron
f21d8ebbc9 neovim: test pure lua dependencies (#8991)
a revert of https://github.com/nix-community/home-manager/pull/8959 since we now relies on nixpkgs wrapper for that.

adding a test to avoid regressions. Choosing  telescope as starting point is https://github.com/nix-community/home-manager/issues/8787

I find the nmt test setup lacking: it doesnt set $PATH or $HOME (nvim
will error when it can't write into $HOME).
2026-04-01 22:27:03 +02:00
Benedikt Ritter
b399348e9d tmuxinator: move to dedicated module with projects support
Extract tmuxinator from tmux.nix into its own programs/tmuxinator.nix
module. The new module adds:

- programs.tmux.tmuxinator.package for customising the tmuxinator package
- programs.tmux.tmuxinator.projects for declaring projects declaratively;
  each project is written to $HOME/.config/tmuxinator/<name>.yaml

Co-authored-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-31 14:05:50 -05:00
Caleb Norton
a7d2aca3f0 opencode: use serve command for web interface 2026-03-31 10:05:09 -05:00
Ihar Hrachyshka
5ed75a0312 services/ssh-agent: treat SIGTERM exit as clean
OpenSSH ssh-agent exits with status 2 when systemd stops it in
non-socket-activated mode.

Home Manager runs ssh-agent that way, so normal user-manager
shutdowns show up as unit failures.

Set SuccessExitStatus=2 for the Linux user service to match
upstream behavior. Startup failures and other unexpected exits
still fail the unit.
2026-03-30 12:14:23 +01:00
teto
6569d9e171 neovim: attempt at reusing nixpkgs upstream config 2026-03-28 18:41:26 +01:00
oneorseveralcats
2e3550192e aria2: remove extraConfig 2026-03-27 16:42:50 -05:00
oneorseveralcats
13587c3ace aria2p: add module 2026-03-27 16:42:50 -05:00
Miles Wirht
9df3a63900 macchina: add module (#8855) 2026-03-27 10:42:17 -05:00
oneorseveralcats
accd450fcd waybar: allow multiple systemd targets 2026-03-27 09:41:16 -05:00
Pat L.
7126ec6a55 claude-code: Add support for installing plugins (#8934)
Allow for configuring marketplaces or individual plugins.

Both are provided as a list of either paths or packages.

The lone plugins are enabled by adding a --plugin-dir argument to the wrapper script.

Marketplaces are saved to the nix store and enabled by adding to the claude settings and known_marketplaces files.

With the marketplace "installed", the plugin can just be enabled via the enabledPlugins setting.
2026-03-26 22:59:48 -05:00
Diego Saint Esteben
0143d6ca9b grype: add module
Grype is a vulnerability scanner for container images and filesystems.
2026-03-26 22:51:09 -05:00
Miles Wirht
7c046c63ac Ttyper: add module (#8864) 2026-03-26 16:47:14 -05:00
Ryan Horiguchi
051da45e96 vscode: add null package support 2026-03-26 16:41:41 -05:00
Matthias Ahouansou
3aeefa9db2 mpdris2-rs: add module 2026-03-26 16:34:36 -05:00
oneorseveralcats
40955dc50a atool: add module
atool is a commandline archive manager that uses packages like gnutar,
p7zip, unrar, and zip as backends for viewing, creating, and extracting
their corresponding archive formats.
2026-03-26 16:24:39 -05:00
Austin Horstman
1eb0549a1a password-store: silence settings default warning
Use the deferred state-version helper mode for programs.password-store.settings
so explicit empty and explicit legacy values silence the warning correctly,
while partial legacy-era settings still inherit PASSWORD_STORE_DIR until the
user resolves the migration.

Add integration coverage for password-store and pass-secret-service to verify
legacy, explicit empty, explicit legacy, and partial-settings behavior.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-24 14:08:36 -05:00
Austin Horstman
66aa75f6e8 lib/deprecations: support deferred state-version warnings
Extend mkStateVersionOptionDefault so merged attrset callers can defer
warning emission to config.warnings while still exposing the effective
state-version default and option priority metadata.

Add dedicated lib tests for deferred warning behavior on both legacy and
current state versions.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-24 14:08:36 -05:00
Austin Horstman
b8cb89f2c4 codex: support store-path skill sources
Handle per-skill values that come through as store-path strings, such as fetcher outputs with subdirectories appended. This restores the previously working pattern for packaged skill directories and adds a regression test for both directory and file sources.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-24 12:03:06 -05:00
Austin Horstman
a8931b2575 kvantum: add enable option
Missed previously, prefer gating enablement on real opt in.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-24 11:02:52 -05:00
mikaeladev
61463d50fc qt: add kvantum options 2026-03-24 08:04:04 -05:00
oneorseveralcats
bc357c75e3 w3m: add module
adds a pretty complete module for w3m, a terminal web browser and pager.
2026-03-23 14:10:42 -05:00
Austin Horstman
b02a36dc79 Revert "swaylock: warn on implicit enable default"
This reverts commit 45e3b622b1.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-23 09:02:01 -05:00
Austin Horstman
c6fe2944ad codex: symlink directories for all skills
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 15:08:53 -05:00
oneorseveralcats
932ca46013 nom: add module
adds a module for nom, a terminal-based rss feed reader.
2026-03-22 12:39:22 -05:00
Utkarsh Gupta
38539206d0 cargo: add cargoHome option 2026-03-22 11:53:53 -05:00
Austin Horstman
b92cad188c git: warn on signing format default change
The default value for programs.git.signing.format changed in 25.05
from an implicit "openpgp" to null. Keep the existing gated
mkOptionDefault behavior so the signing block only materializes when
other signing settings are in use, but route the versioned value and
static docs text through the shared state-version helper.

Add a focused current-state-version test that covers a non-empty
signing configuration with no explicit format, alongside the existing
legacy implicit-openpgp and explicit-format tests.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 11:46:51 -05:00
Austin Horstman
45e3b622b1 swaylock: warn on implicit enable default
Before 23.05, programs.swaylock.enable implicitly followed whether
programs.swaylock.settings was non-empty. That compatibility path was
still active for older state versions, but it emitted no warning.

Route the default through the shared state-version helper so legacy
users get the standard deprecation warning before the implicit enable
behavior is removed. Add a focused current-state-version test and keep
the existing legacy and explicit-enable coverage in place.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 11:46:51 -05:00
Austin Horstman
111b158a98 beets: warn on implicit enable default
Before 19.03, programs.beets.enable implicitly followed whether
programs.beets.settings was non-empty. That compatibility branch was
still active for older state versions, but it was silent.

Route the default through the shared state-version helper so legacy
users get a consistent deprecation warning before the implicit
enablement is cleaned up. Add focused tests for the legacy and current
default branches alongside the existing beets coverage.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 11:46:51 -05:00
Austin Horstman
d3281688bf gtk: warn on gtk4 theme inheritance change
The gtk4 theme option still inherits from gtk.theme for users pinned
before 26.05, but that fallback was previously silent. Move the
default through the shared state-version helper so the compatibility
branch emits the standard deprecation warning and stays consistent
with other future cleanups.

Add a focused test that covers the legacy inheritance path alongside
the existing current-state-version test for the null default.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 11:46:51 -05:00
Austin Horstman
acf65ad748 xdg-user-dirs: warn on setSessionVariables default change
Switch xdg.userDirs.setSessionVariables to the shared state-version default helper so older configurations get an explicit warning before the legacy default is removed.

Add focused tests for the legacy and current branches to verify that the session variable exports remain enabled before 26.05 and are disabled by default starting at 26.05.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 11:46:51 -05:00
Austin Horstman
95496df8c0 lib/deprecations: add state version default helper
Add a helper for options whose defaults change across home.stateVersion boundaries. This centralizes the warning text and documentation shape so modules do not need to hand-roll the same migration pattern at each call site.

The helper takes legacy and current branches with a runtime value plus optional static documentation text. That keeps the actual default version-gated while avoiding option docs that depend on evaluated config. Add a focused test covering the legacy warning path, the new-value path, and an explicit legacy pin that should not warn.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 11:46:51 -05:00
teto
9670de2921 neovim: reuse more of upstream logic 2026-03-20 12:59:40 +01:00
Austin Horstman
9d3c1d636e tests/darwinScrublist: add keepassxc
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-19 18:24:53 -05:00
teto
1c10e6596f neovim: now include nixpkgs wrapper generated lua
now that home-manager always generates an init.lua we can take the
wrapper output instead of reimplemnting stuff in HM (notwithstanding rtp
changes that are not needed in HM).
This is necessary to keep the provider configuration available after
this change https://github.com/NixOS/nixpkgs/pull/487390

Also updated test to reflect ruby disabling
2026-03-19 18:24:53 -05:00
Bob van der Linden
9bc3ca1230 opencode: skill -> skills
The skills option was creating files under ~/.config/opencode/skill/
(singular) but OpenCode documentation only mentions
~/.config/opencode/skills/ (plural). Both work, but using an
undocumented directory can be confusing.

Fixes: https://github.com/nix-community/home-manager/issues/8907
2026-03-19 21:32:45 +01:00
James Davidson
f72ed9c97d smug: add project session setting
Add an optional session setting so that session names can be different
than the smug project name. This also enables using template variables
when naming sessions.
2026-03-19 15:36:43 +00:00
Austin Horstman
4fcef56c15 claude-code: load MCP config via plugin dir
Claude Code rejects `--mcp-config` once the Home Manager wrapper injects
it around subcommands, which breaks commands like `claude mcp list`.
Claude Code 2.1.76 fixed `--plugin-dir` so it no longer consumes
following subcommands, so use that path for the generated MCP config
instead.

Generate a plugin directory with a manifest and `.mcp.json`, wrap
`claude` with `--plugin-dir` before user arguments, and snapshot that
wrapper directly in the tests. Keep the existing LSP support in the
generated plugin directory as well, and add coverage for the combined
MCP+LSP case plus the MCP integration merge path.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-18 23:58:36 -05:00
stuebinm
d47357a4c8 go: remove unneeded string escapes 2026-03-18 00:04:07 -05:00