marleyos/lib/module/default.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;
};
}