From 92a37a127d76ecdc3b38d91ee1970eacf7ab8347 Mon Sep 17 00:00:00 2001 From: Grey Jones Date: Wed, 2 Sep 2026 01:58:38 +0100 Subject: [PATCH] mkStandardFeatureFlakeModule --- flake.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 {