Darwin Configuration Options

Version darwin4.eb25dc6


_module.args

Additional arguments passed to each module in addition to ones like lib, config, and pkgs, modulesPath.

This option is also available to all submodules. Submodules do not inherit args from their parent module, nor do they provide args to their parent module or sibling submodules. The sole exception to this is the argument name which is provided by parent modules to a submodule and contains the attribute name the submodule is bound to, or a unique generated name if it is not bound to an attribute.

Some arguments are already passed by default, of which the following cannot be changed with this option:

  • lib: The nixpkgs library.

  • config: The results of all options after merging the values from all modules together.

  • options: The options declared in all modules.

  • specialArgs: The specialArgs argument passed to evalModules.

  • All attributes of specialArgs

    Whereas option values can generally depend on other option values thanks to laziness, this does not apply to imports, which must be computed statically before anything else.

    For this reason, callers of the module system can provide specialArgs which are available during import resolution.

    For NixOS, specialArgs includes modulesPath, which allows you to import extra modules from the nixpkgs package tree without having to somehow make the module aware of the location of the nixpkgs or NixOS directories.

    { modulesPath, ... }: {
      imports = [
        (modulesPath + "/profiles/minimal.nix")
      ];
    }
    

For NixOS, the default value for this option includes at least this argument:

  • pkgs: The nixpkgs package set according to the nixpkgs.pkgs option.

Type: lazy attribute set of raw value

Declared by:

<nixpkgs/lib/modules.nix>
documentation.enable

Whether to install documentation of packages from environment.systemPackages into the generated system path.

See “Multiple-output packages” chapter in the nixpkgs manual for more info.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/documentation>
documentation.doc.enable

Whether to install documentation distributed in packages’ /share/doc. Usually plain text and/or HTML. This also includes “doc” outputs.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/documentation>
documentation.info.enable

Whether to install info pages and the info command. This also includes “info” outputs.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/documentation>
documentation.man.enable

Whether to install manual pages and the man command. This also includes “man” outputs.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/documentation>
environment.darwinConfig

The path of the darwin configuration.nix used to configure the system, this updates the default darwin-config entry in NIX_PATH. Since this changes an environment variable it will only apply to new shells.

NOTE: Changing this requires running darwin-rebuild switch -I darwin-config=/path/to/configuration.nix the first time to make darwin-rebuild aware of the custom location.

Type: path or string

Default: "$HOME/.nixpkgs/darwin-configuration.nix"

Declared by:

<nix-darwin/modules/environment>
environment.etc

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

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/system/etc.nix>
environment.etc.<name>.enable

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

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/system/etc.nix>
environment.etc.<name>.copy

Whether this file should be copied instead of symlinking.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/etc.nix>
environment.etc.<name>.source

Path of the source file.

Type: path

Declared by:

<nix-darwin/modules/system/etc.nix>
environment.etc.<name>.target

Name of symlink. Defaults to the attribute name.

Type: string

Default: "‹name›"

Declared by:

<nix-darwin/modules/system/etc.nix>
environment.etc.<name>.text

Text of the file.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/system/etc.nix>
environment.extraInit

Shell script code called during global environment initialisation after all variables and profileVariables have been set. This code is asumed to be shell-independent, which means you should stick to pure sh without sh word split.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/environment>
environment.extraOutputsToInstall

List of additional package outputs to be symlinked into /run/current-system/sw.

Type: list of string

Default: [ ]

Example:

[
  "doc"
  "info"
  "devdoc"
]

Declared by:

<nix-darwin/modules/environment>
environment.interactiveShellInit

Shell script code called during interactive shell initialisation. This code is asumed to be shell-independent, which means you should stick to pure sh without sh word split.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/environment>
environment.launchAgents

Set of files that have to be linked in /Library/LaunchAgents.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchAgents.<name>.enable

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

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchAgents.<name>.copy

Whether this file should be copied instead of symlinking.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchAgents.<name>.source

Path of the source file.

Type: path

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchAgents.<name>.target

Name of symlink. Defaults to the attribute name.

Type: string

Default: "‹name›"

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchAgents.<name>.text

Text of the file.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchDaemons

Set of files that have to be linked in /Library/LaunchDaemons.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchDaemons.<name>.enable

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

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchDaemons.<name>.copy

Whether this file should be copied instead of symlinking.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchDaemons.<name>.source

Path of the source file.

Type: path

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchDaemons.<name>.target

Name of symlink. Defaults to the attribute name.

Type: string

Default: "‹name›"

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.launchDaemons.<name>.text

Text of the file.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.loginShell

Configure default login shell.

Type: string

Default: "$SHELL -l"

Declared by:

<nix-darwin/modules/environment>
environment.loginShellInit

Shell script code called during login shell initialisation. This code is asumed to be shell-independent, which means you should stick to pure sh without sh word split.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/environment>
environment.pathsToLink

List of directories to be symlinked in /run/current-system/sw.

Type: list of string

Default: [ ]

Example:

[
  "/share/doc"
]

Declared by:

<nix-darwin/modules/environment>
environment.postBuild

Commands to execute when building the global environment.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/environment>
environment.profiles

A list of profiles used to setup the global environment.

Type: list of string

Declared by:

<nix-darwin/modules/environment>
environment.shellAliases

An attribute set that maps aliases (the top level attribute names in this option) to command strings or directly to build outputs. The alises are added to all users’ shells.

Type: attribute set of string

Default: { }

Example:

{
  ll = "ls -l";
}

Declared by:

<nix-darwin/modules/environment>
environment.shellInit

Shell script code called during shell initialisation. This code is asumed to be shell-independent, which means you should stick to pure sh without sh word split.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/environment>
environment.shells

A list of permissible login shells for user accounts. No need to mention /bin/sh and other shells that are available by default on macOS.

Type: list of (package or path)

Default: [ ]

Example: [ pkgs.bashInteractive pkgs.zsh ]

Declared by:

<nix-darwin/modules/system/shells.nix>
environment.systemPackages

