{lib}: { ## Quickly enable an option. ## ## ```nix ## services.nginx = enabled; ## ``` ## #@ true enabled = { enable = true; }; ## Quickly disable an option. ## ## ```nix ## services.nginx = enabled; ## ``` ## #@ false disabled = { enable = false; }; ## Like lib.mkEnableOption, but allows specifying the default. ## ## ```nix ## options.marleyos.wayland = mkEnableOption' "wayland" false; ## ``` mkEnableOption' = name: default: lib.mkOption { inherit default; example = true; description = if name ? _type && name._type == "mdDoc" then lib.mdDoc "Whether to enable ${name.text}." else "Whether to enable ${name}."; type = lib.types.bool; }; ## Like lib.mkDefault, but uses lib.mapAttrsRecursive to apply mkDefault to ## every attr in the set. ## ## ```nix ## starship.settings.username = mkDefault' { ## enabled = true; ## show_always = false; ## }; ## ``` ## is equivalent to: ## ```nix ## starship.settings.username = { ## enabled = mkDefault true; ## show_always = mkDefault false; ## }; ## ``` mkDefault' = set: lib.mapAttrsRecursive (_: value: lib.mkDefault value) set; }