{
  sources ? import ./npins,
  pkgs ? import sources.nixpkgs {
    overlays = [
      (import "${sources.nix-pkgs}/overlay.nix").default
    ];
  },
  dev ? true,
}:
pkgs.mkShell {
  packages = [
    (pkgs.python3.withPackages (
      ps:
      [
        ps.django
        ps.django-avatar
        ps.django-colorful
        ps.gunicorn
        ps.pillow
        ps.loadcredential
      ]
      ++ (
        if dev then
          [
            ps.ipython
            ps.django-debug-toolbar
          ]
        else
          [ ]
      )
    ))
  ];
  env = {
    DJANGO_SETTINGS_MODULE = "Ernestophone.settings";

    CREDENTIALS_DIRECTORY = builtins.toString ./.credentials;

    ERNESTOPHONE_DEBUG = builtins.toJSON true;
    ERNESTOPHONE_STATIC_ROOT = builtins.toString ./.static;
  };
  shellHook = ''
    if [ ! -d .static ]; then
      mkdir .static
    fi
  '';
}
