Commit Graph
6930 Commits
Author SHA1 Message Date
Austin Horstman a786067676 mkFirefoxModule: assert managed package for global extensions
Reject globalExtensions when Home Manager has no browser-managed policy
carrier. This follows up the global extension policy work with a clear
failure mode, a regression test, and a news entry so affected users know
how to fix package = null setups.
2026-06-18 12:53:30 -05:00
9f9b23ae21 mkFirefox: add policy to accept added extensions
This commit adds extensions added via
profiles.<name>.globalExtensions to the policy.
In consequence the extensions are added without complaint and don't need
to be enabled manually.

Co-authored-by: khaneliman <khaneliman@users.noreply.github.com>
2026-06-18 12:38:01 -05:00
glmlmandAustin Horstman 8af17160d1 nixgl: preserve __functionArgs when forwarding .override
Forwarding `.override` calls strips the attached metadata, which leads to unexpected behavior in some modules.

Closes #9494
2026-06-18 12:01:25 -05:00
Austin Horstman d456f483f1 codex: add profile config support
Codex 0.134.0 stopped reading profile settings from [profiles.<name>] in config.toml and no longer supports the top-level profile selector.

Add a dedicated programs.codex.profiles option so Home Manager can write CODEX_HOME/<name>.config.toml files that match the current CLI --profile behavior. For Codex 0.134.0 and later, legacy programs.codex.settings.profiles entries are migrated into profile files with a warning, and removed legacy profile keys are omitted from config.toml so strict config loading keeps working. Older Codex versions keep the legacy config shape.
2026-06-18 08:19:47 -05:00
glmlmandGitHub 6274683ee4 mkFirefoxModule: add warning for dropped options on wrapped packages
Warns only if the package lacks a `cfg` override and relevant options are configured.

References
https://github.com/nix-community/home-manager/pull/9486
2026-06-18 08:17:43 -05:00
Austin Horstman 5ccd408ca7 dunst: use DAG ordered generator helper 2026-06-18 07:59:18 -05:00
Austin Horstman b9a29e51c5 opencode: support ordered settings entries
Use the shared DAG-aware JSON generator for programs.opencode.settings so order-sensitive permission rules can be expressed with lib.hm.dag entries.

Add a focused NMT test for last-match-wins permission output and news for existing opencode users.
2026-06-18 07:59:18 -05:00
Austin Horstman 6716d811e5 lib: add DAG-aware format generators
Add reusable Home Manager generator helpers for rendering freeform attrsets that contain lib.hm.dag entries.

This keeps ordering support available to JSON and future generated formats without forcing each module to carry its own DAG sorting boilerplate.
2026-06-18 07:59:18 -05:00
Austin Horstman 652f754686 difftastic: support difftool-only git integration
Splitting git diff tools into the separate programs.difftastic module
made it impossible to register difftastic as a git difftool without also
forcing it as diff.external, since the boolean git.diffToolMode only
toggled between "external" and "external + difftool".

Replace git.diffToolMode with a git.mode enum ("external", "difftool",
"both") so difftastic can be wired as the difftool only, leaving
`git diff` untouched. The deprecated boolean is migrated automatically
via mkChangedOptionModule (true -> "both", false -> "external"),
preserving existing behavior.

Fixes #8592
2026-06-18 07:45:53 -05:00
Fida Waseque ChoudhuryandAustin Horstman 5bcff43156 antigravity-cli: fix mcp validation error for remote/local servers
Do not serialize null/empty fields (command, args, env) for remote servers.
Also fix 'isRemote' check to check for non-null url fields instead of
using the ? operator, which evaluates to true even if the key is null.
2026-06-17 21:59:28 -05:00
csanthiagoandAustin Horstman c187002980 television: add themes option
Add a `themes` option to the television module, allowing users to define
custom themes that are written to `$XDG_CONFIG_HOME/television/themes/`
as individual TOML files. This follows the same pattern used by the
halloy and helix modules.


💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-06-17 19:16:21 -05:00
csanthiagoandAustin Horstman eb0eb170bb television: add csanthiago as maintainer 2026-06-17 19:16:21 -05:00
csanthiagoandAustin Horstman a20c21b2fe maintainers: add csanthiago
💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-06-17 19:16:21 -05:00
Peter BittnerandAustin Horstman c51ac59e59 uv: manage Python versions and tools
Add programs.uv.python.{versions,default,prune} and
programs.uv.tool.{packages,prune} to install uv-managed Python versions
and tools during activation.

Install requests are passed verbatim to uv. Unpinned entries track the
latest release on each activation while pinned ones stay put: Python
requests without a patch component are installed with `uv python install
--upgrade` (exact patches, which uv refuses to upgrade, get a plain
install), and tools are refreshed with `uv tool upgrade <packages>`
scoped to the configured list. Both upgrades are scoped to the managed
entries, so installs Home Manager does not own are left untouched. prune
makes a set declarative by running `uv ... uninstall --all` before
reinstalling the listed entries.

The activation blocks run after linkGeneration so uv sees the freshly
linked uv.toml, and a null programs.uv.package is rejected once the
module emits activation commands.
2026-06-17 15:47:24 -05:00
Peter BittnerandAustin Horstman a69317872e uv: add bittner as a maintainer 2026-06-17 15:47:24 -05:00
Peter BittnerandAustin Horstman bfc003171b maintainers: add bittner 2026-06-17 15:47:24 -05:00
Austin Horstman ea0bf49c9d thunderbird: merge account prefs with mergeAttrsList
The SMTP, identity, and profile pref sets were combined with linear foldl'
of //. mergeAttrsList performs the equivalent right-biased shallow merge and
scales with the account/address count without quadratic recopies.
2026-06-17 13:04:43 -05:00
Austin Horstman 50978d4bf6 neomutt: merge account rc files with mergeAttrsList
Per-account rc files were combined with a linear foldl' of //. mergeAttrsList
is the equivalent shallow merge without the quadratic accumulator recopy.
2026-06-17 13:04:43 -05:00
Austin Horstman b3f454e5c2 zsh: merge plugin home.file entries with mergeAttrsList
Plugin source links were combined with a linear foldl' of //. mergeAttrsList
performs the equivalent shallow merge and scales with the plugin count.
2026-06-17 13:04:43 -05:00
Austin Horstman cbbddc4a6f go: merge package src links with mergeAttrsList
The GOPATH src symlinks were combined with a linear foldl' of //.
mergeAttrsList is the equivalent shallow merge and scales with the package
count without quadratic recopies.
2026-06-17 13:04:43 -05:00
Austin Horstman b06723c4d4 getmail: merge home.file entries with mergeAttrsList
Per-account config files were combined with a linear foldl' of //.
mergeAttrsList performs the equivalent shallow merge without the quadratic
accumulator recopy.
2026-06-17 13:04:43 -05:00
Austin Horstman 9b262cb738 browserpass: merge home.file entries with mergeAttrsList
The native-messaging host files were combined with a linear foldl' of //,
which recopies the accumulator on every step (O(n^2)). mergeAttrsList does
the same right-biased shallow merge with a balanced binary merge.
2026-06-17 13:04:43 -05:00
Austin Horstman 71b4b46f23 thunderbird: use foldl' for profiles.ini merge
profilesIni folded recursiveUpdate over the profile list with the
non-strict foldl, building a thunk chain over the growing accumulator.
Use the strict foldl'.
2026-06-17 13:04:43 -05:00
Austin Horstman b8818d5a65 neovim: collect plugin configs with filter and map
generatedConfigs built its list with a non-strict foldl that appended via
acc ++ [ p.config ], an O(n^2) pattern. Filtering out null configs and
mapping is equivalent, order-preserving, and avoids the repeated list
copies.
2026-06-17 13:04:43 -05:00
Austin Horstman ce68ac6958 lib/generators: short-circuit important-field check with any
toHyprconf' tested every important prefix with a non-strict foldl that
always scanned the full list. lib.any expresses the same any-prefix-matches
intent and stops at the first match. Runs once per attribute in the
Hyprland generator.
2026-06-17 13:04:43 -05:00
Austin Horstman a69e55d05b fusuma: use lib.makeBinPath for service PATH
The local makeBinPath helper reimplemented lib.makeBinPath with a
non-strict foldl accumulator. Use the stdlib function instead: it is
strict and removes the duplicated logic.
2026-06-17 13:04:43 -05:00
K900andAustin Horstman fa4e2f7e10 modules/kdeconnect: stop overriding PATH, remove support for prehistoric versions
Bad. No. Why.
2026-06-17 10:48:18 -05:00
adisbladisandAustin Horstman d2d79394a4 maintainers: remove adisbladis
I haven't even used home-manager in a very long time, much less maintained it.
2026-06-17 10:48:10 -05:00
0xda157andAustin Horstman a2e23ee8f8 helix: make package nullable 2026-06-17 09:32:40 -05:00
Austin Horstman 89fda2248e mise: add usage dependency for shell completions
The generated script calls the separate `usage` CLI at completion time,
so add `pkgs.usage` to `home.packages` whenever mise is installed.
Stub it on Darwin test runs via `tests/darwinScrublist.nix`.
2026-06-17 09:32:24 -05:00
Austin Horstman 524d73a903 mise: add bash completion to bash integration
The bash integration previously only ran `mise activate bash`, so tab
completion for `mise` was never set up. Source the generated completion
script via `mise completion bash --include-bash-completion-lib`; the
flag self-bundles the bash-completion helpers so it also works on
systems whose bash-completion predates `_comp_initialize`.

Fixes #8539
2026-06-17 09:32:24 -05:00
ErinaYipandAustin Horstman 7664e05e24 maintainers: add ErinaYip 2026-06-16 22:42:18 -05:00
ErinaYipandAustin Horstman 2a7b54df12 prismlauncher: add themes option 2026-06-16 22:42:18 -05:00
0xda157andAustin Horstman 45e97d1e88 television: remove da157 from maintainers 2026-06-16 22:32:46 -05:00
Pat L.andGitHub df4e046571 codex: Add support for installing plugins and marketplaces
Install the referenced plugins into $CONFIG_DIR/plugins and add them to
the marketplace file in `~/.agents/plugins/marketplace.json`. The
plugins are then enabled in `$CONFIG_DIR/config.toml`.

Also add support for custom plugin marketplaces via the `marketplaces`
option. Each marketplace entry is a local directory (or fetched package)
that Codex can browse to discover additional plugins. Marketplaces are
registered in `$CONFIG_DIR/config.toml` under [marketplaces.<name>] with
`source_type = "local"` pointing at the provided path. Setting either
`plugins` or `marketplaces` automatically enables the `features.plugins`
flag in the generated config.

Warn that if a derivation is being used as the source of the plugin, the
name of the derivation needs to match the plugin name in the manifest.
2026-06-16 15:35:13 -05:00
Austin Horstman 34dd288e65 antigravity-cli: update skills deployment path
The skills folder deployment path has been updated to
'~/.gemini/antigravity-cli/skills/' to align with the application's
configuration path structure from docs. I think the other path is just a
weird compatibility shim that app supports. strace shows it will search
it, but it also checks the documented path.
2026-06-16 08:06:05 -05:00
Ihar HrachyshkaandAustin Horstman c03e475289 programs/thunderbird: stop writing directory prefs
Thunderbird prefers[1] directory-rel for account local paths and only
falls back to directory when the relative pref is absent. To add, the
generated directory values were home-relative paths while the app
expects absolute paths when reading the setting. Instead of fixing
these, just drop the redundant settings.

[1] https://searchfox.org/comm-central/source/mailnews/base/src/nsMsgIncomingServer.cpp#745
2026-06-15 16:01:52 -05:00
home-manager-ci[bot]andAustin Horstman 2d4f4e2788 maintainers: update all-maintainers.nix
Automated update of the master maintainers list combining:
- Home Manager specific maintainers from modules/lib/maintainers.nix
- Nixpkgs maintainers referenced in Home Manager modules

**Added:** 1 maintainers
**Removed:** 0 maintainers
**Total:** 300 → 301 maintainers

** Added:** superflash41

Generated by: lib/python/generate-all-maintainers.py
2026-06-15 15:53:00 -05:00
glmlmandGitHub 8aec76cc1e mkFirefoxModule: fix unexpected argument error on derivatives
Fix a compilation error when using a wrapper package that does not accept the `cfg` argument in its override.

Closes #9485
2026-06-15 09:26:48 -05:00
Fida Waseque ChoudhuryandAustin Horstman a813a04113 antigravity-cli: fix programs.mcp.servers integration for remote servers
Do not rename url to serverUrl in transformMcpServer's extraTransforms.
This caused the core library to incorrectly default the server type to stdio,
and subsequently erase the serverUrl attribute entirely during cleanup.

The renaming is already handled at the end by the transformMcpServers helper.
2026-06-15 09:25:46 -05:00
Changseo JangandAustin Horstman 1285cd3d68 keepassxc: Support macOS KeePassXC configuration
Refactor configuration for KeePassXC settings based on platform.
2026-06-14 23:23:24 -05:00
Cody ShearerandAustin Horstman ed8263e7d7 voxtype: fix output mode paste
Voxtype requires the command `cat` from
`coreutils` when using the output mode `paste`,
but fails with the current configuration because
it cannot find `cat`.

```
WARN paste (clipboard + keystroke) failed: Text
injection failed: wl-copy exited with error,
trying next
```

This commit adds `coreutils` to the runtime path
to resolve the path to `cat`.
2026-06-14 17:58:52 -05:00
Aguirre MatteoandAustin Horstman 1b7fb5e6b4 maintainers: dump aguirre-matteo from almost all modules 2026-06-14 17:57:38 -05:00
EdontinandAustin Horstman 5b6f573372 zed-editor: fix programs.mcp.servers compatibility
Default args to an empty list on stdio servers as it's a Vec<String>,
and loading the configuration fails if it's missing. This cannot be done
in extraTransforms due to the final filterAttrs.

Remove addType call as ContextServerSettings doesn't use type to
differentiate server types.

Link: https://github.com/zed-industries/zed/blob/601ecb3ee5c16940191818ee7f244837abf6983c/crates/settings_content/src/project.rs#L484
Link: https://github.com/zed-industries/zed/blob/601ecb3ee5c16940191818ee7f244837abf6983c/crates/project/src/project_settings.rs#L182
2026-06-13 10:42:15 -05:00
Tommaso SoncinandAustin Horstman c87a39aa97 Translate using Weblate (Italian)
Currently translated at 100.0% (39 of 39 strings)

Translate using Weblate (Italian)

Currently translated at 93.7% (15 of 16 strings)

Co-authored-by: Tommaso Soncin <soncintommaso@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/it/
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/it/
Translation: Home Manager/Home Manager CLI
Translation: Home Manager/Home Manager Modules
2026-06-12 18:04:56 -05:00
blokykandAustin Horstman 486595d2cf zsh: make sure siteFunction names don't contain slashes 2026-06-11 09:45:14 -05:00
blokykandAustin Horstman 19c41a5a6d zsh: escape siteFunction names 2026-06-11 09:45:14 -05:00
blokykandAustin Horstman d29e0ab7c2 zsh: correctly handle autoloading functions starting with '-' 2026-06-11 09:45:14 -05:00
Austin Horstman bb68a1a2e7 docs: add release notes contributing guidance 2026-06-11 09:05:37 -05:00
toastalandRobert Helgesson 7dbd305f8b darcs: add defaults
This adds support for specifying default values for Darcs commands.
2026-06-11 00:13:36 +02:00