301 Commits

Author SHA1 Message Date
Dom Rodriguez
9e831c745b docs: document standalone home.backup* options
Assisted-by: Claude <noreply@anthropic.com>
2026-09-30 20:54:52 -05:00
Austin Horstman
bf3f7a120d astroid: migrate to native JSON settings
Add programs.astroid.settings for native JSON configuration and
generate the configuration file from it.

The extraConfig and externalEditor options become deprecated aliases
into settings. Home Manager no longer writes its bundled template;
Astroid's built-in defaults match it except editor.markdown_processor.
Astroid accounts still supply account settings, the notmuch path, and
the GPG path as per-key defaults. Empty settings write no file.

externalEditor now merges at ordinary priority instead of replacing
the editor keys, and priorities on extraConfig sections apply to the
section as a unit. The release notes describe both changes.
2026-09-30 08:40:10 -05:00
Austin Horstman
d4941d9c8d notmuch: migrate to native INI settings
Add programs.notmuch.settings for native INI configuration with list
values, and generate the configuration file from it.

The new.ignore, new.tags, maildir.synchronizeFlags, search.excludeTags,
and extraConfig options become deprecated aliases into settings.
Settings carry no static defaults: new.tags, new.ignore, and
maildir.synchronize_flags fall back to notmuch's identical defaults.
State versions before 26.11 keep search.exclude_tags = deleted;spam and
write database.path even without email accounts. Enabled email
accounts supply database.path, and notmuch-enabled accounts the user
identity. Null values and empty sections are omitted so a derived
value can be removed.

extraConfig no longer overwrites modeled values unconditionally: forced
definitions win and ordinary collisions fail. The release notes
describe the migration.

Mbsync, lieer, and mujmap now write settings.new.ignore directly, so
they do not trigger deprecation warnings.
2026-09-30 08:23:14 -05:00
Austin Horstman
7d46509d83 borgmatic: migrate backups to native settings
Add programs.borgmatic.backups.<name>.settings for native borgmatic
YAML and generate each backup file from it.

The location, storage, retention, and consistency options and the
section extraConfig options become deprecated aliases into settings.
Warnings name the affected backup. Legacy configurations without
overlapping keys produce the same YAML, and Home Manager symlink
exclusions still append to exclude_from.

Drop the assertions that rejected backups setting both or neither of
sourceDirectories and patterns, so native source patterns and
database-only backups work.
2026-09-30 07:59:27 -05:00
Austin Horstman
e9796a288e lib/deprecations: name exact settings destinations
Forward converted values to the complete settings path so the standard
changed-option warning identifies the destination key. Preserve legacy
reads, priorities, defaults, and shadowed conversions.

Point mpdris2 at Library.music_dir directly and cover nested paths,
literal dotted keys, and the affected callers in warning tests. The
contributor guidelines now describe `to` as the settings path that
contains `key` instead of the settings root.
2026-09-23 22:37:57 -05:00
Austin Horstman
afa6821c70 grobi: migrate to freeform settings
Generate grobi.conf from unrestricted JSON settings so root fields such as on_failure and nested rule values are configurable.

Migrate rules and executeAfter through the ordered settings rename helper, retaining historical empty defaults, alias reads, priorities, and list ordering.
2026-09-16 23:20:56 -05:00
Austin Horstman
efa3ccb4c3 openstackclient: expose whole-file settings
The old cloud-only mappings cannot express root-level cache and client
settings. Expose complete YAML documents while preserving existing
configurations through standard rename aliases.
2026-09-15 09:27:35 -05:00
Austin Horstman
cfcda3f993 lib.deprecations: simplify settings migrations (#9953) 2026-09-13 21:18:31 -05:00
Austin Horstman
bdcb842903 lib/deprecations: preserve settings overlay definitions
Share raw overlay forwarding and effective-key detection for default-empty
legacy options. Keep application defaults and conversions in consumers.

Delegate aliases and diagnostics to doRename without rewrapping prepared
priorities. Cover ordering, composition, empty values, and source filenames
in the existing evaluations.
2026-09-12 23:16:50 -05:00
Austin Horstman
fe48612c53 twmn: migrate to freeform INI settings
Use native INI settings instead of a copied option schema, retaining
legacy conversions, default behavior, and font-package installation.
Preserve extraConfig's final override while users migrate to settings.
2026-09-12 12:44:47 -05:00
Ihar Hrachyshka
17bf375751 firefox: adjust relnote and news for macOS 27
Don't nudge users to change their version. Instead, ask to set
configPath explicitly.
2026-09-12 11:22:12 -05:00
Austin Horstman
e4345d5ae8 xsuspender: migrate to freeform settings (#9927)
Replace the native option schema with generator-backed INI settings
and standard rename aliases to reduce module maintenance. Retain
historical defaults only for legacy options at option-default priority,
so ordinary settings assignments override them during migration.
Cover legacy reads, priorities, conditions, and settings-only behavior.
2026-09-11 13:16:59 -05:00
Ihar Hrachyshka
6960c16659 firefox: document darwin configPath migration 2026-09-10 22:57:58 -05:00
wangzhengji06
df6fe1a630 docs: use module path in NixOS installation example 2026-09-05 15:18:31 +02:00
repparw
9dc641cd52 voxtype: start after graphical-session.target
The daemon was wanted by default.target, so it raced the compositor for
the GPU render node at login. whisper.cpp registers its backends once
per process, so a daemon that started before the render node existed
logged "ggml_vulkan: No devices found" and stayed on CPU until manually
restarted mid-session.

Want the unit from graphical-session.target instead and order it After
it. Device units do not exist in the user manager, so the target is the
earliest reliable ordering point. The model-loader oneshot now sets
RemainAfterExit so it does not re-run and flap on every
graphical-session reactivation.

Assisted-by: opencode (ox-alpha)
2026-08-26 20:04:49 -05:00
Peter Bittner
e13ba5e5ab docs: link module pages without an invalid anchor
Drops the URL fragment from links that address a `programs.foo` or
`services.foo` page. Such a path names a module rather than an option,
so the page carries no matching anchor and the fragment pointed nowhere.
Option paths keep their fragment, including the single-segment options
`lib`, `specialisation` and `uninstall`, whose name equals their page
path.

Moves the anchor handling that convert-markup.py and render-options.py
had in common into a new option_links module imported by both. The
derivations therefore pass the mdbook directory instead of a single
script file, so the import resolves.
2026-08-12 07:40:00 -05:00
Peter Bittner
a0d058ef22 docs: link release note highlights to module pages
Changes the option anchors in the 26.05 and 26.11 highlights that
describe a whole module, so they point at the module's options page
instead of its `enable` option. Both entries previously rendered as
"The programs.uv.enable module ..." and "The programs.rclone.enable
module ...", naming an option where a module was meant. The rewriter in
docs/mdbook/convert-markup.py maps programs.<name> to that module's
page and derives the link label from the anchor, so the empty link text
is kept.
2026-08-12 07:40:00 -05:00
Damien Cassou
47a4275796 docs: fix link to allowed-users documentation 2026-07-31 16:01:16 -05:00
MithicSpirit
3d25fa94cf lib: option to escape tabs in lib.hm.generators.toKDL
Disabled by default for backwards compatibility.

Enabled for zellij and niri as per escapeBackslashes.
2026-07-28 15:16:56 -05:00
Austin Horstman
165228b0ef launchd: restore gui domain defaults
User-domain agents are not rediscovered from the user LaunchAgents directory after reboot. Let built-in agents inherit the GUI default while keeping explicit user-domain configuration available.
2026-07-15 10:29:26 -05:00
Vyacheslav Matyukhin
6dc9e081ba docs: fix cross-page links broken by mdbook migration
The mdBook migration split the manual into one HTML page per section,
but same-page fragment links (e.g. [Standalone setup](#sec-flakes-standalone))
were left pointing at anchors that now live on other pages, so they
silently do nothing when clicked.

Rewrite all cross-page fragment links in docs/manual and
docs/release-notes to page-qualified relative links. Option anchor
links (#opt-*, #nixos-opt-*, #nix-darwin-opt-*) are untouched since
convert-markup.py rewrites those at build time.

Also give the previously empty-label [](#sec-tests) link in the 25.05
release notes a "Tests" label, since the mdBook renderer does not
auto-fill labels from the target heading.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 08:56:06 -05:00
_
d32537981c lib: escape backslash in lib.hm.generators.toKDL 2026-06-30 23:49:47 -05:00
Austin Horstman
dc89b0c0bb launchd: add agent domain option
Allow Darwin LaunchAgents to target either the GUI or user launchd domain while preserving gui as the compatibility default.
2026-06-24 20:38:38 -05:00
Austin Horstman
66eb0fc116 docs: clarify new module news conditions
Clarify that new-module news should remain visible to users who have not enabled the new module yet.
2026-06-22 12:35:03 -05:00
Austin Horstman
f3dc0b8583 docs: update platform module guidance
Program and service modules are auto-imported now, so contributor docs should point platform-specific work at guarded module behavior and tests instead of loadModule.
2026-06-21 22:58:48 -05:00
Austin Horstman
db97e414d5 docs: describe embedded module integration
Document the extra module arguments, shared modules hook, and NixOS activation modes so embedded Home Manager setup matches the current integration code.
2026-06-21 22:51:39 -05:00
Austin Horstman
e731ff60ec docs: correct test command guidance
Document list and run commands separately, keep test runner usage through the flake wrapper, and avoid stale legacy full-suite commands.
2026-06-21 22:43:01 -05:00
Austin Horstman
e45cc6e15a docs: fix manpage path
The generated home-configuration manpage is not compressed, so point contributors at the file that docs.manPages actually creates.
2026-06-21 22:20:43 -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
6aaf73d18d docs: build manual with mdbook
Switch the HTML manual renderer to mdBook while preserving existing docs package outputs and legacy redirect paths.
2026-06-19 10:00:25 -05:00
Austin Horstman
0043376f4e docs: clarify module contribution guidance
Document reviewer expectations for new modules so contributors can align option design, news, test organization, and commit structure before review.
2026-06-19 10:00:10 -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
Peter Bittner
c51ac59e59 uv: manage Python versions and tools
Add programs.uv.python.{versions,default,prune} and
programs.uv.tool.{packages,prune} to install uv-managed Python versions
and tools during activation.

Install requests are passed verbatim to uv. Unpinned entries track the
latest release on each activation while pinned ones stay put: Python
requests without a patch component are installed with `uv python install
--upgrade` (exact patches, which uv refuses to upgrade, get a plain
install), and tools are refreshed with `uv tool upgrade <packages>`
scoped to the configured list. Both upgrades are scoped to the managed
entries, so installs Home Manager does not own are left untouched. prune
makes a set declarative by running `uv ... uninstall --all` before
reinstalling the listed entries.

The activation blocks run after linkGeneration so uv sees the freshly
linked uv.toml, and a null programs.uv.package is rejected once the
module emits activation commands.
2026-06-17 15:47:24 -05:00
Austin Horstman
bb68a1a2e7 docs: add release notes contributing guidance 2026-06-11 09:05:37 -05:00
Austin Horstman
2b394beca7 docs: fix sshAuthSock reference in rl-2605
The link to `#opt-sshAuthSock.enable` broke the manual build on
release-26.05, where the `enable` option does not exist. Drop the
broken reference and the inaccurate "enabled and" wording.
2026-06-10 13:05:30 -05:00
Austin Horstman
c30f177760 docs: update release notes for 26.05
Lots of missing information about major changes throughout the last
release.
2026-06-09 22:44:48 -05:00
Austin Horstman
408a6918a0 docs: advise contributors to generate module news entries
The news section told module contributors they did not need to add a
news entry because the merger would create one, contradicting the
earlier instruction to use the create-news-entry generator. Point
contributors at the generator so new modules ship with their own entry.
2026-06-09 16:40:46 -05:00
Austin Horstman
7d8127d308 flake: track nixpkgs-unstable 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
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
acd9d8af2f hyprland: migrate settings to native lua option API 2026-05-13 16:13:28 -05:00
cinereal
fdb2ccba9d modular-services: document ghostunnel as a service that was not written for use as a user-level service
Signed-off-by: cinereal <cinereal@riseup.net>
2026-05-08 15:56:35 +02:00
cinereal
67625b8c31 modular-services: add php-fpm as a service meant to run as a user
Signed-off-by: cinereal <cinereal@riseup.net>
2026-05-08 15:56:35 +02:00
cinereal
4fa2493b30 modular-services: add config files to X-Reload-Triggers
Assisted-by: Claude:claude-sonnet-4-7

Signed-off-by: cinereal <cinereal@riseup.net>
2026-05-08 15:56:35 +02:00
cinereal
1aabcdd470 modular-services: simple example using mpd
Signed-off-by: cinereal <cinereal@riseup.net>
2026-05-08 15:56:35 +02:00
cinereal
f77079ee8a modular-services: rename system-services -> home-services
Signed-off-by: cinereal <cinereal@riseup.net>
2026-05-08 15:56:35 +02:00
cinereal
cdea7d89f5 modular-services: rename home-manager -> Home Manager
Signed-off-by: cinereal <cinereal@riseup.net>
2026-05-08 15:56:35 +02:00
cinereal
7eb987d1a4 manual: fix link in modular services section
Signed-off-by: cinereal <cinereal@riseup.net>
2026-05-08 15:56:35 +02:00
Esteve Fernandez
5be632dab0 gpu: use tmpfiles.d to set up the /run/opengl-driver symlink
Signed-off-by: Esteve Fernandez <esteve@apache.org>
2026-05-05 12:30:44 +02:00