Skip to content

Composing using imports

You can compose environments either locally or by referencing inputs.

Imagine you're building a typical web application, with separate frontend and backend components that live in separate folders.

devenv.yaml
inputs:
  nixpkgs:
    url: github:cachix/devenv-nixpkgs/rolling
  devenv:
    url: github:cachix/devenv
    flake: false
imports:
- ./frontend
- ./backend
- devenv/examples/supported-languages
- devenv/examples/scripts

If you enter the frontend directory, the environment will activate based on what's in the frontend/devenv.nix file.

If you enter the top-level project, the environment is combined with what's defined in backend/devenv.nix and frontend/devenv.nix. For example, devenv up will start both the frontend and backend processes.

Added in 1.10

Composing devenv.yaml files is now supported for local files (relative and absolute paths). Remote inputs are not yet supported for devenv.yaml imports.

See devenv.yaml reference for all supported imports.