Commit Graph
100 Commits
Author SHA1 Message Date
Austin Horstman dc641330e2 infat: use deprecation warning helper 2026-06-04 12:20:09 -05:00
Austin Horstman 18b4e1ea6f xdg-user-dirs: assert extraConfig key warning 2026-06-04 12:20:09 -05:00
Austin Horstman 6459fc4aee firefox: assert bookmarks migration warning 2026-06-04 12:20:09 -05:00
Austin Horstman 6a6941ad20 hyprpanel: assert theme name warning 2026-06-04 12:20:09 -05:00
Austin Horstman c81a3d2383 helix: assert languages migration warning 2026-06-04 12:20:09 -05:00
Austin Horstman 9a638c1442 swayidle: assert events migration warning 2026-06-04 12:20:09 -05:00
Austin Horstman ff53fe10e0 qt: assert kde6 migration warning 2026-06-04 12:20:09 -05:00
Austin Horstman 5ded124f91 lib: add deprecated option warning helpers 2026-06-04 12:20:09 -05:00
Austin Horstman 4c5c1e8ba1 alacritty: fix toml escape generation 2026-06-03 14:45:20 -05:00
Austin Horstman 07c723c3fe zsh: fix oh-my-zsh custom path expansion
Preserve shell-variable paths for programs.zsh.oh-my-zsh.custom while
still escaping values for a double-quoted shell assignment.

This restores runtime expansion for values like $HOME/extra/zsh, which
otherwise became a literal path after the previous escapeShellArg
change.
2026-06-02 08:00:49 -05:00
Austin Horstman a7a4158831 infat: use list for autoActivate extraArgs 2026-06-01 22:28:08 -05:00
Austin Horstman 26e34a99e4 hyprland: reorganize config generation
Move local render helpers closer to their generated outputs and split xdg.configFile construction into named builders.

Keep luaFiles behavior in the preceding feature commit; this only reduces duplicated predicates and makes the module layout easier to scan.
2026-06-01 21:32:10 -05:00
Austin Horstman a6a13bb0a0 hyprland: add extraLuaFiles option
Allow Lua configs to be split across managed files under XDG_CONFIG_HOME/hypr.

Treat extraLuaFiles attribute names as Lua module names, so dotted names such as lib.helpers write lib/helpers.lua while autoloading with require("lib.helpers").

Add assertions for invalid configType usage, generated hyprland.lua collisions, and duplicate resolved Lua file targets.
2026-06-01 21:32:10 -05:00
Austin Horstman c7e4087b4d zsh: rename plugin completions to functions
The option appended directories to fpath, but fpath is zsh's lookup path for all autoloadable functions, not just completion functions.

Rename the option to functions with mkRenamedOptionModule so existing completions users are migrated through the standard Home Manager deprecation path.

Link: https://github.com/nix-community/home-manager/discussions/8701#discussioncomment-16966141
2026-06-01 21:22:13 -05:00
Austin Horstman c7c139f742 zsh: escape double-quoted values
The zsh value renderer emits strings in double quotes so session variables can still expand references such as $HOME. Embedded quotes, backslashes, and backticks were not escaped, which could corrupt generated zsh code or trigger command substitution.

Escape those double-quote-sensitive characters while preserving dollar expansion for existing session-variable semantics.
2026-06-01 21:22:13 -05:00
Austin Horstman 3e17edd5e6 zsh: escape named directory hashes
Named directory hash values are rendered into zsh code. Interpolating them inside double quotes is not enough for values containing quotes, glob syntax, or other shell metacharacters.

Render both the hash name and target with shell escaping so dirHashes entries are emitted as literal zsh arguments.
2026-06-01 21:22:13 -05:00
Austin Horstman d00b16c511 zsh: escape cdpath entries
Zsh cdpath is an array. Rendering entries by joining on spaces breaks paths containing spaces, glob characters, or other shell syntax.

Use the shared shell array formatter so each configured cdpath entry is emitted as a quoted array element.
2026-06-01 21:22:13 -05:00
Austin Horstman 112a3a3783 zsh: add common plugin function paths
Nixpkgs zsh plugin packages often install functions and completions below share/zsh/plugins/<name>, share/zsh/site-functions, or share/zsh/vendor-completions rather than at the package root.

