Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

devenv Options

These options are provided by the shared ScottyLabs devenv module. Import it in your devenv.nix:

imports = [ inputs.scottylabs.devenvModules.default ];

scottylabs.enable

Enable the shared ScottyLabs development configuration. Required for all other scottylabs.* options to take effect. Also installs always-on hooks: two that refresh and stage flake.lock (nix flake update) and devenv.lock (devenv update) on every commit, and one that rejects commits carrying AI tool co-author trailers.

Type: boolean

Default:

false

Declared by:

scottylabs.claude.enable

Enable Claude Code integration. Generates the .mcp.json configuration with the devenv MCP server.

Type: boolean

Default:

true

Declared by:

scottylabs.conventionalCommits.enable

Enforce Conventional Commits on git commit via the commitizen git hook. Commit messages that do not match the conventional format are rejected at commit time.

Type: boolean

Default:

true

Declared by:

scottylabs.deno.enable

Enable the Deno/JavaScript development toolchain. Adds Deno, oxlint (denying the correctness, suspicious, pedantic, and perf categories), oxfmt, and tsgolint on PATH for oxlint --type-aware. Runs oxlint, deno check, and deno test on every commit.

Type: boolean

Default:

false

Declared by:

scottylabs.deno.react.enable

Add the react and jsx-a11y plugins to oxlint.

Type: boolean

Default:

false

Declared by:

scottylabs.deno.svelte.enable

Add the svelte-check pre-commit hook.

Type: boolean

Default:

false

Declared by:

scottylabs.deno.svelte.dir

The SvelteKit app directory, relative to the project root. When svelte.enable is set, deno install and svelte-kit sync run here on shell entry so svelte-check has node_modules and the generated .svelte-kit types available.

Type: string

Default:

"."

Declared by:

scottylabs.garage.enable

Enable a local Garage S3 instance for development. Creates a bucket named after scottylabs.project.name and exports S3_ENDPOINT, S3_REGION, S3_ACCESS_KEY, S3_SECRET_KEY, and S3_BUCKET into the shell environment.

Type: boolean

Default:

false

Declared by:

scottylabs.garage.accessKey

S3 access key for the project bucket

Type: string

Default:

config.scottylabs.project.name

Declared by:

scottylabs.garage.secretKey

S3 secret key for the project bucket

Type: string

Default:

"${config.scottylabs.project.name}admin"

Declared by:

scottylabs.kennel.config

The generated kennel.json derivation that the kennel builder evaluates at build time

Type: package (read only)

Declared by:

scottylabs.kennel.previewDeployments

Deploy a preview environment for each open pull request. Disable for singleton services such as bots, where a preview would run a second instance alongside production. When disabled, pull request commits still build and report kennel/build, but kennel does not deploy the preview.

Type: boolean

Default:

true

Declared by:

scottylabs.kennel.services

Backend services deployed by kennel. Each key must match a devenv process name. Kennel builds the corresponding flake package and deploys it as a systemd transient unit.

Type: attribute set of (submodule)

Default:

{ }

Declared by:

scottylabs.kennel.services.<name>.customDomain

Custom domain for this service

Type: null or string

Default:

null

Declared by:

scottylabs.kennel.sites

Static sites deployed by kennel. Each key names a site. Kennel builds the corresponding flake package and serves it via Caddy’s file server.

Type: attribute set of (submodule)

Default:

{ }

Declared by:

scottylabs.kennel.sites.<name>.customDomain

Custom domain for this static site

Type: null or string

Default:

null

Declared by:

scottylabs.kennel.sites.<name>.spa

Serve index.html for all routes

Type: boolean

Default:

false

Declared by:

scottylabs.postgres.enable

Enable a local PostgreSQL 18 instance with Unix socket access. Creates an initial database named after scottylabs.project.name and exports DATABASE_URL into the shell environment.

Type: boolean

Default:

false

Declared by:

scottylabs.postgres.extensions

PostgreSQL extensions as a function of the extensions set

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

Default:

e: [ e.pg_uuidv7 ]

Declared by:

scottylabs.project.name

Used for database naming, log filtering, and secrets path resolution

Type: string

Declared by:

scottylabs.python.enable

Enable the Python development toolchain. Manages a virtual environment with uv (running uv sync on shell entry once a pyproject.toml exists), adds ruff (lint pre-commit hook, formatting via treefmt’s ruff-format) and ty (type-check pre-commit hook) on PATH.

Type: boolean

Default:

false

Declared by:

scottylabs.ricochet.enable

Run a local OAuth relay on 127.0.0.1:8090 for development, the loopback callback the dev Keycloak client is registered against. Enable it alongside oidc_client to complete an OAuth flow locally the way production does: the IdP redirects to the relay, which forwards the authorization code on to your service’s own callback.

Type: boolean

Default:

false

Declared by:

scottylabs.ricochet.appUrl

Public URL the service is reached at in local development, exported as APP_URL so it can build OAuth redirect targets and absolute links. This is the development value only; deployed environments receive APP_URL from kennel, derived from the deployment domain (see Deploying a Project), so it is never declared in secretspec.toml.

Type: string

Declared by:

scottylabs.rust.enable

Enable the Rust development toolchain. Configures nightly Rust with cranelift (fast debug-mode codegen), clippy, rustfmt, wild/lld linker, and sccache backed by the org’s S3 cache. Sets CARGO_TARGET_DIR to .devenv/state/target. Clippy and cargo test run on every commit.

Type: boolean

Default:

false

Declared by:

scottylabs.rust.cranelift.excludePackages

Crate names forced to the LLVM backend instead of cranelift. Some crates use features that cranelift does not support (FFI symbol emission, linker sections).

Type: list of string

Default:

[
  "aws-lc-sys"
  "aws-lc-rs"
  "rustls"
]

Declared by:

scottylabs.rust.nativeBuildInputs

Extra packages for crates that link C libraries (e.g. [ pkgs.pkg-config pkgs.openssl ]). Prefer rustls over native-tls for TLS (e.g. reqwest = { default-features = false, features = ["rustls-tls"] }) to avoid needing OpenSSL.

Type: list of package

Default:

[ ]

Declared by:

scottylabs.secrets.enable

When scottylabs.enable = true, the openbao (bao) and secretspec CLIs are added to the shell, BAO_ADDR is set for OpenBao authentication, and every secret secretspec resolves is exported into the shell environment. Resolution is enabled per project through the secretspec block in devenv.yaml (see Secrets).

Type: boolean

Default:

true

Declared by:

scottylabs.sqlite.enable

Enable SQLite for local development. Adds the sqlite package and exports DATABASE_PATH pointing to a database file in the devenv state directory.

Type: boolean

Default:

false

Declared by:

scottylabs.valkey.enable

Enable a local Valkey instance for development. Layers services.redis.package = pkgs.valkey under the hood, so the upstream services.redis devenv module drives the process while the binary is the wire-compatible Valkey fork. Adds pkgs.valkey to the shell so valkey-cli is on the path.

Type: boolean

Default:

false

Declared by: