mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 11:36:05 +01:00
launchd+targets/darwin: Escape XML in plists (#7356)
This patch updates all usage of toPlist such that it escapes any strings in the final output. The motication for this change is to avoid confusion when end-users of home-manager's APIs are not aware that the option values they set end up being passed un-escaped to XML files. BREAKING CHANGE: Consumers doing manual escaping will now be doubly escaped. Co-authored-by: Linnnus <linnnus@users.noreply.github.com>
This commit is contained in:
parent
cc2fa2331a
commit
3ec1cd9a07
8 changed files with 35 additions and 4 deletions
|
|
@ -43,7 +43,7 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
toAgent = config: pkgs.writeText "${config.Label}.plist" (toPlist { } config);
|
||||
toAgent = config: pkgs.writeText "${config.Label}.plist" (toPlist { escape = true; } config);
|
||||
|
||||
agentPlists = lib.mapAttrs' (n: v: lib.nameValuePair "${v.config.Label}.plist" (toAgent v.config)) (
|
||||
lib.filterAttrs (n: v: v.enable) cfg.agents
|
||||
|
|
|
|||
|
|
@ -155,6 +155,18 @@ in
|
|||
This key maps to the second argument of `execvp(3)`. This key is required in the absence of the Program
|
||||
key. Please note: many people are confused by this key. Please read `execvp(3)` very carefully!
|
||||
'';
|
||||
# TODO: Remove this some time after 25.01.
|
||||
apply =
|
||||
value:
|
||||
if value != null then
|
||||
map (
|
||||
item:
|
||||
lib.warnIf (lib.hasInfix "&" item)
|
||||
"A value for `ProgramArguments` contains the literal string `&`. This is no longer necessary and will lead to double-escaping, as home-manager now automatically escapes special characters."
|
||||
item
|
||||
) value
|
||||
else
|
||||
value;
|
||||
};
|
||||
|
||||
EnableGlobbing = mkOption {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue