Nix Development Environments

MERN Stack Environment:

# shell.nix
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
  buildInputs = with pkgs; [
    nodejs_20
    nodePackages.npm
    mongodb
    redis
    git
  ];
  
  shellHook = ''
    echo "MERN environment loaded"
    echo "Node: $(node --version)"
    echo "MongoDB: $(mongod --version | head -1)"
  '';
}

Next.js Environment:

# shell.nix
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
  buildInputs = with pkgs; [
    nodejs_20
    nodePackages.npm
    nodePackages.pnpm
    postgresql
    redis
  ];
  
  shellHook = ''
    echo "Next.js environment ready"
    export DATABASE_URL="postgresql://localhost/nextjs_dev"
  '';
}

Django Environment:

# shell.nix
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
  buildInputs = with pkgs; [
    python311
    python311Packages.pip
    python311Packages.virtualenv
    postgresql
    redis
    libpq
  ];
  
  shellHook = ''
    echo "Django environment loaded"
    python -m venv venv
    source venv/bin/activate
    pip install django psycopg2-binary redis celery
  '';
}

Quick Commands:

# Enter environment
nix-shell

# One-time setup
nix-shell --run "npm install"

# Run with specific nixpkgs
nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/nixos-23.11.tar.gz