Skip to content

Latest commit

 

History

History
71 lines (61 loc) · 2.5 KB

README.md

File metadata and controls

71 lines (61 loc) · 2.5 KB

Minimal Shell

A module for flake-parts to set up minimal devShell outputs, mostly intended for use with direnv.

Example:

.envrc
use flake
flake.nix
{
  inputs = {
    nixpkgs.url = "nixpkgs";
    systems.url = "systems";
    flake-parts.url = "flake-parts";
    minimal-shell.url = "github:tie-infra/minimal-shell";
  };
  outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } {
    systems = import inputs.systems;
    imports = [ inputs.minimal-shell.flakeModules.default ];
    perSystem = { system, pkgs, ... }: {
      minimalShells = {
        # Add packages to PATH.
        default = with pkgs; [
          nixpkgs-fmt
        ];
        # Set additional environment variables.
        direnv-nocolor = {
          packages = [ pkgs.nixpkgs-fmt ];
          exports = [ "NO_COLOR=1" ];
        };
      };
      # Use with Nixpkgs overlay.
      _module.args.pkgs = import inputs.nixpkgs {
        inherit system;
        overlays = [ inputs.minimal-shell.overlays.default ];
      };
      devShells.direnv-python = pkgs.mkMinimalShell {
        name = "direnv-python";
        packages = [ pkgs.python3 ];
        exports = [ "PYTHONDONTWRITEBYTECODE=1" ];
      };
    };
  };
}

Minimal shell is similar to devshell, except that there are no bells and whistles.

direnv: export ~PATH

With devshell:

direnv: export +DEVSHELL_DIR +PRJ_DATA_DIR +PRJ_ROOT +IN_NIX_SHELL +NIXPKGS_PATH ~PATH

With mkShell from nixpkgs:

direnv: export +AR +AS +CC +CONFIG_SHELL +CXX +HOST_PATH +IN_NIX_SHELL +LD +NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_unknown_linux_gnu +NIX_BUILD_CORES +NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_aarch64_unknown_linux_gnu +NIX_CFLAGS_COMPILE +NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE +NIX_LDFLAGS +NIX_STORE +NM +OBJCOPY +OBJDUMP +RANLIB +READELF +SIZE +SOURCE_DATE_EPOCH +STRINGS +STRIP +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH ~XDG_DATA_DIRS