feat: readme for devshells
This commit is contained in:
parent
29ebb90878
commit
37d0685daa
1 changed files with 70 additions and 5 deletions
|
|
@ -4,11 +4,13 @@ This directory contains modular Nix devShell configurations for various programm
|
||||||
|
|
||||||
## Available Shells
|
## Available Shells
|
||||||
|
|
||||||
|
> **Note:** When in the dotfiles directory, use `.#shell-name`. From other directories, use the full path `~/Development/dotfiles#shell-name`.
|
||||||
|
|
||||||
### `default`
|
### `default`
|
||||||
Basic shell with git and nixfmt for dotfiles development.
|
Basic shell with git and nixfmt for dotfiles development.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
nix develop
|
nix develop # or: nix develop .#default
|
||||||
```
|
```
|
||||||
|
|
||||||
### `python-uv`
|
### `python-uv`
|
||||||
|
|
@ -106,18 +108,47 @@ nix develop .#zig-nightly
|
||||||
|
|
||||||
## Usage from Any Directory
|
## Usage from Any Directory
|
||||||
|
|
||||||
You can use these shells from anywhere by referencing your dotfiles:
|
### Option 1: Direct Path Reference
|
||||||
|
Use the full path to your dotfiles:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# From any directory
|
|
||||||
cd ~/my-project
|
cd ~/my-project
|
||||||
nix develop ~/Development/dotfiles#ml-ai
|
nix develop ~/Development/dotfiles#ml-ai
|
||||||
```
|
```
|
||||||
|
|
||||||
## Auto-loading with direnv
|
### Option 2: Flake Registry Alias (Recommended)
|
||||||
|
|
||||||
To automatically load a shell when entering a directory:
|
**One-time setup:**
|
||||||
|
```bash
|
||||||
|
nix registry add dotfiles ~/Development/dotfiles
|
||||||
|
|
||||||
|
# Verify it worked
|
||||||
|
nix registry list | grep dotfiles
|
||||||
|
```
|
||||||
|
|
||||||
|
**Then from anywhere:**
|
||||||
|
```bash
|
||||||
|
cd ~/any-project
|
||||||
|
nix develop dotfiles#ml-ai
|
||||||
|
```
|
||||||
|
|
||||||
|
Benefits: Shorter commands, cleaner paths, easy to remember!
|
||||||
|
|
||||||
|
### Option 3: Auto-loading with direnv (Best for per-project)
|
||||||
|
|
||||||
|
**Recommended: Combine registry + direnv for cleanest setup:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# One-time: Set up registry (if not done already)
|
||||||
|
nix registry add dotfiles ~/Development/dotfiles
|
||||||
|
|
||||||
|
# In each project:
|
||||||
|
cd ~/my-ml-project
|
||||||
|
echo "use flake dotfiles#ml-ai" > .envrc
|
||||||
|
direnv allow
|
||||||
|
```
|
||||||
|
|
||||||
|
**Alternative: Without registry (using full path):**
|
||||||
```bash
|
```bash
|
||||||
cd ~/my-ml-project
|
cd ~/my-ml-project
|
||||||
echo "use flake ~/Development/dotfiles#ml-ai" > .envrc
|
echo "use flake ~/Development/dotfiles#ml-ai" > .envrc
|
||||||
|
|
@ -126,6 +157,40 @@ direnv allow
|
||||||
|
|
||||||
Now the shell automatically activates when you `cd` into that directory!
|
Now the shell automatically activates when you `cd` into that directory!
|
||||||
|
|
||||||
|
### Option 4: Project-specific flake.nix
|
||||||
|
|
||||||
|
Create a `flake.nix` in your project that imports the shell:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
dotfiles.url = "path:/Users/rasyidanakbar/Development/dotfiles";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, dotfiles }:
|
||||||
|
let
|
||||||
|
system = "aarch64-darwin";
|
||||||
|
in {
|
||||||
|
devShells.${system}.default = dotfiles.devShells.${system}.ml-ai;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then simply:
|
||||||
|
```bash
|
||||||
|
cd ~/my-project
|
||||||
|
nix develop
|
||||||
|
```
|
||||||
|
|
||||||
|
### Quick Reference
|
||||||
|
|
||||||
|
| Method | Command | Pros |
|
||||||
|
|--------|---------|------|
|
||||||
|
| Direct path | `nix develop ~/Development/dotfiles#ml-ai` | Simple, no setup |
|
||||||
|
| Registry | `nix develop dotfiles#ml-ai` | Clean, short commands |
|
||||||
|
| direnv + registry | `echo "use flake dotfiles#ml-ai" > .envrc` | Auto-loads, clean |
|
||||||
|
| Project flake | `nix develop` | Shareable, version-controlled |
|
||||||
|
|
||||||
## Adding New Shells
|
## Adding New Shells
|
||||||
|
|
||||||
1. Create a new file in `devshells/` (e.g., `devshells/java.nix`)
|
1. Create a new file in `devshells/` (e.g., `devshells/java.nix`)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue