devenv

devenv provides a devShell with many options, and container packages.

See also the setup guide at devenv.sh.

Installation

To use these options, add to your flake inputs:

devenv.url = "github:cachix/devenv";

and inside the mkFlake:

imports = [
  inputs.devenv.flakeModule
];

Run nix flake lock and you're set.

Options

perSystem.devenv.modules

Extra modules to import into every shell. Allows flakeModules to add options to devenv for example.

Type: list of module

Default: [ ]

Declared by:

perSystem.devenv.shells

The devenv.sh settings, per shell.

Each definition devenv.shells.<name> results in a value for devShells.<name>.

Define devenv.shells.default for the default nix develop invocation - without an argument.

Type: lazy attribute set of (submodule)

Default: { }

Example:

{
  # create devShells.default
  default = {
    # devenv settings, e.g.
    languages.elm.enable = true;
  };
}

Declared by:

perSystem.devenv.shells.<name>.packages

A list of packages to expose inside the developer environment. Search available packages using devenv search NAME.

Type: list of package

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.android.enable

Whether to enable tools for Android Development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.android.abis

The Android ABIs to install. By default, the arm64-v8a and x86_64 ABIs are installed.

Type: list of string

Default:

[
  "arm64-v8a"
  "x86_64"
]

Declared by:

perSystem.devenv.shells.<name>.android.android-studio.enable

Whether to enable the installation of Android Studio.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.android.android-studio.package

The Android Studio package to use. By default, the Android Studio package from nixpkgs is used.

Type: package

Default: pkgs.android-studio

Declared by:

perSystem.devenv.shells.<name>.android.buildTools.version

The version of the Android build tools to install. By default, version 30.0.3 is installed or [ “33.0.2” “30.0.3” ] if flutter is enabled.

Type: list of string

Default:

[
  "34.0.0"
]

Declared by:

perSystem.devenv.shells.<name>.android.cmake.version

The CMake versions to install for Android. By default, version 3.22.1 is installed.

Type: list of string

Default:

[
  "3.22.1"
]

Declared by:

perSystem.devenv.shells.<name>.android.cmdLineTools.version

The version of the Android command line tools to install. By default, version 11.0 is installed or 8.0 if flutter is enabled.

Type: string

Default: "11.0"

Declared by:

perSystem.devenv.shells.<name>.android.emulator.enable

Whether to include the Android Emulator. By default, the emulator is included.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.android.emulator.version

The version of the Android Emulator to install. By default, version 34.1.9 is installed.

Type: string

Default: "34.1.9"

Declared by:

perSystem.devenv.shells.<name>.android.extraLicenses

The additional Android licenses to accept. By default, several standard licenses are accepted.

Type: list of string

Default:

[
  "android-sdk-preview-license"
  "android-googletv-license"
  "android-sdk-arm-dbt-license"
  "google-gdk-license"
  "intel-android-extra-license"
  "intel-android-sysimage-license"
  "mips-android-sysimage-license"
]

Declared by:

perSystem.devenv.shells.<name>.android.extras

The Android extras to install. By default, the Google Cloud Messaging (GCM) extra is installed.

Type: list of string

Default:

[
  "extras;google;gcm"
]

Declared by:

perSystem.devenv.shells.<name>.android.flutter.enable

Whether to include the Flutter tools.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.android.flutter.package

The Flutter package to use. By default, the Flutter package from nixpkgs is used.

Type: package

Default: pkgs.flutter

Declared by:

perSystem.devenv.shells.<name>.android.googleAPIs.enable

Whether to use the Google APIs. By default, the Google APIs are used.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.android.googleTVAddOns.enable

Whether to use the Google TV Add-Ons. By default, the Google TV Add-Ons are used.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.android.ndk.enable

Whether to include the Android NDK (Native Development Kit). By default, the NDK is included.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.android.ndk.version

The version of the Android NDK (Native Development Kit) to install. By default, version 26.1.10909125 is installed.

Type: list of string

Default:

[
  "26.1.10909125"
]

Declared by:

perSystem.devenv.shells.<name>.android.platformTools.version

The version of the Android platform tools to install. By default, version 34.0.5 is installed or 34.0.5 if flutter is enabled.

Type: string

Default: "34.0.5"

Declared by:

perSystem.devenv.shells.<name>.android.platforms.version

The Android platform versions to install. By default, versions 32 and 34 are installed.

Type: list of string

Default:

[
  "32"
  "34"
]

Declared by:

perSystem.devenv.shells.<name>.android.reactNative.enable

Whether to include the React Native tools.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.android.sources.enable

Whether to include the Android sources. By default, the sources are not included.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.android.systemImageTypes

The Android system image types to install. By default, the google_apis_playstore system image is installed.

Type: list of string

Default:

[
  "google_apis_playstore"
]

Declared by:

perSystem.devenv.shells.<name>.android.systemImages.enable

Whether to include the Android system images. By default, the system images are included.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.android.tools.version

The version of the Android SDK tools to install. By default, version 26.1.1 is installed.

Type: string

Default: "26.1.1"

Declared by:

perSystem.devenv.shells.<name>.aws-vault.enable

Whether to enable aws-vault integration.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.aws-vault.package

The aws-vault package to use.

Type: package

Default: pkgs.aws-vault

Declared by:

perSystem.devenv.shells.<name>.aws-vault.awscliWrapper

Attribute set of packages including awscli2

Type: submodule

Default: pkgs

Declared by:

perSystem.devenv.shells.<name>.aws-vault.awscliWrapper.enable

Whether to enable Wraps awscli2 binary as aws-vault exec <profile> -- aws <args>. .

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.aws-vault.awscliWrapper.package

The awscli2 package to use.

Type: package

Default: pkgs.awscli2

Declared by:

perSystem.devenv.shells.<name>.aws-vault.opentofuWrapper

Attribute set of packages including opentofu

Type: submodule

Default: pkgs

Declared by:

perSystem.devenv.shells.<name>.aws-vault.opentofuWrapper.enable

Whether to enable Wraps opentofu binary as aws-vault exec <profile> -- opentofu <args>. .

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.aws-vault.opentofuWrapper.package

The opentofu package to use.

Type: package

Default: pkgs.opentofu

Declared by:

perSystem.devenv.shells.<name>.aws-vault.profile

The profile name passed to aws-vault exec.

Type: string

Declared by:

perSystem.devenv.shells.<name>.aws-vault.terraformWrapper

Attribute set of packages including terraform

Type: submodule

Default: pkgs

Declared by:

perSystem.devenv.shells.<name>.aws-vault.terraformWrapper.enable

Whether to enable Wraps terraform binary as aws-vault exec <profile> -- terraform <args>. .

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.aws-vault.terraformWrapper.package

The terraform package to use.

Type: package

Default: pkgs.terraform

Declared by:

perSystem.devenv.shells.<name>.cachix.enable

Whether to enable Cachix integration.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.cachix.package

The cachix package to use.

Type: package

Default: pkgs.cachix

Example: inputs.devenv.inputs.cachix.packages.${pkgs.stdenv.system}.cachix

Declared by:

perSystem.devenv.shells.<name>.cachix.pull

Which Cachix caches to pull from.

Type: list of string

Default: [ "devenv" ]

Declared by:

perSystem.devenv.shells.<name>.cachix.push

Which Cachix cache to push to. This cache is also added to cachix.pull.

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.certificates

List of domains to generate certificates for.

Type: list of string

Default: [ ]

Example:

[
  "example.com"
  "*.example.com"
]

Declared by:

perSystem.devenv.shells.<name>.container.isBuilding

Set to true when the environment is building a container.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.containers

Container specifications that can be built, copied and ran using devenv container.

Type: attribute set of (submodule)

Default: { }

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.enableLayerDeduplication

Whether to enable layer deduplication using the approach described at https://blog.eigenvalue.net/2023-nix2container-everything-once/ .

Type: boolean

Default: true

Example: true

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.copyToRoot

Add a path to the container. Defaults to the whole git repo.

Type: path or list of path

Default: self

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.defaultCopyArgs

Default arguments to pass to skopeo copy. You can override them by passing arguments to the script.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.entrypoint

Entrypoint of the container.

Type: list of anything

Default: [ entrypoint ]

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.isBuilding

Set to true when the environment is building this container.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers

The layers to create.

Type: list of (submodule)

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.copyToRoot

A list of derivations copied to the image root directory.

Store path prefixes /nix/store/hash-path are removed in order to relocate them to the image /.

Type: list of package

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.deps

A list of store paths to include in the layer.

Type: list of package

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.ignore

A store path to ignore when building the layer. This is mainly useful to ignore the configuration file from the container layer.

Type: null or path in the Nix store

Default: null

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.maxLayers

The maximum number of layers to create.

Type: signed integer

Default: 1

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.perms

A list of file permissions which are set when the tar layer is created.

These permissions are not written to the Nix store.

Type: list of (submodule)

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.perms.*.gid

The group ID to apply to all of the files matched by the regex.

Type: null or signed integer

Default: null

Example: "1000"

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.perms.*.gname

The group name to apply to all of the files matched by the regex.

Type: null or string

Default: null

Example: "root"

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.perms.*.mode

The numeric permissions mode to apply to all of the files matched by the regex.

Type: null or string

Default: null

Example: "644"

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.perms.*.path

A store path.

Type: path in the Nix store

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.perms.*.regex

A regex pattern to select files or directories to apply the mode to.

Type: null or string

Default: null

Example: ".*"

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.perms.*.uid

The user ID to apply to all of the files matched by the regex.

Type: null or signed integer

Default: null

Example: "1000"

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.perms.*.uname

The user name to apply to all of the files matched by the regex.

Type: null or string

Default: null

Example: "root"

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.layers.*.reproducible

Whether the layer should be reproducible.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.maxLayers

Maximum number of container layers created.

Type: null or signed integer

Default: 1

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.name

Name of the container.

Type: null or string

Default: "top-level name or containers.mycontainer.name"

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.registry

Registry to push the container to.

Type: null or string

Default: "docker-daemon:"

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.startupCommand

Command to run in the container.

Type: null or string or package

Default: null

Declared by:

perSystem.devenv.shells.<name>.containers.<name>.version

Version/tag of the container.

Type: null or string

Default: "latest"

Declared by:

perSystem.devenv.shells.<name>.delta.enable

Integrate delta into git: https://dandavison.github.io/delta/.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.devcontainer.enable

Whether to enable generation .devcontainer.json for devenv integration.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.devcontainer.settings

Devcontainer settings.

Type: JSON value

Default: { }

Declared by:

perSystem.devenv.shells.<name>.devcontainer.settings.customizations.vscode.extensions

List of preinstalled VSCode extensions.

Type: list of string

Default:

[
  "mkhl.direnv"
]

Declared by:

perSystem.devenv.shells.<name>.devcontainer.settings.image

The name of an image in a container registry.

Type: string

Default: "ghcr.io/cachix/devenv:latest"

Declared by:

perSystem.devenv.shells.<name>.devcontainer.settings.overrideCommand

Override the default command.

Type: anything

Default: false

Declared by:

perSystem.devenv.shells.<name>.devcontainer.settings.updateContentCommand

Command to run after container creation.

Type: anything

Default: "devenv test"

Declared by:

perSystem.devenv.shells.<name>.devenv.debug

