diff --git a/flake.nix b/flake.nix index c16669d..1f1252e 100644 --- a/flake.nix +++ b/flake.nix @@ -51,6 +51,22 @@ flake.homeModules.${moduleName} = func; }; + mkStandardFeatureFlakeModule = moduleName: { optionName, optionDefinition, systemConfig, homeConfig }: { + imports = [ (mkMirroredModulesFlakeModule "${moduleName}Options" ({ lib, ... }: { + options.${optionName} = optionDefinition; + })) ]; + + flake.nixosModules.${moduleName} = { lib, config, ... }: { + config = lib.mkIf (config.${optionName}) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.${config.info.userName}.${optionName} = lib.mkDefault true; + } systemConfig); + }; + + flake.homeModules.${moduleName} = { lib, config, ... }: { + config = lib.mkIf (config.${optionName}) homeConfig; + }; + }; + mkRedundantOptionDescription = name: value: "The functionality of this option completely depends on `${name}` being `${value}`, and will not be evaluated otherwise."; mkRedundantOption = name: value: attrs: lib.mkOption {