mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-04-07 08:21:36 -04:00
feat(nix): add build-time configuration validation
Uses `pkgs.runCommand` in the home-manager module to parse and validate the generated config file prior to deployment, preventing broken setups.
This commit is contained in:
parent
ff9b8f00d2
commit
0a62fcb76f
1 changed files with 56 additions and 46 deletions
|
|
@ -211,21 +211,9 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable (
|
||||||
# Backwards compatibility warning for old string-based config
|
let
|
||||||
warnings = lib.optional (builtins.isString cfg.settings) ''
|
finalConfigText =
|
||||||
wayland.windowManager.mango.settings: Using a string for settings is deprecated.
|
|
||||||
Please migrate to the new structured attribute set format.
|
|
||||||
See the module documentation for examples, or use the 'extraConfig' option for raw config strings.
|
|
||||||
The old string format will be removed in a future release.
|
|
||||||
'';
|
|
||||||
|
|
||||||
home.packages = [ cfg.package ];
|
|
||||||
xdg.configFile = {
|
|
||||||
"mango/config.conf" =
|
|
||||||
lib.mkIf (cfg.settings != { } || cfg.extraConfig != "" || cfg.autostart_sh != "")
|
|
||||||
{
|
|
||||||
text =
|
|
||||||
# Support old string-based config during transition period
|
# Support old string-based config during transition period
|
||||||
(
|
(
|
||||||
if builtins.isString cfg.settings then
|
if builtins.isString cfg.settings then
|
||||||
|
|
@ -240,6 +228,27 @@ in
|
||||||
)
|
)
|
||||||
+ lib.optionalString (cfg.extraConfig != "") cfg.extraConfig
|
+ lib.optionalString (cfg.extraConfig != "") cfg.extraConfig
|
||||||
+ lib.optionalString (cfg.autostart_sh != "") "\nexec-once=~/.config/mango/autostart.sh\n";
|
+ lib.optionalString (cfg.autostart_sh != "") "\nexec-once=~/.config/mango/autostart.sh\n";
|
||||||
|
|
||||||
|
validatedConfig = pkgs.runCommand "mango-config.conf" { } ''
|
||||||
|
cp ${pkgs.writeText "mango-config.conf" finalConfigText} "$out"
|
||||||
|
${cfg.package}/bin/mango -c "$out" -p || exit 1
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# Backwards compatibility warning for old string-based config
|
||||||
|
warnings = lib.optional (builtins.isString cfg.settings) ''
|
||||||
|
wayland.windowManager.mango.settings: Using a string for settings is deprecated.
|
||||||
|
Please migrate to the new structured attribute set format.
|
||||||
|
See the module documentation for examples, or use the 'extraConfig' option for raw config strings.
|
||||||
|
The old string format will be removed in a future release.
|
||||||
|
'';
|
||||||
|
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
xdg.configFile = {
|
||||||
|
"mango/config.conf" =
|
||||||
|
lib.mkIf (cfg.settings != { } || cfg.extraConfig != "" || cfg.autostart_sh != "")
|
||||||
|
{
|
||||||
|
source = validatedConfig;
|
||||||
};
|
};
|
||||||
"mango/autostart.sh" = lib.mkIf (cfg.autostart_sh != "") {
|
"mango/autostart.sh" = lib.mkIf (cfg.autostart_sh != "") {
|
||||||
source = autostart_sh;
|
source = autostart_sh;
|
||||||
|
|
@ -259,5 +268,6 @@ in
|
||||||
Before = lib.optional cfg.systemd.xdgAutostart "xdg-desktop-autostart.target";
|
Before = lib.optional cfg.systemd.xdgAutostart "xdg-desktop-autostart.target";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue