finix Options

boot.bootspec.enableValidation Link copied!

Type: boolean

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 .

Default: false
Example: true

boot.bootspec.extensions Link copied!

Type: attribute set of anything

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.

Default: { }

boot.bootspec.package Link copied!

Type: package

The package to use for bootspec.

Default: pkgs.bootspec

boot.extraModulePackages Link copied!

Type: list of package

A list of additional packages supplying kernel modules.

Default: [ ]
Example: [ config.boot.kernelPackages.nvidia_x11 ]

boot.initrd.availableKernelModules Link copied!

Type: list of string

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.

Default: [ ]
Example:
[
  "sata_nv"
  "ext3"
]

boot.initrd.compressor Link copied!

Type: string or function that evaluates to a(n) string

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"

The given program should read data from stdin and write it to stdout compressed.

Default: `zstd` if the kernel supports it (5.9+), `gzip` if not
Example: "xz"

boot.initrd.compressorArgs Link copied!

Type: null or (list of string)

Arguments to pass to the compressor for the initrd image, or null to use the compressor's defaults.

Default: null

boot.initrd.contents Link copied!

Type: list of (submodule)

Contents of the initrd.

boot.initrd.contents.*.source Link copied!

Type: absolute path

This option has no description.

boot.initrd.contents.*.target Link copied!

Type: null or string

This option has no description.

Default: null

boot.initrd.emergencyAccess Link copied!

Type: null or boolean or (string, not containing newlines or colons)

Set to true for unauthenticated emergency access to the initramfs rescue shell, and false or null for no access.

Can also be set to a hashed super user password to allow authenticated access to the rescue mode.

When access is denied, finix prints the failure reason on console and reboots after 10s instead of opening a shell.

Default: false

boot.initrd.enable Link copied!

Type: boolean

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.

Default: true

boot.initrd.fileSystemImportCommands Link copied!

Type: strings concatenated with "\n"

Lines of shell commands that are run after coldbooting the device-manager and before mounting file-systems.

Default: ""
Example:
''
  vgimport --all
''

boot.initrd.kernelModules Link copied!

Type: list of string

List of modules that are always loaded by the initrd.

Default: [ ]

boot.initrd.package Link copied!

Type: package

the initrd to use for your system... use a module to build one

boot.initrd.supportedFilesystems."9p".enable Link copied!

Type: boolean

Whether to enable support for the 9p filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.btrfs.enable Link copied!

Type: boolean

Whether to enable support for the btrfs filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.btrfs.packages Link copied!

Type: list of package

Packages providing filesystem utilities for btrfs in the initial ramdisk.

Default: [ <derivation btrfs-progs-6.19.1> ]

boot.initrd.supportedFilesystems.ext2.enable Link copied!

Type: boolean

Whether to enable support for the ext2 filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.ext2.packages Link copied!

Type: list of package

Packages providing filesystem utilities for ext2 in the initial ramdisk.

Default: [ ]

boot.initrd.supportedFilesystems.ext4.enable Link copied!

Type: boolean

Whether to enable support for the ext4 filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.ext4.packages Link copied!

Type: list of package

Packages providing filesystem utilities for ext4 in the initial ramdisk.

Default: [ ]

boot.initrd.supportedFilesystems.f2fs.enable Link copied!

Type: boolean

Whether to enable support for the f2fs filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.f2fs.packages Link copied!

Type: list of package

Packages providing filesystem utilities for f2fs in the initial ramdisk.

Default: [ ]

boot.initrd.supportedFilesystems.fuse.enable Link copied!

Type: boolean

Whether to enable support for the fuse filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.luks.enable Link copied!

Type: boolean

Whether to enable LUKS encrypted device support in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.luks.packages Link copied!

Type: list of package

Packages providing LUKS utilities in the initial ramdisk.

Default: [ <derivation cryptsetup-2.8.6> ]

boot.initrd.supportedFilesystems.lvm.enable Link copied!

Type: boolean

Whether to enable LVM support in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.lvm.packages Link copied!

Type: list of package

Packages providing LVM utilities in the initial ramdisk.

Default: [ <derivation lvm2-2.03.39> ]

boot.initrd.supportedFilesystems.none.enable Link copied!

Type: boolean

Whether to enable support for bind mounts in the initial ramdisk.

Default: true

boot.initrd.supportedFilesystems.ntfs3.enable Link copied!

Type: boolean

This option has no description.

Default: false

boot.initrd.supportedFilesystems.ntfs3.packages Link copied!

Type: list of package

This option has no description.

Default: [ ]

boot.initrd.supportedFilesystems.tmpfs.enable Link copied!

Type: boolean

Whether to enable support for the tmpfs filesystem in the initial ramdisk.

Default: true

boot.initrd.supportedFilesystems.vfat.enable Link copied!

Type: boolean

Whether to enable support for the vfat filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.vfat.packages Link copied!

Type: list of package

Packages providing filesystem utilities for vfat in the initial ramdisk.

Default: [ ]

boot.initrd.supportedFilesystems.xfs.enable Link copied!

Type: boolean

Whether to enable support for the xfs filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.xfs.packages Link copied!

Type: list of package

Packages providing filesystem utilities for xfs in the initial ramdisk.

Default: [ <derivation xfsprogs-6.19.0> ]

boot.initrd.supportedFilesystems.zfs.enable Link copied!

Type: boolean

Whether to enable support for the zfs filesystem in the initial ramdisk.

Default: false

boot.initrd.supportedFilesystems.zfs.packages Link copied!

Type: list of package

Packages providing filesystem utilities for zfs in the initial ramdisk.

Default: [ <derivation zfs-user-2.4.2> ]

boot.kernel.enable Link copied!

Type: boolean

Whether to enable the Linux kernel. This is useful for systemd-like containers which do not require a kernel.

Default: true
Example: true

boot.kernel.randstructSeed Link copied!

Type: string

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.

Default: ""
Example: "my secret seed"

boot.kernel.sysctl Link copied!

Type: open submodule of attribute set of (sysctl option value)

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).

Default: { }
Example:
{ "net.ipv4.tcp_syncookies" = false; "vm.swappiness" = 60; }

boot.kernel.sysctl."net.core.rmem_max" Link copied!

Type: null or (unsigned integer, meaning >=0)

The maximum receive socket buffer size in bytes. In case of conflicting values, the highest will be used.

Default: null

boot.kernel.sysctl."net.core.wmem_max" Link copied!

Type: null or (unsigned integer, meaning >=0)

The maximum send socket buffer size in bytes. In case of conflicting values, the highest will be used.

Default: null

boot.kernel.sysctl."vm.max_map_count" Link copied!

Type: null or (unsigned integer, meaning >=0)

The maximum number of memory map areas a process may have. In case of conflicting values, the highest will be used.

Default: null

boot.kernelModules Link copied!

Type: list of string

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.

Default: [ ]

boot.kernelPackages Link copied!

Type: raw value

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.

Default: pkgs.linuxPackages
Example: pkgs.linuxKernel.packages.linux_5_10

boot.kernelParams Link copied!

Type: list of string, with spaces inside double quotes

Parameters added to the kernel command line.

Default: [ ]

boot.kernelPatches Link copied!

Type: list of (attribute set)

A list of additional patches to apply to the kernel.

Every item should be an attribute set with the following attributes:

{
  name = "foo";                 # descriptive name, required

  patch = ./foo.patch;          # path or derivation that contains the patch source
                                # (required, but can be null if only config changes
                                # are needed)

  extraStructuredConfig = {     # attrset of extra configuration parameters without the CONFIG_ prefix
    FOO = lib.kernel.yes;       # (optional)
  };                            # values should generally be lib.kernel.yes,
                                # lib.kernel.no or lib.kernel.module

  features = {                  # attrset of extra "features" the kernel is considered to have
    foo = true;                 # (may be checked by other NixOS modules, optional)
  };

  extraConfig = "FOO y";        # extra configuration options in string form without the CONFIG_ prefix
                                # (optional, multiple lines allowed to specify multiple options)
                                # (deprecated, use extraStructuredConfig instead)
}

There's a small set of existing kernel patches in Nixpkgs, available as pkgs.kernelPatches, that follow this format and can be used directly.

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-...";
    });
  }
]

boot.loader.efi.canTouchEfiVariables Link copied!

Type: boolean

Whether the installation process is allowed to modify EFI boot variables.

Default: false

boot.loader.efi.efiSysMountPoint Link copied!

Type: string

Where the EFI System Partition is mounted.

Default: "/boot"

boot.modprobeConfig.enable Link copied!

Type: boolean

Whether to enable modprobe config. This is useful for systems like containers which do not require a kernel.

Default: true

boot.supportedFilesystems."9p".enable Link copied!

Type: boolean

Whether to enable support for the 9p filesystem.

Default: false

boot.supportedFilesystems."fuse.mergerfs".enable Link copied!

Type: boolean

Whether to enable support for the mergerfs fuse filesystem.

Default: false

boot.supportedFilesystems.btrfs.enable Link copied!

Type: boolean

Whether to enable support for the btrfs filesystem.

Default: false

boot.supportedFilesystems.btrfs.packages Link copied!

Type: list of package

Packages providing filesystem utilities for btrfs.

Default: [ <derivation btrfs-progs-6.19.1> ]

boot.supportedFilesystems.efivarfs.enable Link copied!

Type: boolean

Whether to enable support for the efivarfs filesystem.

Default: false

boot.supportedFilesystems.ext2.enable Link copied!

Type: boolean

Whether to enable support for the ext2 filesystem.

Default: false

boot.supportedFilesystems.ext2.packages Link copied!

Type: list of package

Packages providing filesystem utilities for ext2.

Default: [ ]

boot.supportedFilesystems.ext4.enable Link copied!

Type: boolean

Whether to enable support for the ext4 filesystem.

Default: false

boot.supportedFilesystems.ext4.packages Link copied!

Type: list of package

Packages providing filesystem utilities for ext4.

Default: [ ]

boot.supportedFilesystems.f2fs.enable Link copied!

Type: boolean

Whether to enable support for the f2fs filesystem.

Default: false

boot.supportedFilesystems.f2fs.packages Link copied!

Type: list of package

Packages providing filesystem utilities for f2fs.

Default: [ ]

boot.supportedFilesystems.fuse.enable Link copied!

Type: boolean

Whether to enable support for the fuse filesystem.

Default: true

boot.supportedFilesystems.luks.enable Link copied!

Type: boolean

Whether to enable LUKS encrypted device support.

Default: false

boot.supportedFilesystems.luks.packages Link copied!

Type: list of package

Packages providing LUKS utilities.

Default: [ <derivation cryptsetup-2.8.6> ]

boot.supportedFilesystems.lvm.enable Link copied!

Type: boolean

Whether to enable LVM support.

Default: false

boot.supportedFilesystems.lvm.packages Link copied!

Type: list of package

Packages providing lvm utilities.

Default: [ <derivation lvm2-2.03.39> ]

boot.supportedFilesystems.none.enable Link copied!

Type: boolean

Whether to enable support for bind mounts.

Default: true

boot.supportedFilesystems.ntfs3.enable Link copied!

Type: boolean

This option has no description.

Default: false

boot.supportedFilesystems.ntfs3.packages Link copied!

Type: list of package

This option has no description.

Default: [ ]

boot.supportedFilesystems.tmpfs.enable Link copied!

Type: boolean

Whether to enable support for the tmpfs filesystem.

Default: true

boot.supportedFilesystems.vfat.enable Link copied!

Type: boolean

Whether to enable support for the vfat filesystem.

Default: false

boot.supportedFilesystems.vfat.packages Link copied!

Type: list of package

Packages providing filesystem utilities for vfat.

Default: [ ]

boot.supportedFilesystems.xfs.enable Link copied!

Type: boolean

Whether to enable support for the xfs filesystem.

Default: false

boot.supportedFilesystems.xfs.packages Link copied!

Type: list of package

Packages providing filesystem utilities for xfs.

Default: [ <derivation xfsprogs-6.19.0> ]

boot.supportedFilesystems.zfs.enable Link copied!

Type: boolean

Whether to enable support for the zfs filesystem.

Default: false

boot.supportedFilesystems.zfs.packages Link copied!

Type: list of package

Packages providing filesystem utilities for zfs.

Default: [ <derivation zfs-user-2.4.2> ]

boot.zfs.importPools Link copied!

Type: list of string

List of ZFS pools to import at boot. Defaults to the pools necessary for booting.

Default: [ ]
Example:
[
  "jug"
  "bucket"
]

boot.zfs.loadKeys Link copied!

Type: list of string

List of ZFS dataset names to load keys for during boot.

Default: [ ]

environment.binsh Link copied!

Type: absolute path

Default shell linked system-wide to /bin/sh. Do your best to make sure any modifications to this shell are POSIX-compliant.

Default: "${pkgs.bashInteractive}/bin/sh"
Example: "${pkgs.dash}/bin/dash"

environment.etc Link copied!

Type: attribute set of (submodule)

Set of files that have to be linked in /etc.

Default: { }
Example:
{ example-configuration-file =
    { source = "/nix/store/.../etc/dir/file.conf.example";
      mode = "0440";
    };
  "default/useradd".text = "GROUP=100 ...";
}

environment.etc.<name>.enable Link copied!

Type: boolean

Whether this /etc file should be generated. This option allows specific /etc files to be disabled.

Default: true

environment.etc.<name>.gid Link copied!

Type: signed integer

GID of created file. Only takes effect when the file is copied (that is, the mode is not 'symlink').

Default: 0

environment.etc.<name>.group Link copied!

Type: string

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.

Default: "+0"

environment.etc.<name>.mode Link copied!

Type: string

If set to something else than symlink, the file is copied instead of symlinked, with the given file mode.

Default: "symlink"
Example: "0600"

environment.etc.<name>.source Link copied!

Type: absolute path

Path of the source file.

environment.etc.<name>.target Link copied!

Type: string

Name of symlink (relative to /etc). Defaults to the attribute name.

environment.etc.<name>.text Link copied!

Type: null or strings concatenated with "\n"

Text of the file.

Default: null

environment.etc.<name>.uid Link copied!

Type: signed integer

UID of created file. Only takes effect when the file is copied (that is, the mode is not 'symlink').

Default: 0

environment.etc.<name>.user Link copied!

Type: string

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.

Default: "+0"

environment.extraSetup Link copied!

Type: strings concatenated with "\n"

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 $out.

Default: ""

environment.path Link copied!

Type: absolute path

This option has no description.

environment.shells Link copied!

Type: list of (package or absolute path)

This option has no description.

Default: [ ]

environment.systemPackages Link copied!

Type: list of package

This option has no description.

Default: { }

fileSystems Link copied!

Type: attribute set of (submodule)

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 -L).

Default: { }
Example:
{
  "/".device = "/dev/hda1";
  "/data" = {
    device = "/dev/hda2";
    fsType = "ext3";
    options = [ "data=journal" ];
  };
  "/bigdisk".label = "bigdisk";
}

fileSystems.<name>.depends Link copied!

Type: list of string (with check: non-empty without trailing slash)

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.

Default: [ ]
Example:
[
  "/persist"
]

fileSystems.<name>.device Link copied!

Type: null or non-empty string

Location of the device.

Default: null
Example: "/dev/sda"

fileSystems.<name>.fsType Link copied!

Type: non-empty string

Type of the file system.

Default: "auto"
Example: "ext3"

fileSystems.<name>.label Link copied!

Type: null or non-empty string

Label of the device (if any).

Default: null
Example: "root-partition"

fileSystems.<name>.mountPoint Link copied!

Type: string (with check: non-empty without trailing slash)

Location of the mounted file system.

Example: "/mnt/usb"

fileSystems.<name>.neededForBoot Link copied!

Type: boolean

Whether this filesystem is needed for boot. If set, the filesystem will be mounted in the initial ramdisk.

Default: false

fileSystems.<name>.noCheck Link copied!

Type: boolean

Disable running fsck on this filesystem.

Default: false

fileSystems.<name>.options Link copied!

Type: non-empty (list of non-empty string)

Options used to mount the file system.

Default: [ "defaults" ]
Example:
[
  "data=journal"
]

finit.cgroups Link copied!

Type: attribute set of (submodule)

An attribute set of cgroups (v2) that will be created by finit.

See upstream documentation for additional details.

Default: { }

finit.cgroups.<name>.name Link copied!

Type: string

The name of the cgroup to create.

Default: "‹name›"

finit.cgroups.<name>.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

Settings to apply to this cgroup.

See kernel documentation for additional details.

Default: { }
Example:
{
  "cpu.weight" = 100;
}

finit.environment Link copied!

Type: attribute set of string

Environment variables passed to all finit services.

Default: { }

finit.package Link copied!

Type: package

The package to use for finit.

Note

The specified package will have its configureFlags appended to with a finit plugin path (--with-plugin-path) set to the required finix-setup plugin.

Default: pkgs.finit

finit.path Link copied!

Type: list of (absolute path or string)

Packages added to the finit PATH environment variable.

Default: [ ]

finit.readiness Link copied!

Type: one of "none", "pid"

In this mode of operation, every service needs to explicitly declare their readiness notification

Default: "none"

finit.rlimits Link copied!

Type: attribute set of (value "unlimited" (singular enum) or signed integer or (submodule))

An attribute set of resource limits that will be apply by finit.

See upstream documentation for additional details.

Default: { }

finit.run Link copied!

Type: attribute set of (submodule)

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 for additional details.

Default: { }

finit.run.<name>.caps Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

Allow services to run with minimal required privileges instead of running as root.

Default: [ ]
Example:
[
  "^cap_net_bind_service"
]

finit.run.<name>.cgroup.delegate Link copied!

Type: boolean

For services that need to create their own child cgroups (container runtimes like docker, podman, systemd-nspawn, lxc, etc...).

See upstream documentation for details.

Default: false

finit.run.<name>.cgroup.name Link copied!

Type: string

The name of the cgroup to place this process under.

Default: "system"

finit.run.<name>.cgroup.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

The cgroup settings to apply to this process.

See kernel documentation for additional details.

