diff --git a/modules/programs/aerospace.nix b/modules/programs/aerospace.nix index b0dc9b72..3a8df958 100644 --- a/modules/programs/aerospace.nix +++ b/modules/programs/aerospace.nix @@ -5,27 +5,29 @@ let tomlFormat = pkgs.formats.toml { }; - filterAttrsRecursive = pred: set: + # filterAttrsRecursive supporting lists, as well. + filterListAndAttrsRecursive = pred: set: lib.listToAttrs (lib.concatMap (name: let v = set.${name}; in if pred v then [ (lib.nameValuePair name (if lib.isAttrs v then - filterAttrsRecursive pred v + filterListAndAttrsRecursive pred v else if lib.isList v then - (map (i: if lib.isAttrs i then filterAttrsRecursive pred i else i) + (map (i: + if lib.isAttrs i then filterListAndAttrsRecursive pred i else i) (lib.filter pred v)) else v)) ] else [ ]) (lib.attrNames set)); - filterNulls = filterAttrsRecursive (v: v != null); + filterNulls = filterListAndAttrsRecursive (v: v != null); in { meta.maintainers = with lib.hm.maintainers; [ damidoug ]; options.programs.aerospace = { - enable = lib.mkEnableOption "Whether to enable AeroSpace window manager."; + enable = lib.mkEnableOption "enable AeroSpace window manager"; package = lib.mkPackageOption pkgs "aerospace" { }; @@ -216,16 +218,22 @@ in { ''; description = '' AeroSpace configuration, see - + for supported values. ''; }; }; - config.home = lib.mkIf cfg.enable { - packages = [ cfg.package ]; - file.".config/aerospace/aerospace.toml".source = - tomlFormat.generate "aerospace" (filterNulls cfg.userSettings); - }; + config = lib.mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "programs.aerospace" pkgs + lib.platforms.darwin) + ]; + home = { + packages = [ cfg.package ]; + file.".config/aerospace/aerospace.toml".source = + tomlFormat.generate "aerospace" (filterNulls cfg.userSettings); + }; + }; }