summary refs log tree commit diff
path: root/lib/options.nix
diff options
context:
space:
mode:
authorTobias Pflug <tobias.pflug@holidaycheck.com>2017-10-30 18:12:49 +0100
committerRobert Hensing <robert@roberthensing.nl>2018-10-02 22:05:57 +0200
commitd5166027e26460cce63d0f1540c5142176c9acff (patch)
tree6c0a6142b39866d104c9b537eb4cd6804b62e59b /lib/options.nix
parent1643967b8dc3d0d618a9ebc960996bf807dbbf4c (diff)
downloadnixpkgs-d5166027e26460cce63d0f1540c5142176c9acff.tar
nixpkgs-d5166027e26460cce63d0f1540c5142176c9acff.tar.gz
nixpkgs-d5166027e26460cce63d0f1540c5142176c9acff.tar.bz2
nixpkgs-d5166027e26460cce63d0f1540c5142176c9acff.tar.lz
nixpkgs-d5166027e26460cce63d0f1540c5142176c9acff.tar.xz
nixpkgs-d5166027e26460cce63d0f1540c5142176c9acff.tar.zst
nixpkgs-d5166027e26460cce63d0f1540c5142176c9acff.zip
docs: lib/options.nix function documentation
Diffstat (limited to 'lib/options.nix')
-rw-r--r--lib/options.nix39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/options.nix b/lib/options.nix
index 01160b48ec0..0e342117530 100644
--- a/lib/options.nix
+++ b/lib/options.nix
@@ -8,7 +8,31 @@ with lib.strings;
 
 rec {
 
+  # Returns true when the given argument is an option
+  #
+  # Examples:
+  #   isOption 1             // => false
+  #   isOption (mkOption {}) // => true
   isOption = lib.isType "option";
+
+  # Creates an Option attribute set. mkOption accepts an attribute set with the following keys:
+  #
+  #  default:     Default value used when no definition is given in the configuration.
+  #  defaultText: Textual representation of the default, for in the manual.
+  #  example:     Example value used in the manual.
+  #  description: String describing the option.
+  #  type:        Option type, providing type-checking and value merging.
+  #  apply:       Function that converts the option value to something else.
+  #  internal:    Whether the option is for NixOS developers only.
+  #  visible:     Whether the option shows up in the manual.
+  #  readOnly:    Whether the option can be set only once
+  #  options:     Obsolete, used by types.optionSet.
+  #
+  # All keys default to `null` when not given.
+  #
+  # Examples:
+  #   mkOption { }  // => { _type = "option"; }
+  #   mkOption { defaultText = "foo"; } // => { _type = "option"; defaultText = "foo"; }
   mkOption =
     { default ? null # Default value used when no definition is given in the configuration.
     , defaultText ? null # Textual representation of the default, for in the manual.
@@ -24,6 +48,10 @@ rec {
     } @ attrs:
     attrs // { _type = "option"; };
 
+  # Creates a Option attribute set for a boolean value option i.e an option to be toggled on or off:
+  #
+  # Examples:
+  #   mkEnableOption "foo" // => { _type = "option"; default = false; description = "Whether to enable foo."; example = true; type = { ... }; }
   mkEnableOption = name: mkOption {
     default = false;
     example = true;
@@ -74,7 +102,18 @@ rec {
       else
         val) (head defs).value defs;
 
+  # Extracts values of all "value" keys of the given list
+  #
+  # Examples:
+  #   getValues [ { value = 1; } { value = 2; } ] // => [ 1 2 ]
+  #   getValues [ ]                               // => [ ]
   getValues = map (x: x.value);
+
+  # Extracts values of all "file" keys of the given list
+  #
+  # Examples:
+  #   getFiles [ { file = "file1"; } { file = "file2"; } ] // => [ "file1" "file2" ]
+  #   getFiles [ ]                                         // => [ ]
   getFiles = map (x: x.file);
 
   # Generate documentation template from the list of option declaration like