Whether to enable debug mode of devenv enterShell script.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.devenv.flakesIntegration

Tells if devenv is being imported by a flake.nix file

Type: boolean

Default: true when devenv is invoked via the flake integration; false otherwise.

Declared by:

perSystem.devenv.shells.<name>.devenv.isTesting

Whether the environment is being used for testing.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.devenv.latestVersion

The latest version of devenv.

Type: string

Default: "1.3.1"

Declared by:

perSystem.devenv.shells.<name>.devenv.warnOnNewVersion

Whether to warn when a new version of either devenv or the direnv integration is available.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.difftastic.enable

Integrate difftastic into git: https://difftastic.wilfred.me.uk/.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.dotenv.enable

Whether to enable .env integration, doesn’t support comments or multiline values…

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.dotenv.disableHint

Disable the hint that are printed when the dotenv module is not enabled, but .env is present.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.dotenv.filename

The name of the dotenv file to load, or a list of dotenv files to load in order of precedence.

Type: string or list of string

Default: ".env"

Declared by:

perSystem.devenv.shells.<name>.enterShell

Bash code to execute when entering the shell.

Type: strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.enterTest

Bash code to execute to run the test.

Type: strings concatenated with “\n”

Declared by:

perSystem.devenv.shells.<name>.env

Environment variables to be exposed inside the developer environment.

Type: lazy attribute set of anything

Default: { }

Declared by:

perSystem.devenv.shells.<name>.files

A set of files that will be linked into devenv root.

Type: attribute set of (submodule)

Default: { }

Declared by:

perSystem.devenv.shells.<name>.files.<name>.executable

Make the file executable

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.files.<name>.ini

ini contents

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

Default: null

Declared by:

perSystem.devenv.shells.<name>.files.<name>.json

json contents

Type: null or JSON value

Default: null

Declared by:

perSystem.devenv.shells.<name>.files.<name>.text

text contents

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.files.<name>.toml

toml contents

Type: null or TOML value

Default: null

Declared by:

perSystem.devenv.shells.<name>.files.<name>.yaml

yaml contents

Type: null or YAML value

Default: null

Declared by:

perSystem.devenv.shells.<name>.git-hooks

Integration with https://github.com/cachix/git-hooks.nix

Type: submodule

Default: { }

Declared by:

perSystem.devenv.shells.<name>.hosts

List of hosts entries.

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

Default: { }

Example:

{
  "another-example.com" = [
    "::1"
    "127.0.0.1"
  ];
  "example.com" = "127.0.0.1";
}

Declared by:

perSystem.devenv.shells.<name>.hostsProfileName

Profile name to use.

Type: string

Default: "devenv-<hash>"

Declared by:

perSystem.devenv.shells.<name>.infoSections

Information about the environment

Type: attribute set of list of string

Default: { }

Declared by:

perSystem.devenv.shells.<name>.languages.ansible.enable

Whether to enable tools for Ansible development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.ansible.package

The Ansible package to use.

Type: package

Default: pkgs.ansible

Declared by:

perSystem.devenv.shells.<name>.languages.c.enable

Whether to enable tools for C development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.c.debugger

An optional debugger package to use with c. The default is gdb, if supported on the current system.

Type: null or package

Default: pkgs.gdb

Declared by:

perSystem.devenv.shells.<name>.languages.clojure.enable

Whether to enable tools for Clojure development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.cplusplus.enable

Whether to enable tools for C++ development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.crystal.enable

Whether to enable Enable tools for Crystal development…

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.cue.enable

Whether to enable tools for Cue development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.cue.package

The CUE package to use.

Type: package

Default: pkgs.cue

Declared by:

perSystem.devenv.shells.<name>.languages.dart.enable

Whether to enable tools for Dart development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.dart.package

The Dart package to use.

Type: package

Default: pkgs.dart

Declared by:

perSystem.devenv.shells.<name>.languages.deno.enable

Whether to enable tools for Deno development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.deno.package

Which package of Deno to use.

Type: package

Default: pkgs.deno

Declared by:

perSystem.devenv.shells.<name>.languages.dotnet.enable

Whether to enable tools for .NET development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.dotnet.package

The .NET SDK package to use.

Type: package

Default: pkgs.dotnet-sdk

Declared by:

perSystem.devenv.shells.<name>.languages.elixir.enable

Whether to enable tools for Elixir development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.elixir.package

Which package of Elixir to use.

Type: package

Default: pkgs.elixir

Declared by:

perSystem.devenv.shells.<name>.languages.elm.enable

Whether to enable tools for Elm development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.erlang.enable

Whether to enable tools for Erlang development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.erlang.package

Which package of Erlang to use.

Type: package

Default: pkgs.erlang

Declared by:

perSystem.devenv.shells.<name>.languages.fortran.enable

Whether to enable tools for Fortran Development…

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.fortran.package

The Fortran package to use.

Type: package

Default: pkgs.gfortran

Declared by:

perSystem.devenv.shells.<name>.languages.gawk.enable

Whether to enable tools for GNU Awk development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.gleam.enable

Whether to enable tools for Gleam development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.gleam.package

The Gleam package to use.

Type: package

Default: pkgs.gleam

Declared by:

perSystem.devenv.shells.<name>.languages.go.enable

Whether to enable tools for Go development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.go.enableHardeningWorkaround

Enable hardening workaround required for Delve debugger (https://github.com/go-delve/delve/issues/3085)

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.go.package

The Go package to use.

Type: package

Default: pkgs.go

Declared by:

perSystem.devenv.shells.<name>.languages.haskell.enable

Whether to enable tools for Haskell development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.haskell.package

Haskell compiler to use.

Type: package

Default: pkgs.ghc

Declared by:

perSystem.devenv.shells.<name>.languages.haskell.languageServer

Haskell language server to use.

Type: null or package

Default: pkgs.haskell-language-server

Declared by:

perSystem.devenv.shells.<name>.languages.haskell.stack

Haskell stack to use.

Type: null or package

Default: pkgs.stack

Declared by:

perSystem.devenv.shells.<name>.languages.idris.enable

Whether to enable tools for Idris development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.idris.package

The Idris package to use.

Type: package

Default: pkgs.idris2

Example: pkgs.idris

Declared by:

perSystem.devenv.shells.<name>.languages.java.enable

Whether to enable tools for Java development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.java.gradle.enable

Whether to enable gradle.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.java.gradle.package

The Gradle package to use. The Gradle package by default inherits the JDK from languages.java.jdk.package.

Type: package

Default: pkgs.gradle.override { java = cfg.jdk.package; }

Declared by:

perSystem.devenv.shells.<name>.languages.java.jdk.package

The JDK package to use. This will also become available as JAVA_HOME.

Type: package

Default: pkgs.jdk

Example: pkgs.jdk8

Declared by:

perSystem.devenv.shells.<name>.languages.java.maven.enable

Whether to enable maven.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.java.maven.package

The Maven package to use. The Maven package by default inherits the JDK from languages.java.jdk.package.

Type: package

Default: pkgs.maven.override { jdk_headless = cfg.jdk.package; }

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.enable

Whether to enable tools for JavaScript development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.package

The Node.js package to use.

Type: package

Default: pkgs.nodejs-slim

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.bun.enable

Whether to enable install bun.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.bun.package

The bun package to use.

Type: package

Default: pkgs.bun

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.bun.install.enable

Whether to enable bun install during devenv initialisation.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.corepack.enable

Whether to enable wrappers for npm, pnpm and Yarn via Node.js Corepack.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.directory

The JavaScript project’s root directory. Defaults to the root of the devenv project. Can be an absolute path or one relative to the root of the devenv project.

Type: string

Default: config.devenv.root

Example: "./directory"

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.npm.enable

Whether to enable install npm.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.npm.package

The Node.js package to use.

Type: package

Default: languages.javascript.package

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.npm.install.enable

Whether to enable npm install during devenv initialisation.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.pnpm.enable

Whether to enable install pnpm.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.pnpm.package

The pnpm package to use.

Type: package

Default: pkgs.nodePackages.pnpm

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.pnpm.install.enable

Whether to enable pnpm install during devenv initialisation.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.yarn.enable

Whether to enable install yarn.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.yarn.package

The yarn package to use.

Type: package

Default: pkgs.yarn

Declared by:

perSystem.devenv.shells.<name>.languages.javascript.yarn.install.enable

Whether to enable yarn install during devenv initialisation.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.jsonnet.enable

Whether to enable tools for jsonnet development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.julia.enable

Whether to enable tools for Julia development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.julia.package

The Julia package to use.

Type: package

Default: pkgs.julia-bin

Declared by:

perSystem.devenv.shells.<name>.languages.kotlin.enable

Whether to enable tools for Kotlin development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.lean4.enable

Whether to enable tools for lean4 development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.lean4.package

The lean4 package to use.

Type: package

Default: pkgs.lean4

Declared by:

perSystem.devenv.shells.<name>.languages.lua.enable

Whether to enable tools for Lua development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.lua.package

The Lua package to use.

Type: package

Default: pkgs.lua

Declared by:

perSystem.devenv.shells.<name>.languages.nim.enable

Whether to enable tools for Nim development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.nim.package

The Nim package to use.

Type: package

Default: pkgs.nim

Declared by:

perSystem.devenv.shells.<name>.languages.nix.enable

Whether to enable tools for Nix development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.nix.lsp.package

The LSP package to use

Type: package

Default: pkgs.nil

Declared by:

perSystem.devenv.shells.<name>.languages.ocaml.enable

Whether to enable tools for OCaml development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.ocaml.packages

The package set of OCaml to use

Type: attribute set

Default: pkgs.ocaml-ng.ocamlPackages_4_12

Declared by:

perSystem.devenv.shells.<name>.languages.odin.enable

Whether to enable tools for Odin Language.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.odin.package

The odin package to use.

Type: package

Default: pkgs.odin

Declared by:

perSystem.devenv.shells.<name>.languages.odin.debugger

An optional debugger package to use with odin. The default is gdb, if supported on the current system.

Type: null or package

Default: pkgs.gdb

Declared by:

perSystem.devenv.shells.<name>.languages.opentofu.enable

Whether to enable tools for OpenTofu development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.opentofu.package

The OpenTofu package to use.

Type: package

Default: pkgs.opentofu

Declared by:

perSystem.devenv.shells.<name>.languages.pascal.enable

Whether to enable tools for Pascal development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.pascal.lazarus.enable

Whether to enable lazarus graphical IDE for the FreePascal language.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.perl.enable

Whether to enable tools for Perl development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.perl.packages

Perl packages to include

Type: list of string

Default: [ ]

Example:

[
  "Mojolicious"
]

Declared by:

perSystem.devenv.shells.<name>.languages.php.enable

Whether to enable tools for PHP development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.php.package

Allows you to override the default used package to adjust the settings or add more extensions. You can find the extensions using devenv search 'php extensions'

Type: package

Default: pkgs.php

Example:

pkgs.php.buildEnv {
  extensions = { all, enabled }: with all; enabled ++ [ xdebug ];
  extraConfig = ''
    memory_limit=1G
  '';
};

Declared by:

perSystem.devenv.shells.<name>.languages.php.packages

Attribute set of packages including composer

Type: submodule

Default: pkgs

Declared by:

perSystem.devenv.shells.<name>.languages.php.packages.composer

composer package

Type: null or package

Default: pkgs.phpPackages.composer

Declared by:

perSystem.devenv.shells.<name>.languages.php.disableExtensions

PHP extensions to disable.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.php.extensions

PHP extensions to enable.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.extraConfig

Extra configuration that should be put in the global section of the PHP-FPM configuration file. Do not specify the options error_log or daemonize here, since they are generated by NixOS.

Type: null or strings concatenated with “\n”

Default: null

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.phpOptions

Options appended to the PHP configuration file php.ini.

Type: strings concatenated with “\n”

Default: ""

Example:

''
  date.timezone = "CET"
''

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.pools

PHP-FPM pools. If no pools are defined, the PHP-FPM service is disabled.

Type: attribute set of (submodule)

Default: { }

Example:

{
  mypool = {
    user = "php";
    group = "php";
    phpPackage = pkgs.php;
    settings = {
      "pm" = "dynamic";
      "pm.max_children" = 75;
      "pm.start_servers" = 10;
      "pm.min_spare_servers" = 5;
      "pm.max_spare_servers" = 20;
      "pm.max_requests" = 500;
    };
  }
}

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.pools.<name>.extraConfig

Extra lines that go into the pool configuration. See the documentation on php-fpm.conf for details on configuration directives.

Type: null or strings concatenated with “\n”

Default: null

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.pools.<name>.listen

The address on which to accept FastCGI requests.

Type: string

Default: ""

Example: "/path/to/unix/socket"

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.pools.<name>.phpEnv

Environment variables used for this PHP-FPM pool.

Type: attribute set of string

Default: { }

Example:

{
  HOSTNAME = "$HOSTNAME";
  TMP = "/tmp";
  TMPDIR = "/tmp";
  TEMP = "/tmp";
}

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.pools.<name>.phpOptions

Options appended to the PHP configuration file php.ini used for this PHP-FPM pool.

Type: strings concatenated with “\n”

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.pools.<name>.phpPackage

The PHP package to use for running this PHP-FPM pool.

Type: package

Default: phpfpm.phpPackage

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.pools.<name>.settings

PHP-FPM pool directives. Refer to the “List of pool directives” section of https://www.php.net/manual/en/install.fpm.configuration.php" the manual for details. Note that settings names must be enclosed in quotes (e.g. "pm.max_children" instead of pm.max_children).

Type: attribute set of (string or signed integer or boolean)

Default: { }

Example:

{
  "pm" = "dynamic";
  "pm.max_children" = 75;
  "pm.start_servers" = 10;
  "pm.min_spare_servers" = 5;
  "pm.max_spare_servers" = 20;
  "pm.max_requests" = 500;
}

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.pools.<name>.socket

Path to the Unix socket file on which to accept FastCGI requests.

This option is read-only and managed by NixOS.

Type: string (read only)

Example: config.env.DEVENV_STATE + "/php-fpm/<name>.sock"

Declared by:

perSystem.devenv.shells.<name>.languages.php.fpm.settings

PHP-FPM global directives.

Refer to the “List of global php-fpm.conf directives” section of https://www.php.net/manual/en/install.fpm.configuration.php for details.

Note that settings names must be enclosed in quotes (e.g. "pm.max_children" instead of pm.max_children).

You need not specify the options error_log or daemonize here, since they are already set.

Type: attribute set of (string or signed integer or boolean)

Default:

{
  error_log = config.env.DEVENV_STATE + "/php-fpm/php-fpm.log";
}

Declared by:

perSystem.devenv.shells.<name>.languages.php.ini

PHP.ini directives. Refer to the “List of php.ini directives” of PHP’s

Type: null or strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.languages.php.version

The PHP version to use.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.languages.purescript.enable

Whether to enable tools for PureScript development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.purescript.package

The PureScript package to use.

Type: package

Default: pkgs.purescript

Declared by:

perSystem.devenv.shells.<name>.languages.python.enable

Whether to enable tools for Python development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.python.package

The Python package to use.

Type: package

Default: pkgs.python3

Declared by:

perSystem.devenv.shells.<name>.languages.python.directory

The Python project’s root directory. Defaults to the root of the devenv project. Can be an absolute path or one relative to the root of the devenv project.

Type: string

Default: config.devenv.root

Example: "./directory"

Declared by:

perSystem.devenv.shells.<name>.languages.python.libraries

Additional libraries to make available to the Python interpreter.

This is useful when you want to use Python wheels that depend on native libraries.

Type: list of path

Default:

[ "${config.devenv.dotfile}/profile" ]

Declared by:

perSystem.devenv.shells.<name>.languages.python.manylinux.enable

Whether to install manylinux2014 libraries.

Enabled by default on linux;

This is useful when you want to use Python wheels that depend on manylinux2014 libraries.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.enable

Whether to enable poetry.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.package

The Poetry package to use.

Type: package

Default: pkgs.poetry

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.activate.enable

Whether to activate the poetry virtual environment automatically.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.enable

Whether to enable poetry install during devenv initialisation.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.allExtras

Whether to install all extras. See --all-extras.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.compile

Whether poetry install should compile Python source files to bytecode.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.extras

Which extras to install. See --extras.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.groups

Which dependency groups to install. See --with.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.ignoredGroups

Which dependency groups to ignore. See --without.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.installRootPackage

Whether the root package (your project) should be installed. See --no-root

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.onlyGroups

Which dependency groups to exclusively install. See --only.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.onlyInstallRootPackage

Whether to only install the root package (your project) should be installed, but no dependencies. See --only-root

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.quiet

Whether poetry install should avoid outputting messages during devenv initialisation.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.poetry.install.verbosity

What level of verbosity the output of poetry install should have.

Type: one of “no”, “little”, “more”, “debug”

Default: "no"

Declared by:

perSystem.devenv.shells.<name>.languages.python.uv.enable

Whether to enable uv.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.python.uv.package

The uv package to use.

Type: package

Default: pkgs.uv

Declared by:

perSystem.devenv.shells.<name>.languages.python.uv.sync.enable

Whether to enable uv sync during devenv initialisation.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.python.uv.sync.allExtras

Whether to install all extras. See --all-extras.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.uv.sync.extras

Which extras to install. See --extra.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.python.venv.enable

Whether to enable Python virtual environment.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.python.venv.quiet

Whether pip install should avoid outputting messages during devenv initialisation.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.languages.python.venv.requirements

Contents of pip requirements.txt file. This is passed to pip install -r during devenv shell initialisation.

Type: null or strings concatenated with “\n” or path

Default: null

Declared by:

perSystem.devenv.shells.<name>.languages.python.version

The Python version to use. This automatically sets the languages.python.package using nixpkgs-python.

Type: null or string

Default: null

Example: "3.11 or 3.11.2"

Declared by:

perSystem.devenv.shells.<name>.languages.r.enable

Whether to enable tools for R development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.r.package

The R package to use.

Type: package

Default: pkgs.R

Declared by:

perSystem.devenv.shells.<name>.languages.r.radian.enable

Whether to enable a 21 century R console.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.r.radian.package

The radian package to use.

Type: package

Default: pkgs.radianWrapper

Declared by:

perSystem.devenv.shells.<name>.languages.racket.enable

Whether to enable tools for Racket development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.racket.package

The Racket package to use.

Type: package

Default: pkgs.racket-minimal

Declared by:

perSystem.devenv.shells.<name>.languages.raku.enable

Whether to enable tools for Raku development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.robotframework.enable

Whether to enable tools for Robot Framework development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.robotframework.python

The Python package to use.

Type: package

Default: pkgs.python3

Declared by:

perSystem.devenv.shells.<name>.languages.ruby.enable

Whether to enable tools for Ruby development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.ruby.package

The Ruby package to use.

Type: package

Default: pkgs.ruby_3_1

Declared by:

perSystem.devenv.shells.<name>.languages.ruby.bundler.enable

Whether to enable bundler.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.ruby.bundler.package

The bundler package to use.

Type: package

Default: pkgs.bundler.override { ruby = cfg.package; }

Declared by:

perSystem.devenv.shells.<name>.languages.ruby.version

The Ruby version to use. This automatically sets the languages.ruby.package using nixpkgs-ruby.

Type: null or string

Default: null

Example: "3.2.1"

Declared by:

perSystem.devenv.shells.<name>.languages.ruby.versionFile

The .ruby-version file path to extract the Ruby version from. This automatically sets the languages.ruby.package using nixpkgs-ruby. When the .ruby-version file exists in the same directory as the devenv configuration, you can use:

languages.ruby.versionFile = ./.ruby-version;

Type: null or path

Default: null

Example:

./ruby-version

Declared by:

perSystem.devenv.shells.<name>.languages.rust.enable

Whether to enable tools for Rust development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.rust.channel

The rustup toolchain to install.

Type: one of “nixpkgs”, “stable”, “beta”, “nightly”

Default: "nixpkgs"

Declared by:

perSystem.devenv.shells.<name>.languages.rust.components

List of Rustup components to install. Defaults to those available in nixpkgs.

Type: list of string

Default: [ "rustc" "cargo" "clippy" "rustfmt" "rust-analyzer" ]

Declared by:

perSystem.devenv.shells.<name>.languages.rust.mold.enable

Enable mold as the linker.

Enabled by default on x86_64 Linux machines when no cross-compilation targets are specified.

Type: boolean

Default: pkgs.stdenv.isLinux && pkgs.stdenv.isx86_64 && languages.rust.targets == [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.rust.rustflags

Extra flags to pass to the Rust compiler.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.languages.rust.targets

List of extra targets to install. Defaults to only the native target.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.languages.rust.toolchain

Rust component packages. May optionally define additional components, for example miri.

Type: attribute set of package

Default: nixpkgs

Declared by:

perSystem.devenv.shells.<name>.languages.rust.toolchain.cargo

cargo package

Type: null or package

Default: pkgs.cargo

Declared by:

perSystem.devenv.shells.<name>.languages.rust.toolchain.clippy

clippy package

Type: null or package

Default: pkgs.clippy

Declared by:

perSystem.devenv.shells.<name>.languages.rust.toolchain.rust-analyzer

rust-analyzer package

Type: null or package

Default: pkgs.rust-analyzer

Declared by:

perSystem.devenv.shells.<name>.languages.rust.toolchain.rustc

rustc package

Type: null or package

Default: pkgs.rustc

Declared by:

perSystem.devenv.shells.<name>.languages.rust.toolchain.rustfmt

rustfmt package

Type: null or package

Default: pkgs.rustfmt

Declared by:

perSystem.devenv.shells.<name>.languages.scala.enable

Whether to enable tools for Scala development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.scala.package

The Scala package to use.

Type: package

Default: pkgs.scala_3

Declared by:

perSystem.devenv.shells.<name>.languages.scala.mill.enable

Whether to enable mill, a simplified, fast build tool for Scala.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.scala.mill.package

The mill package to use.

Type: package

Default: pkgs.mill

Declared by:

perSystem.devenv.shells.<name>.languages.scala.sbt.enable

Whether to enable sbt, the standard build tool for Scala.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.scala.sbt.package

The sbt package to use.

Type: package

Default: pkgs.sbt

Example: sbt-with-scala-native

Declared by:

perSystem.devenv.shells.<name>.languages.shell.enable

Whether to enable tools for shell development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.solidity.enable

Whether to enable tools for Solidity development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.solidity.package

Which compiler of Solidity to use.

Type: package

Default: pkgs.solc

Declared by:

perSystem.devenv.shells.<name>.languages.solidity.foundry.enable

Whether to enable install Foundry.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.solidity.foundry.package

Which Foundry package to use.

Type: package

Default: foundry.defaultPackage.$${pkgs.stdenv.system}

Declared by:

perSystem.devenv.shells.<name>.languages.standardml.enable

Whether to enable tools for Standard ML development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.standardml.package

The Standard ML package to use.

Type: package

Default: pkgs.mlton

Declared by:

perSystem.devenv.shells.<name>.languages.swift.enable

Whether to enable tools for Swift development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.swift.package

The Swift package to use.

Type: package

Default: pkgs.swift

Declared by:

perSystem.devenv.shells.<name>.languages.terraform.enable

Whether to enable tools for Terraform development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.terraform.package

The Terraform package to use.

Type: package

Default: pkgs.terraform

Declared by:

perSystem.devenv.shells.<name>.languages.terraform.version

The Terraform version to use. This automatically sets the languages.terraform.package using nixpkgs-terraform.

Type: null or string

Default: null

Example: "1.5.0 or 1.6.2"

Declared by:

perSystem.devenv.shells.<name>.languages.texlive.enable

Whether to enable TeX Live.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.texlive.packages

Extra packages to add to the base TeX Live set

Type: list of string

Default: [ ]

Example:

[
  "algorithms"
  "latexmk"
]

Declared by:

perSystem.devenv.shells.<name>.languages.texlive.base

TeX Live package set to use

Type: unspecified value

Default: pkgs.texliveSmall

Example: pkgs.texliveBasic

Declared by:

perSystem.devenv.shells.<name>.languages.typescript.enable

Whether to enable tools for TypeScript development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.typst.enable

Whether to enable tools for Typst development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.typst.package

Which package of Typst to use.

Type: package

Default: pkgs.typst

Declared by:

perSystem.devenv.shells.<name>.languages.unison.enable

Whether to enable tools for Unison development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.unison.package

Which package of Unison to use

Type: package

Default: pkgs.unison-ucm

Declared by:

perSystem.devenv.shells.<name>.languages.v.enable

Whether to enable tools for V development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.v.package

The V package to use.

Type: package

Default: pkgs.vlang

Declared by:

perSystem.devenv.shells.<name>.languages.vala.enable

Whether to enable tools for Vala development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.vala.package

The Vala package to use.

Type: package

Default: pkgs.vala

Example: pkgs.vala_0_54

Declared by:

perSystem.devenv.shells.<name>.languages.zig.enable

Whether to enable tools for Zig development.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.languages.zig.package

Which package of Zig to use.

Type: package

Default: pkgs.zig

Declared by:

perSystem.devenv.shells.<name>.name

Name of the project.

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.outputs

Nix outputs for devenv build consumption.

Type: outputOf (attribute set)

Default:

{
  git = pkgs.git;
  foo = {
    ncdu = pkgs.ncdu;
  };
}

Declared by:

perSystem.devenv.shells.<name>.pre-commit

Alias of git-hooks.

Type: submodule

Declared by:

perSystem.devenv.shells.<name>.process.manager.after

Bash code to execute after stopping processes.

Type: strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.process.manager.args

Additional arguments to pass to the process manager.

Type: attribute set

Declared by:

perSystem.devenv.shells.<name>.process.manager.before

Bash code to execute before starting processes.

Type: strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.process.manager.implementation

The process manager to use when running processes with devenv up.

Type: one of “hivemind”, “honcho”, “overmind”, “process-compose”

Default: "process-compose"

Example: "overmind"

Declared by:

perSystem.devenv.shells.<name>.process.managers.hivemind.package

The hivemind package to use.

Type: package

Default: pkgs.hivemind

Declared by:

perSystem.devenv.shells.<name>.process.managers.honcho.package

The honcho package to use.

Type: package

Default: pkgs.honcho

Declared by:

perSystem.devenv.shells.<name>.process.managers.overmind.package

The overmind package to use.

Type: package

Default: pkgs.overmind

Declared by:

perSystem.devenv.shells.<name>.process.managers.process-compose.package

The process-compose package to use.

Type: package

Default: pkgs.process-compose

Declared by:

perSystem.devenv.shells.<name>.process.managers.process-compose.port

The port to bind the process-compose server to.

Not used when unixSocket.enable is true.

Type: signed integer

Default: 8080

Declared by:

perSystem.devenv.shells.<name>.process.managers.process-compose.settings

Top-level process-compose.yaml options

Example: https://github.com/F1bonacc1/process-compose/blob/main/process-compose.yaml`

Type: YAML value

Default: { }

Example:

{
  availability = {
    backoff_seconds = 2;
    max_restarts = 5;
    restart = "on_failure";
  };
  depends_on = {
    some-other-process = {
      condition = "process_completed_successfully";
    };
  };
  environment = [
    "ENVVAR_FOR_THIS_PROCESS_ONLY=foobar"
  ];
}

Declared by:

perSystem.devenv.shells.<name>.process.managers.process-compose.tui.enable

Enable the TUI (Terminal User Interface)

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.process.managers.process-compose.unixSocket.enable

Whether to enable running the process-compose server over unix domain sockets instead of tcp.

Type: boolean

Default: true

Example: true

Declared by:

perSystem.devenv.shells.<name>.process.managers.process-compose.unixSocket.path

Override the path to the unix socket.

Type: string

Default: ${config.devenv.runtime}/pc.sock

Declared by:

perSystem.devenv.shells.<name>.processes

Processes can be started with devenv up and run in the foreground.

Type: attribute set of (submodule)

Default: { }

Declared by:

perSystem.devenv.shells.<name>.processes.<name>.exec

Bash code to run the process.

Type: string

Declared by:

perSystem.devenv.shells.<name>.processes.<name>.process-compose

process-compose.yaml specific process attributes.

Example: https://github.com/F1bonacc1/process-compose/blob/main/process-compose.yaml`

Only used when using process.manager.implementation = "process-compose";

Type: attribute set

Default: { }

Example:

{
  availability = {
    backoff_seconds = 2;
    max_restarts = 5;
    restart = "on_failure";
  };
  depends_on = {
    some-other-process = {
      condition = "process_completed_successfully";
    };
  };
  environment = [
    "ENVVAR_FOR_THIS_PROCESS_ONLY=foobar"
  ];
}

Declared by:

perSystem.devenv.shells.<name>.scripts

A set of scripts available when the environment is active.

Type: attribute set of (submodule)

Default: { }

Declared by:

perSystem.devenv.shells.<name>.scripts.<name>.package

The package to use to run the script.

Type: package

Default: pkgs.bash

Declared by:

perSystem.devenv.shells.<name>.scripts.<name>.binary

Override the binary name if it doesn’t match package name

Type: string

Default: config.package.pname

Declared by:

perSystem.devenv.shells.<name>.scripts.<name>.description

Description of the script.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.scripts.<name>.exec

Shell code to execute when the script is run.

Type: string

Declared by:

perSystem.devenv.shells.<name>.services.adminer.enable

Whether to enable Adminer process.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.adminer.package

Which package of Adminer to use.

Type: package

Default: pkgs.adminer

Declared by:

perSystem.devenv.shells.<name>.services.adminer.listen

Listen address for the Adminer.

Type: string

Default: "127.0.0.1:8080"

Declared by:

perSystem.devenv.shells.<name>.services.blackfire.enable

Whether to enable Blackfire profiler agent

It automatically installs Blackfire PHP extension. .

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.blackfire.enableApm

Whether to enable Enables application performance monitoring, requires special subscription. .

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.blackfire.package

Which package of blackfire to use

Type: package

Default: pkgs.blackfire

Declared by:

perSystem.devenv.shells.<name>.services.blackfire.client-id

Sets the client id used to authenticate with Blackfire. You can find your personal client-id at https://blackfire.io/my/settings/credentials.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.blackfire.client-token

Sets the client token used to authenticate with Blackfire. You can find your personal client-token at https://blackfire.io/my/settings/credentials.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.blackfire.server-id

Sets the server id used to authenticate with Blackfire. You can find your personal server-id at https://blackfire.io/my/settings/credentials.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.blackfire.server-token

Sets the server token used to authenticate with Blackfire. You can find your personal server-token at https://blackfire.io/my/settings/credentials.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.blackfire.socket

Sets the server socket path

Type: string

Default: "tcp://127.0.0.1:8307"

Declared by:

perSystem.devenv.shells.<name>.services.caddy.enable

Whether to enable Caddy web server.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.caddy.package

Caddy package to use.

Type: package

Default: pkgs.caddy

Declared by:

perSystem.devenv.shells.<name>.services.caddy.adapter

Name of the config adapter to use. See https://caddyserver.com/docs/config-adapters for the full list.

Type: string

Default: "caddyfile"

Example: "nginx"

Declared by:

perSystem.devenv.shells.<name>.services.caddy.ca

Certificate authority ACME server. The default (Let’s Encrypt production server) should be fine for most people. Set it to null if you don’t want to include any authority (or if you want to write a more fine-graned configuration manually).

Type: null or string

Default: "https://acme-v02.api.letsencrypt.org/directory"

Example: "https://acme-staging-v02.api.letsencrypt.org/directory"

Declared by:

perSystem.devenv.shells.<name>.services.caddy.config

Verbatim Caddyfile to use.

Refer to https://caddyserver.com/docs/caddyfile for more information.

Caddy v2 supports multiple config formats via adapters (see services.caddy.adapter).

Type: strings concatenated with “\n”

Default: ""

Example:

''
  # Global options block
  {
    debug
  }
  
  # Site block
  example.com {
    encode gzip
    log
    root /srv/http
  }
''

Declared by:

perSystem.devenv.shells.<name>.services.caddy.dataDir

The data directory, for storing certificates. Before 17.09, this would create a .caddy directory. With 17.09 the contents of the .caddy directory are in the specified data directory instead. Caddy v2 replaced CADDYPATH with XDG directories. See https://caddyserver.com/docs/conventions#file-locations.

Type: path

Default: "${config.env.DEVENV_STATE}/caddy"

Declared by:

perSystem.devenv.shells.<name>.services.caddy.email

Email address (for Let’s Encrypt certificate).

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.caddy.resume

Use saved config, if any (and prefer over configuration passed with caddy.config).

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.services.caddy.virtualHosts

Declarative vhost config.

Type: attribute set of (submodule)

Default: { }

Example:

{
  "hydra.example.com" = {
    serverAliases = [ "www.hydra.example.com" ];
    extraConfig = ''''
      encode gzip
      log
      root /srv/http
    '''';
  };
};

Declared by:

perSystem.devenv.shells.<name>.services.caddy.virtualHosts.<name>.extraConfig

These lines go into the vhost verbatim.

Type: strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.caddy.virtualHosts.<name>.serverAliases

Additional names of virtual hosts served by this virtual host configuration.

Type: list of string

Default: [ ]

Example:

[
  "www.example.org"
  "example.org"
]

Declared by:

perSystem.devenv.shells.<name>.services.cassandra.enable

Whether to enable Add Cassandra process script…

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.cassandra.package

Which version of Cassandra to use

Type: package

Default: pkgs.cassandra_4

Example: pkgs.cassandra_4;

Declared by:

perSystem.devenv.shells.<name>.services.cassandra.allowClients

Enables or disables the native transport server (CQL binary protocol)

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.cassandra.clusterName

The name of the cluster

Type: string

Default: "Test Cluster"

Declared by:

perSystem.devenv.shells.<name>.services.cassandra.extraConfig

Extra options to be merged into cassandra.yaml as nix attribute set.

Type: attribute set

Default: { }

Example:

{
  commitlog_sync_batch_window_in_ms = 3;
}

Declared by:

perSystem.devenv.shells.<name>.services.cassandra.jvmOpts

Options to pass to the JVM through the JVM_OPTS environment variable

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.cassandra.listenAddress

Listen address

Type: string

Default: "127.0.0.1"

Example: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.cassandra.seedAddresses

The addresses of hosts designated as contact points of the cluster

Type: list of string

Default:

[
  "127.0.0.1"
]

Declared by:

perSystem.devenv.shells.<name>.services.clickhouse.enable

Whether to enable clickhouse-server.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.clickhouse.package

Which package of clickhouse to use

Type: package

Default: pkgs.clickhouse

Declared by:

perSystem.devenv.shells.<name>.services.clickhouse.config

ClickHouse configuration in YAML.

Type: strings concatenated with “\n”

Declared by:

perSystem.devenv.shells.<name>.services.clickhouse.httpPort

Which http port to run clickhouse on

Type: signed integer

Default: 8123

Declared by:

perSystem.devenv.shells.<name>.services.clickhouse.port

Which port to run clickhouse on

Type: signed integer

Default: 9000

Declared by:

perSystem.devenv.shells.<name>.services.cockroachdb.enable

Whether to enable Add CockroachDB process. .

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.cockroachdb.package

The CockroachDB package to use.

Type: unspecified value

Default: pkgs.cockroachdb-bin

Declared by:

perSystem.devenv.shells.<name>.services.cockroachdb.http_addr

The hostname or IP address to bind to for HTTP requests.

Type: string

Default: "localhost:8080"

Declared by:

perSystem.devenv.shells.<name>.services.cockroachdb.listen_addr

The address/hostname and port to listen on.

Type: string

Default: "localhost:26257"

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.enable

Whether to enable CouchDB process.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.package

Which version of CouchDB to use

Type: package

Default: pkgs.couchdb3

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.baseDir

The directory where CouchDB will store its data.

Type: string (read only)

Default: config.env.DEVENV_STATE + "/couchdb"

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.settings

CouchDB configuration. to know more about all settings, look at: <link xlink:href=“https://docs.couchdb.org/en/stable/config/couchdb.html” />

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

Default: { }

Example:

{
  couchdb = {
    database_dir = baseDir;
    single_node = true;
    view_index_dir = baseDir;
    uri_file = "${config.services.couchdb.baseDir}/couchdb.uri";
  };
  admins = {
    "admin_username" = "pass";
  };
  chttpd = {
    bind_address = "127.0.0.1";
    port = 5984;
  };
}

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.settings.chttpd.bind_address

Defines the IP address by which CouchDB will be accessible.

Type: string

Default: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.settings.chttpd.port

Defined the port number to listen.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 5984

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.settings.couchdb.database_dir

Specifies location of CouchDB database files (*.couch named). This location should be writable and readable for the user the CouchDB service runs as (couchdb by default).

Type: path

Default: config.env.DEVENV_STATE + "/couchdb"

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.settings.couchdb.single_node

When this configuration setting is set to true, automatically create the system databases on startup. Must be set false for a clustered CouchDB installation.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.settings.couchdb.uri_file

This file contains the full URI that can be used to access this instance of CouchDB. It is used to help discover the port CouchDB is running on (if it was set to 0 (e.g. automatically assigned any free one). This file should be writable and readable for the user that runs the CouchDB service (couchdb by default).

Type: path

Default: config.env.DEVENV_STATE + "/couchdb"/couchdb.uri

Declared by:

perSystem.devenv.shells.<name>.services.couchdb.settings.couchdb.view_index_dir

Specifies location of CouchDB view index files. This location should be writable and readable for the user that runs the CouchDB service (couchdb by default).

Type: path

Default: config.env.DEVENV_STATE + "/couchdb"

Declared by:

perSystem.devenv.shells.<name>.services.dynamodb-local.enable

Whether to enable DynamoDB Local.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.dynamodb-local.package

Which package of DynamoDB to use.

Type: package

Default: pkgs.dynamodb-local

Declared by:

perSystem.devenv.shells.<name>.services.dynamodb-local.port

Listen address for the Dynamodb-local.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 8000

Declared by:

perSystem.devenv.shells.<name>.services.elasticmq.enable

Whether to enable elasticmq-server.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.elasticmq.package

Which package of elasticmq-server-bin to use

Type: package

Default: pkgs.elasticmq-server-bin

Declared by:

perSystem.devenv.shells.<name>.services.elasticmq.settings

Configuration for elasticmq-server

Type: strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.enable

Whether to enable elasticsearch.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.package

Elasticsearch package to use.

Type: package

Default: pkgs.elasticsearch7

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.cluster_name

Elasticsearch name that identifies your cluster for auto-discovery.

Type: string

Default: "elasticsearch"

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.extraCmdLineOptions

Extra command line options for the elasticsearch launcher.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.extraConf

Extra configuration for elasticsearch.

Type: string

Default: ""

Example:

''
  node.name: "elasticsearch"
  node.master: true
  node.data: false
''

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.extraJavaOptions

Extra command line options for Java.

Type: list of string

Default: [ ]

Example:

[
  "-Djava.net.preferIPv4Stack=true"
]

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.listenAddress

Elasticsearch listen address.

Type: string

Default: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.logging

Elasticsearch logging configuration.

Type: string

Default:

''
  logger.action.name = org.elasticsearch.action
  logger.action.level = info
  appender.console.type = Console
  appender.console.name = console
  appender.console.layout.type = PatternLayout
  appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n
  rootLogger.level = info
  rootLogger.appenderRef.console.ref = console
''

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.plugins

Extra elasticsearch plugins

Type: list of package

Default: [ ]

Example: [ pkgs.elasticsearchPlugins.discovery-ec2 ]

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.port

Elasticsearch port to listen for HTTP traffic.

Type: signed integer

Default: 9200

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.single_node

Start a single-node cluster

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.elasticsearch.tcp_port

Elasticsearch port for the node to node communication.

Type: signed integer

Default: 9300

Declared by:

perSystem.devenv.shells.<name>.services.httpbin.enable

Whether to enable httpbin.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.httpbin.bind

Addresses for httpbin to listen on.

Type: list of string

Default:

[
  "127.0.0.1:8080"
]

Declared by:

perSystem.devenv.shells.<name>.services.httpbin.extraArgs

Gunicorn CLI arguments for httpbin.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.influxdb.enable

Whether to enable influxdb.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.influxdb.package

An open-source distributed time series database

Type: package

Default: pkgs.influxdb

Declared by:

perSystem.devenv.shells.<name>.services.influxdb.config

Configuration for InfluxDB-server

Type: strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.kafka.enable

Whether to enable Apache Kafka.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.kafka.package

The apacheKafka package to use.

Type: package

Default: pkgs.apacheKafka

Declared by:

perSystem.devenv.shells.<name>.services.kafka.configFiles.log4jProperties

Kafka log4j property configuration file path

Type: path

Default: "pkgs.writeText \"log4j.properties\" cfg.log4jProperties"

Declared by:

perSystem.devenv.shells.<name>.services.kafka.configFiles.serverProperties

Kafka server.properties configuration file path. Defaults to the rendered settings.

Type: path

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.enable

Whether to enable Kafka Connect.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.initialConnectors

List of Kafka Connect connectors to set up initially

Type: list of (lazy attribute set of (null or boolean or signed integer or string or list of (boolean or signed integer or string)))

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.initialConnectors.*.config

Initial configuration for the connector

Type: attribute set

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.initialConnectors.*.name

Name of the connector

Type: string

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings

connect-standalone.properties.

Note that .properties files contain mappings from string to string. Keys with dots are NOT represented by nested attrs in these settings, but instead as quoted strings (ie. settings."broker.id", NOT settings.broker.id).

Type: lazy attribute set of (null or boolean or signed integer or string or list of (boolean or signed integer or string))

Default: { }

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings."bootstrap.servers"

A list of host/port pairs to use for establishing the initial connection to the Kafka cluster.

Type: list of string

Default:

[
  "localhost:9092"
]

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings."key.converter"

The key converter to use for the connector.

Type: string

Default: "org.apache.kafka.connect.json.JsonConverter"

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings."key.converter.schemas.enable"

Whether the key converter should include schema information in the message.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings.listeners

List of listeners for Kafka Connect (By default Kafka Connect listens on http://localhost:8083)

Type: null or (list of string)

Default: null

Example:

[
  "http://localhost:8080"
]

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings."offset.flush.interval.ms"

Interval at which to try committing offsets for tasks

Type: signed integer

Default: 10000

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings."offset.storage.file.filename"

The file to store connector offsets in. By storing offsets on disk, a standalone process can be stopped and started on a single node and resume where it previously left off.

Type: string

Default: "/.devenv/state/kafka/connect/connect.offsets"

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings."plugin.path"

The list should consist of top level directories that include any combination of: a) directories immediately containing jars with plugins and their dependencies b) uber-jars with plugins and their dependencies c) directories immediately containing the package directory structure of classes of plugins and their dependencies Note: symlinks will be followed to discover dependencies or plugins.

Type: null or (list of (string or path))

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings."value.converter"

The value converter to use for the connector.

Type: string

Default: "org.apache.kafka.connect.json.JsonConverter"

Declared by:

perSystem.devenv.shells.<name>.services.kafka.connect.settings."value.converter.schemas.enable"

Whether the value converter should include schema information in the message.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.kafka.defaultMode

Which defaults to set for the mode Kafka should run in

  • kraft (default): Run Kafka in KRaft mode, Which requires no extra configuration.
  • zookeeper: Run Kafka in Zookeeper mode, this requires more configuration.

Type: one of “zookeeper”, “kraft”

Default: "kraft"

Declared by:

perSystem.devenv.shells.<name>.services.kafka.formatLogDirs

Whether to format log dirs in KRaft mode if all log dirs are unformatted, ie. they contain no meta.properties.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.kafka.formatLogDirsIgnoreFormatted

Whether to ignore already formatted log dirs when formatting log dirs, instead of failing. Useful when replacing or adding disks.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.kafka.jre

The JRE with which to run Kafka

Type: package

Default: pkgs.apacheKafka.passthru.jre

Declared by:

perSystem.devenv.shells.<name>.services.kafka.jvmOptions

Extra command line options for the JVM running Kafka.

Type: list of string

Default: [ ]

Example:

[
  "-Djava.net.preferIPv4Stack=true"
  "-Dcom.sun.management.jmxremote"
  "-Dcom.sun.management.jmxremote.local.only=true"
]

Declared by:

perSystem.devenv.shells.<name>.services.kafka.log4jProperties

Kafka log4j property configuration.

Type: strings concatenated with “\n”

Default:

''
  log4j.rootLogger=INFO, stdout
  
  log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n
''

Declared by:

perSystem.devenv.shells.<name>.services.kafka.settings

Kafka broker configuration server.properties.

Note that .properties files contain mappings from string to string. Keys with dots are NOT represented by nested attrs in these settings, but instead as quoted strings (ie. settings."broker.id", NOT settings.broker.id).

Type: lazy attribute set of (null or boolean or signed integer or string or list of (boolean or signed integer or string))

Default: { }

Declared by:

perSystem.devenv.shells.<name>.services.kafka.settings."broker.id"

Broker ID. -1 or null to auto-allocate in zookeeper mode.

Type: null or signed integer

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.kafka.settings.listeners

Kafka Listener List. See listeners. If you change this, you should also update the readiness probe.

Type: list of string

Default:

[
  "PLAINTEXT://localhost:9092"
]

Declared by:

perSystem.devenv.shells.<name>.services.kafka.settings."log.dirs"

Log file directories.

Type: list of path

Default:

[
  "/.devenv/state/kafka/logs"
]

Declared by:

perSystem.devenv.shells.<name>.services.mailhog.enable

Whether to enable mailhog process.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.mailhog.package

Which package of mailhog to use

Type: package

Default: pkgs.mailhog

Declared by:

perSystem.devenv.shells.<name>.services.mailhog.additionalArgs

Additional arguments passed to mailhog.

Type: list of strings concatenated with “\n”

Default: [ ]

Example:

[
  "-invite-jim"
]

Declared by:

perSystem.devenv.shells.<name>.services.mailhog.apiListenAddress

Listen address for API.

Type: string

Default: "127.0.0.1:8025"

Declared by:

perSystem.devenv.shells.<name>.services.mailhog.smtpListenAddress

Listen address for SMTP.

Type: string

Default: "127.0.0.1:1025"

Declared by:

perSystem.devenv.shells.<name>.services.mailhog.uiListenAddress

Listen address for UI.

Type: string

Default: "127.0.0.1:8025"

Declared by:

perSystem.devenv.shells.<name>.services.mailpit.enable

Whether to enable mailpit process.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.mailpit.package

Which package of mailpit to use

Type: package

Default: pkgs.mailpit

Declared by:

perSystem.devenv.shells.<name>.services.mailpit.additionalArgs

Additional arguments passed to mailpit.

Type: list of strings concatenated with “\n”

Default: [ ]

Example:

[
  "--max=500"
]

Declared by:

perSystem.devenv.shells.<name>.services.mailpit.smtpListenAddress

Listen address for SMTP.

Type: string

Default: "127.0.0.1:1025"

Declared by:

perSystem.devenv.shells.<name>.services.mailpit.uiListenAddress

Listen address for UI.

Type: string

Default: "127.0.0.1:8025"

Declared by:

perSystem.devenv.shells.<name>.services.meilisearch.enable

Whether to enable Meilisearch.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.meilisearch.package

Which Meilisearch package to use

Type: package

Default: "pkgs.meilisearch"

Declared by:

perSystem.devenv.shells.<name>.services.meilisearch.environment

Defines the running environment of Meilisearch.

Type: one of “development”, “production”

Default: "development"

Declared by:

perSystem.devenv.shells.<name>.services.meilisearch.listenAddress

Meilisearch listen address.

Type: string

Default: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.meilisearch.listenPort

Meilisearch port to listen on.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 7700

Declared by:

perSystem.devenv.shells.<name>.services.meilisearch.logLevel

Defines how much detail should be present in Meilisearch’s logs. Meilisearch currently supports four log levels, listed in order of increasing verbosity:

  • ‘ERROR’: only log unexpected events indicating Meilisearch is not functioning as expected
  • ‘WARN:’ log all unexpected events, regardless of their severity
  • ‘INFO:’ log all events. This is the default value
  • ‘DEBUG’: log all events and including detailed information on Meilisearch’s internal processes. Useful when diagnosing issues and debugging

Type: string

Default: "INFO"

Declared by:

perSystem.devenv.shells.<name>.services.meilisearch.maxIndexSize

Sets the maximum size of the index. Value must be given in bytes or explicitly stating a base unit. For example, the default value can be written as 107374182400, ‘107.7Gb’, or ‘107374 Mb’. Default is 100 GiB

Type: string

Default: "107374182400"

Declared by:

perSystem.devenv.shells.<name>.services.meilisearch.noAnalytics

Deactivates analytics. Analytics allow Meilisearch to know how many users are using Meilisearch, which versions and which platforms are used. This process is entirely anonymous.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.memcached.enable

Whether to enable memcached process.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.memcached.package

Which package of memcached to use

Type: package

Default: pkgs.memcached

Declared by:

perSystem.devenv.shells.<name>.services.memcached.bind

The IP interface to bind to. null means “all interfaces”.

Type: null or string

Default: "127.0.0.1"

Example: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.memcached.port

The TCP port to accept connections. If port 0 is specified memcached will not listen on a TCP socket.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 11211

Declared by:

perSystem.devenv.shells.<name>.services.memcached.startArgs

Additional arguments passed to memcached during startup.

Type: list of strings concatenated with “\n”

Default: [ ]

Example:

[
  "--memory-limit=100M"
]

Declared by:

perSystem.devenv.shells.<name>.services.minio.enable

Whether to enable MinIO Object Storage.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.minio.package

MinIO package to use.

Type: package

Default: pkgs.minio

Declared by:

perSystem.devenv.shells.<name>.services.minio.accessKey

Access key of 5 to 20 characters in length that clients use to access the server.

Type: string

Default: "minioadmin"

Declared by:

perSystem.devenv.shells.<name>.services.minio.afterStart

Bash code to execute after minio is running.

Type: strings concatenated with “\n”

Default: ""

Example:

''
  mc anonymous set download local/mybucket
''

Declared by:

perSystem.devenv.shells.<name>.services.minio.browser

Enable or disable access to web UI.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.minio.buckets

List of buckets to ensure exist on startup.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.minio.clientConfig

Contents of the mc config.json, as a nix attribute set.

By default, local is configured to connect to the devenv minio service. Use lib.mkForce null to use your regular mc configuration from $HOME/.mc instead.

Type: null or JSON value

Declared by:

perSystem.devenv.shells.<name>.services.minio.clientPackage

MinIO client package to use.

Type: package

Default: pkgs.minio-client

Declared by:

perSystem.devenv.shells.<name>.services.minio.consoleAddress

IP address and port of the web UI (console).

Type: string

Default: "127.0.0.1:9001"

Declared by:

perSystem.devenv.shells.<name>.services.minio.listenAddress

IP address and port of the server.

Type: string

Default: "127.0.0.1:9000"

Declared by:

perSystem.devenv.shells.<name>.services.minio.region

The physical location of the server. By default it is set to us-east-1, which is same as AWS S3’s and MinIO’s default region.

Type: string

Default: "us-east-1"

Declared by:

perSystem.devenv.shells.<name>.services.minio.secretKey

Specify the Secret key of 8 to 40 characters in length that clients use to access the server.

Type: string

Default: "minioadmin"

Declared by:

perSystem.devenv.shells.<name>.services.mongodb.enable

Whether to enable MongoDB process and expose utilities.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.mongodb.package

Which MongoDB package to use.

Type: package

Default: pkgs.mongodb-ce

Declared by:

perSystem.devenv.shells.<name>.services.mongodb.additionalArgs

Additional arguments passed to mongod.

Type: list of strings concatenated with “\n”

Default:

[
  "--noauth"
]

Example:

[
  "--port"
  "27017"
  "--noauth"
]

Declared by:

perSystem.devenv.shells.<name>.services.mongodb.initDatabasePassword

This used in conjunction with initDatabaseUsername, create a new user and set that user’s password. This user is created in the admin authentication database and given the role of root, which is a “superuser” role.

Type: string

Default: ""

Example: "secret"

Declared by:

perSystem.devenv.shells.<name>.services.mongodb.initDatabaseUsername

This used in conjunction with initDatabasePassword, create a new user and set that user’s password. This user is created in the admin authentication database and given the role of root, which is a “superuser” role.

Type: string

Default: ""

Example: "mongoadmin"

Declared by:

perSystem.devenv.shells.<name>.services.mysql.enable

Whether to enable MySQL process and expose utilities.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.mysql.package

Which package of MySQL to use

Type: package

Default: pkgs.mariadb

Declared by:

perSystem.devenv.shells.<name>.services.mysql.ensureUsers

Ensures that the specified users exist and have at least the ensured permissions. The MySQL users will be identified using Unix socket 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 = "devenv";
    ensurePermissions = {
      "devenv.*" = "ALL PRIVILEGES";
    };
  }
]

