mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 21:50:33 +03:00
Merge master into staging-next
This commit is contained in:
commit
dbe312bfdb
957 changed files with 3298 additions and 3480 deletions
|
@ -31,6 +31,10 @@ function Code(elem)
|
||||||
tag = 'command'
|
tag = 'command'
|
||||||
elseif elem.attributes['role'] == 'option' then
|
elseif elem.attributes['role'] == 'option' then
|
||||||
tag = 'option'
|
tag = 'option'
|
||||||
|
elseif elem.attributes['role'] == 'var' then
|
||||||
|
tag = 'varname'
|
||||||
|
elseif elem.attributes['role'] == 'env' then
|
||||||
|
tag = 'envar'
|
||||||
end
|
end
|
||||||
|
|
||||||
if tag ~= nil then
|
if tag ~= nil then
|
||||||
|
|
|
@ -58,8 +58,10 @@ Additional syntax extensions are available, though not all extensions can be use
|
||||||
A few markups for other kinds of literals are also available:
|
A few markups for other kinds of literals are also available:
|
||||||
|
|
||||||
- `` {command}`rm -rfi` `` turns into {command}`rm -rfi`
|
- `` {command}`rm -rfi` `` turns into {command}`rm -rfi`
|
||||||
- `` {option}`networking.useDHCP` `` turns into {option}`networking.useDHCP`
|
- `` {env}`XDG_DATA_DIRS` `` turns into {env}`XDG_DATA_DIRS`
|
||||||
- `` {file}`/etc/passwd` `` turns into {file}`/etc/passwd`
|
- `` {file}`/etc/passwd` `` turns into {file}`/etc/passwd`
|
||||||
|
- `` {option}`networking.useDHCP` `` turns into {option}`networking.useDHCP`
|
||||||
|
- `` {var}`/etc/passwd` `` turns into {var}`/etc/passwd`
|
||||||
|
|
||||||
These literal kinds are used mostly in NixOS option documentation.
|
These literal kinds are used mostly in NixOS option documentation.
|
||||||
|
|
||||||
|
|
120
lib/modules.nix
120
lib/modules.nix
|
@ -163,84 +163,50 @@ rec {
|
||||||
# TODO: Change the type of this option to a submodule with a
|
# TODO: Change the type of this option to a submodule with a
|
||||||
# freeformType, so that individual arguments can be documented
|
# freeformType, so that individual arguments can be documented
|
||||||
# separately
|
# separately
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Additional arguments passed to each module in addition to ones
|
Additional arguments passed to each module in addition to ones
|
||||||
like <literal>lib</literal>, <literal>config</literal>,
|
like `lib`, `config`,
|
||||||
and <literal>pkgs</literal>, <literal>modulesPath</literal>.
|
and `pkgs`, `modulesPath`.
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
This option is also available to all submodules. Submodules do not
|
This option is also available to all submodules. Submodules do not
|
||||||
inherit args from their parent module, nor do they provide args to
|
inherit args from their parent module, nor do they provide args to
|
||||||
their parent module or sibling submodules. The sole exception to
|
their parent module or sibling submodules. The sole exception to
|
||||||
this is the argument <literal>name</literal> which is provided by
|
this is the argument `name` which is provided by
|
||||||
parent modules to a submodule and contains the attribute name
|
parent modules to a submodule and contains the attribute name
|
||||||
the submodule is bound to, or a unique generated name if it is
|
the submodule is bound to, or a unique generated name if it is
|
||||||
not bound to an attribute.
|
not bound to an attribute.
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
Some arguments are already passed by default, of which the
|
Some arguments are already passed by default, of which the
|
||||||
following <emphasis>cannot</emphasis> be changed with this option:
|
following *cannot* be changed with this option:
|
||||||
<itemizedlist>
|
- {var}`lib`: The nixpkgs library.
|
||||||
<listitem>
|
- {var}`config`: The results of all options after merging the values from all modules together.
|
||||||
<para>
|
- {var}`options`: The options declared in all modules.
|
||||||
<varname>lib</varname>: The nixpkgs library.
|
- {var}`specialArgs`: The `specialArgs` argument passed to `evalModules`.
|
||||||
</para>
|
- All attributes of {var}`specialArgs`
|
||||||
</listitem>
|
|
||||||
<listitem>
|
Whereas option values can generally depend on other option values
|
||||||
<para>
|
thanks to laziness, this does not apply to `imports`, which
|
||||||
<varname>config</varname>: The results of all options after merging the values from all modules together.
|
must be computed statically before anything else.
|
||||||
</para>
|
|
||||||
</listitem>
|
For this reason, callers of the module system can provide `specialArgs`
|
||||||
<listitem>
|
which are available during import resolution.
|
||||||
<para>
|
|
||||||
<varname>options</varname>: The options declared in all modules.
|
For NixOS, `specialArgs` includes
|
||||||
</para>
|
{var}`modulesPath`, which allows you to import
|
||||||
</listitem>
|
extra modules from the nixpkgs package tree without having to
|
||||||
<listitem>
|
somehow make the module aware of the location of the
|
||||||
<para>
|
`nixpkgs` or NixOS directories.
|
||||||
<varname>specialArgs</varname>: The <literal>specialArgs</literal> argument passed to <literal>evalModules</literal>.
|
```
|
||||||
</para>
|
{ modulesPath, ... }: {
|
||||||
</listitem>
|
imports = [
|
||||||
<listitem>
|
(modulesPath + "/profiles/minimal.nix")
|
||||||
<para>
|
];
|
||||||
All attributes of <varname>specialArgs</varname>
|
}
|
||||||
</para>
|
```
|
||||||
<para>
|
|
||||||
Whereas option values can generally depend on other option values
|
|
||||||
thanks to laziness, this does not apply to <literal>imports</literal>, which
|
|
||||||
must be computed statically before anything else.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
For this reason, callers of the module system can provide <literal>specialArgs</literal>
|
|
||||||
which are available during import resolution.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
For NixOS, <literal>specialArgs</literal> includes
|
|
||||||
<varname>modulesPath</varname>, which allows you to import
|
|
||||||
extra modules from the nixpkgs package tree without having to
|
|
||||||
somehow make the module aware of the location of the
|
|
||||||
<literal>nixpkgs</literal> or NixOS directories.
|
|
||||||
<programlisting>
|
|
||||||
{ modulesPath, ... }: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/profiles/minimal.nix")
|
|
||||||
];
|
|
||||||
}
|
|
||||||
</programlisting>
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
For NixOS, the default value for this option includes at least this argument:
|
For NixOS, the default value for this option includes at least this argument:
|
||||||
<itemizedlist>
|
- {var}`pkgs`: The nixpkgs package set according to
|
||||||
<listitem>
|
the {option}`nixpkgs.pkgs` option.
|
||||||
<para>
|
|
||||||
<varname>pkgs</varname>: The nixpkgs package set according to
|
|
||||||
the <option>nixpkgs.pkgs</option> option.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -248,21 +214,21 @@ rec {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
internal = true;
|
internal = true;
|
||||||
default = true;
|
default = true;
|
||||||
description = "Whether to check whether all option definitions have matching declarations.";
|
description = lib.mdDoc "Whether to check whether all option definitions have matching declarations.";
|
||||||
};
|
};
|
||||||
|
|
||||||
_module.freeformType = mkOption {
|
_module.freeformType = mkOption {
|
||||||
type = types.nullOr types.optionType;
|
type = types.nullOr types.optionType;
|
||||||
internal = true;
|
internal = true;
|
||||||
default = null;
|
default = null;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
If set, merge all definitions that don't have an associated option
|
If set, merge all definitions that don't have an associated option
|
||||||
together using this type. The result then gets combined with the
|
together using this type. The result then gets combined with the
|
||||||
values of all declared options to produce the final <literal>
|
values of all declared options to produce the final `
|
||||||
config</literal> value.
|
config` value.
|
||||||
|
|
||||||
If this is <literal>null</literal>, definitions without an option
|
If this is `null`, definitions without an option
|
||||||
will throw an error unless <option>_module.check</option> is
|
will throw an error unless {option}`_module.check` is
|
||||||
turned off.
|
turned off.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -270,7 +236,7 @@ rec {
|
||||||
_module.specialArgs = mkOption {
|
_module.specialArgs = mkOption {
|
||||||
readOnly = true;
|
readOnly = true;
|
||||||
internal = true;
|
internal = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Externally provided module arguments that can't be modified from
|
Externally provided module arguments that can't be modified from
|
||||||
within a configuration, but can be used in module imports.
|
within a configuration, but can be used in module imports.
|
||||||
'';
|
'';
|
||||||
|
@ -1169,7 +1135,7 @@ rec {
|
||||||
{
|
{
|
||||||
options = setAttrByPath from (mkOption {
|
options = setAttrByPath from (mkOption {
|
||||||
inherit visible;
|
inherit visible;
|
||||||
description = "Alias of <option>${showOption to}</option>.";
|
description = lib.mdDoc "Alias of {option}`${showOption to}`.";
|
||||||
apply = x: use (toOf config);
|
apply = x: use (toOf config);
|
||||||
} // optionalAttrs (toType != null) {
|
} // optionalAttrs (toType != null) {
|
||||||
type = toType;
|
type = toType;
|
||||||
|
|
|
@ -95,7 +95,10 @@ rec {
|
||||||
name: mkOption {
|
name: mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
example = true;
|
example = true;
|
||||||
description = "Whether to enable ${name}.";
|
description =
|
||||||
|
if name ? _type && name._type == "mdDoc"
|
||||||
|
then lib.mdDoc "Whether to enable ${name.text}."
|
||||||
|
else "Whether to enable ${name}.";
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -134,7 +137,7 @@ rec {
|
||||||
let default' = if !isList default then [ default ] else default;
|
let default' = if !isList default then [ default ] else default;
|
||||||
in mkOption {
|
in mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
description = "The ${name} package to use.";
|
description = lib.mdDoc "The ${name} package to use.";
|
||||||
default = attrByPath default'
|
default = attrByPath default'
|
||||||
(throw "${concatStringsSep "." default'} cannot be found in pkgs") pkgs;
|
(throw "${concatStringsSep "." default'} cannot be found in pkgs") pkgs;
|
||||||
defaultText = literalExpression ("pkgs." + concatStringsSep "." default');
|
defaultText = literalExpression ("pkgs." + concatStringsSep "." default');
|
||||||
|
|
|
@ -15130,4 +15130,14 @@
|
||||||
fingerprint = "1147 43F1 E707 6F3E 6F4B 2C96 B9A8 B592 F126 F8E8";
|
fingerprint = "1147 43F1 E707 6F3E 6F4B 2C96 B9A8 B592 F126 F8E8";
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
tjni = {
|
||||||
|
email = "43ngvg@masqt.com";
|
||||||
|
matrix = "@tni:matrix.org";
|
||||||
|
name = "Theodore Ni";
|
||||||
|
github = "tjni";
|
||||||
|
githubId = 3806110;
|
||||||
|
keys = [{
|
||||||
|
fingerprint = "4384 B8E1 299F C028 1641 7B8F EC30 EFBE FA7E 84A4";
|
||||||
|
}];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,10 @@ class Renderer(mistune.renderers.BaseRenderer):
|
||||||
return f"<option>{escape(text)}</option>"
|
return f"<option>{escape(text)}</option>"
|
||||||
def file(self, text):
|
def file(self, text):
|
||||||
return f"<filename>{escape(text)}</filename>"
|
return f"<filename>{escape(text)}</filename>"
|
||||||
|
def var(self, text):
|
||||||
|
return f"<varname>{escape(text)}</varname>"
|
||||||
|
def env(self, text):
|
||||||
|
return f"<envar>{escape(text)}</envar>"
|
||||||
def manpage(self, page, section):
|
def manpage(self, page, section):
|
||||||
title = f"<refentrytitle>{escape(page)}</refentrytitle>"
|
title = f"<refentrytitle>{escape(page)}</refentrytitle>"
|
||||||
vol = f"<manvolnum>{escape(section)}</manvolnum>"
|
vol = f"<manvolnum>{escape(section)}</manvolnum>"
|
||||||
|
@ -136,6 +140,20 @@ def p_file(md):
|
||||||
md.inline.register_rule('file', FILE_PATTERN, parse)
|
md.inline.register_rule('file', FILE_PATTERN, parse)
|
||||||
md.inline.rules.append('file')
|
md.inline.rules.append('file')
|
||||||
|
|
||||||
|
def p_var(md):
|
||||||
|
VAR_PATTERN = r'\{var\}`(.*?)`'
|
||||||
|
def parse(self, m, state):
|
||||||
|
return ('var', m.group(1))
|
||||||
|
md.inline.register_rule('var', VAR_PATTERN, parse)
|
||||||
|
md.inline.rules.append('var')
|
||||||
|
|
||||||
|
def p_env(md):
|
||||||
|
ENV_PATTERN = r'\{env\}`(.*?)`'
|
||||||
|
def parse(self, m, state):
|
||||||
|
return ('env', m.group(1))
|
||||||
|
md.inline.register_rule('env', ENV_PATTERN, parse)
|
||||||
|
md.inline.rules.append('env')
|
||||||
|
|
||||||
def p_option(md):
|
def p_option(md):
|
||||||
OPTION_PATTERN = r'\{option\}`(.*?)`'
|
OPTION_PATTERN = r'\{option\}`(.*?)`'
|
||||||
def parse(self, m, state):
|
def parse(self, m, state):
|
||||||
|
@ -162,7 +180,7 @@ def p_admonition(md):
|
||||||
md.block.rules.append('admonition')
|
md.block.rules.append('admonition')
|
||||||
|
|
||||||
md = mistune.create_markdown(renderer=Renderer(), plugins=[
|
md = mistune.create_markdown(renderer=Renderer(), plugins=[
|
||||||
p_command, p_file, p_option, p_manpage, p_admonition
|
p_command, p_file, p_var, p_env, p_option, p_manpage, p_admonition
|
||||||
])
|
])
|
||||||
|
|
||||||
# converts in-place!
|
# converts in-place!
|
||||||
|
|
|
@ -37,11 +37,11 @@ rec {
|
||||||
|
|
||||||
initrdContents = types.attrsOf (types.submodule ({ config, options, name, ... }: {
|
initrdContents = types.attrsOf (types.submodule ({ config, options, name, ... }: {
|
||||||
options = {
|
options = {
|
||||||
enable = mkEnableOption "copying of this file and symlinking it" // { default = true; };
|
enable = mkEnableOption (lib.mdDoc "copying of this file and symlinking it") // { default = true; };
|
||||||
|
|
||||||
target = mkOption {
|
target = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Path of the symlink.
|
Path of the symlink.
|
||||||
'';
|
'';
|
||||||
default = name;
|
default = name;
|
||||||
|
@ -50,12 +50,12 @@ rec {
|
||||||
text = mkOption {
|
text = mkOption {
|
||||||
default = null;
|
default = null;
|
||||||
type = types.nullOr types.lines;
|
type = types.nullOr types.lines;
|
||||||
description = "Text of the file.";
|
description = lib.mdDoc "Text of the file.";
|
||||||
};
|
};
|
||||||
|
|
||||||
source = mkOption {
|
source = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = "Path of the source file.";
|
description = lib.mdDoc "Path of the source file.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -37,24 +37,24 @@ in rec {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
If set to false, this unit will be a symlink to
|
If set to false, this unit will be a symlink to
|
||||||
/dev/null. This is primarily useful to prevent specific
|
/dev/null. This is primarily useful to prevent specific
|
||||||
template instances
|
template instances
|
||||||
(e.g. <literal>serial-getty@ttyS0</literal>) from being
|
(e.g. `serial-getty@ttyS0`) from being
|
||||||
started. Note that <literal>enable=true</literal> does not
|
started. Note that `enable=true` does not
|
||||||
make a unit start by default at boot; if you want that, see
|
make a unit start by default at boot; if you want that, see
|
||||||
<literal>wantedBy</literal>.
|
`wantedBy`.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
requiredBy = mkOption {
|
requiredBy = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Units that require (i.e. depend on and need to go down with)
|
Units that require (i.e. depend on and need to go down with)
|
||||||
this unit. The discussion under <literal>wantedBy</literal>
|
this unit. The discussion under `wantedBy`
|
||||||
applies here as well: inverse <literal>.requires</literal>
|
applies here as well: inverse `.requires`
|
||||||
symlinks are established.
|
symlinks are established.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -62,16 +62,16 @@ in rec {
|
||||||
wantedBy = mkOption {
|
wantedBy = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Units that want (i.e. depend on) this unit. The standard way
|
Units that want (i.e. depend on) this unit. The standard way
|
||||||
to make a unit start by default at boot is to set this option
|
to make a unit start by default at boot is to set this option
|
||||||
to <literal>[ "multi-user.target" ]</literal>. That's despite
|
to `[ "multi-user.target" ]`. That's despite
|
||||||
the fact that the systemd.unit(5) manpage says this option
|
the fact that the systemd.unit(5) manpage says this option
|
||||||
goes in the <literal>[Install]</literal> section that controls
|
goes in the `[Install]` section that controls
|
||||||
the behaviour of <literal>systemctl enable</literal>. Since
|
the behaviour of `systemctl enable`. Since
|
||||||
such a process is stateful and thus contrary to the design of
|
such a process is stateful and thus contrary to the design of
|
||||||
NixOS, setting this option instead causes the equivalent
|
NixOS, setting this option instead causes the equivalent
|
||||||
inverse <literal>.wants</literal> symlink to be present,
|
inverse `.wants` symlink to be present,
|
||||||
establishing the same desired relationship in a stateless way.
|
establishing the same desired relationship in a stateless way.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -79,7 +79,7 @@ in rec {
|
||||||
aliases = mkOption {
|
aliases = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = "Aliases of that unit.";
|
description = lib.mdDoc "Aliases of that unit.";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -89,12 +89,12 @@ in rec {
|
||||||
text = mkOption {
|
text = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
description = "Text of this systemd unit.";
|
description = lib.mdDoc "Text of this systemd unit.";
|
||||||
};
|
};
|
||||||
|
|
||||||
unit = mkOption {
|
unit = mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
description = "The generated unit.";
|
description = lib.mdDoc "The generated unit.";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -105,19 +105,19 @@ in rec {
|
||||||
description = mkOption {
|
description = mkOption {
|
||||||
default = "";
|
default = "";
|
||||||
type = types.singleLineStr;
|
type = types.singleLineStr;
|
||||||
description = "Description of this unit used in systemd messages and progress indicators.";
|
description = lib.mdDoc "Description of this unit used in systemd messages and progress indicators.";
|
||||||
};
|
};
|
||||||
|
|
||||||
documentation = mkOption {
|
documentation = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
description = "A list of URIs referencing documentation for this unit or its configuration.";
|
description = lib.mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
|
||||||
};
|
};
|
||||||
|
|
||||||
requires = mkOption {
|
requires = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Start the specified units when this unit is started, and stop
|
Start the specified units when this unit is started, and stop
|
||||||
this unit when the specified units are stopped or fail.
|
this unit when the specified units are stopped or fail.
|
||||||
'';
|
'';
|
||||||
|
@ -126,7 +126,7 @@ in rec {
|
||||||
wants = mkOption {
|
wants = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Start the specified units when this unit is started.
|
Start the specified units when this unit is started.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -134,7 +134,7 @@ in rec {
|
||||||
after = mkOption {
|
after = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
If the specified units are started at the same time as
|
If the specified units are started at the same time as
|
||||||
this unit, delay this unit until they have started.
|
this unit, delay this unit until they have started.
|
||||||
'';
|
'';
|
||||||
|
@ -143,7 +143,7 @@ in rec {
|
||||||
before = mkOption {
|
before = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
If the specified units are started at the same time as
|
If the specified units are started at the same time as
|
||||||
this unit, delay them until this unit has started.
|
this unit, delay them until this unit has started.
|
||||||
'';
|
'';
|
||||||
|
@ -152,7 +152,7 @@ in rec {
|
||||||
bindsTo = mkOption {
|
bindsTo = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Like ‘requires’, but in addition, if the specified units
|
Like ‘requires’, but in addition, if the specified units
|
||||||
unexpectedly disappear, this unit will be stopped as well.
|
unexpectedly disappear, this unit will be stopped as well.
|
||||||
'';
|
'';
|
||||||
|
@ -161,7 +161,7 @@ in rec {
|
||||||
partOf = mkOption {
|
partOf = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
If the specified units are stopped or restarted, then this
|
If the specified units are stopped or restarted, then this
|
||||||
unit is stopped or restarted as well.
|
unit is stopped or restarted as well.
|
||||||
'';
|
'';
|
||||||
|
@ -170,7 +170,7 @@ in rec {
|
||||||
conflicts = mkOption {
|
conflicts = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
If the specified units are started, then this unit is stopped
|
If the specified units are started, then this unit is stopped
|
||||||
and vice versa.
|
and vice versa.
|
||||||
'';
|
'';
|
||||||
|
@ -179,7 +179,7 @@ in rec {
|
||||||
requisite = mkOption {
|
requisite = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Similar to requires. However if the units listed are not started,
|
Similar to requires. However if the units listed are not started,
|
||||||
they will not be started and the transaction will fail.
|
they will not be started and the transaction will fail.
|
||||||
'';
|
'';
|
||||||
|
@ -189,18 +189,17 @@ in rec {
|
||||||
default = {};
|
default = {};
|
||||||
example = { RequiresMountsFor = "/data"; };
|
example = { RequiresMountsFor = "/data"; };
|
||||||
type = types.attrsOf unitOption;
|
type = types.attrsOf unitOption;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[Unit]</literal> section of the unit. See
|
`[Unit]` section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.unit</refentrytitle>
|
{manpage}`systemd.unit(5)` for details.
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
onFailure = mkOption {
|
onFailure = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
A list of one or more units that are activated when
|
A list of one or more units that are activated when
|
||||||
this unit enters the "failed" state.
|
this unit enters the "failed" state.
|
||||||
'';
|
'';
|
||||||
|
@ -209,7 +208,7 @@ in rec {
|
||||||
onSuccess = mkOption {
|
onSuccess = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
A list of one or more units that are activated when
|
A list of one or more units that are activated when
|
||||||
this unit enters the "inactive" state.
|
this unit enters the "inactive" state.
|
||||||
'';
|
'';
|
||||||
|
@ -217,7 +216,7 @@ in rec {
|
||||||
|
|
||||||
startLimitBurst = mkOption {
|
startLimitBurst = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Configure unit start rate limiting. Units which are started
|
Configure unit start rate limiting. Units which are started
|
||||||
more than startLimitBurst times within an interval time
|
more than startLimitBurst times within an interval time
|
||||||
interval are not permitted to start any more.
|
interval are not permitted to start any more.
|
||||||
|
@ -226,7 +225,7 @@ in rec {
|
||||||
|
|
||||||
startLimitIntervalSec = mkOption {
|
startLimitIntervalSec = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Configure unit start rate limiting. Units which are started
|
Configure unit start rate limiting. Units which are started
|
||||||
more than startLimitBurst times within an interval time
|
more than startLimitBurst times within an interval time
|
||||||
interval are not permitted to start any more.
|
interval are not permitted to start any more.
|
||||||
|
@ -245,7 +244,7 @@ in rec {
|
||||||
restartTriggers = mkOption {
|
restartTriggers = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf types.unspecified;
|
type = types.listOf types.unspecified;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
An arbitrary list of items such as derivations. If any item
|
An arbitrary list of items such as derivations. If any item
|
||||||
in the list changes between reconfigurations, the service will
|
in the list changes between reconfigurations, the service will
|
||||||
be restarted.
|
be restarted.
|
||||||
|
@ -255,7 +254,7 @@ in rec {
|
||||||
reloadTriggers = mkOption {
|
reloadTriggers = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitOption;
|
type = types.listOf unitOption;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
An arbitrary list of items such as derivations. If any item
|
An arbitrary list of items such as derivations. If any item
|
||||||
in the list changes between reconfigurations, the service will
|
in the list changes between reconfigurations, the service will
|
||||||
be reloaded. If anything but a reload trigger changes in the
|
be reloaded. If anything but a reload trigger changes in the
|
||||||
|
@ -273,16 +272,16 @@ in rec {
|
||||||
default = {};
|
default = {};
|
||||||
type = with types; attrsOf (nullOr (oneOf [ str path package ]));
|
type = with types; attrsOf (nullOr (oneOf [ str path package ]));
|
||||||
example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
|
example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
|
||||||
description = "Environment variables passed to the service's processes.";
|
description = lib.mdDoc "Environment variables passed to the service's processes.";
|
||||||
};
|
};
|
||||||
|
|
||||||
path = mkOption {
|
path = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = with types; listOf (oneOf [ package str ]);
|
type = with types; listOf (oneOf [ package str ]);
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Packages added to the service's <envar>PATH</envar>
|
Packages added to the service's {env}`PATH`
|
||||||
environment variable. Both the <filename>bin</filename>
|
environment variable. Both the {file}`bin`
|
||||||
and <filename>sbin</filename> subdirectories of each
|
and {file}`sbin` subdirectories of each
|
||||||
package are added.
|
package are added.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -293,30 +292,29 @@ in rec {
|
||||||
{ RestartSec = 5;
|
{ RestartSec = 5;
|
||||||
};
|
};
|
||||||
type = types.addCheck (types.attrsOf unitOption) checkService;
|
type = types.addCheck (types.attrsOf unitOption) checkService;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[Service]</literal> section of the unit. See
|
`[Service]` section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.service</refentrytitle>
|
{manpage}`systemd.service(5)` for details.
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
script = mkOption {
|
script = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = "Shell commands executed as the service's main process.";
|
description = lib.mdDoc "Shell commands executed as the service's main process.";
|
||||||
};
|
};
|
||||||
|
|
||||||
scriptArgs = mkOption {
|
scriptArgs = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "";
|
default = "";
|
||||||
description = "Arguments passed to the main process script.";
|
description = lib.mdDoc "Arguments passed to the main process script.";
|
||||||
};
|
};
|
||||||
|
|
||||||
preStart = mkOption {
|
preStart = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Shell commands executed before the service's main process
|
Shell commands executed before the service's main process
|
||||||
is started.
|
is started.
|
||||||
'';
|
'';
|
||||||
|
@ -325,7 +323,7 @@ in rec {
|
||||||
postStart = mkOption {
|
postStart = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Shell commands executed after the service's main process
|
Shell commands executed after the service's main process
|
||||||
is started.
|
is started.
|
||||||
'';
|
'';
|
||||||
|
@ -334,7 +332,7 @@ in rec {
|
||||||
reload = mkOption {
|
reload = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Shell commands executed when the service's main process
|
Shell commands executed when the service's main process
|
||||||
is reloaded.
|
is reloaded.
|
||||||
'';
|
'';
|
||||||
|
@ -343,7 +341,7 @@ in rec {
|
||||||
preStop = mkOption {
|
preStop = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Shell commands executed to stop the service.
|
Shell commands executed to stop the service.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -351,7 +349,7 @@ in rec {
|
||||||
postStop = mkOption {
|
postStop = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Shell commands executed after the service's main process
|
Shell commands executed after the service's main process
|
||||||
has exited.
|
has exited.
|
||||||
'';
|
'';
|
||||||
|
@ -360,7 +358,7 @@ in rec {
|
||||||
jobScripts = mkOption {
|
jobScripts = mkOption {
|
||||||
type = with types; coercedTo path singleton (listOf path);
|
type = with types; coercedTo path singleton (listOf path);
|
||||||
internal = true;
|
internal = true;
|
||||||
description = "A list of all job script derivations of this unit.";
|
description = lib.mdDoc "A list of all job script derivations of this unit.";
|
||||||
default = [];
|
default = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -405,7 +403,7 @@ in rec {
|
||||||
restartIfChanged = mkOption {
|
restartIfChanged = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Whether the service should be restarted during a NixOS
|
Whether the service should be restarted during a NixOS
|
||||||
configuration switch if its definition has changed.
|
configuration switch if its definition has changed.
|
||||||
'';
|
'';
|
||||||
|
@ -414,14 +412,14 @@ in rec {
|
||||||
reloadIfChanged = mkOption {
|
reloadIfChanged = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Whether the service should be reloaded during a NixOS
|
Whether the service should be reloaded during a NixOS
|
||||||
configuration switch if its definition has changed. If
|
configuration switch if its definition has changed. If
|
||||||
enabled, the value of <option>restartIfChanged</option> is
|
enabled, the value of {option}`restartIfChanged` is
|
||||||
ignored.
|
ignored.
|
||||||
|
|
||||||
This option should not be used anymore in favor of
|
This option should not be used anymore in favor of
|
||||||
<option>reloadTriggers</option> which allows more granular
|
{option}`reloadTriggers` which allows more granular
|
||||||
control of when a service is reloaded and when a service
|
control of when a service is reloaded and when a service
|
||||||
is restarted.
|
is restarted.
|
||||||
'';
|
'';
|
||||||
|
@ -430,14 +428,14 @@ in rec {
|
||||||
stopIfChanged = mkOption {
|
stopIfChanged = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
If set, a changed unit is restarted by calling
|
If set, a changed unit is restarted by calling
|
||||||
<command>systemctl stop</command> in the old configuration,
|
{command}`systemctl stop` in the old configuration,
|
||||||
then <command>systemctl start</command> in the new one.
|
then {command}`systemctl start` in the new one.
|
||||||
Otherwise, it is restarted in a single step using
|
Otherwise, it is restarted in a single step using
|
||||||
<command>systemctl restart</command> in the new configuration.
|
{command}`systemctl restart` in the new configuration.
|
||||||
The latter is less correct because it runs the
|
The latter is less correct because it runs the
|
||||||
<literal>ExecStop</literal> commands from the new
|
`ExecStop` commands from the new
|
||||||
configuration.
|
configuration.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -446,13 +444,12 @@ in rec {
|
||||||
type = with types; either str (listOf str);
|
type = with types; either str (listOf str);
|
||||||
default = [];
|
default = [];
|
||||||
example = "Sun 14:00:00";
|
example = "Sun 14:00:00";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Automatically start this unit at the given date/time, which
|
Automatically start this unit at the given date/time, which
|
||||||
must be in the format described in
|
must be in the format described in
|
||||||
<citerefentry><refentrytitle>systemd.time</refentrytitle>
|
{manpage}`systemd.time(7)`. This is equivalent
|
||||||
<manvolnum>7</manvolnum></citerefentry>. This is equivalent
|
|
||||||
to adding a corresponding timer unit with
|
to adding a corresponding timer unit with
|
||||||
<option>OnCalendar</option> set to the value given here.
|
{option}`OnCalendar` set to the value given here.
|
||||||
'';
|
'';
|
||||||
apply = v: if isList v then v else [ v ];
|
apply = v: if isList v then v else [ v ];
|
||||||
};
|
};
|
||||||
|
@ -474,9 +471,9 @@ in rec {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
For each item in this list, a <literal>ListenStream</literal>
|
For each item in this list, a `ListenStream`
|
||||||
option in the <literal>[Socket]</literal> section will be created.
|
option in the `[Socket]` section will be created.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -484,9 +481,9 @@ in rec {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
For each item in this list, a <literal>ListenDatagram</literal>
|
For each item in this list, a `ListenDatagram`
|
||||||
option in the <literal>[Socket]</literal> section will be created.
|
option in the `[Socket]` section will be created.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -494,11 +491,10 @@ in rec {
|
||||||
default = {};
|
default = {};
|
||||||
example = { ListenStream = "/run/my-socket"; };
|
example = { ListenStream = "/run/my-socket"; };
|
||||||
type = types.attrsOf unitOption;
|
type = types.attrsOf unitOption;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[Socket]</literal> section of the unit. See
|
`[Socket]` section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.socket</refentrytitle>
|
{manpage}`systemd.socket(5)` for details.
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -527,13 +523,11 @@ in rec {
|
||||||
default = {};
|
default = {};
|
||||||
example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
|
example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
|
||||||
type = types.attrsOf unitOption;
|
type = types.attrsOf unitOption;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[Timer]</literal> section of the unit. See
|
`[Timer]` section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.timer</refentrytitle>
|
{manpage}`systemd.timer(5)` and
|
||||||
<manvolnum>5</manvolnum></citerefentry> and
|
{manpage}`systemd.time(7)` for details.
|
||||||
<citerefentry><refentrytitle>systemd.time</refentrytitle>
|
|
||||||
<manvolnum>7</manvolnum></citerefentry> for details.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -562,11 +556,10 @@ in rec {
|
||||||
default = {};
|
default = {};
|
||||||
example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
|
example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
|
||||||
type = types.attrsOf unitOption;
|
type = types.attrsOf unitOption;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[Path]</literal> section of the unit. See
|
`[Path]` section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.path</refentrytitle>
|
{manpage}`systemd.path(5)` for details.
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -594,13 +587,13 @@ in rec {
|
||||||
what = mkOption {
|
what = mkOption {
|
||||||
example = "/dev/sda1";
|
example = "/dev/sda1";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = "Absolute path of device node, file or other resource. (Mandatory)";
|
description = lib.mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
|
||||||
};
|
};
|
||||||
|
|
||||||
where = mkOption {
|
where = mkOption {
|
||||||
example = "/mnt";
|
example = "/mnt";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Absolute path of a directory of the mount point.
|
Absolute path of a directory of the mount point.
|
||||||
Will be created if it doesn't exist. (Mandatory)
|
Will be created if it doesn't exist. (Mandatory)
|
||||||
'';
|
'';
|
||||||
|
@ -610,25 +603,24 @@ in rec {
|
||||||
default = "";
|
default = "";
|
||||||
example = "ext4";
|
example = "ext4";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = "File system type.";
|
description = lib.mdDoc "File system type.";
|
||||||
};
|
};
|
||||||
|
|
||||||
options = mkOption {
|
options = mkOption {
|
||||||
default = "";
|
default = "";
|
||||||
example = "noatime";
|
example = "noatime";
|
||||||
type = types.commas;
|
type = types.commas;
|
||||||
description = "Options used to mount the file system.";
|
description = lib.mdDoc "Options used to mount the file system.";
|
||||||
};
|
};
|
||||||
|
|
||||||
mountConfig = mkOption {
|
mountConfig = mkOption {
|
||||||
default = {};
|
default = {};
|
||||||
example = { DirectoryMode = "0775"; };
|
example = { DirectoryMode = "0775"; };
|
||||||
type = types.attrsOf unitOption;
|
type = types.attrsOf unitOption;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[Mount]</literal> section of the unit. See
|
`[Mount]` section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.mount</refentrytitle>
|
{manpage}`systemd.mount(5)` for details.
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -655,7 +647,7 @@ in rec {
|
||||||
where = mkOption {
|
where = mkOption {
|
||||||
example = "/mnt";
|
example = "/mnt";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Absolute path of a directory of the mount point.
|
Absolute path of a directory of the mount point.
|
||||||
Will be created if it doesn't exist. (Mandatory)
|
Will be created if it doesn't exist. (Mandatory)
|
||||||
'';
|
'';
|
||||||
|
@ -665,11 +657,10 @@ in rec {
|
||||||
default = {};
|
default = {};
|
||||||
example = { DirectoryMode = "0775"; };
|
example = { DirectoryMode = "0775"; };
|
||||||
type = types.attrsOf unitOption;
|
type = types.attrsOf unitOption;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[Automount]</literal> section of the unit. See
|
`[Automount]` section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.automount</refentrytitle>
|
{manpage}`systemd.automount(5)` for details.
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -697,11 +688,10 @@ in rec {
|
||||||
default = {};
|
default = {};
|
||||||
example = { MemoryMax = "2G"; };
|
example = { MemoryMax = "2G"; };
|
||||||
type = types.attrsOf unitOption;
|
type = types.attrsOf unitOption;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[Slice]</literal> section of the unit. See
|
`[Slice]` section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.slice</refentrytitle>
|
{manpage}`systemd.slice(5)` for details.
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ in {
|
||||||
options.amazonImage = {
|
options.amazonImage = {
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = "The name of the generated derivation";
|
description = lib.mdDoc "The name of the generated derivation";
|
||||||
default = "nixos-amazon-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}";
|
default = "nixos-amazon-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ in {
|
||||||
]
|
]
|
||||||
'';
|
'';
|
||||||
default = [];
|
default = [];
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
This option lists files to be copied to fixed locations in the
|
This option lists files to be copied to fixed locations in the
|
||||||
generated image. Glob patterns work.
|
generated image. Glob patterns work.
|
||||||
'';
|
'';
|
||||||
|
@ -45,13 +45,13 @@ in {
|
||||||
type = with types; either (enum [ "auto" ]) int;
|
type = with types; either (enum [ "auto" ]) int;
|
||||||
default = if config.ec2.hvm then 2048 else 8192;
|
default = if config.ec2.hvm then 2048 else 8192;
|
||||||
example = 8192;
|
example = 8192;
|
||||||
description = "The size in MB of the image";
|
description = lib.mdDoc "The size in MB of the image";
|
||||||
};
|
};
|
||||||
|
|
||||||
format = mkOption {
|
format = mkOption {
|
||||||
type = types.enum [ "raw" "qcow2" "vpc" ];
|
type = types.enum [ "raw" "qcow2" "vpc" ];
|
||||||
default = "vpc";
|
default = "vpc";
|
||||||
description = "The image format to output";
|
description = lib.mdDoc "The image format to output";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,20 +16,20 @@ in
|
||||||
options.openstackImage = {
|
options.openstackImage = {
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = "The name of the generated derivation";
|
description = lib.mdDoc "The name of the generated derivation";
|
||||||
default = "nixos-openstack-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}";
|
default = "nixos-openstack-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}";
|
||||||
};
|
};
|
||||||
|
|
||||||
sizeMB = mkOption {
|
sizeMB = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
default = 8192;
|
default = 8192;
|
||||||
description = "The size in MB of the image";
|
description = lib.mdDoc "The size in MB of the image";
|
||||||
};
|
};
|
||||||
|
|
||||||
format = mkOption {
|
format = mkOption {
|
||||||
type = types.enum [ "raw" "qcow2" ];
|
type = types.enum [ "raw" "qcow2" ];
|
||||||
default = "qcow2";
|
default = "qcow2";
|
||||||
description = "The image format to output";
|
description = lib.mdDoc "The image format to output";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -259,7 +259,7 @@ in
|
||||||
internal = true;
|
internal = true;
|
||||||
type = with types; listOf path;
|
type = with types; listOf path;
|
||||||
default = [ ];
|
default = [ ];
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Fontconfig configuration packages.
|
Fontconfig configuration packages.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.networking.iproute2 = {
|
options.networking.iproute2 = {
|
||||||
enable = mkEnableOption "copy IP route configuration files";
|
enable = mkEnableOption (lib.mdDoc "copy IP route configuration files");
|
||||||
rttablesExtraConfig = mkOption {
|
rttablesExtraConfig = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
|
|
|
@ -78,7 +78,7 @@ in {
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
krb5 = {
|
krb5 = {
|
||||||
enable = mkEnableOption "building krb5.conf, configuration file for Kerberos V";
|
enable = mkEnableOption (lib.mdDoc "building krb5.conf, configuration file for Kerberos V");
|
||||||
|
|
||||||
kerberos = mkOption {
|
kerberos = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
|
|
|
@ -59,7 +59,7 @@ in
|
||||||
|
|
||||||
users.ldap = {
|
users.ldap = {
|
||||||
|
|
||||||
enable = mkEnableOption "authentication against an LDAP server";
|
enable = mkEnableOption (lib.mdDoc "authentication against an LDAP server");
|
||||||
|
|
||||||
loginPam = mkOption {
|
loginPam = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
|
|
|
@ -77,24 +77,21 @@ in
|
||||||
environment.memoryAllocator.provider = mkOption {
|
environment.memoryAllocator.provider = mkOption {
|
||||||
type = types.enum ([ "libc" ] ++ attrNames providers);
|
type = types.enum ([ "libc" ] ++ attrNames providers);
|
||||||
default = "libc";
|
default = "libc";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The system-wide memory allocator.
|
The system-wide memory allocator.
|
||||||
|
|
||||||
Briefly, the system-wide memory allocator providers are:
|
Briefly, the system-wide memory allocator providers are:
|
||||||
<itemizedlist>
|
|
||||||
<listitem><para><literal>libc</literal>: the standard allocator provided by libc</para></listitem>
|
|
||||||
${toString (mapAttrsToList
|
|
||||||
(name: value: "<listitem><para><literal>${name}</literal>: ${value.description}</para></listitem>")
|
|
||||||
providers)}
|
|
||||||
</itemizedlist>
|
|
||||||
|
|
||||||
<warning>
|
- `libc`: the standard allocator provided by libc
|
||||||
<para>
|
${concatStringsSep "\n" (mapAttrsToList
|
||||||
|
(name: value: "- `${name}`: ${replaceStrings [ "\n" ] [ " " ] value.description}")
|
||||||
|
providers)}
|
||||||
|
|
||||||
|
::: {.warning}
|
||||||
Selecting an alternative allocator (i.e., anything other than
|
Selecting an alternative allocator (i.e., anything other than
|
||||||
<literal>libc</literal>) may result in instability, data loss,
|
`libc`) may result in instability, data loss,
|
||||||
and/or service failure.
|
and/or service failure.
|
||||||
</para>
|
:::
|
||||||
</warning>
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,83 +8,73 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
users.mysql = {
|
users.mysql = {
|
||||||
enable = mkEnableOption "Authentication against a MySQL/MariaDB database";
|
enable = mkEnableOption (lib.mdDoc "Authentication against a MySQL/MariaDB database");
|
||||||
host = mkOption {
|
host = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "localhost";
|
example = "localhost";
|
||||||
description = "The hostname of the MySQL/MariaDB server";
|
description = lib.mdDoc "The hostname of the MySQL/MariaDB server";
|
||||||
};
|
};
|
||||||
database = mkOption {
|
database = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "auth";
|
example = "auth";
|
||||||
description = "The name of the database containing the users";
|
description = lib.mdDoc "The name of the database containing the users";
|
||||||
};
|
};
|
||||||
user = mkOption {
|
user = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "nss-user";
|
example = "nss-user";
|
||||||
description = "The username to use when connecting to the database";
|
description = lib.mdDoc "The username to use when connecting to the database";
|
||||||
};
|
};
|
||||||
passwordFile = mkOption {
|
passwordFile = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
example = "/run/secrets/mysql-auth-db-passwd";
|
example = "/run/secrets/mysql-auth-db-passwd";
|
||||||
description = "The path to the file containing the password for the user";
|
description = lib.mdDoc "The path to the file containing the password for the user";
|
||||||
};
|
};
|
||||||
pam = mkOption {
|
pam = mkOption {
|
||||||
description = "Settings for <literal>pam_mysql</literal>";
|
description = lib.mdDoc "Settings for `pam_mysql`";
|
||||||
type = types.submodule {
|
type = types.submodule {
|
||||||
options = {
|
options = {
|
||||||
table = mkOption {
|
table = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "users";
|
example = "users";
|
||||||
description = "The name of table that maps unique login names to the passwords.";
|
description = lib.mdDoc "The name of table that maps unique login names to the passwords.";
|
||||||
};
|
};
|
||||||
updateTable = mkOption {
|
updateTable = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
example = "users_updates";
|
example = "users_updates";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The name of the table used for password alteration. If not defined, the value
|
The name of the table used for password alteration. If not defined, the value
|
||||||
of the <literal>table</literal> option will be used instead.
|
of the `table` option will be used instead.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
userColumn = mkOption {
|
userColumn = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "username";
|
example = "username";
|
||||||
description = "The name of the column that contains a unix login name.";
|
description = lib.mdDoc "The name of the column that contains a unix login name.";
|
||||||
};
|
};
|
||||||
passwordColumn = mkOption {
|
passwordColumn = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "password";
|
example = "password";
|
||||||
description = "The name of the column that contains a (encrypted) password string.";
|
description = lib.mdDoc "The name of the column that contains a (encrypted) password string.";
|
||||||
};
|
};
|
||||||
statusColumn = mkOption {
|
statusColumn = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
example = "status";
|
example = "status";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The name of the column or an SQL expression that indicates the status of
|
The name of the column or an SQL expression that indicates the status of
|
||||||
the user. The status is expressed by the combination of two bitfields
|
the user. The status is expressed by the combination of two bitfields
|
||||||
shown below:
|
shown below:
|
||||||
|
|
||||||
<itemizedlist>
|
- `bit 0 (0x01)`:
|
||||||
<listitem>
|
if flagged, `pam_mysql` deems the account to be expired and
|
||||||
<para>
|
returns `PAM_ACCT_EXPIRED`. That is, the account is supposed
|
||||||
<literal>bit 0 (0x01)</literal>:
|
to no longer be available. Note this doesn't mean that `pam_mysql`
|
||||||
if flagged, <literal>pam_mysql</literal> deems the account to be expired and
|
rejects further authentication operations.
|
||||||
returns <literal>PAM_ACCT_EXPIRED</literal>. That is, the account is supposed
|
- `bit 1 (0x02)`:
|
||||||
to no longer be available. Note this doesn't mean that <literal>pam_mysql</literal>
|
if flagged, `pam_mysql` deems the authentication token
|
||||||
rejects further authentication operations.
|
(password) to be expired and returns `PAM_NEW_AUTHTOK_REQD`.
|
||||||
</para>
|
This ends up requiring that the user enter a new password.
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
<literal>bit 1 (0x02)</literal>:
|
|
||||||
if flagged, <literal>pam_mysql</literal> deems the authentication token
|
|
||||||
(password) to be expired and returns <literal>PAM_NEW_AUTHTOK_REQD</literal>.
|
|
||||||
This ends up requiring that the user enter a new password.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
passwordCrypt = mkOption {
|
passwordCrypt = mkOption {
|
||||||
|
@ -101,101 +91,59 @@ in
|
||||||
"8" "sha512"
|
"8" "sha512"
|
||||||
"9" "sha256"
|
"9" "sha256"
|
||||||
];
|
];
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The method to encrypt the user's password:
|
The method to encrypt the user's password:
|
||||||
|
|
||||||
<itemizedlist>
|
- `0` (or `"plain"`):
|
||||||
<listitem>
|
No encryption. Passwords are stored in plaintext. HIGHLY DISCOURAGED.
|
||||||
<para>
|
- `1` (or `"Y"`):
|
||||||
<literal>0</literal> (or <literal>"plain"</literal>):
|
Use crypt(3) function.
|
||||||
No encryption. Passwords are stored in plaintext. HIGHLY DISCOURAGED.
|
- `2` (or `"mysql"`):
|
||||||
</para>
|
Use the MySQL PASSWORD() function. It is possible that the encryption function used
|
||||||
</listitem>
|
by `pam_mysql` is different from that of the MySQL server, as
|
||||||
<listitem>
|
`pam_mysql` uses the function defined in MySQL's C-client API
|
||||||
<para>
|
instead of using PASSWORD() SQL function in the query.
|
||||||
<literal>1</literal> (or <literal>"Y"</literal>):
|
- `3` (or `"md5"`):
|
||||||
Use crypt(3) function.
|
Use plain hex MD5.
|
||||||
</para>
|
- `4` (or `"sha1"`):
|
||||||
</listitem>
|
Use plain hex SHA1.
|
||||||
<listitem>
|
- `5` (or `"drupal7"`):
|
||||||
<para>
|
Use Drupal7 salted passwords.
|
||||||
<literal>2</literal> (or <literal>"mysql"</literal>):
|
- `6` (or `"joomla15"`):
|
||||||
Use the MySQL PASSWORD() function. It is possible that the encryption function used
|
Use Joomla15 salted passwords.
|
||||||
by <literal>pam_mysql</literal> is different from that of the MySQL server, as
|
- `7` (or `"ssha"`):
|
||||||
<literal>pam_mysql</literal> uses the function defined in MySQL's C-client API
|
Use ssha hashed passwords.
|
||||||
instead of using PASSWORD() SQL function in the query.
|
- `8` (or `"sha512"`):
|
||||||
</para>
|
Use sha512 hashed passwords.
|
||||||
</listitem>
|
- `9` (or `"sha256"`):
|
||||||
<listitem>
|
Use sha256 hashed passwords.
|
||||||
<para>
|
|
||||||
<literal>3</literal> (or <literal>"md5"</literal>):
|
|
||||||
Use plain hex MD5.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
<literal>4</literal> (or <literal>"sha1"</literal>):
|
|
||||||
Use plain hex SHA1.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
<literal>5</literal> (or <literal>"drupal7"</literal>):
|
|
||||||
Use Drupal7 salted passwords.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
<literal>6</literal> (or <literal>"joomla15"</literal>):
|
|
||||||
Use Joomla15 salted passwords.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
<literal>7</literal> (or <literal>"ssha"</literal>):
|
|
||||||
Use ssha hashed passwords.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
<literal>8</literal> (or <literal>"sha512"</literal>):
|
|
||||||
Use sha512 hashed passwords.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
<literal>9</literal> (or <literal>"sha256"</literal>):
|
|
||||||
Use sha256 hashed passwords.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
cryptDefault = mkOption {
|
cryptDefault = mkOption {
|
||||||
type = types.nullOr (types.enum [ "md5" "sha256" "sha512" "blowfish" ]);
|
type = types.nullOr (types.enum [ "md5" "sha256" "sha512" "blowfish" ]);
|
||||||
default = null;
|
default = null;
|
||||||
example = "blowfish";
|
example = "blowfish";
|
||||||
description = "The default encryption method to use for <literal>passwordCrypt = 1</literal>.";
|
description = lib.mdDoc "The default encryption method to use for `passwordCrypt = 1`.";
|
||||||
};
|
};
|
||||||
where = mkOption {
|
where = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
example = "host.name='web' AND user.active=1";
|
example = "host.name='web' AND user.active=1";
|
||||||
description = "Additional criteria for the query.";
|
description = lib.mdDoc "Additional criteria for the query.";
|
||||||
};
|
};
|
||||||
verbose = mkOption {
|
verbose = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
If enabled, produces logs with detailed messages that describes what
|
If enabled, produces logs with detailed messages that describes what
|
||||||
<literal>pam_mysql</literal> is doing. May be useful for debugging.
|
`pam_mysql` is doing. May be useful for debugging.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
disconnectEveryOperation = mkOption {
|
disconnectEveryOperation = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
By default, <literal>pam_mysql</literal> keeps the connection to the MySQL
|
By default, `pam_mysql` keeps the connection to the MySQL
|
||||||
database until the session is closed. If this option is set to true it
|
database until the session is closed. If this option is set to true it
|
||||||
disconnects every time the PAM operation has finished. This option may
|
disconnects every time the PAM operation has finished. This option may
|
||||||
be useful in case the session lasts quite long.
|
be useful in case the session lasts quite long.
|
||||||
|
@ -205,17 +153,17 @@ in
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = "Enables logging of authentication attempts in the MySQL database.";
|
description = lib.mdDoc "Enables logging of authentication attempts in the MySQL database.";
|
||||||
};
|
};
|
||||||
table = mkOption {
|
table = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "logs";
|
example = "logs";
|
||||||
description = "The name of the table to which logs are written.";
|
description = lib.mdDoc "The name of the table to which logs are written.";
|
||||||
};
|
};
|
||||||
msgColumn = mkOption {
|
msgColumn = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "msg";
|
example = "msg";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The name of the column in the log table to which the description
|
The name of the column in the log table to which the description
|
||||||
of the performed operation is stored.
|
of the performed operation is stored.
|
||||||
'';
|
'';
|
||||||
|
@ -223,7 +171,7 @@ in
|
||||||
userColumn = mkOption {
|
userColumn = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "user";
|
example = "user";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The name of the column in the log table to which the name of the
|
The name of the column in the log table to which the name of the
|
||||||
user being authenticated is stored.
|
user being authenticated is stored.
|
||||||
'';
|
'';
|
||||||
|
@ -231,16 +179,16 @@ in
|
||||||
pidColumn = mkOption {
|
pidColumn = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "pid";
|
example = "pid";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The name of the column in the log table to which the pid of the
|
The name of the column in the log table to which the pid of the
|
||||||
process utilising the <literal>pam_mysql's</literal> authentication
|
process utilising the `pam_mysql's` authentication
|
||||||
service is stored.
|
service is stored.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
hostColumn = mkOption {
|
hostColumn = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "host";
|
example = "host";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The name of the column in the log table to which the name of the user
|
The name of the column in the log table to which the name of the user
|
||||||
being authenticated is stored.
|
being authenticated is stored.
|
||||||
'';
|
'';
|
||||||
|
@ -248,17 +196,16 @@ in
|
||||||
rHostColumn = mkOption {
|
rHostColumn = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "rhost";
|
example = "rhost";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The name of the column in the log table to which the name of the remote
|
The name of the column in the log table to which the name of the remote
|
||||||
host that initiates the session is stored. The value is supposed to be
|
host that initiates the session is stored. The value is supposed to be
|
||||||
set by the PAM-aware application with <literal>pam_set_item(PAM_RHOST)
|
set by the PAM-aware application with `pam_set_item(PAM_RHOST)`.
|
||||||
</literal>.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
timeColumn = mkOption {
|
timeColumn = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "timestamp";
|
example = "timestamp";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The name of the column in the log table to which the timestamp of the
|
The name of the column in the log table to which the timestamp of the
|
||||||
log entry is stored.
|
log entry is stored.
|
||||||
'';
|
'';
|
||||||
|
@ -268,11 +215,11 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nss = mkOption {
|
nss = mkOption {
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Settings for <literal>libnss-mysql</literal>.
|
Settings for `libnss-mysql`.
|
||||||
|
|
||||||
All examples are from the <link xlink:href="https://github.com/saknopper/libnss-mysql/tree/master/sample/minimal">minimal example</link>
|
All examples are from the [minimal example](https://github.com/saknopper/libnss-mysql/tree/master/sample/minimal)
|
||||||
of <literal>libnss-mysql</literal>, but they are modified with NixOS paths for bash.
|
of `libnss-mysql`, but they are modified with NixOS paths for bash.
|
||||||
'';
|
'';
|
||||||
type = types.submodule {
|
type = types.submodule {
|
||||||
options = {
|
options = {
|
||||||
|
@ -285,9 +232,8 @@ in
|
||||||
WHERE username='%1$s' \
|
WHERE username='%1$s' \
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [getpwnam](https://man7.org/linux/man-pages/man3/getpwnam.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/getpwnam.3.html">getpwnam</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -300,9 +246,8 @@ in
|
||||||
WHERE uid='%1$u' \
|
WHERE uid='%1$u' \
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [getpwuid](https://man7.org/linux/man-pages/man3/getpwuid.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/getpwuid.3.html">getpwuid</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -315,9 +260,8 @@ in
|
||||||
WHERE username='%1$s' \
|
WHERE username='%1$s' \
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [getspnam](https://man7.org/linux/man-pages/man3/getspnam.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/getspnam.3.html">getspnam</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -327,9 +271,8 @@ in
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
SELECT username,'x',uid,'5000','MySQL User', CONCAT('/home/',username),'/run/sw/current-system/bin/bash' FROM users
|
SELECT username,'x',uid,'5000','MySQL User', CONCAT('/home/',username),'/run/sw/current-system/bin/bash' FROM users
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [getpwent](https://man7.org/linux/man-pages/man3/getpwent.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/getpwent.3.html">getpwent</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -339,9 +282,8 @@ in
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
SELECT username,password,'1','0','99999','0','0','-1','0' FROM users
|
SELECT username,password,'1','0','99999','0','0','-1','0' FROM users
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [getspent](https://man7.org/linux/man-pages/man3/getspent.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/getspent.3.html">getspent</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -351,9 +293,8 @@ in
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
SELECT name,password,gid FROM groups WHERE name='%1$s' LIMIT 1
|
SELECT name,password,gid FROM groups WHERE name='%1$s' LIMIT 1
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [getgrnam](https://man7.org/linux/man-pages/man3/getgrnam.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/getgrnam.3.html">getgrnam</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -363,9 +304,8 @@ in
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
SELECT name,password,gid FROM groups WHERE gid='%1$u' LIMIT 1
|
SELECT name,password,gid FROM groups WHERE gid='%1$u' LIMIT 1
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [getgrgid](https://man7.org/linux/man-pages/man3/getgrgid.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/getgrgid.3.html">getgrgid</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -375,9 +315,8 @@ in
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
SELECT name,password,gid FROM groups
|
SELECT name,password,gid FROM groups
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [getgrent](https://man7.org/linux/man-pages/man3/getgrent.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/getgrent.3.html">getgrent</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -387,9 +326,8 @@ in
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
SELECT username FROM grouplist WHERE gid='%1$u'
|
SELECT username FROM grouplist WHERE gid='%1$u'
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [memsbygid](https://man7.org/linux/man-pages/man3/memsbygid.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/memsbygid.3.html">memsbygid</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -399,9 +337,8 @@ in
|
||||||
example = literalExpression ''
|
example = literalExpression ''
|
||||||
SELECT gid FROM grouplist WHERE username='%1$s'
|
SELECT gid FROM grouplist WHERE username='%1$s'
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
SQL query for the <link
|
SQL query for the [gidsbymem](https://man7.org/linux/man-pages/man3/gidsbymem.3.html)
|
||||||
xlink:href="https://man7.org/linux/man-pages/man3/gidsbymem.3.html">gidsbymem</link>
|
|
||||||
syscall.
|
syscall.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -141,7 +141,7 @@ in
|
||||||
type = types.attrs;
|
type = types.attrs;
|
||||||
internal = true;
|
internal = true;
|
||||||
default = {};
|
default = {};
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Environment variables used for the network proxy.
|
Environment variables used for the network proxy.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -190,17 +190,17 @@ in {
|
||||||
|
|
||||||
zeroconf = {
|
zeroconf = {
|
||||||
discovery.enable =
|
discovery.enable =
|
||||||
mkEnableOption "discovery of pulseaudio sinks in the local network";
|
mkEnableOption (lib.mdDoc "discovery of pulseaudio sinks in the local network");
|
||||||
publish.enable =
|
publish.enable =
|
||||||
mkEnableOption "publishing the pulseaudio sink in the local network";
|
mkEnableOption (lib.mdDoc "publishing the pulseaudio sink in the local network");
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO: enable by default?
|
# TODO: enable by default?
|
||||||
tcp = {
|
tcp = {
|
||||||
enable = mkEnableOption "tcp streaming support";
|
enable = mkEnableOption (lib.mdDoc "tcp streaming support");
|
||||||
|
|
||||||
anonymousClients = {
|
anonymousClients = {
|
||||||
allowAll = mkEnableOption "all anonymous clients to stream to the server";
|
allowAll = mkEnableOption (lib.mdDoc "all anonymous clients to stream to the server");
|
||||||
allowedIpRanges = mkOption {
|
allowedIpRanges = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
|
|
|
@ -27,7 +27,7 @@ in
|
||||||
options = {
|
options = {
|
||||||
qt5 = {
|
qt5 = {
|
||||||
|
|
||||||
enable = mkEnableOption "Qt5 theming configuration";
|
enable = mkEnableOption (lib.mdDoc "Qt5 theming configuration");
|
||||||
|
|
||||||
platformTheme = mkOption {
|
platformTheme = mkOption {
|
||||||
type = types.enum [
|
type = types.enum [
|
||||||
|
|
|
@ -140,9 +140,9 @@ in
|
||||||
example = literalExpression ''"''${pkgs.dash}/bin/dash"'';
|
example = literalExpression ''"''${pkgs.dash}/bin/dash"'';
|
||||||
type = types.path;
|
type = types.path;
|
||||||
visible = false;
|
visible = false;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The shell executable that is linked system-wide to
|
The shell executable that is linked system-wide to
|
||||||
<literal>/bin/sh</literal>. Please note that NixOS assumes all
|
`/bin/sh`. Please note that NixOS assumes all
|
||||||
over the place that shell to be Bash, so override the default
|
over the place that shell to be Bash, so override the default
|
||||||
setting only if you know exactly what you're doing.
|
setting only if you know exactly what you're doing.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -73,8 +73,8 @@ let
|
||||||
label = mkOption {
|
label = mkOption {
|
||||||
example = "swap";
|
example = "swap";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Label of the device. Can be used instead of <varname>device</varname>.
|
Label of the device. Can be used instead of {var}`device`.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ in
|
||||||
|
|
||||||
path = mkOption {
|
path = mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The packages you want in the boot environment.
|
The packages you want in the boot environment.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,7 +33,7 @@ in
|
||||||
|
|
||||||
options.xdg.portal = {
|
options.xdg.portal = {
|
||||||
enable =
|
enable =
|
||||||
mkEnableOption ''<link xlink:href="https://github.com/flatpak/xdg-desktop-portal">xdg desktop integration</link>'' // {
|
mkEnableOption (lib.mdDoc ''[xdg desktop integration](https://github.com/flatpak/xdg-desktop-portal)'') // {
|
||||||
default = false;
|
default = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -54,11 +54,11 @@ in
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
visible = false;
|
visible = false;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Sets environment variable <literal>GTK_USE_PORTAL</literal> to <literal>1</literal>.
|
Sets environment variable `GTK_USE_PORTAL` to `1`.
|
||||||
This will force GTK-based programs ran outside Flatpak to respect and use XDG Desktop Portals
|
This will force GTK-based programs ran outside Flatpak to respect and use XDG Desktop Portals
|
||||||
for features like file chooser but it is an unsupported hack that can easily break things.
|
for features like file chooser but it is an unsupported hack that can easily break things.
|
||||||
Defaults to <literal>false</literal> to respect its opt-in nature.
|
Defaults to `false` to respect its opt-in nature.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,13 +12,13 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
options.xdg.portal.lxqt = {
|
options.xdg.portal.lxqt = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
the desktop portal for the LXQt desktop environment.
|
the desktop portal for the LXQt desktop environment.
|
||||||
|
|
||||||
This will add the <literal>lxqt.xdg-desktop-portal-lxqt</literal>
|
This will add the `lxqt.xdg-desktop-portal-lxqt`
|
||||||
package (with the extra Qt styles) into the
|
package (with the extra Qt styles) into the
|
||||||
<option>xdg.portal.extraPortals</option> option
|
{option}`xdg.portal.extraPortals` option
|
||||||
'';
|
'');
|
||||||
|
|
||||||
styles = mkOption {
|
styles = mkOption {
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
|
|
|
@ -14,13 +14,13 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
options.xdg.portal.wlr = {
|
options.xdg.portal.wlr = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
desktop portal for wlroots-based desktops
|
desktop portal for wlroots-based desktops
|
||||||
|
|
||||||
This will add the <literal>xdg-desktop-portal-wlr</literal> package into
|
This will add the `xdg-desktop-portal-wlr` package into
|
||||||
the <option>xdg.portal.extraPortals</option> option, and provide the
|
the {option}`xdg.portal.extraPortals` option, and provide the
|
||||||
configuration file
|
configuration file
|
||||||
'';
|
'');
|
||||||
|
|
||||||
settings = mkOption {
|
settings = mkOption {
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
|
|
|
@ -7,10 +7,10 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
hardware.brillo = {
|
hardware.brillo = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
Enable brillo in userspace.
|
Enable brillo in userspace.
|
||||||
This will allow brightness control from users in the video group.
|
This will allow brightness control from users in the video group.
|
||||||
'';
|
'');
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
options.hardware.ckb-next = {
|
options.hardware.ckb-next = {
|
||||||
enable = mkEnableOption "the Corsair keyboard/mouse driver";
|
enable = mkEnableOption (lib.mdDoc "the Corsair keyboard/mouse driver");
|
||||||
|
|
||||||
gid = mkOption {
|
gid = mkOption {
|
||||||
type = types.nullOr types.int;
|
type = types.nullOr types.int;
|
||||||
|
|
|
@ -7,15 +7,15 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.programs.corectrl = {
|
options.programs.corectrl = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
A tool to overclock amd graphics cards and processors.
|
A tool to overclock amd graphics cards and processors.
|
||||||
Add your user to the corectrl group to run corectrl without needing to enter your password
|
Add your user to the corectrl group to run corectrl without needing to enter your password
|
||||||
'';
|
'');
|
||||||
|
|
||||||
gpuOverclock = {
|
gpuOverclock = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
true
|
true
|
||||||
'';
|
'');
|
||||||
ppfeaturemask = mkOption {
|
ppfeaturemask = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "0xfffd7fff";
|
default = "0xfffd7fff";
|
||||||
|
|
|
@ -6,7 +6,7 @@ let
|
||||||
in
|
in
|
||||||
with lib; {
|
with lib; {
|
||||||
options.hardware.cpu.amd.sev = {
|
options.hardware.cpu.amd.sev = {
|
||||||
enable = mkEnableOption "access to the AMD SEV device";
|
enable = mkEnableOption (lib.mdDoc "access to the AMD SEV device");
|
||||||
user = mkOption {
|
user = mkOption {
|
||||||
description = lib.mdDoc "Owner to assign to the SEV device.";
|
description = lib.mdDoc "Owner to assign to the SEV device.";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
|
|
@ -20,7 +20,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
options.hardware.cpu.intel.sgx.provision = {
|
options.hardware.cpu.intel.sgx.provision = {
|
||||||
enable = mkEnableOption "access to the Intel SGX provisioning device";
|
enable = mkEnableOption (lib.mdDoc "access to the Intel SGX provisioning device");
|
||||||
user = mkOption {
|
user = mkOption {
|
||||||
description = lib.mdDoc "Owner to assign to the SGX provisioning device.";
|
description = lib.mdDoc "Owner to assign to the SGX provisioning device.";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
|
|
@ -171,7 +171,7 @@ in
|
||||||
default = null;
|
default = null;
|
||||||
type = types.nullOr types.path;
|
type = types.nullOr types.path;
|
||||||
internal = true;
|
internal = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
A path containing the result of applying `overlays` to `kernelPackage`.
|
A path containing the result of applying `overlays` to `kernelPackage`.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,7 +3,7 @@ let
|
||||||
cfg = config.hardware.flirc;
|
cfg = config.hardware.flirc;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.hardware.flirc.enable = lib.mkEnableOption "software to configure a Flirc USB device";
|
options.hardware.flirc.enable = lib.mkEnableOption (lib.mdDoc "software to configure a Flirc USB device");
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ pkgs.flirc ];
|
environment.systemPackages = [ pkgs.flirc ];
|
||||||
|
|
|
@ -7,7 +7,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.hardware.gkraken = {
|
options.hardware.gkraken = {
|
||||||
enable = mkEnableOption "gkraken's udev rules for NZXT AIO liquid coolers";
|
enable = mkEnableOption (lib.mdDoc "gkraken's udev rules for NZXT AIO liquid coolers");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -28,7 +28,7 @@ let
|
||||||
cfg = config.hardware.gpgSmartcards;
|
cfg = config.hardware.gpgSmartcards;
|
||||||
in {
|
in {
|
||||||
options.hardware.gpgSmartcards = {
|
options.hardware.gpgSmartcards = {
|
||||||
enable = mkEnableOption "udev rules for gnupg smart cards";
|
enable = mkEnableOption (lib.mdDoc "udev rules for gnupg smart cards");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -8,11 +8,11 @@ in
|
||||||
|
|
||||||
{
|
{
|
||||||
options.hardware.i2c = {
|
options.hardware.i2c = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
i2c devices support. By default access is granted to users in the "i2c"
|
i2c devices support. By default access is granted to users in the "i2c"
|
||||||
group (will be created if non-existent) and any user with a seat, meaning
|
group (will be created if non-existent) and any user with a seat, meaning
|
||||||
logged on the computer locally.
|
logged on the computer locally.
|
||||||
'';
|
'');
|
||||||
|
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
|
|
@ -6,7 +6,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.hardware.keyboard.teck = {
|
options.hardware.keyboard.teck = {
|
||||||
enable = mkEnableOption "non-root access to the firmware of TECK keyboards";
|
enable = mkEnableOption (lib.mdDoc "non-root access to the firmware of TECK keyboards");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -6,12 +6,12 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.hardware.keyboard.uhk = {
|
options.hardware.keyboard.uhk = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
non-root access to the firmware of UHK keyboards.
|
non-root access to the firmware of UHK keyboards.
|
||||||
You need it when you want to flash a new firmware on the keyboard.
|
You need it when you want to flash a new firmware on the keyboard.
|
||||||
Access to the keyboard is granted to users in the "input" group.
|
Access to the keyboard is granted to users in the "input" group.
|
||||||
You may want to install the uhk-agent package.
|
You may want to install the uhk-agent package.
|
||||||
'';
|
'');
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ in {
|
||||||
];
|
];
|
||||||
|
|
||||||
options.hardware.ksm = {
|
options.hardware.ksm = {
|
||||||
enable = mkEnableOption "Kernel Same-Page Merging";
|
enable = mkEnableOption (lib.mdDoc "Kernel Same-Page Merging");
|
||||||
sleep = mkOption {
|
sleep = mkOption {
|
||||||
type = types.nullOr types.int;
|
type = types.nullOr types.int;
|
||||||
default = null;
|
default = null;
|
||||||
|
|
|
@ -6,7 +6,7 @@ let
|
||||||
cfg = config.hardware.ledger;
|
cfg = config.hardware.ledger;
|
||||||
|
|
||||||
in {
|
in {
|
||||||
options.hardware.ledger.enable = mkEnableOption "udev rules for Ledger devices";
|
options.hardware.ledger.enable = mkEnableOption (lib.mdDoc "udev rules for Ledger devices");
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.udev.packages = [ pkgs.ledger-udev-rules ];
|
services.udev.packages = [ pkgs.ledger-udev-rules ];
|
||||||
|
|
|
@ -19,7 +19,7 @@ in
|
||||||
options.hardware.logitech = {
|
options.hardware.logitech = {
|
||||||
|
|
||||||
lcd = {
|
lcd = {
|
||||||
enable = mkEnableOption "Logitech LCD Devices";
|
enable = mkEnableOption (lib.mdDoc "Logitech LCD Devices");
|
||||||
|
|
||||||
startWhenNeeded = mkOption {
|
startWhenNeeded = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
|
@ -41,7 +41,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
wireless = {
|
wireless = {
|
||||||
enable = mkEnableOption "Logitech Wireless Devices";
|
enable = mkEnableOption (lib.mdDoc "Logitech Wireless Devices");
|
||||||
|
|
||||||
enableGraphical = mkOption {
|
enableGraphical = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
|
|
|
@ -71,7 +71,7 @@ in
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
internal = true;
|
internal = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The package that provides the OpenGL implementation.
|
The package that provides the OpenGL implementation.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -79,9 +79,9 @@ in
|
||||||
package32 = mkOption {
|
package32 = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
internal = true;
|
internal = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The package that provides the 32-bit OpenGL implementation on
|
The package that provides the 32-bit OpenGL implementation on
|
||||||
64-bit systems. Used when <option>driSupport32Bit</option> is
|
64-bit systems. Used when {option}`driSupport32Bit` is
|
||||||
set.
|
set.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -111,11 +111,11 @@ in
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
internal = true;
|
internal = true;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Whether the <literal>LD_LIBRARY_PATH</literal> environment variable
|
Whether the `LD_LIBRARY_PATH` environment variable
|
||||||
should be set to the locations of driver libraries. Drivers which
|
should be set to the locations of driver libraries. Drivers which
|
||||||
rely on overriding libraries should set this to true. Drivers which
|
rely on overriding libraries should set this to true. Drivers which
|
||||||
support <literal>libglvnd</literal> and other dispatch libraries
|
support `libglvnd` and other dispatch libraries
|
||||||
instead of overriding libraries should not set this.
|
instead of overriding libraries should not set this.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,9 +49,9 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
hardware.openrazer = {
|
hardware.openrazer = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
OpenRazer drivers and userspace daemon.
|
OpenRazer drivers and userspace daemon.
|
||||||
'';
|
'');
|
||||||
|
|
||||||
verboseLogging = mkOption {
|
verboseLogging = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
|
|
|
@ -48,7 +48,7 @@ in {
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
hardware.raid.HPSmartArray = {
|
hardware.raid.HPSmartArray = {
|
||||||
enable = mkEnableOption "HP Smart Array kernel modules and CLI utility";
|
enable = mkEnableOption (lib.mdDoc "HP Smart Array kernel modules and CLI utility");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.hardware.saleae-logic = {
|
options.hardware.saleae-logic = {
|
||||||
enable = lib.mkEnableOption "udev rules for Saleae Logic devices";
|
enable = lib.mkEnableOption (lib.mdDoc "udev rules for Saleae Logic devices");
|
||||||
|
|
||||||
package = lib.mkOption {
|
package = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
|
|
|
@ -36,7 +36,7 @@ in
|
||||||
meta.maintainers = with lib.maintainers; [ peterhoeg ];
|
meta.maintainers = with lib.maintainers; [ peterhoeg ];
|
||||||
|
|
||||||
options.hardware.sata.timeout = {
|
options.hardware.sata.timeout = {
|
||||||
enable = mkEnableOption "SATA drive timeouts";
|
enable = mkEnableOption (lib.mdDoc "SATA drive timeouts");
|
||||||
|
|
||||||
deciSeconds = mkOption {
|
deciSeconds = mkOption {
|
||||||
example = 70;
|
example = 70;
|
||||||
|
|
|
@ -57,7 +57,7 @@ let
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
hardware.system76 = {
|
hardware.system76 = {
|
||||||
enableAll = mkEnableOption "all recommended configuration for system76 systems";
|
enableAll = mkEnableOption (lib.mdDoc "all recommended configuration for system76 systems");
|
||||||
|
|
||||||
firmware-daemon.enable = mkOption {
|
firmware-daemon.enable = mkOption {
|
||||||
default = cfg.enableAll;
|
default = cfg.enableAll;
|
||||||
|
|
|
@ -8,23 +8,23 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.hardware.tuxedo-keyboard = {
|
options.hardware.tuxedo-keyboard = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
Enables the tuxedo-keyboard driver.
|
Enables the tuxedo-keyboard driver.
|
||||||
|
|
||||||
To configure the driver, pass the options to the <option>boot.kernelParams</option> configuration.
|
To configure the driver, pass the options to the {option}`boot.kernelParams` configuration.
|
||||||
There are several parameters you can change. It's best to check at the source code description which options are supported.
|
There are several parameters you can change. It's best to check at the source code description which options are supported.
|
||||||
You can find all the supported parameters at: <link xlink:href="https://github.com/tuxedocomputers/tuxedo-keyboard#kernelparam"/>
|
You can find all the supported parameters at: <https://github.com/tuxedocomputers/tuxedo-keyboard#kernelparam>
|
||||||
|
|
||||||
In order to use the <literal>custom</literal> lighting with the maximumg brightness and a color of <literal>0xff0a0a</literal> one would put pass <option>boot.kernelParams</option> like this:
|
In order to use the `custom` lighting with the maximumg brightness and a color of `0xff0a0a` one would put pass {option}`boot.kernelParams` like this:
|
||||||
|
|
||||||
<programlisting>
|
```
|
||||||
boot.kernelParams = [
|
boot.kernelParams = [
|
||||||
"tuxedo_keyboard.mode=0"
|
"tuxedo_keyboard.mode=0"
|
||||||
"tuxedo_keyboard.brightness=255"
|
"tuxedo_keyboard.brightness=255"
|
||||||
"tuxedo_keyboard.color_left=0xff0a0a"
|
"tuxedo_keyboard.color_left=0xff0a0a"
|
||||||
];
|
];
|
||||||
</programlisting>
|
```
|
||||||
'';
|
'');
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable
|
config = mkIf cfg.enable
|
||||||
|
|
|
@ -10,7 +10,7 @@ let
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
options.hardware.ubertooth = {
|
options.hardware.ubertooth = {
|
||||||
enable = mkEnableOption "Enable the Ubertooth software and its udev rules.";
|
enable = mkEnableOption (lib.mdDoc "Enable the Ubertooth software and its udev rules.");
|
||||||
|
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
|
|
@ -4,7 +4,7 @@ let
|
||||||
cfg = config.hardware.uinput;
|
cfg = config.hardware.uinput;
|
||||||
in {
|
in {
|
||||||
options.hardware.uinput = {
|
options.hardware.uinput = {
|
||||||
enable = lib.mkEnableOption "uinput support";
|
enable = lib.mkEnableOption (lib.mdDoc "uinput support");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
|
@ -12,7 +12,7 @@ in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
options.hardware.mwProCapture.enable = mkEnableOption "Magewell Pro Capture family kernel module";
|
options.hardware.mwProCapture.enable = mkEnableOption (lib.mdDoc "Magewell Pro Capture family kernel module");
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
{
|
{
|
||||||
options.hardware.video.hidpi.enable = mkEnableOption "Font/DPI configuration optimized for HiDPI displays";
|
options.hardware.video.hidpi.enable = mkEnableOption (lib.mdDoc "Font/DPI configuration optimized for HiDPI displays");
|
||||||
|
|
||||||
config = mkIf config.hardware.video.hidpi.enable {
|
config = mkIf config.hardware.video.hidpi.enable {
|
||||||
console.font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-v32n.psf.gz";
|
console.font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-v32n.psf.gz";
|
||||||
|
|
|
@ -6,7 +6,7 @@ let
|
||||||
cfg = config.services.switcherooControl;
|
cfg = config.services.switcherooControl;
|
||||||
in {
|
in {
|
||||||
options.services.switcherooControl = {
|
options.services.switcherooControl = {
|
||||||
enable = mkEnableOption "switcheroo-control, a D-Bus service to check the availability of dual-GPU";
|
enable = mkEnableOption (lib.mdDoc "switcheroo-control, a D-Bus service to check the availability of dual-GPU");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -12,7 +12,7 @@ in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
options.hardware.facetimehd.enable = mkEnableOption "facetimehd kernel module";
|
options.hardware.facetimehd.enable = mkEnableOption (lib.mdDoc "facetimehd kernel module");
|
||||||
|
|
||||||
options.hardware.facetimehd.withCalibration = mkOption {
|
options.hardware.facetimehd.withCalibration = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
with lib;
|
with lib;
|
||||||
{
|
{
|
||||||
options.hardware.wooting.enable =
|
options.hardware.wooting.enable =
|
||||||
mkEnableOption "Enable support for Wooting keyboards";
|
mkEnableOption (lib.mdDoc "Enable support for Wooting keyboards");
|
||||||
|
|
||||||
config = mkIf config.hardware.wooting.enable {
|
config = mkIf config.hardware.wooting.enable {
|
||||||
environment.systemPackages = [ pkgs.wootility ];
|
environment.systemPackages = [ pkgs.wootility ];
|
||||||
|
|
|
@ -6,7 +6,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.hardware.xone = {
|
options.hardware.xone = {
|
||||||
enable = mkEnableOption "the xone driver for Xbox One and Xbobx Series X|S accessories";
|
enable = mkEnableOption (lib.mdDoc "the xone driver for Xbox One and Xbobx Series X|S accessories");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -6,7 +6,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.hardware.xpadneo = {
|
options.hardware.xpadneo = {
|
||||||
enable = mkEnableOption "the xpadneo driver for Xbox One wireless controllers";
|
enable = mkEnableOption (lib.mdDoc "the xpadneo driver for Xbox One wireless controllers");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -32,22 +32,20 @@ in
|
||||||
type = types.nullOr (types.enum [ "ibus" "fcitx" "fcitx5" "nabi" "uim" "hime" "kime" ]);
|
type = types.nullOr (types.enum [ "ibus" "fcitx" "fcitx5" "nabi" "uim" "hime" "kime" ]);
|
||||||
default = null;
|
default = null;
|
||||||
example = "fcitx";
|
example = "fcitx";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Select the enabled input method. Input methods is a software to input symbols that are not available on standard input devices.
|
Select the enabled input method. Input methods is a software to input symbols that are not available on standard input devices.
|
||||||
|
|
||||||
Input methods are specially used to input Chinese, Japanese and Korean characters.
|
Input methods are specially used to input Chinese, Japanese and Korean characters.
|
||||||
|
|
||||||
Currently the following input methods are available in NixOS:
|
Currently the following input methods are available in NixOS:
|
||||||
|
|
||||||
<itemizedlist>
|
- ibus: The intelligent input bus, extra input engines can be added using `i18n.inputMethod.ibus.engines`.
|
||||||
<listitem><para>ibus: The intelligent input bus, extra input engines can be added using <literal>i18n.inputMethod.ibus.engines</literal>.</para></listitem>
|
- fcitx: A customizable lightweight input method, extra input engines can be added using `i18n.inputMethod.fcitx.engines`.
|
||||||
<listitem><para>fcitx: A customizable lightweight input method, extra input engines can be added using <literal>i18n.inputMethod.fcitx.engines</literal>.</para></listitem>
|
- fcitx5: The next generation of fcitx, addons (including engines, dictionaries, skins) can be added using `i18n.inputMethod.fcitx5.addons`.
|
||||||
<listitem><para>fcitx5: The next generation of fcitx, addons (including engines, dictionaries, skins) can be added using <literal>i18n.inputMethod.fcitx5.addons</literal>.</para></listitem>
|
- nabi: A Korean input method based on XIM. Nabi doesn't support Qt 5.
|
||||||
<listitem><para>nabi: A Korean input method based on XIM. Nabi doesn't support Qt 5.</para></listitem>
|
- uim: The universal input method, is a library with a XIM bridge. uim mainly support Chinese, Japanese and Korean.
|
||||||
<listitem><para>uim: The universal input method, is a library with a XIM bridge. uim mainly support Chinese, Japanese and Korean.</para></listitem>
|
- hime: An extremely easy-to-use input method framework.
|
||||||
<listitem><para>hime: An extremely easy-to-use input method framework.</para></listitem>
|
- kime: Koream IME.
|
||||||
<listitem><para>kime: Koream IME.</para></listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -55,7 +53,7 @@ in
|
||||||
internal = true;
|
internal = true;
|
||||||
type = types.nullOr types.path;
|
type = types.nullOr types.path;
|
||||||
default = null;
|
default = null;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The input method method package.
|
The input method method package.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,7 +20,7 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
enableRimeData = mkEnableOption "default rime-data with fcitx5-rime";
|
enableRimeData = mkEnableOption (lib.mdDoc "default rime-data with fcitx5-rime");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ in
|
||||||
firmwarePartitionOffset = mkOption {
|
firmwarePartitionOffset = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
default = 8;
|
default = 8;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Gap in front of the /boot/firmware partition, in mebibytes (1024×1024
|
Gap in front of the /boot/firmware partition, in mebibytes (1024×1024
|
||||||
bytes).
|
bytes).
|
||||||
Can be increased to make more space for boards requiring to dd u-boot
|
Can be increased to make more space for boards requiring to dd u-boot
|
||||||
|
|
|
@ -11,7 +11,7 @@ with lib;
|
||||||
internal = true;
|
internal = true;
|
||||||
default = [];
|
default = [];
|
||||||
example = [ { assertion = false; message = "you can't enable this for that reason"; } ];
|
example = [ { assertion = false; message = "you can't enable this for that reason"; } ];
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
This option allows modules to express conditions that must
|
This option allows modules to express conditions that must
|
||||||
hold for the evaluation of the system configuration to
|
hold for the evaluation of the system configuration to
|
||||||
succeed, along with associated error messages for the user.
|
succeed, along with associated error messages for the user.
|
||||||
|
@ -23,7 +23,7 @@ with lib;
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
example = [ "The `foo' service is deprecated and will go away soon!" ];
|
example = [ "The `foo' service is deprecated and will go away soon!" ];
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
This option allows modules to show warnings to users during
|
This option allows modules to show warnings to users during
|
||||||
the evaluation of the system configuration.
|
the evaluation of the system configuration.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -226,15 +226,14 @@ in
|
||||||
nixos.enable = mkOption {
|
nixos.enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Whether to install NixOS's own documentation.
|
Whether to install NixOS's own documentation.
|
||||||
<itemizedlist>
|
|
||||||
<listitem><para>This includes man pages like
|
- This includes man pages like
|
||||||
<citerefentry><refentrytitle>configuration.nix</refentrytitle><manvolnum>5</manvolnum></citerefentry> if <option>documentation.man.enable</option> is
|
{manpage}`configuration.nix(5)` if {option}`documentation.man.enable` is
|
||||||
set.</para></listitem>
|
set.
|
||||||
<listitem><para>This includes the HTML manual and the <command>nixos-help</command> command if
|
- This includes the HTML manual and the {command}`nixos-help` command if
|
||||||
<option>documentation.doc.enable</option> is set.</para></listitem>
|
{option}`documentation.doc.enable` is set.
|
||||||
</itemizedlist>
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ let
|
||||||
specialArgs.someArg.myModule = { lib, ... }: {
|
specialArgs.someArg.myModule = { lib, ... }: {
|
||||||
options.foobar = lib.mkOption {
|
options.foobar = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "The foobar option was added via specialArgs";
|
description = lib.mdDoc "The foobar option was added via specialArgs";
|
||||||
default = "qux";
|
default = "qux";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,7 +19,7 @@ in
|
||||||
|
|
||||||
ids.uids = lib.mkOption {
|
ids.uids = lib.mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The user IDs used in NixOS.
|
The user IDs used in NixOS.
|
||||||
'';
|
'';
|
||||||
type = types.attrsOf types.int;
|
type = types.attrsOf types.int;
|
||||||
|
@ -27,7 +27,7 @@ in
|
||||||
|
|
||||||
ids.gids = lib.mkOption {
|
ids.gids = lib.mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
The group IDs used in NixOS.
|
The group IDs used in NixOS.
|
||||||
'';
|
'';
|
||||||
type = types.attrsOf types.int;
|
type = types.attrsOf types.int;
|
||||||
|
|
|
@ -12,7 +12,7 @@ in
|
||||||
|
|
||||||
nixos.label = mkOption {
|
nixos.label = mkOption {
|
||||||
type = types.strMatching "[a-zA-Z0-9:_\\.-]*";
|
type = types.strMatching "[a-zA-Z0-9:_\\.-]*";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
NixOS version name to be used in the names of generated
|
NixOS version name to be used in the names of generated
|
||||||
outputs and boot labels.
|
outputs and boot labels.
|
||||||
|
|
||||||
|
@ -20,25 +20,26 @@ in
|
||||||
this is the option for you.
|
this is the option for you.
|
||||||
|
|
||||||
It can only contain letters, numbers and the following symbols:
|
It can only contain letters, numbers and the following symbols:
|
||||||
<literal>:</literal>, <literal>_</literal>, <literal>.</literal> and <literal>-</literal>.
|
`:`, `_`, `.` and `-`.
|
||||||
|
|
||||||
The default is <option>system.nixos.tags</option> separated by
|
The default is {option}`system.nixos.tags` separated by
|
||||||
"-" + "-" + <envar>NIXOS_LABEL_VERSION</envar> environment
|
"-" + "-" + {env}`NIXOS_LABEL_VERSION` environment
|
||||||
variable (defaults to the value of
|
variable (defaults to the value of
|
||||||
<option>system.nixos.version</option>).
|
{option}`system.nixos.version`).
|
||||||
|
|
||||||
Can be overriden by setting <envar>NIXOS_LABEL</envar>.
|
Can be overriden by setting {env}`NIXOS_LABEL`.
|
||||||
|
|
||||||
Useful for not loosing track of configurations built from different
|
Useful for not loosing track of configurations built from different
|
||||||
nixos branches/revisions, e.g.:
|
nixos branches/revisions, e.g.:
|
||||||
|
|
||||||
<screen>
|
```
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
today=`date +%Y%m%d`
|
today=`date +%Y%m%d`
|
||||||
branch=`(cd nixpkgs ; git branch 2>/dev/null | sed -n '/^\* / { s|^\* ||; p; }')`
|
branch=`(cd nixpkgs ; git branch 2>/dev/null | sed -n '/^\* / { s|^\* ||; p; }')`
|
||||||
revision=`(cd nixpkgs ; git rev-parse HEAD)`
|
revision=`(cd nixpkgs ; git rev-parse HEAD)`
|
||||||
export NIXOS_LABEL_VERSION="$today.$branch-''${revision:0:7}"
|
export NIXOS_LABEL_VERSION="$today.$branch-''${revision:0:7}"
|
||||||
nixos-rebuild switch</screen>
|
nixos-rebuild switch
|
||||||
|
```
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -46,19 +47,19 @@ in
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
example = [ "with-xen" ];
|
example = [ "with-xen" ];
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Strings to prefix to the default
|
Strings to prefix to the default
|
||||||
<option>system.nixos.label</option>.
|
{option}`system.nixos.label`.
|
||||||
|
|
||||||
Useful for not loosing track of configurations built with
|
Useful for not loosing track of configurations built with
|
||||||
different options, e.g.:
|
different options, e.g.:
|
||||||
|
|
||||||
<screen>
|
```
|
||||||
{
|
{
|
||||||
system.nixos.tags = [ "with-xen" ];
|
system.nixos.tags = [ "with-xen" ];
|
||||||
virtualisation.xen.enable = true;
|
virtualisation.xen.enable = true;
|
||||||
}
|
}
|
||||||
</screen>
|
```
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
documentation.man.man-db = {
|
documentation.man.man-db = {
|
||||||
enable = lib.mkEnableOption "man-db as the default man page viewer" // {
|
enable = lib.mkEnableOption (lib.mdDoc "man-db as the default man page viewer") // {
|
||||||
default = config.documentation.man.enable;
|
default = config.documentation.man.enable;
|
||||||
defaultText = lib.literalExpression "config.documentation.man.enable";
|
defaultText = lib.literalExpression "config.documentation.man.enable";
|
||||||
example = false;
|
example = false;
|
||||||
|
|
|
@ -10,7 +10,7 @@ in {
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
documentation.man.mandoc = {
|
documentation.man.mandoc = {
|
||||||
enable = lib.mkEnableOption "mandoc as the default man page viewer";
|
enable = lib.mkEnableOption (lib.mdDoc "mandoc as the default man page viewer");
|
||||||
|
|
||||||
manPath = lib.mkOption {
|
manPath = lib.mkOption {
|
||||||
type = with lib.types; listOf str;
|
type = with lib.types; listOf str;
|
||||||
|
|
|
@ -38,7 +38,7 @@ in
|
||||||
internal = true;
|
internal = true;
|
||||||
default = [];
|
default = [];
|
||||||
example = literalExpression ''[ lib.maintainers.all ]'';
|
example = literalExpression ''[ lib.maintainers.all ]'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
List of maintainers of each module. This option should be defined at
|
List of maintainers of each module. This option should be defined at
|
||||||
most once per module.
|
most once per module.
|
||||||
'';
|
'';
|
||||||
|
@ -48,7 +48,7 @@ in
|
||||||
type = docFile;
|
type = docFile;
|
||||||
internal = true;
|
internal = true;
|
||||||
example = "./meta.chapter.xml";
|
example = "./meta.chapter.xml";
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Documentation prologue for the set of options of each module. This
|
Documentation prologue for the set of options of each module. This
|
||||||
option should be defined at most once per module.
|
option should be defined at most once per module.
|
||||||
'';
|
'';
|
||||||
|
@ -60,7 +60,7 @@ in
|
||||||
};
|
};
|
||||||
internal = true;
|
internal = true;
|
||||||
default = true;
|
default = true;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
Whether to include this module in the split options doc build.
|
Whether to include this module in the split options doc build.
|
||||||
Disable if the module references `config`, `pkgs` or other module
|
Disable if the module references `config`, `pkgs` or other module
|
||||||
arguments that cannot be evaluated as constants.
|
arguments that cannot be evaluated as constants.
|
||||||
|
|
|
@ -5,7 +5,7 @@ let
|
||||||
|
|
||||||
inherit (config.nixops) enableDeprecatedAutoLuks;
|
inherit (config.nixops) enableDeprecatedAutoLuks;
|
||||||
in {
|
in {
|
||||||
options.nixops.enableDeprecatedAutoLuks = lib.mkEnableOption "Enable the deprecated NixOps AutoLuks module";
|
options.nixops.enableDeprecatedAutoLuks = lib.mkEnableOption (lib.mdDoc "Enable the deprecated NixOps AutoLuks module");
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
assertions = [
|
assertions = [
|
||||||
|
|
|
@ -311,26 +311,26 @@ in
|
||||||
defaultText = lib.literalMD ''
|
defaultText = lib.literalMD ''
|
||||||
Traditionally `builtins.currentSystem`, but unset when invoking NixOS through `lib.nixosSystem`.
|
Traditionally `builtins.currentSystem`, but unset when invoking NixOS through `lib.nixosSystem`.
|
||||||
'';
|
'';
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
This option does not need to be specified for NixOS configurations
|
This option does not need to be specified for NixOS configurations
|
||||||
with a recently generated <literal>hardware-configuration.nix</literal>.
|
with a recently generated `hardware-configuration.nix`.
|
||||||
|
|
||||||
Specifies the Nix platform type on which NixOS should be built.
|
Specifies the Nix platform type on which NixOS should be built.
|
||||||
It is better to specify <literal>nixpkgs.localSystem</literal> instead.
|
It is better to specify `nixpkgs.localSystem` instead.
|
||||||
<programlisting>
|
```
|
||||||
{
|
{
|
||||||
nixpkgs.system = ..;
|
nixpkgs.system = ..;
|
||||||
}
|
}
|
||||||
</programlisting>
|
```
|
||||||
is the same as
|
is the same as
|
||||||
<programlisting>
|
```
|
||||||
{
|
{
|
||||||
nixpkgs.localSystem.system = ..;
|
nixpkgs.localSystem.system = ..;
|
||||||
}
|
}
|
||||||
</programlisting>
|
```
|
||||||
See <literal>nixpkgs.localSystem</literal> for more information.
|
See `nixpkgs.localSystem` for more information.
|
||||||
|
|
||||||
Ignored when <literal>nixpkgs.pkgs</literal>, <literal>nixpkgs.localSystem</literal> or <literal>nixpkgs.hostPlatform</literal> is set.
|
Ignored when `nixpkgs.pkgs`, `nixpkgs.localSystem` or `nixpkgs.hostPlatform` is set.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
options = {
|
options = {
|
||||||
passthru = lib.mkOption {
|
passthru = lib.mkOption {
|
||||||
visible = false;
|
visible = false;
|
||||||
description = ''
|
description = lib.mdDoc ''
|
||||||
This attribute set will be exported as a system attribute.
|
This attribute set will be exported as a system attribute.
|
||||||
You can put whatever you want here.
|
You can put whatever you want here.
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -8,7 +8,7 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
environment.wordlist = {
|
environment.wordlist = {
|
||||||
enable = mkEnableOption "environment variables for lists of words";
|
enable = mkEnableOption (lib.mdDoc "environment variables for lists of words");
|
||||||
|
|
||||||
lists = mkOption {
|
lists = mkOption {
|
||||||
type = types.attrsOf (types.nonEmptyListOf types.path);
|
type = types.attrsOf (types.nonEmptyListOf types.path);
|
||||||
|
|
|
@ -16,7 +16,7 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
programs._1password-gui = {
|
programs._1password-gui = {
|
||||||
enable = mkEnableOption "the 1Password GUI application";
|
enable = mkEnableOption (lib.mdDoc "the 1Password GUI application");
|
||||||
|
|
||||||
polkitPolicyOwners = mkOption {
|
polkitPolicyOwners = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
|
|
|
@ -16,7 +16,7 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
programs._1password = {
|
programs._1password = {
|
||||||
enable = mkEnableOption "the 1Password CLI tool";
|
enable = mkEnableOption (lib.mdDoc "the 1Password CLI tool");
|
||||||
|
|
||||||
package = mkPackageOption pkgs "1Password CLI" {
|
package = mkPackageOption pkgs "1Password CLI" {
|
||||||
default = [ "_1password" ];
|
default = [ "_1password" ];
|
||||||
|
|
|
@ -5,7 +5,7 @@ with lib;
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
programs.appgate-sdp = {
|
programs.appgate-sdp = {
|
||||||
enable = mkEnableOption "AppGate SDP VPN client";
|
enable = mkEnableOption (lib.mdDoc "AppGate SDP VPN client");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ in
|
||||||
|
|
||||||
programs.atop = rec {
|
programs.atop = rec {
|
||||||
|
|
||||||
enable = mkEnableOption "Atop";
|
enable = mkEnableOption (lib.mdDoc "Atop");
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
|
|
|
@ -13,7 +13,7 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
programs.bash-my-aws = {
|
programs.bash-my-aws = {
|
||||||
enable = mkEnableOption "bash-my-aws";
|
enable = mkEnableOption (lib.mdDoc "bash-my-aws");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
programs.bash.enableCompletion = mkEnableOption "Bash completion for all interactive bash shells" // {
|
programs.bash.enableCompletion = mkEnableOption (lib.mdDoc "Bash completion for all interactive bash shells") // {
|
||||||
default = true;
|
default = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
programs.bash.enableLsColors = mkEnableOption "extra colors in directory listings" // {
|
programs.bash.enableLsColors = mkEnableOption (lib.mdDoc "extra colors in directory listings") // {
|
||||||
default = true;
|
default = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,9 +8,9 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
programs.bash.undistractMe = {
|
programs.bash.undistractMe = {
|
||||||
enable = mkEnableOption "notifications when long-running terminal commands complete";
|
enable = mkEnableOption (lib.mdDoc "notifications when long-running terminal commands complete");
|
||||||
|
|
||||||
playSound = mkEnableOption "notification sounds when long-running terminal commands complete";
|
playSound = mkEnableOption (lib.mdDoc "notification sounds when long-running terminal commands complete");
|
||||||
|
|
||||||
timeout = mkOption {
|
timeout = mkOption {
|
||||||
default = 10;
|
default = 10;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
{
|
{
|
||||||
options.programs.bcc.enable = lib.mkEnableOption "bcc";
|
options.programs.bcc.enable = lib.mkEnableOption (lib.mdDoc "bcc");
|
||||||
|
|
||||||
config = lib.mkIf config.programs.bcc.enable {
|
config = lib.mkIf config.programs.bcc.enable {
|
||||||
environment.systemPackages = [ pkgs.bcc ];
|
environment.systemPackages = [ pkgs.bcc ];
|
||||||
|
|
|
@ -4,7 +4,7 @@ with lib;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
options.programs.browserpass.enable = mkEnableOption "Browserpass native messaging host";
|
options.programs.browserpass.enable = mkEnableOption (lib.mdDoc "Browserpass native messaging host");
|
||||||
|
|
||||||
config = mkIf config.programs.browserpass.enable {
|
config = mkIf config.programs.browserpass.enable {
|
||||||
environment.etc = let
|
environment.etc = let
|
||||||
|
|
|
@ -7,9 +7,9 @@ let
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
programs.calls = {
|
programs.calls = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
Whether to enable GNOME calls: a phone dialer and call handler.
|
Whether to enable GNOME calls: a phone dialer and call handler.
|
||||||
'';
|
'');
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
programs.captive-browser = {
|
programs.captive-browser = {
|
||||||
enable = mkEnableOption "captive browser";
|
enable = mkEnableOption (lib.mdDoc "captive browser");
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
|
|
|
@ -6,7 +6,7 @@ let
|
||||||
in {
|
in {
|
||||||
options.programs.ccache = {
|
options.programs.ccache = {
|
||||||
# host configuration
|
# host configuration
|
||||||
enable = mkEnableOption "CCache";
|
enable = mkEnableOption (lib.mdDoc "CCache");
|
||||||
cacheDir = mkOption {
|
cacheDir = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = lib.mdDoc "CCache directory";
|
description = lib.mdDoc "CCache directory";
|
||||||
|
|
|
@ -17,7 +17,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
programs.cfs-zen-tweaks.enable = mkEnableOption "CFS Zen Tweaks";
|
programs.cfs-zen-tweaks.enable = mkEnableOption (lib.mdDoc "CFS Zen Tweaks");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -19,7 +19,7 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
programs.chromium = {
|
programs.chromium = {
|
||||||
enable = mkEnableOption "<command>chromium</command> policies";
|
enable = mkEnableOption (lib.mdDoc "{command}`chromium` policies");
|
||||||
|
|
||||||
extensions = mkOption {
|
extensions = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
|
|
|
@ -8,7 +8,7 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
programs.cnping = {
|
programs.cnping = {
|
||||||
enable = mkEnableOption "Whether to install a setcap wrapper for cnping";
|
enable = mkEnableOption (lib.mdDoc "Whether to install a setcap wrapper for cnping");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
programs.dconf = {
|
programs.dconf = {
|
||||||
enable = mkEnableOption "dconf";
|
enable = mkEnableOption (lib.mdDoc "dconf");
|
||||||
|
|
||||||
profiles = mkOption {
|
profiles = mkOption {
|
||||||
type = types.attrsOf types.path;
|
type = types.attrsOf types.path;
|
||||||
|
|
|
@ -4,7 +4,7 @@ with lib;
|
||||||
|
|
||||||
{
|
{
|
||||||
options.programs.droidcam = {
|
options.programs.droidcam = {
|
||||||
enable = mkEnableOption "DroidCam client";
|
enable = mkEnableOption (lib.mdDoc "DroidCam client");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.programs.droidcam.enable {
|
config = lib.mkIf config.programs.droidcam.enable {
|
||||||
|
|
|
@ -22,7 +22,7 @@ in {
|
||||||
programs.evince = {
|
programs.evince = {
|
||||||
|
|
||||||
enable = mkEnableOption
|
enable = mkEnableOption
|
||||||
"Evince, the GNOME document viewer";
|
(lib.mdDoc "Evince, the GNOME document viewer");
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
|
|
|
@ -5,10 +5,10 @@ let
|
||||||
cfg = config.programs.extra-container;
|
cfg = config.programs.extra-container;
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
programs.extra-container.enable = mkEnableOption ''
|
programs.extra-container.enable = mkEnableOption (lib.mdDoc ''
|
||||||
extra-container, a tool for running declarative NixOS containers
|
extra-container, a tool for running declarative NixOS containers
|
||||||
without host system rebuilds
|
without host system rebuilds
|
||||||
'';
|
'');
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = [ pkgs.extra-container ];
|
environment.systemPackages = [ pkgs.extra-container ];
|
||||||
|
|
|
@ -7,11 +7,11 @@ let
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
programs.feedbackd = {
|
programs.feedbackd = {
|
||||||
enable = mkEnableOption ''
|
enable = mkEnableOption (lib.mdDoc ''
|
||||||
Whether to enable the feedbackd D-BUS service and udev rules.
|
Whether to enable the feedbackd D-BUS service and udev rules.
|
||||||
|
|
||||||
Your user needs to be in the `feedbackd` group to trigger effects.
|
Your user needs to be in the `feedbackd` group to trigger effects.
|
||||||
'';
|
'');
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
Which feedbackd package to use.
|
Which feedbackd package to use.
|
||||||
|
|
|
@ -21,7 +21,7 @@ in {
|
||||||
|
|
||||||
programs.file-roller = {
|
programs.file-roller = {
|
||||||
|
|
||||||
enable = mkEnableOption "File Roller, an archive manager for GNOME";
|
enable = mkEnableOption (lib.mdDoc "File Roller, an archive manager for GNOME");
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
|
|
|
@ -32,26 +32,26 @@ let
|
||||||
|
|
||||||
in {
|
in {
|
||||||
options.programs.firejail = {
|
options.programs.firejail = {
|
||||||
enable = mkEnableOption "firejail";
|
enable = mkEnableOption (lib.mdDoc "firejail");
|
||||||
|
|
||||||
wrappedBinaries = mkOption {
|
wrappedBinaries = mkOption {
|
||||||
type = types.attrsOf (types.either types.path (types.submodule {
|
type = types.attrsOf (types.either types.path (types.submodule {
|
||||||
options = {
|
options = {
|
||||||
executable = mkOption {
|
executable = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = "Executable to run sandboxed";
|
description = lib.mdDoc "Executable to run sandboxed";
|
||||||
example = literalExpression ''"''${lib.getBin pkgs.firefox}/bin/firefox"'';
|
example = literalExpression ''"''${lib.getBin pkgs.firefox}/bin/firefox"'';
|
||||||
};
|
};
|
||||||
profile = mkOption {
|
profile = mkOption {
|
||||||
type = types.nullOr types.path;
|
type = types.nullOr types.path;
|
||||||
default = null;
|
default = null;
|
||||||
description = "Profile to use";
|
description = lib.mdDoc "Profile to use";
|
||||||
example = literalExpression ''"''${pkgs.firejail}/etc/firejail/firefox.profile"'';
|
example = literalExpression ''"''${pkgs.firejail}/etc/firejail/firefox.profile"'';
|
||||||
};
|
};
|
||||||
extraArgs = mkOption {
|
extraArgs = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
description = "Extra arguments to pass to firejail";
|
description = lib.mdDoc "Extra arguments to pass to firejail";
|
||||||
example = [ "--private=~/.firejail_home" ];
|
example = [ "--private=~/.firejail_home" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@ let
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
programs.flexoptix-app = {
|
programs.flexoptix-app = {
|
||||||
enable = mkEnableOption "FLEXOPTIX app + udev rules";
|
enable = mkEnableOption (lib.mdDoc "FLEXOPTIX app + udev rules");
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
description = lib.mdDoc "FLEXOPTIX app package to use";
|
description = lib.mdDoc "FLEXOPTIX app package to use";
|
||||||
|
|
|
@ -10,9 +10,9 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
programs.gamemode = {
|
programs.gamemode = {
|
||||||
enable = mkEnableOption "GameMode to optimise system performance on demand";
|
enable = mkEnableOption (lib.mdDoc "GameMode to optimise system performance on demand");
|
||||||
|
|
||||||
enableRenice = mkEnableOption "CAP_SYS_NICE on gamemoded to support lowering process niceness" // {
|
enableRenice = mkEnableOption (lib.mdDoc "CAP_SYS_NICE on gamemoded to support lowering process niceness") // {
|
||||||
default = true;
|
default = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
programs.geary.enable = mkEnableOption "Geary, a Mail client for GNOME 3";
|
programs.geary.enable = mkEnableOption (lib.mdDoc "Geary, a Mail client for GNOME 3");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -9,7 +9,7 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = mkEnableOption "git";
|
enable = mkEnableOption (lib.mdDoc "git");
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
|
@ -33,7 +33,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
lfs = {
|
lfs = {
|
||||||
enable = mkEnableOption "git-lfs";
|
enable = mkEnableOption (lib.mdDoc "git-lfs");
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
|
|
|
@ -24,7 +24,7 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
programs.gnome-terminal.enable = mkEnableOption "GNOME Terminal";
|
programs.gnome-terminal.enable = mkEnableOption (lib.mdDoc "GNOME Terminal");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -4,7 +4,7 @@ with lib;
|
||||||
|
|
||||||
{
|
{
|
||||||
options.programs.haguichi = {
|
options.programs.haguichi = {
|
||||||
enable = mkEnableOption "Haguichi, a Linux GUI frontend to the proprietary LogMeIn Hamachi";
|
enable = mkEnableOption (lib.mdDoc "Haguichi, a Linux GUI frontend to the proprietary LogMeIn Hamachi");
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf config.programs.haguichi.enable {
|
config = mkIf config.programs.haguichi.enable {
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue