▸ Agent Skills
1 min read

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.

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

devenv.yaml

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.

Sharing configuration from another repository

To keep your devenv configuration in a separate repository, for example when working on a team that doesn’t use devenv, declare it as a path: input and import it:

inputs:  shared-config:    url: path:../shared-config/    flake: falseimports:- shared-config

devenv.yaml

The sibling shared-config repository only needs a devenv.nix file. Combine this with profiles to define one shared configuration that adapts to each project.

See devenv.yaml reference for all supported import options.


Last updated Oct 08, 2026