Default: { }

finit.run.<name>.cleanup Link copied!

Type: null or main program, path or command

A script which will be called when the service is removed.

Default: null

finit.run.<name>.command Link copied!

Type: main program, path or command

The command to execute.

finit.run.<name>.conditions Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

See upstream documentation for details.

Default: [ ]
Example: "pid/syslog"

finit.run.<name>.conflict Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

If you have conflicting services and want to prevent them from starting.

Default: [ ]

finit.run.<name>.description Link copied!

Type: null or string

A human-readable description of this service, displayed by initctl.

Default: null

finit.run.<name>.enable Link copied!

Type: boolean

Whether to enable this stanza.

Default: true

finit.run.<name>.env Link copied!

Type: null or string or absolute path

either a path or a path prefixed with a '-' to indicate a missing file is fine.

Default: null

finit.run.<name>.environment Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

Environment variables passed to this service.

Default: { }
Example:
{
  TZ = "CET";
}

finit.run.<name>.extraConfig Link copied!

Type: strings concatenated with " "

A place for finit configuration options which have not been added to the nix module yet.

Default: ""
Example: ""

finit.run.<name>.group Link copied!

Type: null or string

The group this service should be executed as.

Default: null

finit.run.<name>.id Link copied!

Type: null or string

The instance identifier, derived from the attribute name if it contains an @ character.

Default: null

finit.run.<name>.log Link copied!

Type: boolean or non-empty string

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 for additional details.

Default: false

finit.run.<name>.manual Link copied!

Type: boolean

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>.

Default: false

finit.run.<name>.name Link copied!

Type: string

The name of this stanza, derived from the attribute name.

finit.run.<name>.path Link copied!

Type: list of (package or string)

Packages added to the PATH environment variable of this service.

Default: [ ]

finit.run.<name>.post Link copied!

Type: null or main program, path or command

A script which will be called after the service has stopped.

Default: null

finit.run.<name>.pre Link copied!

Type: null or main program, path or command

A script which will be called before the service is started.

Default: null

finit.run.<name>.priority Link copied!

Type: signed integer

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.

Default: 1000

finit.run.<name>.remain Link copied!

Type: boolean

By default, a run or task will re-run each time its runlevel is entered, and its post: script does not run on completion.

With remain:yes, the task runs once and does not re-run on runlevel. The post: script will run if the task is explicitly stopped or when the task leaves its valid runlevels.

Default: false

finit.run.<name>.respawn Link copied!

Type: boolean

Enable endless restarts without counting toward the retry limit. When set, the service will be restarted indefinitely regardless of the restart limit.

Default: false

finit.run.<name>.restart Link copied!

Type: integer between -1 and 255 (both inclusive)

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.

Default: 10

finit.run.<name>.restart_sec Link copied!

Type: null or (unsigned integer, meaning >=0)

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.

Default: null

finit.run.<name>.runlevels Link copied!

Type: string

See upstream documentation for details.

Default: "234"

finit.run.<name>.supplementary_groups Link copied!

Type: list of string

Explicitly specify supplementary groups, in addition to reading group membership from /etc/group.

Default: [ ]

finit.run.<name>.user Link copied!

Type: null or string

The user this service should be executed as.

Default: null

finit.runlevel Link copied!

Type: integer between 0 and 9 (both inclusive)

The runlevel to start after bootstrap, S.

Default: 2

finit.services Link copied!

Type: attribute set of (submodule)

An attribute set of services, or daemons, to be monitored and automatically restarted if they exit prematurely.

See upstream documentation for additional details.

Default: { }

finit.services.<name>.caps Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

Allow services to run with minimal required privileges instead of running as root.

Default: [ ]
Example:
[
  "^cap_net_bind_service"
]

finit.services.<name>.cgroup.delegate Link copied!

Type: boolean

For services that need to create their own child cgroups (container runtimes like docker, podman, systemd-nspawn, lxc, etc...).

See upstream documentation for details.

Default: false

finit.services.<name>.cgroup.name Link copied!

Type: string

The name of the cgroup to place this process under.

Default: "system"

finit.services.<name>.cgroup.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

The cgroup settings to apply to this process.

See kernel documentation for additional details.

Default: { }

finit.services.<name>.cleanup Link copied!

Type: null or main program, path or command

A script which will be called when the service is removed.

Default: null

finit.services.<name>.command Link copied!

Type: main program, path or command

The command to execute.

finit.services.<name>.conditions Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

See upstream documentation for details.

Default: [ ]
Example: "pid/syslog"

finit.services.<name>.conflict Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

If you have conflicting services and want to prevent them from starting.

Default: [ ]

finit.services.<name>.description Link copied!

Type: null or string

A human-readable description of this service, displayed by initctl.

Default: null

finit.services.<name>.enable Link copied!

Type: boolean

Whether to enable this stanza.

Default: true

finit.services.<name>.env Link copied!

Type: null or string or absolute path

either a path or a path prefixed with a '-' to indicate a missing file is fine.

Default: null

finit.services.<name>.environment Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

Environment variables passed to this service.

Default: { }
Example:
{
  TZ = "CET";
}

finit.services.<name>.extraConfig Link copied!

Type: strings concatenated with " "

A place for finit configuration options which have not been added to the nix module yet.

Default: ""
Example: ""

finit.services.<name>.group Link copied!

Type: null or string

The group this service should be executed as.

Default: null

finit.services.<name>.id Link copied!

Type: null or string

The instance identifier, derived from the attribute name if it contains an @ character.

Default: null

finit.services.<name>.kill Link copied!

Type: null or integer between 1 and 300 (both inclusive)

The delay in seconds between finit sending a SIGTERM and a SIGKILL.

Default: "3"

finit.services.<name>.log Link copied!

Type: boolean or non-empty string

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 for additional details.

Default: false

finit.services.<name>.manual Link copied!

Type: boolean

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>.

Default: false

finit.services.<name>.name Link copied!

Type: string

The name of this stanza, derived from the attribute name.

finit.services.<name>.nohup Link copied!

Type: boolean

Whether this service supports reload on SIGHUP.

Default: false

finit.services.<name>.notify Link copied!

Type: null or one of "pid", "systemd", "s6", "none"

See upstream documentation for details.

Default: config.finit.readiness

finit.services.<name>.oncrash Link copied!

Type: null or one of "reboot", "script"
  • 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.
Default: null

finit.services.<name>.path Link copied!

Type: list of (package or string)

Packages added to the PATH environment variable of this service.

Default: [ ]

finit.services.<name>.pid Link copied!

Type: null or string

See upstream documentation for details.

Default: null

finit.services.<name>.post Link copied!

Type: null or main program, path or command

A script which will be called after the service has stopped.

Default: null

finit.services.<name>.pre Link copied!

Type: null or main program, path or command

A script which will be called before the service is started.

Default: null

finit.services.<name>.ready Link copied!

Type: null or main program, path or command

A script which will be called when the service is ready.

Default: null

finit.services.<name>.reload Link copied!

Type: null or main program, path or command

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 ``$MAINPIDas a convenience to scripts, which in effect also allow settingreload` 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.

Default: null
Example: "kill -HUP $MAINPID"

finit.services.<name>.respawn Link copied!

Type: boolean

Enable endless restarts without counting toward the retry limit. When set, the service will be restarted indefinitely regardless of the restart limit.

Default: false

finit.services.<name>.restart Link copied!

Type: integer between -1 and 255 (both inclusive)

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.

Default: 10

finit.services.<name>.restart_sec Link copied!

Type: null or (unsigned integer, meaning >=0)

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.

Default: null

finit.services.<name>.rlimits Link copied!

Type: attribute set of (value "unlimited" (singular enum) or signed integer or (submodule))

An attribute set of resource limits that will be apply by finit.

See upstream documentation for additional details.

Default: { }

finit.services.<name>.runlevels Link copied!

Type: string

See upstream documentation for details.

Default: "234"

finit.services.<name>.stop Link copied!

Type: null or main program, path or command

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.

Default: null

finit.services.<name>.supplementary_groups Link copied!

Type: list of string

Explicitly specify supplementary groups, in addition to reading group membership from /etc/group.

Default: [ ]

finit.services.<name>.type Link copied!

Type: null or value "forking" (singular enum)

Service type. Set to "forking" for traditional daemons that fork to the background and use PID files for process tracking.

Default: null

finit.services.<name>.user Link copied!

Type: null or string

The user this service should be executed as.

Default: null

finit.sysv Link copied!

Type: attribute set of (submodule)

An attribute set of SysV init scripts to be managed by finit. These are legacy init scripts that are called with start, stop, and restart arguments.

See upstream documentation for additional details.

Default: { }

finit.sysv.<name>.caps Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

Allow services to run with minimal required privileges instead of running as root.

Default: [ ]
Example:
[
  "^cap_net_bind_service"
]

finit.sysv.<name>.cgroup.delegate Link copied!

Type: boolean

For services that need to create their own child cgroups (container runtimes like docker, podman, systemd-nspawn, lxc, etc...).

See upstream documentation for details.

Default: false

finit.sysv.<name>.cgroup.name Link copied!

Type: string

The name of the cgroup to place this process under.

Default: "system"

finit.sysv.<name>.cgroup.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

The cgroup settings to apply to this process.

See kernel documentation for additional details.

Default: { }

finit.sysv.<name>.cleanup Link copied!

Type: null or main program, path or command

A script which will be called when the service is removed.

Default: null

finit.sysv.<name>.command Link copied!

Type: main program, path or command

The command to execute.

finit.sysv.<name>.conditions Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

See upstream documentation for details.

Default: [ ]
Example: "pid/syslog"

finit.sysv.<name>.conflict Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

If you have conflicting services and want to prevent them from starting.

Default: [ ]

finit.sysv.<name>.description Link copied!

Type: null or string

A human-readable description of this service, displayed by initctl.

Default: null

finit.sysv.<name>.enable Link copied!

Type: boolean

Whether to enable this stanza.

Default: true

finit.sysv.<name>.env Link copied!

Type: null or string or absolute path

either a path or a path prefixed with a '-' to indicate a missing file is fine.

Default: null

finit.sysv.<name>.environment Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

Environment variables passed to this service.

Default: { }
Example:
{
  TZ = "CET";
}

finit.sysv.<name>.extraConfig Link copied!

Type: strings concatenated with " "

A place for finit configuration options which have not been added to the nix module yet.

Default: ""
Example: ""

finit.sysv.<name>.group Link copied!

Type: null or string

The group this service should be executed as.

Default: null

finit.sysv.<name>.id Link copied!

Type: null or string

The instance identifier, derived from the attribute name if it contains an @ character.

Default: null

finit.sysv.<name>.kill Link copied!

Type: null or integer between 1 and 300 (both inclusive)

The delay in seconds between finit sending a SIGTERM and a SIGKILL.

Default: "3"

finit.sysv.<name>.log Link copied!

Type: boolean or non-empty string

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 for additional details.

Default: false

finit.sysv.<name>.manual Link copied!

Type: boolean

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>.

Default: false

finit.sysv.<name>.name Link copied!

Type: string

The name of this stanza, derived from the attribute name.

finit.sysv.<name>.nohup Link copied!

Type: boolean

Whether this service supports reload on SIGHUP.

Default: false

finit.sysv.<name>.notify Link copied!

Type: null or one of "pid", "systemd", "s6", "none"

See upstream documentation for details.

Default: config.finit.readiness

finit.sysv.<name>.oncrash Link copied!

Type: null or one of "reboot", "script"
  • 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.
Default: null

finit.sysv.<name>.path Link copied!

Type: list of (package or string)

Packages added to the PATH environment variable of this service.

Default: [ ]

finit.sysv.<name>.pid Link copied!

Type: null or string

See upstream documentation for details.

Default: null

finit.sysv.<name>.post Link copied!

Type: null or main program, path or command

A script which will be called after the service has stopped.

Default: null

finit.sysv.<name>.pre Link copied!

Type: null or main program, path or command

A script which will be called before the service is started.

Default: null

finit.sysv.<name>.ready Link copied!

Type: null or main program, path or command

A script which will be called when the service is ready.

Default: null

finit.sysv.<name>.reload Link copied!

Type: null or main program, path or command

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 ``$MAINPIDas a convenience to scripts, which in effect also allow settingreload` 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.

Default: null
Example: "kill -HUP $MAINPID"

finit.sysv.<name>.respawn Link copied!

Type: boolean

Enable endless restarts without counting toward the retry limit. When set, the service will be restarted indefinitely regardless of the restart limit.

Default: false

finit.sysv.<name>.restart Link copied!

Type: integer between -1 and 255 (both inclusive)

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.

Default: 10

finit.sysv.<name>.restart_sec Link copied!

Type: null or (unsigned integer, meaning >=0)

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.

Default: null

finit.sysv.<name>.rlimits Link copied!

Type: attribute set of (value "unlimited" (singular enum) or signed integer or (submodule))

An attribute set of resource limits that will be apply by finit.

See upstream documentation for additional details.

Default: { }

finit.sysv.<name>.runlevels Link copied!

Type: string

See upstream documentation for details.

Default: "234"

finit.sysv.<name>.stop Link copied!

Type: null or main program, path or command

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.

Default: null

finit.sysv.<name>.supplementary_groups Link copied!

Type: list of string

Explicitly specify supplementary groups, in addition to reading group membership from /etc/group.

Default: [ ]

finit.sysv.<name>.type Link copied!

Type: null or value "forking" (singular enum)

Service type. Set to "forking" for traditional daemons that fork to the background and use PID files for process tracking.

Default: null

finit.sysv.<name>.user Link copied!

Type: null or string

The user this service should be executed as.

Default: null

finit.tasks Link copied!

Type: attribute set of (submodule)

An attribute set of one-shot commands to be executed by finit.

See upstream documentation for additional details.

Default: { }

finit.tasks.<name>.caps Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

Allow services to run with minimal required privileges instead of running as root.

Default: [ ]
Example:
[
  "^cap_net_bind_service"
]

finit.tasks.<name>.cgroup.delegate Link copied!

Type: boolean

For services that need to create their own child cgroups (container runtimes like docker, podman, systemd-nspawn, lxc, etc...).

See upstream documentation for details.

Default: false

finit.tasks.<name>.cgroup.name Link copied!

Type: string

The name of the cgroup to place this process under.

Default: "system"

finit.tasks.<name>.cgroup.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

The cgroup settings to apply to this process.

See kernel documentation for additional details.

Default: { }

finit.tasks.<name>.cleanup Link copied!

Type: null or main program, path or command

A script which will be called when the service is removed.

Default: null

finit.tasks.<name>.command Link copied!

Type: main program, path or command

The command to execute.

finit.tasks.<name>.conditions Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

See upstream documentation for details.

Default: [ ]
Example: "pid/syslog"

finit.tasks.<name>.conflict Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

If you have conflicting services and want to prevent them from starting.

Default: [ ]

finit.tasks.<name>.description Link copied!

Type: null or string

A human-readable description of this service, displayed by initctl.

Default: null

finit.tasks.<name>.enable Link copied!

Type: boolean

Whether to enable this stanza.

Default: true

finit.tasks.<name>.env Link copied!

Type: null or string or absolute path

either a path or a path prefixed with a '-' to indicate a missing file is fine.

Default: null

finit.tasks.<name>.environment Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

Environment variables passed to this service.

Default: { }
Example:
{
  TZ = "CET";
}

finit.tasks.<name>.extraConfig Link copied!

Type: strings concatenated with " "

A place for finit configuration options which have not been added to the nix module yet.

Default: ""
Example: ""

finit.tasks.<name>.group Link copied!

Type: null or string

The group this service should be executed as.

Default: null

finit.tasks.<name>.id Link copied!

Type: null or string

The instance identifier, derived from the attribute name if it contains an @ character.

Default: null

finit.tasks.<name>.log Link copied!

Type: boolean or non-empty string

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 for additional details.

Default: false

finit.tasks.<name>.manual Link copied!

Type: boolean

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>.

Default: false

finit.tasks.<name>.name Link copied!

Type: string

The name of this stanza, derived from the attribute name.

finit.tasks.<name>.path Link copied!

Type: list of (package or string)

Packages added to the PATH environment variable of this service.

Default: [ ]

finit.tasks.<name>.post Link copied!

Type: null or main program, path or command

A script which will be called after the service has stopped.

Default: null

finit.tasks.<name>.pre Link copied!

Type: null or main program, path or command

A script which will be called before the service is started.

Default: null

finit.tasks.<name>.remain Link copied!

Type: boolean

By default, a run or task will re-run each time its runlevel is entered, and its post: script does not run on completion.

With remain:yes, the task runs once and does not re-run on runlevel. The post: script will run if the task is explicitly stopped or when the task leaves its valid runlevels.

Default: false

finit.tasks.<name>.respawn Link copied!

Type: boolean

Enable endless restarts without counting toward the retry limit. When set, the service will be restarted indefinitely regardless of the restart limit.

Default: false

finit.tasks.<name>.restart Link copied!

Type: integer between -1 and 255 (both inclusive)

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.

Default: 10

finit.tasks.<name>.restart_sec Link copied!

Type: null or (unsigned integer, meaning >=0)

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.

Default: null

finit.tasks.<name>.rlimits Link copied!

Type: attribute set of (value "unlimited" (singular enum) or signed integer or (submodule))

An attribute set of resource limits that will be apply by finit.

See upstream documentation for additional details.

Default: { }

finit.tasks.<name>.runlevels Link copied!

Type: string

See upstream documentation for details.

Default: "234"

finit.tasks.<name>.supplementary_groups Link copied!

Type: list of string

Explicitly specify supplementary groups, in addition to reading group membership from /etc/group.

Default: [ ]

finit.tasks.<name>.user Link copied!

Type: null or string

The user this service should be executed as.

Default: null

finit.tmpfiles.rules Link copied!

Type: list of string

Rules for creation, deletion and cleaning of volatile and temporary files automatically. See tmpfiles.d(5) for the exact format.

Default: [ ]
Example:
[
  "d /tmp 1777 root root 10d"
]

finit.ttys Link copied!

Type: attribute set of (submodule)

An attribute set of TTYs that finit should manage.

See upstream documentation for additional details.

Default: { }

finit.ttys.<name>.baud Link copied!

Type: null or non-empty string

Baud rate for serial TTYs.

Default: null

finit.ttys.<name>.cgroup.delegate Link copied!

Type: boolean

For services that need to create their own child cgroups (container runtimes like docker, podman, systemd-nspawn, lxc, etc...).

See upstream documentation for details.

Default: false

finit.ttys.<name>.cgroup.name Link copied!

Type: string

The name of the cgroup to place this process under.

Default: "system"

finit.ttys.<name>.cgroup.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

The cgroup settings to apply to this process.

See kernel documentation for additional details.

Default: { }

finit.ttys.<name>.command Link copied!

Type: null or main program, path or command

Specify an external getty, like agetty or the BusyBox getty.

Default: null

finit.ttys.<name>.conditions Link copied!

Type: (list of non-empty string) or non-empty string convertible to it

See upstream documentation for details.

Default: [ ]
Example: "pid/syslog"

finit.ttys.<name>.description Link copied!

Type: null or string

A human-readable description of this service, displayed by initctl.

Default: null

finit.ttys.<name>.device Link copied!

Type: null or non-empty string

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.

Default: null

finit.ttys.<name>.enable Link copied!

Type: boolean

Whether to enable this stanza.

Default: true

finit.ttys.<name>.extraConfig Link copied!

Type: strings concatenated with " "

A place for finit configuration options which have not been added to the nix module yet.

Default: ""
Example: ""

finit.ttys.<name>.id Link copied!

Type: null or non-empty string

Explicit instance ID for the TTY. If not set, finit auto-derives it from the device name (e.g., tty1 becomes :1, ttyS0 becomes :S0).

Default: null

finit.ttys.<name>.noclear Link copied!

Type: boolean

Disables clearing the TTY after each session. Clearing the TTY when a user logs out is usually preferable.

Default: false

finit.ttys.<name>.nologin Link copied!

Type: boolean

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.

Default: false

finit.ttys.<name>.notty Link copied!

Type: boolean

No device node mode. This is insecure and intended only for board bringup or testing scenarios.

Default: false

finit.ttys.<name>.nowait Link copied!

Type: boolean

Disables the press Enter to activate console message before actually starting the getty program.

Default: false

finit.ttys.<name>.rescue Link copied!

Type: boolean

Start sulogin instead of a regular shell, requiring the root password. Useful for rescue/single-user mode.

Default: false

finit.ttys.<name>.runlevels Link copied!

Type: string

See upstream documentation for details.

Default: "234"

finit.ttys.<name>.term Link copied!

Type: null or non-empty string

The TERM environment variable value for the TTY.

Default: null

fonts.enableDefaultPackages Link copied!

Type: boolean

Enable a basic set of fonts providing several styles and families and reasonable coverage of Unicode.

Default: false

fonts.fontconfig.allowBitmaps Link copied!

Type: boolean

Allow bitmap fonts. Set to false to ban all bitmap fonts.

Default: true

fonts.fontconfig.allowType1 Link copied!

Type: boolean

Allow Type-1 fonts. Default is false because of poor rendering.

Default: false

fonts.fontconfig.antialias Link copied!

Type: boolean

Enable font antialiasing. At high resolution (> 200 DPI), antialiasing has no visible effect; users of such displays may want to disable this option.

Default: true

fonts.fontconfig.cache32Bit Link copied!

Type: boolean

Generate system fonts cache for 32-bit applications.

Default: false

fonts.fontconfig.defaultFonts.emoji Link copied!

Type: list of string

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.

Default: [ "Noto Color Emoji" ]

fonts.fontconfig.defaultFonts.monospace Link copied!

Type: list of string

System-wide default monospace font(s). Multiple fonts may be listed in case multiple languages must be supported.

Default: [ "DejaVu Sans Mono" ]

fonts.fontconfig.defaultFonts.sansSerif Link copied!

Type: list of string

System-wide default sans serif font(s). Multiple fonts may be listed in case multiple languages must be supported.

Default: [ "DejaVu Sans" ]

fonts.fontconfig.defaultFonts.serif Link copied!

Type: list of string

System-wide default serif font(s). Multiple fonts may be listed in case multiple languages must be supported.

Default: [ "DejaVu Serif" ]

fonts.fontconfig.enable Link copied!

Type: boolean

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.

Default: false

fonts.fontconfig.hinting.autohint Link copied!

Type: boolean

Enable the autohinter in place of the default interpreter. The results are usually lower quality than correctly-hinted fonts, but better than unhinted fonts.

Default: false

fonts.fontconfig.hinting.enable Link copied!

Type: boolean

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.

Default: true

fonts.fontconfig.hinting.style Link copied!

Type: one of "none", "slight", "medium", "full"

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.

Default: "slight"

fonts.fontconfig.includeUserConf Link copied!

Type: boolean

Include the user configuration from /.config/fontconfig/fonts.conf or /.config/fontconfig/conf.d.

Default: true

fonts.fontconfig.localConf Link copied!

Type: strings concatenated with "\n"

System-wide customization file contents, has higher priority than defaultFonts settings.

Default: ""

fonts.fontconfig.subpixel.lcdfilter Link copied!

Type: one of "none", "default", "light", "legacy"

FreeType LCD filter. At high resolution (> 200 DPI), LCD filtering has no visible effect; users of such displays may want to select none.

Default: "default"

fonts.fontconfig.subpixel.rgba Link copied!

Type: one of "rgb", "bgr", "vrgb", "vbgr", "none"

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.

Default: "none"

fonts.fontconfig.useEmbeddedBitmaps Link copied!

Type: boolean

Use embedded bitmaps in fonts like Calibri.

Default: false

fonts.packages Link copied!

Type: list of absolute path

List of primary font packages.

Default: [ ]
Example: [ pkgs.dejavu_fonts ]

hardware.console.binaryKeyMap Link copied!

Type: absolute path

Binary keymap file. If unset then this is generated from the hardware.console.keyMap option.

Default: "Binary form of hardware.console.keyMap."

hardware.console.enable Link copied!

Type: boolean

Whether to configure the console at boot.

Default: true

hardware.console.keyMap Link copied!

Type: string or absolute path

The keyboard mapping table for the virtual consoles. This option may have no effect if hardware.console.binaryKeyMap is set.

Default: "us"

hardware.console.setvesablank Link copied!

Type: boolean

Turn VESA screen blanking on or off.

Default: true

hardware.firmware Link copied!

Type: list of package

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.

Default: [ ]

hardware.graphics.enable Link copied!

Type: boolean

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.

Default: false

hardware.graphics.enable32Bit Link copied!

Type: boolean

On 64-bit systems, whether to also install 32-bit drivers for 32-bit applications (such as Wine).

Default: false

hardware.graphics.extraPackages Link copied!

Type: list of package

Additional packages to add to the default graphics driver lookup path. This can be used to add OpenCL drivers, VA-API/VDPAU drivers, etc.

Note

intel-media-driver supports hardware Broadwell (2014) or newer. Older hardware should use the mostly unmaintained intel-vaapi-driver driver.

Default: [ ]
Example: with pkgs; [ intel-media-driver intel-ocl intel-vaapi-driver ]

hardware.graphics.extraPackages32 Link copied!

Type: list of package

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.

Note

intel-media-driver supports hardware Broadwell (2014) or newer. Older hardware should use the mostly unmaintained intel-vaapi-driver driver.

Default: [ ]
Example: with pkgs.pkgsi686Linux; [ intel-media-driver intel-vaapi-driver ]

hardware.i2c.enable Link copied!

Type: boolean

Whether to enable support for i2c devices. Access to these devices is granted to users in the hardware.i2c.group group.

Default: false

hardware.i2c.group Link copied!

Type: string

Group to own the /dev/i2c-* devices.

Note

If you want non-root users to be able to access these i2c devices, add them to this group.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before system activation has completed.

Default: "i2c"

hardware.nvidia.enable Link copied!

Type: boolean

Whether to enable NVIDIA driver support .

Default: false
Example: true

hardware.nvidia.forceFullCompositionPipeline Link copied!

Type: boolean

Whether to enable forcefully the full composition pipeline. This sometimes fixes screen tearing issues. This has been reported to reduce the performance of some OpenGL applications and may produce issues in WebGL. It also drastically increases the time the driver needs to clock down after load .

Default: false
Example: true

hardware.nvidia.gsp.enable Link copied!

Type: boolean

Whether to enable the GPU System Processor (GSP) on the video card .

Default: config.hardware.nvidia.open == true || lib.versionAtLeast config.hardware.nvidia.package.version "555"
Example: true

hardware.nvidia.modesetting.enable Link copied!

Type: boolean

Whether to enable kernel modesetting when using the NVIDIA proprietary driver.

Enabling this fixes screen tearing when using Optimus via PRIME (see hardware.nvidia.prime.sync.enable. This is not enabled by default because it is not officially supported by NVIDIA and would not work with SLI.

Enabling this and using version 545 or newer of the proprietary NVIDIA driver causes it to provide its own framebuffer device, which can cause Wayland compositors to work when they otherwise wouldn't. .

Default: lib.versionAtLeast cfg.package.version "535"
Example: true

hardware.nvidia.open Link copied!

Type: null or boolean

Whether to enable the open source NVIDIA kernel module.

Default: if lib.versionOlder config.hardware.nvidia.package.version "560" then false else null
Example: true

hardware.nvidia.package Link copied!

Type: unspecified value

The NVIDIA driver package to use.

Default: config.boot.kernelPackages.nvidiaPackages.stable
Example: "config.boot.kernelPackages.nvidiaPackages.legacy_470"

hardware.nvidia.powerManagement.enable Link copied!

Type: boolean

Whether to enable experimental power management through systemd. For more information, see the NVIDIA docs, on Chapter 21. Configuring Power Management Support .

Default: false
Example: true

hardware.nvidia.powerManagement.finegrained Link copied!

Type: boolean

Whether to enable experimental power management of PRIME offload. For more information, see the NVIDIA docs, on Chapter 22. PCI-Express Runtime D3 (RTD3) Power Management .

Default: false
Example: true

hardware.nvidia.powerManagement.kernelSuspendNotifier Link copied!

Type: boolean

Whether to enable NVIDIA driver support for kernel suspend notifiers, which allows the driver to be notified of suspend and resume events by the kernel, rather than relying on systemd services. Requires NVIDIA driver version 595 or newer, and the open source kernel modules. .

Default: config.hardware.nvidia.open == true && lib.versionAtLeast config.hardware.nvidia.package.version "595"
Example: true

hardware.nvidia.prime.allowExternalGpu Link copied!

Type: boolean

Whether to enable configuring X to allow external NVIDIA GPUs when using Prime [Reverse] sync optimus .

Default: false
Example: true

hardware.nvidia.prime.amdgpuBusId Link copied!

Type: string matching the pattern ([[:print:]]+:[0-9]{1,3}(@[0-9]{1,10})?:[0-9]{1,2}:[0-9])?

Bus ID of the AMD APU. You can find it using lspci; for example if lspci shows the AMD APU at "0001:02:03.4", set this option to "PCI:2@1:3:4".

lspci might omit the PCI domain (0001 in above example) if it is zero. In which case, use "@0" instead.

Please be aware that this option takes decimal address while lspci reports hexadecimal address. So for device at domain "10000", use "@65536".

Default: ""
Example: "PCI:4@0:0:0"

hardware.nvidia.prime.intelBusId Link copied!

Type: string matching the pattern ([[:print:]]+:[0-9]{1,3}(@[0-9]{1,10})?:[0-9]{1,2}:[0-9])?

Bus ID of the Intel GPU. You can find it using lspci; for example if lspci shows the Intel GPU at "0001:02:03.4", set this option to "PCI:2@1:3:4".

lspci might omit the PCI domain (0001 in above example) if it is zero. In which case, use "@0" instead.

Please be aware that this option takes decimal address while lspci reports hexadecimal address. So for device at domain "10000", use "@65536".

Default: ""
Example: "PCI:0@0:2:0"

hardware.nvidia.prime.nvidiaBusId Link copied!

Type: string matching the pattern ([[:print:]]+:[0-9]{1,3}(@[0-9]{1,10})?:[0-9]{1,2}:[0-9])?

Bus ID of the NVIDIA GPU. You can find it using lspci; for example if lspci shows the NVIDIA GPU at "0001:02:03.4", set this option to "PCI:2@1:3:4".

lspci might omit the PCI domain (0001 in above example) if it is zero. In which case, use "@0" instead.

Please be aware that this option takes decimal address while lspci reports hexadecimal address. So for device at domain "10000", use "@65536".

Default: ""
Example: "PCI:1@0:0:0"

hardware.nvidia.prime.offload.enable Link copied!

Type: boolean

Whether to enable render offload support using the NVIDIA proprietary driver via PRIME.

If this is enabled, then the bus IDs of the NVIDIA and Intel/AMD GPUs have to be specified (hardware.nvidia.prime.nvidiaBusId and hardware.nvidia.prime.intelBusId or hardware.nvidia.prime.amdgpuBusId) .

Default: false
Example: true

hardware.nvidia.prime.offload.enableOffloadCmd Link copied!

Type: boolean

Whether to enable adding a nvidia-offload convenience script to environment.systemPackages for offloading programs to an nvidia device. To work, you must also enable hardware.nvidia.prime.offload.enable or hardware.nvidia.prime.reverseSync.enable.

Example usage: nvidia-offload sauerbraten_client

This script can be renamed with hardware.nvidia.prime.offload.enableOffloadCmd. .

Default: false
Example: true

hardware.nvidia.prime.offload.offloadCmdMainProgram Link copied!

Type: string

Specifies the CLI name of the hardware.nvidia.prime.offload.enableOffloadCmd convenience script for offloading programs to an nvidia device.

Default: "nvidia-offload"
Example: "prime-run"

hardware.nvidia.prime.reverseSync.enable Link copied!

Type: boolean

Whether to enable NVIDIA Optimus support using the NVIDIA proprietary driver via reverse PRIME. If enabled, the Intel/AMD GPU will be used for all rendering, while enabling output to displays attached only to the NVIDIA GPU without a multiplexer.

Warning: This feature is relatively new, depending on your system this might work poorly. AMD support, especially so. See: <https://forums.developer.nvidia.com/t/the-all-new-outputsink-feature-aka-reverse-prime/129828>

Note that this option only has any effect if the "nvidia" driver is specified in services.xserver.videoDrivers, and it should preferably be the only driver there.

If this is enabled, then the bus IDs of the NVIDIA and Intel/AMD GPUs have to be specified (hardware.nvidia.prime.nvidiaBusId and hardware.nvidia.prime.intelBusId or hardware.nvidia.prime.amdgpuBusId).

If you enable this, you may want to also enable kernel modesetting for the NVIDIA driver (hardware.nvidia.modesetting.enable) in order to prevent tearing.

Note that this configuration will only be successful when a display manager for which the services.xserver.displayManager.setupCommands option is supported is used .

Default: false
Example: true

hardware.nvidia.prime.reverseSync.setupCommands.enable Link copied!

Type: boolean

Whether to enable configure the display manager to be able to use the outputs attached to the NVIDIA GPU. Disable in order to configure the NVIDIA GPU outputs manually using xrandr. Note that this configuration will only be successful when a display manager for which the services.xserver.displayManager.setupCommands option is supported is used .

Default: true
Example: true

hardware.nvidia.prime.sync.enable Link copied!

Type: boolean

Whether to enable NVIDIA Optimus support using the NVIDIA proprietary driver via PRIME. If enabled, the NVIDIA GPU will be always on and used for all rendering, while enabling output to displays attached only to the integrated Intel/AMD GPU without a multiplexer.

Note that this option only has any effect if the "nvidia" driver is specified in services.xserver.videoDrivers, and it should preferably be the only driver there.

If this is enabled, then the bus IDs of the NVIDIA and Intel/AMD GPUs have to be specified (hardware.nvidia.prime.nvidiaBusId and hardware.nvidia.prime.intelBusId or hardware.nvidia.prime.amdgpuBusId).

If you enable this, you may want to also enable kernel modesetting for the NVIDIA driver (hardware.nvidia.modesetting.enable) in order to prevent tearing.

Note that this configuration will only be successful when a display manager for which the services.xserver.displayManager.setupCommands option is supported is used .

Default: false
Example: true

hardware.nvidia.videoAcceleration Link copied!

Type: boolean

Whether to enable Whether video acceleration (VA-API) should be enabled. .

Default: true
Example: true

hardware.uinput.enable Link copied!

Type: boolean

Whether to enable uinput support.

Default: false

hardware.uinput.group Link copied!

Type: string

Group to own the uinput devices.

Note

If you want non-root users to be able to access these uinput devices, add them to this group.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before system activation has completed.

Default: "uinput"

i18n.defaultLocale Link copied!

Type: string

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.

Default: "en_US.UTF-8"
Example: "nl_NL.UTF-8"

i18n.extraLocaleSettings Link copied!

Type: attribute set of string

A set of additional system-wide locale settings other than LANG which can be configured with i18n.defaultLocale.

Default: { }
Example:
{
  LC_MESSAGES = "en_US.UTF-8";
  LC_TIME = "de_DE.UTF-8";
}

i18n.glibcLocales Link copied!

Type: absolute path

Customized pkg.glibcLocales package.

Changing this option can disable handling of i18n.defaultLocale and supportedLocale.

Default: pkgs.glibcLocales.override { allLocales = lib.any (x: x == "all") config.i18n.supportedLocales; locales = config.i18n.supportedLocales; }
Example: pkgs.glibcLocales

i18n.supportedLocales Link copied!

Type: list of string

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>.

Default: lib.unique (builtins.map (l: (lib.replaceStrings [ "utf8" "utf-8" "UTF8" ] [ "UTF-8" "UTF-8" "UTF-8" ] l) + "/UTF-8") ( [ "C.UTF-8" "en_US.UTF-8" config.i18n.defaultLocale ] ++ (lib.attrValues (lib.filterAttrs (n: v: n != "LANGUAGE") config.i18n.extraLocaleSettings)) ))
Example:
[
  "en_US.UTF-8/UTF-8"
  "nl_NL.UTF-8/UTF-8"
  "nl_NL/ISO-8859-1"
]

meta.maintainers Link copied!

Type: list of (maintainer)

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.

Default: [ ]
Example: [ lib.maintainers.alice lib.maintainers.bob ]

networking.hostId Link copied!

Type: null or string

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

(this derives it from the machine-id that systemd generates) or

head -c4 /dev/urandom | od -A none -t x4

The primary use case is to ensure when using ZFS that a pool isn't imported accidentally on a wrong machine.

Default: null
Example: "4e98920d"

networking.hostName Link copied!

Type: string

The hostname of this system.

Default: "finix"

networking.hosts Link copied!

Type: attribute set of list of string

Locally defined maps of hostnames to IP addresses.

Default: { }
Example:
{
  "127.0.0.1" = [ "foo.bar.baz" ];
  "192.168.0.2" = [ "fileserver.local" "nameserver.local" ];
};

nixpkgs.pkgs Link copied!

Type: An evaluation of Nixpkgs; the top level attribute set of packages

The nixpkgs package set to use for this system.

Default: { }

programs.bash.enable Link copied!

Type: boolean

Whether to enable bash.

Default: false

programs.bash.package Link copied!

Type: package

The package to use for bash.

Default: pkgs.bashInteractive

programs.brightnessctl.enable Link copied!

Type: boolean

Whether to enable brightnessctl.

Default: false

programs.brightnessctl.package Link copied!

Type: package

The package to use for brightnessctl.

Default: pkgs.brightnessctl.override { logindSupport = config.services.elogind.enable; udevSupport = config.services.udev.enable; systemdLibs = config.services.elogind.package; }

programs.coreutils.package Link copied!

Type: package

Package providing the standard core utilities used by the system.

Most modules should use this option instead of depending directly on pkgs.coreutils, allowing alternative implementations such as uutils, busybox, or toybox to be selected globally.

Default: pkgs.coreutils
Example: pkgs.busybox

programs.dma.enable Link copied!

Type: boolean

Whether to enable dma.

Default: false

programs.dma.package Link copied!

Type: package

The package to use for dma.

Default: pkgs.dma

programs.dma.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

dma configuration. See dma(8) for additional details.

Default: { }

programs.doas.enable Link copied!

Type: boolean

Whether to enable doas.

Default: false

programs.doas.package Link copied!

Type: package

The package to use for doas.

Default: pkgs.doas

programs.fish.enable Link copied!

Type: boolean

Whether to enable fish.

Default: false

programs.fish.package Link copied!

Type: package

The package to use for fish.

Default: pkgs.fish

programs.gamemode.enable Link copied!

Type: boolean

Whether to enable gamemode.

Default: false

programs.gamemode.package Link copied!

Type: package

The package to use for gamemode.

Default: pkgs.gamemode

programs.gamemode.settings Link copied!

Type: attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string) or a list of them for duplicate keys)

gamemode configuration. See gamemoded(8) for additional details.

Default: { }
Example:
{
  general = {
    renice = 10;
  };

  # Warning: GPU optimisations have the potential to damage hardware
  gpu = {
    apply_gpu_optimisations = "accept-responsibility";
    gpu_device = 0;
    amd_performance_level = "high";
  };

  custom = {
    start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
    end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
  };
}

programs.gnome-keyring.enable Link copied!

Type: boolean

Whether to enable gnome-keyring.

Default: false

programs.hyprland.enable Link copied!

Type: boolean

Whether to enable hyprland.

Default: false

programs.hyprland.package Link copied!

Type: package

The package to use for hyprland.

Default: pkgs.hyprland

programs.hyprlock.enable Link copied!

Type: boolean

Whether to enable hyprlock.

Default: false

programs.hyprlock.package Link copied!

Type: package

The package to use for hyprlock.

Default: pkgs.hyprlock

programs.ifupdown-ng.auto Link copied!

Type: list of string

Designates interfaces that should be automatically configured by the system when appropriate.

Default: [ ]
Example:
[
  "eth0"
  "br0"
]

programs.ifupdown-ng.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

programs.ifupdown-ng.enable Link copied!

Type: boolean

Whether to enable ifupdown-ng.

Default: false

programs.ifupdown-ng.extraArgs Link copied!

Type: list of string

Additional arguments to pass to ifupdown-ng. See ifupdown-ng(8) for additional details.

Default: [ ]
Example:
[
  "--timeout"
  "60"
]

programs.ifupdown-ng.iface Link copied!

Type: attribute set of (open submodule of attribute set of (boolean or string or list of string))

/etc/network/interfaces configuration. See interfaces(5) for additional details.

Default: { }
Example:
{
  eth0 = {
    address = [ "203.0.113.2/24" "2001:db8::2/64" ];
    gateway = "203.0.113.1";
    use = "dhcp";
  };
  br0 = {
    address = "10.0.0.1/24";
    bridge-ports = "eth0 eth1";
    bridge-stp = true;
  };
}

programs.ifupdown-ng.iface.<name>.address Link copied!

Type: null or ((list of string) or string convertible to it)

Associates an IPv4 or IPv6 address in CIDR notation with the parent interface.

Default: null
Example:
[
  "203.0.113.2/24"
  "2001:db8::2/64"
]

programs.ifupdown-ng.iface.<name>.gateway Link copied!

Type: null or ((list of string) or string convertible to it)

Associates an IPv4 or IPv6 address with the parent interface for use as a default route (gateway).

Default: null
Example:
[
  "203.0.113.1"
  "2001:db8::1"
]

programs.ifupdown-ng.iface.<name>.requires Link copied!

Type: null or ((list of string) or string convertible to it)

Designates one or more required interfaces that must be brought up before configuration of the parent interface. Interfaces associated with the parent are taken down at the same time as the parent.

Default: null
Example:
[
  "eth0"
  "eth1"
]

programs.ifupdown-ng.iface.<name>.use Link copied!

Type: null or ((list of string) or string convertible to it)

Designates that an executor should be used. See EXECUTORS section for more information on executors.

Default: null
Example:
[
  "dhcp"
  "bridge"
]

programs.ifupdown-ng.package Link copied!

Type: package

The package to use for ifupdown-ng.

Default: pkgs.ifupdown-ng

programs.ifupdown-ng.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

ifupdown-ng configuration. See ifupdown-ng.conf(5) for additional details.

Default: { }

programs.labwc.enable Link copied!

Type: boolean

Whether to enable labwc.

Default: false

programs.labwc.package Link copied!

Type: package

The package to use for labwc.

Default: pkgs.labwc

programs.limine.additionalFiles Link copied!

Type: attribute set of absolute path

A set of files to be copied to /boot. Each attribute name denotes the destination file name in /boot, while the corresponding attribute value specifies the source file.

Default: { }
Example:
{ "efi/memtest86/memtest86.efi" = "${pkgs.memtest86-efi}/BOOTX64.efi"; }

programs.limine.biosDevice Link copied!

Type: string

Device to install the BIOS version of limine on.

Default: "nodev"

programs.limine.biosSupport Link copied!

Type: boolean

Whether or not to install limine for BIOS.

Default: !config.programs.limine.efiSupport && pkgs.stdenv.hostPlatform.isx86
Example: true

programs.limine.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

programs.limine.efiInstallAsRemovable Link copied!

Type: boolean

Whether or not to install the limine EFI files as removable.

See boot.loader.grub.efiInstallAsRemovable

Default: !config.boot.loader.efi.canTouchEfiVariables
Example: true

programs.limine.efiSupport Link copied!

Type: boolean

Whether or not to install the limine EFI files.

Default: pkgs.stdenv.hostPlatform.isEfi
Example: true

programs.limine.enable Link copied!

Type: boolean

Whether to enable limine as the system bootloader.

Default: false

programs.limine.enrollConfig Link copied!

Type: boolean

Whether or not to enroll the config. Only works on EFI!

Default: programs.limine.settings.hash_mismatch_panic
Example: true

programs.limine.extraEntries Link copied!

Type: strings concatenated with "\n"

A string which is appended to the end of limine.conf. The config format can be found here.

Default: ""
Example:
/memtest86
  protocol: chainload
  path: boot():///efi/memtest86/memtest86.efi

programs.limine.force Link copied!

Type: boolean

Force installation even if the safety checks fail, use absolutely only if necessary!

Default: false
Example: true

programs.limine.maxGenerations Link copied!

Type: null or signed integer

Maximum number of latest generations in the boot menu. Useful to prevent boot partition of running out of disk space. null means no limit i.e. all generations that were not garbage collected yet.

Default: null
Example: 50

programs.limine.package Link copied!

Type: package

The package to use for limine.

Default: pkgs.limine

programs.limine.partitionIndex Link copied!

Type: null or signed integer

The 1-based index of the dedicated partition for limine's second stage.

Default: null

programs.limine.secureBoot.autoEnrollKeys.enable Link copied!

Type: boolean

Enroll automatically generated keys.

Default: false
Example: true

programs.limine.secureBoot.autoEnrollKeys.extraArgs Link copied!

Type: list of string

Extra arguments passed to sbctl.

Default: [ "--microsoft" "--firmware-builtin" ]

programs.limine.secureBoot.autoGenerateKeys Link copied!

Type: boolean

Generate keys automatically when none exists during bootloader installation.

Default: false
Example: true

programs.limine.secureBoot.enable Link copied!

Type: boolean

Whether to sign the limine binary with sbctl.

Note

Requires pre-generated secure boot keys. See programs.limine.secureBoot.autoGenerateKeys and programs.limine.secureBoot.autoEnrollKeys to automate key management.

Default: false
Example: true

programs.limine.secureBoot.sbctl Link copied!

Type: package

The sbctl package to use.

Default: pkgs.sbctl

programs.limine.settings Link copied!

Type: open submodule of attribute set of (atom (null, bool, int, float or string))

limine configuration. See upstream documentation for additional details.

Default: { }

programs.limine.settings.editor_enabled Link copied!

Type: boolean

If set to false, the editor will not be accessible.

Note

It is recommended to set this to false, as it allows gaining root access by passing init=/bin/sh as a kernel parameter.

Default: false

programs.limine.settings.hash_mismatch_panic Link copied!

Type: boolean

If set to false, do not panic if there is a hash mismatch for a file, but print a warning instead.

Default: false

programs.limine.settings.timeout Link copied!

Type: signed integer or value "no" (singular enum)

Specifies the timeout in seconds before the first entry is automatically booted. If set to "no", disable automatic boot. If set to 0, boots default entry instantly.

Default: 5

programs.limine.settings.wallpaper Link copied!

Type: list of absolute path

A list of wallpapers. If more than one is specified, a random one will be selected at boot.

Default: [ ]
Example: [ pkgs.nixos-artwork.wallpapers.simple-dark-gray-bootloader.gnomeFilePath ]

programs.limine.settings.wallpaper_style Link copied!

Type: one of "centered", "stretched", "tiled"

The style which will be used to display the wallpaper image.

Default: "stretched"

programs.limine.validateChecksums Link copied!

Type: boolean

Whether to validate file checksums before booting.

Default: true
Example: true

programs.lxqt.enable Link copied!

Type: boolean

Whether to enable LXQt.

Default: false

programs.lxqt.excludePackages Link copied!

Type: list of package

Which LXQt packages to exclude from the default environment.

Default: [ ]

programs.lxqt.extraPackages Link copied!

Type: list of package

Extra packages to be installed system wide.

Default: [ ]

programs.lxqt.iconTheme Link copied!

Type: package

The package that provides a default icon theme.

Default: pkgs.kdePackages.breeze-icons

programs.lxqt.wayland.compositor Link copied!

Type: package

The default Wayland compositor package to use.

Default: pkgs.labwc

programs.lxqt.wayland.enable Link copied!

Type: boolean

Whether to enable the LXQt desktop environment's Wayland session.

Default: true

programs.lxqt.xsession.enable Link copied!

Type: boolean

Whether to enable the LXQt desktop environment's X11 session.

Default: false

programs.lxqt.xsession.windowManager Link copied!

Type: package

The default X11 window manager package to use.

Default: pkgs.openbox

programs.mangowc.enable Link copied!

Type: boolean

Whether to enable mangowc.

Default: false

programs.mangowc.package Link copied!

Type: package

The package to use for mangowc.

Default: pkgs.mangowc

programs.micro.defaultEditor Link copied!

Type: boolean

Whether to configure micro as the default editor using the EDITOR environment variable.

Default: false

programs.micro.enable Link copied!

Type: boolean

Whether to enable micro.

Default: false

programs.micro.package Link copied!

Type: package

The package to use for micro.

Default: pkgs.micro

programs.nano.defaultEditor Link copied!

Type: boolean

Whether to configure nano as the default editor using the EDITOR environment variable.

Default: false

programs.nano.enable Link copied!

Type: boolean

Whether to enable nano.

Default: false

programs.nano.package Link copied!

Type: package

The package to use for nano.

Default: pkgs.nano

programs.niri.enable Link copied!

Type: boolean

Whether to enable niri.

Default: false

programs.niri.package Link copied!

Type: package

The package to use for niri.

Default: pkgs.niri

programs.nvidia-settings.enable Link copied!

Type: boolean

Whether to enable nvidia-settings.

Default: false

programs.nvidia-settings.package Link copied!

Type: package

The package to use for nvidia-settings.

Default: config.hardware.nvidia.package.settings

programs.plymouth.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

programs.plymouth.enable Link copied!

Type: boolean

Whether to enable plymouth.

Default: false

programs.plymouth.font Link copied!

Type: absolute path

Font file made available for displaying text on the splash screen.

Default: "${pkgs.dejavu_fonts.minimal}/share/fonts/truetype/DejaVuSans.ttf"

programs.plymouth.package Link copied!

Type: package

The package to use for plymouth.

Default: pkgs.plymouth

programs.plymouth.settings Link copied!

Type: open submodule of attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

plymouthd configuration. See plymouthd(8) for additional details.

Default: { }

programs.plymouth.settings.Daemon.Theme Link copied!

Type: string

The name of the plymouth theme to use. Must match the directory name of the theme within the theme package specified by programs.plymouth.theme.

Default: "finix-theme"

programs.plymouth.theme Link copied!

Type: package

The package containing a plymouth theme.

Default: pkgs.plymouth-finix-theme

programs.pmount.enable Link copied!

Type: boolean

Whether to enable pmount.

Default: false

programs.pmount.package Link copied!

Type: package

The package to use for pmount.

Default: pkgs.pmount

programs.regreet.compositor.environment Link copied!

Type: attribute set of string

Environment variables to pass to cage. See upstream documentation for additional details.

Default: { }
Example:
{
  XKB_DEFAULT_LAYOUT = "us";
  XKB_DEFAULT_VARIANT = "dvorak";
}

programs.regreet.compositor.extraArgs Link copied!

Type: list of string

Additional arguments to pass to cage. See upstream documentation for additional details.

Default: [ "-s" ]

programs.regreet.compositor.package Link copied!

Type: package

The package to use for cage.

Default: pkgs.cage

programs.regreet.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

programs.regreet.enable Link copied!

Type: boolean

Whether to enable regreet.

Note

regreet will be run using cage as a compositor and can be configured using the programs.regreet.compositor.* options.

Default: false

programs.regreet.package Link copied!

Type: package

The package to use for regreet.

Default: pkgs.regreet

programs.regreet.settings Link copied!

Type: TOML value

regreet configuration. See upstream documentation for additional details.

Default: { }

programs.resolvconf.enable Link copied!

Type: boolean

Whether to enable resolvconf.

Default: false

programs.resolvconf.package Link copied!

Type: package

The package to use for resolvconf.

Default: pkgs.openresolv

programs.resolvconf.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string) or a non-empty list of them)

resolvconf configuration. See resolvconf.conf(5) for additional details.

Default: { }

programs.seahorse.enable Link copied!

Type: boolean

Whether to enable seahorse.

Default: false

programs.shadow.enable Link copied!

Type: boolean

Whether to enable shadow.

Warning

The shadow authentication suite provides critical programs such as su, login, passwd.

Default: true

programs.shadow.package Link copied!

Type: package

The package to use for shadow.

Default: pkgs.shadow

programs.shadow.settings Link copied!

Type: open submodule of attribute set of (atom (null, bool, int, float or string))

shadow configuration. See login.defs(5) for additional details.

Default: { }

programs.shadow.settings.DEFAULT_HOME Link copied!

Type: one of "yes", "no"

Indicate if login is allowed if we can't cd to the home directory.

Default: "yes"

programs.shadow.settings.ENCRYPT_METHOD Link copied!

Type: one of "YESCRYPT", "SHA512", "SHA256", "MD5", "DES"

This defines the system default encryption algorithm for encrypting passwords.

Default: "YESCRYPT"

programs.shadow.settings.GID_MAX Link copied!

Type: signed integer

Range of group IDs used for the creation of regular groups by useradd, groupadd, or newusers.

Default: 29999

programs.shadow.settings.GID_MIN Link copied!

Type: signed integer

Range of group IDs used for the creation of regular groups by useradd, groupadd, or newusers.

Default: 1000

programs.shadow.settings.SYS_GID_MAX Link copied!

Type: signed integer

Range of group IDs used for the creation of system groups by useradd, groupadd, or newusers

Default: 999

programs.shadow.settings.SYS_GID_MIN Link copied!

Type: signed integer

Range of group IDs used for the creation of system groups by useradd, groupadd, or newusers

Default: 400

programs.shadow.settings.SYS_UID_MAX Link copied!

Type: signed integer

Range of user IDs used for the creation of system users by useradd or newusers.

Default: 999

programs.shadow.settings.SYS_UID_MIN Link copied!

Type: signed integer

Range of user IDs used for the creation of system users by useradd or newusers.

Default: 400

programs.shadow.settings.TTYGROUP Link copied!

Type: string

The terminal permissions: the login tty will be owned by the TTYGROUP group, and the permissions will be set to TTYPERM.

Default: "tty"

programs.shadow.settings.TTYPERM Link copied!

Type: string

The terminal permissions: the login tty will be owned by the TTYGROUP group, and the permissions will be set to TTYPERM.

Default: "0620"

programs.shadow.settings.UID_MAX Link copied!

Type: signed integer

Range of user IDs used for the creation of regular users by useradd or newusers.

Default: 29999

programs.shadow.settings.UID_MIN Link copied!

Type: signed integer

Range of user IDs used for the creation of regular users by useradd or newusers.

Default: 1000

programs.shadow.settings.UMASK Link copied!

Type: string

The file mode creation mask is initialized to this value.

Default: "077"

programs.sudo.enable Link copied!

Type: boolean

Whether to enable sudo.

Default: false

programs.sudo.package Link copied!

Type: package

The package to use for sudo.

Default: pkgs.sudo

programs.sway.enable Link copied!

Type: boolean

Whether to enable sway.

Default: false

programs.sway.package Link copied!

Type: package

The package to use for sway.

Default: pkgs.sway

programs.tuigreet.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

programs.tuigreet.enable Link copied!

Type: boolean

Whether to enable tuigreet.

Default: false

programs.tuigreet.extraArgs Link copied!

Type: list of string

Additional arguments to pass to tuigreet. See tuigreet(1) for additional details.

Default: [ "--time" ]

programs.tuigreet.package Link copied!

Type: package

The package to use for tuigreet.

Default: pkgs.tuigreet

programs.virtualbox.enable Link copied!

Type: boolean

Whether to enable virtualbox.

Note

In order to pass USB devices from the host to guests, a user needs to be added to the vboxusers group.

Default: false

programs.virtualbox.package Link copied!

Type: package

The package to use for virtualbox.

Default: pkgs.virtualbox

programs.xwayland-satellite.enable Link copied!

Type: boolean

Whether to enable xwayland-satellite.

Default: false

programs.xwayland-satellite.package Link copied!

Type: package

The package to use for xwayland-satellite.

Default: pkgs.xwayland-satellite

programs.zzz.enable Link copied!

Type: boolean

Whether to enable zzz.

Default: false

programs.zzz.package Link copied!

Type: package

The package to use for zzz.

Default: pkgs.zzz

providers.bootloader.backend Link copied!

Type: one of "limine", "none"

The selected module which should implement functionality for the providers.bootloader contract.

Default: "none"

providers.bootloader.installHook Link copied!

Type: absolute path

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.

Default: pkgs.writeShellScript "no-bootloader" '' echo 'Warning: do not know how to make this configuration bootable; please enable a boot loader.' 1>&2 ''

providers.privileges.backend Link copied!

Type: one of "sudo", "doas", "none"

The selected module which should implement functionality for the providers.privileges contract.

Default: "none"

providers.privileges.command Link copied!

Type: main program, path or command

The command to be used by modules requiring privilege escalation.

Example: "/run/wrappers/bin/sudo"

providers.privileges.rules Link copied!

Type: list of (submodule)

A list of rules which provide a way to temporarily elevate the privileges of a command for a given user or group.

Default: [ ]

providers.privileges.rules.*.args Link copied!

Type: list of string

Arguments that must be provided to the command. When empty, the command must be run without any arguments.

Default: [ ]

providers.privileges.rules.*.command Link copied!

Type: main program, path or command

The command the user or group members are allowed to run.

Note

It is best practice to specify absolute paths.

providers.privileges.rules.*.groups Link copied!

Type: list of non-empty string

The groups that are able to run this command.

Default: [ ]

providers.privileges.rules.*.requirePassword Link copied!

Type: boolean

Whether the user is required to enter a password.

Default: true

providers.privileges.rules.*.runAs Link copied!

Type: non-empty string

The user the command is allowed to run as, or "*" for allowing the command to run as any user.

Default: "root"

providers.privileges.rules.*.users Link copied!

Type: list of non-empty string

The users that are able to run this command.

Default: [ ]

providers.resumeAndSuspend.backend Link copied!

Type: one of "zzz", "none"

The selected module which should implement functionality for the providers.resumeAndSuspend contract.

Default: "none"

providers.resumeAndSuspend.hooks Link copied!

Type: attribute set of (submodule)

A set of hooks which are to be run on system suspend, hibernate or resume.

Default: { }

providers.resumeAndSuspend.hooks.<name>.action Link copied!

Type: strings concatenated with "\n"

Shell commands to execute when the event is triggered.

Default: ""

providers.resumeAndSuspend.hooks.<name>.enable Link copied!

Type: boolean

Whether this hook should be executed on the given event.

Default: true

providers.resumeAndSuspend.hooks.<name>.event Link copied!

Type: one of "suspend", "resume", "hibernate"

The event type.

providers.resumeAndSuspend.hooks.<name>.priority Link copied!

Type: integer between 0 and 9999 (both inclusive)

Order of this hook in relation to the others. The semantics are the same as with lib.mkOrder. Smaller values are inserted first.

Default: 1000

providers.scheduler.backend Link copied!

Type: one of "fcron", "none", "cron", "anacron"

The selected module which should implement functionality for the providers.scheduler contract.

Default: "none"

providers.scheduler.supportedFeatures.user Link copied!

Type: boolean

Whether the selected providers.scheduler implementation supports running tasks as a specified user.

providers.scheduler.tasks Link copied!

Type: attribute set of (submodule)

A set of tasks which are to be run at specified intervals.

Default: { }

providers.scheduler.tasks.<name>.command Link copied!

Type: main program, path or command

The command this task should execute at specified intervals.

providers.scheduler.tasks.<name>.interval Link copied!

Type: string

The interval at which this task should run its specified command. Accepts either a standard crontab(5) expression or one of: hourly, daily, weekly, monthly, or yearly.

If a standard 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.

Example: "15 * * * *"

providers.scheduler.tasks.<name>.user Link copied!

Type: null or string

The user this task should run as, subject to provider.scheduler implementation capabilities. See providers.scheduler.supportedFeatures and your selected backend implementation for additional details.

Default: null

security.pam.debug Link copied!

Type: boolean

This option has no description.

Default: false

security.pam.enable Link copied!

Type: boolean

This option has no description.

Default: true

security.pam.environment Link copied!

Type: attribute set of (submodule)

Set of rules for pam_env(8).

Default: { }

security.pam.environment.<name>.default Link copied!

Type: null or ((list of (signed integer or string or absolute path)) or (signed integer or string or absolute path) convertible to it)

The DEFAULT environment variables to be set, unset or modified by pam_env(8). See pam_env.conf(5) for additional details.

Default: null

security.pam.environment.<name>.override Link copied!

Type: null or ((list of (signed integer or string or absolute path)) or (signed integer or string or absolute path) convertible to it)

The environment variables to be set, unset or modified by pam_env(8). See pam_env.conf(5) for additional details.

Default: null

security.pam.package Link copied!

Type: package

This option has no description.

Default: <derivation linux-pam-1.7.1>

security.pam.services Link copied!

Type: attribute set of (submodule)

This option has no description.

Default: { }

security.pam.services.<name>.enable Link copied!

Type: boolean

This option has no description.

Default: true

security.pam.services.<name>.name Link copied!

Type: string

This option has no description.

Default: "‹name›"

security.pam.services.<name>.text Link copied!

Type: strings concatenated with "\n"

This option has no description.

security.pki.caBundle Link copied!

Type: absolute path

(Read-only) the path to the final bundle of certificate authorities as a single file.

security.pki.caCertificateBlacklist Link copied!

Type: list of string

A list of blacklisted CA certificate names that won't be imported from the Mozilla Trust Store into /etc/ssl/certs/ca-certificates.crt. Use the names from that file.

Default: [ ]
Example:
[
  "WoSign"
  "WoSign China"
  "CA WoSign ECC Root"
  "Certification Authority of WoSign G2"
]

security.pki.certificateFiles Link copied!

Type: list of absolute path

A list of files containing trusted root certificates in PEM format. These are concatenated to form /etc/ssl/certs/ca-certificates.crt, which is used by many programs that use OpenSSL, such as curl and git.

Default: [ ]
Example: [ "${pkgs.dn42-cacert}/etc/ssl/certs/dn42-ca.crt" ]

security.pki.certificates Link copied!

Type: list of string

A list of trusted root certificates in PEM format.

Default: [ ]
Example:
[ ''
    NixOS.org
    =========
    -----BEGIN CERTIFICATE-----
    MIIGUDCCBTigAwIBAgIDD8KWMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJJ
    TDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0
    ...
    -----END CERTIFICATE-----
  ''
]

security.pki.useCompatibleBundle Link copied!

Type: boolean

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 .

Default: false
Example: true

security.wrapperDirSize Link copied!

Type: string

Size limit for the /run/wrappers tmpfs. Look at mount(8), tmpfs size option, for the accepted syntax. WARNING: don't set to less than 64MB.

Default: "50%"
Example: "10G"

security.wrappers Link copied!

Type: attribute set of (submodule)

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.

Default: { }

security.wrappers.<name>.capabilities Link copied!

Type: strings concatenated with ","

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.

Note

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.

Default: ""

security.wrappers.<name>.enable Link copied!

Type: boolean

Whether to enable the wrapper.

Default: true

security.wrappers.<name>.group Link copied!

Type: string

The group of the wrapper program.

security.wrappers.<name>.owner Link copied!

Type: string

The owner of the wrapper program.

security.wrappers.<name>.permissions Link copied!

Type: file mode string

The permissions of the wrapper program. The format is that of a symbolic or numeric file mode understood by chmod.

Default: "u+rx,g+x,o+x"
Example: "a+rx"

security.wrappers.<name>.program Link copied!

Type: null or string

The name of the wrapper program. Defaults to the attribute name.

Default: "‹name›"

security.wrappers.<name>.setgid Link copied!

Type: boolean

Whether to add the setgid bit the wrapper program.

Default: false

security.wrappers.<name>.setuid Link copied!

Type: boolean

Whether to add the setuid bit the wrapper program.

Default: false

security.wrappers.<name>.source Link copied!

Type: absolute path

The absolute path to the program to be wrapped.

services.accounts-daemon.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.accounts-daemon.enable Link copied!

Type: boolean

Whether to enable accountsservice as a system service.

Default: false

services.accounts-daemon.package Link copied!

Type: package

The package to use for accountsservice.

Default: pkgs.accountsservice

services.acpid.enable Link copied!

Type: boolean

Whether to enable acpid as a system service.

Default: false

services.acpid.handlers Link copied!

Type: attribute set of (submodule)

This option has no description.

Default: { }

services.acpid.handlers.<name>.action Link copied!

Type: strings concatenated with "\n"

Shell commands to execute when the event is triggered.

services.acpid.handlers.<name>.enable Link copied!

Type: boolean

This option has no description.

Default: true

services.acpid.handlers.<name>.event Link copied!

Type: string

Event type.

Example: "button/power.*" "button/lid.*" "ac_adapter.*" "button/mute.*" "button/volumedown.*" "cd/play.*" "cd/next.*"

services.anacron.enable Link copied!

Type: boolean

Whether to enable anacron as a system service.

Note

The cron module will also be imported and services.cron.enable set to true.

Default: false

services.anacron.extraArgs Link copied!

Type: list of string

Additional arguments to pass to anacron. See anacron(8) for additional details.

Default: [ ]
Example:
[
  "-s"
]

services.anacron.package Link copied!

Type: package

The package to use for anacron.

Default: pkgs.cronie

services.anacron.settings Link copied!

Type: open submodule of attribute set of string

anacrontab configuration. See anacrontab(5) for additional details.

Default: { }

services.anacron.settings.NO_MAIL_OUTPUT Link copied!

Type: null or signed integer

If defined (and non-empty), the standard output and error descriptors of job processes are not redirected and e-mailed.

Default: null

services.anacron.settings.PREFERRED_HOUR Link copied!

Type: null or signed integer

Preferred hour of start of the job. If the hour is missed job will be skipped.

Default: null

services.anacron.settings.RANDOM_DELAY Link copied!

Type: null or signed integer

Allows delaying job startups by random amount of minutes with upper limit specified by this value. The random scaling factor is determined during the cron daemon startup so it remains constant for the whole run time of the daemon.

The maximum number of minutes that will be added to the delay in minutes variable which is specified for each job. A RANDOM_DELAY set to 12 would therefore add, randomly, between 0 and 12 minutes to the delay in minutes for each job in that particular anacrontab. When set to 0, no random delay is added.

Default: null

services.anacron.settings.START_HOURS_RANGE Link copied!

Type: null or string matching the pattern ^([[:digit:]]+)-([[:digit:]]+)$

An interval (in hours) when scheduled jobs can be run. In case this time interval is missed, for example, due to a power down, then scheduled jobs are not executed that day.

Default: null

services.anacron.systab Link copied!

Type: list of non-empty string

A list of anacron jobs to be appended to the system-wide anacrontab.

Default: [ ]

services.atd.allow Link copied!

Type: null or (list of string)

Users allowed to use at. See at.allow(5) for additional details.

Default: null

services.atd.deny Link copied!

Type: null or (list of string)

Users who are not allowed to use at. See at.deny(5) for additional details.

Default: [ ]

services.atd.enable Link copied!

Type: boolean

Whether to enable atd as a system service.

Default: false

services.atd.extraArgs Link copied!

Type: list of string

Additional arguments to pass to atd. See atd(8) for additional details.

Default: [ ]

services.blocky.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.blocky.enable Link copied!

Type: boolean

Whether to enable blocky as a system service.

Default: false

services.blocky.group Link copied!

Type: string

Group account under which blocky runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the blocky service starts.

Default: "blocky"

services.blocky.package Link copied!

Type: package

The package to use for blocky.

Default: pkgs.blocky

services.blocky.settings Link copied!

Type: YAML 1.1 value

blocky configuration. See upstream documentation for additional details.

Default: { }

services.blocky.user Link copied!

Type: string

User account under which blocky runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the blocky service starts.

Default: "blocky"

services.bluetooth.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.bluetooth.enable Link copied!

Type: boolean

Whether to enable bluez as a system service.

Default: false

services.bluetooth.package Link copied!

Type: package

The package to use for bluez.

Default: pkgs.bluez

services.bluetooth.settings Link copied!

Type: attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

bluez configuration. See upstream documentation for additional details.

Default: { }

services.chrony.configFile Link copied!

Type: absolute path

This option has no description.

Default: <derivation chrony.conf>

services.chrony.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.chrony.enable Link copied!

Type: boolean

Whether to enable chrony as a system service.

Default: false

services.chrony.extraArgs Link copied!

Type: list of string

Additional arguments to pass to dropbear. See chronyd(8) for additional details.

Default: [ ]

services.chrony.package Link copied!

Type: package

The package to use for chrony.

Default: pkgs.chrony

services.cron.enable Link copied!

Type: boolean

Whether to enable cron as a system service.

Default: false

services.cron.extraArgs Link copied!

Type: list of string

Additional arguments to pass to cron. See cron(8) for additional details.

Default: [ ]
Example:
[
  "-s"
]

services.cron.package Link copied!

Type: package

The package to use for cron.

Default: pkgs.cronie
Example:
pkgs.cron.override {
  sendmailPath = "/run/wrappers/bin/sendmail";
};

services.cron.settings Link copied!

Type: open submodule of attribute set of string

crontab configuration. See crontab(5) for additional details.

Default: { }

services.cron.settings.CONTENT_TRANSFER_ENCODING Link copied!

Type: null or string

The encoding for email notifications. This is useful for properly displaying special characters or when sending emails in a format other than plain text.

Default: null

services.cron.settings.CONTENT_TYPE Link copied!

Type: null or string

The MIME type and character encoding for the output of a cron job when it is sent via email. This allows the mail client to properly display the output, especially if it contains rich text or is not plain ASCII.

Default: null

services.cron.settings.CRON_TZ Link copied!

Type: null or string

The time zone specific for the cron table. The user should enter a time according to the specified time zone into the table. The time used for writing into a log file is taken from the local time zone, where the daemon is running.

Default: null
Example: config.time.timeZone

services.cron.settings.MAILFROM Link copied!

Type: null or non-empty string

If MAILFROM is defined (and non-empty), it is used as the envelope sender address, otherwise, the username of the executing user is used.

Note

This variable is also inherited from the cron process environment.

Note

Both MAILFROM and MAILTO variables are expanded, so setting them as in the following example works as expected:

MAILFROM=cron-$USER@cron.com

$USER is replaced by the system user.

Default: null

services.cron.settings.MAILTO Link copied!

Type: null or string

If MAILTO is defined (and non-empty), mail is sent to the specified address. If MAILTO is defined but empty (MAILTO = "";), no mail is sent. Otherwise, mail is sent to the owner of the crontab.

Default: null

services.cron.settings.PATH Link copied!

Type: list of (absolute path or package)

Packages added to the cron PATH environment variable.

Default: [ /run/wrappers config.programs.coreutils.package ]

services.cron.settings.RANDOM_DELAY Link copied!

Type: null or signed integer

Allows delaying job startups by random amount of minutes with upper limit specified by this value. The random scaling factor is determined during the cron daemon startup so it remains constant for the whole run time of the daemon.

Default: null

services.cron.settings.SHELL Link copied!

Type: absolute path

The shell used to execute commands.

Default: lib.getExe pkgs.bash

services.cron.systab Link copied!

Type: list of non-empty string

A list of cron jobs to be appended to the system-wide crontab.

Default: [ ]
Example:
[ "* * * * *  test   ls -l / > /tmp/cronout 2>&1"
  "* * * * *  eelco  echo Hello World > /home/eelco/cronout"
]

services.dbus.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.dbus.enable Link copied!

Type: boolean

Whether to enable dbus as a system service.

Default: false

services.dbus.package Link copied!

Type: package

The package to use for dbus.

Default: pkgs.dbus

services.dbus.packages Link copied!

Type: list of absolute path

Packages whose D-Bus configuration files should be included in the configuration of the D-Bus system-wide or session-wide message bus. Specifically, files in the following directories will be included into their respective DBus configuration paths: «pkg»/etc/dbus-1/system.dfile}«pkg»/share/dbus-1/system.d «pkg»/share/dbus-1/system-servicesfile}«pkg»/etc/dbus-1/session.d «pkg»/share/dbus-1/session.dfile}«pkg»/share/dbus-1/services

Default: [ ]

services.ddccontrol.enable Link copied!

Type: boolean

Whether to enable ddccontrol as a system service.

Default: false

services.dhcpcd.configFile Link copied!

Type: absolute path

This option has no description.

Default: "configuration file generated by nixos"

services.dhcpcd.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.dhcpcd.enable Link copied!

Type: boolean

Whether to enable dhcpcd as a system service.

Default: false

services.dhcpcd.extraArgs Link copied!

Type: list of string

Additional arguments to pass to dhcpcd. See dhcpcd(8) for additional details.

Default: [ ]

services.dhcpcd.package Link copied!

Type: package

The package to use for dhcpcd.

Default: pkgs.dhcpcd.override { withUdev = config.services.udev.enable; }

services.dhcpcd.settings Link copied!

Type: open submodule of attribute set of (atom (null, bool, int, float or string) or a non-empty list of them)

dhcpcd configuration. See dhcpcd.conf(5) for additional details.

Default: { }

services.dhcpcd.settings.background Link copied!

Type: null or boolean

Fork to the background immediately.

Default: null

services.dhcpcd.settings.broadcast Link copied!

Type: null or boolean

Instructs the DHCP server to broadcast replies back to the client.

Default: null

services.dhcpcd.settings.duid Link copied!

Type: null or boolean

Use a DHCP Unique Identifier.

Default: null

services.dhcpcd.settings.hostname Link copied!

Type: null or string

Sends the hostname name to the DHCP server so it can be registered in DNS.

Default: null

services.dhcpcd.settings.hostname_short Link copied!

Type: null or boolean

Sends the short hostname to the DHCP server instead of the FQDN.

Default: null

services.dhcpcd.settings.ipv4only Link copied!

Type: null or boolean

Only configure IPv4.

Default: null

services.dhcpcd.settings.ipv6only Link copied!

Type: null or boolean

Only configure IPv6.

Default: null

services.dhcpcd.settings.noalias Link copied!

Type: null or boolean

Any pre-existing IPv4 addresses will be removed from the interface when adding a new IPv4 address.

Default: null

services.dhcpcd.settings.nogateway Link copied!

Type: null or boolean

Don't install any default routes.

Default: null

services.dhcpcd.settings.quiet Link copied!

Type: null or boolean

Suppress any dhcpcd output to the console, except for errors.

Default: null

services.dhcpcd.settings.waitip Link copied!

Type: null or boolean

Wait for an address to be assigned before forking to the background.

Default: null

services.docker.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.docker.enable Link copied!

Type: boolean

Whether to enable docker as a system service.

Default: false

services.docker.extraArgs Link copied!

Type: list of string

Additional arguments to pass to dockerd. See upstream documentation for additional details.

Default: [ ]

services.docker.extraPackages Link copied!

Type: list of package

Extra packages to be be made available to the docker daemon process.

Default: [ ]
Example: with pkgs; [ criu ]

services.docker.group Link copied!

Type: string

Group to own any docker sockets.

Note

If you want non-root users to be able to access the docker daemon commands, add them to this group.

Default: "docker"

services.docker.package Link copied!

Type: package

The package to use for docker.

Default: pkgs.docker

services.docker.prune.enable Link copied!

Type: boolean

Whether to periodically prune docker resources.

Default: false

services.docker.prune.extraArgs Link copied!

Type: list of string

Additional arguments to pass to docker system prune. See upstream documentation for additional details.

Default: [ ]
Example:
[
  "--all"
  "--volumes"
]

services.docker.prune.interval Link copied!

Type: string

The interval at which this task should run its specified command. Accepts either a standard crontab(5) expression or one of: hourly, daily, weekly, monthly, or yearly.

If a standard 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.

Default: "weekly"

services.docker.settings Link copied!

Type: open submodule of (JSON value)

docker configuration. See upstream documentation for additional details.

Default: { }
Example:
{
  fixed-cidr-v6 = "fd00::/80";
  ipv6 = true;
  live-restore = true;
}

services.docker.settings.hosts Link copied!

Type: list of string

Specifies where the docker daemon listens for client connections. :::

Default: [ "unix:///run/docker.sock" ]
Example:
[
  "unix:///run/docker.sock"
  "tcp://0.0.0.0:2375"
]

services.docker.settings.live-restore Link copied!

Type: boolean

Enable live restore of docker when containers are still running.

Default: false

services.docker.settings.log-driver Link copied!

Type: one of "none", "json-file", "syslog", "journald", "gelf", "fluentd", "awslogs", "splunk", "etwlogs", "gcplogs", "local"

Default driver for container logs.

Default: "syslog"

services.docker.settings.storage-driver Link copied!

Type: null or one of "aufs", "btrfs", "devicemapper", "overlay", "overlay2", "zfs"

Storage driver to use.

See upstream documentation for additional details.

Warning

When you change the storage driver, any existing images and containers become inaccessible. This is because their layers can't be used by the new storage driver. If you revert your changes, you can access the old images and containers again, but any that you pulled or created using the new driver are then inaccessible.

Default: null

services.dropbear.enable Link copied!

Type: boolean

Whether to enable dropbear as a system service.

Default: false

services.dropbear.extraArgs Link copied!

Type: list of string

Additional arguments to pass to dropbear. See dropbear(8) for additional details.

Default: [ ]

services.dropbear.hostKeys Link copied!

Type: list of (submodule)

finix will automatically generate SSH host keys using dropbearkey(1) on startup.

Note

Automatic generation of host keys can be disabled by setting a value of lib.mkForce [ ].

Default: [ { path = "/var/lib/dropbear/dropbear_ed25519_host_key"; type = "ed25519"; } ]

services.dropbear.hostKeys.*.bits Link copied!

Type: null or signed integer

Set the key size in bits.

Note

Should be multiple of 8.

Default: null

services.dropbear.hostKeys.*.comment Link copied!

Type: null or string

Specify the key comment (email).

Default: null

services.dropbear.hostKeys.*.path Link copied!

Type: absolute path

Write the secret key to this path.

services.dropbear.hostKeys.*.type Link copied!

Type: one of "rsa", "ecdsa", "ed25519"

The type of key to generate.

Default: "ed25519"

services.dropbear.package Link copied!

Type: package

The package to use for dropbear.

Default: pkgs.dropbear

services.earlyoom.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.earlyoom.enable Link copied!

Type: boolean

Whether to enable earlyoom as a system service.

Default: false

services.earlyoom.extraArgs Link copied!

Type: list of string

Additional arguments to pass to earlyoom. See earlyoom(1) for additional details.

Default: [ ]
Example:
[
  "-r"
  "3600"
]

services.earlyoom.package Link copied!

Type: package

The package to use for earlyoom.

Default: pkgs.earlyoom

services.elogind.enable Link copied!

Type: boolean

Whether to enable elogind as a system service.

Default: false

services.elogind.package Link copied!

Type: package

The package to use for elogind.

Default: pkgs.elogind

services.fcron.allow Link copied!

Type: list of string

Users allowed to use fcrontab and fcrondyn.

Note

A special name "all" acts for everyone.

Default: [ "all" ]

services.fcron.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.fcron.deny Link copied!

Type: list of string

Users who are not allowed to use fcrontab and fcrondyn.

Note

A special name "all" acts for everyone.

Default: [ ]

services.fcron.enable Link copied!

Type: boolean

Whether to enable fcron as a system service.

Default: false

services.fcron.extraArgs Link copied!

Type: list of string

Additional arguments to pass to fcron. See fcron(8) for additional details.

Default: [ ]
Example:
[
  "--maxserial"
  "5"
  "--firstsleep"
  "60"
]

services.fcron.package Link copied!

Type: package

The package to use for fcron.

Default: pkgs.fcron

services.fcron.settings Link copied!

Type: open submodule of attribute set of (atom (null, bool, int, float or string))

fcron configuration. See fcron.conf(5) for additional details.

Default: { }

services.fcron.settings.sendmail Link copied!

Type: absolute path

Location of mailer program called by fcron to send job output.

Default: "/run/wrappers/bin/sendmail"

services.fcron.settings.shell Link copied!

Type: absolute path

Location of default shell called by fcron when running a job. When fcron runs a job, fcron uses the value of SHELL from the fcrontab if any, otherwise it uses the value from fcron.conf if any, or in last resort the value from /etc/passwd.

Default: lib.getExe pkgs.bash

services.fcron.systab Link copied!

Type: list of non-empty string

A list of cron jobs to be appended to the system-wide fcrontab(5).

Default: [ ]

services.flatpak.enable Link copied!

Type: boolean

Whether to enable flatpak.

Default: false

services.flatpak.extraGroups Link copied!

Type: list of string

A list of groups to unconditionally grant access, via polkit, to this services offerings. Useful on systems without (e)logind. See Using polkit with seatd for additional details.

Default: [ ]
Example: [ config.services.seatd.group ]

services.flatpak.package Link copied!

Type: package

The package to use for flatpak.

Default: pkgs.flatpak.override { withSystemd = false; }

services.fprintd.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.fprintd.enable Link copied!

Type: boolean

Whether to enable fprintd as a system service.

Default: false

services.fprintd.extraGroups Link copied!

Type: list of string

A list of groups to unconditionally grant access, via polkit, to this services offerings. Useful on systems without (e)logind. See Using polkit with seatd for additional details.

Default: [ ]
Example: [ config.services.seatd.group ]

services.fprintd.package Link copied!

Type: package

The package to use for fprintd.

Default: pkgs.fprintd

services.fstrim.enable Link copied!

Type: boolean

Whether to enable periodic SSD TRIM of mounted partitions in background.

Default: false

services.fstrim.interval Link copied!

Type: string

The interval at which this task should run its specified command. Accepts either a standard crontab(5) expression or one of: hourly, daily, weekly, monthly, or yearly.

If a standard 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.

Default: "weekly"

services.fwupd.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.fwupd.enable Link copied!

Type: boolean

Whether to enable fwupd as a system service.

Default: false

services.fwupd.package Link copied!

Type: package

The package to use for fwupd.

Default: pkgs.fwupd

services.fwupd.settings Link copied!

Type: open submodule of attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string) or a non-empty list of them)

fwupd configuration. See fwupd.conf(5) for additional details.

Default: { }

services.fwupd.settings.fwupd.IdleTimeout Link copied!

Type: signed integer

Idle timeout in seconds before the daemon exits. Set to 0 to disable.

Default: 0

services.getty.enable Link copied!

Type: boolean

Whether to enable getty.

Default: true

services.getty.extraArgs Link copied!

Type: list of string

Additional arguments to pass to services.getty.package.

Default: [ ]

services.getty.package Link copied!

Type: null or package

The package to use for getty.

Default: null
Example:
pkgs.util-linux // {
  mainProgram = "agetty";
};

services.getty.ttys Link copied!

Type: list of string

The list of tty devices on which to start a login prompt.

Default: [ "tty1" "tty2" "tty3" "tty4" "tty5" "tty6" ]

services.greetd.enable Link copied!

Type: boolean

Whether to enable greetd as a system service.

Default: false

services.greetd.settings Link copied!

Type: TOML value

greetd configuration. See greetd(5) for additional details.

Default: { }

services.gvfs.enable Link copied!

Type: boolean

Whether to enable gvfs as a dbus service.

Default: false

services.gvfs.package Link copied!

Type: package

The package to use for gvfs.

Default: pkgs.gvfs

services.illum.enable Link copied!

Type: boolean

Whether to enable illum as a system service.

Default: false

services.illum.package Link copied!

Type: package

The package to use for illum.

Default: pkgs.illum

services.incus.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.incus.enable Link copied!

Type: boolean

Whether to enable incus as a system service.

Default: false

services.incus.package Link copied!

Type: package

The package to use for incus.

Default: pkgs.incus-lts

services.iwd.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.iwd.enable Link copied!

Type: boolean

Whether to enable iwd as a system service.

Default: false

services.iwd.package Link copied!

Type: package

The package to use for iwd.

Default: pkgs.iwd

services.iwd.settings Link copied!

Type: attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

iwd configuration. See iwd.config(5) for additional details.

Default: { }

services.jellyfin.dataDir Link copied!

Type: absolute path

The directory used to store all jellyfin data.

Note

If left as the default value this directory will automatically be created on system activation, otherwise you are responsible for ensuring the directory exists with appropriate ownership and permissions before the jellyfin service starts.

Default: "/var/lib/jellyfin"

services.jellyfin.enable Link copied!

Type: boolean

Whether to enable jellyfin as a system service.

Default: false

services.jellyfin.group Link copied!

Type: string

Group account under which jellyfin runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the jellyfin service starts.

Default: "jellyfin"

services.jellyfin.package Link copied!

Type: package

The package to use for jellyfin.

Default: pkgs.jellyfin

services.jellyfin.user Link copied!

Type: string

User account under which jellyfin runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the jellyfin service starts.

Default: "jellyfin"

services.keventd.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.keventd.enable Link copied!

Type: boolean

Whether to enable keventd as a system service.

Default: false

services.keventd.extraArgs Link copied!

Type: list of string

Additional arguments to pass to keventd.

Default: [ ]

services.keventd.path Link copied!

Type: list of absolute path

Packages added to the PATH environment variable when executing programs from Udev rules.

coreutils, gnu{sed,grep}, util-linux automatically included.

Default: [ ]

services.keyd.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.keyd.enable Link copied!

Type: boolean

Whether to enable keyd as a system service.

Default: false

services.keyd.keyboards Link copied!

Type: attribute set of (submodule)

keyd configuration. See keyd(1) for additional details.

Default: { }
Example:
{
  default = {
    ids = [ "*" ];
    settings = {
      main = {
        capslock = "overload(control, esc)";
      };
    };
  };
  externalKeyboard = {
    ids = [ "1ea7:0907" ];
    settings = {
      main = {
        esc = capslock;
      };
    };
  };
}

services.keyd.keyboards.<name>.extraConfig Link copied!

Type: strings concatenated with "\n"

Extra configuration that is appended to the end of the file. Do not write ids section here, use a separate option for it. You can use this option to define compound layers that must always be defined after the layer they are comprised.

Default: ""
Example:
''
  [control+shift]
  h = left
''

services.keyd.keyboards.<name>.ids Link copied!

Type: list of string

Device identifiers, as shown by keyd(1).

Default: [ "" ]
Example:
[
  "*"
  "-0123:0456"
]

services.keyd.keyboards.<name>.settings Link copied!

Type: attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

Configuration, except ids section, that is written to /etc/keyd/<keyboard>.conf. Appropriate names can be used to write non-alpha keys, for example "equal" instead of "=" sign (see <https://github.com/NixOS/nixpkgs/issues/236622>). See <https://github.com/rvaiya/keyd> for how to configure.

Default: { }
Example:
{
  main = {
    capslock = "overload(control,esc)";
    rightalt = "layer(rightalt)";
  };
  rightalt = {
    h = "left";
    j = "down";
    k = "up";
    l = "right";
  };
}

services.keyd.package Link copied!

Type: package

The package to use for keyd.

Default: pkgs.keyd

services.lemurs.enable Link copied!

Type: boolean

Whether to enable lemurs as a system service.

Default: false

services.lemurs.package Link copied!

Type: package

The package to use for lemurs.

Default: pkgs.lemurs

services.lemurs.settings Link copied!

Type: TOML value

lemurs configuration. See upstream documentation for additional details.

Default: { }

services.logrotate.enable Link copied!

Type: boolean

This option has no description.

Default: false

services.logrotate.package Link copied!

Type: package

This option has no description.

Default: <derivation logrotate-3.22.0>

services.logrotate.rules Link copied!

Type: attribute set of (submodule)

This option has no description.

Default: { }

services.logrotate.rules.<name>.enable Link copied!

Type: boolean

This option has no description.

Default: true

services.logrotate.rules.<name>.text Link copied!

Type: strings concatenated with "\n"

This option has no description.

Default: ""

services.ly.enable Link copied!

Type: boolean

Whether to enable ly as a system service.

Default: false

services.ly.package Link copied!

Type: package

The package to use for ly.

Default: pkgs.ly

services.ly.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string))

ly configuration. See upstream example for additional details.

Default: See description.
Example:
{
  animation_frame_delay = 5 # Set delay between animation frames.
  asterisk = "*"; # Set the character used to mask the password.
  bg = "0x20000000"; # Set the background color to black in 0xSSRRGGBB format.
  bigclock_12hr = false; # Set bigclock to 12 hour format.
  battery_id = "null" # Don't show battery (e.g. on a desktop)
}

services.ly.tty Link copied!

Type: signed integer

The TTY that ly runs on. Changing this while logged in will exit your session.

Default: 2

services.mariadb.dataDir Link copied!

Type: absolute path

This option has no description.

Default: "/var/lib/mariadb"

services.mariadb.enable Link copied!

Type: boolean

Whether to enable mariadb as a system service.

Default: false

services.mariadb.group Link copied!

Type: string

Group account under which mariadb runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the mariadb service starts.

Default: "mariadb"

services.mariadb.package Link copied!

Type: package

The package to use for mariadb.

Default: <derivation mariadb-server-11.4.9>

services.mariadb.settings Link copied!

Type: attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string) or a list of them for duplicate keys)

MySQL configuration. Refer to <https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html>, <https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html>, and <https://mariadb.com/kb/en/server-system-variables/> for details on supported values.

Note

MySQL configuration options such as --quick should be treated as boolean options and provided values such as true, false, 1, or 0. See the provided example below.

Default: { }
Example:
{
  mysqld = {
    key_buffer_size = "6G";
    table_cache = 1600;
    log-error = "/var/log/mysql_err.log";
    plugin-load-add = [ "server_audit" "ed25519=auth_ed25519" ];
  };
  mysqldump = {
    quick = true;
    max_allowed_packet = "16M";
  };
}