The set of packages that appear in /run/current-system/sw. These packages are automatically available to all users, and are automatically updated every time you rebuild the system configuration. (The latter is the main difference with installing them in the default profile, /nix/var/nix/profiles/default.

Type: list of package

Default: [ ]

Example: [ pkgs.curl pkgs.vim ]

Declared by:

<nix-darwin/modules/environment>
environment.systemPath

The set of paths that are added to PATH.

Type: list of (path or string)

Declared by:

<nix-darwin/modules/environment>
environment.userLaunchAgents

Set of files that have to be linked in ~/Library/LaunchAgents.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.userLaunchAgents.<name>.enable

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

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.userLaunchAgents.<name>.copy

Whether this file should be copied instead of symlinking.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.userLaunchAgents.<name>.source

Path of the source file.

Type: path

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.userLaunchAgents.<name>.target

Name of symlink. Defaults to the attribute name.

Type: string

Default: "‹name›"

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.userLaunchAgents.<name>.text

Text of the file.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/system/launchd.nix>
environment.variables

A set of environment variables used in the global environment. These variables will be set on shell initialisation. The value of each variable can be either a string or a list of strings. The latter is concatenated, interspersed with colon characters.

Type: attribute set of (string or list of string)

Default: { }

Example:

{
  EDITOR = "vim";
  LANG = "nl_NL.UTF-8";
}

Declared by:

<nix-darwin/modules/environment>
fonts.fontDir.enable

Whether to enable font management and install configured fonts to /Library/Fonts.

NOTE: removes any manually-added fonts.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/fonts>
fonts.fonts

List of fonts to install.

Fonts present in later entries override those with the same filenames in previous ones.

Type: list of path

Default: [ ]

Example: [ pkgs.dejavu_fonts ]

Declared by:

<nix-darwin/modules/fonts>
homebrew.enable

Whether to enable nix-darwin to manage installing/updating/upgrading Homebrew taps, formulae, and casks, as well as Mac App Store apps and Docker containers, using Homebrew Bundle.

Note that enabling this option does not install Homebrew, see the Homebrew website for installation instructions.

Use the homebrew.brews, homebrew.casks, homebrew.masApps, and homebrew.whalebrews options to list the Homebrew formulae, casks, Mac App Store apps, and Docker containers you’d like to install. Use the homebrew.taps option, to make additional formula repositories available to Homebrew. This module uses those options (along with the homebrew.caskArgs options) to generate a Brewfile that nix-darwin passes to the brew bundle command during system activation.

The default configuration of this module prevents Homebrew Bundle from auto-updating Homebrew and all formulae, as well as upgrading anything that’s already installed, so that repeated invocations of darwin-rebuild switch (without any change to the configuration) are idempotent. You can modify this behavior using the options under homebrew.onActivation.

This module also provides a few options for modifying how Homebrew commands behave when you manually invoke them, under homebrew.global.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.brewPrefix

The path prefix where the brew executable is located. This will be set to the correct value based on your system’s platform, and should only need to be changed if you manually installed Homebrew in a non-standard location.

Type: string

Default:

if pkgs.stdenv.hostPlatform.isAarch64 then "/opt/homebrew/bin"
else "/usr/local/bin"

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.brews

List of Homebrew formulae to install.

Formulae defined as strings, e.g., "imagemagick", are a shorthand for:

{ name = "imagemagick"; }

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

Default: [ ]

Example:

# Adapted examples from https://github.com/Homebrew/homebrew-bundle#usage
[
  # `brew install`
  "imagemagick"

  # `brew install --with-rmtp`, `brew services restart` on version changes
  {
    name = "denji/nginx/nginx-full";
    args = [ "with-rmtp" ];
    restart_service = "changed";
  }

  # `brew install`, always `brew services restart`, `brew link`, `brew unlink mysql` (if it is installed)
  {
    name = "mysql@5.6";
    restart_service = true;
    link = true;
    conflicts_with = [ "mysql" ];
  }
]

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.brews.*.args

Arguments flags to pass to brew install. Values should not include the leading "--".

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.brews.*.conflicts_with

List of formulae that should be unlinked and their services stopped (if they are installed).

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.brews.*.link

Whether to link the formula to the Homebrew prefix. When this option is null, Homebrew will use it’s default behavior which is to link the formula if it’s currently unlinked and not keg-only, and to unlink the formula if it’s currently linked and keg-only.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.brews.*.name

The name of the formula to install.

Type: string

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.brews.*.restart_service

Whether to run brew services restart for the formula and register it to launch at login (or boot). If set to "changed", the service will only be restarted on version changes.

Homebrew’s default is false.

Type: null or boolean or value “changed” (singular enum)

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.brews.*.start_service

Whether to run brew services start for the formula and register it to launch at login (or boot).

Homebrew’s default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs

Arguments passed to brew install --cask for all casks listed in homebrew.casks.

Type: submodule

Default: { }

Example:

{
  appdir = "~/Applications";
  require_sha = true;
}

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.appdir

Target location for Applications.

Homebrew’s default is /Applications.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.audio_unit_plugindir

Target location for Audio Unit Plugins.

Homebrew’s default is ~/Library/Audio/Plug-Ins/Components.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.colorpickerdir

Target location for Color Pickers.

Homebrew’s default is ~/Library/ColorPickers.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.dictionarydir

Target location for Dictionaries.

Homebrew’s default is ~/Library/Dictionaries.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.fontdir

Target location for Fonts.

Homebrew’s default is ~/Library/Fonts.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.input_methoddir

Target location for Input Methods.

Homebrew’s default is ~/Library/Input Methods.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.internet_plugindir

Target location for Internet Plugins.

Homebrew’s default is ~/Library/Internet Plug-Ins.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.language

Comma-separated list of language codes to prefer for cask installation. The first matching language is used, otherwise it reverts to the cask’s default language. The default value is the language of your system.

Type: null or string

Default: null

Example: "zh-TW"

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.mdimporterdir

Target location for Spotlight Plugins.

Homebrew’s default is ~/Library/Spotlight.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.no_binaries

Whether to disable linking of helper executables.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.no_quarantine

Whether to disable quarantining of downloads.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.prefpanedir

Target location for Preference Panes.

Homebrew’s default is ~/Library/PreferencePanes.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.qlplugindir

Target location for QuickLook Plugins.

Homebrew’s default is ~/Library/QuickLook.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.require_sha

Whether to require cask(s) to have a checksum.

Homebrew’s default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.screen_saverdir

Target location for Screen Savers.

Homebrew’s default is ~/Library/Screen Savers.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.servicedir

Target location for Services.

Homebrew’s default is ~/Library/Services.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.vst3_plugindir

Target location for VST3 Plugins.

Homebrew’s default is ~/Library/Audio/Plug-Ins/VST3.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.caskArgs.vst_plugindir

Target location for VST Plugins.

Homebrew’s default is ~/Library/Audio/Plug-Ins/VST.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.casks

List of Homebrew casks to install.

Casks defined as strings, e.g., "google-chrome", are a shorthand for:

{ name = "google-chrome"; }

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

Default: [ ]

Example:

# Adapted examples from https://github.com/Homebrew/homebrew-bundle#usage
[
  # `brew install --cask`
  "google-chrome"

  # `brew install --cask --appdir=~/my-apps/Applications`
  {
    name = "firefox";
    args = { appdir = "~/my-apps/Applications"; };
  }

  # always upgrade auto-updated or unversioned cask to latest version even if already installed
  {
    name = "opera";
    greedy = true;
  }
]

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.casks.*.args

Arguments passed to brew install --cask when installing this cask. See homebrew.caskArgs for the available options.

Type: null or (submodule)

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.casks.*.greedy

Whether to always upgrade this cask regardless of whether it’s unversioned or it updates itself.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.casks.*.name

The name of the cask to install.

Type: string

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.extraConfig

Extra lines to be added verbatim to the bottom of the generated Brewfile.

Type: strings concatenated with “\n”

Default: ""

Example:

''
  # 'brew cask install' only if '/usr/libexec/java_home --failfast' fails
  cask "java" unless system "/usr/libexec/java_home --failfast"
''

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.global

Options for configuring the behavior of Homebrew commands when you manually invoke them.

Type: submodule

Default: { }

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.global.autoUpdate

Whether to enable Homebrew to auto-update itself and all formulae when you manually invoke commands like brew install, brew upgrade, brew tap, and brew bundle [install].

Note that Homebrew auto-updates when you manually invoke commands like the ones mentioned above if it’s been more then 5 minutes since it last updated.

You may want to consider disabling this option if you have homebrew.onActivation.upgrade enabled, and homebrew.onActivation.autoUpdate disabled, if you want to ensure that your installed formulae will only be upgraded during nix-darwin system activation, after you’ve explicitly run brew update.

Implementation note: when disabled, this option sets the HOMEBREW_NO_AUTO_UPDATE environment variable, by adding it to environment.variables.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.global.brewfile

Whether to enable Homebrew to automatically use the Brewfile that this module generates in the Nix store, when you manually invoke brew bundle.

Enabling this option will change the default value of homebrew.global.lockfiles to false since, with this option enabled, brew bundle [install] will default to using the Brewfile that this module generates in the Nix store, unless you explicitly point it at another Brewfile using the --file flag. As a result, it will try to write the lockfile in the Nix store, and complain that it can’t (though the command will run successfully regardless).

Implementation note: when enabled, this option sets the HOMEBREW_BUNDLE_FILE environment variable to the path of the Brewfile that this module generates in the Nix store, by adding it to environment.variables.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.global.lockfiles

Whether to enable Homebrew to generate lockfiles when you manually invoke brew bundle [install].

This option will default to false if homebrew.global.brewfile is enabled since, with that option enabled, brew bundle [install] will default to using the Brewfile that this module generates in the Nix store, unless you explicitly point it at another Brewfile using the --file flag. As a result, it will try to write the lockfile in the Nix store, and complain that it can’t (though the command will run successfully regardless).

Implementation note: when disabled, this option sets the HOMEBREW_BUNDLE_NO_LOCK environment variable, by adding it to environment.variables.

Type: boolean

Default: !config.homebrew.global.brewfile

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.masApps

Applications to install from Mac App Store using mas.

When this option is used, "mas" is automatically added to homebrew.brews.

Note that you need to be signed into the Mac App Store for mas to successfully install and upgrade applications, and that unfortunately apps removed from this option will not be uninstalled automatically even if homebrew.onActivation.cleanup is set to "uninstall" or "zap" (this is currently a limitation of Homebrew Bundle).

For more information on mas see: github.com/mas-cli/mas.

Type: attribute set of positive integer, meaning >0

Default: { }

Example:

{
  "1Password for Safari" = 1569813296;
  Xcode = 497799835;
}

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.onActivation

Options for configuring the behavior of the brew bundle command that nix-darwin runs during system activation.

Type: submodule

Default: { }

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.onActivation.autoUpdate

Whether to enable Homebrew to auto-update itself and all formulae during nix-darwin system activation. The default is false so that repeated invocations of darwin-rebuild switch are idempotent.

Note that Homebrew auto-updates when it’s been more then 5 minutes since it last updated.

Although auto-updating is disabled by default during system activation, note that Homebrew will auto-update when you manually invoke certain Homebrew commands. To modify this behavior see homebrew.global.autoUpdate.

Implementation note: when disabled, this option sets the HOMEBREW_NO_AUTO_UPDATE environment variable when nix-darwin invokes brew bundle [install] during system activation.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.onActivation.cleanup

This option manages what happens to formulae installed by Homebrew, that aren’t present in the Brewfile generated by this module, during nix-darwin system activation.

When set to "none" (the default), formulae not present in the generated Brewfile are left installed.

When set to "uninstall", nix-darwin invokes brew bundle [install] with the --cleanup flag. This uninstalls all formulae not listed in generated Brewfile, i.e., brew uninstall is run for those formulae.

When set to "zap", nix-darwin invokes brew bundle [install] with the --cleanup --zap flags. This uninstalls all formulae not listed in the generated Brewfile, and if the formula is a cask, removes all files associated with that cask. In other words, brew uninstall --zap is run for all those formulae.

If you plan on exclusively using nix-darwin to manage formulae installed by Homebrew, you probably want to set this option to "uninstall" or "zap".

Type: one of “none”, “uninstall”, “zap”

Default: "none"

Example: "uninstall"

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.onActivation.extraFlags

Extra flags to pass to brew bundle [install] during nix-darwin system activation.

Type: list of string

Default: [ ]

Example:

[
  "--verbose"
]

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.onActivation.upgrade

Whether to enable Homebrew to upgrade outdated formulae and Mac App Store apps during nix-darwin system activation. The default is false so that repeated invocations of darwin-rebuild switch are idempotent.

Implementation note: when disabled, nix-darwin invokes brew bundle [install] with the --no-upgrade flag during system activation.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.taps

List of Homebrew formula repositories to tap.

Taps defined as strings, e.g., "user/repo", are a shorthand for:

{ name = "user/repo"; }

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

Default: [ ]

Example:

# Adapted examples from https://github.com/Homebrew/homebrew-bundle#usage
[
  # `brew tap`
  "homebrew/cask"

  # `brew tap` with custom Git URL and arguments
  {
    name = "user/tap-repo";
    clone_target = "https://user@bitbucket.org/user/homebrew-tap-repo.git";
    force_auto_update = true;
  }
]

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.taps.*.clone_target

Use this option to tap a formula repository from anywhere, using any transport protocol that git handles. When clone_target is specified, taps can be cloned from places other than GitHub and using protocols other than HTTPS, e.g., SSH, git, HTTP, FTP(S), rsync.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.taps.*.force_auto_update

Whether to auto-update the tap even if it is not hosted on GitHub. By default, only taps hosted on GitHub are auto-updated (for performance reasons).

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.taps.*.name

When clone_target is unspecified, this is the name of a formula repository to tap from GitHub using HTTPS. For example, "user/repo" will tap https://github.com/user/homebrew-repo.

Type: string

Example: "homebrew/cask-fonts"

Declared by:

<nix-darwin/modules/homebrew.nix>
homebrew.whalebrews

List of Docker images to install using whalebrew.

When this option is used, "whalebrew" is automatically added to homebrew.brews.

For more information on whalebrew see: github.com/whalebrew/whalebrew.

Type: list of string

Default: [ ]

Example:

[
  "whalebrew/wget"
]

Declared by:

<nix-darwin/modules/homebrew.nix>
launchd.agents

Definition of per-user launchd agents.

When a user logs in, a per-user launchd is started. It does the following:

  1. It loads the parameters for each launch-on-demand user agent from the property list files found in /System/Library/LaunchAgents, /Library/LaunchAgents, and the user’s individual Library/LaunchAgents directory.

  2. It registers the sockets and file descriptors requested by those user agents.

  3. It launches any user agents that requested to be running all the time.

  4. As requests for a particular service arrive, it launches the corresponding user agent and passes the request to it.

  5. When the user logs out, it sends a SIGTERM signal to all of the user agents that it started.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.command

Command executed as the service’s main process.

Type: string or path

Default: ""

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.environment

Environment variables passed to the service’s processes.

Type: attribute set of (string or list of string)

Default: { }

Example:

{
  LANG = "nl_NL.UTF-8";
  PATH = "/foo/bar/bin";
}

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.path

Packages added to the service’s PATH environment variable. Only the bin and subdirectories of each package is added.

Type: list of (path or string)

Default: [ ]

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.script

Shell commands executed as the service’s main process.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig

Each attribute in this set specifies an option for a key in the plist. https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html

Type: submodule

Default: { }

Example:

{
  KeepAlive = true;
  Program = "/run/current-system/sw/bin/nix-daemon";
}

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.AbandonProcessGroup

When a job dies, launchd kills any remaining processes with the same process group ID as the job. Setting this key to true disables that behavior.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Debug

This optional key specifies that launchd should adjust its log mask temporarily to LOG_DEBUG while dealing with this job.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Disabled

This optional key is used as a hint to launchctl(1) that it should not submit this job to launchd when loading a job or jobs. The value of this key does NOT reflect the current state of the job on the running system. If you wish to know whether a job is loaded in launchd, reading this key from a configuration file yourself is not a sufficient test. You should query launchd for the presence of the job using the launchctl(1) list subcommand or use the ServiceManagement framework’s SMJobCopyDictionary() method.

Note that as of Mac OS X v10.6, this key’s value in a configuration file conveys a default value, which is changed with the [-w] option of the launchctl(1) load and unload subcommands. These subcommands no longer modify the configuration file, so the value displayed in the configuration file is not necessarily the value that launchctl(1) will apply. See launchctl(1) for more information.

Please also be mindful that you should only use this key if the provided on-demand and KeepAlive criteria are insufficient to describe the conditions under which your job needs to run. The cost to have a job loaded in launchd is negligible, so there is no harm in loading a job which only runs once or very rarely.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.EnableGlobbing

This flag causes launchd to use the glob(3) mechanism to update the program arguments before invocation.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.EnableTransactions

This flag instructs launchd that the job promises to use vproc_transaction_begin(3) and vproc_transaction_end(3) to track outstanding transactions that need to be reconciled before the process can safely terminate. If no outstanding transactions are in progress, then launchd is free to send the SIGKILL signal.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.EnvironmentVariables

This optional key is used to specify additional environment variables to be set before running the job.

Type: null or (attribute set of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.ExitTimeOut

The amount of time launchd waits before sending a SIGKILL signal. The default value is 20 seconds. The value zero is interpreted as infinity.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.GroupName

This optional key specifies the group to run the job as. This key is only applicable when launchd is running as root. If UserName is set and GroupName is not, the the group will be set to the default group of the user.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits

Resource limits to be imposed on the job. These adjust variables set with setrlimit(2). The following keys apply:

Type: null or (submodule)

Default: null

Example:

{
  NumberOfFiles = 4096;
}

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.CPU

The maximum amount of cpu time (in seconds) to be used by each process.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.Core

The largest size (in bytes) core file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.Data

The maximum size (in bytes) of the data segment for a process; this defines how far a program may extend its break with the sbrk(2) system call.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.FileSize

The largest size (in bytes) file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.MemoryLock

The maximum size (in bytes) which a process may lock into memory using the mlock(2) function.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.NumberOfFiles

The maximum number of open files for this process. Setting this value in a system wide daemon will set the sysctl(3) kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.NumberOfProcesses

The maximum number of simultaneous processes for this user id. Setting this value in a system wide daemon will set the sysctl(3) kern.maxproc (SoftResourceLimits) or kern.maxprocperuid (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.ResidentSetSize

The maximum size (in bytes) to which a process’s resident set size may grow. This imposes a limit on the amount of physical memory to be given to a process; if memory is tight, the system will prefer to take memory from processes that are exceeding their declared resident set size.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.HardResourceLimits.Stack

The maximum size (in bytes) of the stack segment for a process; this defines how far a program’s stack segment may be extended. Stack extension is performed automatically by the system.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.InitGroups

This optional key specifies whether initgroups(3) should be called before running the job. The default is true in 10.5 and false in 10.4. This key will be ignored if the UserName key is not set.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.KeepAlive

This optional key is used to control whether your job is to be kept continuously running or to let demand and conditions control the invocation. The default is false and therefore only demand will start the job. The value may be set to true to unconditionally keep the job alive. Alternatively, a dictionary of conditions may be specified to selectively control whether launchd keeps a job alive or not. If multiple keys are provided, launchd ORs them, thus providing maximum flexibility to the job to refine the logic and stall if necessary. If launchd finds no reason to restart the job, it falls back on demand based invocation. Jobs that exit quickly and frequently when configured to be kept alive will be throttled to converve system resources.

Type: null or boolean or (submodule)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Label

This required key uniquely identifies the job to launchd.

Type: string

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.LaunchEvents

Specifies higher-level event types to be used as launch-on-demand event sources. Each sub-dictionary defines events for a particular event subsystem, such as “com.apple.iokit.matching”, which can be used to launch jobs based on the appearance of nodes in the IORegistry. Each dictionary within the sub-dictionary specifies an event descriptor that is specified to each event subsystem. With this key, the job promises to use the xpc_set_event_stream_handler(3) API to consume events. See xpc_events(3) for more details on event sources.

Type: null or (attribute set)

Default: null

Example:

{
  "com.apple.iokit.matching" = {
    "com.apple.usb.device" = {
      IOMatchLaunchStream = true;
      IOProviderClass = "IOUSBDevice";
      idProduct = "*";
      idVendor = "*";
    };
  };
}

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.LaunchOnlyOnce

This optional key specifies whether the job can only be run once and only once. In other words, if the job cannot be safely respawned without a full machine reboot, then set this key to be true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.LimitLoadFromHosts

This configuration file only applies to hosts NOT listed with this key. Note: One should set kern.hostname in sysctl.conf(5) for this feature to work reliably.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.LimitLoadToHosts

This configuration file only applies to the hosts listed with this key. Note: One should set kern.hostname in sysctl.conf(5) for this feature to work reliably.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.LimitLoadToSessionType

This configuration file only applies to sessions of the type specified. This key is used in concert with the -S flag to launchctl.

Type: null or string or list of string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.LowPriorityIO

This optional key specifies whether the kernel should consider this daemon to be low priority when doing file system I/O.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.MachServices

This optional key is used to specify Mach services to be registered with the Mach bootstrap sub-system. Each key in this dictionary should be the name of service to be advertised. The value of the key must be a boolean and set to true. Alternatively, a dictionary can be used instead of a simple true value.

Finally, for the job itself, the values will be replaced with Mach ports at the time of check-in with launchd.

Type: null or (attribute set of (boolean or (submodule)))

Default: null

Example:

{
  "org.nixos.service" = {
    ResetAtClose = true;
  };
}

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Nice

This optional key specifies what nice(3) value should be applied to the daemon.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.OnDemand

This key was used in Mac OS X 10.4 to control whether a job was kept alive or not. The default was true. This key has been deprecated and replaced in Mac OS X 10.5 and later with the more powerful KeepAlive option.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.ProcessType

This optional key describes, at a high level, the intended purpose of the job. The system will apply resource limits based on what kind of job it is. If left unspecified, the system will apply light resource limits to the job, throttling its CPU usage and I/O bandwidth. The following are valid values:

Background

Background jobs are generally processes that do work that was not directly requested by the user. The resource limits applied to Background jobs are intended to prevent them from disrupting the user experience.

Standard

Standard jobs are equivalent to no ProcessType being set.

Adaptive

Adaptive jobs move between the Background and Interactive classifications based on activity over XPC connections. See xpc_transaction_begin(3) for details.

Interactive

Interactive jobs run with the same resource limitations as apps, that is to say, none. Interactive jobs are critical to maintaining a responsive user experience, and this key should only be used if an app’s ability to be responsive depends on it, and cannot be made Adaptive.

Type: null or one of “Background”, “Standard”, “Adaptive”, “Interactive”

Default: null

Example: "Background"

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Program

This key maps to the first argument of execvp(3). If this key is missing, then the first element of the array of strings provided to the ProgramArguments will be used instead. This key is required in the absence of the ProgramArguments key.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.ProgramArguments

This key maps to the second argument of execvp(3). This key is required in the absence of the Program key. Please note: many people are confused by this key. Please read execvp(3) very carefully!

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.QueueDirectories

Much like the WatchPaths option, this key will watch the paths for modifications. The difference being that the job will only be started if the path is a directory and the directory is not empty.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.RootDirectory

This optional key is used to specify a directory to chroot(2) to before running the job.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.RunAtLoad

This optional key is used to control whether your job is launched once at the time the job is loaded. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.ServiceIPC

This optional key specifies whether the job participates in advanced communication with launchd. The default is false. This flag is incompatible with the inetdCompatibility key.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SessionCreate

This key specifies that the job should be spawned into a new security audit session rather than the default session for the context is belongs to. See auditon(2) for details.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets

This optional key is used to specify launch on demand sockets that can be used to let launchd know when to run the job. The job must check-in to get a copy of the file descriptors using APIs outlined in launch(3). The keys of the top level Sockets dictionary can be anything. They are meant for the application developer to use to differentiate which descriptors correspond to which application level protocols (e.g. http vs. ftp vs. DNS…). At check-in time, the value of each Sockets dictionary key will be an array of descriptors. Daemon/Agent writers should consider all descriptors of a given key to be to be effectively equivalent, even though each file descriptor likely represents a different networking protocol which conforms to the criteria specified in the job configuration file.

The parameters below are used as inputs to call getaddrinfo(3).

Type: null or (attribute set of (submodule))

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.Bonjour

This optional key can be used to request that the service be registered with the mDNSResponder(8). If the value is boolean, the service name is inferred from the SockServiceName.

Type: null or boolean or list of string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.MulticastGroup

This optional key can be used to request that the datagram socket join a multicast group. If the value is a hostname, then getaddrinfo(3) will be used to join the correct multicast address for a given socket family. If an explicit IPv4 or IPv6 address is given, it is required that the SockFamily family also be set, otherwise the results are undefined.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SecureSocketWithKey

This optional key is a variant of SockPathName. Instead of binding to a known path, a securely generated socket is created and the path is assigned to the environment variable that is inherited by all jobs spawned by launchd.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SockFamily

This optional key can be used to specifically request that “IPv4” or “IPv6” socket(s) be created.

Type: null or one of “IPv4”, “IPv6”

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SockNodeName

This optional key specifies the node to connect(2) or bind(2) to.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SockPassive

This optional key specifies whether listen(2) or connect(2) should be called on the created file descriptor. The default is true (“to listen”).

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SockPathMode

This optional key specifies the mode of the socket. Known bug: Property lists don’t support octal, so please convert the value to decimal.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SockPathName

This optional key implies SockFamily is set to “Unix”. It specifies the path to connect(2) or bind(2) to.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SockProtocol

This optional key specifies the protocol to be passed to socket(2). The only value understood by this key at the moment is “TCP”.

Type: null or value “TCP” (singular enum)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SockServiceName

This optional key specifies the service on the node to connect(2) or bind(2) to.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Sockets.<name>.SockType

This optional key tells launchctl what type of socket to create. The default is “stream” and other valid values for this key are “dgram” and “seqpacket” respectively.

Type: null or one of “stream”, “dgram”, “seqpacket”

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits

Resource limits to be imposed on the job. These adjust variables set with setrlimit(2). The following keys apply:

Type: null or (submodule)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.CPU

The maximum amount of cpu time (in seconds) to be used by each process.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.Core

The largest size (in bytes) core file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.Data

The maximum size (in bytes) of the data segment for a process; this defines how far a program may extend its break with the sbrk(2) system call.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.FileSize

The largest size (in bytes) file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.MemoryLock

The maximum size (in bytes) which a process may lock into memory using the mlock(2) function.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.NumberOfFiles

The maximum number of open files for this process. Setting this value in a system wide daemon will set the sysctl(3) kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.NumberOfProcesses

The maximum number of simultaneous processes for this user id. Setting this value in a system wide daemon will set the sysctl(3) kern.maxproc (SoftResourceLimits) or kern.maxprocperuid (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.ResidentSetSize

The maximum size (in bytes) to which a process’s resident set size may grow. This imposes a limit on the amount of physical memory to be given to a process; if memory is tight, the system will prefer to take memory from processes that are exceeding their declared resident set size.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.SoftResourceLimits.Stack

The maximum size (in bytes) of the stack segment for a process; this defines how far a program’s stack segment may be extended. Stack extension is performed automatically by the system.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StandardErrorPath

This optional key specifies what file should be used for data being sent to stderr when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StandardInPath

This optional key specifies what file should be used for data being supplied to stdin when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StandardOutPath

This optional key specifies what file should be used for data being sent to stdout when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StartCalendarInterval

This optional key causes the job to be started every calendar interval as specified. Missing arguments are considered to be wildcard. The semantics are much like crontab(5). Unlike cron which skips job invocations when the computer is asleep, launchd will start the job the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep.

Type: null or (list of (submodule))

Default: null

Example:

[
  {
    Hour = 2;
    Minute = 30;
  }
]

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StartCalendarInterval.*.Day

The day on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StartCalendarInterval.*.Hour

The hour on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StartCalendarInterval.*.Minute

The minute on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StartCalendarInterval.*.Month

The month on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StartCalendarInterval.*.Weekday

The weekday on which this job will be run (0 and 7 are Sunday).

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StartInterval

This optional key causes the job to be started every N seconds. If the system is asleep, the job will be started the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.StartOnMount

This optional key causes the job to be started every time a filesystem is mounted.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.ThrottleInterval

This key lets one override the default throttling policy imposed on jobs by launchd. The value is in seconds, and by default, jobs will not be spawned more than once every 10 seconds. The principle behind this is that jobs should linger around just in case they are needed again in the near future. This not only reduces the latency of responses, but it encourages developers to amortize the cost of program invocation.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.TimeOut

The recommended idle time out (in seconds) to pass to the job. If no value is specified, a default time out will be supplied by launchd for use by the job at check in time.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.Umask

This optional key specifies what value should be passed to umask(2) before running the job. Known bug: Property lists don’t support octal, so please convert the value to decimal.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.UserName

This optional key specifies the user to run the job as. This key is only applicable when launchd is running as root.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.WaitForDebugger

This optional key specifies that launchd should instruct the kernel to have the job wait for a debugger to attach before any code in the job is executed.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.WatchPaths

This optional key causes the job to be started if any one of the listed paths are modified.

Type: null or (list of path)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.WorkingDirectory

This optional key is used to specify a directory to chdir(2) to before running the job.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.inetdCompatibility

The presence of this key specifies that the daemon expects to be run as if it were launched from inetd.

Type: null or (submodule)

Default: null

Example:

{
  Wait = true;
}

Declared by:

<nix-darwin/modules/launchd>
launchd.agents.<name>.serviceConfig.inetdCompatibility.Wait

This flag corresponds to the “wait” or “nowait” option of inetd. If true, then the listening socket is passed via the standard in/out/error file descriptors. If false, then accept(2) is called on behalf of the job, and the result is passed via the standard in/out/error descriptors.

Type: null or boolean or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons

Definition of launchd daemons.

After the system is booted and the kernel is running, launchd is run to finish the system initialization. As part of that initialization, it goes through the following steps:

  1. It loads the parameters for each launch-on-demand system-level daemon from the property list files found in /System/Library/LaunchDaemons/ and /Library/LaunchDaemons/.

  2. It registers the sockets and file descriptors requested by those daemons.

  3. It launches any daemons that requested to be running all the time.

  4. As requests for a particular service arrive, it launches the corresponding daemon and passes the request to it.

  5. When the system shuts down, it sends a SIGTERM signal to all of the daemons that it started.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.command

Command executed as the service’s main process.

Type: string or path

Default: ""

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.environment

Environment variables passed to the service’s processes.

Type: attribute set of (string or list of string)

Default: { }

Example:

{
  LANG = "nl_NL.UTF-8";
  PATH = "/foo/bar/bin";
}

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.path

Packages added to the service’s PATH environment variable. Only the bin and subdirectories of each package is added.

Type: list of (path or string)

Default: [ ]

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.script

Shell commands executed as the service’s main process.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig

Each attribute in this set specifies an option for a key in the plist. https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html

Type: submodule

Default: { }

Example:

{
  KeepAlive = true;
  Program = "/run/current-system/sw/bin/nix-daemon";
}

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.AbandonProcessGroup

When a job dies, launchd kills any remaining processes with the same process group ID as the job. Setting this key to true disables that behavior.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Debug

This optional key specifies that launchd should adjust its log mask temporarily to LOG_DEBUG while dealing with this job.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Disabled

This optional key is used as a hint to launchctl(1) that it should not submit this job to launchd when loading a job or jobs. The value of this key does NOT reflect the current state of the job on the running system. If you wish to know whether a job is loaded in launchd, reading this key from a configuration file yourself is not a sufficient test. You should query launchd for the presence of the job using the launchctl(1) list subcommand or use the ServiceManagement framework’s SMJobCopyDictionary() method.

Note that as of Mac OS X v10.6, this key’s value in a configuration file conveys a default value, which is changed with the [-w] option of the launchctl(1) load and unload subcommands. These subcommands no longer modify the configuration file, so the value displayed in the configuration file is not necessarily the value that launchctl(1) will apply. See launchctl(1) for more information.

Please also be mindful that you should only use this key if the provided on-demand and KeepAlive criteria are insufficient to describe the conditions under which your job needs to run. The cost to have a job loaded in launchd is negligible, so there is no harm in loading a job which only runs once or very rarely.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.EnableGlobbing

This flag causes launchd to use the glob(3) mechanism to update the program arguments before invocation.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.EnableTransactions

This flag instructs launchd that the job promises to use vproc_transaction_begin(3) and vproc_transaction_end(3) to track outstanding transactions that need to be reconciled before the process can safely terminate. If no outstanding transactions are in progress, then launchd is free to send the SIGKILL signal.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.EnvironmentVariables

This optional key is used to specify additional environment variables to be set before running the job.

Type: null or (attribute set of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.ExitTimeOut

The amount of time launchd waits before sending a SIGKILL signal. The default value is 20 seconds. The value zero is interpreted as infinity.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.GroupName

This optional key specifies the group to run the job as. This key is only applicable when launchd is running as root. If UserName is set and GroupName is not, the the group will be set to the default group of the user.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits

Resource limits to be imposed on the job. These adjust variables set with setrlimit(2). The following keys apply:

Type: null or (submodule)

Default: null

Example:

{
  NumberOfFiles = 4096;
}

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.CPU

The maximum amount of cpu time (in seconds) to be used by each process.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.Core

The largest size (in bytes) core file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.Data

The maximum size (in bytes) of the data segment for a process; this defines how far a program may extend its break with the sbrk(2) system call.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.FileSize

The largest size (in bytes) file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.MemoryLock

The maximum size (in bytes) which a process may lock into memory using the mlock(2) function.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.NumberOfFiles

The maximum number of open files for this process. Setting this value in a system wide daemon will set the sysctl(3) kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.NumberOfProcesses

The maximum number of simultaneous processes for this user id. Setting this value in a system wide daemon will set the sysctl(3) kern.maxproc (SoftResourceLimits) or kern.maxprocperuid (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.ResidentSetSize

The maximum size (in bytes) to which a process’s resident set size may grow. This imposes a limit on the amount of physical memory to be given to a process; if memory is tight, the system will prefer to take memory from processes that are exceeding their declared resident set size.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.HardResourceLimits.Stack

The maximum size (in bytes) of the stack segment for a process; this defines how far a program’s stack segment may be extended. Stack extension is performed automatically by the system.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.InitGroups

This optional key specifies whether initgroups(3) should be called before running the job. The default is true in 10.5 and false in 10.4. This key will be ignored if the UserName key is not set.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.KeepAlive

This optional key is used to control whether your job is to be kept continuously running or to let demand and conditions control the invocation. The default is false and therefore only demand will start the job. The value may be set to true to unconditionally keep the job alive. Alternatively, a dictionary of conditions may be specified to selectively control whether launchd keeps a job alive or not. If multiple keys are provided, launchd ORs them, thus providing maximum flexibility to the job to refine the logic and stall if necessary. If launchd finds no reason to restart the job, it falls back on demand based invocation. Jobs that exit quickly and frequently when configured to be kept alive will be throttled to converve system resources.

Type: null or boolean or (submodule)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Label

This required key uniquely identifies the job to launchd.

Type: string

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.LaunchEvents

Specifies higher-level event types to be used as launch-on-demand event sources. Each sub-dictionary defines events for a particular event subsystem, such as “com.apple.iokit.matching”, which can be used to launch jobs based on the appearance of nodes in the IORegistry. Each dictionary within the sub-dictionary specifies an event descriptor that is specified to each event subsystem. With this key, the job promises to use the xpc_set_event_stream_handler(3) API to consume events. See xpc_events(3) for more details on event sources.

Type: null or (attribute set)

Default: null

Example:

{
  "com.apple.iokit.matching" = {
    "com.apple.usb.device" = {
      IOMatchLaunchStream = true;
      IOProviderClass = "IOUSBDevice";
      idProduct = "*";
      idVendor = "*";
    };
  };
}

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.LaunchOnlyOnce

This optional key specifies whether the job can only be run once and only once. In other words, if the job cannot be safely respawned without a full machine reboot, then set this key to be true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.LimitLoadFromHosts

This configuration file only applies to hosts NOT listed with this key. Note: One should set kern.hostname in sysctl.conf(5) for this feature to work reliably.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.LimitLoadToHosts

This configuration file only applies to the hosts listed with this key. Note: One should set kern.hostname in sysctl.conf(5) for this feature to work reliably.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.LimitLoadToSessionType

This configuration file only applies to sessions of the type specified. This key is used in concert with the -S flag to launchctl.

Type: null or string or list of string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.LowPriorityIO

This optional key specifies whether the kernel should consider this daemon to be low priority when doing file system I/O.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.MachServices

This optional key is used to specify Mach services to be registered with the Mach bootstrap sub-system. Each key in this dictionary should be the name of service to be advertised. The value of the key must be a boolean and set to true. Alternatively, a dictionary can be used instead of a simple true value.

Finally, for the job itself, the values will be replaced with Mach ports at the time of check-in with launchd.

Type: null or (attribute set of (boolean or (submodule)))

Default: null

Example:

{
  "org.nixos.service" = {
    ResetAtClose = true;
  };
}

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Nice

This optional key specifies what nice(3) value should be applied to the daemon.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.OnDemand

This key was used in Mac OS X 10.4 to control whether a job was kept alive or not. The default was true. This key has been deprecated and replaced in Mac OS X 10.5 and later with the more powerful KeepAlive option.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.ProcessType

This optional key describes, at a high level, the intended purpose of the job. The system will apply resource limits based on what kind of job it is. If left unspecified, the system will apply light resource limits to the job, throttling its CPU usage and I/O bandwidth. The following are valid values:

Background

Background jobs are generally processes that do work that was not directly requested by the user. The resource limits applied to Background jobs are intended to prevent them from disrupting the user experience.

Standard

Standard jobs are equivalent to no ProcessType being set.

Adaptive

Adaptive jobs move between the Background and Interactive classifications based on activity over XPC connections. See xpc_transaction_begin(3) for details.

Interactive

Interactive jobs run with the same resource limitations as apps, that is to say, none. Interactive jobs are critical to maintaining a responsive user experience, and this key should only be used if an app’s ability to be responsive depends on it, and cannot be made Adaptive.

Type: null or one of “Background”, “Standard”, “Adaptive”, “Interactive”

Default: null

Example: "Background"

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Program

This key maps to the first argument of execvp(3). If this key is missing, then the first element of the array of strings provided to the ProgramArguments will be used instead. This key is required in the absence of the ProgramArguments key.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.ProgramArguments

This key maps to the second argument of execvp(3). This key is required in the absence of the Program key. Please note: many people are confused by this key. Please read execvp(3) very carefully!

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.QueueDirectories

Much like the WatchPaths option, this key will watch the paths for modifications. The difference being that the job will only be started if the path is a directory and the directory is not empty.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.RootDirectory

This optional key is used to specify a directory to chroot(2) to before running the job.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.RunAtLoad

This optional key is used to control whether your job is launched once at the time the job is loaded. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.ServiceIPC

This optional key specifies whether the job participates in advanced communication with launchd. The default is false. This flag is incompatible with the inetdCompatibility key.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SessionCreate

This key specifies that the job should be spawned into a new security audit session rather than the default session for the context is belongs to. See auditon(2) for details.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets

This optional key is used to specify launch on demand sockets that can be used to let launchd know when to run the job. The job must check-in to get a copy of the file descriptors using APIs outlined in launch(3). The keys of the top level Sockets dictionary can be anything. They are meant for the application developer to use to differentiate which descriptors correspond to which application level protocols (e.g. http vs. ftp vs. DNS…). At check-in time, the value of each Sockets dictionary key will be an array of descriptors. Daemon/Agent writers should consider all descriptors of a given key to be to be effectively equivalent, even though each file descriptor likely represents a different networking protocol which conforms to the criteria specified in the job configuration file.

The parameters below are used as inputs to call getaddrinfo(3).

Type: null or (attribute set of (submodule))

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.Bonjour

This optional key can be used to request that the service be registered with the mDNSResponder(8). If the value is boolean, the service name is inferred from the SockServiceName.

Type: null or boolean or list of string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.MulticastGroup

This optional key can be used to request that the datagram socket join a multicast group. If the value is a hostname, then getaddrinfo(3) will be used to join the correct multicast address for a given socket family. If an explicit IPv4 or IPv6 address is given, it is required that the SockFamily family also be set, otherwise the results are undefined.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SecureSocketWithKey

This optional key is a variant of SockPathName. Instead of binding to a known path, a securely generated socket is created and the path is assigned to the environment variable that is inherited by all jobs spawned by launchd.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SockFamily

This optional key can be used to specifically request that “IPv4” or “IPv6” socket(s) be created.

Type: null or one of “IPv4”, “IPv6”

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SockNodeName

This optional key specifies the node to connect(2) or bind(2) to.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SockPassive

This optional key specifies whether listen(2) or connect(2) should be called on the created file descriptor. The default is true (“to listen”).

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SockPathMode

This optional key specifies the mode of the socket. Known bug: Property lists don’t support octal, so please convert the value to decimal.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SockPathName

This optional key implies SockFamily is set to “Unix”. It specifies the path to connect(2) or bind(2) to.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SockProtocol

This optional key specifies the protocol to be passed to socket(2). The only value understood by this key at the moment is “TCP”.

Type: null or value “TCP” (singular enum)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SockServiceName

This optional key specifies the service on the node to connect(2) or bind(2) to.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Sockets.<name>.SockType

This optional key tells launchctl what type of socket to create. The default is “stream” and other valid values for this key are “dgram” and “seqpacket” respectively.

Type: null or one of “stream”, “dgram”, “seqpacket”

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits

Resource limits to be imposed on the job. These adjust variables set with setrlimit(2). The following keys apply:

Type: null or (submodule)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.CPU

The maximum amount of cpu time (in seconds) to be used by each process.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.Core

The largest size (in bytes) core file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.Data

The maximum size (in bytes) of the data segment for a process; this defines how far a program may extend its break with the sbrk(2) system call.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.FileSize

The largest size (in bytes) file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.MemoryLock

The maximum size (in bytes) which a process may lock into memory using the mlock(2) function.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.NumberOfFiles

The maximum number of open files for this process. Setting this value in a system wide daemon will set the sysctl(3) kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.NumberOfProcesses

The maximum number of simultaneous processes for this user id. Setting this value in a system wide daemon will set the sysctl(3) kern.maxproc (SoftResourceLimits) or kern.maxprocperuid (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.ResidentSetSize

The maximum size (in bytes) to which a process’s resident set size may grow. This imposes a limit on the amount of physical memory to be given to a process; if memory is tight, the system will prefer to take memory from processes that are exceeding their declared resident set size.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.SoftResourceLimits.Stack

The maximum size (in bytes) of the stack segment for a process; this defines how far a program’s stack segment may be extended. Stack extension is performed automatically by the system.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StandardErrorPath

This optional key specifies what file should be used for data being sent to stderr when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StandardInPath

This optional key specifies what file should be used for data being supplied to stdin when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StandardOutPath

This optional key specifies what file should be used for data being sent to stdout when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StartCalendarInterval

This optional key causes the job to be started every calendar interval as specified. Missing arguments are considered to be wildcard. The semantics are much like crontab(5). Unlike cron which skips job invocations when the computer is asleep, launchd will start the job the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep.

Type: null or (list of (submodule))

Default: null

Example:

[
  {
    Hour = 2;
    Minute = 30;
  }
]

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StartCalendarInterval.*.Day

The day on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StartCalendarInterval.*.Hour

The hour on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StartCalendarInterval.*.Minute

The minute on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StartCalendarInterval.*.Month

The month on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StartCalendarInterval.*.Weekday

The weekday on which this job will be run (0 and 7 are Sunday).

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StartInterval

This optional key causes the job to be started every N seconds. If the system is asleep, the job will be started the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.StartOnMount

This optional key causes the job to be started every time a filesystem is mounted.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.ThrottleInterval

This key lets one override the default throttling policy imposed on jobs by launchd. The value is in seconds, and by default, jobs will not be spawned more than once every 10 seconds. The principle behind this is that jobs should linger around just in case they are needed again in the near future. This not only reduces the latency of responses, but it encourages developers to amortize the cost of program invocation.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.TimeOut

The recommended idle time out (in seconds) to pass to the job. If no value is specified, a default time out will be supplied by launchd for use by the job at check in time.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.Umask

This optional key specifies what value should be passed to umask(2) before running the job. Known bug: Property lists don’t support octal, so please convert the value to decimal.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.UserName

This optional key specifies the user to run the job as. This key is only applicable when launchd is running as root.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.WaitForDebugger

This optional key specifies that launchd should instruct the kernel to have the job wait for a debugger to attach before any code in the job is executed.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.WatchPaths

This optional key causes the job to be started if any one of the listed paths are modified.

Type: null or (list of path)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.WorkingDirectory

This optional key is used to specify a directory to chdir(2) to before running the job.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.inetdCompatibility

The presence of this key specifies that the daemon expects to be run as if it were launched from inetd.

Type: null or (submodule)

Default: null

Example:

{
  Wait = true;
}

Declared by:

<nix-darwin/modules/launchd>
launchd.daemons.<name>.serviceConfig.inetdCompatibility.Wait

This flag corresponds to the “wait” or “nowait” option of inetd. If true, then the listening socket is passed via the standard in/out/error file descriptors. If false, then accept(2) is called on behalf of the job, and the result is passed via the standard in/out/error descriptors.

Type: null or boolean or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.envVariables

A set of environment variables to be set on all future processes launched by launchd in the caller’s context. The value of each variable can be either a string or a list of strings. The latter is concatenated, interspersed with colon characters.

Type: attribute set of (string or list of string)

Default: { }

Example:

{
  LANG = "nl_NL.UTF-8";
}

Declared by:

<nix-darwin/modules/launchd>
launchd.labelPrefix

The default prefix of the service label. Individual services can override this by setting the Label attribute.

Type: string

Default: "org.nixos"

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents

Definition of per-user launchd agents.

When a user logs in, a per-user launchd is started. It does the following:

  1. It loads the parameters for each launch-on-demand user agent from the property list files found in /System/Library/LaunchAgents, /Library/LaunchAgents, and the user’s individual Library/LaunchAgents directory.

  2. It registers the sockets and file descriptors requested by those user agents.

  3. It launches any user agents that requested to be running all the time.

  4. As requests for a particular service arrive, it launches the corresponding user agent and passes the request to it.

  5. When the user logs out, it sends a SIGTERM signal to all of the user agents that it started.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.command

Command executed as the service’s main process.

Type: string or path

Default: ""

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.environment

Environment variables passed to the service’s processes.

Type: attribute set of (string or list of string)

Default: { }

Example:

{
  LANG = "nl_NL.UTF-8";
  PATH = "/foo/bar/bin";
}

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.path

Packages added to the service’s PATH environment variable. Only the bin and subdirectories of each package is added.

Type: list of (path or string)

Default: [ ]

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.script

Shell commands executed as the service’s main process.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig

Each attribute in this set specifies an option for a key in the plist. https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html

Type: submodule

Default: { }

Example:

{
  KeepAlive = true;
  Program = "/run/current-system/sw/bin/nix-daemon";
}

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.AbandonProcessGroup

When a job dies, launchd kills any remaining processes with the same process group ID as the job. Setting this key to true disables that behavior.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Debug

This optional key specifies that launchd should adjust its log mask temporarily to LOG_DEBUG while dealing with this job.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Disabled

This optional key is used as a hint to launchctl(1) that it should not submit this job to launchd when loading a job or jobs. The value of this key does NOT reflect the current state of the job on the running system. If you wish to know whether a job is loaded in launchd, reading this key from a configuration file yourself is not a sufficient test. You should query launchd for the presence of the job using the launchctl(1) list subcommand or use the ServiceManagement framework’s SMJobCopyDictionary() method.

Note that as of Mac OS X v10.6, this key’s value in a configuration file conveys a default value, which is changed with the [-w] option of the launchctl(1) load and unload subcommands. These subcommands no longer modify the configuration file, so the value displayed in the configuration file is not necessarily the value that launchctl(1) will apply. See launchctl(1) for more information.

Please also be mindful that you should only use this key if the provided on-demand and KeepAlive criteria are insufficient to describe the conditions under which your job needs to run. The cost to have a job loaded in launchd is negligible, so there is no harm in loading a job which only runs once or very rarely.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.EnableGlobbing

This flag causes launchd to use the glob(3) mechanism to update the program arguments before invocation.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.EnableTransactions

This flag instructs launchd that the job promises to use vproc_transaction_begin(3) and vproc_transaction_end(3) to track outstanding transactions that need to be reconciled before the process can safely terminate. If no outstanding transactions are in progress, then launchd is free to send the SIGKILL signal.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.EnvironmentVariables

This optional key is used to specify additional environment variables to be set before running the job.

Type: null or (attribute set of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.ExitTimeOut

The amount of time launchd waits before sending a SIGKILL signal. The default value is 20 seconds. The value zero is interpreted as infinity.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.GroupName

This optional key specifies the group to run the job as. This key is only applicable when launchd is running as root. If UserName is set and GroupName is not, the the group will be set to the default group of the user.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits

Resource limits to be imposed on the job. These adjust variables set with setrlimit(2). The following keys apply:

Type: null or (submodule)

Default: null

Example:

{
  NumberOfFiles = 4096;
}

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.CPU

The maximum amount of cpu time (in seconds) to be used by each process.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.Core

The largest size (in bytes) core file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.Data

The maximum size (in bytes) of the data segment for a process; this defines how far a program may extend its break with the sbrk(2) system call.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.FileSize

The largest size (in bytes) file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.MemoryLock

The maximum size (in bytes) which a process may lock into memory using the mlock(2) function.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.NumberOfFiles

The maximum number of open files for this process. Setting this value in a system wide daemon will set the sysctl(3) kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.NumberOfProcesses

The maximum number of simultaneous processes for this user id. Setting this value in a system wide daemon will set the sysctl(3) kern.maxproc (SoftResourceLimits) or kern.maxprocperuid (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.ResidentSetSize

The maximum size (in bytes) to which a process’s resident set size may grow. This imposes a limit on the amount of physical memory to be given to a process; if memory is tight, the system will prefer to take memory from processes that are exceeding their declared resident set size.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.HardResourceLimits.Stack

The maximum size (in bytes) of the stack segment for a process; this defines how far a program’s stack segment may be extended. Stack extension is performed automatically by the system.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.InitGroups

This optional key specifies whether initgroups(3) should be called before running the job. The default is true in 10.5 and false in 10.4. This key will be ignored if the UserName key is not set.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.KeepAlive

This optional key is used to control whether your job is to be kept continuously running or to let demand and conditions control the invocation. The default is false and therefore only demand will start the job. The value may be set to true to unconditionally keep the job alive. Alternatively, a dictionary of conditions may be specified to selectively control whether launchd keeps a job alive or not. If multiple keys are provided, launchd ORs them, thus providing maximum flexibility to the job to refine the logic and stall if necessary. If launchd finds no reason to restart the job, it falls back on demand based invocation. Jobs that exit quickly and frequently when configured to be kept alive will be throttled to converve system resources.

Type: null or boolean or (submodule)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Label

This required key uniquely identifies the job to launchd.

Type: string

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.LaunchEvents

Specifies higher-level event types to be used as launch-on-demand event sources. Each sub-dictionary defines events for a particular event subsystem, such as “com.apple.iokit.matching”, which can be used to launch jobs based on the appearance of nodes in the IORegistry. Each dictionary within the sub-dictionary specifies an event descriptor that is specified to each event subsystem. With this key, the job promises to use the xpc_set_event_stream_handler(3) API to consume events. See xpc_events(3) for more details on event sources.

Type: null or (attribute set)

Default: null

Example:

{
  "com.apple.iokit.matching" = {
    "com.apple.usb.device" = {
      IOMatchLaunchStream = true;
      IOProviderClass = "IOUSBDevice";
      idProduct = "*";
      idVendor = "*";
    };
  };
}

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.LaunchOnlyOnce

This optional key specifies whether the job can only be run once and only once. In other words, if the job cannot be safely respawned without a full machine reboot, then set this key to be true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.LimitLoadFromHosts

This configuration file only applies to hosts NOT listed with this key. Note: One should set kern.hostname in sysctl.conf(5) for this feature to work reliably.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.LimitLoadToHosts

This configuration file only applies to the hosts listed with this key. Note: One should set kern.hostname in sysctl.conf(5) for this feature to work reliably.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.LimitLoadToSessionType

This configuration file only applies to sessions of the type specified. This key is used in concert with the -S flag to launchctl.

Type: null or string or list of string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.LowPriorityIO

This optional key specifies whether the kernel should consider this daemon to be low priority when doing file system I/O.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.MachServices

This optional key is used to specify Mach services to be registered with the Mach bootstrap sub-system. Each key in this dictionary should be the name of service to be advertised. The value of the key must be a boolean and set to true. Alternatively, a dictionary can be used instead of a simple true value.

Finally, for the job itself, the values will be replaced with Mach ports at the time of check-in with launchd.

Type: null or (attribute set of (boolean or (submodule)))

Default: null

Example:

{
  "org.nixos.service" = {
    ResetAtClose = true;
  };
}

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Nice

This optional key specifies what nice(3) value should be applied to the daemon.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.OnDemand

This key was used in Mac OS X 10.4 to control whether a job was kept alive or not. The default was true. This key has been deprecated and replaced in Mac OS X 10.5 and later with the more powerful KeepAlive option.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.ProcessType

This optional key describes, at a high level, the intended purpose of the job. The system will apply resource limits based on what kind of job it is. If left unspecified, the system will apply light resource limits to the job, throttling its CPU usage and I/O bandwidth. The following are valid values:

Background

Background jobs are generally processes that do work that was not directly requested by the user. The resource limits applied to Background jobs are intended to prevent them from disrupting the user experience.

Standard

Standard jobs are equivalent to no ProcessType being set.

Adaptive

Adaptive jobs move between the Background and Interactive classifications based on activity over XPC connections. See xpc_transaction_begin(3) for details.

Interactive

Interactive jobs run with the same resource limitations as apps, that is to say, none. Interactive jobs are critical to maintaining a responsive user experience, and this key should only be used if an app’s ability to be responsive depends on it, and cannot be made Adaptive.

Type: null or one of “Background”, “Standard”, “Adaptive”, “Interactive”

Default: null

Example: "Background"

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Program

This key maps to the first argument of execvp(3). If this key is missing, then the first element of the array of strings provided to the ProgramArguments will be used instead. This key is required in the absence of the ProgramArguments key.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.ProgramArguments

This key maps to the second argument of execvp(3). This key is required in the absence of the Program key. Please note: many people are confused by this key. Please read execvp(3) very carefully!

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.QueueDirectories

Much like the WatchPaths option, this key will watch the paths for modifications. The difference being that the job will only be started if the path is a directory and the directory is not empty.

Type: null or (list of string)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.RootDirectory

This optional key is used to specify a directory to chroot(2) to before running the job.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.RunAtLoad

This optional key is used to control whether your job is launched once at the time the job is loaded. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.ServiceIPC

This optional key specifies whether the job participates in advanced communication with launchd. The default is false. This flag is incompatible with the inetdCompatibility key.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SessionCreate

This key specifies that the job should be spawned into a new security audit session rather than the default session for the context is belongs to. See auditon(2) for details.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets

This optional key is used to specify launch on demand sockets that can be used to let launchd know when to run the job. The job must check-in to get a copy of the file descriptors using APIs outlined in launch(3). The keys of the top level Sockets dictionary can be anything. They are meant for the application developer to use to differentiate which descriptors correspond to which application level protocols (e.g. http vs. ftp vs. DNS…). At check-in time, the value of each Sockets dictionary key will be an array of descriptors. Daemon/Agent writers should consider all descriptors of a given key to be to be effectively equivalent, even though each file descriptor likely represents a different networking protocol which conforms to the criteria specified in the job configuration file.

The parameters below are used as inputs to call getaddrinfo(3).

Type: null or (attribute set of (submodule))

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.Bonjour

This optional key can be used to request that the service be registered with the mDNSResponder(8). If the value is boolean, the service name is inferred from the SockServiceName.

Type: null or boolean or list of string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.MulticastGroup

This optional key can be used to request that the datagram socket join a multicast group. If the value is a hostname, then getaddrinfo(3) will be used to join the correct multicast address for a given socket family. If an explicit IPv4 or IPv6 address is given, it is required that the SockFamily family also be set, otherwise the results are undefined.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SecureSocketWithKey

This optional key is a variant of SockPathName. Instead of binding to a known path, a securely generated socket is created and the path is assigned to the environment variable that is inherited by all jobs spawned by launchd.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SockFamily

This optional key can be used to specifically request that “IPv4” or “IPv6” socket(s) be created.

Type: null or one of “IPv4”, “IPv6”

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SockNodeName

This optional key specifies the node to connect(2) or bind(2) to.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SockPassive

This optional key specifies whether listen(2) or connect(2) should be called on the created file descriptor. The default is true (“to listen”).

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SockPathMode

This optional key specifies the mode of the socket. Known bug: Property lists don’t support octal, so please convert the value to decimal.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SockPathName

This optional key implies SockFamily is set to “Unix”. It specifies the path to connect(2) or bind(2) to.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SockProtocol

This optional key specifies the protocol to be passed to socket(2). The only value understood by this key at the moment is “TCP”.

Type: null or value “TCP” (singular enum)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SockServiceName

This optional key specifies the service on the node to connect(2) or bind(2) to.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Sockets.<name>.SockType

This optional key tells launchctl what type of socket to create. The default is “stream” and other valid values for this key are “dgram” and “seqpacket” respectively.

Type: null or one of “stream”, “dgram”, “seqpacket”

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits

Resource limits to be imposed on the job. These adjust variables set with setrlimit(2). The following keys apply:

Type: null or (submodule)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.CPU

The maximum amount of cpu time (in seconds) to be used by each process.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.Core

The largest size (in bytes) core file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.Data

The maximum size (in bytes) of the data segment for a process; this defines how far a program may extend its break with the sbrk(2) system call.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.FileSize

The largest size (in bytes) file that may be created.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.MemoryLock

The maximum size (in bytes) which a process may lock into memory using the mlock(2) function.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.NumberOfFiles

The maximum number of open files for this process. Setting this value in a system wide daemon will set the sysctl(3) kern.maxfiles (SoftResourceLimits) or kern.maxfilesperproc (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.NumberOfProcesses

The maximum number of simultaneous processes for this user id. Setting this value in a system wide daemon will set the sysctl(3) kern.maxproc (SoftResourceLimits) or kern.maxprocperuid (HardResourceLimits) value in addition to the setrlimit(2) values.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.ResidentSetSize

The maximum size (in bytes) to which a process’s resident set size may grow. This imposes a limit on the amount of physical memory to be given to a process; if memory is tight, the system will prefer to take memory from processes that are exceeding their declared resident set size.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.SoftResourceLimits.Stack

The maximum size (in bytes) of the stack segment for a process; this defines how far a program’s stack segment may be extended. Stack extension is performed automatically by the system.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StandardErrorPath

This optional key specifies what file should be used for data being sent to stderr when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StandardInPath

This optional key specifies what file should be used for data being supplied to stdin when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StandardOutPath

This optional key specifies what file should be used for data being sent to stdout when using stdio(3).

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StartCalendarInterval

This optional key causes the job to be started every calendar interval as specified. Missing arguments are considered to be wildcard. The semantics are much like crontab(5). Unlike cron which skips job invocations when the computer is asleep, launchd will start the job the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep.

Type: null or (list of (submodule))

Default: null

Example:

[
  {
    Hour = 2;
    Minute = 30;
  }
]

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StartCalendarInterval.*.Day

The day on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StartCalendarInterval.*.Hour

The hour on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StartCalendarInterval.*.Minute

The minute on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StartCalendarInterval.*.Month

The month on which this job will be run.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StartCalendarInterval.*.Weekday

The weekday on which this job will be run (0 and 7 are Sunday).

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StartInterval

This optional key causes the job to be started every N seconds. If the system is asleep, the job will be started the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.StartOnMount

This optional key causes the job to be started every time a filesystem is mounted.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.ThrottleInterval

This key lets one override the default throttling policy imposed on jobs by launchd. The value is in seconds, and by default, jobs will not be spawned more than once every 10 seconds. The principle behind this is that jobs should linger around just in case they are needed again in the near future. This not only reduces the latency of responses, but it encourages developers to amortize the cost of program invocation.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.TimeOut

The recommended idle time out (in seconds) to pass to the job. If no value is specified, a default time out will be supplied by launchd for use by the job at check in time.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.Umask

This optional key specifies what value should be passed to umask(2) before running the job. Known bug: Property lists don’t support octal, so please convert the value to decimal.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.UserName

This optional key specifies the user to run the job as. This key is only applicable when launchd is running as root.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.WaitForDebugger

This optional key specifies that launchd should instruct the kernel to have the job wait for a debugger to attach before any code in the job is executed.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.WatchPaths

This optional key causes the job to be started if any one of the listed paths are modified.

Type: null or (list of path)

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.WorkingDirectory

This optional key is used to specify a directory to chdir(2) to before running the job.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.inetdCompatibility

The presence of this key specifies that the daemon expects to be run as if it were launched from inetd.

Type: null or (submodule)

Default: null

Example:

{
  Wait = true;
}

Declared by:

<nix-darwin/modules/launchd>
launchd.user.agents.<name>.serviceConfig.inetdCompatibility.Wait

This flag corresponds to the “wait” or “nowait” option of inetd. If true, then the listening socket is passed via the standard in/out/error file descriptors. If false, then accept(2) is called on behalf of the job, and the result is passed via the standard in/out/error descriptors.

Type: null or boolean or string

Default: null

Declared by:

<nix-darwin/modules/launchd>
launchd.user.envVariables

A set of environment variables to be set on all future processes launched by launchd in the caller’s context. The value of each variable can be either a string or a list of strings. The latter is concatenated, interspersed with colon characters.

Type: attribute set of (string or list of string)

Default: { }

Example:

{
  LANG = "nl_NL.UTF-8";
}

Declared by:

<nix-darwin/modules/launchd>
lib

This option allows modules to define helper functions, constants, etc.

Type: attribute set of (attribute set)

Default: { }

Declared by:

<nix-darwin/modules/misc/lib.nix>
networking.computerName

The user-friendly name for the system, set in System Preferences > Sharing > Computer Name.

Setting this option is equivalent to running scutil --set ComputerName.

This name can contain spaces and Unicode characters.

Type: null or string

Default: null

Example: "John’s MacBook Pro"

Declared by:

<nix-darwin/modules/networking>
networking.dns

The list of dns servers used when resolving domain names.

Type: list of string

Default: [ ]

Example:

[
  "8.8.8.8"
  "8.8.4.4"
  "2001:4860:4860::8888"
  "2001:4860:4860::8844"
]

Declared by:

<nix-darwin/modules/networking>
networking.hostName

The hostname of your system, as visible from the command line and used by local and remote networks when connecting through SSH and Remote Login.

Setting this option is equivalent to running the command scutil --set HostName.

(Note that networking.localHostName defaults to the value of this option.)

Type: null or string matching the pattern ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$

Default: null

Example: "Johns-MacBook-Pro"

Declared by:

<nix-darwin/modules/networking>
networking.knownNetworkServices

List of networkservices that should be configured.

To display a list of all the network services on the server’s hardware ports, use networksetup -listallnetworkservices.

Type: list of string

Default: [ ]

Example:

[
  "Wi-Fi"
  "Ethernet Adaptor"
  "Thunderbolt Ethernet"
]

Declared by:

<nix-darwin/modules/networking>
networking.localHostName

The local hostname, or local network name, is displayed beneath the computer’s name at the top of the Sharing preferences pane. It identifies your Mac to Bonjour-compatible services.

Setting this option is equivalent to running the command scutil --set LocalHostName, where running, e.g., scutil --set LocalHostName 'Johns-MacBook-Pro', would set the systems local hostname to “Johns-MacBook-Pro.local”. The value of this option defaults to the value of the networking.hostName option.

By default on macOS the local hostname is your computer’s name with “.local” appended, with any spaces replaced with hyphens, and invalid characters omitted.

Type: null or string matching the pattern ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$

Default: null

Example: "Johns-MacBook-Pro"

Declared by:

<nix-darwin/modules/networking>
networking.search

The list of search paths used when resolving domain names.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/networking>
networking.wg-quick.interfaces

Set of wg-quick interfaces.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.address

List of IP addresses for this interface.

Type: null or (list of string)

Default: [ ]

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.autostart

Whether to bring up this interface automatically during boot.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.dns

List of DNS servers for this interface.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.listenPort

Port to listen on, randomly selected if not specified.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.mtu

MTU to set for this interface, automatically set if not specified

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.peers

List of peers associated with this interface.

Type: list of (submodule)

Default: [ ]

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.peers.*.allowedIPs

List of IP addresses associated with this peer.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.peers.*.endpoint

IP and port to connect to this peer at.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.peers.*.persistentKeepalive

Interval in seconds to send keepalive packets

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.peers.*.presharedKeyFile

Optional, path to file containing the pre-shared key for this peer.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.peers.*.publicKey

The public key for this peer.

Type: string

Default: null

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.postDown

List of commands to run after interface shutdown

Type: strings concatenated with “\n” or (list of string) convertible to it

Default: ""

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.postUp

List of commands to run after interface setup.

Type: strings concatenated with “\n” or (list of string) convertible to it

Default: ""

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.preDown

List of commadns to run before interface shutdown.

Type: strings concatenated with “\n” or (list of string) convertible to it

Default: ""

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.preUp

List of commands to run before interface setup.

Type: strings concatenated with “\n” or (list of string) convertible to it

Default: ""

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.privateKeyFile

Path to file containing this interface’s private key.

Type: string

Default: null

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.interfaces.<name>.table

Controls the routing table to which routes are added. There are two special values: off disables the creation of routes altogether, and auto (the default) adds routes to the default table and enables special handling of default routes.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
networking.wg-quick.logDir

Directory to save wg-quick logs to.

Type: string

Default: "/var/log"

Declared by:

<nix-darwin/modules/services/wg-quick.nix>
nix.package

This option specifies the Nix package instance to use throughout the system.

Type: package

Default: pkgs.nix

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines

This option lists the machines to be used if distributed builds are enabled (see nix.distributedBuilds). Nix will perform derivations on those machines via SSH by copying the inputs to the Nix store on the remote machine, starting the build, then copying the output back to the local Nix store.

Type: list of (submodule)

Default: [ ]

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.hostName

The hostname of the build machine.

Type: string

Example: "nixbuilder.example.org"

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.mandatoryFeatures

A list of features mandatory for this builder. The builder will be ignored for derivations that don’t require all features in this list. All mandatory features are automatically included in supportedFeatures.

Type: list of string

Default: [ ]

Example:

[
  "big-parallel"
]

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.maxJobs

The number of concurrent jobs the build machine supports. The build machine will enforce its own limits, but this allows hydra to schedule better since there is no work-stealing between build machines.

Type: signed integer

Default: 1

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.protocol

The protocol used for communicating with the build machine. Use ssh-ng if your remote builder and your local Nix version support that improved protocol.

Use null when trying to change the special localhost builder without a protocol which is for example used by hydra.

Type: one of <null>, “ssh”, “ssh-ng”

Default: "ssh"

Example: "ssh-ng"

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.publicHostKey

The (base64-encoded) public host key of this builder. The field is calculated via base64 -w0 /etc/ssh/ssh_host_type_key.pub. If null, SSH will use its regular known-hosts file when connecting.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.speedFactor

The relative speed of this builder. This is an arbitrary integer that indicates the speed of this builder, relative to other builders. Higher is faster.

Type: signed integer

Default: 1

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.sshKey

The path to the SSH private key with which to authenticate on the build machine. The private key must not have a passphrase. If null, the building user (root on NixOS machines) must have an appropriate ssh configuration to log in non-interactively.

Note that for security reasons, this path must point to a file in the local filesystem, not to the nix store.

Type: null or string

Default: null

Example: "/root/.ssh/id_buildhost_builduser"

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.sshUser

The username to log in as on the remote host. This user must be able to log in and run nix commands non-interactively. It must also be privileged to build derivations, so must be included in nix.settings.trusted-users.

Type: null or string

Default: null

Example: "builder"

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.supportedFeatures

A list of features supported by this builder. The builder will be ignored for derivations that require features not in this list.

Type: list of string

Default: [ ]

Example:

[
  "kvm"
  "big-parallel"
]

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.system

The system type the build machine can execute derivations on. Either this attribute or systems must be present, where system takes precedence if both are set.

Type: null or string

Default: null

Example: "x86_64-linux"

Declared by:

<nix-darwin/modules/nix>
nix.buildMachines.*.systems

The system types the build machine can execute derivations on. Either this attribute or system must be present, where system takes precedence if both are set.

Type: list of string

Default: [ ]

Example:

[
  "x86_64-linux"
  "aarch64-linux"
]

Declared by:

<nix-darwin/modules/nix>
nix.checkConfig

If enabled (the default), checks for data type mismatches and that Nix can parse the generated nix.conf.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/nix>
nix.configureBuildUsers

Enable configuration for nixbld group and users.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/nix>
nix.daemonIOLowPriority

Whether the Nix daemon process should considered to be low priority when doing file system I/O.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/nix>
nix.daemonProcessType

Nix daemon process resource limits class. These limits propagate to build processes. Standard is the default process type and will apply light resource limits, throttling its CPU usage and I/O bandwidth.

See man launchd.plist for explanation of other process types.

Type: one of “Background”, “Standard”, “Adaptive”, “Interactive”

Default: "Standard"

Declared by:

<nix-darwin/modules/nix>
nix.distributedBuilds

Whether to distribute builds to the machines listed in nix.buildMachines.

NOTE: This requires services.nix-daemon.enable for a multi-user install.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/nix>
nix.extraOptions

Additional text appended to nix.conf.

Type: strings concatenated with “\n”

Default: ""

Example:

''
  keep-outputs = true
  keep-derivations = true
''

Declared by:

<nix-darwin/modules/nix>
nix.gc.automatic

Automatically run the garbage collector at a specific time.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/nix-gc>
nix.gc.interval

The time interval at which the garbage collector will run.

Type: attribute set

Default:

{
  Hour = 3;
  Minute = 15;
}

Declared by:

<nix-darwin/modules/services/nix-gc>
nix.gc.options

Options given to nix-collect-garbage when the garbage collector is run automatically.

Type: string

Default: ""

Example: "--max-freed $((64 * 1024**3))"

Declared by:

<nix-darwin/modules/services/nix-gc>
nix.gc.user

User that runs the garbage collector.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/nix-gc>
nix.linux-builder.enable

Whether to enable Linux builder.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.package

This option specifies the Linux builder to use.

Type: package

Default: "pkgs.darwin.linux-builder"

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.config

This option specifies extra NixOS configuration for the builder. You should first use the Linux builder without changing the builder configuration otherwise you may not be able to build the Linux builder.

Type: module

Default: { }

Example:

({ pkgs, ... }:

{
  environment.systemPackages = [ pkgs.neovim ];
})

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.ephemeral

Whether to enable wipe the builder’s filesystem on every restart.

This is disabled by default as maintaining the builder’s Nix Store reduces rebuilds. You can enable this if you don’t want your builder to accumulate state. .

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.mandatoryFeatures

A list of features mandatory for the Linux builder. The builder will be ignored for derivations that don’t require all features in this list. All mandatory features are automatically included in supportedFeatures.

This sets the corresponding nix.buildMachines.*.mandatoryFeatures option.

Type: list of string

Default: []

Example: [ "big-parallel" ]

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.maxJobs

The number of concurrent jobs the Linux builder machine supports. The build machine will enforce its own limits, but this allows hydra to schedule better since there is no work-stealing between build machines.

This sets the corresponding nix.buildMachines.*.maxJobs option.

Type: positive integer, meaning >0

Default: 1

Example: 4

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.protocol

The protocol used for communicating with the build machine. Use ssh-ng if your remote builder and your local Nix version support that improved protocol.

Use null when trying to change the special localhost builder without a protocol which is for example used by hydra.

Type: string

Default: "ssh-ng"

Example: "ssh"

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.speedFactor

The relative speed of the Linux builder. This is an arbitrary integer that indicates the speed of this builder, relative to other builders. Higher is faster.

This sets the corresponding nix.buildMachines.*.speedFactor option.

Type: positive integer, meaning >0

Default: 1

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.supportedFeatures

A list of features supported by the Linux builder. The builder will be ignored for derivations that require features not in this list.

This sets the corresponding nix.buildMachines.*.supportedFeatures option.

Type: list of string

Default: [ "kvm" "benchmark" "big-parallel" ]

Example: [ "kvm" "big-parallel" ]

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.systems

This option specifies system types the build machine can execute derivations on.

This sets the corresponding nix.buildMachines.*.systems option.

Type: list of string

Default: [ "${stdenv.hostPlatform.uname.processor}-linux" ]

Example:

[
  "x86_64-linux"
  "aarch64-linux"
]

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.linux-builder.workingDirectory

The working directory of the Linux builder daemon process.

Type: string

Default: "/var/lib/darwin-builder"

Declared by:

<nix-darwin/modules/nix/linux-builder.nix>
nix.nixPath

The default Nix expression search path, used by the Nix evaluator to look up paths enclosed in angle brackets (e.g. <nixpkgs>).

Named entries can be specified using an attribute set, if an entry is configured multiple times the value with the lowest ordering will be used.

Type: nix path

Default:

[
  {
    darwin-config = "$HOME/.nixpkgs/darwin-configuration.nix";
  }
  "/nix/var/nix/profiles/per-user/root/channels"
]

Declared by:

<nix-darwin/modules/nix>
nix.nrBuildUsers

Number of nixbld user accounts created to perform secure concurrent builds. If you receive an error message saying that “all build users are currently in use”, you should increase this value.

Type: signed integer

Declared by:

<nix-darwin/modules/nix>
nix.optimise.automatic

Automatically run the nix store optimiser at a specific time.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/nix-optimise>
nix.optimise.interval

The time interval at which the optimiser will run.

Type: attribute set

Default:

{
  Hour = 3;
  Minute = 15;
}

Declared by:

<nix-darwin/modules/services/nix-optimise>
nix.optimise.user

User that runs the store optimisation.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/nix-optimise>
nix.registry

A system-wide flake registry.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/nix>
nix.registry.<name>.exact

Whether the from reference needs to match exactly. If set, a from reference like nixpkgs does not match with a reference like nixpkgs/nixos-20.03.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/nix>
nix.registry.<name>.flake

The flake input from is rewritten to.

Type: null or (attribute set)

Default: null

Example: nixpkgs

Declared by:

<nix-darwin/modules/nix>
nix.registry.<name>.from

The flake reference to be rewritten.

Type: attribute set of (string or signed integer or boolean or package)

Example:

{
  id = "nixpkgs";
  type = "indirect";
}

Declared by:

<nix-darwin/modules/nix>
nix.registry.<name>.to

The flake reference from is rewritten to.

Type: attribute set of (string or signed integer or boolean or package)

Example:

{
  owner = "my-org";
  repo = "my-nixpkgs";
  type = "github";
}

Declared by:

<nix-darwin/modules/nix>
nix.settings

Configuration for Nix, see https://nixos.org/manual/nix/stable/#sec-conf-file for avalaible options. The value declared here will be translated directly to the key-value pairs Nix expects.

Nix configurations defined under nix.* will be translated and applied to this option. In addition, configuration specified in nix.extraOptions which will be appended verbatim to the resulting config file.

Type: 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)))

Default: { }

Declared by:

<nix-darwin/modules/nix>
nix.settings.allowed-users

A list of names of users (separated by whitespace) that are allowed to connect to the Nix daemon. As with nix.settings.trusted-users, you can specify groups by prefixing them with @. Also, you can allow all users by specifying *. The default is *. Note that trusted users are always allowed to connect.

Type: list of string

Default:

[
  "*"
]

Example:

[
  "@admin"
  "@builders"
  "alice"
  "bob"
]

Declared by:

<nix-darwin/modules/nix>
nix.settings.auto-optimise-store

If set to true, Nix automatically detects files in the store that have identical contents, and replaces them with hard links to a single copy. This saves disk space. If set to false (the default), you can still run nix-store --optimise to get rid of duplicate files.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/nix>
nix.settings.cores

This option defines the maximum number of concurrent tasks during one build. It affects, e.g., -j option for make. The special value 0 means that the builder should use all available CPU cores in the system. Some builds may become non-deterministic with this option; use with care! Packages will only be affected if enableParallelBuilding is set for them.

Type: signed integer

Default: 0

Example: 64

Declared by:

<nix-darwin/modules/nix>
nix.settings.extra-sandbox-paths

Directories from the host filesystem to be included in the sandbox.

Type: list of string

Default: [ ]

Example:

[
  "/dev"
  "/proc"
]

Declared by:

<nix-darwin/modules/nix>
nix.settings.max-jobs

This option defines the maximum number of jobs that Nix will try to build in parallel. The default is auto, which means it will use all available logical cores. It is recommend to set it to the total number of logical cores in your system (e.g., 16 for two CPUs with 4 cores each and hyper-threading).

Type: signed integer or value “auto” (singular enum)

Default: "auto"

Example: 64

Declared by:

<nix-darwin/modules/nix>
nix.settings.require-sigs

If enabled (the default), Nix will only download binaries from binary caches if they are cryptographically signed with any of the keys listed in nix.settings.trusted-public-keys. If disabled, signatures are neither required nor checked, so it’s strongly recommended that you use only trustworthy caches and https to prevent man-in-the-middle attacks.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/nix>
nix.settings.sandbox

If set, Nix will perform builds in a sandboxed environment that it will set up automatically for each build. This prevents impurities in builds by disallowing access to dependencies outside of the Nix store by using network and mount namespaces in a chroot environment. It doesn’t affect derivation hashes, so changing this option will not trigger a rebuild of packages.

Type: boolean or value “relaxed” (singular enum)

Default: false

Declared by:

<nix-darwin/modules/nix>
nix.settings.substituters

List of binary cache URLs used to obtain pre-built binaries of Nix packages.

By default https://cache.nixos.org/ is added.

Type: list of string

Declared by:

<nix-darwin/modules/nix>
nix.settings.trusted-public-keys

List of public keys used to sign binary caches. If nix.settings.trusted-public-keys is enabled, then Nix will use a binary from a binary cache if and only if it is signed by any of the keys listed here. By default, only the key for cache.nixos.org is included.

Type: list of string

Example:

[
  "hydra.nixos.org-1:CNHJZBh9K4tP3EKF6FkkgeVYsS3ohTl+oS0Qa8bezVs="
]

Declared by:

<nix-darwin/modules/nix>
nix.settings.trusted-substituters

List of binary cache URLs that non-root users can use (in addition to those specified using nix.settings.substituters) by passing --option binary-caches to Nix commands.

Type: list of string

Default: [ ]

Example:

[
  "https://hydra.nixos.org/"
]

Declared by:

<nix-darwin/modules/nix>
nix.settings.trusted-users

A list of names of users that have additional rights when connecting to the Nix daemon, such as the ability to specify additional binary caches, or to import unsigned NARs. You can also specify groups by prefixing them with @; for instance, @admin means all users in the wheel group.

Type: list of string

Default:

[
  "root"
]

Example:

[
  "root"
  "alice"
  "@admin"
]

Declared by:

<nix-darwin/modules/nix>
nix.useDaemon

If set, Nix will use the daemon to perform operations. Use this instead of services.nix-daemon.enable if you don’t want the daemon service to be managed for you.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/nix>
nixpkgs.buildPlatform

Specifies the platform on which nix-darwin should be built. By default, nix-darwin is built on the system where it runs, but you can change where it’s built. Setting this option will cause nix-darwin to be cross-compiled.

For instance, if you’re doing distributed multi-platform deployment, or if you’re building machines, you can set this to match your development system and/or build farm.

Ignored when nixpkgs.pkgs is set.

Type: string or (attribute set)

Default: config.nixpkgs.hostPlatform

Example:

{
  config = "x86_64-apple-darwin";
  system = "x86_64-darwin";
}

Declared by:

<nix-darwin/modules/nix/nixpkgs.nix>
nixpkgs.config

The configuration of the Nix Packages collection. (For details, see the Nixpkgs documentation.) It allows you to set package configuration options.

Ignored when nixpkgs.pkgs is set.

Type: nixpkgs config

Default: { }

Example:

{ allowBroken = true; allowUnfree = true; }

Declared by:

<nix-darwin/modules/nix/nixpkgs.nix>
nixpkgs.hostPlatform

Specifies the platform where the nix-darwin configuration will run.

To cross-compile, set also nixpkgs.buildPlatform.

Ignored when nixpkgs.pkgs is set.

Type: string or (attribute set)

Example:

{
  config = "aarch64-apple-darwin";
  system = "aarch64-darwin";
}

Declared by:

<nix-darwin/modules/nix/nixpkgs.nix>
nixpkgs.overlays

List of overlays to use with the Nix Packages collection. (For details, see the Nixpkgs documentation.) It allows you to override packages globally. Each function in the list takes as an argument the original Nixpkgs. The first argument should be used for finding dependencies, and the second should be used for overriding recipes.

If nixpkgs.pkgs is set, overlays specified here will be applied after the overlays that were already present in nixpkgs.pkgs.

Type: list of (nixpkgs overlay)

Default: [ ]

Example:

[
  (self: super: {
    openssh = super.openssh.override {
      hpnSupport = true;
      kerberos = self.libkrb5;
    };
  })
]

Declared by:

<nix-darwin/modules/nix/nixpkgs.nix>
nixpkgs.pkgs

If set, the pkgs argument to all nix-darwin modules is the value of this option, extended with nixpkgs.overlays, if that is also set. The nix-darwin and Nixpkgs architectures must match. Any other options in nixpkgs.*, notably config, will be ignored.

The default value imports the Nixpkgs from nixpkgs.source. The config, overlays, localSystem, and crossSystem are based on this option’s siblings.

This option can be used to increase the performance of evaluation, or to create packages that depend on a container that should be built with the exact same evaluation of Nixpkgs, for example. Applications like this should set their default value using lib.mkDefault, so user-provided configuration can override it without using lib.

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

Example: import <nixpkgs> {}

Declared by:

<nix-darwin/modules/nix/nixpkgs.nix>
nixpkgs.source

The path to import Nixpkgs from. If you’re setting a custom nixpkgs.pkgs or _module.args.pkgs, setting this to something with rev and shortRev attributes (such as a flake input or builtins.fetchGit result) will also set system.nixpkgsRevision and related options. (nix-darwin only)

Type: path

Default: <nixpkgs> or nix-darwin’s nixpkgs flake input

Declared by:

<nix-darwin/modules/nix/nixpkgs.nix>
nixpkgs.system

Specifies the Nix platform type on which nix-darwin should be built. It is better to specify nixpkgs.hostPlatform instead.

Ignored when nixpkgs.pkgs or nixpkgs.hostPlatform is set.

Type: string

Default: Traditionally builtins.currentSystem, but unset when invoking nix-darwin through lib.darwinSystem.

Example: "x86_64-darwin"

Declared by:

<nix-darwin/modules/nix/nixpkgs.nix>
programs.bash.enable

Whether to configure bash as an interactive shell.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/bash>
programs.bash.enableCompletion

Enable bash completion for all interactive bash shells.

NOTE. This doesn’t work with bash 3.2, which is the default on macOS.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/bash>
programs.bash.interactiveShellInit

Shell script code called during interactive bash shell initialisation.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/bash>
programs.direnv.enable

Whether to enable direnv integration. Takes care of both installation and setting up the sourcing of the shell. Additionally enables nix-direnv integration. .

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/programs/direnv.nix>
programs.direnv.package

The direnv package to use.

Type: package

Default: pkgs.direnv

Declared by:

<nix-darwin/modules/programs/direnv.nix>
programs.direnv.direnvrcExtra

Extra lines to append to the sourced direnvrc

Type: strings concatenated with “\n”

Default: ""

Example:

''
  export FOO="foo"
  echo "loaded direnv!"
''

Declared by:

<nix-darwin/modules/programs/direnv.nix>
programs.direnv.loadInNixShell

Whether to enable loading direnv in nix-shell nix shell or nix develop .

Type: boolean

Default: true

Example: true

Declared by:

<nix-darwin/modules/programs/direnv.nix>
programs.direnv.nix-direnv.enable

Whether to enable a faster, persistent implementation of use_nix and use_flake, to replace the built-in one .

Type: boolean

Default: true

Example: true

Declared by:

<nix-darwin/modules/programs/direnv.nix>
programs.direnv.nix-direnv.package

The nix-direnv package to use.

Type: package

Default: pkgs.nix-direnv

Declared by:

<nix-darwin/modules/programs/direnv.nix>
programs.direnv.silent

Whether to enable the hiding of direnv logging .

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/programs/direnv.nix>
programs.fish.enable

Whether to configure fish as an interactive shell.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.babelfishPackage

The babelfish package to use when useBabelfish is set to true.

Type: package

Default: <derivation babelfish-1.2.1>

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.interactiveShellInit

Shell script code called during interactive fish shell initialisation.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.loginShellInit

Shell script code called during fish login shell initialisation.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.promptInit

Shell script code used to initialise fish prompt.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.shellAliases

Set of aliases for fish shell. See environment.shellAliases for an option format description.

Type: attribute set

Default: { }

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.shellInit

Shell script code called during fish shell initialisation.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.useBabelfish

If enabled, the configured environment will be translated to native fish using babelfish. Otherwise, foreign-env will be used.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.vendor.completions.enable

Whether fish should use completion files provided by other packages.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.vendor.config.enable

Whether fish should source configuration snippets provided by other packages.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.fish.vendor.functions.enable

Whether fish should autoload fish functions provided by other packages.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/fish.nix>
programs.gnupg.agent.enable

Enables GnuPG agent for every user session.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/gnupg.nix>
programs.gnupg.agent.enableSSHSupport

Enable SSH agent support in GnuPG agent. Also sets SSH_AUTH_SOCK environment variable correctly.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/gnupg.nix>
programs.info.enable

Whether to enable info pages and the info command.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/info>
programs.man.enable

Whether to enable manual pages and the man command. This also includes “man” outputs of all systemPackages.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/man.nix>
programs.nix-index.enable

Whether to enable nix-index and its command-not-found helper.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/nix-index>
programs.nix-index.package

This option specifies the nix-index package to use.

Type: package

Default: "pkgs.nix-index"

Declared by:

<nix-darwin/modules/programs/nix-index>
programs.ssh.knownHosts

The set of system-wide known SSH hosts.

Type: attribute set of (submodule)

Default: { }

Example:

[
  {
    hostNames = [ "myhost" "myhost.mydomain.com" "10.10.1.4" ];
    publicKeyFile = ./pubkeys/myhost_ssh_host_dsa_key.pub;
  }
  {
    hostNames = [ "myhost2" ];
    publicKeyFile = ./pubkeys/myhost2_ssh_host_dsa_key.pub;
  }
]

Declared by:

<nix-darwin/modules/programs/ssh>
programs.ssh.knownHosts.<name>.hostNames

A list of host names and/or IP numbers used for accessing the host’s ssh service.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/programs/ssh>
programs.ssh.knownHosts.<name>.publicKey

The public key data for the host. You can fetch a public key from a running SSH server with the ssh-keyscan command. The public key should not include any host names, only the key type and the key itself.

Type: null or string

Default: null

Example: "ecdsa-sha2-nistp521 AAAAE2VjZHN...UEPg=="

Declared by:

<nix-darwin/modules/programs/ssh>
programs.ssh.knownHosts.<name>.publicKeyFile

The path to the public key file for the host. The public key file is read at build time and saved in the Nix store. You can fetch a public key file from a running SSH server with the ssh-keyscan command. The content of the file should follow the same format as described for the publicKey option.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/programs/ssh>
programs.tmux.enable

Whether to configure tmux.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.enableFzf

Enable fzf keybindings for selecting tmux sessions and panes.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.enableMouse

Enable mouse support for tmux.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.enableSensible

Enable sensible configuration options for tmux.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.enableVim

Enable vim style keybindings for copy mode, and navigation of tmux panes.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.defaultCommand

The default command to use for tmux panes.

Type: string or package

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.extraConfig

Extra configuration to add to tmux.conf.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.iTerm2

Cater to iTerm2 and its tmux integration, as appropriate.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.tmuxOptions.<name>.enable

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

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.tmuxOptions.<name>.copy

Whether this file should be copied instead of symlinking.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.tmuxOptions.<name>.source

Path of the source file.

Type: path

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.tmuxOptions.<name>.target

Name of symlink. Defaults to the attribute name.

Type: string

Default: "‹name›"

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.tmux.tmuxOptions.<name>.text

Text of the file.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/tmux.nix>
programs.vim.enable

Whether to configure vim.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.enableSensible

Enable sensible configuration options for vim.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.extraKnownPlugins

Custom plugin declarations to add to VAM’s knownPlugins.

Type: attribute set of package

Default: { }

Example:

{
  vim-jsx = pkgs.vimUtils.buildVimPluginFrom2Nix {
    name = "vim-javascript-2016-07-29";
    src = pkgs.fetchgit {
      url = "git://github.com/mxw/vim-jsx";
      rev = "261114c925ea81eeb4db1651cc1edced66d6b5d6";
      sha256 = "17pffzwnvsimnnr4ql1qifdh4a0sqqsmcwfiqqzgglvsnzw5vpls";
    };
    dependencies = [];

  };
}

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.plugins

VAM plugin dictionaries to use for vim_configurable.

Type: list of (attribute set)

Default: [ ]

Example:

[
  {
    names = [
      "surround"
      "vim-nix"
    ];
  }
]

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.vimConfig

Extra vimrcConfig to use for vim_configurable.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.vimOptions.<name>.enable

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

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.vimOptions.<name>.copy

Whether this file should be copied instead of symlinking.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.vimOptions.<name>.source

Path of the source file.

Type: path

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.vimOptions.<name>.target

Name of symlink. Defaults to the attribute name.

Type: string

Default: "‹name›"

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.vim.vimOptions.<name>.text

Text of the file.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/vim.nix>
programs.zsh.enable

Whether to configure zsh as an interactive shell.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.enableBashCompletion

Enable bash completion for all interactive zsh shells.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.enableCompletion

Enable zsh completion for all interactive zsh shells.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.enableFzfCompletion

Enable fzf completion.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.enableFzfGit

Enable fzf keybindings for C-g git browsing.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.enableFzfHistory

Enable fzf keybinding for Ctrl-r history search.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.enableGlobalCompInit

Enable execution of compinit call for all interactive zsh shells.

This option can be disabled if the user wants to extend its fpath and a custom compinit call in the local config is required.

Type: boolean

Default: config.programs.zsh.enableCompletion

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.enableSyntaxHighlighting

Enable zsh-syntax-highlighting.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.interactiveShellInit

Shell script code called during interactive zsh shell initialisation.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.loginShellInit

Shell script code called during zsh login shell initialisation.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.promptInit

Shell script code used to initialise the zsh prompt.

Type: strings concatenated with “\n”

Default: "autoload -U promptinit && promptinit && prompt walters && setopt prompt_sp"

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.shellInit

Shell script code called during zsh shell initialisation.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/programs/zsh>
programs.zsh.variables

A set of environment variables used in the global environment. These variables will be set on shell initialisation. The value of each variable can be either a string or a list of strings. The latter is concatenated, interspersed with colon characters.

Type: attribute set of (string or list of string)

Default: { }

Declared by:

<nix-darwin/modules/programs/zsh>
security.pam.enableSudoTouchIdAuth

Enable sudo authentication with Touch ID.

When enabled, this option adds the following line to /etc/pam.d/sudo:

auth       sufficient     pam_tid.so

Note

macOS resets this file when doing a system update. As such, sudo authentication with Touch ID won’t work after a system update until the nix-darwin configuration is reapplied.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/security/pam.nix>
security.pki.caCertificateBlacklist

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.

Type: list of string

Default: [ ]

Example:

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

Declared by:

<nix-darwin/modules/security/pki>
security.pki.certificateFiles

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.

Type: list of path

Default: [ ]

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

Declared by:

<nix-darwin/modules/security/pki>
security.pki.certificates

A list of trusted root certificates in PEM format.

Type: list of string

Default: [ ]

Example:

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

Declared by:

<nix-darwin/modules/security/pki>
security.pki.installCACerts

Whether to enable certificate management with nix-darwin.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/security/pki>
security.sandbox.profiles

Definition of sandbox profiles.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/security/sandbox>
security.sandbox.profiles.<name>.allowLocalNetworking

Whether to allow localhost network access inside the sandbox.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/security/sandbox>
security.sandbox.profiles.<name>.allowNetworking

Whether to allow network access inside the sandbox.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/security/sandbox>
security.sandbox.profiles.<name>.allowSystemPaths

Whether to allow read access to FHS paths like /etc and /var.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/security/sandbox>
security.sandbox.profiles.<name>.closure

List of store paths to make accessible.

Type: list of package

Default: [ ]

Declared by:

<nix-darwin/modules/security/sandbox>
security.sandbox.profiles.<name>.readablePaths

List of paths that should be read-only inside the sandbox.

Type: list of path

Default: [ ]

Declared by:

<nix-darwin/modules/security/sandbox>
security.sandbox.profiles.<name>.writablePaths

List of paths that should be read/write inside the sandbox.

Type: list of path

Default: [ ]

Declared by:

<nix-darwin/modules/security/sandbox>
security.sudo.extraConfig

Extra configuration text appended to sudoers.

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/security/sudo.nix>
services.activate-system.enable

Whether to activate system at boot time.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/services/activate-system>
services.autossh.sessions

List of AutoSSH sessions to start as systemd services. Each service is named ‘autossh-{session.name}’.

Type: list of (submodule)

Default: [ ]

Example:

[
  {
    extraArguments = "-N -D4343 billremote@socks.host.net";
    monitoringPort = 20000;
    name = "socks-peer";
    user = "bill";
  }
]

Declared by:

<nix-darwin/modules/services/autossh.nix>
services.autossh.sessions.*.extraArguments

Arguments to be passed to AutoSSH and retransmitted to SSH process. Some meaningful options include -N (don’t run remote command), -D (open SOCKS proxy on local port), -R (forward remote port), -L (forward local port), -v (Enable debug). Check ssh manual for the complete list.

Type: string

Example: "-N -D4343 bill@socks.example.net"

Declared by:

<nix-darwin/modules/services/autossh.nix>
services.autossh.sessions.*.monitoringPort

Port to be used by AutoSSH for peer monitoring. Note, that AutoSSH also uses mport+1. Value of 0 disables the keep-alive style monitoring

Type: signed integer

Default: 0

Example: 20000

Declared by:

<nix-darwin/modules/services/autossh.nix>
services.autossh.sessions.*.name

Name of the local AutoSSH session

Type: string

Example: "socks-peer"

Declared by:

<nix-darwin/modules/services/autossh.nix>
services.autossh.sessions.*.user

Name of the user the AutoSSH session should run as

Type: string

Example: "bill"

Declared by:

<nix-darwin/modules/services/autossh.nix>
services.buildkite-agents

Attribute set of buildkite agents. The attribute key is combined with the hostname and a unique integer to create the final agent name. This can be overridden by setting the name attribute.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.enable

Whether to enable this buildkite agent

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.package

Which buildkite-agent derivation to use

Type: package

Default: pkgs.buildkite-agent

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.dataDir

The workdir for the agent

Type: string

Default: "/var/lib/buildkite-agent-‹name›"

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.extraConfig

Extra lines to be added verbatim to the configuration file.

Type: strings concatenated with “\n”

Default: ""

Example: "debug=true"

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.checkout

The checkout hook script will replace the default checkout routine of the bootstrap.sh script. You can use this hook to do your own SCM checkout behaviour

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.command

The command hook script will replace the default implementation of running the build command.

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.environment

The environment hook will run before all other commands, and can be used to set up secrets, data, etc. Anything exported in hooks will be available to the build script.

Note: the contents of this file will be copied to the world-readable Nix store.

Type: null or strings concatenated with “\n”

Default: null

Example:

''
  export SECRET_VAR=`head -1 /run/keys/secret`
''

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.post-artifact

The post-artifact hook will run just after artifacts are uploaded

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.post-checkout

The post-checkout hook will run after the bootstrap script has checked out your projects source code.

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.post-command

The post-command hook will run after the bootstrap script has run your build commands

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.pre-artifact

The pre-artifact hook will run just before artifacts are uploaded

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.pre-checkout

The pre-checkout hook will run just before your projects source code is checked out from your SCM provider

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.pre-command

The pre-command hook will run just before your build command runs

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooks.pre-exit

The pre-exit hook will run just before your build job finishes

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.hooksPath

Path to the directory storing the hooks. Consider using services.buildkite-agents.<name>.hooks.<name> instead.

Type: path

Default: generated from services.buildkite-agents.<name>.hooks

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.name

The name of the agent as seen in the buildkite dashboard.

Type: string

Default: "%hostname-‹name›-%n"

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.preCommands

Extra commands to run before starting buildkite.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.privateSshKeyPath

OpenSSH private key

A run-time path to the key file, which is supposed to be provisioned outside of Nix store.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.runtimePackages

Add programs to the buildkite-agent environment

Type: list of (package or path)

Default: [ pkgs.bash pkgs.gnutar pkgs.gzip pkgs.git pkgs.nix ]

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.shell

Command that buildkite-agent 3 will execute when it spawns a shell.

Type: string

Default: "${pkgs.bash}/bin/bash -e -c"

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.tags

Tags for the agent.

Type: attribute set of (string or list of string)

Default: { }

Example:

{
  docker = "true";
  queue = "default";
  ruby2 = "true";
}

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.buildkite-agents.<name>.tokenPath

The token from your Buildkite “Agents” page.

A run-time path to the token file, which is supposed to be provisioned outside of Nix store.

Type: path

Declared by:

<nix-darwin/modules/services/buildkite-agents.nix>
services.cachix-agent.enable

Enable to run Cachix Agent as a system service.

Read Cachix Deploy documentation for more information.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/cachix-agent.nix>
services.cachix-agent.package

Package containing cachix executable.

Type: package

Default: pkgs.cachix

Declared by:

<nix-darwin/modules/services/cachix-agent.nix>
services.cachix-agent.credentialsFile

Required file that needs to contain:

export CACHIX_AGENT_TOKEN=…

Type: path

Default: "/etc/cachix-agent.token"

Declared by:

<nix-darwin/modules/services/cachix-agent.nix>
services.cachix-agent.logFile

Absolute path to log all stderr and stdout

Type: null or path

Default: "/var/log/cachix-agent.log"

Declared by:

<nix-darwin/modules/services/cachix-agent.nix>
services.cachix-agent.name

Agent name, usually the same as the hostname.

Type: string

Default: null

Declared by:

<nix-darwin/modules/services/cachix-agent.nix>
services.chunkwm.enable

Whether to enable the chunkwm window manager.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/chunkwm.nix>
services.chunkwm.package

This option specifies the chunkwm package to use.

Type: package

Example: pkgs.chunkwm

Declared by:

<nix-darwin/modules/services/chunkwm.nix>
services.chunkwm.extraConfig

Additional commands for chunkwmrc.

Type: strings concatenated with “\n”

Default: ""

Example: "chunkc tiling::rule --owner Emacs --state tile"

Declared by:

<nix-darwin/modules/services/chunkwm.nix>
services.chunkwm.hotload

Whether to enable hotload.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/services/chunkwm.nix>
services.chunkwm.plugins.border.config

Optional border plugin configuration.

Type: strings concatenated with “\n”

Default: "chunkc set focused_border_color 0xffc0b18b"

Declared by:

<nix-darwin/modules/services/chunkwm.nix>
services.chunkwm.plugins.dir

Chunkwm Plugins directory.

Type: path

Default: "/run/current-system/sw/lib/chunkwm/plugins"

Declared by:

<nix-darwin/modules/services/chunkwm.nix>
services.chunkwm.plugins.list

Chunkwm Plugins to enable.

Type: list of (one of “border”, “ffm”, “tiling”)

Default:

[
  "border"
  "ffm"
  "tiling"
]

Example:

[
  "tiling"
]

Declared by:

<nix-darwin/modules/services/chunkwm.nix>
services.chunkwm.plugins.tiling.config

Optional tiling plugin configuration.

Type: strings concatenated with “\n”

Example: "chunkc set global_desktop_mode bsp"

Declared by:

<nix-darwin/modules/services/chunkwm.nix>
services.dnsmasq.enable

Whether to enable DNSmasq.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/dnsmasq.nix>
services.dnsmasq.package

This option specifies the dnsmasq package to use.

Type: path

Default: "pkgs.dnsmasq"

Declared by:

<nix-darwin/modules/services/dnsmasq.nix>
services.dnsmasq.addresses

List of domains that will be redirected by the DNSmasq.

Type: attribute set

Default: { }

Example:

{ localhost = "127.0.0.1"; }

Declared by:

<nix-darwin/modules/services/dnsmasq.nix>
services.dnsmasq.bind

This option specifies the interface on which DNSmasq will listen.

Type: string

Default: "127.0.0.1"

Declared by:

<nix-darwin/modules/services/dnsmasq.nix>
services.dnsmasq.port

This option specifies port on which DNSmasq will listen.

Type: signed integer

Default: 53

Declared by:

<nix-darwin/modules/services/dnsmasq.nix>
services.emacs.enable

Whether to enable the Emacs Daemon.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/emacs.nix>
services.emacs.package

This option specifies the emacs package to use.

Type: path

Default: <derivation emacs-28.2>

Declared by:

<nix-darwin/modules/services/emacs.nix>
services.emacs.additionalPath

This option specifies additional PATH that the emacs daemon would have. Typically if you have binaries in your home directory that is what you would add your home path here. One caveat is that there won’t be shell variable expansion, so you can’t use $HOME for example

Type: list of string

Default: [ ]

Example:

[
  "/Users/my_user_name"
]

Declared by:

<nix-darwin/modules/services/emacs.nix>
services.emacs.exec

Emacs command/binary to execute.

Type: string

Default: "emacs"

Declared by:

<nix-darwin/modules/services/emacs.nix>
services.eternal-terminal.enable

Whether to enable Eternal Terminal server.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/eternal-terminal.nix>
services.eternal-terminal.package

This option specifies the eternal-terminal package to use.

Type: path

Default: "pkgs.eternal-terminal"

Declared by:

<nix-darwin/modules/services/eternal-terminal.nix>
services.eternal-terminal.logSize

The maximum log size.

Type: signed integer

Default: 20971520

Declared by:

<nix-darwin/modules/services/eternal-terminal.nix>
services.eternal-terminal.port

The port the server should listen on. Will use the server’s default (2022) if not specified.

Make sure to open this port in the firewall if necessary.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 2022

Declared by:

<nix-darwin/modules/services/eternal-terminal.nix>
services.eternal-terminal.silent

If enabled, disables all logging.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/eternal-terminal.nix>
services.eternal-terminal.verbosity

The verbosity level (0-9).

Type: one of 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Default: 0

Declared by:

<nix-darwin/modules/services/eternal-terminal.nix>
services.github-runners

Multiple GitHub Runners.

If user and group are set to null, the module will configure nix-darwin to manage the _github-runner user and group. Note that multiple runner configurations share the same user/group, which means they can access resources from other runners. Make each runner use its own user and group if this is not what you want. In this case, you will have to do the user and group creation yourself. If only user is set, while group is set to null, the service will infer the primary group of the user.

For each GitHub runner, the system activation script creates the following directories:

  • /var/lib/github-runners/<name>: State directory to store the runner registration credentials

  • /var/log/github-runners/<name>: The launchd service writes the stdout and stderr streams to this directory.

  • /var/run/github-runners/<name>: Working directory for workflow files. The runner only uses this directory if workDir is null (see the workDir option for details).

Type: attribute set of (submodule)

Default: { }

Example:

{
  runner1 = {
    enable = true;
    name = "runner1";
    tokenFile = "/secrets/token1";
    url = "https://github.com/owner/repo";
  };
  runner2 = {
    enable = true;
    name = "runner2";
    tokenFile = "/secrets/token2";
    url = "https://github.com/owner/repo";
  };
}

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.enable

Whether to enable GitHub Actions runner.

Note: GitHub recommends using self-hosted runners with private repositories only. Learn more here: About self-hosted runners.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.package

The github-runner package to use.

Type: package

Default: pkgs.github-runner

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.ephemeral

If enabled, causes the following behavior:

  • Passes the --ephemeral flag to the runner configuration script

  • De-registers and stops the runner with GitHub after it has processed one job

  • Restarts the service after its successful exit

  • On start, wipes the state directory and configures a new runner

You should only enable this option if tokenFile points to a file which contains a personal access token (PAT). If you’re using the option with a registration token, restarting the service will fail as soon as the registration token expired.

Changing this option triggers a new runner registration.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.extraEnvironment

Extra environment variables to set for the runner, as an attrset.

Type: attribute set

Default: { }

Example:

{
  GIT_CONFIG = "/path/to/git/config";
}

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.extraLabels

Extra labels in addition to the default (unless disabled through the noDefaultLabels option).

Changing this option triggers a new runner registration.

Type: list of string

Default: [ ]

Example: [ "nixos" ]

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.extraPackages

Extra packages to add to PATH of the service to make them available to workflows.

Type: list of package

Default: [ ]

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.group

Group under which to run the service.

If this option and the user option is set to null, nix-darwin creates the github-runner user and group.

Type: null or string

Default: groupname

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.name

Name of the runner to configure. If null, defaults to the hostname.

Changing this option triggers a new runner registration.

Type: null or string

Default: "‹name›"

Example: "nixos"

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.noDefaultLabels

Disables adding the default labels. Also see the extraLabels option.

Changing this option triggers a new runner registration.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.nodeRuntimes

List of Node.js runtimes the runner should support.

Type: non-empty (list of value “node20” (singular enum))

Default:

[
  "node20"
]

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.replace

Replace any existing runner with the same name.

Without this flag, registering a new runner with the same name fails.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.runnerGroup

Name of the runner group to add this runner to (defaults to the default runner group).

Changing this option triggers a new runner registration.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.serviceOverrides

Modify the service. Can be used to, e.g., adjust the sandboxing options.

Type: attribute set

Default: { }

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.tokenFile

The full path to a file which contains either

  • a fine-grained personal access token (PAT),

  • a classic PAT

  • or a runner registration token

Changing this option or the tokenFile’s content triggers a new runner registration.

We suggest using the fine-grained PATs. A runner registration token is valid only for 1 hour after creation, so the next time the runner configuration changes this will give you hard-to-debug HTTP 404 errors in the configure step.

The file should contain exactly one line with the token without any newline. (Use echo -n '…token…' > …token file… to make sure no newlines sneak in.)

If the file contains a PAT, the service creates a new registration token on startup as needed. If a registration token is given, it can be used to re-register a runner of the same name but is time-limited as noted above.

For fine-grained PATs:

Give it “Read and Write access to organization/repository self hosted runners”, depending on whether it is organization wide or per-repository. You might have to experiment a little, fine-grained PATs are a beta Github feature and still subject to change; nonetheless they are the best option at the moment.

For classic PATs:

Make sure the PAT has a scope of admin:org for organization-wide registrations or a scope of repo for a single repository.

For runner registration tokens:

Nothing special needs to be done, but updating will break after one hour, so these are not recommended.

Type: path

Example: "/run/secrets/github-runner/nixos.token"

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.url

Repository to add the runner to.

Changing this option triggers a new runner registration.

IMPORTANT: If your token is org-wide (not per repository), you need to provide a github org link, not a single repository, so do it like this https://github.com/nixos, not like this https://github.com/nixos/nixpkgs. Otherwise, you are going to get a 404 NotFound from POST https://api.github.com/actions/runner-registration in the configure script.

Type: string

Example: "https://github.com/nixos/nixpkgs"

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.user

User under which to run the service.

If this option and the group option is set to null, nix-darwin creates the github-runner user and group.

Type: null or string

Default: username

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.github-runners.<name>.workDir

Working directory, available as $GITHUB_WORKSPACE during workflow runs and used as a default for repository checkouts. The service cleans this directory on every service start.

Changing this option triggers a new runner registration.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/github-runner/options.nix>
services.gitlab-runner.enable

Whether to enable Gitlab Runner.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.package

Gitlab Runner package to use.

Type: package

Default: "pkgs.gitlab-runner"

Example: pkgs.gitlab-runner_1_11

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.checkInterval

Defines the interval length, in seconds, between new jobs check. The default value is 3; if set to 0 or lower, the default value will be used. See runner documentation for more information.

Type: signed integer

Default: 0

Example: with lib; (length (attrNames config.services.gitlab-runner.services)) * 3

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.concurrent

Limits how many jobs globally can be run concurrently. The most upper limit of jobs using all defined runners. 0 does not mean unlimited.

Type: signed integer

Default: 1

Example: config.nix.maxJobs

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.configFile

Configuration file for gitlab-runner.

configFile takes precedence over services. checkInterval and concurrent will be ignored too.

This option is deprecated, please use services instead. You can use registrationConfigFile and registrationFlags for settings not covered by this module.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.extraPackages

Extra packages to add to PATH for the gitlab-runner process.

Type: list of package

Default: [ ]

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.gracefulTermination

Finish all remaining jobs before stopping. If not set gitlab-runner will stop immediatly without waiting for jobs to finish, which will lead to failed builds.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.gracefulTimeout

Time to wait until a graceful shutdown is turned into a forceful one.

Type: string

Default: "infinity"

Example: "5min 20s"

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.prometheusListenAddress

Address (<host>:<port>) on which the Prometheus metrics HTTP server should be listening.

Type: null or string

Default: null

Example: "localhost:8080"

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.sentryDSN

Data Source Name for tracking of all system level errors to Sentry.

Type: null or string

Default: null

Example: "https://public:private@host:port/1"

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services

GitLab Runner services.

Type: attribute set of (submodule)

Default: { }

Example:

{
  # runner for building in docker via host's nix-daemon
  # nix store will be readable in runner, might be insecure
  nix = {
    # File should contain at least these two variables:
    # `CI_SERVER_URL`
    # `REGISTRATION_TOKEN`
    registrationConfigFile = "/run/secrets/gitlab-runner-registration";
    dockerImage = "alpine";
    dockerVolumes = [
      "/nix/store:/nix/store:ro"
      "/nix/var/nix/db:/nix/var/nix/db:ro"
      "/nix/var/nix/daemon-socket:/nix/var/nix/daemon-socket:ro"
    ];
    dockerDisableCache = true;
    preBuildScript = pkgs.writeScript "setup-container" ''
      mkdir -p -m 0755 /nix/var/log/nix/drvs
      mkdir -p -m 0755 /nix/var/nix/gcroots
      mkdir -p -m 0755 /nix/var/nix/profiles
      mkdir -p -m 0755 /nix/var/nix/temproots
      mkdir -p -m 0755 /nix/var/nix/userpool
      mkdir -p -m 1777 /nix/var/nix/gcroots/per-user
      mkdir -p -m 1777 /nix/var/nix/profiles/per-user
      mkdir -p -m 0755 /nix/var/nix/profiles/per-user/root
      mkdir -p -m 0700 "$HOME/.nix-defexpr"

      . ${pkgs.nix}/etc/profile.d/nix.sh

      ${pkgs.nix}/bin/nix-env -i ${concatStringsSep " " (with pkgs; [ nix cacert git openssh ])}

      ${pkgs.nix}/bin/nix-channel --add https://nixos.org/channels/nixpkgs-unstable
      ${pkgs.nix}/bin/nix-channel --update nixpkgs
    '';
    environmentVariables = {
      ENV = "/etc/profile";
      USER = "root";
      NIX_REMOTE = "daemon";
      PATH = "/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/bin:/sbin:/usr/bin:/usr/sbin";
      NIX_SSL_CERT_FILE = "/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt";
    };
    tagList = [ "nix" ];
  };
  # runner for building docker images
  docker-images = {
    # File should contain at least these two variables:
    # `CI_SERVER_URL`
    # `REGISTRATION_TOKEN`
    registrationConfigFile = "/run/secrets/gitlab-runner-registration";
    dockerImage = "docker:stable";
    dockerVolumes = [
      "/var/run/docker.sock:/var/run/docker.sock"
    ];
    tagList = [ "docker-images" ];
  };
  # runner for executing stuff on host system (very insecure!)
  # make sure to add required packages (including git!)
  # to `environment.systemPackages`
  shell = {
    # File should contain at least these two variables:
    # `CI_SERVER_URL`
    # `REGISTRATION_TOKEN`
    registrationConfigFile = "/run/secrets/gitlab-runner-registration";
    executor = "shell";
    tagList = [ "shell" ];
  };
  # runner for everything else
  default = {
    # File should contain at least these two variables:
    # `CI_SERVER_URL`
    # `REGISTRATION_TOKEN`
    registrationConfigFile = "/run/secrets/gitlab-runner-registration";
    dockerImage = "debian:stable";
  };
}

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.buildsDir

Absolute path to a directory where builds will be stored in context of selected executor (Locally, Docker, SSH).

Type: null or path

Default: null

Example: "/var/lib/gitlab-runner/builds"

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.cloneUrl

Overwrite the URL for the GitLab instance. Used if the Runner can’t connect to GitLab on the URL GitLab exposes itself.

Type: null or string

Default: null

Example: "http://gitlab.example.local"

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.debugTraceDisabled

When set to true Runner will disable the possibility of using the CI_DEBUG_TRACE feature.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.dockerAllowedImages

Whitelist allowed images.

Type: list of string

Default: [ ]

Example:

[
  "ruby:*"
  "python:*"
  "php:*"
  "my.registry.tld:5000/*:*"
]

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.dockerAllowedServices

Whitelist allowed services.

Type: list of string

Default: [ ]

Example:

[
  "postgres:9"
  "redis:*"
  "mysql:*"
]

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.dockerDisableCache

Disable all container caching.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.dockerExtraHosts

Add a custom host-to-IP mapping.

Type: list of string

Default: [ ]

Example:

[
  "other-host:127.0.0.1"
]

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.dockerImage

Docker image to be used.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.dockerPrivileged

Give extended privileges to container.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.dockerVolumes

Bind-mount a volume and create it if it doesn’t exist prior to mounting.

Type: list of string

Default: [ ]

Example:

[
  "/var/run/docker.sock:/var/run/docker.sock"
]

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.environmentVariables

Custom environment variables injected to build environment. For secrets you can use registrationConfigFile with RUNNER_ENV variable set.

Type: attribute set of string

Default: { }

Example:

{
  NAME = "value";
}

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.executor

Select executor, eg. shell, docker, etc. See runner documentation for more information.

Type: string

Default: "docker"

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.limit

Limit how many jobs can be handled concurrently by this service. 0 (default) simply means don’t limit.

Type: signed integer

Default: 0

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.maximumTimeout

What is the maximum timeout (in seconds) that will be set for job when using this Runner. 0 (default) simply means don’t limit.

Type: signed integer

Default: 0

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.postBuildScript

Runner-specific command script executed after code is pulled and just after build executes.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.preBuildScript

Runner-specific command script executed after code is pulled, just before build executes.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.preCloneScript

Runner-specific command script executed before code is pulled.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.protected

When set to true Runner will only run on pipelines triggered on protected branches.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.registrationConfigFile

Absolute path to a file with environment variables used for gitlab-runner registration. A list of all supported environment variables can be found in gitlab-runner register --help.

Ones that you probably want to set is

CI_SERVER_URL=<CI server URL>

REGISTRATION_TOKEN=<registration secret>

Type: path

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.registrationFlags

Extra command-line flags passed to gitlab-runner register. Execute gitlab-runner register --help for a list of supported flags.

Type: list of string

Default: [ ]

Example:

[
  "--docker-helper-image my/gitlab-runner-helper"
]

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.requestConcurrency

Limit number of concurrent requests for new jobs from GitLab.

Type: signed integer

Default: 0

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.runUntagged

Register to run untagged builds; defaults to true when tagList is empty.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.services.<name>.tagList

Tag list.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.sessionServer

The session server allows the user to interact with jobs that the Runner is responsible for. A good example of this is the interactive web terminal.

Type: submodule

Default: { }

Example:

{
  listenAddress = "0.0.0.0:8093";
}

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.sessionServer.advertiseAddress

The URL that the Runner will expose to GitLab to be used to access the session server. Fallbacks to listenAddress if not defined.

Type: null or string

Default: null

Example: "runner-host-name.tld:8093"

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.sessionServer.listenAddress

An internal URL to be used for the session server.

Type: null or string

Default: null

Example: "0.0.0.0:8093"

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.gitlab-runner.sessionServer.sessionTimeout

How long in seconds the session can stay active after the job completes (which will block the job from finishing).

Type: signed integer

Default: 1800

Declared by:

<nix-darwin/modules/services/gitlab-runner.nix>
services.hercules-ci-agent.enable

Enable to run Hercules CI Agent as a system service.

Hercules CI is a continuous integation service that is centered around Nix.

Support is available at help@hercules-ci.com.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.package

Package containing the bin/hercules-ci-agent executable.

Type: package

Default: pkgs.hercules-ci-agent

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.logFile

Stdout and sterr of hercules-ci-agent process.

Type: path

Default: "/var/log/hercules-ci-agent.log"

Declared by:

<nix-darwin/modules/services/hercules-ci-agent>
services.hercules-ci-agent.settings

These settings are written to the agent.toml file.

Not all settings are listed as options, can be set nonetheless.

For the exhaustive list of settings, see https://docs.hercules-ci.com/hercules-ci/reference/agent-config/.

Type: TOML value

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.apiBaseUrl

API base URL that the agent will connect to.

When using Hercules CI Enterprise, set this to the URL where your Hercules CI server is reachable.

Type: string

Default: "https://hercules-ci.com"

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.baseDirectory

State directory (secrets, work directory, etc) for agent

Type: path

Default: "/var/lib/hercules-ci-agent"

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.binaryCachesPath

Path to a JSON file containing binary cache secret keys.

As these values are confidential, they should not be in the store, but copied over using other means, such as agenix, NixOps deployment.keys, or manual installation.

The format is described on https://docs.hercules-ci.com/hercules-ci-agent/binary-caches-json/.

Type: path

Default: staticSecretsDirectory + "/binary-caches.json"

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.clusterJoinTokenPath

Location of the cluster-join-token.key file.

You can retrieve the contents of the file when creating a new agent via https://hercules-ci.com/dashboard.

As this value is confidential, it should not be in the store, but installed using other means, such as agenix, NixOps deployment.keys, or manual installation.

The contents of the file are used for authentication between the agent and the API.

Type: path

Default: staticSecretsDirectory + "/cluster-join-token.key"

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.concurrentTasks

Number of tasks to perform simultaneously.

A task is a single derivation build, an evaluation or an effect run. At minimum, you need 2 concurrent tasks for x86_64-linux in your cluster, to allow for import from derivation.

concurrentTasks can be around the CPU core count or lower if memory is the bottleneck.

The optimal value depends on the resource consumption characteristics of your workload, including memory usage and in-task parallelism. This is typically determined empirically.

When scaling, it is generally better to have a double-size machine than two machines, because each split of resources causes inefficiencies; particularly with regards to build latency because of extra downloads.

Type: positive integer, meaning >0 or value “auto” (singular enum)

Default: "auto", meaning equal to the number of CPU cores.

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.labels

A key-value map of user data.

This data will be available to organization members in the dashboard and API.

The values can be of any TOML type that corresponds to a JSON type, but arrays can not contain tables/objects due to limitations of the TOML library. Values involving arrays of non-primitive types may not be representable currently.

Type: TOML value

Default:

{
  agent.source = "..."; # One of "nixpkgs", "flake", "override"
  lib.version = "...";
  pkgs.version = "...";
}

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.secretsJsonPath

Path to a JSON file containing secrets for effects.

As these values are confidential, they should not be in the store, but copied over using other means, such as agenix, NixOps deployment.keys, or manual installation.

The format is described on https://docs.hercules-ci.com/hercules-ci-agent/secrets-json/.

Type: path

Default: staticSecretsDirectory + "/secrets.json"

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.staticSecretsDirectory

This is the default directory to look for statically configured secrets like cluster-join-token.key.

See also clusterJoinTokenPath and binaryCachesPath for fine-grained configuration.

Type: path

Default: baseDirectory + "/secrets"

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.hercules-ci-agent.settings.workDirectory

The directory in which temporary subdirectories are created for task state. This includes sources for Nix evaluation.

Type: path

Default: baseDirectory + "/work"

Declared by:

<nix-darwin/modules/services/hercules-ci-agent/common.nix>
services.ipfs.enable

Whether to enable the ipfs daemon.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/ipfs.nix>
services.ipfs.enableGarbageCollection

Passes --enable-gc flag to ipfs daemon.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/ipfs.nix>
services.ipfs.package

The ipfs package to use.

Type: package

Default: <derivation kubo-0.24.0>

Declared by:

<nix-darwin/modules/services/ipfs.nix>
services.ipfs.ipfsPath

Set the IPFS_PATH environment variable.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/ipfs.nix>
services.ipfs.logFile

The logfile to use for the ipfs service. Alternatively sudo launchctl debug system/org.nixos.ipfs --stderr can be used to stream the logs to a shell after restarting the service with sudo launchctl kickstart -k system/org.nixos.ipfs.

Type: null or path

Default: null

Example: "/var/tmp/ipfs.log"

Declared by:

<nix-darwin/modules/services/ipfs.nix>
services.karabiner-elements.enable

Whether to enable Karabiner-Elements.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/karabiner-elements>
services.khd.enable

Whether to enable the khd hotkey daemon.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/khd>
services.khd.package

This option specifies the khd package to use.

Type: package

Default: "pkgs.khd"

Declared by:

<nix-darwin/modules/services/khd>
services.khd.i3Keybindings

Wether to configure i3 style keybindings for kwm.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/khd>
services.khd.khdConfig

Config to use for khdrc.

Type: strings concatenated with “\n”

Default: ""

Example: "alt + shift - r : kwmc quit"

Declared by:

<nix-darwin/modules/services/khd>
services.kwm.enable

Whether to enable the khd window manager.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/kwm>
services.kwm.package

This option specifies the kwm package to use.

Type: path

Default: "pkgs.kwm"

Declared by:

<nix-darwin/modules/services/kwm>
services.kwm.kwmConfig

Config to use for kwmrc.

Type: strings concatenated with “\n”

Default: ""

Example: "kwmc rule owner=\"iTerm2\" properties={role=\"AXDialog\"}"

Declared by:

<nix-darwin/modules/services/kwm>
services.lorri.enable

Whether to enable the lorri service.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/lorri.nix>
services.lorri.logFile

The logfile to use for the lorri service. Alternatively sudo launchctl debug system/org.nixos.lorri --stderr can be used to stream the logs to a shell after restarting the service with sudo launchctl kickstart -k system/org.nixos.lorri.

Type: null or path

Default: null

Example: "/var/tmp/lorri.log"

Declared by:

<nix-darwin/modules/services/lorri.nix>
services.mopidy.enable

Whether to enable the Mopidy Daemon.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/mopidy.nix>
services.mopidy.package

This option specifies the mopidy package to use.

Type: path

Default: "pkgs.mopidy"

Declared by:

<nix-darwin/modules/services/mopidy.nix>
services.mopidy.mediakeys.enable

Whether to enable the Mopidy OSX Media Keys support daemon.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/mopidy.nix>
services.mopidy.mediakeys.package

This option specifies the mediakeys package to use.

Type: path

Default: "pkgs.pythonPackages.osxmpdkeys"

Declared by:

<nix-darwin/modules/services/mopidy.nix>
services.netbird.enable

Whether to enable Netbird daemon.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/netbird.nix>
services.netbird.package

The package to use for netbird

Type: package

Default: pkgs.netbird

Declared by:

<nix-darwin/modules/services/netbird.nix>
services.nextdns.enable

Whether to enable the NextDNS DNS/53 to DoH Proxy service.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/nextdns>
services.nextdns.arguments

Additional arguments to be passed to nextdns run.

Type: list of string

Default: [ ]

Example:

[
  "-config"
  "10.0.3.0/24=abcdef"
]

Declared by:

<nix-darwin/modules/services/nextdns>
services.nix-daemon.enable

Whether to enable the nix-daemon service.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/nix-daemon.nix>
services.nix-daemon.enableSocketListener

Whether to make the nix-daemon service socket activated.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/nix-daemon.nix>
services.nix-daemon.logFile

The logfile to use for the nix-daemon service. Alternatively sudo launchctl debug system/org.nixos.nix-daemon --stderr can be used to stream the logs to a shell after restarting the service with sudo launchctl kickstart -k system/org.nixos.nix-daemon.

Type: null or path

Default: null

Example: "/var/log/nix-daemon.log"

Declared by:

<nix-darwin/modules/services/nix-daemon.nix>
services.nix-daemon.tempDir

The TMPDIR to use for nix-daemon.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/nix-daemon.nix>
services.ofborg.enable

Whether to enable the ofborg builder service.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/ofborg>
services.ofborg.package

This option specifies the ofborg package to use. eg.

(import <ofborg> {}).ofborg.rs

$ nix-channel --add https://github.com/NixOS/ofborg/archive/released.tar.gz ofborg $ nix-channel --update

Type: package

Example: pkgs.ofborg

Declared by:

<nix-darwin/modules/services/ofborg>
services.ofborg.configFile

Configuration file to use for ofborg.

WARNING Don’t use a path literal or derivation for this, that would expose credentials in the store making them world readable.

Type: path

Declared by:

<nix-darwin/modules/services/ofborg>
services.ofborg.logFile

The logfile to use for the ofborg service.

Type: path

Default: "/var/log/ofborg.log"

Declared by:

<nix-darwin/modules/services/ofborg>
services.offlineimap.enable

Whether to enable Offlineimap, a software to dispose your mailbox(es) as a local Maildir(s).

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/mail/offlineimap.nix>
services.offlineimap.package

Offlineimap derivation to use.

Type: package

Default: "pkgs.offlineimap"

Declared by:

<nix-darwin/modules/services/mail/offlineimap.nix>
services.offlineimap.extraConfig

Additional text to be appended to offlineimaprc.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/services/mail/offlineimap.nix>
services.offlineimap.path

List of derivations to put in Offlineimap’s path.

Type: list of path

Default: [ ]

Example: [ pkgs.pass pkgs.bash pkgs.notmuch ]

Declared by:

<nix-darwin/modules/services/mail/offlineimap.nix>
services.offlineimap.runQuick

Run only quick synchronizations. Ignore any flag updates on IMAP servers. If a flag on the remote IMAP changes, and we have the message locally, it will be left untouched in a quick run.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/mail/offlineimap.nix>
services.offlineimap.startInterval

Optional key to start offlineimap services each N seconds

Type: null or signed integer

Default: 300

Declared by:

<nix-darwin/modules/services/mail/offlineimap.nix>
services.openssh.authorizedKeysFiles

Specify the rules for which files to read on the host.

This is an advanced option. If you’re looking to configure user keys, you can generally use users.users.<name>.openssh.authorizedKeys.keys or users.users.<name>.openssh.authorizedKeys.keyFiles.

These are paths relative to the host root file system or home directories and they are subject to certain token expansion rules. See AuthorizedKeysFile in man sshd_config for details.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/programs/ssh>
services.postgresql.enable

Whether to enable PostgreSQL Server.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.enableTCPIP

Whether PostgreSQL should listen on all network interfaces. If disabled, the database can only be accessed via its Unix domain socket or via TCP connections to localhost.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.package

PostgreSQL package to use.

Type: package

Example: pkgs.postgresql_11

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.authentication

Defines how users authenticate themselves to the server. See the PostgreSQL documentation for pg_hba.conf for details on the expected format of this option. By default, peer based authentication will be used for users connecting via the Unix socket, and md5 password authentication will be used for users connecting via TCP. Any added rules will be inserted above the default rules. If you’d like to replace the default rules entirely, you can use lib.mkForce in your module.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.checkConfig

Check the syntax of the configuration file at compile time

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.dataDir

The data directory for PostgreSQL. If left as the default value this directory will automatically be created before the PostgreSQL server starts, otherwise the sysadmin is responsible for ensuring the directory exists with appropriate ownership and permissions.

Type: path

Default: "/var/lib/postgresql/${config.services.postgresql.package.psqlSchema}"

Example: "/var/lib/postgresql/11"

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.ensureDatabases

Ensures that the specified databases exist. This option will never delete existing databases, especially not when the value of this option is changed. This means that databases created once through this option or otherwise have to be removed manually.

Type: list of string

Default: [ ]

Example:

[
  "gitea"
  "nextcloud"
]

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.ensureUsers

Ensures that the specified users exist and have at least the ensured permissions. The PostgreSQL users will be identified using peer authentication. This authenticates the Unix user with the same name only, and that without the need for a password. This option will never delete existing users or remove permissions, especially not when the value of this option is changed. This means that users created and permissions assigned once through this option or otherwise have to be removed manually.

Type: list of (submodule)

Default: [ ]

Example:

[
  {
    name = "nextcloud";
    ensurePermissions = {
      "DATABASE nextcloud" = "ALL PRIVILEGES";
    };
  }
  {
    name = "superuser";
    ensurePermissions = {
      "ALL TABLES IN SCHEMA public" = "ALL PRIVILEGES";
    };
  }
]

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.ensureUsers.*.ensurePermissions

Permissions to ensure for the user, specified as an attribute set. The attribute names specify the database and tables to grant the permissions for. The attribute values specify the permissions to grant. You may specify one or multiple comma-separated SQL privileges here.

For more information on how to specify the target and on which privileges exist, see the GRANT syntax. The attributes are used as GRANT ${attrValue} ON ${attrName}.

Type: attribute set of string

Default: { }

Example:

{
  "DATABASE \"nextcloud\"" = "ALL PRIVILEGES";
  "ALL TABLES IN SCHEMA public" = "ALL PRIVILEGES";
}

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.ensureUsers.*.name

Name of the user to ensure.

Type: string

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.extraPlugins

List of PostgreSQL plugins. PostgreSQL version for each plugin should match version for services.postgresql.package value.

Type: list of path

Default: [ ]

Example: with pkgs.postgresql_11.pkgs; [ postgis pg_repack ]

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.identMap

Defines the mapping from system users to database users.

The general form is:

map-name system-username database-username

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.initdbArgs

Additional arguments passed to initdb during data dir initialisation.

Type: list of string

Default: [ ]

Example:

[
  "--data-checksums"
  "--allow-group-access"
]

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.initialScript

A file containing SQL statements to execute on first startup.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.logLinePrefix

A printf-style string that is output at the beginning of each log line. Upstream default is '%m [%p] ', i.e. it includes the timestamp. We do not include the timestamp, because journal has it anyway.

Type: string

Default: "[%p] "

Example: "%m [%p] "

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.port

The port on which PostgreSQL listens.

Type: signed integer

Default: 5432

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.recoveryConfig

Contents of the recovery.conf file.

Type: null or strings concatenated with “\n”

Default: null

Declared by:

<nix-darwin/modules/services/postgresql>
services.postgresql.settings

PostgreSQL configuration. Refer to https://www.postgresql.org/docs/11/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE for an overview of postgresql.conf.

Note

String values will automatically be enclosed in single quotes. Single quotes will be escaped with two single quotes as described by the upstream documentation linked above.

Type: attribute set of (boolean or floating point number or signed integer or string)

Default: { }

Example:

{
  log_connections = true;
  log_statement = "all";
  logging_collector = true
  log_disconnections = true
  log_destination = lib.mkForce "syslog";
}

Declared by:

<nix-darwin/modules/services/postgresql>
services.privoxy.enable

Whether to enable the privoxy proxy service.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/privoxy>
services.privoxy.package

This option specifies the privoxy package to use.

Type: package

Default: <derivation privoxy-3.0.34>

Example: pkgs.privoxy

Declared by:

<nix-darwin/modules/services/privoxy>
services.privoxy.confdir

Directory for privoxy files such as .action and .filter.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/services/privoxy>
services.privoxy.config

Config to use for privoxy

Type: strings concatenated with “\n”

Default: ""

Example: "forward / upstream.proxy:8080"

Declared by:

<nix-darwin/modules/services/privoxy>
services.privoxy.listenAddress

The address and TCP port on which privoxy will listen.

Type: string

Default: "127.0.0.1:8118"

Declared by:

<nix-darwin/modules/services/privoxy>
services.privoxy.templdir

Directory for privoxy template files.

Type: path

Default: "\${pkgs.privoxy}/etc/templates"

Declared by:

<nix-darwin/modules/services/privoxy>
services.redis.enable

Whether to enable the redis database service.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/redis>
services.redis.package

This option specifies the redis package to use

Type: path

Default: "pkgs.redis"

Declared by:

<nix-darwin/modules/services/redis>
services.redis.appendOnly

By default data is only periodically persisted to disk, enable this option to use an append-only file for improved persistence.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/redis>
services.redis.bind

The IP interface to bind to.

Type: null or string

Default: null

Example: "127.0.0.1"

Declared by:

<nix-darwin/modules/services/redis>
services.redis.dataDir

Data directory for the redis database.

Type: null or path

Default: "/var/lib/redis"

Declared by:

<nix-darwin/modules/services/redis>
services.redis.extraConfig

Additional text to be appended to redis.conf.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/services/redis>
services.redis.port

The port for Redis to listen to.

Type: signed integer

Default: 6379

Declared by:

<nix-darwin/modules/services/redis>
services.redis.unixSocket

The path to the socket to bind to.

Type: null or path

Default: null

Example: "/var/run/redis.sock"

Declared by:

<nix-darwin/modules/services/redis>
services.sketchybar.enable

Whether to enable sketchybar.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/sketchybar>
services.sketchybar.package

The sketchybar package to use.

Type: package

Default: pkgs.sketchybar

Declared by:

<nix-darwin/modules/services/sketchybar>
services.sketchybar.config

Contents of sketchybar’s configuration file. If empty (the default), the configuration file won’t be managed.

See documentation and example.

Type: strings concatenated with “\n”

Default: ""

Example:

''
  sketchybar --bar height=24
  sketchybar --update
  echo "sketchybar configuration loaded.."
''

Declared by:

<nix-darwin/modules/services/sketchybar>
services.sketchybar.extraPackages

Extra packages to add to PATH.

Type: list of package

Default: [ ]

Example: [ pkgs.jq ]

Declared by:

<nix-darwin/modules/services/sketchybar>
services.skhd.enable

Whether to enable the skhd hotkey daemon.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/skhd>
services.skhd.package

This option specifies the skhd package to use.

Type: package

Default: <derivation skhd-0.3.9>

Declared by:

<nix-darwin/modules/services/skhd>
services.skhd.skhdConfig

Config to use for skhdrc.

Type: strings concatenated with “\n”

Default: ""

Example: "alt + shift - r : chunkc quit"

Declared by:

<nix-darwin/modules/services/skhd>
services.spacebar.enable

Whether to enable the spacebar spacebar.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/spacebar>
services.spacebar.package

The spacebar package to use.

Type: path

Declared by:

<nix-darwin/modules/services/spacebar>
services.spacebar.config

Key/Value pairs to pass to spacebar’s ‘config’ domain, via the configuration file.

Type: attribute set

Default: { }

Example:

{
  clock_format     = "%R";
  background_color = "0xff202020";
  foreground_color = "0xffa8a8a8";
}

Declared by:

<nix-darwin/modules/services/spacebar>
services.spacebar.extraConfig

Extra arbitrary configuration to append to the configuration file.

Type: string

Default: ""

Example:

echo "spacebar config loaded..."

Declared by:

<nix-darwin/modules/services/spacebar>
services.spotifyd.enable

Whether to enable the spotifyd service.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/spotifyd.nix>
services.spotifyd.package

The spotifyd package to use.

Type: path

Default: "pkgs.spotifyd"

Declared by:

<nix-darwin/modules/services/spotifyd.nix>
services.spotifyd.settings

Configuration for spotifyd, see https://spotifyd.github.io/spotifyd/config/File.html for supported values.

Type: null or TOML value

Default: null

Example:

{
  bitrate = 160;
  volume_normalisation = true;
}

Declared by:

<nix-darwin/modules/services/spotifyd.nix>
services.synapse-bt.enable

Whether to run Synapse BitTorrent Daemon.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/synapse-bt.nix>
services.synapse-bt.package

Synapse BitTorrent package to use.

Type: package

Default: "pkgs.synapse-bt"

Declared by:

<nix-darwin/modules/services/synapse-bt.nix>
services.synapse-bt.downloadDir

Download directory for Synapse BitTorrent.

Type: path

Default: "/var/lib/synapse-bt"

Example: "/var/lib/synapse-bt/downloads"

Declared by:

<nix-darwin/modules/services/synapse-bt.nix>
services.synapse-bt.extraConfig

Extra configuration options for Synapse BitTorrent.

Type: attribute set

Default: { }

Declared by:

<nix-darwin/modules/services/synapse-bt.nix>
services.synapse-bt.port

The port on which Synapse BitTorrent listens.

Type: signed integer

Default: 16384

Declared by:

<nix-darwin/modules/services/synapse-bt.nix>
services.synergy.package

The package used for the synergy client and server.

Type: package

Default: "pkgs.synergy"

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.client.enable

Whether to enable the Synergy client (receive keyboard and mouse events from a Synergy server).

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.client.autoStart

Whether the Synergy client should be started automatically.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.client.screenName

Use the given name instead of the hostname to identify ourselves to the server.

Type: string

Default: ""

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.client.serverAddress

The server address is of the form: [hostname][:port]. The hostname must be the address or hostname of the server. The port overrides the default port, 24800.

Type: string

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.client.tls.enable

Whether to enable Whether TLS encryption should be used.

Using this requires a TLS certificate that can be generated by starting the Synergy GUI once and entering a valid product key.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.client.tls.cert

The TLS certificate to use for encryption.

Type: null or string

Default: null

Example: "~/.synergy/SSL/Synergy.pem"

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.server.enable

Whether to enable the Synergy server (send keyboard and mouse events).

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.server.address

Address on which to listen for clients.

Type: string

Default: ""

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.server.autoStart

Whether the Synergy server should be started automatically.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.server.configFile

The Synergy server configuration file.

Type: string

Default: "/etc/synergy-server.conf"

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.server.screenName

Use the given name instead of the hostname to identify this screen in the configuration.

Type: string

Default: ""

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.server.tls.enable

Whether to enable Whether TLS encryption should be used.

Using this requires a TLS certificate that can be generated by starting the Synergy GUI once and entering a valid product key.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/synergy>
services.synergy.server.tls.cert

The TLS certificate to use for encryption.

Type: null or string

Default: null

Example: "~/.synergy/SSL/Synergy.pem"

Declared by:

<nix-darwin/modules/services/synergy>
services.tailscale.enable

Whether to enable Tailscale client daemon.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/tailscale.nix>
services.tailscale.package

The package to use for tailscale

Type: package

Default: pkgs.tailscale

Declared by:

<nix-darwin/modules/services/tailscale.nix>
services.tailscale.overrideLocalDns

This option implements Override local DNS as it is not yet implemented in Tailscaled-on-macOS.

To use this option, in the Tailscale control panel:

  1. at least one DNS server is added

  2. Override local DNS is enabled

As this option sets 100.100.100.100 as your sole DNS server, if the requirements above are not met, all non-MagicDNS queries WILL fail.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/tailscale.nix>
services.telegraf.enable

Whether to enable telegraf agent.

Type: boolean

Default: false

Example: true

Declared by:

<nix-darwin/modules/services/monitoring/telegraf.nix>
services.telegraf.package

Which telegraf derivation to use

Type: package

Default: pkgs.telegraf

Declared by:

<nix-darwin/modules/services/monitoring/telegraf.nix>
services.telegraf.configUrl

Url to fetch config from

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/services/monitoring/telegraf.nix>
services.telegraf.environmentFiles

File to load as environment file. This is useful to avoid putting secrets into the nix store.

Type: list of path

Default: [ ]

Example:

[
  "/run/keys/telegraf.env"
]

Declared by:

<nix-darwin/modules/services/monitoring/telegraf.nix>
services.telegraf.extraConfig

Extra configuration options for telegraf

Type: TOML value

Default: { }

Example:

{
  inputs = {
    statsd = {
      delete_timings = true;
      service_address = ":8125";
    };
  };
  outputs = {
    influxdb = {
      database = "telegraf";
      urls = [
        "http://localhost:8086"
      ];
    };
  };
}

Declared by:

<nix-darwin/modules/services/monitoring/telegraf.nix>
services.trezord.enable

Enable Trezor bridge daemon, for use with Trezor hardware wallets.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/trezord.nix>
services.trezord.emulator.enable

Enable Trezor emulator support.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/trezord.nix>
services.trezord.emulator.port

Listening port for the Trezor emulator.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 21324

Declared by:

<nix-darwin/modules/services/trezord.nix>
services.yabai.enable

Whether to enable the yabai window manager.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/yabai>
services.yabai.enableScriptingAddition

Whether to enable yabai’s scripting-addition. SIP must be disabled for this to work.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/services/yabai>
services.yabai.package

The yabai package to use.

Type: path

Default: <derivation yabai-6.0.1>

Declared by:

<nix-darwin/modules/services/yabai>
services.yabai.config

Key/Value pairs to pass to yabai’s ‘config’ domain, via the configuration file.

Type: attribute set

Default: { }

Example:

{
  focus_follows_mouse = "autoraise";
  mouse_follows_focus = "off";
  window_placement    = "second_child";
  window_opacity      = "off";
  top_padding         = 36;
  bottom_padding      = 10;
  left_padding        = 10;
  right_padding       = 10;
  window_gap          = 10;
}

Declared by:

<nix-darwin/modules/services/yabai>
services.yabai.extraConfig

Extra arbitrary configuration to append to the configuration file

Type: strings concatenated with “\n”

Default: ""

Example:

yabai -m rule --add app='System Preferences' manage=off

Declared by:

<nix-darwin/modules/services/yabai>
system.activationScripts.<name>.enable

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

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/system/activation-scripts.nix>
system.activationScripts.<name>.copy

Whether this file should be copied instead of symlinking.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/activation-scripts.nix>
system.activationScripts.<name>.source

Path of the source file.

Type: path

Declared by:

<nix-darwin/modules/system/activation-scripts.nix>
system.activationScripts.<name>.target

Name of symlink. Defaults to the attribute name.

Type: string

Default: "‹name›"

Declared by:

<nix-darwin/modules/system/activation-scripts.nix>
system.activationScripts.<name>.text

Text of the file.

Type: strings concatenated with “\n”

Default: ""

Declared by:

<nix-darwin/modules/system/activation-scripts.nix>
system.checks.verifyBuildUsers

Whether to run the Nix build users validation checks.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/system/checks.nix>
system.checks.verifyNixChannels

Whether to run the nix-channels validation checks.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/system/checks.nix>
system.checks.verifyNixPath

Whether to run the NIX_PATH validation checks.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/system/checks.nix>
system.configurationRevision

The Git revision of the top-level flake from which this configuration was built.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/version.nix>
system.darwinLabel

Label to be used in the names of generated outputs.

Type: string

Declared by:

<nix-darwin/modules/system/version.nix>
system.defaults.".GlobalPreferences"."com.apple.mouse.scaling"

Sets the mouse tracking speed. Found in the “Mouse” section of “System Preferences”. Set to -1.0 to disable mouse acceleration.

Type: null or floating point number

Default: null

Example: -1.0

Declared by:

<nix-darwin/modules/system/defaults/GlobalPreferences.nix>
system.defaults.".GlobalPreferences"."com.apple.sound.beep.sound"

Sets the system-wide alert sound. Found under “Sound Effects” in the “Sound” section of “System Preferences”. Look in “/System/Library/Sounds” for possible candidates.

Type: null or path

Default: null

Declared by:

<nix-darwin/modules/system/defaults/GlobalPreferences.nix>
system.defaults.ActivityMonitor.IconType

Change the icon in the dock when running.

  • 0: Application Icon

  • 2: Network Usage

  • 3: Disk Activity

  • 5: CPU Usage

  • 6: CPU History Default is null.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/ActivityMonitor.nix>
system.defaults.ActivityMonitor.OpenMainWindow

Open the main window when opening Activity Monitor. Default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/ActivityMonitor.nix>
system.defaults.ActivityMonitor.ShowCategory

Change which processes to show.

  • 100: All Processes

  • 101: All Processes, Hierarchally

  • 102: My Processes

  • 103: System Processes

  • 104: Other User Processes

  • 105: Active Processes

  • 106: Inactive Processes

  • 107: Windowed Processes Default is 100.

Type: null or one of 100, 101, 102, 103, 104, 105, 106, 107

Default: null

Declared by:

<nix-darwin/modules/system/defaults/ActivityMonitor.nix>
system.defaults.ActivityMonitor.SortColumn

Which column to sort the main activity page (such as “CPUUsage”). Default is null.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/ActivityMonitor.nix>
system.defaults.ActivityMonitor.SortDirection

The sort direction of the sort column (0 is decending). Default is null.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/ActivityMonitor.nix>
system.defaults.CustomSystemPreferences

Sets custom system preferences

Type: attribute set

Default: { }

Example:

{
  NSGlobalDomain = {
    TISRomanSwitchState = 1;
  };
  "com.apple.Safari" = {
    "com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled" = true;
  };
}

Declared by:

<nix-darwin/modules/system/defaults/CustomPreferences.nix>
system.defaults.CustomUserPreferences

Sets custom user preferences

Type: attribute set

Default: { }

Example:

{
  NSGlobalDomain = {
    TISRomanSwitchState = 1;
  };
  "com.apple.Safari" = {
    "com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled" = true;
  };
}

Declared by:

<nix-darwin/modules/system/defaults/CustomPreferences.nix>
system.defaults.LaunchServices.LSQuarantine

Whether to enable quarantine for downloaded applications. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/LaunchServices.nix>
system.defaults.NSGlobalDomain.AppleEnableMouseSwipeNavigateWithScrolls

Enables swiping left or right with two fingers to navigate backward or forward. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleEnableSwipeNavigateWithScrolls

Enables swiping left or right with two fingers to navigate backward or forward. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleFontSmoothing

Sets the level of font smoothing (sub-pixel font rendering).

Type: null or one of 0, 1, 2

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleICUForce24HourTime

Whether to use 24-hour or 12-hour time. The default is based on region settings.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleInterfaceStyle

Set to ‘Dark’ to enable dark mode, or leave unset for normal mode.

Type: null or value “Dark” (singular enum)

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleInterfaceStyleSwitchesAutomatically

Whether to automatically switch between light and dark mode. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleKeyboardUIMode

Configures the keyboard control behavior. Mode 3 enables full keyboard control.

Type: null or value 3 (singular enum)

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleMeasurementUnits

Whether to use centimeters (metric) or inches (US, UK) as the measurement unit. The default is based on region settings.

Type: null or one of “Centimeters”, “Inches”

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleMetricUnits

Whether to use the metric system. The default is based on region settings.

Type: null or one of 0, 1

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.ApplePressAndHoldEnabled

Whether to enable the press-and-hold feature. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleScrollerPagingBehavior

Jump to the spot that’s clicked on the scroll bar. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleShowAllExtensions

Whether to show all file extensions in Finder. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleShowAllFiles

Whether to always show hidden files. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleShowScrollBars

When to show the scrollbars. Options are ‘WhenScrolling’, ‘Automatic’ and ‘Always’.

Type: null or one of “WhenScrolling”, “Automatic”, “Always”

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleTemperatureUnit

Whether to use Celsius or Fahrenheit. The default is based on region settings.

Type: null or one of “Celsius”, “Fahrenheit”

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.AppleWindowTabbingMode

Sets the window tabbing when opening a new document: ‘manual’, ‘always’, or ‘fullscreen’. The default is ‘fullscreen’.

Type: null or one of “manual”, “always”, “fullscreen”

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.InitialKeyRepeat

Apple menu > System Preferences > Keyboard

If you press and hold certain keyboard keys when in a text area, the key’s character begins to repeat. For example, the Delete key continues to remove text for as long as you hold it down.

This sets how long you must hold down the key before it starts repeating.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.KeyRepeat

Apple menu > System Preferences > Keyboard

If you press and hold certain keyboard keys when in a text area, the key’s character begins to repeat. For example, the Delete key continues to remove text for as long as you hold it down.

This sets how fast it repeats once it starts.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSAutomaticCapitalizationEnabled

Whether to enable automatic capitalization. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSAutomaticDashSubstitutionEnabled

Whether to enable smart dash substitution. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSAutomaticPeriodSubstitutionEnabled

Whether to enable smart period substitution. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSAutomaticQuoteSubstitutionEnabled

Whether to enable smart quote substitution. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSAutomaticSpellingCorrectionEnabled

Whether to enable automatic spelling correction. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSAutomaticWindowAnimationsEnabled

Whether to animate opening and closing of windows and popovers. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSDisableAutomaticTermination

Whether to disable the automatic termination of inactive apps.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSDocumentSaveNewDocumentsToCloud

Whether to save new documents to iCloud by default. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSNavPanelExpandedStateForSaveMode

Whether to use expanded save panel by default. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSNavPanelExpandedStateForSaveMode2

Whether to use expanded save panel by default. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSScrollAnimationEnabled

Whether to enable smooth scrolling. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSTableViewDefaultSizeMode

Sets the size of the finder sidebar icons: 1 (small), 2 (medium) or 3 (large). The default is 3.

Type: null or one of 1, 2, 3

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSTextShowsControlCharacters

Whether to display ASCII control characters using caret notation in standard text views. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSUseAnimatedFocusRing

Whether to enable the focus ring animation. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSWindowResizeTime

Sets the speed speed of window resizing. The default is given in the example.

Type: null or floating point number

Default: null

Example: 0.2

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.NSWindowShouldDragOnGesture

Whether to enable moving window by holding anywhere on it like on Linux. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.PMPrintingExpandedStateForPrint

Whether to use the expanded print panel by default. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain.PMPrintingExpandedStateForPrint2

Whether to use the expanded print panel by default. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain._HIHideMenuBar

Whether to autohide the menu bar. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.keyboard.fnState"

Use F1, F2, etc. keys as standard function keys.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.mouse.tapBehavior"

Configures the trackpad tap behavior. Mode 1 enables tap to click.

Type: null or value 1 (singular enum)

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.sound.beep.feedback"

Apple menu > System Preferences > Sound

Make a feedback sound when the system volume changed. This setting accepts the integers 0 or 1. Defaults to 1.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.sound.beep.volume"

Apple menu > System Preferences > Sound

Sets the beep/alert volume level from 0.000 (muted) to 1.000 (100% volume).

75% = 0.7788008

50% = 0.6065307

25% = 0.4723665

Type: null or floating point number

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.springing.delay"

Set the spring loading delay for directories. The default is given in the example.

Type: null or floating point number

Default: null

Example: 1.0

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.springing.enabled"

Whether to enable spring loading (expose) for directories.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.swipescrolldirection"

Whether to enable “Natural” scrolling direction. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.trackpad.enableSecondaryClick"

Whether to enable trackpad secondary click. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.trackpad.scaling"

Configures the trackpad tracking speed (0 to 3). The default is “1”.

Type: null or floating point number

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.NSGlobalDomain."com.apple.trackpad.trackpadCornerClickBehavior"

Configures the trackpad corner click behavior. Mode 1 enables right click.

Type: null or value 1 (singular enum)

Default: null

Declared by:

<nix-darwin/modules/system/defaults/NSGlobalDomain.nix>
system.defaults.SoftwareUpdate.AutomaticallyInstallMacOSUpdates

Automatically install Mac OS software updates. Defaults to false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/SoftwareUpdate.nix>
system.defaults.alf.allowdownloadsignedenabled

Apple menu > System Preferences > Security and Privacy > Firewall

Allows any downloaded Application that has been signed to accept incoming requests. Default is 0.

0 = disabled 1 = enabled

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/alf.nix>
system.defaults.alf.allowsignedenabled

Apple menu > System Preferences > Security and Privacy > Firewall

Allows any signed Application to accept incoming requests. Default is true.

0 = disabled 1 = enabled

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/alf.nix>
system.defaults.alf.globalstate

Apple menu > System Preferences > Security and Privacy > Firewall

Enable the internal firewall to prevent unauthorised applications, programs and services from accepting incoming connections.

0 = disabled 1 = enabled 2 = blocks all connections except for essential services

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/alf.nix>
system.defaults.alf.loggingenabled

Apple menu > System Preferences > Security and Privacy > Firewall

Enable logging of requests made to the firewall. Default is 0.

0 = disabled 1 = enabled

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/alf.nix>
system.defaults.alf.stealthenabled

Apple menu > System Preferences > Security and firewall

Drops incoming requests via ICMP such as ping requests. Default is 0.

0 = disabled 1 = enabled

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/alf.nix>
system.defaults.dock.enable-spring-load-actions-on-all-items

Enable spring loading for all Dock items. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.appswitcher-all-displays

Whether to display the appswitcher on all displays or only the main one. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.autohide

Whether to automatically hide and show the dock. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.autohide-delay

Sets the speed of the autohide delay. The default is given in the example.

Type: null or floating point number

Default: null

Example: 0.24

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.autohide-time-modifier

Sets the speed of the animation when hiding/showing the Dock. The default is given in the example.

Type: null or floating point number

Default: null

Example: 1.0

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.dashboard-in-overlay

Whether to hide Dashboard as a Space. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.expose-animation-duration

Sets the speed of the Mission Control animations. The default is given in the example.

Type: null or floating point number

Default: null

Example: 1.0

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.expose-group-by-app

Whether to group windows by application in Mission Control’s Exposé. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.largesize

Magnified icon size on hover. The default is 16.

Type: null or integer between 16 and 128 (both inclusive)

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.launchanim

Animate opening applications from the Dock. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.magnification

Magnify icon on hover. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.mineffect

Set the minimize/maximize window effect. The default is genie.

Type: null or one of “genie”, “suck”, “scale”

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.minimize-to-application

Whether to minimize windows into their application icon. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.mouse-over-hilite-stack

Enable highlight hover effect for the grid view of a stack in the Dock.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.mru-spaces

Whether to automatically rearrange spaces based on most recent use. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.orientation

Position of the dock on screen. The default is “bottom”.

Type: null or one of “bottom”, “left”, “right”

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.persistent-apps

Persistent applications in the dock.

Type: null or (list of (path or string))

Default: null

Example:

[
  "/Applications/Safari.app"
  "/System/Applications/Utilities/Terminal.app"
]

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.show-process-indicators

Show indicator lights for open applications in the Dock. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.show-recents

Show recent applications in the dock. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.showhidden

Whether to make icons of hidden applications tranclucent. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.static-only

Show only open applications in the Dock. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.tilesize

Size of the icons in the dock. The default is 64.

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.wvous-bl-corner

Hot corner action for bottom left corner. Valid values include:

  • 1: Disabled

  • 2: Mission Control

  • 3: Application Windows

  • 4: Desktop

  • 5: Start Screen Saver

  • 6: Disable Screen Saver

  • 7: Dashboard

  • 10: Put Display to Sleep

  • 11: Launchpad

  • 12: Notification Center

  • 13: Lock Screen

  • 14: Quick Note

Type: null or positive integer, meaning >0

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.wvous-br-corner

Hot corner action for bottom right corner. Valid values include:

  • 1: Disabled

  • 2: Mission Control

  • 3: Application Windows

  • 4: Desktop

  • 5: Start Screen Saver

  • 6: Disable Screen Saver

  • 7: Dashboard

  • 10: Put Display to Sleep

  • 11: Launchpad

  • 12: Notification Center

  • 13: Lock Screen

  • 14: Quick Note

Type: null or positive integer, meaning >0

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.wvous-tl-corner

Hot corner action for top left corner. Valid values include:

  • 1: Disabled

  • 2: Mission Control

  • 3: Application Windows

  • 4: Desktop

  • 5: Start Screen Saver

  • 6: Disable Screen Saver

  • 7: Dashboard

  • 10: Put Display to Sleep

  • 11: Launchpad

  • 12: Notification Center

  • 13: Lock Screen

  • 14: Quick Note

Type: null or positive integer, meaning >0

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.dock.wvous-tr-corner

Hot corner action for top right corner. Valid values include:

  • 1: Disabled

  • 2: Mission Control

  • 3: Application Windows

  • 4: Desktop

  • 5: Start Screen Saver

  • 6: Disable Screen Saver

  • 7: Dashboard

  • 10: Put Display to Sleep

  • 11: Launchpad

  • 12: Notification Center

  • 13: Lock Screen

  • 14: Quick Note

Type: null or positive integer, meaning >0

Default: null

Declared by:

<nix-darwin/modules/system/defaults/dock.nix>
system.defaults.finder.AppleShowAllExtensions

Whether to always show file extensions. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder.AppleShowAllFiles

Whether to always show hidden files. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder.CreateDesktop

Whether to show icons on the desktop or not. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder.FXDefaultSearchScope

Change the default search scope. Use “SCcf” to default to current folder. The default is unset (“This Mac”).

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder.FXEnableExtensionChangeWarning

Whether to show warnings when change the file extension of files. The default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder.FXPreferredViewStyle

Change the default finder view. “icnv” = Icon view, “Nlsv” = List view, “clmv” = Column View, “Flwv” = Gallery View The default is icnv.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder.QuitMenuItem

Whether to allow quitting of the Finder. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder.ShowPathbar

Show path breadcrumbs in finder windows. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder.ShowStatusBar

Show status bar at bottom of finder windows with item/disk space stats. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.finder._FXShowPosixPathInTitle

Whether to show the full POSIX filepath in the window title. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/finder.nix>
system.defaults.loginwindow.DisableConsoleAccess

Disables the ability for a user to access the console by typing “>console” for a username at the login window. Default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.GuestEnabled

Apple menu > System Preferences > Users and Groups > Login Options

Allow users to login to the machine as guests using the Guest account. Default is true.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.LoginwindowText

Text to be shown on the login window. Default is “\\U03bb”.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.PowerOffDisabledWhileLoggedIn

Apple menu > System Preferences > Users and Groups > Login Options

If set to true, the Power Off menu item will be disabled when the user is logged in. Default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.RestartDisabled

Apple menu > System Preferences > Users and Groups > Login Options

Hides the Restart button on the login screen. Default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.RestartDisabledWhileLoggedIn

Apple menu > System Preferences > Users and Groups > Login Options

Disables the “Restart” option when users are logged in. Default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.SHOWFULLNAME

Apple menu > System Preferences > Users and Groups > Login Options

Displays login window as a name and password field instead of a list of users. Default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.ShutDownDisabled

Apple menu > System Preferences > Users and Groups > Login Options

Hides the Shut Down button on the login screen. Default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.ShutDownDisabledWhileLoggedIn

Apple menu > System Preferences > Users and Groups > Login Options

Disables the “Shutdown” option when users are logged in. Default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.SleepDisabled

Apple menu > System Preferences > Users and Groups > Login Options

Hides the Sleep button on the login screen. Default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.loginwindow.autoLoginUser

Apple menu > System Preferences > Users and Groups > Login Options

Auto login the supplied user on boot. Default is Off.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/loginwindow.nix>
system.defaults.magicmouse.MouseButtonMode

“OneButton”: any tap is a left click. “TwoButton”: allow left- and right-clicking.

Type: null or one of “OneButton”, “TwoButton”

Default: null

Declared by:

<nix-darwin/modules/system/defaults/magicmouse.nix>
system.defaults.menuExtraClock.IsAnalog

Show an analog clock instead of a digital one. Default is null.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/clock.nix>
system.defaults.menuExtraClock.Show24Hour

Show a 24-hour clock, instead of a 12-hour clock. Default is null.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/clock.nix>
system.defaults.menuExtraClock.ShowAMPM

Show the AM/PM label. Useful if Show24Hour is false. Default is null.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/clock.nix>
system.defaults.menuExtraClock.ShowDate

Show the full date. Default is null.

0 = When space allows 1 = Always 2 = Never

Type: null or one of 0, 1, 2

Default: null

Declared by:

<nix-darwin/modules/system/defaults/clock.nix>
system.defaults.menuExtraClock.ShowDayOfMonth

Show the day of the month. Default is null.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/clock.nix>
system.defaults.menuExtraClock.ShowDayOfWeek

Show the day of the week. Default is null.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/clock.nix>
system.defaults.menuExtraClock.ShowSeconds

Show the clock with second precision, instead of minutes. Default is null.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/clock.nix>
system.defaults.screencapture.disable-shadow

Disable drop shadow border around screencaptures. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/screencapture.nix>
system.defaults.screencapture.location

The filesystem path to which screencaptures should be written.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/screencapture.nix>
system.defaults.screencapture.type

The image format to use, such as “jpg”.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/screencapture.nix>
system.defaults.screensaver.askForPassword

If true, the user is prompted for a password when the screen saver is unlocked or stopped. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/screensaver.nix>
system.defaults.screensaver.askForPasswordDelay

The number of seconds to delay before the password will be required to unlock or stop the screen saver (the grace period).

Type: null or signed integer

Default: null

Declared by:

<nix-darwin/modules/system/defaults/screensaver.nix>
system.defaults.smb.NetBIOSName

Hostname to use for NetBIOS.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/smb.nix>
system.defaults.smb.ServerDescription

Hostname to use for sharing services.

Type: null or string

Default: null

Declared by:

<nix-darwin/modules/system/defaults/smb.nix>
system.defaults.spaces.spans-displays

Apple menu > System Preferences > Mission Control

Displays have separate Spaces (note a logout is required before this setting will take effect).

false = each physical display has a separate space (Mac default) true = one space spans across all physical displays

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/spaces.nix>
system.defaults.trackpad.ActuationStrength

0 to enable Silent Clicking, 1 to disable. The default is 1.

Type: null or one of 0, 1

Default: null

Declared by:

<nix-darwin/modules/system/defaults/trackpad.nix>
system.defaults.trackpad.Clicking

Whether to enable trackpad tap to click. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/trackpad.nix>
system.defaults.trackpad.Dragging

Whether to enable tap-to-drag. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/trackpad.nix>
system.defaults.trackpad.FirstClickThreshold

For normal click: 0 for light clicking, 1 for medium, 2 for firm. The default is 1.

Type: null or one of 0, 1, 2

Default: null

Declared by:

<nix-darwin/modules/system/defaults/trackpad.nix>
system.defaults.trackpad.SecondClickThreshold

For force touch: 0 for light clicking, 1 for medium, 2 for firm. The default is 1.

Type: null or one of 0, 1, 2

Default: null

Declared by:

<nix-darwin/modules/system/defaults/trackpad.nix>
system.defaults.trackpad.TrackpadRightClick

Whether to enable trackpad right click. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/trackpad.nix>
system.defaults.trackpad.TrackpadThreeFingerDrag

Whether to enable three finger drag. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/trackpad.nix>
system.defaults.universalaccess.closeViewScrollWheelToggle

Use scroll gesture with the Ctrl (^) modifier key to zoom. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/universalaccess.nix>
system.defaults.universalaccess.closeViewZoomFollowsFocus

Follow the keyboard focus while zoomed in. Without setting closeViewScrollWheelToggle this has no effect. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/universalaccess.nix>
system.defaults.universalaccess.mouseDriverCursorSize

Set the size of cursor. 1 for normal, 4 for maximum. The default is 1.

Type: null or floating point number

Default: null

Example: 1.5

Declared by:

<nix-darwin/modules/system/defaults/universalaccess.nix>
system.defaults.universalaccess.reduceMotion

Disable animation when switching screens or opening apps

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/universalaccess.nix>
system.defaults.universalaccess.reduceTransparency

Disable transparency in the menu bar and elsewhere. Requires macOS Yosemite or later. The default is false.

Type: null or boolean

Default: null

Declared by:

<nix-darwin/modules/system/defaults/universalaccess.nix>
system.keyboard.enableKeyMapping

Whether to enable keyboard mappings.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/keyboard.nix>
system.keyboard.nonUS.remapTilde

Whether to remap the Tilde key on non-us keyboards.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/keyboard.nix>
system.keyboard.remapCapsLockToControl

Whether to remap the Caps Lock key to Control.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/keyboard.nix>
system.keyboard.remapCapsLockToEscape

Whether to remap the Caps Lock key to Escape.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/keyboard.nix>
system.keyboard.swapLeftCommandAndLeftAlt

Whether to swap the left Command key and left Alt key.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/system/keyboard.nix>
system.nixpkgsRelease

The nixpkgs release (e.g. 16.03).

Type: string (read only)

Default: "23.11"

Declared by:

<nix-darwin/modules/system/version.nix>
system.patches

Set of patches to apply to /.

Warning

This can modify everything so use with caution.

Useful for safely changing system files. Unlike the etc module this won’t remove or modify files with unexpected content.

Type: list of path

Default: [ ]

Example:

[
  (pkgs.writeText "bashrc.patch" '''
    --- a/etc/bashrc
    +++ b/etc/bashrc
    @@ -8,3 +8,5 @@
     shopt -s checkwinsize

     [ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM"
    +
    +if test -e /etc/static/bashrc; then . /etc/static/bashrc; fi
  ''')
]

Declared by:

<nix-darwin/modules/system/patches.nix>
system.profile

Profile to use for the system.

Type: path

Default: "/nix/var/nix/profiles/system"

Declared by:

<nix-darwin/modules/system>
system.startup.chime

Whether to enable the startup chime.

By default, this option does not affect your system configuration in any way. However, this means that after it has been set once, unsetting it will not return to the old behavior. It will allow the setting to be controlled in System Settings, though.

Type: null or boolean

Default: null

Example: false

Declared by:

<nix-darwin/modules/system/startup.nix>
system.stateVersion

Every once in a while, a new NixOS release may change configuration defaults in a way incompatible with stateful data. For instance, if the default version of PostgreSQL changes, the new version will probably be unable to read your existing databases. To prevent such breakage, you can set the value of this option to the NixOS release with which you want to be compatible. The effect is that NixOS will option defaults corresponding to the specified release (such as using an older version of PostgreSQL).

Type: signed integer

Default: 4

Declared by:

<nix-darwin/modules/system/version.nix>
time.timeZone

The time zone used when displaying times and dates. See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones or run sudo systemsetup -listtimezones for a comprehensive list of possible values for this setting.

Type: null or string

Default: null

Example: "America/New_York"

Declared by:

<nix-darwin/modules/time>
users.groups

Configuration for groups.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/users>
users.groups.<name>.description

The group’s description.

Type: string

Default: ""

Declared by:

<nix-darwin/modules/users>
users.groups.<name>.gid

The group’s GID.

Type: gid

Declared by:

<nix-darwin/modules/users>
users.groups.<name>.members

The group’s members.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/users>
users.groups.<name>.name

The group’s name. If undefined, the name of the attribute set will be used.

Type: string

Declared by:

<nix-darwin/modules/users>
users.knownGroups

List of groups owned and managed by nix-darwin. Used to indicate what users are safe to create/delete based on the configuration. Don’t add system groups to this.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/users>
users.knownUsers

List of users owned and managed by nix-darwin. Used to indicate what users are safe to create/delete based on the configuration. Don’t add the admin user or other system users to this.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/users>
users.users

Configuration for users.

Type: attribute set of (submodule)

Default: { }

Declared by:

<nix-darwin/modules/users>
<nix-darwin/modules/programs/ssh>
users.users.<name>.packages

The set of packages that should be made availabe to the user. This is in contrast to environment.systemPackages, which adds packages to all users.

Type: list of package

Default: [ ]

Example: [ pkgs.firefox pkgs.thunderbird ]

Declared by:

<nix-darwin/modules/users>
users.users.<name>.createHome

Create the home directory when creating the user.

Type: boolean

Default: false

Declared by:

<nix-darwin/modules/users>
users.users.<name>.description

A short description of the user account, typically the user’s full name.

Type: string

Default: ""

Example: "Alice Q. User"

Declared by:

<nix-darwin/modules/users>
users.users.<name>.gid

The user’s primary group.

Type: signed integer

Default: 20

Declared by:

<nix-darwin/modules/users>
users.users.<name>.home

The user’s home directory.

Type: path

Default: "/var/empty"

Declared by:

<nix-darwin/modules/users>
users.users.<name>.isHidden

Whether to make the user account hidden.

Type: boolean

Default: true

Declared by:

<nix-darwin/modules/users>
users.users.<name>.name

The name of the user account. If undefined, the name of the attribute set will be used.

Type: string

Declared by:

<nix-darwin/modules/users>
users.users.<name>.openssh.authorizedKeys.keyFiles

A list of files each containing one OpenSSH public key that should be added to the user’s authorized keys. The contents of the files are read at build time and added to a file that the SSH daemon reads in addition to the the user’s authorized_keys file. You can combine the keyFiles and keys options.

Type: list of path

Default: [ ]

Declared by:

<nix-darwin/modules/programs/ssh>
users.users.<name>.openssh.authorizedKeys.keys

A list of verbatim OpenSSH public keys that should be added to the user’s authorized keys. The keys are added to a file that the SSH daemon reads in addition to the the user’s authorized_keys file. You can combine the keys and keyFiles options. Warning: If you are using NixOps then don’t use this option since it will replace the key required for deployment via ssh.

Type: list of string

Default: [ ]

Declared by:

<nix-darwin/modules/programs/ssh>
users.users.<name>.shell

The user’s shell.

Type: package or path

Default: "/sbin/nologin"

Example: pkgs.bashInteractive

Declared by:

<nix-darwin/modules/users>
users.users.<name>.uid

The user’s UID.

Type: signed integer

Declared by:

<nix-darwin/modules/users>