| SLAM(5) | File Formats Manual | SLAM(5) |
slam —
SLAM configuration options
DESCRIPTION
System Layer Abstraction Modules is a collection of Nix modules for composing an operating base layer as well as high-level subsystems. Each SLAM import provides a set of configuration options, a set of derived configuration values, or both.
This manual covers configuration options. It covers only the modules imported at the moment it was generated and the set of available options is variable and depends on which modules are imported.
OPTIONS
_module.args
Additional arguments passed to each module in addition to ones like lib, config, pkgs, and modulesPath.
This option is also available to all submodules. Submodules do not inherit args from their parent module, nor do they provide args to their parent module or sibling submodules. The sole exception to this is the argument name which is provided by parent modules to a submodule and contains the attribute name the submodule is bound to, or a unique generated name if it is not bound to an attribute.
Some arguments are already passed by default, of which the following cannot be changed with this option:
- lib
- The Nixpkgs library.
- config
- The results of all options after merging the values from all modules together.
- options
- The options declared in all modules.
- specialArgs
- The specialArgs argument passed to
lib.evalModules. - pkgs
- The Nixpkgs package set.
- All attributes of specialArgs
- Whereas option values can generally depend on other option values thanks
to laziness, this does not apply to imports, which
must be computed statically before anything else.
For this reason, callers of the module system can provide specialArgs which are available during import resolution.
specialArgs includes slamPath which is the location of the modules directory within the SLAM repositiory and modulesPath which is the location of the modules directory within the NixOS repository.
- type: lazy attribute set of raw value
- declared by:
- lib/modules.nix
boot.bootspec.enableValidation
Whether to enable the validation of bootspec documents for each build. This will introduce Go in the build-time closure as we are relying on Cuelang for schema validation. Enable this option if you want to ascertain that your documents are correct
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/boot/bootspec.nix
boot.bootspec.extensions
User-defined data that extends the bootspec document.
To reduce incompatibility and prevent names from clashing between applications, it is highly recommended to use a unique namespace for your extensions.
- type: attribute set of anything
- default:
-
{ } - declared by:
- <SLAM>/modules/boot/bootspec.nix
boot.bootspec.package
The package to use for bootspec.
- type: package
- default:
-
pkgs.bootspec
- declared by:
- <SLAM>/modules/boot/bootspec.nix
boot.extraModulePackages
A list of additional packages supplying kernel modules.
- type: list of package
- default:
-
[ ]
- example:
-
[ config.boot.kernelPackages.nvidia_x11 ]
- declared by:
- <SLAM>/modules/boot/kernel.nix
boot.hardwareManager
Which hardware-manager to start on boot.
- type: one of mdevd, udev
boot.init.pid1.argv
The PID 1 command line as a closure-list.
- type: attribute set of (submodule)
- declared by:
- <SLAM>/modules/boot/init.nix
boot.init.pid1.argv.<name>.deps
List of argument groups that must precede this one.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/boot/init.nix
boot.init.pid1.argv.<name>.text
Group of arguments for the pid1 command-line.
- type: string or list of (string or absolute path)
- declared by:
- <SLAM>/modules/boot/init.nix
boot.init.pid1.env
Environment variables to start PID 1 with.
- type: attribute set of string
- default:
-
{ } - declared by:
- <SLAM>/modules/boot/init.nix
boot.init.script
Stage 2 boot script.
- type: read-only absolute path
- declared by:
- <SLAM>/modules/boot/init.nix
boot.initrd.availableKernelModules
The set of kernel modules in the initial ramdisk used during the boot process. This set must include all modules necessary for mounting the root device. That is, it should include modules for the physical device (e.g., SCSI drivers) and for the file system (e.g., ext3). The set specified here is automatically closed under the module dependency relation, i.e., all dependencies of the modules list here are included automatically. The modules listed here are available in the initrd, but are only loaded on demand (e.g., the ext3 module is loaded automatically when an ext3 filesystem is mounted, and modules for PCI devices are loaded when they match the PCI ID of a device in your system). To force a module to be loaded, include it in boot.initrd.kernelModules.
- type: list of string
- default:
-
[ ]
- example:
-
[ "sata_nv" "ext3" ]
- declared by:
- <SLAM>/modules/boot/kernel.nix
boot.initrd.compressor
The compressor to use on the initrd image. May be any of:
- The name of one of the predefined compressors, see pkgs/build-support/kernel/initrd-compressor-meta.nix for the definitions.
- A function which, given the nixpkgs package set, returns the path to a
compressor tool, e.g. ‘
pkgs: ${pkgs.pigz}/bin/pigz’ - (not recommended, because it does not work when cross-compiling) the full path to a compressor tool, e.g. ‘${pkgs.pigz}/bin/pigz’
- type: string or function that evaluates to a(n) string
- default:
zstdif the kernel supports it (5.9+),gzipif not- example:
-
"xz"
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.compressorArgs
Arguments to pass to the compressor for the initrd image, or null to use the compressor's defaults.
- type: null or (list of string)
- default:
-
null
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.contents
Contents of the initrd.
- type: list of (submodule)
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.contents.*.source
Source of file content to inserting into the initrd.
- type: absolute path
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.contents.*.target
Location of file content within the initrd.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.enable
Whether to enable the NixOS initial RAM disk (initrd). This may be needed to perform some initialisation tasks (like mounting network/encrypted file systems) before continuing the boot process.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.kernelModules
List of modules that are always loaded by the initrd.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/boot/kernel.nix
boot.initrd.mountScript
Composite mount script.
- type: read-only unspecified value
- default:
- Concatenated execline.
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.mountScripts
Execline snippets for mounting file-systems during stage 1.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.mountScripts.<name>.deps
List of dependencies. The script will run after these.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.mountScripts.<name>.text
Execline script to be enclosed by an "if" block.
- type: strings concatenated with 0
- default:
-
{ } - declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.package
the initrd to use for your system... use a module to build one
- type: package
- declared by:
- <SLAM>/modules/boot/initrd
boot.initrd.supportedFilesystems."9p".enable
Whether to enable the 9P protocol.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/9p.nix
boot.initrd.supportedFilesystems.btrfs.enable
Whether to enable btrfs.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/btrfs.nix
boot.initrd.supportedFilesystems.btrfs.packages
Support packages for btrfs.
- type: list of package
- default:
-
[ pkgs.btrfs-progs ]
- declared by:
- <SLAM>/modules/filesystems/btrfs.nix
boot.initrd.supportedFilesystems.erofs.enable
Whether to enable EROFS.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/erofs.nix
boot.initrd.supportedFilesystems.ext2.enable
Whether to enable ext2.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/ext2.nix
boot.initrd.supportedFilesystems.ext2.packages
Support packages for ext2.
- type: list of package
- default:
-
[ pkgs.e2fsprogs ]
- declared by:
- <SLAM>/modules/filesystems/ext2.nix
boot.initrd.supportedFilesystems.ext4.enable
Whether to enable ext4.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/ext4.nix
boot.initrd.supportedFilesystems.ext4.packages
Support packages for ext4.
- type: list of package
- default:
-
[ pkgs.e2fsprogs ]
- declared by:
- <SLAM>/modules/filesystems/ext4.nix
boot.initrd.supportedFilesystems.f2fs.enable
Whether to enable f2fs.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/f2fs.nix
boot.initrd.supportedFilesystems.f2fs.packages
Support packages for f2fs.
- type: list of package
- default:
-
[ pkgs.f2fs-tools ]
- declared by:
- <SLAM>/modules/filesystems/f2fs.nix
boot.initrd.supportedFilesystems.fuse.enable
Whether to enable FUSE.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/fuse.nix
boot.initrd.supportedFilesystems.none.enable
Whether to enable the file-system placeholder.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/special.nix
boot.initrd.supportedFilesystems.overlay.enable
Whether to enable overlayfs.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/overlayfs.nix
boot.initrd.supportedFilesystems.tmpfs.enable
Whether to enable tmpfs.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/tmpfs.nix
boot.initrd.supportedFilesystems.vfat.enable
Whether to enable FAT.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/vfat.nix
boot.initrd.supportedFilesystems.vfat.packages
Support packages for FAT file-systems.
- type: list of package
- declared by:
- <SLAM>/modules/filesystems/vfat.nix
boot.initrd.supportedFilesystems.xfs.enable
Whether to enable XFS.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/xfs.nix
boot.initrd.supportedFilesystems.xfs.packages
Support packages for XFS.
- type: list of package
- default:
-
[ pkgs.xfsprogs.bin ]
- declared by:
- <SLAM>/modules/filesystems/xfs.nix
boot.initrd.supportedFilesystems.zfs.enable
Whether to enable ZFS.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/zfs.nix
boot.initrd.supportedFilesystems.zfs.packages
Support packages for ZFS.
- type: list of package
- default:
-
[ pkgs.zfs ]
- declared by:
- <SLAM>/modules/filesystems/zfs.nix
boot.kernel.enable
Whether to enable the Linux kernel. This is useful for systemd-like containers which do not require a kernel.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/boot/kernel.nix
boot.kernel.randstructSeed
Provides a custom seed for the RANDSTRUCT security option of the Linux kernel. Note that RANDSTRUCT is only enabled in NixOS hardened kernels. Using a custom seed requires building the kernel and dependent packages locally, since this customization happens at build time.
- type: string
- default:
-
""
- example:
-
"my secret seed"
- declared by:
- <SLAM>/modules/boot/kernel.nix
boot.kernel.sysctl
Runtime parameters of the Linux kernel, as set by
sysctl(8). Note that sysctl parameters names must be
enclosed in quotes (e.g.
‘vm.swappiness’ instead of
‘vm.swappiness’). The value of each
parameter may be a string, integer, boolean, or null (signifying the option
will not appear at all).
- type: open submodule of attribute set of (sysctl option value)
- default:
-
{ } - example:
-
{ "net.ipv4.tcp_syncookies" = false; "vm.swappiness" = 60; } - declared by:
- <SLAM>/modules/boot/sysctl.nix
boot.kernel.sysctl."net.core.rmem_max"
The maximum receive socket buffer size in bytes. In case of conflicting values, the highest will be used.
- type: null or (unsigned integer, meaning >=0)
- default:
-
null
- declared by:
- <SLAM>/modules/boot/sysctl.nix
boot.kernel.sysctl."net.core.wmem_max"
The maximum send socket buffer size in bytes. In case of conflicting values, the highest will be used.
- type: null or (unsigned integer, meaning >=0)
- default:
-
null
- declared by:
- <SLAM>/modules/boot/sysctl.nix
boot.kernel.sysctl."vm.max_map_count"
The maximum number of memory map areas a process may have. In case of conflicting values, the highest will be used.
- type: null or (unsigned integer, meaning >=0)
- default:
-
null
- declared by:
- <SLAM>/modules/boot/sysctl.nix
boot.kernelModules
The set of kernel modules to be loaded in the second stage of the boot process. Note that modules that are needed to mount the root file system should be added to boot.initrd.availableKernelModules or boot.initrd.kernelModules.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/boot/kernel.nix
boot.kernelPackages
This option allows you to override the Linux kernel used by NixOS. Since things like external kernel module packages are tied to the kernel you're using, it also overrides those. This option is a function that takes Nixpkgs as an argument (as a convenience), and returns an attribute set containing at the very least an attribute kernel. Additional attributes may be needed depending on your configuration. For instance, if you use the NVIDIA X driver, then it also needs to contain an attribute nvidia_x11.
Please note that we strictly support kernel versions that are maintained by the Linux developers only. More information on the availability of kernel versions is documented in the Linux section of the manual.
- type: raw value
- default:
-
pkgs.linuxPackages
- example:
-
pkgs.linuxKernel.packages.linux_5_10
- declared by:
- <SLAM>/modules/boot/kernel.nix
boot.kernelParams
Parameters added to the kernel command line.
- type: list of string, with spaces inside double quotes
- default:
-
[ ]
- declared by:
- <SLAM>/modules/boot/kernel.nix
boot.kernelPatches
A list of additional patches to apply to the kernel.
Every item should be an attribute set with the following attributes:
{
# descriptive name, required
name = "foo";
# path or derivation that contains the patch source
# (required, but can be null if only config changes
# are needed)
patch = ./foo.patch;
# attrset of extra configuration parameters without the CONFIG_ prefix
# (optional) values should generally be lib.kernel.yes,
# lib.kernel.no or lib.kernel.module
extraStructuredConfig = {
FOO = lib.kernel.yes;
};
# attrset of extra "features" the kernel is considered to have
# (may be checked by other NixOS modules, optional)
features = {
foo = true;
};
# extra configuration options in string form without the CONFIG_ prefix
# (optional, multiple lines allowed to specify multiple options)
# (deprecated, use extraStructuredConfig instead)
extraConfig = "FOO y";
}
There's a small set of existing kernel patches in Nixpkgs,
available as ‘pkgs.kernelPatches’,
that follow this format and can be used directly.
- type: list of (attribute set)
- default:
-
[ ]
- example:
-
[ { name = "foo"; patch = ./foo.patch; extraStructuredConfig.FOO = lib.kernel.yes; features.foo = true; } { name = "foo-ml-mbox"; patch = (fetchurl { url = "https://lore.kernel.org/lkml/19700205182810.58382-1-email@domain/t.mbox.gz"; hash = "sha256-..."; }); } ] - declared by:
- <SLAM>/modules/boot/kernel.nix
boot.loader.installScripts
Execline scripts for bootloader installation.
- type: attribute set of ((submodule) or string convertible to it)
- default:
-
{ } - declared by:
- <SLAM>/modules/boot/loader.nix
boot.loader.installScripts.<name>.deps
List of dependencies. The script will run after these.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/boot/loader.nix
boot.loader.installScripts.<name>.text
Execline script to be enclosed by an "if" block. The following variables will be substituted before execution: - $toplevel The top-level derivation being installed. - $boot The boot directory of the system installation.
- type: strings concatenated with 0
- default:
-
{ } - declared by:
- <SLAM>/modules/boot/loader.nix
boot.modprobeConfig.enable
Whether to enable modprobe config. This is useful for systems like containers which do not require a kernel.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/boot/modprobe.nix
boot.supportedFilesystems."9p".enable
Whether to enable the 9P protocol.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/9p.nix
boot.supportedFilesystems.btrfs.enable
Whether to enable btrfs.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/btrfs.nix
boot.supportedFilesystems.btrfs.packages
Support packages for btrfs.
- type: list of package
- default:
-
[ pkgs.btrfs-progs ]
- declared by:
- <SLAM>/modules/filesystems/btrfs.nix
boot.supportedFilesystems.efivarfs.enable
Whether to enable EFI varfs.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/efivarfs.nix
boot.supportedFilesystems.erofs.enable
Whether to enable EROFS.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/erofs.nix
boot.supportedFilesystems.ext2.enable
Whether to enable ext2.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/ext2.nix
boot.supportedFilesystems.ext2.packages
Support packages for ext2.
- type: list of package
- default:
-
[ pkgs.e2fsprogs ]
- declared by:
- <SLAM>/modules/filesystems/ext2.nix
boot.supportedFilesystems.ext4.enable
Whether to enable ext4.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/ext4.nix
boot.supportedFilesystems.ext4.packages
Support packages for ext4.
- type: list of package
- default:
-
[ pkgs.e2fsprogs ]
- declared by:
- <SLAM>/modules/filesystems/ext4.nix
boot.supportedFilesystems.f2fs.enable
Whether to enable f2fs.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/f2fs.nix
boot.supportedFilesystems.f2fs.packages
Support packages for f2fs.
- type: list of package
- default:
-
[ pkgs.f2fs-tools ]
- declared by:
- <SLAM>/modules/filesystems/f2fs.nix
boot.supportedFilesystems.fuse.enable
Whether to enable FUSE.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/fuse.nix
boot.supportedFilesystems."fuse.mergerfs".enable
Whether to enable mergefs.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/fuse.mergerfs.nix
boot.supportedFilesystems.none.enable
Whether to enable the file-system placeholder.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/special.nix
boot.supportedFilesystems.overlay.enable
Whether to enable overlayfs.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/overlayfs.nix
boot.supportedFilesystems.tmpfs.enable
Whether to enable tmpfs.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/tmpfs.nix
boot.supportedFilesystems.vfat.enable
Whether to enable FAT.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/vfat.nix
boot.supportedFilesystems.vfat.packages
Support packages for FAT file-systems.
- type: list of package
- declared by:
- <SLAM>/modules/filesystems/vfat.nix
boot.supportedFilesystems.xfs.enable
Whether to enable XFS.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/xfs.nix
boot.supportedFilesystems.xfs.packages
Support packages for XFS.
- type: list of package
- default:
-
[ pkgs.xfsprogs.bin ]
- declared by:
- <SLAM>/modules/filesystems/xfs.nix
boot.supportedFilesystems.zfs.enable
Whether to enable ZFS.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/filesystems/zfs.nix
boot.supportedFilesystems.zfs.packages
Support packages for ZFS.
- type: list of package
- default:
-
[ pkgs.zfs ]
- declared by:
- <SLAM>/modules/filesystems/zfs.nix
boot.zfs.importPools
List of ZFS pools to import at boot. Defaults to the pools necessary for booting.
- type: list of string
- example:
-
[ "jug" "bucket" ]
- declared by:
- <SLAM>/modules/filesystems/zfs.nix
boot.zfs.loadKeys
List of ZFS dataset names to load keys for during boot.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/filesystems/zfs.nix
documentation.dev.enable
Whether to enable install developer documentation.
documentation.doc.enable
Whether to install share/doc directories into the system environment.
documentation.enable
Whether to enable install system documentation.
documentation.info.enable
Whether to install info pages into the system environment.
documentation.man.enable
Whether to install manual pages into the system environment.
documentation.man.package
Package providing the man program.
documentation.manual.package
Package of this manual.
- type: read-only unspecified value
environment.etc
Set of files that have to be linked in /etc.
- type: attribute set of (submodule)
- default:
-
{ } - example:
-
{ example-configuration-file = { source = "/nix/store/.../etc/dir/file.conf.example"; mode = "0440"; }; "default/useradd".text = "GROUP=100 ..."; } - declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.enable
Whether this /etc file should be generated. This option allows specific /etc files to be disabled.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.gid
GID of created file. Only takes effect when the file is copied
(that is, the mode is not
‘symlink’).
- type: signed integer
- default:
-
0
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.group
Group name of created file. Only takes effect when the file is
copied (that is, the mode is not
‘symlink’ ). Changing this option
takes precedence over gid.
- type: string
- default:
-
"+0"
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.mode
If set to something else than
‘symlink’, the file is copied instead
of symlinked, with the given file mode.
- type: string
- default:
-
"symlink"
- example:
-
"0600"
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.source
Path of the source file.
- type: absolute path
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.target
Name of symlink (relative to /etc). Defaults to the attribute name.
- type: string
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.text
Text of the file.
- type: null or strings concatenated with 0
- default:
-
null
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.uid
UID of created file. Only takes effect when the file is copied
(that is, the mode is not ‘symlink’
).
- type: signed integer
- default:
-
0
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.etc.<name>.user
User name of created file. Only takes effect when the file is
copied (that is, the mode is not
‘symlink’). Changing this option takes
precedence over uid.
- type: string
- default:
-
"+0"
- declared by:
- <SLAM>/modules/environment/etc/options.nix
environment.extraOutputsToInstall
List of package outputs to install. If not specified then only the default outputs are installed and outputs such as "doc" or "man" are not.
- type: list of string
- default:
-
[ ]
- example:
-
[ "man" ]
- declared by:
- <SLAM>/modules/environment/path
environment.extraSetup
Shell fragments to be run after the system environment has been
created. This should only be used for things that need to modify the
internals of the environment, e.g. generating MIME caches. The environment
being built can be accessed at the out environment
variable.
- type: strings concatenated with 0
- default:
-
""
- declared by:
- <SLAM>/modules/environment/path
environment.libDirs
List of directories to symlink into /lib.
- type: list of absolute path
- default:
-
[ ]
- declared by:
- <SLAM>/modules/environment/links.nix
environment.path
Composite package produced by
buildEnv.
- type: read-only absolute path
- declared by:
- <SLAM>/modules/environment/path
environment.pathsToLink
List of directories to be symlinked in /run/current-system/sw.
- type: list of string
- default:
-
[ ]
- example:
-
[ "/" ]
- declared by:
- <SLAM>/modules/environment/path
environment.shells
List of packages to register in /etc/shells.
- type: list of (package or absolute path)
- default:
-
[ ]
- declared by:
- <SLAM>/modules/environment/shells
environment.systemPackages
List of packages available in the standard system environment.
- type: list of package
- default:
-
{ } - declared by:
- <SLAM>/modules/environment/path
fileSystems
The file systems to be mounted. It must include an entry for the
root directory ( ‘mountPoint = /’ ).
Each entry in the list is an attribute set with the following fields:
mountPoint, device,
fsType (a file system type recognised by
mount; defaults to auto,)
and options (the mount options passed to
mount using the -o flag;
defaults to ‘[ defaults ]’).
Instead of specifying device, you can also specify a volume label ( label) for file systems that support it, such as ext2/ext3 (see mke2fs(8) ).
- type: attribute set of (submodule)
- default:
-
{ } - example:
-
{ "/".device = "/dev/hda1"; "/data" = { device = "/dev/hda2"; fsType = "ext3"; options = [ "data=journal" ]; }; "/bigdisk".label = "bigdisk"; } - declared by:
- <SLAM>/modules/filesystems/overlayfs.nix
<SLAM>/modules/filesystems/options.nix
fileSystems.<name>.depends
List of paths that should be mounted before this one. This filesystem's device and mountPoint are always checked and do not need to be included explicitly. If a path is added to this list, any other filesystem whose mount point is a parent of the path will be mounted before this filesystem. The paths do not need to actually be the mountPoint of some other filesystem.
- type: list of string (with check: non-empty without trailing slash)
- default:
-
[ ]
- example:
-
[ "/persist" ]
- declared by:
- <SLAM>/modules/filesystems/options.nix
fileSystems.<name>.device
Location of the device.
- type: null or non-empty string
- default:
-
null
- example:
-
"/dev/sda"
- declared by:
- <SLAM>/modules/filesystems/options.nix
fileSystems.<name>.fsType
Type of the file system.
- type: non-empty string
- default:
-
"auto"
- example:
-
"ext3"
- declared by:
- <SLAM>/modules/filesystems/options.nix
fileSystems.<name>.label
Label of the device (if any).
- type: null or non-empty string
- default:
-
null
- example:
-
"root-partition"
- declared by:
- <SLAM>/modules/filesystems/options.nix
fileSystems.<name>.mountPoint
Location of the mounted file system.
- type: string (with check: non-empty without trailing slash)
- example:
-
"/mnt/usb"
- declared by:
- <SLAM>/modules/filesystems/options.nix
fileSystems.<name>.neededForBoot
Whether this file-system must be mounted before entering stage 2 of booting.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/filesystems/options.nix
fileSystems.<name>.noCheck
Disable running fsck on this filesystem.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/filesystems/options.nix
fileSystems.<name>.options
Options used to mount the file system.
- type: non-empty (list of non-empty string)
- default:
-
[ "defaults" ]
- example:
-
[ "data=journal" ]
- declared by:
- <SLAM>/modules/filesystems/options.nix
fileSystems.<name>.overlay.lowerdir
The list of path(s) to the lowerdir(s).
To create a writable overlay, you MUST provide a upperdir and a workdir.
You can create a read-only overlay when you provide multiple (at least 2!) lowerdirs and neither an upperdir nor a workdir.
- type: null or (non-empty (list of (string or path in the Nix store)))
- default:
-
null
- declared by:
- <SLAM>/modules/filesystems/overlayfs.nix
fileSystems.<name>.overlay.upperdir
The path to the upperdir.
If this is null, a read-only overlay is created using the lowerdir.
If the filesystem is neededForBoot, this
will be prefixed with /sysroot, unless
useStage1BaseDirectories is set to
‘true’.
If you set this to some value you MUST also set workdir.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/filesystems/overlayfs.nix
fileSystems.<name>.overlay.useStage1BaseDirectories
If enabled, lowerdir, upperdir and workdir will be prefixed with /sysroot.
Disabling this can be useful to create an overlay over directories which aren't on the real root.
Disabling this does not work with the scripted (i.e. non-systemd) initrd.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/filesystems/overlayfs.nix
fileSystems.<name>.overlay.workdir
The path to the workdir.
If the filesystem is neededForBoot, this
will be prefixed with /sysroot, unless
useStage1BaseDirectories is set to
‘true’.
This MUST be set if you set upperdir.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/filesystems/overlayfs.nix
finit.cgroups
An attribute set of cgroups (v2) that will be created by `finit`.
See [upstream documentation](https://github.com/troglobit/finit/blob/master/doc/config.md#cgroups) for additional details.
finit.cgroups.<name>.name
The name of the cgroup to create.
finit.cgroups.<name>.settings
Settings to apply to this cgroup.
See [kernel documentation](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html) for additional details.
finit.enable
Whether to enable [finit](https://troglobit.com/projects/finit/) as the system service manager and pid `1`.
finit.environment
Environment variables passed to *all* `finit` services.
finit.package
The package to use for `finit`.
finit.path
Packages added to the `finit` PATH environment variable.
finit.readiness
In this mode of operation, every service needs to explicitly declare their readiness notification
finit.rlimits
An attribute set of resource limits that will be apply by `finit`.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc/config.md#resource-limits) for additional details.
finit.run
An attribute set of one-shot commands to run in sequence when entering a runlevel. `run` commands are guaranteed to be completed before running the next command. Useful when serialization is required.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#one-shot-commands-sequence) for additional details.
finit.run.<name>.caps
Allow services to run with minimal required privileges instead of running as `root`.
finit.run.<name>.cgroup.delegate
For services that need to create their own child `cgroups` (container runtimes like `docker`, `podman`, `systemd-nspawn`, `lxc`, etc...).
See [ustream documentation](https://finit-project.github.io/config/cgroups/#cgroup-delegation) for details.
finit.run.<name>.cgroup.name
The name of the cgroup to place this process under.
finit.run.<name>.cgroup.settings
The cgroup settings to apply to this process.
See [kernel documentation](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html) for additional details.
finit.run.<name>.cleanup
A script which will be called when the service is removed.
finit.run.<name>.command
Command to run.
- type: main program, path or command
finit.run.<name>.conditions
See [upstream documentation](https://github.com/troglobit/finit/blob/master/doc/conditions.md) for details.
finit.run.<name>.conflict
If you have conflicting services and want to prevent them from starting.
finit.run.<name>.description
Service description.
finit.run.<name>.enable
Whether to enable this service.
finit.run.<name>.env
either a path or a path prefixed with a '-' to indicate a missing file is fine.
finit.run.<name>.environment
Environment variables passed to this service.
finit.run.<name>.extraConfig
A place for `finit` configuration options which have not been added to the `nix` module yet.
finit.run.<name>.group
The group this service should be executed as.
finit.run.<name>.id
Service id.
- type: read-only null or string
finit.run.<name>.kill
The delay in seconds between `finit` sending a `SIGTERM` and a `SIGKILL`.
finit.run.<name>.log
Redirect `stderr` and `stdout` of the application to a file or `syslog` using the native `logit` tool. This is useful for programs that do not support `syslog` on their own, which is sometimes the case when running in the foreground.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#redirecting-output) for additional details.
finit.run.<name>.manual
If a service should not be automatically started, it can be configured as manual. The service can then be started at any time by running `initctl start <service>`.
finit.run.<name>.name
Service name.
- type: read-only string
finit.run.<name>.nohup
Whether this service supports reload on SIGHUP.
finit.run.<name>.notify
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#service-synchronization) for details.
finit.run.<name>.oncrash
- `reboot` - when all retries have failed, and the service has crashed, if this option is set the system is rebooted. - `script` - similarly, but instead of rebooting, call the `post:script` action if set.
finit.run.<name>.path
Packages added to the `PATH` environment variable of this service.
finit.run.<name>.pid
See [upstream documentation](https://github.com/troglobit/finit/blob/master/doc/service.md) for details.
finit.run.<name>.post
A script which will be called after the service has stopped.
finit.run.<name>.pre
A script which will be called before the service is started.
finit.run.<name>.priority
Order of this `run` command in relation to the others. The semantics are the same as with `lib.mkOrder`. Smaller values have a greater priority.
finit.run.<name>.ready
A script which will be called when the service is ready.
finit.run.<name>.reload
Some services do not support `SIGHUP` but may have other ways to update the configuration of a running daemon. When `reload` is defined it is preferred over `SIGHUP`. Like `systemd`, `finit` sets ``$MAINPID` as a convenience to scripts, which in effect also allow setting `reload` to `kill -HUP $MAINPID`.
::: {.note} `reload` is called as PID 1, without any timeout! Meaning, it is up to you to ensure the script is not blocking for seconds at a time or never terminates. :::
finit.run.<name>.restart
The number of times `finit` tries to restart a crashing service. When this limit is reached the service is marked crashed and must be restarted manually with `initctl restart NAME`.
finit.run.<name>.restart_sec
The number of seconds before Finit tries to restart a crashing service, default: `2` seconds for the first five retries, then back-off to `5` seconds. The maximum of this configured value and the above (`2` and `5`) will be used.
finit.run.<name>.runlevels
See [upstream documentation](https://github.com/troglobit/finit?tab=readme-ov-file#runlevels) for details.
finit.run.<name>.stop
Some services may require alternate methods to be stopped. If `stop` is defined it is preferred over `SIGTERM`. Similar to `reload`, `finit` sets `$MAINPID`.
::: {.note} `stop` is called as PID 1, without any timeout! Meaning, it is up to you to ensure the script is not blocking for seconds at a time or never terminates. :::
finit.run.<name>.supplementary_groups
Explicitly specify supplementary groups, in addition to reading group membership from {file}`/etc/group`.
finit.run.<name>.type
Service type.
finit.run.<name>.user
The user this service should be executed as.
finit.runlevel
The runlevel to start after bootstrap, `S`.
finit.services
An attribute set of services, or daemons, to be monitored and automatically restarted if they exit prematurely.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#services) for additional details.
finit.services.<name>.caps
Allow services to run with minimal required privileges instead of running as `root`.
finit.services.<name>.cgroup.delegate
For services that need to create their own child `cgroups` (container runtimes like `docker`, `podman`, `systemd-nspawn`, `lxc`, etc...).
See [ustream documentation](https://finit-project.github.io/config/cgroups/#cgroup-delegation) for details.
finit.services.<name>.cgroup.name
The name of the cgroup to place this process under.
finit.services.<name>.cgroup.settings
The cgroup settings to apply to this process.
See [kernel documentation](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html) for additional details.
finit.services.<name>.cleanup
A script which will be called when the service is removed.
finit.services.<name>.command
Command to run.
- type: main program, path or command
finit.services.<name>.conditions
See [upstream documentation](https://github.com/troglobit/finit/blob/master/doc/conditions.md) for details.
finit.services.<name>.conflict
If you have conflicting services and want to prevent them from starting.
finit.services.<name>.description
Service description.
finit.services.<name>.enable
Whether to enable this service.
finit.services.<name>.env
either a path or a path prefixed with a '-' to indicate a missing file is fine.
finit.services.<name>.environment
Environment variables passed to this service.
finit.services.<name>.extraConfig
A place for `finit` configuration options which have not been added to the `nix` module yet.
finit.services.<name>.group
The group this service should be executed as.
finit.services.<name>.id
Service id.
- type: read-only null or string
finit.services.<name>.kill
The delay in seconds between `finit` sending a `SIGTERM` and a `SIGKILL`.
finit.services.<name>.log
Redirect `stderr` and `stdout` of the application to a file or `syslog` using the native `logit` tool. This is useful for programs that do not support `syslog` on their own, which is sometimes the case when running in the foreground.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#redirecting-output) for additional details.
finit.services.<name>.manual
If a service should not be automatically started, it can be configured as manual. The service can then be started at any time by running `initctl start <service>`.
finit.services.<name>.name
Service name.
- type: read-only string
finit.services.<name>.nohup
Whether this service supports reload on SIGHUP.
finit.services.<name>.notify
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#service-synchronization) for details.
finit.services.<name>.oncrash
- `reboot` - when all retries have failed, and the service has crashed, if this option is set the system is rebooted. - `script` - similarly, but instead of rebooting, call the `post:script` action if set.
finit.services.<name>.path
Packages added to the `PATH` environment variable of this service.
finit.services.<name>.pid
See [upstream documentation](https://github.com/troglobit/finit/blob/master/doc/service.md) for details.
finit.services.<name>.post
A script which will be called after the service has stopped.
finit.services.<name>.pre
A script which will be called before the service is started.
finit.services.<name>.ready
A script which will be called when the service is ready.
finit.services.<name>.reload
Some services do not support `SIGHUP` but may have other ways to update the configuration of a running daemon. When `reload` is defined it is preferred over `SIGHUP`. Like `systemd`, `finit` sets ``$MAINPID` as a convenience to scripts, which in effect also allow setting `reload` to `kill -HUP $MAINPID`.
::: {.note} `reload` is called as PID 1, without any timeout! Meaning, it is up to you to ensure the script is not blocking for seconds at a time or never terminates. :::
finit.services.<name>.restart
The number of times `finit` tries to restart a crashing service. When this limit is reached the service is marked crashed and must be restarted manually with `initctl restart NAME`.
finit.services.<name>.restart_sec
The number of seconds before Finit tries to restart a crashing service, default: `2` seconds for the first five retries, then back-off to `5` seconds. The maximum of this configured value and the above (`2` and `5`) will be used.
finit.services.<name>.rlimits
An attribute set of resource limits that will be apply by `finit`.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc/config.md#resource-limits) for additional details.
finit.services.<name>.runlevels
See [upstream documentation](https://github.com/troglobit/finit?tab=readme-ov-file#runlevels) for details.
finit.services.<name>.stop
Some services may require alternate methods to be stopped. If `stop` is defined it is preferred over `SIGTERM`. Similar to `reload`, `finit` sets `$MAINPID`.
::: {.note} `stop` is called as PID 1, without any timeout! Meaning, it is up to you to ensure the script is not blocking for seconds at a time or never terminates. :::
finit.services.<name>.supplementary_groups
Explicitly specify supplementary groups, in addition to reading group membership from {file}`/etc/group`.
finit.services.<name>.type
Service type.
finit.services.<name>.user
The user this service should be executed as.
finit.tasks
An attribute set of one-shot commands to be executed by `finit`.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#one-shot-commands-parallel) for additional details.
finit.tasks.<name>.caps
Allow services to run with minimal required privileges instead of running as `root`.
finit.tasks.<name>.cgroup.delegate
For services that need to create their own child `cgroups` (container runtimes like `docker`, `podman`, `systemd-nspawn`, `lxc`, etc...).
See [ustream documentation](https://finit-project.github.io/config/cgroups/#cgroup-delegation) for details.
finit.tasks.<name>.cgroup.name
The name of the cgroup to place this process under.
finit.tasks.<name>.cgroup.settings
The cgroup settings to apply to this process.
See [kernel documentation](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html) for additional details.
finit.tasks.<name>.cleanup
A script which will be called when the service is removed.
finit.tasks.<name>.command
Command to run.
- type: main program, path or command
finit.tasks.<name>.conditions
See [upstream documentation](https://github.com/troglobit/finit/blob/master/doc/conditions.md) for details.
finit.tasks.<name>.conflict
If you have conflicting services and want to prevent them from starting.
finit.tasks.<name>.description
Service description.
finit.tasks.<name>.enable
Whether to enable this service.
finit.tasks.<name>.env
either a path or a path prefixed with a '-' to indicate a missing file is fine.
finit.tasks.<name>.environment
Environment variables passed to this service.
finit.tasks.<name>.extraConfig
A place for `finit` configuration options which have not been added to the `nix` module yet.
finit.tasks.<name>.group
The group this service should be executed as.
finit.tasks.<name>.id
Service id.
- type: read-only null or string
finit.tasks.<name>.kill
The delay in seconds between `finit` sending a `SIGTERM` and a `SIGKILL`.
finit.tasks.<name>.log
Redirect `stderr` and `stdout` of the application to a file or `syslog` using the native `logit` tool. This is useful for programs that do not support `syslog` on their own, which is sometimes the case when running in the foreground.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#redirecting-output) for additional details.
finit.tasks.<name>.manual
If a service should not be automatically started, it can be configured as manual. The service can then be started at any time by running `initctl start <service>`.
finit.tasks.<name>.name
Service name.
- type: read-only string
finit.tasks.<name>.nohup
Whether this service supports reload on SIGHUP.
finit.tasks.<name>.notify
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#service-synchronization) for details.
finit.tasks.<name>.oncrash
- `reboot` - when all retries have failed, and the service has crashed, if this option is set the system is rebooted. - `script` - similarly, but instead of rebooting, call the `post:script` action if set.
finit.tasks.<name>.path
Packages added to the `PATH` environment variable of this service.
finit.tasks.<name>.pid
See [upstream documentation](https://github.com/troglobit/finit/blob/master/doc/service.md) for details.
finit.tasks.<name>.post
A script which will be called after the service has stopped.
finit.tasks.<name>.pre
A script which will be called before the service is started.
finit.tasks.<name>.ready
A script which will be called when the service is ready.
finit.tasks.<name>.reload
Some services do not support `SIGHUP` but may have other ways to update the configuration of a running daemon. When `reload` is defined it is preferred over `SIGHUP`. Like `systemd`, `finit` sets ``$MAINPID` as a convenience to scripts, which in effect also allow setting `reload` to `kill -HUP $MAINPID`.
::: {.note} `reload` is called as PID 1, without any timeout! Meaning, it is up to you to ensure the script is not blocking for seconds at a time or never terminates. :::
finit.tasks.<name>.restart
The number of times `finit` tries to restart a crashing service. When this limit is reached the service is marked crashed and must be restarted manually with `initctl restart NAME`.
finit.tasks.<name>.restart_sec
The number of seconds before Finit tries to restart a crashing service, default: `2` seconds for the first five retries, then back-off to `5` seconds. The maximum of this configured value and the above (`2` and `5`) will be used.
finit.tasks.<name>.rlimits
An attribute set of resource limits that will be apply by `finit`.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc/config.md#resource-limits) for additional details.
finit.tasks.<name>.runlevels
See [upstream documentation](https://github.com/troglobit/finit?tab=readme-ov-file#runlevels) for details.
finit.tasks.<name>.stop
Some services may require alternate methods to be stopped. If `stop` is defined it is preferred over `SIGTERM`. Similar to `reload`, `finit` sets `$MAINPID`.
::: {.note} `stop` is called as PID 1, without any timeout! Meaning, it is up to you to ensure the script is not blocking for seconds at a time or never terminates. :::
finit.tasks.<name>.supplementary_groups
Explicitly specify supplementary groups, in addition to reading group membership from {file}`/etc/group`.
finit.tasks.<name>.type
Service type.
finit.tasks.<name>.user
The user this service should be executed as.
finit.ttys
An attribute set of TTYs that `finit` should manage.
See [upstream documentation](https://github.com/troglobit/finit/tree/master/doc#ttys-and-consoles) for additional details.
finit.ttys.<name>.baud
Baud rate.
finit.ttys.<name>.caps
Allow services to run with minimal required privileges instead of running as `root`.
finit.ttys.<name>.cgroup.delegate
For services that need to create their own child `cgroups` (container runtimes like `docker`, `podman`, `systemd-nspawn`, `lxc`, etc...).
See [ustream documentation](https://finit-project.github.io/config/cgroups/#cgroup-delegation) for details.
finit.ttys.<name>.cgroup.name
The name of the cgroup to place this process under.
finit.ttys.<name>.cgroup.settings
The cgroup settings to apply to this process.
See [kernel documentation](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html) for additional details.
finit.ttys.<name>.command
Specify an external `getty`, like `agetty` or the BusyBox `getty`.
finit.ttys.<name>.conditions
See [upstream documentation](https://github.com/troglobit/finit/blob/master/doc/conditions.md) for details.
finit.ttys.<name>.description
Service description.
finit.ttys.<name>.device
Embedded systems may want to enable automatic `device` by supplying the special `@console` device. This works regardless weather the system uses `ttyS0`, `ttyAMA0`, `ttyMXC0`, or anything else. `finit` figures it out by querying sysfs: `/sys/class/tty/console/active`.
finit.ttys.<name>.enable
Whether to enable this service.
finit.ttys.<name>.extraConfig
A place for `finit` configuration options which have not been added to the `nix` module yet.
finit.ttys.<name>.noclear
Disables clearing the TTY after each session. Clearing the TTY when a user logs out is usually preferable.
finit.ttys.<name>.nologin
Disables `getty` and `/bin/login`, and gives the user a `root` (login) shell on the given TTY `device` immediately. Needless to say, this is a rather insecure option, but can be very useful for developer builds, during board bringup, or similar.
finit.ttys.<name>.nowait
Disables the press `Enter to activate console` message before actually starting the `getty` program.
finit.ttys.<name>.runlevels
See [upstream documentation](https://github.com/troglobit/finit?tab=readme-ov-file#runlevels) for details.
finit.ttys.<name>.term
fonts.enableDefaultPackages
Enable a basic set of fonts providing several styles and families and reasonable coverage of Unicode.
- type: boolean
- default:
-
false
- declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/nixos/modules/config/fonts/packages.nix
fonts.fontconfig.allowBitmaps
Allow bitmap fonts. Set to
‘false’ to ban all bitmap fonts.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.allowType1
Allow Type-1 fonts. Default is
‘false’ because of poor rendering.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.antialias
Enable font antialiasing. At high resolution (> 200 DPI), antialiasing has no visible effect; users of such displays may want to disable this option.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.cache32Bit
Generate system fonts cache for 32-bit applications.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.defaultFonts.emoji
System-wide default emoji font(s). Multiple fonts may be listed in case a font does not support all emoji.
Note that fontconfig matches color emoji fonts preferentially, so if you want to use a black and white font while having a color font installed (eg. Noto Color Emoji installed alongside Noto Emoji), fontconfig will still choose the color font even when it is later in the list.
- type: list of string
- default:
-
[ "Noto Color Emoji" ]
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.defaultFonts.monospace
System-wide default monospace font(s). Multiple fonts may be listed in case multiple languages must be supported.
- type: list of string
- default:
-
[ "DejaVu Sans Mono" ]
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.defaultFonts.sansSerif
System-wide default sans serif font(s). Multiple fonts may be listed in case multiple languages must be supported.
- type: list of string
- default:
-
[ "DejaVu Sans" ]
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.defaultFonts.serif
System-wide default serif font(s). Multiple fonts may be listed in case multiple languages must be supported.
- type: list of string
- default:
-
[ "DejaVu Serif" ]
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.enable
If enabled, a Fontconfig configuration file will be built pointing to a set of default fonts. If you don't care about running X11 applications or any other program that uses Fontconfig, you can leave this option off and prevent a dependency on all those fonts.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.hinting.autohint
Enable the autohinter in place of the default interpreter. The results are usually lower quality than correctly-hinted fonts, but better than unhinted fonts.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.hinting.enable
Enable font hinting. Hinting aligns glyphs to pixel boundaries to improve rendering sharpness at low resolution. At high resolution (> 200 dpi) hinting will do nothing (at best); users of such displays may want to disable this option.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.hinting.style
Hintstyle is the amount of font reshaping done to line up to the grid.
slight will make the font more fuzzy to line up to the grid but will be better in retaining font shape, while full will be a crisp font that aligns well to the pixel grid but will lose a greater amount of font shape.
- type: one of none, slight, medium, full
- default:
-
"slight"
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.includeUserConf
Include the user configuration from ~/.config/fontconfig/fonts.conf or ~/.config/fontconfig/conf.d.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.localConf
System-wide customization file contents, has higher priority than defaultFonts settings.
- type: strings concatenated with 0
- default:
-
""
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.subpixel.lcdfilter
FreeType LCD filter. At high resolution (> 200 DPI), LCD
filtering has no visible effect; users of such displays may want to select
none.
- type: one of none, default, light, legacy
- default:
-
"default"
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.subpixel.rgba
Subpixel order. The overwhelming majority of displays are
rgb in their normal orientation. Select
vrgb for mounting such a display 90 degrees
clockwise from its normal orientation or vbgr for
mounting 90 degrees counter-clockwise. Select bgr in
the unlikely event of mounting 180 degrees from the normal orientation.
Reverse these directions in the improbable event that the display's native
subpixel order is bgr.
- type: one of rgb, bgr, vrgb, vbgr, none
- default:
-
"none"
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.fontconfig.useEmbeddedBitmaps
Use embedded bitmaps in fonts like Calibri.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/fonts/fontconfig.nix
fonts.packages
List of primary font packages.
- type: list of absolute path
- default:
-
[ ]
- example:
-
[ pkgs.dejavu_fonts ]
- declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/nixos/modules/config/fonts/packages.nix
hardware.console.binaryKeyMap
Binary keymap file. If unset then this is generated from the hardware.console.keyMap option.
- type: absolute path
- default:
-
"Binary form of hardware.console.keyMap."
- declared by:
- <SLAM>/modules/hardware/console.nix
hardware.console.enable
Whether to configure the console at boot.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/hardware/console.nix
hardware.console.keyMap
The keyboard mapping table for the virtual consoles. This option may have no effect if hardware.console.binaryKeyMap is set.
- type: string or absolute path
- default:
-
"defkeymap"
- declared by:
- <SLAM>/modules/hardware/console.nix
hardware.console.setvesablank
Turn VESA screen blanking on or off.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/hardware/console.nix
hardware.firmware
List of packages containing firmware files. Such files will be loaded automatically if the kernel asks for them (i.e., when it has detected specific hardware that requires firmware to function). If multiple packages contain firmware files with the same name, the first package in the list takes precedence. Note that you must rebuild your system if you add files to any of these directories.
hardware.graphics.enable
Whether to enable hardware accelerated graphics drivers.
This is required to allow most graphical applications and environments to use hardware rendering, video encode/decode acceleration, etc.
This option should be enabled by default by the corresponding modules, so you do not usually have to set it yourself.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/hardware/graphics.nix
hardware.graphics.enable32Bit
On 64-bit systems, whether to also install 32-bit drivers for 32-bit applications (such as Wine).
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/hardware/graphics.nix
hardware.graphics.extraPackages
Additional packages to add to the default graphics driver lookup path. This can be used to add OpenCL drivers, VA-API/VDPAU drivers, etc.
- type: list of package
- default:
-
[ ]
- example:
-
with pkgs; [ intel-media-driver intel-ocl intel-vaapi-driver ]
- declared by:
- <SLAM>/modules/hardware/graphics.nix
hardware.graphics.extraPackages32
Additional packages to add to 32-bit graphics driver lookup path on 64-bit systems. Used when enable32Bit is set. This can be used to add OpenCL drivers, VA-API/VDPAU drivers, etc.
- type: list of package
- default:
-
[ ]
- example:
-
with pkgs.pkgsi686Linux; [ intel-media-driver intel-vaapi-driver ]
- declared by:
- <SLAM>/modules/hardware/graphics.nix
hardware.i2c.enable
Whether to enable support for i2c devices. Access to these devices is granted to users in the hardware.i2c.group group.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/hardware/i2c.nix
hardware.i2c.group
Group to own the /dev/i2c-* devices.
- type: string
- default:
-
"i2c"
- declared by:
- <SLAM>/modules/hardware/i2c.nix
i18n.defaultLocale
The default locale. It determines the language for program messages, the format for dates and times, sort order, and so on. It also determines the character set, such as UTF-8.
i18n.extraLocaleSettings
A set of additional system-wide locale settings other than
LANG which can be configured with
i18n.defaultLocale.
i18n.glibcLocales
Customized pkg.glibcLocales package. Changing this option can disable handling of i18n.defaultLocale and supportedLocale.
i18n.supportedLocales
List of locales that the system should support. The value
‘all’ means that all locales supported
by Glibc will be installed. A full list of supported locales can be found at
https://sourceware.org/git/?p=glibc.git;a=blob;f=localedata/SUPPORTED.
- type: list of string
- default:
-
lib.unique (builtins.map (l: (lib.replaceStrings [ "utf8" "utf-8" "UTF8" ] [ "UTF-8" "UTF-8" "UTF-8" ] l) + "/UTF-8") ( [ "C.UTF-8" config.i18n.defaultLocale ] ++ (lib.attrValues (lib.filterAttrs (n: v: n != "LANGUAGE") config.i18n.extraLocaleSettings)) )) - example:
-
[ "kk_KZ/PT154" "kk_KZ.UTF-8/UTF-8" ]
lib
This option allows modules to define helper functions, constants, etc.
- type: attribute set of (attribute set)
- default:
-
{ } - declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/nixos/modules/misc/lib.nix
meta.maintainers
List of maintainers of each module. This option should be defined at most once per module.
The option value is not a list of maintainers, but an attribute set that maps module file names to lists of maintainers.
- type: list of (maintainer)
- default:
-
[ ]
- example:
-
[ lib.maintainers.alice lib.maintainers.bob ]
- declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/modules/generic/meta-maintainers.nix
networking.domain
Primary network domain name for this system.
networking.fqdn
Primary fully qualified domain name for this system.
networking.hostId
The 32-bit host ID of the machine, formatted as 8 hexadecimal characters.
You should try to make this ID unique among your machines. You can generate a random 32-bit ID using the following commands:
head -c 8 /etc/machine-id
head -c4 /dev/urandom | od -A none -t x4
networking.hostName
Internal host name for this system.
networking.hosts
Locally defined maps of hostnames to IP addresses.
networking.ipv4.addresses
List of statically configured IPv4 addresses.
networking.ipv4.addresses.*.device
Network attachment device.
networking.ipv4.addresses.*.local
Local address.
- type: string
networking.ipv4.addresses.*.prefixLength
Network prefix length.
networking.ipv4.routes
List of statically configured IPv6 routes.
networking.ipv4.routes.*.device
Network attachment device.
networking.ipv4.routes.*.gateway
Network gateway to use as a default route.
networking.ipv4.routes.*.prefix
Route addressing prefix.
networking.ipv4.routes.*.prefixLength
Network prefix length.
networking.ipv6.addresses
List of statically configured IPv6 addresses.
networking.ipv6.addresses.*.device
Network attachment device.
networking.ipv6.addresses.*.local
Local address.
- type: string
networking.ipv6.addresses.*.prefixLength
Network prefix length.
networking.ipv6.routes
List of statically configured IPv6 routes.
networking.ipv6.routes.*.device
Network attachment device.
networking.ipv6.routes.*.gateway
Network gateway to use as a default route.
networking.ipv6.routes.*.prefix
Route addressing prefix.
networking.ipv6.routes.*.prefixLength
Network prefix length.
networking.wireless.networks
The network definitions to automatically connect to when
wpa_supplicant is running. If this parameter is left
empty wpa_supplicant will use
/etc/wpa_supplicant.conf as the configuration
file.
- type: attribute set of (submodule)
- default:
-
{ } - example:
-
{ # SSID with no spaces or special characters # (password will be written to /nix/store!) echelon = { psk = "abcdefgh"; }; # safe version of the above: read PSK from the # variable psk_echelon, defined in secretsFile, # this won't leak into /nix/store echelon = { pskRaw = "ext:psk_echelon"; }; # SSID with spaces and/or special characters # (password will be written to /nix/store!) }; "echelon's AP" = { psk = "ijklmnop"; }; # Public wireless network "free.wifi" = { }; } - declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
networking.wireless.networks.<name>.auth
Use this option to configure advanced authentication methods like EAP. See wpa_supplicant.conf(5) for example configurations.
ext:secretname for secrets.- type: null or string
- default:
-
null
- example:
-
eap=PEAP identity="user@example.com" password=ext:example_password
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
networking.wireless.networks.<name>.authProtocols
The list of authentication protocols accepted by this network.
This corresponds to the key_mgmt option in
wpa_supplicant.
- type: list of (one of WPA-PSK, WPA-EAP, IEEE8021X, NONE, WPA-NONE, FT-PSK, FT-EAP, FT-EAP-SHA384, WPA-PSK-SHA256, WPA-EAP-SHA256, SAE, FT-SAE, WPA-EAP-SUITE-B, WPA-EAP-SUITE-B-192, OSEN, FILS-SHA256, FILS-SHA384, FT-FILS-SHA256, FT-FILS-SHA384, OWE, DPP)
- default:
-
[ "WPA-PSK" "WPA-EAP" "SAE" "FT-PSK" "FT-EAP" "FT-SAE" ]
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
networking.wireless.networks.<name>.extraConfig
Extra configuration lines appended to the network block. See wpa_supplicant.conf(5) for available options.
- type: string
- default:
-
""
- example:
-
bssid_blacklist=02:11:22:33:44:55 02:22:aa:44:55:66
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
networking.wireless.networks.<name>.hidden
Set this to ‘true’ if the
SSID of the network is hidden.
- type: boolean
- default:
-
false
- example:
-
{ echelon = { hidden = true; psk = "abcdefgh"; }; } - declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
networking.wireless.networks.<name>.priority
By default, all networks will get same priority group (0). If some of the networks are more desirable, this field can be used to change the order in which wpa_supplicant goes through the networks when selecting a BSS. The priority groups will be iterated in decreasing priority (i.e., the larger the priority value, the sooner the network is matched against the scan results). Within each priority group, networks will be selected based on security policy, signal strength, etc.
- type: null or signed integer
- default:
-
null
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
networking.wireless.networks.<name>.psk
The network's pre-shared key in plaintext defaulting to being a network without any authentication.
- type: null or string matching the pattern [[:print:]]{8,63}
- default:
-
null
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
networking.wireless.networks.<name>.pskRaw
Either the raw pre-shared key in hexadecimal format or the name of the secret (as defined inside the secretsFile and prefixed with Dq ext: ) containing the network pre-shared key.
- type: null or string matching the pattern ([[:xdigit:]]{64})|(ext:[^=]+)
- default:
-
null
- example:
-
"ext:name_of_the_secret_here"
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
nixpkgs.pkgs
- type: evaluation of Nixpkgs; the top level attribute set of packages
programs.doas.enable
Whether to enable [doas](https://github.com/Duncaen/OpenDoas).
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//programs/doas
programs.doas.package
The package to use for `doas`.
- type: package
- default:
-
pkgs.doas
- declared by:
- <SLAM>/modules//programs/doas
programs.fish.enable
Whether to enable [fish](https://fishshell.com/).
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//programs/fish
programs.fish.package
The package to use for `fish`.
- type: package
- default:
-
pkgs.fish
- declared by:
- <SLAM>/modules//programs/fish
programs.sudo.enable
Whether to enable [sudo](https://www.sudo.ws/).
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//programs/sudo
programs.sudo.package
The package to use for `sudo`.
- type: package
- default:
-
pkgs.sudo
- declared by:
- <SLAM>/modules//programs/sudo
providers.bootloader.backend
The selected module which should implement functionality for the {option}`providers.bootloader` contract.
providers.bootloader.installHook
The full path to a program of your choosing which performs the bootloader installation process.
The program will be called with an argument pointing to the output of the system's toplevel.
providers.privileges.backend
The selected module which should implement functionality for the {option}`providers.privileges` contract.
- type: one of sudo, doas, none
- default:
-
"none"
- declared by:
- <SLAM>/modules/programs/sudo/providers.privileges.nix
<SLAM>/modules/programs/doas/providers.privileges.nix
providers.privileges.command
The command to be used by modules requiring privilege escalation.
providers.privileges.rules
A list of rules which provide a way to temporarily elevate the privileges of a command for a given user or group.
providers.privileges.rules.*.args
Arguments that must be provided to the command. When empty, the command must be run without any arguments.
providers.privileges.rules.*.command
The command the user or group members are allowed to run.
::: {.note} It is best practice to specify absolute paths. :::
- type: main program, path or command
providers.privileges.rules.*.groups
The groups that are able to run this command.
providers.privileges.rules.*.requirePassword
Whether the user is required to enter a password.
providers.privileges.rules.*.runAs
The user the command is allowed to run as, or `"*"` for allowing the command to run as any user.
providers.privileges.rules.*.users
The users that are able to run this command.
providers.resumeAndSuspend.backend
The selected module which should implement functionality for the {option}`providers.resumeAndSuspend` contract.
- type: value none (singular enum)
- default:
-
"none"
- declared by:
- <SLAM>/modules/providers/resume-and-suspend
providers.resumeAndSuspend.hooks
A set of hooks which are to be run on system _suspend_ or _resume_.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/providers/resume-and-suspend
providers.resumeAndSuspend.hooks.<name>.action
Shell commands to execute when the `event` is triggered.
- type: strings concatenated with 0
- default:
-
""
- declared by:
- <SLAM>/modules/providers/resume-and-suspend
providers.resumeAndSuspend.hooks.<name>.enable
Whether this hook should be executed on the given `event`.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/providers/resume-and-suspend
providers.resumeAndSuspend.hooks.<name>.event
The event type.
- type: one of suspend, resume
- declared by:
- <SLAM>/modules/providers/resume-and-suspend
providers.resumeAndSuspend.hooks.<name>.priority
Order of this hook in relation to the others. The semantics are the same as with `lib.mkOrder`. Smaller values are inserted first.
- type: integer between 0 and 9999 (both inclusive)
- default:
-
1000
- declared by:
- <SLAM>/modules/providers/resume-and-suspend
providers.scheduler.backend
The selected module which should implement functionality for the {option}`providers.scheduler` contract.
providers.scheduler.supportedFeatures.user
Whether the selected {option}`providers.scheduler` implementation supports running tasks as a specified user.
- type: boolean
providers.scheduler.tasks
A set of tasks which are to be run at specified intervals.
providers.scheduler.tasks.<name>.command
The command this task should execute at specified {option}`interval`s.
- type: main program, path or command
providers.scheduler.tasks.<name>.interval
The interval at which this task should run its specified {option}`command`. Accepts either a standard {manpage}`crontab(5)` expression or one of: `hourly`, `daily`, `weekly`, `monthly`, or `yearly`.
If a standard {manpage}`crontab(5)` expression is provided this value will be passed directly to the `scheduler` implementation and execute exactly as specified.
If one of the special values, `hourly`, `daily`, `monthly`, `weekly`, or `yearly`, is provided then the underlying `scheduler` implementation will use its features to decide when best to run.
providers.scheduler.tasks.<name>.user
The user this task should run as, subject to {option}`provider.scheduler` implementation capabilities. See {option}`providers.scheduler.supportedFeatures` and your selected backend implementation for additional details.
security.pam.debug
Whether to enable debugging.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/security/pam
security.pam.enable
Whether to enable Pluggable Authentication Modules.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/security/pam
security.pam.environment
Set of rules for pam_env.
- type: attribute set of (submodule)
- declared by:
- <SLAM>/modules/security/pam
security.pam.environment.<name>.default
Default value of environment variable.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/security/pam
security.pam.environment.<name>.override
Value to overidde environment variable with.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/security/pam
security.pam.package
PAM impleementation package.
- type: package
- default:
-
"linux-pam"
- declared by:
- <SLAM>/modules/security/pam
security.pam.services
PAM service descriptions.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/security/pam
security.pam.services.<name>.enable
Whether to enable Pluggable Authentication Module.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/security/pam
security.pam.services.<name>.name
Name of this module.
- type: string
- default:
-
"‹name›"
- declared by:
- <SLAM>/modules/security/pam
security.pam.services.<name>.rules
Authentication rules for this module.
- type: attribute set of ((submodule) or string convertible to it)
- declared by:
- <SLAM>/modules/security/pam
security.pam.services.<name>.rules.<name>.deps
List of rules that must precede this one.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/security/pam
security.pam.services.<name>.rules.<name>.text
PAM control flag, module and arguments
- type: string
- declared by:
- <SLAM>/modules/security/pam
security.pki.caBundle
(Read-only) the path to the final bundle of certificate authorities as a single file.
- type: read-only absolute path
- declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/nixos/modules/security/ca.nix
security.pki.caCertificateBlacklist
A list of blacklisted CA certificate names that won't be imported from the Mozilla Trust Store into {file}`/etc/ssl/certs/ca-certificates.crt`. Use the names from that file.
- type: list of string
- default:
-
[ ]
- example:
-
[ "WoSign" "WoSign China" "CA WoSign ECC Root" "Certification Authority of WoSign G2" ]
- declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/nixos/modules/security/ca.nix
security.pki.certificateFiles
A list of files containing trusted root certificates in PEM format. These are concatenated to form {file}`/etc/ssl/certs/ca-certificates.crt`, which is used by many programs that use OpenSSL, such as {command}`curl` and {command}`git`.
- type: list of absolute path
- default:
-
[ ]
- example:
-
[ "${pkgs.dn42-cacert}/etc/ssl/certs/dn42-ca.crt" ] - declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/nixos/modules/security/ca.nix
security.pki.certificates
A list of trusted root certificates in PEM format.
- type: list of string
- default:
-
[ ]
- example:
-
[ '' NixOS.org ========= -----BEGIN CERTIFICATE----- MIIGUDCCBTigAwIBAgIDD8KWMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJJ TDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0 ... -----END CERTIFICATE----- '' ] - declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/nixos/modules/security/ca.nix
security.pki.useCompatibleBundle
Whether to enable usage of a compatibility bundle.
Such a bundle consists exclusively of `BEGIN CERTIFICATE` and no `BEGIN TRUSTED CERTIFICATE`, which is an OpenSSL specific PEM format.
It is known to be incompatible with certain software stacks.
Nevertheless, enabling this will strip all additional trust rules provided by the certificates themselves. This can have security consequences depending on your usecases
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- /nix/store/ci5r8q32x2y8zcab0bha5yj7474ysr76-source/nixos/modules/security/ca.nix
security.wrapperDirSize
Size limit for the /run/wrappers tmpfs. Look at mount(8), tmpfs size option, for the accepted syntax. “not set to less than 64MB.
- type: string
- default:
-
"50%"
- example:
-
"10G"
- declared by:
- <SLAM>/modules/security/wrappers
security.wrappers
This option effectively allows adding setuid/setgid bits,
capabilities, changing file ownership and permissions of a program without
directly modifying it. This works by creating a wrapper program under the
security.wrapperDir directory,
which is then added to the shell PATH.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/security/wrappers
security.wrappers.<name>.capabilities
A comma-separated list of capability clauses to be given to the wrapper program. The format for capability clauses is described in the “TEXTUAL REPRESENTATION” section of the cap_from_text(3) manual page. For a list of capabilities supported by the system, check the capabilities(7) manual page.
cap_setpcap, which is required for the wrapper program to be able to raise caps into the Ambient set is NOT raised to the Ambient set so that the real program cannot modify its own capabilities!! This may be too restrictive for cases in which the real program needs cap_setpcap but it at least leans on the side security paranoid vs. too relaxed.
- type: strings concatenated with,
- default:
-
""
- declared by:
- <SLAM>/modules/security/wrappers
security.wrappers.<name>.group
The group of the wrapper program.
- type: string
- declared by:
- <SLAM>/modules/security/wrappers
security.wrappers.<name>.owner
The owner of the wrapper program.
- type: string
- declared by:
- <SLAM>/modules/security/wrappers
security.wrappers.<name>.permissions
The permissions of the wrapper program. The format is that of a
symbolic or numeric file mode understood by
chmod.
- type: file mode string
- default:
-
"u+rx,g+x,o+x"
- example:
-
"a+rx"
- declared by:
- <SLAM>/modules/security/wrappers
security.wrappers.<name>.program
The name of the wrapper program. Defaults to the attribute name.
- type: null or string
- default:
-
"‹name›"
- declared by:
- <SLAM>/modules/security/wrappers
security.wrappers.<name>.setgid
Whether to add the setgid bit the wrapper program.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/security/wrappers
security.wrappers.<name>.setuid
Whether to add the setuid bit the wrapper program.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/security/wrappers
security.wrappers.<name>.source
The absolute path to the program to be wrapped.
- type: absolute path
- declared by:
- <SLAM>/modules/security/wrappers
services.chrony.configFile
Path to a Chrony configuration file.
- type: absolute path
- default:
-
<derivation chrony.conf>
- declared by:
- <SLAM>/modules//services/chronyd
services.chrony.enable
Whether to enable chrony as a system service.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//services/chronyd
services.chrony.package
The package to use for chrony.
- type: package
- default:
-
pkgs.chrony
- declared by:
- <SLAM>/modules//services/chronyd
services.dhcpcd.configFile
Path to dhcpcd configuration file.
services.dhcpcd.enable
Whether to enable dhcpcd as a system service.
services.dhcpcd.package
The package to use for dhcpcd.
services.dhcpcd.settings
Free-form settings to generate a dhcpcd configuration file from.
services.dmesg.enable
Disable printing of kernel messages to the console and enable dmesg running as a dedicated service.
services.dmesg.extraArgs
List of command-line options to pass to the dmesg service.
services.getty.enable
Whether to enable getty services.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules//services/getty
services.getty.ttys
The list of tty devices on which to start a login prompt.
- type: list of string
- default:
-
[ "tty1" "tty2" "tty3" "tty4" "tty5" "tty6" ]
- declared by:
- <SLAM>/modules//services/getty
services.greetd.enable
Whether to enable greetd as a system service.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//services/greetd
services.greetd.settings
greetd configuration. See
greetd(5) for additional details.
- type: TOML value
- default:
-
{ } - declared by:
- <SLAM>/modules//services/greetd
services.mdevd.coldplugRules
Mdeved rules for coldplug events during the initramfs stage of booting.
- type: strings concatenated with 0
services.mdevd.debug
Whether to enable debug logging.
services.mdevd.enable
Whether the mdevd hardware event manager has been enabled by config.boot.hardwareManager.
services.mdevd.hotplugRules
Mdevd rules for hotplug events. These rules are active after the
initial mdevd daemon has coldbooted with the
services.mdevd.coldplug
rules.
- type: strings concatenated with 0
services.mdevd.nlgroups
After mdevd has handled the uevents,
rebroadcast them to the netlink groups identified by the
nlgroups mask.
A value that intersects with
‘4’ will make the daemon rebroadcast
kernel uevents to libudev-zero.
services.mdevd.package
The mdevd package to use.
services.nix-daemon.enable
Whether to enable the Nix daemon as a system service. Disabling Nix makes the system hard to modify and the Nix programs and configuration will not be made available.
services.nix-daemon.nrBuildUsers
Number of “nixbld” user accounts created to perform secure concurrent builds. If you receive an error message saying that “all build users are currently in use”, you should increase this value.
services.nix-daemon.package
The package to use for nix.
services.nix-daemon.settings
Configuration for Nix, see
https://nixos.org/manual/nix/stable/command-ref/conf-file.html
or nix.conf(5) for available options. The value declared
here will be translated directly to the key-value pairs Nix expects. You can
use ‘nix-instantiate --eval --strict
'<nixpkgs/nixos>' -A config.nix.settings’ to view the
current value. By default it is empty. Nix configurations defined under
nix.* will be translated and applied to this option.
In addition, configuration specified in
nix.extraOptions will be appended
verbatim to the resulting config file.
services.nix-daemon.settings.allowed-users
A list of names of users (separated by whitespace) that are
allowed to connect to the Nix daemon. As with
nix.settings.trusted-users,
you can specify groups by prefixing them with
‘@’. Also, you can allow all users by
specifying ‘*’. The default is
‘*’. Note that trusted users are
always allowed to connect.
services.nix-daemon.settings.auto-optimise-store
If set to true, Nix automatically detects files in the store that have identical contents, and replaces them with hard links to a single copy. This saves disk space. If set to false (the default), you can still run nix-store --optimise to get rid of duplicate files.
services.nix-daemon.settings.cores
This option defines the maximum number of concurrent tasks during one build. It affects, e.g., -j option for make. The special value 0 means that the builder should use all available CPU cores in the system. Some builds may become non-deterministic with this option; use with care! Packages will only be affected if enableParallelBuilding is set for them.
services.nix-daemon.settings.max-jobs
This option defines the maximum number of jobs that Nix will try to build in parallel. The default is auto, which means it will use all available logical cores. It is recommend to set it to the total number of logical cores in your system (e.g., 16 for two CPUs with 4 cores each and hyper-threading).
services.nix-daemon.settings.require-sigs
If enabled (the default), Nix will only download binaries from binary caches if they are cryptographically signed with any of the keys listed in nix.settings.trusted-public-keys. If disabled, signatures are neither required nor checked, so it's strongly recommended that you use only trustworthy caches using authenticated transport.
services.nix-daemon.settings.sandbox
If set, Nix will perform builds in a sandboxed environment that it will set up automatically for each build. This prevents impurities in builds by disallowing access to dependencies outside of the Nix store by using network and mount namespaces in a chroot environment.
This is enabled by default even though it has a possible performance impact due to the initial setup time of a sandbox for each build. It doesn't affect derivation hashes, so changing this option will not trigger a rebuild of packages.
When set to ‘relaxed’, this
option permits derivations that set ‘__noChroot =
true;’ to run outside of the sandboxed environment. Exercise
caution when using this mode of operation! It is intended to be a quick hack
when building with packages that are not easily setup to be built
reproducibly.
services.nix-daemon.settings.substituters
List of binary cache URLs used to obtain pre-built binaries of Nix packages. No caches are added by default.
services.nix-daemon.settings.system-features
The set of features supported by the machine. Derivations can express dependencies on system features through the requiredSystemFeatures attribute.
- type: list of string
services.nix-daemon.settings.trusted-public-keys
List of public keys used to sign binary caches. If nix.settings.trusted-public-keys is enabled then Nix will use a binary from a binary cache if and only if it is signed by any of the keys listed here. No keys are added by default.
services.nix-daemon.settings.trusted-substituters
List of binary cache URLs that non-root users can use (in addition
to those specified using
nix.settings.substituters
by passing ‘--option binary-caches’ to
Nix commands.
services.nix-daemon.settings.trusted-users
A list of names of users that have additional rights when
connecting to the Nix daemon, such as the ability to specify additional
binary caches, or to import unsigned NARs. You can also specify groups by
prefixing them with ‘@’; for instance,
‘@wheel’ means all users in the wheel
group.
services.opensmtpd.enable
Whether to enable the OpenSMTPD server.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//services/opensmtpd
services.opensmtpd.extraServerArgs
Extra command line arguments provided when the smtpd process is started.
- type: list of string
- default:
-
[ ]
- example:
-
[ "-v" "-P mta" ]
- declared by:
- <SLAM>/modules//services/opensmtpd
services.opensmtpd.package
The opensmtpd package to use.
- type: package
- default:
-
pkgs.opensmtpd
- declared by:
- <SLAM>/modules//services/opensmtpd
services.opensmtpd.procPackages
Packages to search for filters, tables, queues, and schedulers.
Add packages here if you want to use them as as such, for example from the opensmtpd-table-* packages.
- type: list of package
- default:
-
[ ]
- declared by:
- <SLAM>/modules//services/opensmtpd
services.opensmtpd.serverConfiguration
The contents of the smtpd.conf configuration file. See the OpenSMTPD documentation for syntax information.
- type: strings concatenated with 0
- example:
-
listen on lo accept for any deliver to lmtp localhost:24
- declared by:
- <SLAM>/modules//services/opensmtpd
services.opensmtpd.setSendmail
Whether to set the system sendmail to OpenSMTPD's.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules//services/opensmtpd
services.openssh.enable
Whether to enable [openssh](https://www.openssh.com/) as a system service.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.package
The package to use for `openssh`.
- type: package
- default:
-
pkgs.openssh
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings
`openssh` configuration. See {manpage}`sshd_config(5)` for additional details.
- type: open submodule of attribute set of (atom (null, bool, int, float or string))
- default:
-
{ } - declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.AddressFamily
Specifies which address family should be used by {manpage}`sshd(8)`.
- type: one of any, inet, inet6
- default:
-
"any"
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.Banner
The contents of the specified file are sent to the remote user before authentication is allowed. If the argument is `none` then no banner is displayed.
- type: value none (singular enum) or absolute path
- default:
-
"none"
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.Ciphers
Allowed ciphers
Defaults to recommended settings from both <https://stribika.github.io/2015/01/04/secure-secure-shell.html> and <https://infosec.mozilla.org/guidelines/openssh#modern-openssh-67>
- type: list of string
- default:
-
[ "chacha20-poly1305@openssh.com" "aes256-gcm@openssh.com" "aes128-gcm@openssh.com" "aes256-ctr" "aes192-ctr" "aes128-ctr" ]
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.HostKey
TODO: description
- type: list of absolute path
- default:
-
[ ]
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.KbdInteractiveAuthentication
Specifies whether keyboard-interactive authentication is allowed.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.KexAlgorithms
Allowed key exchange algorithms
Uses the lower bound recommended in both <https://stribika.github.io/2015/01/04/secure-secure-shell.html> and <https://infosec.mozilla.org/guidelines/openssh#modern-openssh-67>
- type: list of string
- default:
-
[ "sntrup761x25519-sha512@openssh.com" "curve25519-sha256" "curve25519-sha256@libssh.org" "diffie-hellman-group-exchange-sha256" ]
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.LogLevel
Gives the verbosity level that is used when logging messages from {manpage}`sshd(8)`. Logging with a `DEBUG` level violates the privacy of users and is not recommended.
- type: one of QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3
- default:
-
"INFO"
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.Macs
Allowed MACs
Defaults to recommended settings from both <https://stribika.github.io/2015/01/04/secure-secure-shell.html> and <https://infosec.mozilla.org/guidelines/openssh#modern-openssh-67>
- type: list of string
- default:
-
[ "hmac-sha2-512-etm@openssh.com" "hmac-sha2-256-etm@openssh.com" "umac-128-etm@openssh.com" ]
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.PasswordAuthentication
Specifies whether password authentication is allowed.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.PermitRootLogin
Whether the root user can login using ssh.
- type: one of yes, without-password, prohibit-password, forced-commands-only, no
- default:
-
"prohibit-password"
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.Port
Specifies the port number that {manpage}`sshd(8)` listens on.
- type: list of 16 bit unsigned integer; between 0 and 65535 (both inclusive)
- default:
-
[ 22 ]
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.StrictModes
Whether sshd should check file modes and ownership of directories
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.settings.UsePAM
Whether to enable PAM authentication.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.sftp.enable
Whether to enable file transfer sessions using SFTP.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.sftp.executable
Command with optional arguments to execute upon SFTP requests.
- type: string
- declared by:
- <SLAM>/modules//services/openssh
services.openssh.sftp.flags
Optional arguments to pass to the SFTP executable.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules//services/openssh
services.seatd.debug
Whether to enable debug logging.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//services/seatd
services.seatd.enable
Whether to enable seatd as a system service.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//services/seatd
services.seatd.group
Group to own the seatd socket. If you want non-root users to be able to access the seatd session, add them to this group.
- type: string
- default:
-
"seat"
- declared by:
- <SLAM>/modules//services/seatd
services.seatd.package
The seatd package to use.
- type: package
- default:
-
pkgs.alt.slam.seatd
- declared by:
- <SLAM>/modules//services/seatd
services.syndev.enable
Whether to enable the
Syndev
uevent monitor. The uvent dataspace will be bound to
‘<oid uevents>’.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules//services/syndev
services.syndev.nlgroup
Subscribe to events on the specified netlink group. Mdevd usually subscribes to group 1, so set this to a mask not intersecting with 1, and set services.mdevd.nlgroups to a value that intersects with the nlgroup set here.
- type: unsigned integer, meaning >=0
- example:
-
2
- declared by:
- <SLAM>/modules//services/syndev
services.syndev.package
The syndev package to use.
- type: package
- default:
-
pkgs.alt.sam.syndev
- declared by:
- <SLAM>/modules//services/syndev
services.tlp.enable
Whether to enable tlp as a system service.
- type: boolean
- default:
-
false
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.tlp.package
The package to use for tlp.
- type: package
- default:
-
pkgs.tlp
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.tlp.settings
tlp configuration. See upstream
documentation for
additional details.
- type: attribute set of (atom (null, bool, int, float or string) or a non-empty list of them)
- default:
-
{ } - declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.tmpfiles
Services for tmpfiles.
services.tmpfiles.<name>.enable
Whether to enable tmpfiles.
services.tmpfiles.<name>.rules
Rules for creation, deletion and cleaning of volatile and temporary files automatically. See tmpfiles.d 5 for the exact format.
services.udev.debug
Whether to enable debug logging.
services.udev.enable
Whether to enable as a system service.
services.udev.package
The package to use for eudev.
services.udev.packages
List of packages containing udev rules.
All files found in
«pkg»/etc/udev/rules.d and
«pkg»/lib/udev/rules.d will be
included.
services.udev.path
Packages added to the PATH environment
variable when executing programs from Udev rules. THe coreutils, (GNU) sed,
grep, util-linux packages are automatically included.
services.wpa_supplicant.allowAuxiliaryImperativeNetworks
Whether to allow configuring networks “imperatively”
(e.g. via wpa_supplicant_gui) and declaratively via
networking.wireless.networks.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.dbusControlled
Whether to enable the DBus control interface. This is only needed when using NetworkManager or connman.
- type: boolean
- default:
-
length cfg.interfaces < 2
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.driver
Force a specific wpa_supplicant driver.
- type: string
- default:
-
"nl80211,wext"
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.enable
Whether to enable wpa_supplicant.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.extraConfig
Extra lines appended to the configuration file. See wpa_supplicant.conf(5) for available options.
- type: string
- default:
-
""
- example:
-
p2p_disabled=1
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.fallbackToWPA2
Whether to fall back to WPA2 authentication protocols if WPA3 failed. This allows old wireless cards (that lack recent features required by WPA3) to connect to mixed WPA2/WPA3 access points. To avoid possible downgrade attacks, disable this options.
- type: boolean
- default:
-
true
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.interfaces
The interfaces wpa_supplicant will use. If
empty, it will automatically use all wireless interfaces. A separate
wpa_supplicant instance will be started for each interface.
- type: list of string
- default:
-
[ ]
- example:
-
[ "wlan0" "wlan1" ]
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.package
The wpa_supplicant package to use.
- type: package
- default:
-
pkgs.wpa_supplicant
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.scanOnLowSignal
Whether to periodically scan for (better) networks when the signal of the current one is low. This will make roaming between access points faster, but will consume more power.
- type: boolean
- default:
-
true
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.secretsFile
File consisting of lines of the form
‘varname=value’ to define variables
for the wireless configuration.
Secrets (PSKs, passwords, etc.) can be provided without adding
them to the world-readable Nix store by defining them in the secrets file
and referring to them in option
networking.wireless.networks
with the syntax ext:secretname. Example:
# content of /run/secrets/wireless.conf
psk_home=mypassword
psk_other=6a381cea59c7a2d6b30736ba0e6f397f7564a044bcdb7a327a1d16a1ed91b327
pass_work=myworkpassword
# wireless-related configuration
networking.wireless.secretsFile = "/run/secrets/wireless.conf";
networking.wireless.networks = {
home.pskRaw = "ext:psk_home";
other.pskRaw = "ext:psk_other";
work.auth = ''
eap=PEAP
identity="my-user@example.com"
password=ext:pass_work
'';
};
- type: null or absolute path
- default:
-
null
- example:
-
"/run/secrets/wireless.conf"
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.userControlled.enable
Allow normal users to control wpa_supplicant through wpa_gui or wpa_cli. This is useful for laptop users that switch networks a lot and don't want to depend on a large package such as NetworkManager just to pick nearby access points.
When using a declarative network specification you cannot persist any settings via wpa_gui or wpa_cli.
- type: boolean
- default:
-
false
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
services.wpa_supplicant.userControlled.group
Members of this group can control
wpa_supplicant.
- type: string
- default:
-
"wheel"
- example:
-
"network"
- declared by:
- /home/repo/slam-images/config/thinkpad-x220.nix
specialisation
Additional configurations to build.
- type: attribute set of (submodule)
- default:
-
{ } - example:
-
{ mdevd = { services.mdevd.enable = lib.mkForce true; services.udev.enable = lib.mkForce false; }; } - declared by:
- <SLAM>/modules/system/activation/specialisation.nix
system.activation.enable
Whether an activation script is enabled.
system.activation.out
the actual script to run on activation....
- type: read-only absolute path
system.activation.path
Packages available during activation from
PATH.
system.activation.scripts
A set of shell script fragments that are executed when a system configuration is activated. Examples are updating (/etc), creating accounts, and so on. Since these are executed every time you boot the system or a configuration transition occurs, it's important that they are idempotent and fast.
system.activation.scripts.<name>.deps
List of dependencies. The script will run after these.
system.activation.scripts.<name>.text
The content of the script.
- type: strings concatenated with 0
system.build.toplevel
top-level system derivation
- type: read-only absolute path
system.installBootloader
Bootloader install script.
- type: read-only absolute path
- declared by:
- <SLAM>/modules/boot/loader.nix
system.logging.logToFileSystem
Whether to enable logging to the file-system by default.
- type: boolean
- default:
-
true
- example:
-
true
- declared by:
- <SLAM>/modules/system/logging.nix
system.s6.basePath
PATH used to boot the system bus.
system.s6.enable
Whether s6 is enabled as PID1.
system.s6.logToConsole
Whether to enable copy catch-all messages to /dev/console.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/s6/slam.nix
system.s6.package
The s6 package to use.
system.s6.rc.scripts
Scripts generated for s6-rc.
- type: read-only attribute set of package
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services
s6-rc services.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.consumer-for
Name of the direct producer of this service.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.dependencies
List of other s6-rc services that must be started befor this one.
- type: list of string
- default:
-
[ "mounts" ]
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.down
Unix command-line to be lexed by
execlineb. This is the command that brings a service
down.
- type: null or strings concatenated with 0
- default:
-
null
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.env
Attrset of environment variables. These are written to an
env directory in the s6-rc service description and
can be loaded by ‘s6-envdir env’.
- type: attribute set of string
- default:
-
{ } - declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.finish
Executable file to run after a longrun service has finished.
- type: null or path in the Nix store
- default:
-
null
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.logging.args
Command-line arguments passed to s6-log before the logging
directory. The default arguments prepend logged lines with a
TAI64N
timestamp. Override args to ‘[]’ if
this information would be redundant.
- type: list of string
- default:
-
[ "t" "s1000000" "n20" ]
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.logging.dir
Directory for log files from this daemon.
- type: absolute path
- default:
-
/var/log/‹name›
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.logging.enable
Whether to enable inject a logging wrapper over this daemon.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.notification-fd
When non-null enable s6 readiness notification for this daemon using the specified file-descriptor.
- type: null or signed integer
- default:
-
null
- example:
-
3
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.of-bundle
List of bundles that this service belongs to.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.path
List of directories to compose into the
PATH environmental variable. If
env.PATH is set then this value is ignored. Otherwise
it will be appended with execline and s6 packages.
- type: list of (string or absolute path or package)
- default:
-
[ ]
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.pipeline-name
Name of the whole producer consumer pipline. Declaring this will compile a pipeline bundle with this name.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.producer-for
Name of the direct consumer of this service.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.run
Executable file to run for a longrun service.
- type: path in the Nix store
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.serviceDefinition
Derived service definition directory for this service. For a description of this format see s6-rc-compile(8) or https://skarnet.org/software/s6-rc/s6-rc-compile.html.
- type: read-only package
- default:
- not available
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.type
s6-rc service type.
- type: one of oneshot, longrun, bundle
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.rc.services.<name>.up
Unix command-line to be lexed by
execlineb. This is the command that brings a service
up.
- type: strings concatenated with 0
- declared by:
- <SLAM>/modules/s6/rc.nix
system.s6.scanDirectory
Directory to be scanned by s6-svscan.
- type: absolute path not in the Nix store
system.serviceManager
Which service-manager to bootstrap into.
system.services
A collection of modular services.
system.shutdownDeadline
The duration in seconds which a service-manager is allowed to delay a shutdown. If null then shutdown may be delayed indefinitely.
system.synit.basePath
PATH used to boot the system bus.
system.synit.controlSocket.enable
Whether to enable Synit control socket at /run/synit/system-bus.sock.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/synit/slam.nix
system.synit.core.daemons
Definitions of daemons to assert as Synit core services. For each
daemon defined in core a ‘<requires-service
<daemon ${name}>>’ assertion is also made.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.argv
Daemon command line. A string is executed in a shell whereas a list of strings is executed directly. See https://synit.org/book/operation/builtin/daemon.html#adding-process-specifications-to-a-service.
- type: string or absolute path or list of (string or absolute path)
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.clearEnv
Whether the Unix process environment is cleared or inherited. See https://synit.org/book/operation/builtin/daemon.html#specifying-subprocess-environment-variables.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.dir
Sets the working direcctory of a daemon. See https://synit.org/book/operation/builtin/daemon.html#setting-the-current-working-directory-for-a-subprocess.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.env
Sets Unix process environment for a daemon. See https://synit.org/book/operation/builtin/daemon.html#specifying-subprocess-environment-variables.
- type: null or (attribute set of string)
- default:
-
null
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.isRequired
Whether this service is tautologically required.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.logging.args
Command-line arguments passed to s6-log before the logging
directory. The default arguments prepend logged lines with a
TAI64N
timestamp. Override args to [‘’] if
this information would be redundant.
- type: list of string
- default:
-
[ "t" ]
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.logging.dir
Directory for log files from this daemon.
- type: absolute path
- default:
-
/var/log/‹name›
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.logging.enable
Whether to enable inject a logging wrapper over this daemon.
- type: boolean
- default:
-
config.system.logging.logToFileSystem
- example:
-
true
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.path
List of directories to compose into the PATH environmental variable. If env.PATH is set then this value is ignored. Otherwise it will be appended with execline and s6 packages.
- type: list of (string or absolute path or package)
- default:
-
[ ]
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.persistent
Whether this daemon should persist and never be replaced or removed.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.protocol
Specify a protocol for communicating with a daemon over stdin and stdout. See https://synit.org/book/operation/builtin/daemon.html#speaking-syndicate-network-protocol-via-stdinstdout.
- type: one of none, application/syndicate, text/syndicate
- default:
-
"none"
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.provides
Reverse requires of this daemon. It is a list of service keys.
- type: list of list of string
- default:
-
[ ]
- example:
-
[ [ "milestone" "network" ] ] - declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.readyOnNotify
When non-null enable s6 readiness notification for this daemon using the specified file-descriptor. Setting a file-descriptor here disables readyOnStart.
- type: null or signed integer
- default:
-
null
- example:
-
3
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.readyOnStart
Whether a daemon should be considered ready immediately after startup. See See https://synit.org/book/operation/builtin/daemon.html#ready-signalling.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.requires
Services required this daemon. It is a list of
‘{ key, state }’ attrs where
key identifies a service and
state is a service state.
- type: list of (submodule)
- default:
-
[ ]
- example:
-
[ { key = [ "milestone" "foo" ]; state = "up"; } { key = [ "daemon" "oneshot-script" ]; state = "complete"; } ] - declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.requires.*.key
Label of a service. The head of the list is the record label and the tail is the fields.
- type: list of string
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.requires.*.state
Required service state.
- type: string
- default:
-
"up"
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.restart
Daemon restart policy. See https://synit.org/book/operation/builtin/daemon.html#whether-and-when-to-restart.
- type: one of always, on-error, all, never
- default:
-
"always"
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.script
Syndicate-server script associated with this daemon.
- type: strings concatenated with 0
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.syd.allowPackages
List of Nix store paths that can be read or executed.
- type: unspecified value
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.syd.enable
Whether to enable Syd sandboxing.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.syd.profiles
List of predefined Syd profiles to apply. See syd(5) for list of common profiles.
- type: list of string
- default:
-
[ ]
- example:
-
[ "readonly" "nomem" ]
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.core.daemons.<name>.syd.rules
Syd sandboxing commands.
- type: strings concatenated with 0
- example:
-
allow/read+/etc/secrets/foo allow/net/bind+127.0.0.1!8080
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons
Definitions of daemons to assert into the Synit configuration dataspace.";
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.argv
Daemon command line. A string is executed in a shell whereas a list of strings is executed directly. See https://synit.org/book/operation/builtin/daemon.html#adding-process-specifications-to-a-service.
- type: string or absolute path or list of (string or absolute path)
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.clearEnv
Whether the Unix process environment is cleared or inherited. See https://synit.org/book/operation/builtin/daemon.html#specifying-subprocess-environment-variables.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.dir
Sets the working direcctory of a daemon. See https://synit.org/book/operation/builtin/daemon.html#setting-the-current-working-directory-for-a-subprocess.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.env
Sets Unix process environment for a daemon. See https://synit.org/book/operation/builtin/daemon.html#specifying-subprocess-environment-variables.
- type: null or (attribute set of string)
- default:
-
null
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.isRequired
Whether this service is tautologically required.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.logging.args
Command-line arguments passed to s6-log before the logging
directory. The default arguments prepend logged lines with a
TAI64N
timestamp. Override args to [‘’] if
this information would be redundant.
- type: list of string
- default:
-
[ "t" ]
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.logging.dir
Directory for log files from this daemon.
- type: absolute path
- default:
-
/var/log/‹name›
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.logging.enable
Whether to enable inject a logging wrapper over this daemon.
- type: boolean
- default:
-
config.system.logging.logToFileSystem
- example:
-
true
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.path
List of directories to compose into the PATH environmental variable. If env.PATH is set then this value is ignored. Otherwise it will be appended with execline and s6 packages.
- type: list of (string or absolute path or package)
- default:
-
[ ]
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.persistent
Whether this daemon should persist and never be replaced or removed.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.protocol
Specify a protocol for communicating with a daemon over stdin and stdout. See https://synit.org/book/operation/builtin/daemon.html#speaking-syndicate-network-protocol-via-stdinstdout.
- type: one of none, application/syndicate, text/syndicate
- default:
-
"none"
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.provides
Reverse requires of this daemon. It is a list of service keys.
- type: list of list of string
- default:
-
[ ]
- example:
-
[ [ "milestone" "network" ] ] - declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.readyOnNotify
When non-null enable s6 readiness notification for this daemon using the specified file-descriptor. Setting a file-descriptor here disables readyOnStart.
- type: null or signed integer
- default:
-
null
- example:
-
3
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.readyOnStart
Whether a daemon should be considered ready immediately after startup. See See https://synit.org/book/operation/builtin/daemon.html#ready-signalling.
- type: boolean
- default:
-
true
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.requires
Services required this daemon. It is a list of
‘{ key, state }’ attrs where
key identifies a service and
state is a service state.
- type: list of (submodule)
- default:
-
[ ]
- example:
-
[ { key = [ "milestone" "foo" ]; state = "up"; } { key = [ "daemon" "oneshot-script" ]; state = "complete"; } ] - declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.requires.*.key
Label of a service. The head of the list is the record label and the tail is the fields.
- type: list of string
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.requires.*.state
Required service state.
- type: string
- default:
-
"up"
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.restart
Daemon restart policy. See https://synit.org/book/operation/builtin/daemon.html#whether-and-when-to-restart.
- type: one of always, on-error, all, never
- default:
-
"always"
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.script
Syndicate-server script associated with this daemon.
- type: strings concatenated with 0
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.syd.allowPackages
List of Nix store paths that can be read or executed.
- type: unspecified value
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.syd.enable
Whether to enable Syd sandboxing.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.syd.profiles
List of predefined Syd profiles to apply. See syd(5) for list of common profiles.
- type: list of string
- default:
-
[ ]
- example:
-
[ "readonly" "nomem" ]
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.daemons.<name>.syd.rules
Syd sandboxing commands.
- type: strings concatenated with 0
- example:
-
allow/read+/etc/secrets/foo allow/net/bind+127.0.0.1!8080
- declared by:
- <SLAM>/modules/synit/daemons.nix
system.synit.depends
List of edges in the service dependency graph. This list is populated from other options but dependencies can also be explicitly specified here.
- type: list of (submodule)
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.depends.*.dependee
Service that will be started if its dependers are required.
- type: submodule
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.depends.*.dependee.key
Label of a service. The head of the list is the record label and the tail is the fields.
- type: list of string
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.depends.*.dependee.state
Required service state.
- type: string
- default:
-
"up"
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.depends.*.key
Label of a service. The head of the list is the record label and the tail is the fields.
- type: list of string
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.enable
Enable Synit, either as a primary or secondary service-manager.
system.synit.milestones
Attribute set of service milestones and their dependees. A milestone will not be required unless it has been added to system.synit.plan.requires.
- type: attribute set of (submodule)
- example:
-
{ network = { requires = [ { key = [ "milestone" "devices" ]; } { key = [ "daemon" "dhcpcd" ]; state = "ready"; } ]; }; } - declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.milestones.<name>.provides
Reverse requires of this milestone. It is a list of service keys.
- type: list of list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.milestones.<name>.requires
List of services required by this milestone.
- type: list of (submodule)
- default:
-
[ ]
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.milestones.<name>.requires.*.key
Label of a service. The head of the list is the record label and the tail is the fields.
- type: list of string
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.milestones.<name>.requires.*.state
Required service state.
- type: string
- default:
-
"up"
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.pid1.package
The synit-pid1 package to use.
- type: package
- default:
-
pkgs.alt.sam.synit-pid1
- declared by:
- <SLAM>/modules/synit/pid1.nix
system.synit.plan.activatePlan
Template for the activation script run by the user.
- type: package
- declared by:
- <SLAM>/modules/synit/plans.nix
system.synit.plan.config
The syndicate-server script that comprises a plan for system configuration.
- type: attribute set of ((list of anything) or string convertible to it)
- declared by:
- <SLAM>/modules/synit/plans.nix
system.synit.plan.file
File containing the complete syndicate-server script for this plan.
- type: read-only unspecified value
- declared by:
- <SLAM>/modules/synit/plans.nix
system.synit.plan.requires
List of services required by this plan.
- type: list of list of string
- declared by:
- <SLAM>/modules/synit/dependencies.nix
system.synit.services
A collection of modular services.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/system/service/synit/system.nix
system.synit.syndicate-server.package
The syndicate-server package to use.
system.toplevel.buildActions
Bash scripts to run during the build of the toplevel derivation.
- type: attribute set of ((submodule) or string convertible to it)
system.toplevel.buildActions.<name>.deps
List of dependencies. The script will run after these.
system.toplevel.buildActions.<name>.text
The content of the script.
- type: strings concatenated with 0
time.timeZone
System-wide timezone.
tvl.cache.builderball
Whether to enable use experimental builderball cache.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- /depot/ops/modules/tvl-cache.nix
tvl.cache.enable
Whether to enable the TVL binary cache.
- type: boolean
- default:
-
false
- example:
-
true
- declared by:
- /depot/ops/modules/tvl-cache.nix
users.groups
Groups for user accounts.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/users/options.nix
users.groups.<name>.gid
The group GID. If the GID is null, a free GID is picked on activation.
- type: null or signed integer
- default:
-
null
- declared by:
- <SLAM>/modules/users/options.nix
users.groups.<name>.members
The user names of the group members, added to the /etc/group file.
- type: list of (string, not containing newlines or colons)
- default:
-
[ ]
- declared by:
- <SLAM>/modules/users/options.nix
users.groups.<name>.name
The name of the group. If undefined, the name of the attribute set will be used.
- type: string, not containing newlines or colons
- declared by:
- <SLAM>/modules/users/options.nix
users.users
User accounts.
- type: attribute set of (submodule)
- default:
-
{ } - declared by:
- <SLAM>/modules/users/options.nix
<SLAM>/modules/synit/users.nix
users.users.<name>.createHome
Whether to create the home directory and ensure ownership as well as permissions to match the user.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.description
A short description of the user account, typically the user's full name. This is actually the “GECOS” “comment” field in /etc/passwd.
- type: string, not containing newlines or colons
- default:
-
""
- example:
-
"Alice Q. User"
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.extraGroups
The user's auxiliary groups.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.group
The user's primary group.
- type: string
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.home
The user's home directory.
- type: absolute path, not containing newlines or colons
- default:
-
"/var/empty"
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.initialHashedPassword
Specifies the initial hashed password for the user, i.e. the
hashed password assigned if the user does not already exist. If
users.mutableUsers is true, the password can be
changed subsequently using the passwd command.
Otherwise, it's equivalent to setting the
hashedPassword option.
- type: null or (string, not containing newlines or colons)
- default:
-
null
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.initialPassword
Specifies the initial password for the user, i.e. the password
assigned if the user does not already exist. If
users.mutableUsers is true, the password can be
changed subsequently using the passwd command.
Otherwise, it's equivalent to setting the password
option. The same caveat applies: the password specified here is
world-readable in the Nix store, so it should only be used for guest
accounts or passwords that will be changed promptly.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.isNormalUser
Indicates whether this is an account for a “real”
user. This automatically sets group to
‘users’,
createHome to
‘true’, home to
/home/«username», and
isSystemUser to
‘false’. Exactly one of
isNormalUser and isSystemUser
must be enabled.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.isSystemUser
Indicates if the user is a system user or not. This option only
has an effect if uid is
‘null’, in which case it determines
whether the user's UID is allocated in the range for system users (below
1000) or in the range for normal users (starting at 1000). Exactly one of
isNormalUser and isSystemUser
must be enabled.
- type: boolean
- default:
-
false
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.name
The name of the user account. If undefined, the name of the attribute set will be used.
- type: string, not containing newlines or colons
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.password
Specifies the hashed password for the user.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.passwordFile
The full path to a file that contains the hash of the user's
password. The password file is read on each system activation. The file
should contain exactly one line, which should be the password in an
encrypted form that is suitable for the ‘chpasswd
-e’ command.
- type: null or string
- default:
-
null
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.shell
The path to the user's shell. Can use shell derivations, like
‘pkgs.bashInteractive’. Don't forget
to enable your shell in programs if necessary, like
‘programs.zsh.enable = true;’.
- type: null or package or (absolute path, not containing newlines or colons)
- default:
-
pkgs.shadow
- example:
-
pkgs.bashInteractive
- declared by:
- <SLAM>/modules/users/options.nix
users.users.<name>.synit.configPaths
List of paths to configuration scripts to load into the user-level syndicate-server at boot.
- type: list of absolute path
- default:
-
[ ]
- declared by:
- <SLAM>/modules/synit/users.nix
users.users.<name>.synit.extraDataspaces
List of names of additional dataspaces to create within the user-bus. The config, log, and gatekeeper namespaces are reserved. Dataspaces othewise created within configuration files may be destroyed and recreated during a configuration transition.
- type: list of string
- default:
-
[ ]
- declared by:
- <SLAM>/modules/synit/users.nix
users.users.<name>.synit.systemBus
Reference to system-bus. Can be
‘"$config"’ for full access
or an attenuation for restricted access. Defaults to an invalid
reference.
- type: unspecified value
- default:
-
"#f"
- example:
-
"@
- declared by:
- <SLAM>/modules/synit/users.nix
users.users.<name>.uid
The account UID. If the UID is null, a free UID is picked on activation.
- type: null or signed integer
- default:
-
null
- declared by:
- <SLAM>/modules/users/options.nix
| April 16, 2026 | SLAM |