Want to use specific packages when you cd into a directory? Handy for ensuring consistent build environments across multiple machines…

flake.nix:

{
  description = "example devshell environment";
 
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
  };
 
  outputs = { self, nixpkgs }:
  let
    pkgs = import nixpkgs { system = "x86_64-linux"; };
  in
   {
    devShells.x86_64-linux.default = pkgs.mkShell {
      packages = with pkgs; [
        package1
        package2
        package4
      ];
      shellHook = ''
        unset SOURCE_DATE_EPOCH # don't set image build dates to 1980
	    source .env 
      '';
    };
  };
}

.envrc:

#!/usr/bin/env direnv
use flake .

note Be sure to git add and git commit your flake file!

direnv allow