Commit Graph
100 Commits
Author SHA1 Message Date
Austin Horstman 03d2aa6317 hyprland: submaps option lua support 2026-05-13 16:13:28 -05:00
Austin Horstman acd9d8af2f hyprland: migrate settings to native lua option API 2026-05-13 16:13:28 -05:00
Austin Horstman 5878fdadfe tests: avoid removed anime-downloader package 2026-05-12 13:08:25 -05:00
Austin Horstman 2d53d45f6b tests: avoid removed acd-cli package 2026-05-12 13:08:25 -05:00
Austin Horstman a5e92be803 maintainers: drop duplicate ojsef39 entry 2026-05-12 13:08:25 -05:00
Austin Horstman 3f64029740 tests: restore TOML goldens for remarshal 2026-05-12 13:08:25 -05:00
Austin Horstman a89686d115 git: avoid implicit signing config
Fixes #6630
2026-05-04 11:53:44 -05:00
Austin Horstman 0ecfc72c7c docs: explain file collision handling
Document how Home Manager handles activation-time file collisions in the usage manual, including standalone backup flags, NixOS and nix-darwin module options, per-file force handling, recursive directory behavior, and out-of-store symlink sources.

Also clarify the home.file-style ignorelinks option description so recursive symlink behavior is easier to understand from the generated option docs.
2026-05-04 11:37:23 -05:00
Austin Horstman 938311a3bd docs: clarify package overrides with flakes
Extend the package override FAQ with flake examples for modules that expose a package option and modules that require an overlay.

Clarify that Home Manager nixpkgs.overlays only applies to standalone configurations or system-module configurations that do not enable home-manager.useGlobalPkgs.

For useGlobalPkgs setups, direct users to put overlays in the system configuration and pass any flake-provided package sets through nixosSystem or darwinSystem specialArgs.
2026-05-04 11:13:36 -05:00
Austin Horstman c3387b41c9 docs: document unstable packages with flakes
Add a flake-based example for using a secondary nixpkgs-unstable input from Home Manager modules, matching the existing channel-based FAQ guidance.

Show how standalone configurations pass the package set with extraSpecialArgs, and explain the equivalent home-manager.extraSpecialArgs path for NixOS and nix-darwin module users.

Document that separate package sets do not automatically inherit the primary package set's nixpkgs.config or overlays, and show how to pass those values when needed.
2026-05-04 11:13:36 -05:00
Austin Horstman e70904b3af docs: clarify update and upgrade workflows
Describe update and release-upgrade workflows separately so users can tell when to update the current branch versus move to a new Home Manager release branch.

Expand routine update instructions for flake users by explaining that flake inputs are pinned in flake.lock, showing all-input and selected-input update commands, and separating the rebuild command for standalone, NixOS module, and nix-darwin module installations.

Keep channel instructions available for standalone and system-module users, including the different channel owner used by NixOS module setups. Also correct nix-darwin terminology in the installation and flakes docs so those sections do not use NixOS-specific wording.
2026-05-04 11:13:36 -05:00
Austin Horstman 9c9fc9368a tests/anki: stub packages 2026-05-02 20:19:12 -05:00
Austin Horstman b4b920d9ec tests/lutris: stub packages 2026-05-02 20:19:12 -05:00
Austin Horstman 1e313820a3 treewide: adapt toml generator changes
Upstream formatter change in
https://github.com/NixOS/nixpkgs/pull/512319 caused tests to fail.
2026-05-02 20:19:12 -05:00
Austin Horstman 7229dde629 tests/vicinae: stub extensions
Don't need CI dying because of random vicinae extensions.
2026-05-02 20:19:12 -05:00
Austin Horstman 9ce9f7f128 shell: support boolean sessionVariables
Allow boolean values in sessionVariables for Home Manager shell modules and serialize them consistently in generated session files.

- modules/lib/shell: stringify boolean values using lib.boolToString in export helper

- modules/home-environment, programs.bash, programs.zsh: include lib.types.bool in sessionVariables option type

- tests: add IS_TRUE/IS_FALSE assertions in home-environment, bash, and zsh session-variables tests
2026-05-02 09:50:08 -05: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
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 b1b08eeaff thunderbird: clarify external gnupg
Clarify that this option only enables Thunderbird external GnuPG
integration and does not import or accept public keys in the Thunderbird
OpenPGP key manager.
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 9821396285 thunderbird: add msg filter rules description 2026-04-28 09:39:47 -05:00
Austin Horstman 4f77c535e0 thunderbird: html signature support 2026-04-28 09:39:47 -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
Austin Horstman 7f8bbc93d6 mkFirefoxModule: document impermanence extensions
Clarify that extensions.autoDisableScopes only handles manual extension approval. Firefox still owns mutable extension runtime state, so impermanent setups must persist the relevant profile state or configure supported extension settings declaratively.

Closes #6398
2026-04-26 21:59:15 -05:00
Austin Horstman c97d921373 mkFirefoxModule: add firefox devedition example
Help explain profile name requirement for devedition. Firefox won't load
profile unless the name matches.
2026-04-26 21:47:58 -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
Austin Horstman c968134e06 floorp: fix Darwin app bundle name
The package attribute is floorp-bin, but the macOS bundle is Floorp.app. Allow Firefox-family modules to override the derived Darwin app name so Floorp paths match the real package layout.
2026-04-26 09:55:25 -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 00b9fac376 tests: buildbot tests enableBig
Keep missing test failures due to them not being included in CI. Now
that we have a buildbot nix store, there's little reason to not include
them in our CI.
2026-04-26 09:55:25 -05:00
Austin Horstman 6f59831b23 ci: only parse/format on linux
Will not differ between platforms, use the faster ci runner for these
checks Also fix missing parse condition in install-nix-action
2026-04-25 16:14:15 -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
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 HorstmanandHeitor 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
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
Austin Horstman e09259dd2e git: clean up literalExpression 2026-04-23 12:13:58 -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
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
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 f9d2b2da81 chromium: document finalPackage
Clarify that finalPackage is the customized browser derivation after Home Manager overrides and that it can be referenced from other Home Manager options.
2026-04-22 12:30:51 -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
Austin Horstman 36f1bd655f tests/chromium: add more test coverage 2026-04-22 12:30:51 -05:00
Austin Horstman c5ceab9d94 tests/darwinScrublist: add chromium packages 2026-04-22 12:30:51 -05:00
Austin Horstman f4e008848a chromium: expose google-chrome dictionaries and native hosts
Keep the proprietary Chrome extensions option removed, but make dictionaries and nativeMessagingHosts available for the explicit google-chrome, google-chrome-beta, and google-chrome-dev modules.

Add a focused regression test covering dictionary and native host files for all three browser namespaces.
2026-04-22 12:30:51 -05:00
Austin Horstman c95595f732 chromium: fix native host paths for google-chrome
Follow the configured browser package when choosing NativeMessagingHosts paths so chromium overrides to google-chrome install manifests in Chrome's config directory. Keep extension and dictionary handling gated for proprietary Chrome, but always generate native messaging hosts, and cover the override case with a focused regression test.
2026-04-22 12:30:51 -05:00
Austin Horstman afd5607108 rofi: support nested extraConfig sections
Render flat extraConfig entries inside the configuration block and nested attrsets as top-level Rasi sections so mode-specific and filebrowser configuration can be expressed directly in Nix. Fold the reported nested cases into the existing valid-config test instead of keeping issue-specific test files.
2026-04-22 09:59:56 -05:00
Austin Horstman c77ebe06b4 khal: honor explicit default calendar
Closes #9040
2026-04-22 09:59:17 -05:00
Austin Horstman 7076272297 ci: bound runtime and force sandboxed builds
The test workflow currently relies on GitHub Actions defaults for both
job lifetime and Nix sandboxing. That is acceptable when everything
behaves, but it makes failures noisier: a hung job can run indefinitely
until the platform kills it, and the macOS leg inherits a weaker sandbox
default than Linux.

Add explicit timeout-minutes values to the lightweight change-detection
job and the main test matrix job, and pass sandbox = true through
install-nix-action. The sandbox setting is primarily about making the
macOS runner match the stricter execution model we already expect on
Linux.
2026-04-21 08:24:02 -05:00
Austin Horstman 6658732d33 ci: drop default workflow token permissions
The test workflow only needs to evaluate and build repository code. It
does not write statuses, labels, comments, or pull request metadata, so
keeping GitHub's default token scope is broader than necessary.
2026-04-21 08:24:02 -05:00
Austin Horstman 67f2a145a9 ci: run both parse checks in one keep-going step
The parse workflow currently runs the nix and Lix checks as two separate
steps. If the first parser fails, GitHub Actions stops the job before
the second parser runs, which hides useful failure information and
weakens the signal from the new parse gate.

Collapse the two steps into a single invocation that builds both parse
derivations with --keep-going. This keeps the job surface small,
preserves the dedicated parse trigger, and ensures both parser variants
are attempted on every relevant run.
2026-04-21 08:24:02 -05:00
c555a4a34a ci: add nix and lix parse checks
Co-authored-by: Wolfgang Walther <walther@technowledgy.de>
Co-authored-by: piegames <git@piegames.de>
2026-04-20 16:46:54 -05:00
Austin Horstman c81775b640 xdg-autostart: allow empty readonly autostart
Create the readonly autostart link even when no managed entries are
present, so the option behavior matches its documentation and stays
covered by a focused regression test.
2026-04-20 11:12:32 -05:00
Austin Horstman 56b4526cfd nixos: guard home.uid with tryEval
Use tryEval when reading users.users.<name>.uid so configured NixOS
UIDs still propagate to home.uid while nix-darwin users without a
UID do not trigger a no-value-defined eval error.

Refs #8351
2026-04-20 10:58:30 -05:00
Austin Horstman 1072f064e2 fish: clarify setCursor option mapping
Explain that the Home Manager option name differs from fish's CLI flag
so users can map setCursor to abbr --set-cursor without guessing.
2026-04-20 10:26:09 -05:00
Austin Horstman 0a8d50edf2 docs/nix-flakes: clarify extraSpecialArgs usage
Explain when to use extraSpecialArgs versus _module.args in the flake setup guides, and keep the generated standalone fixture aligned with the updated template output.
2026-04-20 09:36:51 -05:00
Austin Horstman 1ab3a4b78e test(tests): add --big-only filter
Keep the default test list broad so chunk targets remain visible
for CI debugging.

The new flag narrows module test discovery to cases gated by
test.enableBig when you want to focus on unique big test cases.
2026-04-19 23:49:40 -05:00
Austin Horstman 29f355a733 tests: decode non-UTF-8 nix build output
Closes #9007
2026-04-19 22:51:34 -05:00
Austin Horstman b85e8fff94 lib/deprecations: suppress no-op state-version warnings
Closes #9045
2026-04-19 22:48:45 -05:00
Austin Horstman 1e9bdc6d35 swaync: update style documentation link
Closes #9098
2026-04-19 22:47:50 -05:00
Austin Horstman 8a423e444b ci: adjust flake lock update pr titles 2026-04-13 22:16:51 -05:00
Austin Horstman 78f7d3d6ab git: ignore deadnix treewide blame 2026-04-13 22:16:51 -05:00
Austin Horstman eff7ee75f0 ci: add release branch label
Make it more obvious when someone is targeting a release branch.
2026-04-13 22:16:51 -05:00
Austin Horstman 0eddb2cc1a neovim: use improved submodule deprecation detection
Prevent false positives with deprecation warning.
2026-04-09 19:09:46 -05:00
Austin Horstman fbc97e23f6 lib/deprecations: improve submodule warning support
Allow warning on specific submodule options with trigger fields and
omitted fields that trigger the warning.
2026-04-09 19:09:46 -05:00
Austin Horstman 230199801b statix: enable misc rules that we already respect
Misc no-hit rules that we already are in compliance with. Ignoring
`faster_` rules because those prefer builtin > lib and we have lib
compat behavior to prefer.
2026-04-08 16:20:15 -05:00
Austin Horstman f04b520e5b git: ignore more statix cleanup commits 2026-04-08 16:20:15 -05:00
Austin Horstman de90ee2408 statix: enable eta_reduction
Enable statix's eta_reduction rule and apply its auto-fixes across the affected modules.
2026-04-08 16:00:28 -05:00
Austin Horstman 74b0e97937 statix: enable empty_pattern
Enable statix's empty_pattern rule and apply its auto-fixes across the affected modules and tests.
2026-04-08 16:00:28 -05:00
Austin Horstman 11ad9d2e42 statix: enable useless_has_attr
Enable statix's useless_has_attr rule and apply its auto-fixes across the affected modules.
2026-04-08 16:00:28 -05:00
Austin Horstman 5209a256fd statix: enable empty_list_concat
Enable statix's empty_list_concat rule and apply its auto-fixes across the affected modules.
2026-04-08 16:00:28 -05:00
Austin Horstman 838db3b5a8 git: ignore statix collapsible let in cleanup 2026-04-08 16:00:28 -05:00
Austin Horstman 74d8d47034 statix: enable collapsible_let_in
Enable statix's collapsible_let_in rule and apply its auto-fixes in the podman linux modules.

This keeps the ratchet focused on one auto-fixable warning at a time.
2026-04-08 15:28:35 -05:00
Austin Horstman 58a6be9fae git: ignore statix inherit commit 2026-04-08 15:28:35 -05:00
Austin Horstman 01ea51d706 treewide: use inherit for attribute assignments
This change converts redundant attribute assignments of the form `a =
a;` or `a = someSet.a;` into cleaner `inherit` statements. This reduces
verbosity and follows common Nix style for bringing attributes into
scope.

Statix Codes: W03 (manual_inherit), W04 (manual_inherit_from)

Also include statix and the rule in our configuration.
2026-04-08 14:47:48 -05:00
Austin Horstman 9ddbb69d18 vicinae: guard refresh-apps activation 2026-04-08 14:38:50 -05:00
Austin Horstman 7843c0025a vicinae: fix x-restart triggers 2026-04-08 14:38:50 -05:00
Austin Horstman 4ac0a4fd15 maintainers: update all-maintainers 2026-04-08 10:10:44 -05:00
Austin Horstman 4a0ded6f84 mbsync: KarlJoad -> ravenjoad 2026-04-08 10:10:44 -05:00
Austin Horstman 991a001751 mu: KarlJoad -> ravenjoad 2026-04-08 10:10:44 -05:00
Austin Horstman 34cb41efe4 ci: fix labeler file count logic 2026-04-07 23:27:55 -05:00
Austin Horstman f0c13b0ebc ci: limit labeler to small pull requests 2026-04-07 23:14:48 -05:00
Austin Horstman c59483f8dc ci: improve robustness of maintainer extraction 2026-04-07 23:14:48 -05:00
Austin Horstman 41f55c248a ci: limit number of automated reviewer requests 2026-04-07 22:58:13 -05:00
Austin Horstman 41e6e2ab37 codex: add support for managed rules files 2026-04-01 23:29:17 -05:00
Austin Horstman 43c0145a48 ci: sync module changes with labeler 2026-03-28 12:42:22 -05:00