This repo is where I park the Nix/devenv shells I actually use for the different open source organisations I work with. Instead of reinventing a dev environment every time, I plug in system config once and spin up a shell per project.
- Nix with flakes enabled
- Optional: direnv + nix-direnv
Enter the default shell:
nix developEnter a specific shell:
nix develop .#cloud-pi-nativeList available shells:
nix flake showThis repo ships an .envrc that loads the default shell:
direnv allowTo automatically load a specific shell, point direnv at the shell attribute:
use flake .#cloud-pi-native --accept-flake-config --no-pure-evalIf you want to consume these shells from another checkout (or without a local clone), you can init a tiny direnv setup:
nix flake init -t github:shikanime-studio/minishells#defaultThen edit .envrc to target the shell you want:
use flake github:shikanime-studio/minishells#cloud-pi-native \
--accept-flake-config --no-pure-evalShells live under devenv.shells in [flake.nix](file:///Users/shikanimedeva/Source/Repos/github.com/shikanime-studio/minishells/flake.nix).
Most shells import base for common packages and settings, then layer extra
languages, packages, env vars, and hooks:
devenv.shells.my-shell = {
imports = [ base ];
languages.go.enable = true;
packages = with pkgs; [
gnumake
];
};This flake also imports devlib,
so shells can reuse devlib.devenvModules.<name> profiles for consistent
formatters, hooks, and generators.