The zsh value renderer emits strings in double quotes so session variables can still expand references such as $HOME. Embedded quotes, backslashes, and backticks were not escaped, which could corrupt generated zsh code or trigger command substitution.
Escape those double-quote-sensitive characters while preserving dollar expansion for existing session-variable semantics.
I do not use kanshi anymore and thus cannot meaningfully test changes.
Since it is my only maintained module, also remove myself from the
maintainer lists.
Document how Home Manager handles activation-time file collisions in the usage manual, including standalone backup flags, NixOS and nix-darwin module options, per-file force handling, recursive directory behavior, and out-of-store symlink sources.
Also clarify the home.file-style ignorelinks option description so recursive symlink behavior is easier to understand from the generated option docs.
Allow boolean values in sessionVariables for Home Manager shell modules and serialize them consistently in generated session files.
- modules/lib/shell: stringify boolean values using lib.boolToString in export helper
- modules/home-environment, programs.bash, programs.zsh: include lib.types.bool in sessionVariables option type
- tests: add IS_TRUE/IS_FALSE assertions in home-environment, bash, and zsh session-variables tests
Some applications consider environment variables to be “true” simply if
they are set. Previously it was not possible to have a var set and later
override (e.g. with `lib.mkForce`) to *unset* it. This makes that
possible. The filtering must be done in the `exportAll` as attempting to
do it in the option’s `apply` causing infinite recursion (likely why it
is `lazyAttrsOf`).
Setting `core.pager` may result in issues like swallowed `git grep` results.
To avoid this, apply pagers to specific commands where we expect `diff`-ish output only.
Use a common helper to set pager for all modules that configure it.
This change converts redundant attribute assignments of the form `a =
a;` or `a = someSet.a;` into cleaner `inherit` statements. This reduces
verbosity and follows common Nix style for bringing attributes into
scope.
Statix Codes: W03 (manual_inherit), W04 (manual_inherit_from)
Also include statix and the rule in our configuration.
Extend mkStateVersionOptionDefault so merged attrset callers can defer
warning emission to config.warnings while still exposing the effective
state-version default and option priority metadata.
Add dedicated lib tests for deferred warning behavior on both legacy and
current state versions.
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
Add a helper for options whose defaults change across home.stateVersion boundaries. This centralizes the warning text and documentation shape so modules do not need to hand-roll the same migration pattern at each call site.
The helper takes legacy and current branches with a runtime value plus optional static documentation text. That keeps the actual default version-gated while avoiding option docs that depend on evaluated config. Add a focused test covering the legacy warning path, the new-value path, and an explicit legacy pin that should not warn.
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
Upstream change is validating all maintainers against lib.maintainers,
need to merge our maintainer list in to pass doc building.
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
Adds support for
section = [
"abc"
{ a = 123; }
];
Which gets generated to
section=abc
section {
a=123
}
This is very useful with the new windowrule syntax, where you can
create anonymous window rules as strings and named rules as attribute
sets. See <https://wiki.hypr.land/Configuring/Window-Rules/>.