Declared by:

perSystem.devenv.shells.<name>.services.mysql.ensureUsers.*.ensurePermissions

Permissions to ensure for the user, specified as attribute set. The attribute names specify the database and tables to grant the permissions for, separated by a dot. You may use wildcards here. The attribute values specfiy 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 ${attrName} ON ${attrValue}.

Type: attribute set of string

Default: { }

Example:

{
  "database.*" = "ALL PRIVILEGES";
  "*.*" = "SELECT, LOCK TABLES";
}

Declared by:

perSystem.devenv.shells.<name>.services.mysql.ensureUsers.*.name

Name of the user to ensure.

Type: string

Declared by:

perSystem.devenv.shells.<name>.services.mysql.ensureUsers.*.password

Password of the user to ensure.

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.mysql.importTimeZones

Whether to import tzdata on the first startup of the mysql server

Type: null or boolean

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.mysql.initialDatabases

List of database names and their initial schemas that should be used to create databases on the first startup of MySQL. The schema attribute is optional: If not specified, an empty database is created.

Type: list of (submodule)

Default: [ ]

Example:

[
  { name = "foodatabase"; schema = ./foodatabase.sql; }
  { name = "bardatabase"; }
]

Declared by:

perSystem.devenv.shells.<name>.services.mysql.initialDatabases.*.name

The name of the database to create.

Type: string

Declared by:

perSystem.devenv.shells.<name>.services.mysql.initialDatabases.*.schema

The initial schema of the database; if null (the default), an empty database is created.

Type: null or path

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.mysql.settings

MySQL configuration.

Type: lazy attribute set of lazy attribute set of anything

Default: { }

Example:

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

Declared by:

perSystem.devenv.shells.<name>.services.mysql.useDefaultsExtraFile

Whether to use defaults-exta-file for the mysql command instead of defaults-file. This is useful if you want to provide a config file on the command line. However this can problematic if you have MySQL installed globaly because its config might leak into your environment. This option does not affect the mysqld command.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.services.nginx.enable

Whether to enable nginx.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.nginx.package

The nginx package to use.

Type: package

Default: pkgs.nginx

Declared by:

perSystem.devenv.shells.<name>.services.nginx.defaultMimeTypes

Default MIME types for NGINX, as MIME types definitions from NGINX are very incomplete, we use by default the ones bundled in the mailcap package, used by most of the other Linux distributions.

Type: path

Default: ${pkgs.mailcap}/etc/nginx/mime.types

Example: ${pkgs.nginx}/conf/mime.types

Declared by:

perSystem.devenv.shells.<name>.services.nginx.eventsConfig

