141 Commits

Author SHA1 Message Date
hectorgray
4b9add8645 xdg-mime-apps: add glob support 2026-09-24 18:24:37 -05:00
MithicSpirit
0b2f112917 gtk: fix gtk-interface-color-scheme
Fixes an issue introduced in [1] where gtk4 apps would print the
following warning:

> Error setting gtk-interface-color-scheme in
> /home/mithic/.config/gtk-4.0/settings.ini: Key file contains key
> “gtk-interface-color-scheme” which has a value that cannot be
> interpreted.

The value should be set to the nickname ("light" or "dark" in this
case), rather than the actual numerical value of the enum.  This lookup
happens at [2].

These nicknames appear to be undocumented and automatically generated at
compile time, but in general they appear to follow the pattern where an
enum value FOO_BAR_BAZ_QUUX of the enum FOO_BAR has nickname "baz-quux".
Regardless, they can be looked up in the generated file
gtktypebuiltins.c (it unfortunately appears that nix only keeps
gtktypebuiltins.h, which does not contain the nicknames).

[1] https://github.com/nix-community/home-manager/pull/7763
[2] https://gitlab.gnome.org/GNOME/gtk/-/blob/4.22.4/gtk/gtksettings.c#L1863
2026-09-22 21:00:14 -05:00
Austin Horstman
26e67a647b tests: preserve stubs through package overrides
Re-scrub derivations returned by override and overrideAttrs so package modules cannot restore real dependency graphs during test evaluation. Adapt affected tests with explicit runtime dependencies, executable mocks, and absence assertions.
2026-07-28 12:55:08 -05:00
Benedikt Rips
079a3b5d1a sshAuthSock: for Zsh, initialize in .zprofile and .zshenv 2026-07-24 12:12:39 -05:00
Austin Horstman
5bf17310cf docs: preserve legacy manual links
Generate XHTML-safe redirect shims that route old single-page manual anchors to their mdBook pages.
2026-06-21 22:02:16 -05:00
Austin Horstman
153bad8fb5 qt: stop rewriting platformTheme name gtk to gtk2
Setting `qt.platformTheme.name = "gtk"` silently rewrote the
QT_QPA_PLATFORMTHEME session variable to `gtk2` and pulled in the
qtstyleplugins and qt6gtk2 packages, which is not what users asked for
and relies on unmaintained packages. There is no `gtk` Qt platform
theme, so `gtk` now maps to Qt's built-in `gtk3` platform-theme plugin
and installs no extra packages.

Users who want the previous behavior can set
`qt.platformTheme.name = "gtk2"` explicitly, which keeps
QT_QPA_PLATFORMTHEME=gtk2 and installs qtstyleplugins and qt6gtk2. The
`qt.useGtkTheme` -> `qt.platformTheme` migration now maps the legacy
option to `{ name = "gtk2"; }` so existing configs are unaffected.

Fixes #8663
2026-06-19 12:28:04 -05:00
mikaeladev
43f9f0abc6 misc: move modules spanning multiple files into subdirs
- modules/misc/qt.nix -> modules/misc/qt/default.nix
- modules/misc/gtk.nix -> modules/misc/gtk/default.nix
- modules/misc/news.nix -> modules/misc/news/default.nix
- modules/misc/xdg*.nix -> modules/misc/xdg/...
- modules/misc/nix*.nix -> modules/misc/nix/...
2026-06-19 08:59:16 -05:00
Benedikt Rips
c8f0b8ed44 fontconfig: add RFC42-style config file settings 2026-06-18 14:16:03 -05:00
Benedikt Rips
4441446672 fontconfig: generate config with pkgs.formats.xml 2026-06-18 14:16:03 -05:00
Benedikt Rips
27a3154f42 fontconfig: disallow null as config file source
This brings `fonts.fontconfig.configFile.*.source` in line with
`home.file.*.source` and the like.
2026-06-18 14:16:03 -05:00
Benedikt Rips
4ce682641d fontconfig: add 'configFile.<name>.target' option
This brings `fonts.fontconfig.configFile` in line with `home.file` and
the like.
2026-06-18 14:16:03 -05:00
Benedikt Rips
82432731d3 fontconfig: check warning in legacy default test 2026-06-18 14:16:03 -05:00
Austin Horstman
bd4277722d tests: add nixpkgs-disabled warning/assertion coverage
Evaluate `nixpkgs-disabled.nix` standalone (the harness always loads the
real `nixpkgs.nix`) to verify the warning and assertion report the offending
`nixpkgs.config`/`nixpkgs.overlays` definition locations.
2026-06-09 17:15:30 -05:00
Austin Horstman
e9cbe69850 sshAuthSock: avoid cycles for socket providers
PR #9420 added set-SSH_AUTH_SOCK.service and ordered it before sshAuthSock.systemd.socketProviderUnit. When that provider is a socket unit, systemd default dependencies already order the socket before sockets.target while service defaults place set-SSH_AUTH_SOCK.service after basic.target. That creates a sockets.target -> basic.target -> set-SSH_AUTH_SOCK.service -> provider.socket -> sockets.target cycle.

For gpg-agent this makes systemd drop gpg-agent-ssh.socket, leaving SSH_AUTH_SOCK pointing at the expected S.gpg-agent.ssh path but with no socket listening there.

Only order and install the environment service against non-socket providers. Socket providers still get SSH_AUTH_SOCK imported through default.target.

Fixes #9432.
2026-06-08 12:04:33 -05:00
Benedikt Rips
f1d5aa6f69 sshAuthSock: set in systemd
`SSH_AUTH_SOCK` is exported in shells only, which systemd does not
inherit from. With this commit, it is also set in systemd such that
systemd-managed applications can access the SSH agent by declaring
dependencies onto 'sshAuthSock.systemd.socketProviderUnit'.

Closes #7971.
2026-06-04 12:20:50 -05:00
Benedikt Rips
efe95f113a sshAuthSock: use enable flag instead of nullable submodule 2026-06-04 12:20:50 -05:00
Austin Horstman
18b4e1ea6f xdg-user-dirs: assert extraConfig key 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
Benedikt Rips
68227a9363 fontconfig: add test for font discovery 2026-06-02 08:22:25 -05:00
Benedikt Rips
af1588ad6f fontconfig: add test for default fonts 2026-06-02 08:22:25 -05:00
Benedikt Rips
c0436bc028 fontconfig: enable config files by default
This commit makes the `fonts.fontconfig.configFile.<name>.enable` option
true by default which matches the behaviour of `home.file` and the like.
2026-06-02 08:22:25 -05:00
Austin Horstman
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
Benedikt Rips
5a15505146 Revert "sshAuthSock: assert that at most one agent is enabled"
This reverts commit 9dc93220c1.

On one hand, conflicting definitions for `sshAuthSock.initialization.*`
were triggering before the assertion triggered, hereby making the
assertion redundant. On the other hand, the assertion prevents users
from running multiple agents side-by-side even after resolving the
definition conflict.

See https://github.com/nix-community/home-manager/pull/8533#issuecomment-4224165151.
2026-05-05 07:52:03 -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
Bruno BELANYI
4bfce11ea8 xdg-user-dirs: add 'projects' 2026-04-20 00:08:02 -05:00
Bruno BELANYI
12ceb3974a tests/xdg-user-dirs-*: do not use 'PROJECTS'
Use `XDG_CUSTOM_DIR` instead, as it is unlikely to be added to the spec.
2026-04-20 00:08:02 -05:00
Benedikt Rips
a93d80bcec treewide: remove unused attrs patterns 2026-04-13 22:02:40 -05:00
Benedikt Rips
71402c5df3 treewide: mark unused lambda arguments 2026-04-13 22:02:40 -05:00
William Phetsinorath
f7f6a559c2 xdg: add support for local bin path
Signed-off-by: William Phetsinorath <william.phetsinorath@shikanime.studio>

Signed-off-by: William Phetsinorath <william.phetsinorath@shikanime.studio>
Change-Id: I045f07415467ca6d409a6f4d52e753866a6a6964
2026-04-11 09:58:37 +02:00
Benedikt Rips
8ec54491cd sshAuthSock: fix naming scheme 2026-04-04 22:28:41 -05:00
Benedikt Rips
9dc93220c1 ssh_auth_sock: assert that at most one agent is enabled 2026-04-03 21:15:34 -05:00
Benedikt Rips
a61b22e323 ssh_auth_sock: init module
`$SSH_AUTH_SOCK` must not be set unconditionally through
'home.sessionVariables' since its value needs to be preserved if it
stems from a forwarded SSH agent. Hence, this commit establishes a
centralized, internal 'ssh_auth_sock.initialization' option for setting
`$SSH_AUTH_SOCK`. It checks whether its value has to be preserved and
injects the initialization code into the proper
'programs.(bash|fish|nushell|zsh).*' options.
2026-04-03 21:15:34 -05:00
Austin Horstman
a8931b2575 kvantum: add enable option
Missed previously, prefer gating enablement on real opt in.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-24 11:02:52 -05:00
mikaeladev
61463d50fc qt: add kvantum options 2026-03-24 08:04:04 -05:00
Austin Horstman
d3281688bf gtk: warn on gtk4 theme inheritance change
The gtk4 theme option still inherits from gtk.theme for users pinned
before 26.05, but that fallback was previously silent. Move the
default through the shared state-version helper so the compatibility
branch emits the standard deprecation warning and stays consistent
with other future cleanups.

Add a focused test that covers the legacy inheritance path alongside
the existing current-state-version test for the null default.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 11:46:51 -05:00
Austin Horstman
acf65ad748 xdg-user-dirs: warn on setSessionVariables default change
Switch xdg.userDirs.setSessionVariables to the shared state-version default helper so older configurations get an explicit warning before the legacy default is removed.

Add focused tests for the legacy and current branches to verify that the session variable exports remain enabled before 26.05 and are disabled by default starting at 26.05.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-22 11:46:51 -05:00
Ryan Hendrickson
26dfad95d9 nix: add assumeXdg option
The use-xdg-base-directories Nix setting can be set globally in
/etc/nix/nix.conf, in which case Home Manager doesn't know about it.
Users could fix that by also setting it, redundantly, in `nix.settings`,
but then Nix issues a lot of spurious warnings about
use-xdg-base-directories being a restricted setting that untrusted users
can't pass on to the daemon.

As an alternative, users can now set `nix.assumeXdg`, which makes Home
Manager assume that use-xdg-base-directories is in effect without adding
it to the user's nix.conf file.
2026-02-13 15:28:13 -06:00
Austin Horstman
cbd8a72e5f treewide: remove xorg package set
Xorg package set removed, now aliases.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-02-07 13:10:27 -06:00
Greg Pfeil
9b62076484 xdg.userDirs: change the syntax for extraConfig
E.g., use `MISC` instead of `XDG_MISC_DIR`, the same way `xdg-user-dirs-update`
works.

This is conditionalized on 26.05, so in future `XDG_MISC_DIR` will be disallowed.
2026-02-04 21:16:02 -06:00
Greg Pfeil
7c47cafa90 xdg.userDirs: don’t require Linux
Everything here works on Darwin, etc.
2026-02-04 21:16:02 -06:00
Viktor Titov
f9d45d664e qt: added qt{5,6}ctSettings options (#8271)
Added qtctSettings option to qt module to make it possible to configure qt(5/6)ct declaratively.
2025-12-07 23:17:30 -06:00
Austin Horstman
d13041d6f0 tests/gtk4: add test for stateversion change
Ensure default behavior with new state version works properly.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-11-28 14:14:32 -06:00
Fugi
ae9f38e889 gtk4: don't enable theme by default
This is not officially supported and causes issues in some cases.
Also adds a warning to the option.
2025-11-28 14:14:32 -06:00
Austin Horstman
af119feb17 Revert "tmpfiles: migrate to an RFC42-style option"
This reverts commit 090aa14e5d.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-11-05 12:26:46 -06:00
Austin Horstman
06aeeed62f Revert "tmpfiles: add option to purge rules' targets on change"
This reverts commit b4350d54c2.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-11-05 12:26:46 -06:00
Benedikt Rips
b4350d54c2 tmpfiles: add option to purge rules' targets on change 2025-11-02 23:02:10 -06:00
Benedikt Rips
090aa14e5d tmpfiles: migrate to an RFC42-style option 2025-11-02 23:02:10 -06:00
Austin Horstman
32a671dce5 tests/gtk: ubuntu_font_family -> ubuntu-classic
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-11-02 22:59:59 -06:00
Benedikt Rips
05c7c900f1 fontconfig: fix cache existence tests 2025-10-28 08:55:38 -05:00
Benedikt M. Rips
f2f1076c1f treewide: remove no-ops (#8061) 2025-10-26 15:43:53 -05:00