devenv.sh - Fast, Declarative, Reproducible, and Composable Developer Environments
Running devenv init
generates something like devenv.nix
:
{ pkgs, ... }:
{
# https://devenv.sh/basics/
env.GREET = "devenv";
# https://devenv.sh/packages/
packages = [ pkgs.git ];
enterShell = ''
hello
git --version
'';
# https://devenv.sh/languages/
languages.nix.enable = true;
# https://devenv.sh/scripts/
scripts.hello.exec = "echo hello from $GREET";
# https://devenv.sh/pre-commit-hooks/
pre-commit.hooks.shellcheck.enable = true;
# https://devenv.sh/processes/
# processes.ping.exec = "ping example.com";
}
And devenv shell
activates the environment.
devenv init
: Scaffold devenv.yaml, devenv.nix, and .envrcdevenv shell
: Activate the developer environmentdevenv shell CMD ARGS
: Run CMD with ARGS in the developer environment.devenv update
: Update devenv.lock from devenv.yaml inputs. See http://devenv.sh/inputs/#locking-and-updating-inputsdevenv up
: Starts processes in foreground. See http://devenv.sh/processesdevenv gc
: Removes old devenv generations. See http://devenv.sh/garbage-collectiondevenv ci
: builds your developer environment and make sure all checks pass.