The nginx events configuration.

Type: strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.nginx.httpConfig

The nginx configuration.

Type: strings concatenated with “\n”

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.enable

Whether to enable OpenSearch.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.package

The OpenSearch package to use.

Type: package

Default: pkgs.opensearch

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.extraCmdLineOptions

Extra command line options for the OpenSearch launcher.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.extraJavaOptions

Extra command line options for Java.

Type: list of string

Default: [ ]

Example:

[
  "-Djava.net.preferIPv4Stack=true"
]

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.logging

OpenSearch logging configuration.

Type: string

Default:

''
  logger.action.name = org.opensearch.action
  logger.action.level = info
  appender.console.type = Console
  appender.console.name = console
  appender.console.layout.type = PatternLayout
  appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n
  rootLogger.level = info
  rootLogger.appenderRef.console.ref = console
''

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.settings

OpenSearch configuration.

Type: YAML value

Default: { }

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.settings."cluster.name"

The name of the cluster.

Type: string

Default: "opensearch"

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.settings."discovery.type"

The type of discovery to use.

Type: string

Default: "single-node"

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.settings."http.port"

The port to listen on for HTTP traffic.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 9200

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.settings."network.host"

Which port this service should listen on.

Type: string

Default: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.opensearch.settings."transport.port"

The port to listen on for transport traffic.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 9300

Declared by:

perSystem.devenv.shells.<name>.services.opentelemetry-collector.enable

Whether to enable opentelemetry-collector.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.opentelemetry-collector.package

The OpenTelemetry Collector package to use

Type: package

Default: pkgs.opentelemetry-collector-contrib

Declared by:

perSystem.devenv.shells.<name>.services.opentelemetry-collector.configFile

Override the configuration file used by OpenTelemetry Collector. By default, a configuration is generated from services.opentelemetry-collector.settings.

If overriding, enable the health_check extension to allow process-compose to check whether the Collector is ready. Otherwise, disable the readiness probe by setting processes.opentelemetry-collector.process-compose.readiness_probe = {};.

Type: null or path

Default: null

Example:

pkgs.writeTextFile { name = "otel-config.yaml"; text = "..."; }

Declared by:

perSystem.devenv.shells.<name>.services.opentelemetry-collector.settings

OpenTelemetry Collector configuration. Refer to https://opentelemetry.io/docs/collector/configuration/ for more information on how to configure the Collector.

Type: YAML value

Default:

{
  extensions = {
    health_check = {
      endpoint = "localhost:13133";
    };
  };
  service = {
    extensions = [
      "health_check"
    ];
  };
}

Declared by:

perSystem.devenv.shells.<name>.services.postgres.enable

Whether to enable Add PostgreSQL process. .

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.postgres.package

The PostgreSQL package to use. Use this to override the default with a specific version.

Type: package

Default: pkgs.postgresql

Example:

pkgs.postgresql_15

Declared by:

perSystem.devenv.shells.<name>.services.postgres.createDatabase

Create a database named like current user on startup. Only applies when initialDatabases is an empty list.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.postgres.extensions

Additional PostgreSQL extensions to install.

The available extensions are:

  • age
  • anonymizer
  • apache_datasketches
  • citus
  • cstore_fdw
  • h3-pg
  • hypopg
  • jsonb_deep_sum
  • lantern
  • periods
  • pg-gvm
  • pg-semver
  • pg_auto_failover
  • pg_bigm
  • pg_cron
  • pg_ed25519
  • pg_embedding
  • pg_hint_plan
  • pg_hll
  • pg_ivm
  • pg_libversion
  • pg_net
  • pg_partman
  • pg_rational
  • pg_relusage
  • pg_repack
  • pg_roaringbitmap
  • pg_safeupdate
  • pg_similarity
  • pg_squeeze
  • pg_topn
  • pg_uuidv7
  • pgaudit
  • pgjwt
  • pgmq
  • pgroonga
  • pgrouting
  • pgsodium
  • pgsql-http
  • pgtap
  • pgvecto-rs
  • pgvector
  • pgx_ulid
  • plpgsql_check
  • plr
  • plv8
  • postgis
  • repmgr
  • rum
  • smlar
  • sqlite_fdw
  • system_stats
  • tds_fdw
  • temporal_tables
  • timescaledb
  • timescaledb-apache
  • timescaledb_toolkit
  • tsja
  • wal2json

Type: null or (function that evaluates to a(n) list of package)

Default: null

Example:

extensions: [
  extensions.pg_cron
  extensions.postgis
  extensions.timescaledb
];

Declared by:

perSystem.devenv.shells.<name>.services.postgres.hbaConf

The contents of a custom pg_hba.conf file to copy into the postgres installation. This allows for custom connection rules that you want to establish on the server.

Type: null or string

Default: null

Example:

builtins.readFile ./my-custom/directory/to/pg_hba.conf

Declared by:

perSystem.devenv.shells.<name>.services.postgres.initdbArgs

Additional arguments passed to initdb during data dir initialisation.

Type: list of strings concatenated with “\n”

Default:

[
  "--locale=C"
  "--encoding=UTF8"
]

Example:

[
  "--data-checksums"
  "--allow-group-access"
]

Declared by:

perSystem.devenv.shells.<name>.services.postgres.initialDatabases

List of database names and their initial schemas that should be used to create databases on the first startup of Postgres. The schema attribute is optional: If not specified, an empty database is created.

Type: list of (submodule)

Default: [ ]

Example:

[
  {
    name = "foodatabase";
    schema = ./foodatabase.sql;
  }
  { name = "bardatabase"; }
]

Declared by:

perSystem.devenv.shells.<name>.services.postgres.initialDatabases.*.name

The name of the database to create.

Type: string

Declared by:

perSystem.devenv.shells.<name>.services.postgres.initialDatabases.*.pass

Password of owner of the database (only takes effect if user is not null).

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.postgres.initialDatabases.*.schema

The initial schema of the database; if null (the default), an empty database is created.

Type: null or path

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.postgres.initialDatabases.*.user

Username of owner of the database (if null, the default $USER is used).

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.postgres.initialScript

Initial SQL commands to run during database initialization. This can be multiple SQL expressions separated by a semi-colon.

Type: null or string

Default: null

Example:

CREATE ROLE postgres SUPERUSER;
CREATE ROLE bar;

Declared by:

perSystem.devenv.shells.<name>.services.postgres.listen_addresses

Listen address

Type: string

Default: ""

Example: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.postgres.port

The TCP port to accept connections.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 5432

Declared by:

perSystem.devenv.shells.<name>.services.postgres.settings

PostgreSQL configuration. Refer to https://www.postgresql.org/docs/11/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE for an overview of postgresql.conf.

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:

perSystem.devenv.shells.<name>.services.rabbitmq.enable

Whether to enable the RabbitMQ server, an Advanced Message Queuing Protocol (AMQP) broker.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.package

Which rabbitmq package to use.

Type: package

Default: pkgs.rabbitmq-server

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.configItems

Configuration options in RabbitMQ’s new config file format, which is a simple key-value format that can not express nested data structures. This is known as the rabbitmq.conf file, although outside NixOS that filename may have Erlang syntax, particularly prior to RabbitMQ 3.7.0. If you do need to express nested data structures, you can use config option. Configuration from config will be merged into these options by RabbitMQ at runtime to form the final configuration. See https://www.rabbitmq.com/configure.html#config-items For the distinct formats, see https://www.rabbitmq.com/configure.html#config-file-formats

Type: attribute set of string

Default: { }

Example:

{
  "auth_backends.1.authn" = "rabbit_auth_backend_ldap";
  "auth_backends.1.authz" = "rabbit_auth_backend_internal";
}

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.cookie

Erlang cookie is a string of arbitrary length which must be the same for several nodes to be allowed to communicate. Leave empty to generate automatically.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.listenAddress

IP address on which RabbitMQ will listen for AMQP connections. Set to the empty string to listen on all interfaces. Note that RabbitMQ creates a user named guest with password guest by default, so you should delete this user if you intend to allow external access. Together with ‘port’ setting it’s mostly an alias for configItems.“listeners.tcp.1” and it’s left for backwards compatibility with previous version of this module.

Type: string

Default: "127.0.0.1"

Example: ""

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.managementPlugin.enable

Whether to enable the management plugin.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.managementPlugin.port

On which port to run the management plugin

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 15672

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.nodeName

The name of the RabbitMQ node. This is used to identify the node in a cluster. If you are running multiple RabbitMQ nodes on the same machine, you must give each node a unique name. The name must be of the form name@host, where name is an arbitrary name and host is the domain name of the host.

Type: string

Default: "rabbit@localhost"

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.pluginDirs

The list of directories containing external plugins

Type: list of path

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.plugins

The names of plugins to enable

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.rabbitmq.port

Port on which RabbitMQ will listen for AMQP connections.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 5672

Declared by:

perSystem.devenv.shells.<name>.services.redis.enable

Whether to enable Redis process and expose utilities.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.redis.package

Which package of Redis to use

Type: package

Default: pkgs.redis

Declared by:

perSystem.devenv.shells.<name>.services.redis.bind

The IP interface to bind to. null means “all interfaces”.

Type: null or string

Default: "127.0.0.1"

Example: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.redis.extraConfig

Additional text to be appended to redis.conf.

Type: strings concatenated with “\n”

Default: "locale-collate C"

Declared by:

perSystem.devenv.shells.<name>.services.redis.port

The TCP port to accept connections. If port 0 is specified Redis, will not listen on a TCP socket and a unix socket file will be found at $REDIS_UNIX_SOCKET.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 6379

Declared by:

perSystem.devenv.shells.<name>.services.sqld.enable

Whether to enable sqld.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.sqld.extraArgs

Add other sqld flags.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.sqld.port

Port number to listen on

Type: signed integer

Default: 8080

Declared by:

perSystem.devenv.shells.<name>.services.tailscale.funnel.enable

Whether to enable Tailscale funnel.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.tailscale.funnel.target

Target host or host:port for Tailscale funnel

Type: string

Declared by:

perSystem.devenv.shells.<name>.services.temporal.enable

Whether to enable Temporal process.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.temporal.package

Which package of Temporal to use.

Type: package

Default: pkgs.temporal-cli

Declared by:

perSystem.devenv.shells.<name>.services.temporal.ip

IPv4 address to bind the frontend service to.

Type: string

Default: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.temporal.namespaces

Specify namespaces that should be pre-created (namespace “default” is always created).

Type: list of string

Default: [ ]

Example:

[
  "my-namespace"
  "my-other-namespace"
]

Declared by:

perSystem.devenv.shells.<name>.services.temporal.port

Port for the frontend gRPC service.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 7233

Declared by:

perSystem.devenv.shells.<name>.services.temporal.state

State configuration.

Type: submodule

Default: { }

Declared by:

perSystem.devenv.shells.<name>.services.temporal.state.ephemeral

When enabled, the Temporal state gets lost when the process exists.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.temporal.state.sqlite-pragma

Sqlite pragma statements

Type: attribute set of string

Default: { }

Example:

{
  journal_mode = "wal";
  synchronous = "2";
}

Declared by:

perSystem.devenv.shells.<name>.services.temporal.ui

UI configuration.

Type: submodule

Default: { }

