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.
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.
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.
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.
Clarify that finalPackage is the customized browser derivation after Home Manager overrides and that it can be referenced from other Home Manager options.
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.
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.
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.
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.
The current communityPlugins and themes implementations do IFD, slowing down evaluation of user configurations. Instead of reading the plugin IDs and theme names from the package outputs' manifest.json, I have made it so the plugin ID / theme name is read from the package's passthru if possible.
Using (pkgs.formats.json { }).type gives better type checking than nullOr (attrsOf anything).
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.
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.
On Darwin the previous ordering resulted in `-U` being parsed as a flag
with the value `SR1`. Moving the signal flag to the start of the command
fixes this issue, and pkill from procps doesn't care.
Fixes the `warn-short-path-literals` warning:
warning: relative path literal 'lib/file-type.nix' should be
prefixed with '.' for clarity
Nix recommends prefixing relative path literals with './' to
distinguish them from other path forms.
Setting `core.pager` may result in issues like swallowed `git grep` results.
To avoid this, apply pagers to specific commands where we expect `diff`-ish output only.
Use a common helper to set pager for all modules that configure it.