Commit Graph
6785 Commits
Author SHA1 Message Date
Austin Horstman 928d723769 dunst: support ordered settings
Closes #8961
2026-05-20 23:13:58 -05:00
home-manager-ci[bot]andAustin Horstman 374742adb6 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:** 3 maintainers
**Removed:** 0 maintainers
**Total:** 295 → 298 maintainers

** Added:** Eveeifyeve, SunOfLife1, kpbaks

Generated by: lib/python/generate-all-maintainers.py
2026-05-20 23:11:44 -05:00
SunOfLife1andAustin Horstman 62b325b47c fish: add SunOfLife1 as a maintainer 2026-05-20 23:09:02 -05:00
SunOfLife1andAustin Horstman f9be3dd495 maintainers: add SunOfLife1 2026-05-20 23:09:02 -05:00
yilisharcsandAustin Horstman bd868f769a nushell: create if environment variable exists
on the off-chance that the user only provided environment variables,
they would not take effect. that's bad.
2026-05-19 12:52:29 -05:00
jiezhuzzzandAustin Horstman 93b932fdbb rclone: extend mount unit PATH for non-NixOS fusermount
The mount user-service set Environment=PATH=/run/wrappers/bin, which is
a NixOS-only directory. On standalone home-manager hosts running other
Linux distros the directory does not exist, and because Environment=PATH=
replaces systemd's inherited PATH, the resulting unit has no usable PATH
at all.

libfuse falls back to a hardcoded /usr/bin/fusermount3 lookup so the
helper still executes, but the eventual mount(2) syscall returns EPERM,
likely because libfuse's internal system()/popen() invocations into
mount.fuse3 fail without /bin/sh and friends on PATH. Empirically, the
EPERM goes away the moment PATH is widened to include standard Linux
locations.

Enumerate /run/wrappers/bin and /run/current-system/sw/bin alongside the
usual /usr/{local/,}{s,}bin and /{s,}bin entries. Path search order is
preserved, so the NixOS wrappers still win where they exist, and
fusermount/fusermount3 is found at /usr/bin on Ubuntu/Debian/Fedora and
similar distros.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman fd272ce76e rclone: make requiresUnit read-only on non-systemd platforms
The option only feeds the systemd config-install service; on Darwin the
launchd agent ignores it, and on any other non-Linux platform the
option is similarly inert. Marking it readOnly with a null default
when systemd is unavailable prevents users from setting a value that
would silently do nothing, and surfaces the platform constraint in the
option itself rather than only in the description.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman 8da35b6f14 rclone: drop unused sidecarType arg from sidecar builders
mkLaunchdSidecar uses a strict argument pattern that did not include
sidecarType, but the call site was passing it via inherit, breaking
evaluation of any darwin config that defined a mount or serve sidecar.

Since isMount already encodes the same information as
sidecarType == "mounts", remove sidecarType from the call site and
replace the two systemd uses with isMount / !isMount.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman 6cfa655a20 rclone: clarify secrets description for both Linux and Darwin 2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman 2f578ccd99 rclone: document macFUSE requirement and Darwin requiresUnit semantics 2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman 6f5d412501 rclone tests: add Darwin serve sidecar test 2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman 13e1296711 rclone: add launchd mount/serve sidecar agents for Darwin
Adds the Darwin launchd mount/serve sidecar agents together with the
mount sidecar generation test.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman d4e015754e rclone: add launchd config agent for Darwin
Renders rclone.conf at login on macOS using the same secret-injection
script as the Linux systemd path. Retries on failure via
KeepAlive.Crashed=true.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman fd3a68e640 rclone tests: cross-platform basic-configuration gating
Lets basic-configuration run on both Linux and Darwin with
platform-specific assertions. Mount/serve generation tests stay
Linux-only for now.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman 2b6c692c95 rclone: add rclone-sidecar-wrapper derivation
Bash helper that waits up to 5 minutes for rclone.conf to exist
before exec'ing its arguments. Will be wired into the launchd
sidecar agents in a follow-up commit.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman f99cd3d4f4 rclone: lift config-install script to a named derivation
Prepares the script for reuse by the launchd config agent. No
behavioral change: the systemd unit references the same script
content via lib.getExe.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman 1060e2e170 rclone: parameterize mkRcloneSidecars over a value builder
Pure refactor in preparation for adding a launchd value builder.
The systemd output is unchanged.
2026-05-19 12:37:34 -05:00
jiezhuzzzandAustin Horstman 5df5159c78 rclone: default cache-dir to xdg.cacheHome on Darwin
Linux keeps the systemd %C/rclone cache-dir specifier. Darwin has no
%C specifier, so the cache-dir default there is
${config.xdg.cacheHome}/rclone. Behaviour on Linux is unchanged.
2026-05-19 12:37:34 -05:00
RamsesandGitHub 16663cb138 ssh: add settings.<name>.header option
The RFC 42 settings option derives the Host/Match line from the
attribute name. That makes it impossible to express headers that carry
Nix string context (e.g. Match exec referring to a store path), and
forces long computed patterns into attribute names where a stable
logical name would be nicer for dag ordering.

Add an explicit `header` option on each block that defaults to the
attribute name (with the existing Host/Match prefix detection), and
have the legacy matchBlocks shim populate it instead of the
__hmSshBlockHeader internal.
2026-05-19 09:50:05 -05:00
John LewisandAustin Horstman 866412a198 git: use absolute paths for git-lfs in config
This allows the git config to be used by programs that have git
installed natively and where other programs access git but don't have
the nix path available, so cannot access git-lfs.
2026-05-18 21:21:03 -05:00
Thierry DelafontaineandRobert Helgesson 736c2084ea podman: ensure openssh is available in PATH
Specifically, the machine initialization command `podman machine init`
requires `ssh-keygen` to generate keys, but `openssh` may not be
available in the system `PATH` by default. This change ensures
`openssh` is available before attempting to create podman machines.

Resolves #9325
2026-05-19 00:24:51 +02: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
b0e2077789 eww: added improvements
Co-authored-by: Dixon Sean Low Yan Feng <dixonseanlow@protonmail.com>
Co-authored-by: Robert Helgesson <robert@rycee.net>
2026-05-18 23:42:01 +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
Kristoffer Plagborg Bak SørensenandGitHub 7519f615df ec: init module
Adds Home Manager module for ec, a 3-way terminal native Git merge conflict resolver.

The module supports:
- Git integration by configuring ec as a mergetool.
2026-05-18 10:35:29 -05:00
home-manager-ci[bot]andAustin Horstman 74f170c62d 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:** 2 maintainers
**Removed:** 0 maintainers
**Total:** 293 → 295 maintainers

** Added:** garklein, iamanaws

Generated by: lib/python/generate-all-maintainers.py
2026-05-18 09:10:44 -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
Benedikt RipsandMatthieu Coudron dd71501fb7 treewide: move NixOS-inherited defaults to their option definitions 2026-05-18 13:23:44 +02:00
Benedikt RipsandMatthieu Coudron a2c0bcaff4 fontconfig: document defaulting behavior on NixOS
'fonts.fontconfig.enable' is, according to the documentation, disabled
by default. However, when Home Manager is installed as a NixOS submodule
and 'home-manager.useUserPackages' is enabled, it defaults to NixOS'
'fonts.fontconfig.enable'. This commit makes this behaviour transparent.

Closes #3966.
2026-05-18 13:23:44 +02: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
Tom van DijkandMatthieu Coudron bcb774cfc3 git-credential-keepassxc: fix misplaced parentheses 2026-05-17 16:14:20 +02:00
Alvaro ViejoandAustin Horstman 26aaab785b claude-code: fixes enableMcpIntegration option docstring
Fixes typo in enableMcpIntegration option's docstring referencing
opencode's option instead of claude-code's.
2026-05-16 13:00:30 -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
kiraandBruno BELANYI 32b42d71b4 discord: add option for different config locations
Different discord branches use different config locations, but home-manager
uses `${configDir}/discord` unconditionally. This adds an option that changes
that to `${configDir}/${configName}`.
2026-05-16 09:52:56 +01: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
Robert HelgessonandAustin Horstman 92a8736142 ci: quote some shell variables 2026-05-15 23:21:38 -05:00
Robert HelgessonandAustin Horstman 3c71cec05d ci: use grep -c instead of grep|wc -l 2026-05-15 23:21:38 -05:00
znmzandAustin Horstman c7fad81970 sherlock: update aliases example to use the official NixOS Wiki link
nixos.wiki -> wiki.nixos.org
2026-05-15 15:24:41 -05:00
angelandAustin Horstman ca77575d39 t3code: add module
Adds programs.t3code so T3 Code can be installed and configured from Home
Manager, including optional merge semantics when the app mutates its config
files. Includes a news entry and tests for empty, merged, and immutable setups.
2026-05-15 10:21:14 -05:00
GarkleinandAustin Horstman 1bedcc8740 exwm: add module
adapted from nixpkgs's exwm service
2026-05-15 08:59:43 -05:00
GarkleinandAustin Horstman 2cb4f4db37 maintainers: add garklein 2026-05-15 08:59:43 -05:00
jiezhuzzzandAustin Horstman e7a7c550e2 claude-code: add configDir option
Make the location of Claude Code's configuration files configurable.
The option defaults to `~/.claude` so existing setups are unaffected,
and exports the `CLAUDE_CONFIG_DIR` environment variable automatically
whenever the directory differs from the upstream default so the CLI
reads from the same location home-manager wrote to.

The option follows the convention established by
`programs.github-copilot-cli`: an absolute-path string with a
`defaultText` for clean documentation rendering, an `upstreamConfigDir`
constant, and a session variable wired only when the user opts out of
the upstream default.
2026-05-15 08:13:54 -05:00