aerc: add assertion to limit per-account extraConfig to UI config#4196
aerc: add assertion to limit per-account extraConfig to UI config#4196ncfavier merged 2 commits intonix-community:masterfrom
Conversation
ncfavier
left a comment
There was a problem hiding this comment.
I don't know much about aerc, but it seems to me that if the only per-account configuration allowed is ui, then we should restrict the per-account extraConfig to that. Otherwise the other settings will basically end up in the global extraConfig, possibly causing conflicts.
So I would either add an assertion, or make the type of the per-account extraConfig a submodule with just an ui option.
|
For example: extraConfig = mkOption {
type = types.submodule {
options.ui = mkOption {
type = confSection;
description = "Per-account UI configuration...";
};
}; |
21b73e9 to
2f97933
Compare
|
So it seems like we need a default value for both As alternatives we could make it default to |
The aerc configuration file `aerc.conf` can contain 10 different sections, but only the UI section supports what the aerc manual calls contextual configuration. This works by appending to the section heading either `:account=name` or `:folder=bar`. The aerc-accounts module, however, applied `mkAccountConfig` to each section heading declared in `config.accounts.email.accounts.<name>.aerc.extraConfig.*`. This means home-manager will generate files with `[general:account=default]` and the options will not be recognized by aerc. To address this, and since it doesn't make sense for other sections to only be under a single account's scope, an assertion has been added to confirm that only sectons that support contextual config (i.e., only the UI section) is declared. This also addresses confusions like declaring `accounts.email.accounts.*.aerc.extraConfig.general.unsafe-accounts-conf = true` and triggering a warning message because `programs.aerc.extraConfig.general.unsafe-accounts-conf` was unset. This commit also updated documentation throughout the aerc modules to be in line with this change, and fixed minor typos/formatting therein. Co-authored-by: Genevieve <genevieve@sunlashed.garden>
|
OK, I've changed accounts.email.accounts.*.aerc.extraConfig I also think that as of before this PR, it was technically possible (although it seems unlikely) for a user to have something like (PS: I appreciate you guiding me through this process!) |
|
I ran the test suite again and I think one could also fix the issue and keep it as a submodule by doing something like without needing any assertions. (Defaulting to null causes some issues because the INI generator wants to recurse through the values). But then, there would just be this odd-one-out section, which doesn't feel great. |
|
Silently discarding non- |
This commit adds a test case to check both the warning on unset `unsafe-accounts-conf = true` when aerc accounts are configured with Nix, and the new assertion when per-account configuration contains unsupported subsections (i.e. general). It also fixes minor formatting issues and typos.
…x-community#4196) * aerc: fix per-account extraConfig section names The aerc configuration file `aerc.conf` can contain 10 different sections, but only the UI section supports what the aerc manual calls contextual configuration. This works by appending to the section heading either `:account=name` or `:folder=bar`. The aerc-accounts module, however, applied `mkAccountConfig` to each section heading declared in `config.accounts.email.accounts.<name>.aerc.extraConfig.*`. This means home-manager will generate files with `[general:account=default]` and the options will not be recognized by aerc. To address this, and since it doesn't make sense for other sections to only be under a single account's scope, an assertion has been added to confirm that only sectons that support contextual config (i.e., only the UI section) is declared. This also addresses confusions like declaring `accounts.email.accounts.*.aerc.extraConfig.general.unsafe-accounts-conf = true` and triggering a warning message because `programs.aerc.extraConfig.general.unsafe-accounts-conf` was unset. This commit also updated documentation throughout the aerc modules to be in line with this change, and fixed minor typos/formatting therein. Co-authored-by: Genevieve <genevieve@sunlashed.garden> * aerc: make assertion plaintext and add test case This commit adds a test case to check both the warning on unset `unsafe-accounts-conf = true` when aerc accounts are configured with Nix, and the new assertion when per-account configuration contains unsupported subsections (i.e. general). It also fixes minor formatting issues and typos.
* upstream/master: (352 commits) flake.lock: Update qcal: add module bat: generate cache file in XDG cache home nixos: only refer to `users.users` if needed home-cursor: remove IFD when linking icon directories flake.lock: Update home-cursor: improve icon compatibility fix(qt): allow theming for apps started by systemd (nix-community#4349) flake.lock: Update fcitx5: add `fcitx5-config-qt` to test stub pqiv: only run tests on Linux platforms pqiv: add module Translate using Weblate (German) xplr: add module browserpass: support librewolf Translate using Weblate (Romanian) Translate using Weblate (Portuguese (Brazil)) hyprland: remove xwayland.hidpi (nix-community#4302) home-manager: handle profile list in Nix >2.17 lf: simplify option validation (nix-community#4334) programs.khal: uncomment locale config (nix-community#4319) kanshi: support adaptive sync (nix-community#4328) mu: add package option (nix-community#4325) modules: types.string throws error now (nix-community#4324) taffybar: Avoid restarting too quickly (nix-community#4316) aerc: do not use smtp-starttls (nix-community#4272) zsh: Add `zsh.history.ignoreAllDups` config option (nix-community#4248) jujutsu: fix zsh completion (nix-community#4305) Translate using Weblate (Korean) Translate using Weblate (Romanian) Translate using Weblate (German) flake.lock: Update network-manager-applet: remove `--sm-disable` flag himalaya: update a link to ticket nushell: deprecation of let-env (nix-community#4292) man: fix caches generation in cross-compiled system (nix-community#4294) fish: fix session vars build in cross-compiled system (nix-community#4293) Update translation files Translate using Weblate (Chinese (Simplified)) gh: option to enable helper for additional hosts (nix-community#4288) home-manager: rework news command home-manager: skip manual in uninstall configuration gnome-terminal: add assertion on profile names hyprland: use `toKeyValue`'s `indent` argument (nix-community#4274) gpg: fix typo (nix-community#4277) firefox: make package nullable (nix-community#4113) git-sync: add news entry for darwin tmate: don't generate empty config file (nix-community#4271) gh-dash: add module git-sync: add darwin support flake.lock: Update hyprland: prioritize variables and beziers (nix-community#4263) hyprland: add module script-directory: fix documentation link (nix-community#4258) Translate using Weblate (Indonesian) Translate using Weblate (Ukrainian) Translate using Weblate (Spanish) Translate using Weblate (Swedish) docs: hide `_module.*` from NixOS/nix-darwin docs jujutsu: update for Jujutsu 0.8.0 (nix-community#4250) ripgrep: don't set env. variable if no config (nix-community#4254) docs: update for Markdown migration treewide: remove now-redundant `lib.mdDoc` calls docs: clean up after Markdown migration flake: remove temporary nixpkgs pin treewide: convert all option docs to Markdown treewide: adjust some DocBook for conversion treewide: `mkAliasOption` -> `mkAliasOptionMD` treewide: `mkPackageOption` -> `mkPackageOptionMD` treewide: convert options with tables to Markdown treewide: convert options with lists to Markdown treewide: convert custom `enable` docs to Markdown treewide: convert parameterized docs to Markdown treewide: manually convert some docs to Markdown treewide: fix `mkEnableOption` arguments treewide: add missing option descriptions docs: use `nixosOptionsDoc` flake: temporarily pin nixpkgs version version: add `isReleaseBranch` manual: add test Update translation files flake.lock: Update home-manager: remove Home Manager default paths imapnotify: Use JSON type for extraConfig (nix-community#4238) Translate using Weblate (French) zsh: fix custom syntax highlighting styles (nix-community#4236) i3-sway: allow arbitrary floating modifier (nix-community#4229) i3-sway: multiple outputs (nix-community#4223) home-cursor.nix: enable gtk module when enabling gtk config generation (nix-community#4144) aerc: add assertion to limit per-account extraConfig to UI config (nix-community#4196) flake.lock: Update ssh-agent: add assertion and fix news entry (nix-community#4210) imapnotify: move test imapnotify: use direct nix store path for config flake.lock: Update nushell: add login.nu configuration option himalaya: fix notmuch backend swayosd: add module pyenv: add module darcs: add module tests: some minor cleanups goimapnotify: remove test dependency on notmuch unison: Allow using same option multiple times (nix-community#4208) imapnotify: Add launchd agent (nix-community#3291) i3: remove deprecated example in i3.config.startup (nix-community#4201) antidote: static file move to /tmp Translate using Weblate (Indonesian) PULL_REQUEST_TEMPLATE.md: add maintainer cc section (nix-community#4193) programs.khal vdirsyncer: synchronize metadata as well (nix-community#4167) i18n: Use glibcLocales from NixOS if possible (nix-community#2333) (nix-community#4177) xfconf: remove properties with null values (nix-community#4192) home-manager: Use `path:` URI type for flake default (nix-community#3646) ci: autolabel calendars PRs (nix-community#4165) flake.lock: Update (nix-community#4161) news: fix typo in programs.zsh.antidote entry ssh-agent: init module (nix-community#4178) chromium: fix `commandLineArgs` to use the user specified package (nix-community#4175) sxhkd: allow usage of derivations as keybind commands (nix-community#4169) README: Remove the pills (nix-community#4181) lsd: use -A instead of -a in aliases (nix-community#4173) kakoune: add defaultEditor option docs: update link to allowed users setting (nix-community#4176) zsh: allow setting custom syntax highlighting styles (nix-community#4122) flake: add formatter (nix-community#3620) broot: fix test (nix-community#4170) antidote: fix .dot path ci: build manual and push to home-manager.dev ...
Description
The aerc configuration file
aerc.confcan contain 10 sections, but only the UI section supports what the aerc manual calls contextual configuration. This works by appending to the section heading either:account=nameor:folder=bar. It's supported inconfig.accounts.email.accounts.<name>.aerc.extraConfig.*.*, as the aerc-accounts module applies afunction to add
<name>to section headings.However, this means home-manager will generate files like:
and the options will not be recognized by aerc.
This change only adds the account name to the UI section by adding a
attrsets.filterAttrscheck tomkAccountConfig. This could be confusing if a user only wants to apply their configuration to one account, and a possible alternative could be to change this option to something likeconfig.accounts.email.accounts.<name>.aerc.uiConfig.*.The error message about setting
unsafe-accounts-conf = truehas also been updated, to clarify it should be setin the global
programs.aerc.extraConfigsection.Checklist
Change is backwards compatible.
Code formatted with
./format.Code tested through
nix-shell --pure tests -A run.allornix develop --ignore-environment .#allusing Flakes.Test cases updated/added. See example.
Commit messages are formatted