services.mariadb.user Link copied!

Type: string

User account under which mariadb runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the mariadb service starts.

Default: "mariadb"

services.mdevd.coldplugRules Link copied!

Type: strings concatenated with "\n"

Mdeved rules for coldplug events during the initramfs stage of booting.

services.mdevd.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.mdevd.enable Link copied!

Type: boolean

Whether to enable mdevd as a system service.

Default: false

services.mdevd.hotplugRules Link copied!

Type: strings concatenated with "\n"

Mdevd rules for hotplug events. These rules are active after the initial mdevd daemon has coldbooted with the services.mdevd.coldplug rules.

services.mdevd.nlgroups Link copied!

Type: null or (unsigned integer, meaning >=0)

After mdevd has handled the uevents, rebroadcast them to the netlink groups identified by the mask nlgroups.

Note

A value of 4 will make the daemon rebroadcast kernel uevents to libudev-zero.

Default: null

services.mdevd.package Link copied!

Type: package

The package to use for mdevd.

Default: pkgs.mdevd

services.networkmanager.enable Link copied!

Type: boolean

Whether to enable networkmanager as a system service.

Default: false

services.networkmanager.package Link copied!

Type: package

The package to use for networkmanager.

Default: pkgs.networkmanager

services.nftables.configFile Link copied!

Type: absolute path

This option has no description.

Default: <derivation nftables.conf>

services.nftables.enable Link copied!

Type: boolean

Whether to enable nftables as a system service.

Default: false

services.nftables.package Link copied!

Type: package

The package to use for nftables.

Default: pkgs.nftables

services.nix-daemon.enable Link copied!

Type: boolean

Whether to enable nix as a system service.

Warning

Disabling nix makes the system hard to modify and the Nix programs and configuration will not be made available by NixOS itself.

Default: false

services.nix-daemon.nrBuildUsers Link copied!

Type: signed integer

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.

Default: 8

services.nix-daemon.package Link copied!

Type: package

The package to use for nix.

Default: pkgs.nix

services.nix-daemon.settings Link copied!

Type: open submodule of attribute set of (Nix config atom (null, bool, int, float, str, path or package) or list of (Nix config atom (null, bool, int, float, str, path or package)))

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.

Default: { }

services.nix-daemon.settings.allowed-users Link copied!

Type: list of string

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.

Default: [ "*" ]
Example:
[
  "@wheel"
  "@builders"
  "alice"
  "bob"
]

services.nix-daemon.settings.auto-optimise-store Link copied!

Type: boolean

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.

Default: false
Example: true

services.nix-daemon.settings.cores Link copied!

Type: signed integer

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.

Default: 0
Example: 64

services.nix-daemon.settings.max-jobs Link copied!

Type: signed integer or value "auto" (singular enum)

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).

Default: "auto"
Example: 64

services.nix-daemon.settings.require-sigs Link copied!

Type: boolean

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 and https to prevent man-in-the-middle attacks.

Default: true

services.nix-daemon.settings.sandbox Link copied!

Type: boolean or value "relaxed" (singular enum)

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.

Default: true

services.nix-daemon.settings.substituters Link copied!

Type: list of string

List of binary cache URLs used to obtain pre-built binaries of Nix packages.

By default https://cache.nixos.org/ is added.

Default: [ ]

services.nix-daemon.settings.system-features Link copied!

Type: list of string

The set of features supported by the machine. Derivations can express dependencies on system features through the requiredSystemFeatures attribute.

Default: [ ]

services.nix-daemon.settings.trusted-public-keys Link copied!

Type: list of string

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. By default, only the key for cache.nixos.org is included.

Default: [ ]
Example:
[
  "hydra.nixos.org-1:CNHJZBh9K4tP3EKF6FkkgeVYsS3ohTl+oS0Qa8bezVs="
]

services.nix-daemon.settings.trusted-substituters Link copied!

Type: list of string

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.

Default: [ ]
Example:
[
  "https://hydra.nixos.org/"
]

services.nix-daemon.settings.trusted-users Link copied!

Type: list of string

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.

Default: [ ]
Example:
[
  "root"
  "alice"
  "@wheel"
]

services.nvidia-persistenced.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.nvidia-persistenced.enable Link copied!

Type: boolean

Whether to enable nvidia-persistenced as a system service.

Default: false

services.nvidia-persistenced.extraArgs Link copied!

Type: list of string

Additional arguments to pass to nvidia-persistenced. See nvidia-persistenced(1) for additional details.

Default: [ ]

services.nvidia-persistenced.group Link copied!

Type: string

Group account under which nvidia-persistenced runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the nvidia-persistenced service starts.

Default: "nvidia-persistenced"

services.nvidia-persistenced.package Link copied!

Type: package

The package to use for nvidia-persistenced.

Default: config.hardware.nvidia.package.persistenced

services.nvidia-persistenced.user Link copied!

Type: string

User account under which nvidia-persistenced runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the nvidia-persistenced service starts.

Default: "nvidia-persistenced"

services.nvidia-powerd.enable Link copied!

Type: boolean

Whether to enable nvidia-powerd as a system service.

Default: false

services.nvidia-powerd.package Link copied!

Type: package

The package to use for nvidia-powerd.

Default: config.hardware.nvidia.package

services.nzbget.enable Link copied!

Type: boolean

Whether to enable nzbget as a system service.

Default: false

services.nzbget.group Link copied!

Type: string

Group account under which nzbget runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the nzbget service starts.

Default: "nzbget"

services.nzbget.package Link copied!

Type: package

The package to use for nzbget.

Default: pkgs.nzbget

services.nzbget.settings Link copied!

Type: attribute set of (boolean or signed integer or string)

nzbget configuration. See upstream documentation for additional details.

Default: { }
Example:
{
  MainDir = "/data";
}

services.nzbget.stateDir Link copied!

Type: absolute path

The directory used to store all nzbget data.

Note

If left as the default value this directory will automatically be created on system activation, otherwise you are responsible for ensuring the directory exists with appropriate ownership and permissions before the nzbget service starts.

Default: "/var/lib/nzbget"

services.nzbget.user Link copied!

Type: string

User account under which nzbget runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the nzbget service starts.

Default: "nzbget"

services.openssh.enable Link copied!

Type: boolean

Whether to enable openssh as a system service.

Default: false

services.openssh.package Link copied!

Type: package

The package to use for openssh.

Default: pkgs.openssh

services.openssh.settings Link copied!

Type: open submodule of attribute set of (atom (null, bool, int, float or string) or a list of them for duplicate keys)

openssh configuration. See sshd_config(5) for additional details.

Default: { }

services.openssh.settings.AddressFamily Link copied!

Type: one of "any", "inet", "inet6"

Specifies which address family should be used by sshd(8).

Default: "any"

services.openssh.settings.Banner Link copied!

Type: value "none" (singular enum) or absolute path

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.

Default: "none"

services.openssh.settings.Ciphers Link copied!

Type: list of string
Default: [ "chacha20-poly1305@openssh.com" "aes256-gcm@openssh.com" "aes128-gcm@openssh.com" "aes256-ctr" "aes192-ctr" "aes128-ctr" ]

services.openssh.settings.HostKey Link copied!

Type: list of absolute path

Specifies a file containing a private host key used by sshd(8).

Default: [ ]

services.openssh.settings.KbdInteractiveAuthentication Link copied!

Type: boolean

Specifies whether keyboard-interactive authentication is allowed.

Default: true

services.openssh.settings.KexAlgorithms Link copied!

Type: list of string
Default: [ "sntrup761x25519-sha512@openssh.com" "curve25519-sha256" "curve25519-sha256@libssh.org" "diffie-hellman-group-exchange-sha256" ]

services.openssh.settings.ListenAddress Link copied!

Type: (list of string) or string convertible to it

Specifies the local addresses sshd(8) should listen on.

Default: [ ]

services.openssh.settings.LogLevel Link copied!

Type: one of "QUIET", "FATAL", "ERROR", "INFO", "VERBOSE", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3"

Gives the verbosity level that is used when logging messages from sshd(8). Logging with a DEBUG level violates the privacy of users and is not recommended.

Default: "INFO"

services.openssh.settings.Macs Link copied!

Type: list of string
Default: [ "hmac-sha2-512-etm@openssh.com" "hmac-sha2-256-etm@openssh.com" "umac-128-etm@openssh.com" ]

services.openssh.settings.PasswordAuthentication Link copied!

Type: boolean

Specifies whether password authentication is allowed.

Default: true

services.openssh.settings.PermitRootLogin Link copied!

Type: one of "yes", "without-password", "prohibit-password", "forced-commands-only", "no"

Whether the root user can login using ssh.

Default: "prohibit-password"

services.openssh.settings.Port Link copied!

Type: list of 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Specifies the port number that sshd(8) listens on.

Default: [ 22 ]

services.openssh.settings.StrictModes Link copied!

Type: boolean

Whether sshd should check file modes and ownership of directories

Default: true

services.openssh.settings.UsePAM Link copied!

Type: boolean

Whether to enable PAM authentication.

Default: true
Example: true

services.openssh.sftp.enable Link copied!

Type: boolean

Whether to enable the SFTP subsystem.

Default: true

services.openssh.sftp.executable Link copied!

Type: string

Path to the SFTP server executable.

services.openssh.sftp.flags Link copied!

Type: list of string

Additional command-line flags to pass to the SFTP server.

Default: [ ]

services.php-fpm.enable Link copied!

Type: boolean

Whether to enable php-fpm as a system service.

Default: false

services.php-fpm.package Link copied!

Type: package

The package to use for php.

Default: pkgs.php

services.php-fpm.settings Link copied!

Type: open submodule of attribute set of (string or signed integer or boolean or (open submodule of attribute set of (string or signed integer or boolean)))

php-fpm configuration. See upstream documentation for additional details.

Default: { }

services.php-fpm.settings.log_level Link copied!

Type: one of "alert", "error", "warning", "notice", "debug"

Error log level.

Default: "notice"

services.polkit.adminIdentities Link copied!

Type: list of string

Specifies which users are considered “administrators”, for those actions that require the user to authenticate as an administrator (i.e. have an auth_admin value). By default, this is all users in the wheel group.

Default: [ "unix-group:wheel" ]
Example:
[
  "unix-user:alice"
  "unix-group:admin"
]

services.polkit.debug Link copied!

Type: boolean

Whether to enable debug logging.

Note

This is required in order to see log messages from rule definitions.

Default: false

services.polkit.enable Link copied!

Type: boolean

Whether to enable polkit as a system service.

Default: false

services.polkit.extraConfig Link copied!

Type: strings concatenated with "\n"

Any polkit rules to be added to config (in JavaScript ;-). See: <https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html#polkit-rules>

Default: ""
Example:
''
  /* Log authorization checks. */
  polkit.addRule(function(action, subject) {
    // Make sure to set { services.polkit.debug = true; } in configuration.nix
    polkit.log("user " +  subject.user + " is attempting action " + action.id + " from PID " + subject.pid);
  });
  
  /* Allow any local user to do anything (dangerous!). */
  polkit.addRule(function(action, subject) {
    if (subject.local) return "yes";
  });
''

services.polkit.package Link copied!

Type: package

The package to use for polkit.

Default: pkgs.polkit

services.power-profiles-daemon.enable Link copied!

Type: boolean

Whether to enable power-profiles-daemon as a system service.

Default: false

services.power-profiles-daemon.extraGroups Link copied!

Type: list of string

A list of groups to unconditionally grant access, via polkit, to this services offerings. Useful on systems without (e)logind. See Using polkit with seatd for additional details.

Default: [ ]
Example: [ config.services.seatd.group ]

services.power-profiles-daemon.package Link copied!

Type: package

The package to use for power-profiles-daemon.

Default: pkgs.power-profiles-daemon

services.radarr.dataDir Link copied!

Type: absolute path

The directory used to store all radarr data.

Note

If left as the default value this directory will automatically be created on system activation, otherwise you are responsible for ensuring the directory exists with appropriate ownership and permissions before the radarr service starts.

Default: "/var/lib/radarr"

services.radarr.enable Link copied!

Type: boolean

Whether to enable radarr as a system service.

Default: false

services.radarr.group Link copied!

Type: string

Group account under which radarr runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the radarr service starts.

Default: "radarr"

services.radarr.package Link copied!

Type: package

The package to use for radarr.

Default: pkgs.radarr

services.radarr.settings Link copied!

Type: open submodule of attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

radarr configuration. See upstream documentation for additional details.

Default: { }

services.radarr.settings.log.analyticsEnabled Link copied!

Type: boolean

Send Anonymous Usage Data.

Default: false

services.radarr.settings.log.level Link copied!

Type: one of "debug", "info", "trace"

Log level.

Default: "info"

services.radarr.settings.server.port Link copied!

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Port number.

Default: 7878

services.radarr.settings.update.automatically Link copied!

Type: boolean

Automatically download and install updates.

Default: false

services.radarr.settings.update.mechanism Link copied!

Type: null or one of "external", "builtIn", "script"

Which update mechanism to use.

Default: "external"

services.radarr.user Link copied!

Type: string

User account under which radarr runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the radarr service starts.

Default: "radarr"

services.rsyslog.enable Link copied!

Type: boolean

Whether to enable rsyslog as a system service.

Default: false

services.rtkit.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.rtkit.enable Link copied!

Type: boolean

Whether to enable rtkit as a system service.

Default: false

services.rtkit.extraGroups Link copied!

Type: list of string

A list of groups to unconditionally grant access, via polkit, to this services offerings. Useful on systems without (e)logind. See Using polkit with seatd for additional details.

Default: [ ]
Example: [ config.services.seatd.group ]

services.rtkit.package Link copied!

Type: package

The package to use for rtkit.

Default: pkgs.rtkit

services.sddm.enable Link copied!

Type: boolean

Whether to enable sddm as a system service.

Default: false

services.sddm.settings Link copied!

Type: attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

Extra settings merged in and overwriting defaults in sddm.conf.

Default: { }
Example:
{
  Autologin = {
    Session = "plasma.desktop";
    User = "john";
  };
}

services.seatd.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.seatd.enable Link copied!

Type: boolean

Whether to enable seatd as a system service.

Default: false

services.seatd.group Link copied!

Type: string

Group to own the seatd socket.

Note

If you want non-root users to be able to access the seatd session, add them to this group.

Default: "seat"

services.sonarr.dataDir Link copied!

Type: absolute path

The directory used to store all sonarr data.

Note

If left as the default value this directory will automatically be created on system activation, otherwise you are responsible for ensuring the directory exists with appropriate ownership and permissions before the sonarr service starts.

Default: "/var/lib/sonarr"

services.sonarr.enable Link copied!

Type: boolean

Whether to enable sonarr as a system service.

Default: false

services.sonarr.group Link copied!

Type: string

Group account under which sonarr runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the sonarr service starts.

Default: "sonarr"

services.sonarr.package Link copied!

Type: package

The package to use for sonarr.

Default: pkgs.sonarr

services.sonarr.settings Link copied!

Type: open submodule of attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

sonarr configuration. See upstream documentation for additional details.

Default: { }

services.sonarr.settings.log.analyticsEnabled Link copied!

Type: boolean

Send Anonymous Usage Data.

Default: false

services.sonarr.settings.log.level Link copied!

Type: one of "debug", "info", "trace"

Log level.

Default: "info"

services.sonarr.settings.server.port Link copied!

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Port number.

Default: 8989

services.sonarr.settings.update.automatically Link copied!

Type: boolean

Automatically download and install updates.

Default: false

services.sonarr.settings.update.mechanism Link copied!

Type: null or one of "external", "builtIn", "script"

Which update mechanism to use.

Default: "external"

services.sonarr.user Link copied!

Type: string

User account under which sonarr runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the sonarr service starts.

Default: "sonarr"

services.sysklogd.enable Link copied!

Type: boolean

Whether to enable sysklogd as a system service.

Default: false

services.sysklogd.package Link copied!

Type: package

The package to use for sysklogd.

Default: pkgs.sysklogd

services.system76-scheduler.configFile Link copied!

Type: absolute path

Path to the system76-scheduler configuration file.

services.system76-scheduler.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.system76-scheduler.enable Link copied!

Type: boolean

Whether to enable system76-scheduler as a system service.

Default: false

services.system76-scheduler.package Link copied!

Type: package

The package to use for system76-scheduler.

Default: pkgs.system76-scheduler

services.thermald.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.thermald.enable Link copied!

Type: boolean

Whether to enable thermald as a system service.

Default: false

services.thermald.extraArgs Link copied!

Type: list of string

Additional arguments to pass to thermald. See thermald(8) for additional details.

Default: [ ]

services.thermald.package Link copied!

Type: package

The package to use for thermald.

Default: pkgs.thermald

services.tlp.enable Link copied!

Type: boolean

Whether to enable tlp as a system service.

Default: false

services.tlp.package Link copied!

Type: package

The package to use for tlp.

Default: pkgs.tlp

services.tlp.settings Link copied!

Type: attribute set of (atom (null, bool, int, float or string) or a non-empty list of them)

tlp configuration. See upstream documentation for additional details.

Default: { }

services.tzupdate.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.tzupdate.enable Link copied!

Type: boolean

Whether to enable tzupdate as a system task.

Default: false

services.tzupdate.package Link copied!

Type: package

The package to use for tzupdate.

Default: pkgs.tzupdate

services.udev.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.udev.enable Link copied!

Type: boolean

Whether to enable eudev as a system service.

Default: false

services.udev.package Link copied!

Type: package

The package to use for eudev.

Default: pkgs.eudev

services.udev.packages Link copied!

Type: list of absolute path

List of packages containing udev rules. All files found in «pkg»/etc/udev/rules.dnd «pkg»/lib/udev/rules.dill be included.

Default: [ ]

services.udev.path Link copied!

Type: list of absolute path

Packages added to the PATH environment variable when executing programs from Udev rules.

coreutils, gnu{sed,grep}, util-linux automatically included.

Default: [ ]

services.udisks2.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.udisks2.enable Link copied!