Keep the existing root path and fpath entries, but add those standard subdirectories to fpath when present so plugin-provided functions and completions are discoverable without extra per-plugin configuration.

Link: https://github.com/nix-community/home-manager/discussions/8701#discussioncomment-16966141
2026-06-01 21:22:13 -05:00
Austin Horstman 04ec113f8b zsh: load session vars from zprofile for login shells
Zsh reads .zshenv before system login startup files. On NixOS and macOS those later files can replace or reorder PATH, so home.sessionPath entries loaded from .zshenv may disappear or move behind system paths.

Keep .zshenv coverage for non-login shells, but source Home Manager session variables from .zprofile for login shells so PATH-like values are applied after system login setup.

Fixes #2991
2026-06-01 21:22:13 -05:00
Austin Horstman d0af9b8bf3 claude-code: mark hook scripts executable
Inline hooks are scripts, so write them with the executable bit set. Add NMT assertions covering default and custom config directories.
2026-06-01 16:06:08 -05:00
Austin Horstman 7d8127d308 flake: track nixpkgs-unstable 2026-05-29 19:01:27 -05:00
Austin Horstman da8f8fcd69 ci: update release branch 2026-05-29 19:01:27 -05:00
Austin Horstman 948753061a home-manager: prepare 26.11
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-05-29 19:01:27 -05:00
Austin Horstman 1a95e2efb4 home-manager: set 26.05 as stable
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-05-25 11:31:36 -05:00
Austin Horstman 612bbe3b40 tests/darwinScrublist: add pimsync 2026-05-24 22:10:29 -05:00
Austin Horstman 044c30c195 vicinae: allow npmDepsHash for extensions
Vicinae extension helpers always used importNpmLock, which reads package.json and package-lock.json during evaluation. When extension src comes from fetchgit or fetchFromGitHub, that forces Nix to realize the fetched source during eval and trips allow-import-from-derivation = false.

Accept npmDepsHash in mkExtension and mkRayCastExtension so fetched extension sources can use buildNpmPackage's fixed npm dependency fetcher path instead. Keep the existing importNpmLock behavior for local sources and document the hash requirement in the option example.
2026-05-24 08:00:36 -05:00
Austin Horstman 23703a32ef betterlockscreen: drop sebtm
https://github.com/NixOS/nixpkgs/pull/516087
2026-05-23 22:11:28 -05:00
Austin Horstman 50aaf8f284 tests/darwinScrublist: add intelli-shell 2026-05-23 22:11:28 -05:00
Austin Horstman 6e92bf094d nix-darwin: pass DRY_RUN to activation
Ensure nix-darwin Home Manager activation preserves DRY_RUN when
invoking per-user activation through sudo.

Closes #7344
2026-05-23 19:02:40 -05:00
Austin Horstman 928d723769 dunst: support ordered settings
Closes #8961
2026-05-20 23:13:58 -05:00
Austin HorstmanandRobert Helgesson f968ed5961 syncthing: support legacy config dir
Syncthing still supports existing Linux installations that keep config.xml under XDG_CONFIG_HOME/syncthing. Resolve the runtime directory from the generated scripts so Home Manager waits on and copies keys into the existing legacy directory when no state-dir config exists.

Fixes #6933
2026-05-19 00:17:05 +02:00
Austin HorstmanandRobert Helgesson 3ee415b292 gnome-shell: use user-themes extension
Use the standalone User Themes extension package when enabling GNOME Shell theme support instead of installing the full gnome-shell-extensions package.

Closes #9171
2026-05-19 00:11:21 +02:00
Austin Horstman fab3fd7327 ssh: fix ssh enableDefaultConfig description
Text wasn't rendering properly in the generated docs.
2026-05-18 12:25:51 -05:00
Austin Horstman 936ae1b1eb ssh: add RFC 42 settings option
Add programs.ssh.settings as a freeform DAG for OpenSSH client configuration blocks. Render Host and Match blocks directly from the new settings option while preserving ordering support.

Render known ssh_config comma-list directives from Nix lists as single comma-separated lines and known space-list directives as single whitespace-separated lines. This keeps directives like KexAlgorithms, Ciphers, MACs, HostKeyAlgorithms, ProxyJump, SendEnv, GlobalKnownHostsFile, and PermitRemoteOpen from being emitted as duplicate directives where OpenSSH may only use the first value.

Migrate legacy matchBlocks into settings, keep root SSH option redirects pointed at the new option names, and hide the deprecated matchBlocks option from generated docs.

Update SSH tests, docs references, and news coverage for the new option.
2026-05-18 12:25:51 -05:00
Austin Horstman 0f08a37c31 ci: fix module count output
Commit 3c71cec05d changed the labeler workflow to use grep -c, but grep -c still exits with status 1 when no lines match.

That made the fallback echo another 0, so COUNT became a multi-line value and the write to GITHUB_OUTPUT failed. Use true as the fallback to preserve grep's single-line count while allowing the no-match case.
2026-05-18 09:07:50 -05:00
Austin Horstman 08c9d01457 hyprland: add khaneliman maintainer 2026-05-17 22:35:47 -05:00
Austin Horstman 1bc2cf3eed hyprland: support lua variables in settings 2026-05-17 22:35:47 -05:00
Austin Horstman d918d22422 walker: add elephant integration
Add an option to order Walker's user service after elephant.service and add a systemd Requires= dependency when enabled.

The option defaults to services.elephant.enable, so Home Manager-managed Elephant setups work automatically while users can still enable the dependency for an externally managed elephant.service.
2026-05-17 22:25:27 -05:00
Austin Horstman 84ddd33ed0 elephant: add module
Add a service module for Elephant with package installation, provider selection, TOML config generation, and a systemd user service.

This gives Elephant its own configuration surface instead of wiring it through Walker.
2026-05-17 22:25:27 -05:00
Austin Horstman 355734d876 treewide: remove literalExpression where unneeded
`literalExpression` is intended just to signify code that needs to stay
a string that gets represented exactly as-is for docs. It has been
misused heavily and people get confused repeatedly on when or not to use
it because of the rampant misuse.
2026-05-17 21:43:25 -05:00
Austin Horstman 917e3469fe mkFirefoxModule: allow per-extension settings force
Fixes the force acknowledgement logic for extension settings so an
extension-specific force flag is sufficient for that extension.

References
https://github.com/nix-community/home-manager/discussions/7910
2026-05-17 21:42:38 -05:00
Austin Horstman d5ece85b6d zsh: guard session variables under nounset
Use parameter expansion with a default value when checking Home Manager's session-variable sentinels.

Users with zsh NO_UNSET or shell nounset enabled were seeing parameter-not-set errors before the generated session variables had a chance to export the sentinel variables.

Update the home session-variable and zsh fixtures to cover the generated guards.
2026-05-16 08:20:26 -05:00
Austin HorstmanandRobert Helgesson 1772e8fb83 qt: pass negative KDE settings as values
Insert the command-option terminator before values passed to kwriteconfig6 so negative numeric settings are not parsed as command flags.

This fixes KDE settings such as DimDisplayIdleTimeoutSec = -1, which previously produced an unknown-option error from kwriteconfig6.

Cover the regression in the existing qt-basic NMT test by checking the generated activation command includes the terminator before the negative value.
2026-05-16 09:24:45 +02:00
Austin HorstmanandRobert Helgesson f63af17f47 podman: quote Quadlet labels with spaces
Quote generated Quadlet key-value entries when attrset-backed values contain whitespace, preserving the value as a single systemd/Quadlet field.

Without quoting, label values such as Traefik rules are split by podman-system-generator into multiple invalid --label arguments.

Extend the container NMT fixture with a label containing spaces and assert the generated service preserves it as one label.
2026-05-16 09:20:22 +02:00
Austin Horstman 3d4f5477f0 hyprland: remove old removed options
Been several years, don't need hanging around anymore.
2026-05-14 10:29:02 -05:00
Austin Horstman 9760b31dab hyprland: generate LuaLS config 2026-05-13 16:13:28 -05:00
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