agentsclimarketplace

Devenv

Skill kissgyorgy/coding-agents/skills/devenv

Use this when working in a project with devenv.nix, or when devenv.sh development environment setup, services, dependencies, or Nix packages are relevant.From its SKILL.md

Install
npx -y skills add kissgyorgy/coding-agents --skill devenv

Assembled 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.

SKILL.md

4.6 KB, ~1.2k tokens by cl100k_base, 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:

Initialize a New Environment

devenv init

This creates:

  • devenv.yaml - Input configuration
  • devenv.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 environment
  • devenv shell - Enter development shell
  • devenv up - Start services and processes (foreground)
  • devenv up -d - Start services in background
  • devenv processes stop - Stop all processes
  • devenv test - Run tests
  • devenv update - Update dependencies from devenv.yaml
  • devenv search <pkg> - Search for packages
  • devenv 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
  ];
}

What ships with it: 5 files

16.3 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.