Declared by:

perSystem.devenv.shells.<name>.services.temporal.ui.enable

Enable the Web UI.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.temporal.ui.ip

IPv4 address to bind the Web UI to.

Type: string

Default: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.temporal.ui.port

Port for the Web UI.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: services.temporal.port + 1000

Declared by:

perSystem.devenv.shells.<name>.services.tideways.enable

Whether to enable Tideways profiler daemon

It automatically installs Tideways PHP extension. .

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.tideways.apiKey

Sets the API-Key for the Tideways Daemon.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.tideways.cliPackage

Which package of tideways-cli to use

Type: package

Default: pkgs.tideways-cli

Declared by:

perSystem.devenv.shells.<name>.services.tideways.daemonPackage

Which package of tideways-daemon to use

Type: package

Default: pkgs.tideways-daemon

Declared by:

perSystem.devenv.shells.<name>.services.tideways.environment

Sets the Environment for Tideways Daemon.

Type: string

Default: "devenv"

Declared by:

perSystem.devenv.shells.<name>.services.tideways.profilingSpace

When the profiling space is enabled, the default monitoring will be disabled.

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.tideways.service

Sets the Service name for Tideways Daemon.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.enable

Whether to enable Apache Traffic Server.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.package

Apache Traffic Server package

Type: package

Default: pkgs.trafficserver

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.cache

Caching rules that overrule the origin’s caching policy.

Consult the upstream documentation for more details.

Type: strings concatenated with “\n”

Default: ""

Example: "dest_domain=example.com suffix=js action=never-cache"

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.hosting

Partition the cache according to origin server or domain

Consult the upstream documentation for more details.

Type: strings concatenated with “\n”

Default: ""

Example: "domain=example.com volume=1"

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.ipAllow

Control client access to Traffic Server and Traffic Server connections to upstream servers.

Consult the upstream documentation for more details.

Type: null or YAML value

Default: upstream defaults

Example:

{
  ip_allow = [{
    apply = "in";
    ip_addrs = "127.0.0.1";
    action = "allow";
    methods = "ALL";
  }];
}

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.logging

Configure logs.

Consult the upstream documentation for more details.

Type: null or YAML value

Default: upstream defaults

Example: { }

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.parent

Identify the parent proxies used in an cache hierarchy.

Consult the upstream documentation for more details.

Type: strings concatenated with “\n”

Default: ""

Example:

''
  dest_domain=. method=get parent="p1.example:8080; p2.example:8080" round_robin=true
''

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.plugins

Controls run-time loadable plugins available to Traffic Server, as well as their configuration.

Consult the upstream documentation for more details.

Type: list of (submodule)

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.plugins.*.arg

arguments to pass to the plugin

Type: string

Default: ""

Example: "--header=ATS-My-Debug"

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.plugins.*.path

Path to plugin. The path can either be absolute, or relative to the plugin directory.

Type: string

Example: "xdebug.so"

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.records

List of configurable variables used by Traffic Server.

Consult the upstream documentation for more details.

When defining the values for the option x.y, a nested attribute should be used. Using a flat attribute set with the attribute name x.y will result in an error.

If options for both x.y and x.y.z needs to be set, you can set x.y._ as x.y. This only applies to Traffic Server versions prior to 10. Traffic Server 10 and onwards uses YAML configuration, which doesn’t have this kind of problem.

Type: Traffic Server records value

Default: { }

Example:

{
  proxy = {
    config = {
      proxy_name = "my_server";
    };
  };
}

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.remap

URL remapping rules used by Traffic Server.

Consult the upstream documentation for more details.

Type: strings concatenated with “\n”

Default: ""

Example: "map http://from.example http://origin.example"

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.runroot

File layout used by Traffic Server

Type: unspecified value (read only)

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.sni

Configure aspects of TLS connection handling for both inbound and outbound connections.

Consult the upstream documentation for more details.

Type: null or YAML value

Default: null

Example:

{
  sni = [{
    fqdn = "no-http2.example.com";
    https = "off";
  }];
}

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.splitDns

Specify the DNS server that Traffic Server should use under specific conditions.

Consult the upstream documentation for more details.

Type: strings concatenated with “\n”

Default: ""

Example:

''
  dest_domain=internal.corp.example named="255.255.255.255:212 255.255.255.254" def_domain=corp.example search_list="corp.example corp1.example"
  dest_domain=!internal.corp.example named=255.255.255.253
''

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.sslMulticert

Configure SSL server certificates to terminate the SSL sessions.

Consult the upstream documentation for more details.

Type: strings concatenated with “\n”

Default: ""

Example: "dest_ip=* ssl_cert_name=default.pem"

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.storage

List all the storage that make up the Traffic Server cache.

Consult the upstream documentation for more details.

Type: strings concatenated with “\n”

Default: "${config.services.traffic-server.runroot.cachedir} 256M"

Example: "/dev/disk/by-id/XXXXX volume=1"

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.strategies

Specify the next hop proxies used in an cache hierarchy and the algorithms used to select the next proxy.

Consult the upstream documentation for more details.

Type: null or YAML value

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.trafficserver.volume

Manage cache space more efficiently and restrict disk usage by creating cache volumes of different sizes.

Consult the upstream documentation for more details.

Type: null or YAML value

Default: ""

Example: "volume=1 scheme=http size=20%"

Declared by:

perSystem.devenv.shells.<name>.services.typesense.enable

Whether to enable typesense process.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.typesense.package

Which package of typesense to use

Type: package

Default: pkgs.typesense

Declared by:

perSystem.devenv.shells.<name>.services.typesense.additionalArgs

Additional arguments passed to typesense.

Type: list of strings concatenated with “\n”

Default: [ ]

Example: [ ]

Declared by:

perSystem.devenv.shells.<name>.services.typesense.apiKey

API Key.

Type: string

Default: "example"

Declared by:

perSystem.devenv.shells.<name>.services.typesense.host

The HTTP host to accept connections.

Type: string

Default: "127.0.0.1"

Declared by:

perSystem.devenv.shells.<name>.services.typesense.port

The HTTP port to accept connections.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 8108

Declared by:

perSystem.devenv.shells.<name>.services.typesense.searchOnlyKey

Search Only Key.

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.services.varnish.enable

Whether to enable Varnish process and expose utilities.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.varnish.package

Which Varnish package to use.

Type: package

Default: pkgs.varnish

Declared by:

perSystem.devenv.shells.<name>.services.varnish.extraModules

Varnish modules (except ‘std’).

Type: list of package

Default: [ ]

Example: [ pkgs.varnish73Packages.modules ]

Declared by:

perSystem.devenv.shells.<name>.services.varnish.listen

Which address to listen on.

Type: string

Default: "127.0.0.1:6081"

Declared by:

perSystem.devenv.shells.<name>.services.varnish.memorySize

How much memory to allocate to Varnish.

Type: string

Default: "64M"

Declared by:

perSystem.devenv.shells.<name>.services.varnish.vcl

Varnish VCL configuration.

Type: strings concatenated with “\n”

Default:

''
  vcl 4.0;
  
  backend default {
    .host = "127.0.0.1";
    .port = "80";
  }
''

Declared by:

perSystem.devenv.shells.<name>.services.vault.enable

Whether to enable vault process.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.vault.package

Which package of Vault to use.

Type: package

Default: pkgs.vault-bin

Declared by:

perSystem.devenv.shells.<name>.services.vault.address

Specifies the address to bind to for listening

Type: string

Default: "127.0.0.1:8200"

Declared by:

perSystem.devenv.shells.<name>.services.vault.disableClustering

Specifies whether clustering features such as request forwarding are enabled

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.vault.disableMlock

Disables the server from executing the mlock syscall

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.vault.ui

Enables the built-in web UI

Type: boolean

Default: true

Declared by:

perSystem.devenv.shells.<name>.services.wiremock.enable

Whether to enable WireMock.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.services.wiremock.package

Which package of WireMock to use.

Type: package

Default: pkgs.wiremock

Declared by:

perSystem.devenv.shells.<name>.services.wiremock.disableBanner

Whether to disable print banner logo.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.services.wiremock.mappings

The mappings to mock. See the JSON examples on https://wiremock.org/docs/stubbing/ for more information.

Type: JSON value

Default: [ ]

Example:

[
  {
    request = {
      method = "GET";
      url = "/body";
    };
    response = {
      body = "Literal text to put in the body";
      headers = {
        Content-Type = "text/plain";
      };
      status = 200;
    };
  }
  {
    request = {
      method = "GET";
      url = "/json";
    };
    response = {
      jsonBody = {
        someField = "someValue";
      };
      status = 200;
    };
  }
]

Declared by:

perSystem.devenv.shells.<name>.services.wiremock.port

The port number for the HTTP server to listen on.

Type: signed integer

Default: 8080

Declared by:

perSystem.devenv.shells.<name>.services.wiremock.verbose

Whether to log verbosely to stdout.

Type: boolean

Default: false

Declared by:

perSystem.devenv.shells.<name>.starship.enable

Whether to enable the Starship.rs command prompt.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.starship.package

The Starship package to use.

Type: package

Default: pkgs.starship

Declared by:

perSystem.devenv.shells.<name>.starship.config.enable

Whether to enable Starship config override.

Type: boolean

Default: false

Example: true

Declared by:

perSystem.devenv.shells.<name>.starship.config.path

The Starship configuration file to use.

Type: path

Default: ${config.env.DEVENV_ROOT}/starship.toml

Declared by:

perSystem.devenv.shells.<name>.stdenv

The stdenv to use for the developer environment.

Type: package

Default: pkgs.stdenv

Declared by:

perSystem.devenv.shells.<name>.tasks

A set of tasks.

Type: attribute set of (submodule)

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.package

Package to install for this task.

Type: package

Default: pkgs.bash

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.after

List of tasks to run after this task.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.before

List of tasks to run before this task.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.binary

Override the binary name if it doesn’t match package name

Type: string

Default: config.package.pname

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.description

Description of the task.

Type: string

Default: ""

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.exec

Command to execute the task.

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.exports

List of environment variables to export.

Type: list of string

Default: [ ]

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.input

Input values for the task, encoded as JSON.

Type: attribute set of anything

Default: { }

Declared by:

perSystem.devenv.shells.<name>.tasks.<name>.status

Check if the command should be ran

Type: null or string

Default: null

Declared by:

perSystem.devenv.shells.<name>.unsetEnvVars

A list of removed environment variables to make the shell/direnv more lean.

Type: list of string

Default:

[
  "HOST_PATH"
  "NIX_BUILD_CORES"
  "__structuredAttrs"
  "buildInputs"
  "buildPhase"
  "builder"
  "depsBuildBuild"
  "depsBuildBuildPropagated"
  "depsBuildTarget"
  "depsBuildTargetPropagated"
  "depsHostHost"
  "depsHostHostPropagated"
  "depsTargetTarget"
  "depsTargetTargetPropagated"
  "dontAddDisableDepTrack"
  "doCheck"
  "doInstallCheck"
  "nativeBuildInputs"
  "out"
  "outputs"
  "patches"
  "phases"
  "preferLocalBuild"
  "propagatedBuildInputs"
  "propagatedNativeBuildInputs"
  "shell"
  "shellHook"
  "stdenv"
  "strictDeps"
]

Declared by: