2195 Commits

Author SHA1 Message Date
blkgoose
5c1b74905c keynav: add tests 2026-05-01 19:25:59 +01:00
Austin Horstman
edf3f59954 github-copilot-cli: add lsp server support 2026-05-01 12:40:55 -05:00
Austin Horstman
feda41500e github-copilot-cli: add context, agents, and skills
Add support for managing Copilot CLI global instructions via programs.github-copilot-cli.context, written to copilot-instructions.md under COPILOT_HOME.

Also manage custom agents and skills from inline definitions, file paths, and directories, with focused tests and a news entry covering the new options.
2026-05-01 12:06:19 -05:00
Austin Horstman
d181e6ac2a treewide: support store path strings for skills dirs
Filtered or generated skill directories can evaluate to Nix store path
strings rather than path values. The previous top-level skills handling
only used lib.isPath, so those directory values fell through instead of
being linked or expanded.

Treat store-path strings as path-like for the top-level skills option in
Codex, Claude Code, Gemini CLI, and OpenCode, matching the behavior
already used for individual skill entries. Add NMT coverage for
store-path-string skill directories.
2026-05-01 09:54:56 -05:00
Austin Horstman
e6613dd625 codex: keep managed skills under CODEX_HOME
Codex still loads skills from $CODEX_HOME/skills, so the module should keep managing skills there instead of switching to .agents/skills.

This keeps the module aligned with current Codex behavior and avoids coupling generic agents state to the Codex module.
2026-05-01 08:10:28 -05:00
Austin Horstman
899c08a15b github-copilot-cli: fix mcp integration
MCP servers require the args in json, even if not configured.
2026-04-30 19:17:57 -05:00
0xdsqr
2e54a938cd exo: add module 2026-04-29 22:07:11 -05:00
Josef Hofer
503480e513 github-copilot-cli: add module 2026-04-29 16:37:13 -05:00
Alex Martens
8c8e5389e7 tldr-update: add dependency on network-online 2026-04-29 10:35:04 -05:00
N4CH723HR3R
d3b4e4b1bd services.walker: fix paths for walker v2 2026-04-28 22:42:54 -05:00
Austin Horstman
af59809e94 thunderbird: add language packs and policies
Install Thunderbird language packs through enterprise policies so Home
Manager can use Mozilla's release-hosted XPIs without vendoring or
hashing them.

This also exposes programs.thunderbird.policies for configuring
supported Thunderbird enterprise policies directly and wraps the
configured Thunderbird package with merged extraPolicies.
2026-04-28 16:27:37 -05:00
Austin Horstman
c357182707 thunderbird: support ews accounts
Generate the Thunderbird identity and outgoing server preferences
needed for explicit accounts.email.accounts.<name>.ews accounts,
and add an outlook.office365.com-ews flavor preset for Office365
Exchange accounts.

Closes #8011
2026-04-28 16:27:37 -05:00
Austin Horstman
c2f07e2dca thunderbird: default office365 to oauth2
Default Office365 Thunderbird IMAP/SMTP settings to OAuth2 while
keeping the existing outlook.office365.com flavor on IMAP and SMTP.
2026-04-28 16:27:37 -05:00
Austin Horstman
ae6aeb9dbc thunderbird: map account auth methods
Closes #5137
2026-04-28 16:27:37 -05:00
Austin Horstman
8ec5a714db rofi: allow list values in extraConfig 2026-04-28 10:19:50 -05:00
Austin Horstman
4f77c535e0 thunderbird: html signature support 2026-04-28 09:39:47 -05:00
Jess
79f8430e7d restic: unset systemd PrivateTmp option
This option works with the NixOS version of the module as host services
have different user namespace permissions to user services. Programs
like ssh get confused when certain config files aren't owned by root.
2026-04-28 08:33:38 -05:00
Austin Horstman
a28e848a01 chromium: address plasma integration review
Hide the Plasma integration options on non-Linux platforms so the Chromium module does not need fallback access for platform-specific options.

Switch the integration package option to mkPackageOption and document the kdePackages default path with pkgsText. Also tighten the focused NMT test so Darwin does not set the Linux-only option while still asserting that no native host file is produced there.
2026-04-27 11:45:48 -05:00
Andrew Marshall
d45a13f96c {home-environment,bash,zsh}: support ignoring null sessionVariables
Some applications consider environment variables to be “true” simply if
they are set. Previously it was not possible to have a var set and later
override (e.g. with `lib.mkForce`) to *unset* it. This makes that
possible. The filtering must be done in the `exportAll` as attempting to
do it in the option’s `apply` causing infinite recursion (likely why it
is `lazyAttrsOf`).
2026-04-27 11:20:51 -05:00
Andrew Marshall
466d5909eb tests: remove unused file
Missing change from e44faef21c.
2026-04-27 11:20:51 -05:00
Austin Horstman
4883af6edb syncthing: avoid init for default gui address
The gui address option always has a default value, so #8644 ended up
making syncthing-init run for every enabled Syncthing setup.

Treat the default gui address as unset for updater purposes so the init
unit is only generated when Home Manager is actually managing Syncthing
configuration. Add regression tests for the default and explicit
guiAddress cases.
2026-04-26 19:44:29 -05:00
Seong Yong-ju
c55c498c9a targets/darwin: set TERMINFO_DIRS
Make terminfo descriptions from Home Manager-installed packages (e.g.
kitty, alacritty) discoverable on macOS by exporting TERMINFO_DIRS via
hm-session-vars.sh. macOS has no systemd/environment.d equivalent, so
the shell session file is the available entry point.

Closes nix-community/home-manager#2918 for macOS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 10:44:45 -05:00
Austin Horstman
5bfbc1f6ca tests: fix neovim program test 2026-04-26 09:55:25 -05:00
Austin Horstman
8a2fdaf6b4 tests: fix firefox program tests 2026-04-26 09:55:25 -05:00
Austin Horstman
b7d6241c2a rofi: fix nested extraConfig rendering 2026-04-25 16:03:43 -05:00
Austin Horstman
ed2ee7b313 tests: enable more tests on darwin
Several programs / modules support darwin but weren't being tested on
darwin.
2026-04-25 15:59:45 -05:00
Austin Horstman
026e210389 firefox: fix legacy configPath default
The deferred state-version warning helper keeps .default on the current branch so warnings can be emitted from config. Firefox passed that .default through as the Linux configPath default, which made home.stateVersion < 26.05 still use the XDG path.

Use effectiveDefault for the platform default so legacy state versions keep .mozilla/firefox, while preserving the warning. Adjust the config-path tests to cover explicit legacy and XDG paths.
2026-04-25 12:34:58 -05:00
electria
5826802354 modules/nix-search-tv: add run and shell actions 2026-04-24 22:01:46 -05:00
Austin Horstman
ffbd94a1c9 tests: support override-inputs in test runner
Help resolve issue reported a while ago about override inputs not being
respected. Allows testing against a different nixpkgs revision easier.
2026-04-24 13:06:58 -05:00
Austin Horstman
6012cf1fed mkFirefoxModule: make profile extensions extensible
Restore nested option extensibility for
`programs.firefox.profiles.<name>.extensions` by keeping it as a plain
submodule.

This removes the deprecated `programs.firefox.profiles.<name>.extensions
= [ ... ]` shorthand. Add-ons must now be declared with
`programs.firefox.profiles.<name>.extensions.packages`, while
declarative settings remain under `extensions.settings`.

Add a regression test for downstream `extensions.*` option extension and
a news entry documenting the migration.
2026-04-23 23:19:12 -05:00
Austin Horstman
b869d6cadb firefox: default configPath to XDG on 26.05
Use `lib.hm.deprecations.mkStateVersionOptionDefault` to keep the legacy `.mozilla/firefox` default for existing configurations while switching new Linux configurations to `"${config.xdg.configHome}/mozilla/firefox"`.

Add focused tests for the legacy and XDG defaults plus a news entry describing the transition.

Closes #8200.
Supersedes #8716 and the earlier attempt in #8672.

Co-authored-by: Heitor <44377258+HeitorAugustoLN@users.noreply.github.com>
2026-04-23 22:58:59 -05:00
Austin Horstman
4bf1f0bcd1 mkFirefoxModule: reject container id 0
Set the default Firefox container id to 1 and reject ids outside the
supported 1..4294967293 range.

Firefox reserves userContextId = 0 for the default, non-container
context:
- nsIScriptSecurityManager::DEFAULT_USER_CONTEXT_ID = 0:

https://searchfox.org/firefox-main/source/caps/nsIScriptSecurityManager.idl
- nsIPrincipal documents that the default userContext returns
DEFAULT_USER_CONTEXT_ID:

https://searchfox.org/firefox-main/source/caps/nsIPrincipal.idl#1135-1147
- Mozilla review discussion also distinguishes default context 0 from
public identities:
  https://bugzilla.mozilla.org/show_bug.cgi?id=1337964#c7

Also cover the lower bound with a dedicated Firefox container test and
update the default container fixture.
2026-04-23 22:07:30 -05:00
Austin Horstman
d035caf3ac mkFirefoxModule: serialize path prefs as strings
Treat Nix paths like plain string preferences when generating user.js so
values such as browser.bookmarks.file are not JSON-quoted twice.

Add a regression case in the Firefox settings test for a path-valued
preference.
2026-04-23 22:06:37 -05:00
Miles Wirht
5bba6a1e02 flashspace: init module 2026-04-24 00:16:15 +00:00
Miles Wirht
ae97a15455 rectangle: init module 2026-04-23 19:06:39 -05:00
Austin Horstman
99814d2a67 fcitx5: capitalize boolean settings
Fcitx5 accepts only exact True/False values for typed boolean options.

Normalize booleans before generating fcitx5 config files so Home Manager emits values that upstream will parse instead of resetting to defaults.
2026-04-23 18:12:37 -05:00
Austin Horstman
bb0aaf91cc tests: split stub derivation attrs from methods
Apply non-function stub attributes through overrideAttrs so derivation metadata and wrapper-facing fields remain visible to downstream consumers.

Keep function-valued attributes like override on the outer attrset so they are not serialized into derivations and do not break unrelated tests.
2026-04-23 18:12:20 -05:00
Miles Wirht
5a9efa93c5 qalculate: init module 2026-04-23 17:27:29 -05:00
Austin Horstman
30db803c98 git: support ordered settings fragments
Allow programs.git.settings to keep its existing attrset shorthand while also accepting an ordered list of fragments for repeated sections and order-sensitive config. Cover the new list form with a focused Git config snapshot test.
2026-04-23 12:13:58 -05:00
Perchun Pak
6837e0d6c5 wayle: fix example 2026-04-23 08:18:13 -05:00
Austin Horstman
667b3c4732 home-manager-auto-upgrade: state-version gate preSwitchCommands
Migrate the preSwitchCommands default to
lib.hm.deprecations.mkStateVersionOptionDefault instead of using a
null sentinel.

Keep the legacy flake update behavior for older state versions and add
tests for the explicit, legacy, and current flake paths.
2026-04-22 19:34:24 -05:00
Takumi
8f259af671 home-manager-auto-upgrade: add switch flags and pre-switch commands
Add a flags option for passing extra arguments to home-manager
switch and a preSwitchCommands option for running commands before the
switch.

Preserve the legacy flake update behavior behind a deprecation warning,
clean up the shell script, and cover the flake path in tests.
2026-04-22 19:34:24 -05:00
Perchun Pak
508daf831a equibop: init 2026-04-22 15:50:22 -05:00
Isaac Shiells Thomas
83b3ecce2e wayle: add module
Co-authored-by: Perchun Pak <github@perchun.it>
2026-04-22 15:26:03 -05:00
Thierry Delafontaine
f8e57407f4 proton-pass-agent: adapt the services to match the documentation
See https://protonpass.github.io/pass-cli/commands/ssh-agent/#setting-ssh_auth_sock-automatically-on-login section 'Starting the daemon automatically on login'.
2026-04-22 15:25:18 -05:00
isabel
d1759673d7 tests/pipewire: test for LADSPA 2026-04-22 15:24:44 -05:00
Austin Horstman
d79c987e65 chromium: install plasma browser integration
Reuse existing plasmaSupport option to install browser integration
package.
2026-04-22 14:14:13 -05:00
Austin Horstman
ca6fd05c13 tests/chromium: cover brave package routing
Add a regression test showing that programs.chromium.package = brave writes extension metadata into Brave's config directory rather than Chromium's.
2026-04-22 12:30:51 -05:00
Austin Horstman
5d947202cf chromium: document ungoogled extensions
ungoogled-chromium does not reliably support the default Chrome Web Store update URL workflow, but Home Manager already supports local CRX descriptors via crxPath and version.

Document that Linux users should prefer that path and add a regression test covering pkgs.ungoogled-chromium.
2026-04-22 12:30:51 -05:00
Austin Horstman
14b81a1630 chromium: support google-chrome extensions on Darwin
Allow the Google Chrome browser modules to manage Chrome Web Store extensions on Darwin while keeping Linux explicit via assertions, since Home Manager cannot write Chrome's system-managed extension directories there.

Add focused regression tests for the Linux and Darwin branches, update the existing google-chrome coverage, and add a news entry.
2026-04-22 12:30:51 -05:00