Devenv
Nix packages, skills, extensions for coding-agents (Claude Code, Gemini CLI, Pi Coding Agent, Codex)
npx -y skills add kissgyorgy/coding-agents --skill devenvAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use this when working in a project with devenv.nix, or when devenv.sh development environment setup, services, dependencies, or Nix packages are relevant.
SKILL.md
4.6 KB, as published. Nobody here has run it
devenv.sh Development Environments
Create fast, declarative, reproducible development environments using devenv.sh powered by Nix. Official docs: https://devenv.sh
For setting up specific programming languages, services, package managers, see:
- python-uv.md - Detailed Python/uv configuration
- services.md - Complete services configuration guide
- django.md - Django project setup and patterns
Initialize a New Environment
devenv init
This creates:
devenv.yaml- Input configurationdevenv.nix- Environment definition (where you configure everything).envrc- direnv integration.gitignore- Ignores devenv artifacts
Remove comments from .gitignore after init.
The generated .envrc from devenv init works as-is now; you no longer need
the old task-running workaround.
Edit devenv.yaml and replace the inputs section:
inputs:
nixpkgs:
url: github:NixOS/nixpkgs/nixpkgs-unstable
This gives access to the latest packages from nixpkgs.
Adding Nix Packages
Add system packages to your environment:
{ pkgs, ... }: {
packages = with pkgs; [
just # always add this
postgresql # For psql CLI
redis # For redis-cli
];
}
Search for packages:
devenv search <package-name>
Only works after devenv init
Update Lock File
After changing inputs:
devenv update
This updates devenv.lock with pinned versions.
IMPORTANT: ALWAYS run devenv build after editing devenv.nix to make sure the configuration is working.
Fix any problems that occurs during build.
Environment Variables
{
env = {
MY_VAR = "value";
PYTHONUNBUFFERED = "1";
};
}
Common Commands
devenv init- Initialize new environmentdevenv shell- Enter development shelldevenv up- Start services and processes (foreground)devenv up -d- Start services in backgrounddevenv processes stop- Stop all processesdevenv test- Run testsdevenv update- Update dependencies from devenv.yamldevenv search <pkg>- Search for packagesdevenv info- Show environment info
File Structure
Key files devenv manages:
devenv.nix- Your environment configuration (commit this)devenv.yaml- Input sources (commit this)devenv.lock- Pinned versions (commit this).envrc- direnv integration (commit this).devenv/- Build artifacts (don't commit)
Complete Example
{ pkgs, config, ... }: {
# Python with uv
languages.python = {
enable = true;
version = "3.12";
uv = {
enable = true;
sync.enable = true;
};
venv.enable = true; # Activate the synced virtualenv in shell/direnv
libraries = with pkgs; [ postgresql stdenv.cc.cc.lib ];
};
# Services
services = {
postgres = {
enable = true;
package = pkgs.postgresql_15;
initialDatabases = [{ name = "app"; }];
};
redis.enable = true;
};
# Packages
packages = with pkgs; [
git
postgresql
redis
];
# Environment
env = {
DATABASE_URL = "postgresql://localhost/app";
REDIS_URL = "redis://localhost:6379";
};
# Processes (devenv 2.0 native process manager with dependency support)
processes = {
web = {
exec = "python manage.py runserver 0.0.0.0:8000";
after = [ "devenv:processes:postgres" "devenv:processes:redis" ];
};
worker = {
exec = "celery -A myapp worker";
after = [ "devenv:processes:redis" ];
};
};
# Scripts
scripts = {
migrate = {
exec = "python manage.py migrate";
description = "Run migrations";
};
test = {
exec = "pytest";
description = "Run tests";
};
};
# Enable dotenv
dotenv.enable = true;
}
Troubleshooting
Issue: Package not found
Search for it:
devenv search <package>
Ensure using nixpkgs-unstable in devenv.yaml.
Issue: Python virtualenv is not activated
For Python projects using uv, set both languages.python.uv.sync.enable = true and languages.python.venv.enable = true. uv.sync installs dependencies; venv.enable activates the virtualenv so python and console scripts come from the project environment.
Issue: Python package won't install
Add native dependencies to languages.python.libraries:
{
languages.python.libraries = with pkgs; [
postgresql # For psycopg2
stdenv.cc.cc.lib
];
}