Type: boolean

Whether to enable udisks2 as a system service.

Default: false

services.udisks2.package Link copied!

Type: package

The package to use for udisks2.

Default: pkgs.udisks2

services.udisks2.settings Link copied!

Type: open submodule of attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

udisks2 configuration. See udisks2.conf(8) for additional details.

Default: { }

services.upower.enable Link copied!

Type: boolean

Whether to enable upower as a system service.

Default: false

services.upower.package Link copied!

Type: package

The package to use for upower.

Default: pkgs.upower

services.upower.settings Link copied!

Type: open submodule of attribute set of section of an INI file (attrs of INI atom (null, bool, int, float or string))

upower configuration. See upstream documentation for additional details.

Default: { }

services.uptime-kuma.enable Link copied!

Type: boolean

Whether to enable uptime-kuma as a system service.

Default: false

services.uptime-kuma.group Link copied!

Type: string

Group account under which uptime-kuma runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the uptime-kuma service starts.

Default: "uptime-kuma"

services.uptime-kuma.package Link copied!

Type: package

The package to use for uptime-kuma.

Default: pkgs.uptime-kuma

services.uptime-kuma.settings Link copied!

Type: open submodule of attribute set of (atom (null, bool, int, float or string))

uptime-kuma configuration. See upstream documentation for additional details.

Default: { }

services.uptime-kuma.settings.DATA_DIR Link copied!

Type: string

Set the directory where the data should be stored.

Default: "/var/lib/uptime-kuma"

services.uptime-kuma.settings.HOST Link copied!

Type: string

Host to bind to, could be an ip.

Default: "127.0.0.1"

services.uptime-kuma.settings.PORT Link copied!

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Port to listen to.

Default: 3001

services.uptime-kuma.user Link copied!

Type: string

User account under which uptime-kuma runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the uptime-kuma service starts.

Default: "uptime-kuma"

services.vnstat.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.vnstat.enable Link copied!

Type: boolean

Whether to enable vnstat as a system service.

Default: false

services.vnstat.extraArgs Link copied!

Type: list of string

Additional arguments to pass to vnstat. See vnstatd(8) for additional details.

Default: [ ]

services.vnstat.group Link copied!

Type: string

Group account under which vnstat runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the vnstat service starts.

Default: "vnstatd"

services.vnstat.package Link copied!

Type: package

The package to use for vnstat.

Default: pkgs.vnstat

services.vnstat.settings Link copied!

Type: open submodule of attribute set of (atom (null, bool, int, float or string))

vnstat configuration. See vnstat.conf(5) for additional details.

Default: { }

services.vnstat.settings.DatabaseDir Link copied!

Type: string or absolute path

Specifies the directory where interface databases are to be stored.

Default: "/var/lib/vnstat"

services.vnstat.settings.UseLogging Link copied!

Type: signed integer or one of "disabled", "logfile", "syslog"

Enable or disable logging.

Default: "syslog"

services.vnstat.user Link copied!

Type: string

User account under which vnstat runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the vnstat service starts.

Default: "vnstatd"

services.xserver.enable Link copied!

Type: boolean

Whether to enable the X.Org display server.

Default: false

services.xserver.modules Link copied!

Type: list of absolute path

Packages to be added to the module search path of the X server.

Default: [ ]
Example: [ pkgs.xf86_input_wacom ]

services.xserver.videoDriver Link copied!

Type: null or string

The name of the video driver for your graphics card. This option is obsolete; please set the services.xserver.videoDrivers instead.

Default: null
Example: "i810"

services.xserver.videoDrivers Link copied!

Type: list of string

The names of the video drivers the configuration supports. They will be tried in order until one that supports your card is found. Don't combine those with "incompatible" OpenGL implementations, e.g. free ones (mesa-based) with proprietary ones.

For unfree "nvidia*", the supported GPU lists are on https://www.nvidia.com/object/unix.html

Default: [ "modesetting" "fbdev" ]
Example:
[
  "nvidia"
  "amdgpu-pro"
]

services.xserver.xkb.dir Link copied!

Type: absolute path

Path used for -xkbdir xserver parameter.

Default: "${pkgs.xkeyboard_config}/etc/X11/xkb"

services.xserver.xkb.layout Link copied!

Type: string

X keyboard layout, or multiple keyboard layouts separated by commas.

Default: "us"

services.xserver.xkb.model Link copied!

Type: string

X keyboard model.

Default: "pc104"
Example: "presario"

services.xserver.xkb.options Link copied!

Type: strings concatenated with ","

X keyboard options; layout switching goes here.

Default: "terminate:ctrl_alt_bksp"
Example: "grp:caps_toggle,grp_led:scroll"

services.xserver.xkb.variant Link copied!

Type: string

X keyboard variant.

Default: ""
Example: "colemak"

services.ytdl-sub.debug Link copied!

Type: boolean

Whether to enable debug logging.

Default: false

services.ytdl-sub.enable Link copied!

Type: boolean

Whether to enable ytdl-sub as a system service.

Default: false

services.ytdl-sub.extraArgs Link copied!

Type: list of string

Additional arguments to pass to ytdl-sub. See upstream documentation for additional details.

Default: [ ]

services.ytdl-sub.group Link copied!

Type: string

Group account under which ytdl-sub runs.

Note

If left as the default value this group will automatically be created on system activation, otherwise you are responsible for ensuring the group exists before the ytdl-sub service starts.

Default: "ytdl-sub"

services.ytdl-sub.interval Link copied!

Type: string

The interval at which this task should run its specified command. Accepts either a standard crontab(5) expression or one of: hourly, daily, weekly, monthly, or yearly.

If a standard 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.

Default: "daily"

services.ytdl-sub.package Link copied!

Type: package

The package to use for ytdl-sub.

Default: pkgs.ytdl-sub

services.ytdl-sub.settings Link copied!

Type: open submodule of (YAML 1.1 value)

ytdl-sub configuration. See upstream documentation for additional details.

Default: { }

services.ytdl-sub.settings.configuration.lock_directory Link copied!

Type: string

The directory to temporarily store file locks, which prevents multiple instances of ytdl-sub from running. Note that file locks do not work on network-mounted directories. Ensure that this directory resides on the host machine.

Default: "/run/lock/ytdl-sub"

services.ytdl-sub.settings.configuration.persist_logs.keep_successful_logs Link copied!

Type: boolean

When true always writes log files for the subscription both for successful downloads and when it encounters an error while downloading. When this key is false, only write log files for errors.

Default: true

services.ytdl-sub.settings.configuration.persist_logs.logs_directory Link copied!

Type: string

Write log files to this directory with names like YYYY-mm-dd-HHMMSS.subscription_name.(success|error).log.

Default: "/var/log/ytdl-sub"

services.ytdl-sub.settings.configuration.working_directory Link copied!

Type: string

The directory to temporarily store downloaded files before moving them into their final directory.

Default: "/run/ytdl-sub"

services.ytdl-sub.subscriptions Link copied!

Type: YAML 1.1 value

ytdl-sub subscriptions. See upstream documentation for additional details.

Default: { }
Example:
{
  "YouTube Playlist" = {
    "Some Playlist" = "https://www.youtube.com/playlist?list=...";
  };
}

services.ytdl-sub.user Link copied!

Type: string

User account under which ytdl-sub runs.

Note

If left as the default value this user will automatically be created on system activation, otherwise you are responsible for ensuring the user exists before the ytdl-sub service starts.

Default: "ytdl-sub"

services.zerotierone.enable Link copied!

Type: boolean

Whether to enable zerotierone as a system service.

Default: false

services.zerotierone.package Link copied!

Type: package

The package to use for zerotierone.

Default: pkgs.zerotierone

services.zerotierone.stateDir Link copied!

Type: absolute path

The directory used to store all zerotier data.

Note

If left as the default value this directory will automatically be created on system activation, otherwise you are responsible for ensuring the directory exists with appropriate ownership and permissions before the zerotier service starts.

Default: "/var/lib/zerotier-one"

services.zfs.autoScrub.enable Link copied!

Type: boolean

This option has no description.

Default: false

services.zfs.autoScrub.interval Link copied!

Type: string

The interval at which this task should run its specified command. Accepts either a standard crontab(5) expression or one of: hourly, daily, weekly, monthly, or yearly.

If a standard 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.

Default: "monthly"

services.zfs.autoScrub.pools Link copied!

Type: list of non-empty string

List of ZFS pools to periodically scrub. If empty, all pools will be scrubbed.

Default: [ ]
Example:
[
  "tank"
]

services.zfs.autoSnapshot.daily Link copied!

Type: signed integer

Number of daily auto-snapshots that you wish to keep.

Default: 7

services.zfs.autoSnapshot.enable Link copied!

Type: boolean

Enable the (OpenSolaris-compatible) ZFS auto-snapshotting service. Note that you must set the com.sun:auto-snapshot property to true on all datasets which you wish to auto-snapshot.

You can override a child dataset to use, or not use auto-snapshotting by setting its flag with the given interval: zfs set com.sun:auto-snapshot:weekly=false DATASET

Default: false

services.zfs.autoSnapshot.flags Link copied!

Type: string

Flags to pass to the zfs-auto-snapshot command.

Run zfs-auto-snapshot (without any arguments) to see available flags.

If it's not too inconvenient for snapshots to have timestamps in UTC, it is suggested that you append --utc to the list of default options (see example).

Otherwise, snapshot names can cause name conflicts or apparent time reversals due to daylight savings, timezone or other date/time changes.

Default: "-k -p"
Example: "-k -p --utc"

services.zfs.autoSnapshot.frequent Link copied!

Type: signed integer

Number of frequent (15-minute) auto-snapshots that you wish to keep.

Default: 4

services.zfs.autoSnapshot.hourly Link copied!

Type: signed integer

Number of hourly auto-snapshots that you wish to keep.

Default: 24

services.zfs.autoSnapshot.monthly Link copied!

Type: signed integer

Number of monthly auto-snapshots that you wish to keep.

Default: 12

services.zfs.autoSnapshot.weekly Link copied!

Type: signed integer

Number of weekly auto-snapshots that you wish to keep.

Default: 4

specialisation Link copied!

Type: attribute set of (submodule)

Additional configurations to build.

Default: { }
Example:
{
  mdevd = {
    services.mdevd.enable = lib.mkForce true;
    services.udev.enable = lib.mkForce false;
  };
}

swapDevices Link copied!

Type: list of (submodule)

The swap devices and swap files. These are activated at boot time.

Default: [ ]
Example:
[
  {
    device = "/dev/sda2";
  }
]

swapDevices.*.device Link copied!

Type: non-empty string

Path of the swap device or file.

Example: "/dev/sda2"

swapDevices.*.label Link copied!

Type: null or non-empty string

Label of the swap device (if any).

Default: null
Example: "swap"

swapDevices.*.options Link copied!

Type: non-empty (list of non-empty string)

Options used to set up the swap device.

Default: [ "defaults" ]
Example:
[
  "nofail"
]

swapDevices.*.priority Link copied!

Type: null or signed integer

Specify the priority of the swap device. Higher numbers indicate higher priority. null lets the kernel choose a priority, starting at -1 and going down.

Default: null
Example: 100

system.activation.enable Link copied!

Type: boolean

Whether to enable system activation scripts.

Default: true

system.activation.out Link copied!

Type: absolute path

the actual script to run on activation....

system.activation.path Link copied!

Type: list of package

Packages added to the PATH environment variable of activation scripts.

Default: [ ]

system.activation.scripts Link copied!

Type: attribute set of ((submodule) or string convertible to it)

A set of shell script fragments that are executed when a NixOS system configuration is activated. Examples are updating /etc, creating accounts, and so on. Since these are executed every time you boot the system or run nixos-rebuild, it's important that they are idempotent and fast.

Default: { }
Example:
{ stdio.text =
  ''
    # Needed by some programs.
    ln -sfn /proc/self/fd /dev/fd
    ln -sfn /proc/self/fd/0 /dev/stdin
    ln -sfn /proc/self/fd/1 /dev/stdout
    ln -sfn /proc/self/fd/2 /dev/stderr
  '';
}

system.activation.scripts.<name>.deps Link copied!

Type: list of string

List of dependencies. The script will run after these.

Default: [ ]

system.activation.scripts.<name>.text Link copied!

Type: strings concatenated with "\n"

The content of the script.

system.topLevel Link copied!

Type: absolute path

top-level system derivation

time.timeZone Link copied!

Type: null or string without spaces

The time zone used when displaying times and dates. See <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones> for a list of valid time zone names.

Default: null
Example: "America/New_York"

users.defaultUserShell Link copied!

Type: package or (absolute path, not containing newlines or colons)

The default shell assigned to user accounts created with isNormalUser = true.

Default: pkgs.bashInteractive
Example: pkgs.zsh

users.groups Link copied!

Type: attribute set of (submodule)

This option has no description.

Default: { }

users.groups.<name>.gid Link copied!

Type: null or signed integer

The group GID. If the GID is null, a free GID is picked on activation.

Default: null

users.groups.<name>.members Link copied!

Type: list of (string, not containing newlines or colons)

The user names of the group members, added to the /etc/group file.

Default: [ ]

users.groups.<name>.name Link copied!

Type: string, not containing newlines or colons

The name of the group. If undefined, the name of the attribute set will be used.

users.users Link copied!

Type: attribute set of (submodule)

This option has no description.

Default: { }

users.users.<name>.createHome Link copied!

Type: boolean

Whether to create the home directory and ensure ownership as well as permissions to match the user.

Default: false

users.users.<name>.description Link copied!

Type: string, not containing newlines or colons

A short description of the user account, typically the user's full name. This is actually the “GECOS” or “comment” field in /etc/passwd.

Default: ""
Example: "Alice Q. User"

users.users.<name>.enable Link copied!

Type: boolean

If set to false, the user account will not be created. This is useful for when you wish to conditionally disable user accounts.

Default: true
Example: false

users.users.<name>.extraGroups Link copied!

Type: list of string

The user's auxiliary groups.

Default: [ ]

users.users.<name>.group Link copied!

Type: string

The user's primary group.

Default: ""

users.users.<name>.home Link copied!

Type: absolute path, not containing newlines or colons

The user's home directory.

Default: "/var/empty"

users.users.<name>.isNormalUser Link copied!

Type: boolean

Indicates whether this is an account for a “real” user. This automatically sets group to users, createHome to true, home to /home/«username»shell to users.defaultUserShell, and isSystemUser to false. Exactly one of isNormalUser and isSystemUser must be true.

Default: false

users.users.<name>.isSystemUser Link copied!

Type: boolean

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 true.

Default: false

users.users.<name>.name Link copied!

Type: string, not containing newlines or colons

The name of the user account. If undefined, the name of the attribute set will be used.

users.users.<name>.packages Link copied!

Type: list of package

The set of packages that should be made available to the user. This is in contrast to environment.systemPackages, which adds packages to all users.

Default: [ ]
Example: [ pkgs.firefox pkgs.thunderbird ]

users.users.<name>.password Link copied!

Type: null or string

Specifies the hashed password for the user.

Default: null

users.users.<name>.passwordFile Link copied!

Type: null or string

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.

Default: null

users.users.<name>.shell Link copied!

Type: null or package or (absolute path, not containing newlines or colons)

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;.

Default: pkgs.shadow
Example: pkgs.bashInteractive

users.users.<name>.uid Link copied!

Type: null or signed integer

The account UID. If the UID is null, a free UID is picked on activation.

Default: null

xdg.autostart.enable Link copied!

Type: boolean

Whether to install files to support the XDG Autostart specification.

Default: true

xdg.icons.enable Link copied!

Type: boolean

This option has no description.

Default: false

xdg.mime.addedAssociations Link copied!

Type: attribute set of (string or ((list of string) or string) convertible to it)

Adds associations between mimetypes and applications. See the specifications for more information.

Default: { }
Example:
{
  "application/pdf" = "firefox.desktop";
  "text/xml" = [
    "nvim.desktop"
    "codium.desktop"
  ];
}

xdg.mime.defaultApplications Link copied!

Type: attribute set of (string or ((list of string) or string) convertible to it)

Sets the default applications for given mimetypes. See the specifications for more information.

Default: { }
Example:
{
  "application/pdf" = "firefox.desktop";
  "image/png" = [
    "sxiv.desktop"
    "gimp.desktop"
  ];
}

xdg.mime.enable Link copied!

Type: boolean

Whether to install files to support the XDG Shared MIME-info specification and the XDG MIME Applications specification.

Default: true

xdg.mime.removedAssociations Link copied!

Type: attribute set of (string or ((list of string) or string) convertible to it)

Removes associations between mimetypes and applications. See the specifications for more information.

Default: { }
Example:
{
  "audio/mp3" = [
    "mpv.desktop"
    "umpv.desktop"
  ];
  "inode/directory" = "codium.desktop";
}

xdg.portal.enable Link copied!

Type: boolean

Whether to enable XDG desktop portals.

Default: true

xdg.portal.package Link copied!

Type: package

The package to use for xdg-desktop-portal.

Default: pkgs.xdg-desktop-portal

xdg.portal.portals Link copied!

Type: list of package

List of XDG desktop portal packages to install.

Default: [ ]

xdg.terminal-exec.enable Link copied!

Type: boolean

Whether to enable xdg-terminal-exec, the proposed Default Terminal Execution Specification.

Default: false
Example: true

xdg.terminal-exec.package Link copied!

Type: package

The xdg-terminal-exec package to use.

Default: pkgs.xdg-terminal-exec

xdg.terminal-exec.settings Link copied!

Type: attribute set of list of string

Configuration options for the Default Terminal Execution Specification.

The keys are the desktop environments that are matched (case-insensitively) against $XDG_CURRENT_DESKTOP, or default which is used when the current desktop environment is not found in the configuration. The values are a list of terminals' desktop file IDs to try in order of decreasing priority.

Default: { }
Example:
{
  GNOME = [
    "com.raggesilver.BlackBox.desktop"
    "org.gnome.Terminal.desktop"
  ];
  default = [
    "kitty.desktop"
  ];
}