1180 Commits

Author SHA1 Message Date
XYenon
c58f54c733 herdr: add opt-in mutable settings
Herdr writes settings changes back to config.toml, which a read-only Nix store link prevents.

Add opt-in mutableSettings using the shared merger and cleanup helpers. Preserve undeclared settings, reload Herdr after merging, and keep immutable settings as the default.

Cover generated TOML, activation ordering, custom XDG paths, empty and disabled configurations, and nullable package handling.
2026-10-10 09:23:11 -05:00
Austin Horstman
fae6e9e42c treewide: standardize mutable configuration option names
Use mutableSettings for Mise and Vicinae, and mutableSnippets for Pet.
These controls follow the same naming pattern as existing mutable options,
regardless of whether configuration uses merging or a read-only layer.

Keep Mise's existing name as a deprecated alias. Rename the freshly
introduced Pet and Vicinae options directly before the next stable
release, and update their tests and user-facing documentation. Defaults
and configuration behavior remain unchanged.
2026-10-06 12:16:19 -05:00
Austin Horstman
0e11b7bcba antigravity-cli: add opt-in mutable native settings
Keep native settings and MCP configuration writable while applying
declared values. Treat unspecified permission lists as absent in mutable
native mode so activation does not reset undeclared application choices.
Explicit lists, including empty lists, replace saved lists. Keep
immutable and legacy defaults unchanged.
2026-10-06 08:31:40 -05:00
Austin Horstman
aa23f720d0 vicinae: drop support for legacy configuration formats
Nixpkgs 26.05 already ships Vicinae with the modern configuration formats, so retaining compatibility with the previous release no longer needs the pre-0.17 paths.

Require Vicinae 0.17.0 or later, remove legacy JSON themes and layer-shell environment handling, and direct useLayerShell users to the native setting. Keep the separate 0.20.6 requirement for mutable configuration.
2026-10-05 14:11:20 -05:00
Austin Horstman
88fcb33b16 vicinae: add an override layer for mutable settings
Apply declarations through the native overrides layer while leaving user
settings writable. Respect effective file targets and quote service
environment assignments so paths containing spaces or percent signs
reach the daemon unchanged.
2026-10-05 14:11:20 -05:00
Austin Horstman
f53f3267f5 pet: add a declarative snippet layer
Load declared snippets through the native read-only snippet layer while
leaving user snippets writable. Initialize a missing user file without
replacing existing contents, and keep the default snippet arrangement.
2026-10-04 20:17:58 -05:00
Austin Horstman
e090a36ef0 algia: add opt-in mutable settings
Keep application settings writable while applying declared values.
Restore unchanged immutable links through the shared helper and keep
private-key management explicit.
2026-10-04 20:17:54 -05:00
Austin Horstman
4143d156c0 andcli: add opt-in mutable settings
Keep the application configuration writable while applying declared
settings. Preserve undeclared state and use ordinary collision handling
when returning to linked YAML configuration.
2026-10-04 20:17:49 -05:00
Austin Horstman
0b5c5f1672 alistral: add opt-in mutable settings
Keep credentials and application configuration writable while applying
declared values. Seed the required token map and use the same Linux XDG
path in both modes, preserving the macOS location and existing home.file
overrides. Restore byte-identical files before linking read-only settings.
2026-10-04 20:17:45 -05:00
Austin Horstman
4e3d5236ae cudatext: add opt-in mutable settings
Preserve interactive settings and keymaps while applying declarations
during activation. Parse existing commented JSON using the packaged
reader and keep the default file ownership.
2026-10-04 20:17:41 -05:00
Austin Horstman
9a04ebebeb claude-code: add opt-in mutable settings
Keep user settings and marketplace registrations writable while applying
declared values. Seed required marketplace metadata only where missing,
preserving saved timestamps and update flags. Retain the immutable
default.
2026-10-04 20:17:31 -05:00
nyxar77
6807ee9587 readest: add module 2026-10-04 17:42:50 -05:00
Austin Horstman
d2f65d77f7 github-copilot-cli: clarify mutable transitions and cover ownership
Check effective file overrides, trust-state parsing, and custom paths without changing the opt-in default. Describe byte-identical relinking accurately during the filename migration.
2026-10-04 09:16:29 -05:00
Austin Horstman
2547d39701 github-copilot-cli: add trustedFolders option
Copilot CLI ignores trusted folders in settings.json and keeps them in
config.json, its own state file that also holds login and plugin
state. The module therefore left them out of settings.json, which left
no declarative way to trust folders.

Add a trustedFolders option that merges the declared folders into
config.json's trustedFolders list at activation. Only that key is
changed: folders trusted from inside Copilot CLI are kept, and removing
a folder from Nix does not untrust it. config.json is read as JSON5
because Copilot CLI starts it with a comment header, and a new file is
created with mode 600 as Copilot CLI does. The warning for the old
settings keys now points to the new option.
2026-10-04 09:16:29 -05:00
Austin Horstman
fafaa4d767 github-copilot-cli: add mutableSettings option
Copilot CLI replaces settings.json when it saves a setting, for example
after changing the model or theme from inside the CLI. With a linked
file that replaces the link, and the next activation reports a
collision.

Add an opt-in mutableSettings option that merges the declared settings
into a writable settings.json after linkGeneration with
mkImpureConfigMerger instead of linking it. Existing files are read as
JSON5, since Copilot CLI accepts comments there. Declared values take
precedence, keys later removed from the settings stay in the file, and
comments and formatting are not preserved. The default still links the
file.

Turning the option off links the file again. mkImpureConfigCleanup
removes a merged copy Copilot CLI has not changed so the link can
replace it; a changed one is reported as a collision.

Mention the option in the news entry and release note as the way to
keep a settings.json Copilot CLI already wrote.
2026-10-04 09:16:29 -05:00
Austin Horstman
5d3e8eea68 github-copilot-cli: write settings to settings.json
Since Copilot CLI 1.0.35, user settings live in settings.json and
config.json holds internal state. On startup, 1.0.88 moves user keys
out of a Home Manager config.json into settings.json and rewrites
config.json as a regular file, replacing the link, so the next switch
collides on config.json.

Link the declared settings as settings.json instead and stop managing
config.json, including the firstLaunchAt workaround that only existed
for it. A read-only settings.json link survives startup; Copilot CLI
replaces it only when it saves a setting.

Copilot CLI drops trusted_folders from settings.json and moves
trustedFolders into its own state in config.json, rewriting
settings.json and so replacing a linked file. Leave both keys out of
the file, warn when either is set, and do not manage the file when
they are the only settings. Document the canonical allowedUrls and
deniedUrls names.

The old config.json link is removed by linkGeneration when it still
points into a generation; a regular file left by Copilot CLI stays for
it to manage. The news entry and release note tell users whose Copilot
CLI already wrote a regular settings.json to remove it before
switching, since the new link would collide with it.
2026-10-04 09:16:29 -05:00
Austin Horstman
f5a36d3f98 plex-mpv-shim: add mutableSettings option
Plex mpv shim writes conf.json when it loads settings and whenever a
setting changes from its menu or a Plex remote. A store-linked
configuration makes those writes fail and loses the generated client
UUID across restarts.

Add an opt-in mutableSettings option that merges the declared settings
into a writable conf.json after linkGeneration instead, keeping keys
the application writes. The application keeps its settings in memory
and saves all of them, so a running instance would write old values
back over the merge; in this mode the service restarts when the
declared settings change, and the merge is ordered before
reloadSystemd so the restarted service reads it. The option
description notes the short window before that restart and that
turning the option off again collides with the writable file. The
default keeps linking the file from the Nix store, so existing
configurations are unchanged. Also correct the file name in the
settings description, which said config.json.

Test what the module wires up in each mode: the linked file by
default, and in mutable mode the merge placement, its target, the
generated settings, and the restart trigger; enabling the option with
empty settings changes nothing. The merge itself is covered by the
helper's tests. Announce the option.
2026-10-04 08:31:39 -05:00
Aly Raffauf
acd21c5a34 codex: add mutable settings option
Merge declared settings into writable TOML files with mkImpureConfigMerger. Preserve user settings and support transitions between mutable and immutable configurations.

Co-authored-by: Austin Horstman <khaneliman12@gmail.com>
2026-10-02 20:00:54 -05:00
PierreBorine
d85475546a hyprscratch: add module 2026-10-01 14:30:51 -05:00
Dom Rodriguez
11baf09bcf news: add home.backup* options entry
Assisted-by: Claude <noreply@anthropic.com>
2026-09-30 20:54:52 -05:00
PierreBorine
6f6cf27e57 anyrun: update configuration for current upstream 2026-09-30 16:13:23 -05:00
PierreBorine
a518a57cea anyrun: add configurable navigation keybinds 2026-09-30 16:13:23 -05:00
PierreBorine
6c345ffde0 anyrun: add extra configuration lines 2026-09-30 16:13:23 -05:00
PierreBorine
fdcb4a9fd8 anyrun: add systemd user daemon 2026-09-30 16:13:23 -05:00
hectorgray
cb2f28657d positron: add module 2026-09-30 15:26:17 -05:00
Clément DOUIN
7c0c726efe himalaya: bring v2 support 2026-09-30 13:08:34 -05:00
o-az
b75a0703c9 fnox: add module 2026-09-30 16:47:55 +02: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
d57552fd65 gtk: update the theme package examples
pkgs.gnome.gnome-themes-extra is a removed alias; the package is now
pkgs.gnome-themes-extra.
2026-09-25 13:02:11 -05:00
Austin Horstman
5880337093 xdg-portal: update the configPackages example
pkgs.gnome.gnome-session is a removed alias; the package is now
pkgs.gnome-session.
2026-09-25 13:02:11 -05:00
hectorgray
4b9add8645 xdg-mime-apps: add glob support 2026-09-24 18:24:37 -05:00
Olmo Kramer
f298114886 mpd-mpris: Make settings less confusing
Fixes #8000

The `mpd-mpris` module used different names for the options than
`mpd-mpris` itself, causing some confusion.

Additionally, this makes some more improvements in the module, largely
based on the upstream module [^1], which includes:

- Removing the `services.mpd-mpris.mpd` namespace, it did not serve any
  purpose. This also got rid of the `services.mpd-mpris.mpd.useLocal`
  option, just don't configure `host` to connect to the local instance.

- Removing the `password` option, it should have never gotten into this
  module because it will write the password to the world readable nix
  store. A new `password-file` option was added to replace it.

- Moving the settings to a new freeform submodule under the key
  `services.mpd-mpris.settings`.

- Replacing the `renderCmd` function with a use of `lib.cli.toCommandLine`.

While I diverged quite a bit from the upstream module, much credit for
these changes goes to @natsukagami!

[^1] 90c4264e58/nix/module.nix
2026-09-24 13:43:54 -05:00
mikaeladev
4900baf1e2 openlinkhub: add module 2026-09-23 23:50:10 -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
0a2d091b2c getmail: add per-account INI settings
Expose native filter, retriever, and destination configuration while
retaining account defaults and legacy boolean aliases. Preserve tuple
rendering and allow complete native retriever configuration without an
IMAP account block.
2026-09-21 12:08:57 -05:00
Austin Horstman
fae3c75896 joplin-desktop: skip empty configuration writes
Leave application-owned settings untouched when no effective settings
are configured. Keep activation merging for canonical and legacy values.
2026-09-21 09:53:13 -05:00
Austin Horstman
a3a247c583 joplin-desktop: use freeform JSON settings
Generate managed JSON from canonical settings while preserving legacy editor and sync conversions. Use the shared overlay helper for extraConfig priorities and effective-key detection.

Keep activation-time merging into the writable application file, including unmanaged settings and historical null and empty-string filtering.
2026-09-21 09:53:13 -05:00
Santhosh Raju
a26f7158fb yopass: add module
Adds programs.yopass for managing the yopass CLI configuration file
(~/.config/yopass/defaults.yml), with an NMT test verifying the
generated settings.

Assisted-by: Claude Fable 5
2026-09-21 10:07:57 +02:00
Rachit Kumar Verma
4ac5a2ae90 module/impala: TUI for managing wifi on Linux
impala v0.9.0 introduces a configuration file to configure impala.
2026-09-17 20:31:15 -05:00
y3
067bb9844c wbg: add module 2026-09-17 20:28:42 -05:00
Austin Horstman
f2785222a1 mpdris2: add freeform INI settings
Expose cover matching and notification settings without duplicating the
upstream schema. Preserve legacy options and MPD integration through
per-key migration helpers and retain path-valued music directories.
2026-09-17 08:36:15 -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
ac84366d68 rofi: generate configuration only when configured
Leave native defaults to Rofi instead of injecting location and offset
values. Preserve explicit legacy settings and theme selection, and omit
configuration files when no effective settings or theme are supplied.
2026-09-16 22:06:20 -05:00
Austin Horstman
452bb68b8a rofi: use freeform configuration settings
Generate the Rasi configuration block from merged native settings. Preserve legacy option conversions, overlay precedence, numeric defaults, and theme ordering.

Use the shared settings overlay helper for extraConfig forwarding and key detection. Keep package integration and the existing serializer unchanged.
2026-09-16 22:06:20 -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
zowoq
cda90fd883 targets.darwin: fix alias in news 2026-09-14 18:55:17 -05:00
ckgxrg
87b3c74df0 linux-wallpaperengine: fix location of arguments 2026-09-13 12:29:30 -05:00
Drew Davis
7e3645c737 pnpm: init 2026-09-13 10:01:07 -05:00