61 lines
1.1 KiB
Nix
61 lines
1.1 KiB
Nix
{ lib, namespace, ... }:
|
|
with lib;
|
|
rec {
|
|
## Create a module option with only an enable option.
|
|
## ```nix
|
|
## options = lib.mkEnableModule "module-name"
|
|
## ```
|
|
##
|
|
#@ String
|
|
mkEnableModule = name: {
|
|
${namespace}.${name}.enable = mkEnableModule "${name}";
|
|
};
|
|
|
|
## Create a NixOS module option.
|
|
##
|
|
## ```nix
|
|
## lib.mkOpt nixpkgs.lib.types.str "My default" "Description of my option."
|
|
## ```
|
|
##
|
|
#@ Type -> Any -> String
|
|
mkOpt =
|
|
type: default: description:
|
|
mkOption {
|
|
inherit
|
|
type
|
|
default
|
|
description
|
|
;
|
|
};
|
|
|
|
## Create a boolean NixOS module option.
|
|
##
|
|
## ```nix
|
|
## lib.mkBoolOpt true "Description of my option."
|
|
## ```
|
|
##
|
|
#@ Type -> Any -> String
|
|
mkBoolOpt = mkOpt types.bool;
|
|
|
|
enabled = {
|
|
## Quickly enable an option.
|
|
##
|
|
## ```nix
|
|
## services.nginx = enabled;
|
|
## ```
|
|
##
|
|
#@ true
|
|
enable = true;
|
|
};
|
|
|
|
disabled = {
|
|
## Quickly disable an option.
|
|
##
|
|
## ```nix
|
|
## services.nginx = enabled;
|
|
## ```
|
|
##
|
|
#@ false
|
|
enable = false;
|
|
};
|
|
}
|