Skip to content

shikanime-studio/minishells

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minishells

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.

Requirements

  • Nix with flakes enabled
  • Optional: direnv + nix-direnv

Usage

Enter the default shell:

nix develop

Enter a specific shell:

nix develop .#cloud-pi-native

List available shells:

nix flake show

Direnv

This repo ships an .envrc that loads the default shell:

direnv allow

To automatically load a specific shell, point direnv at the shell attribute:

use flake .#cloud-pi-native --accept-flake-config --no-pure-eval

Template

If 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#default

Then edit .envrc to target the shell you want:

use flake github:shikanime-studio/minishells#cloud-pi-native \
  --accept-flake-config --no-pure-eval

Adding A Shell

Shells 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.

About

Portable development environments for organisations that haven't joined the Nix religion yet.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors