on master help sign in
Replace zellij with herdr as the session multiplexer
commit72b80e2a83a643439ac67e0b9139980deb951d93 authoriko <mail@iko.soy> dateMon 29 Jun 2026, 04:32 (3 months ago) parent0681f27
3 files changed+18−18
unifiedsplit
README.md+3−3 c+7−7 flake.nix+8−8
README.md+3−3
@@ -6,7 +6,7 @@ Apple's [`container`](https://github.com/apple/container) CLI on macOS.
66
77It's a plain, single-process image — no NixOS, no systemd — defined in
88[`flake.nix`](./flake.nix). `c start` drops you into a
9−[`zellij`](https://zellij.dev) session whose panes use your host login shell
9+[`herdr`](https://herdr.dev) session whose panes use your host login shell
1010(detected and bundled by `c init`). You choose what else it ships via a
1111per-project `container.nix`.
1212
@@ -49,7 +49,7 @@ nixpkgs) and an optional `mounts` list. It is **required**; there is no default.
4949```
5050
5151Your **host login shell** (detected by `c init`, bash fallback), **coreutils**,
52−[**zellij**](https://zellij.dev) (the session `c start` launches), **Nix** itself
52+[**herdr**](https://herdr.dev) (the session `c start` launches), **Nix** itself
5353(with CA certs and `nix-command`/`flakes` enabled, single-user), and the ncurses
5454**terminfo** database are always included — no need to list them.
5555
@@ -68,7 +68,7 @@ that holds a `container.nix`; the container is named after that directory.
6868# build the image, load it, and create the container (named after $PWD):
6969nix run github:ilyakooo0/nix-container -- init
7070
71−# start it and attach — drops you into a zellij session:
71+# start it and attach — drops you into a herdr session:
7272nix run github:ilyakooo0/nix-container -- start
7373```
7474
c+7−7
@@ -28,7 +28,7 @@ switch $argv[1]
2828 end
2929
3030 # Host login shell (by name): added to the image automatically and baked
31− # in as the cmd + default $SHELL (what zellij panes etc. spawn), so it
31+ # in as the cmd + default $SHELL (what herdr panes etc. spawn), so it
3232 # needn't be listed in container.nix. Falls back to bash.
3333 set -l shell bash
3434 test -n "$SHELL"; and set shell (path basename $SHELL)
@@ -74,19 +74,19 @@ switch $argv[1]
7474 end
7575
7676 # Replace any existing container of the same name, then create it running
77− # zellij in a session named after the project (`<dir>-container`). This
78− # overrides the image's default plain-zellij cmd; `c start` attaches to it.
77+ # herdr in a session named after the project (`<dir>-container`). This
78+ # overrides the image's default plain-herdr cmd; `c start` attaches to it.
7979 container rm --force $name 2>/dev/null
8080 # The image only lays down /bin and /etc, so /tmp and /run don't exist;
81− # without them anything that writes temp files (zellij, build tools, …)
81+ # without them anything that writes temp files (herdr, build tools, …)
8282 # fails with ENOENT. Mount writable tmpfs at both.
8383 container create --name $name --ssh -it -e "TERM=$term" \
8484 --tmpfs /tmp --tmpfs /run --memory 8g --cwd /workspace $mounts $argv \
85− $image /bin/zellij --session "$name-container"
85+ $image /bin/herdr session attach "$name-container"
8686 case start
87− # Start the container and attach to its cmd (zellij). TERM was baked into
87+ # Start the container and attach to its cmd (herdr). TERM was baked into
8888 # the container env at create time (`-e TERM`), which survives this path.
89− # Exiting zellij (PID1) stops the container; `c start` boots it again.
89+ # Exiting herdr (PID1) stops the container; `c start` boots it again.
9090 container start -ai $name
9191 case '*'
9292 echo "usage: c init [-c FILE] [create args] | start" >&2
flake.nix+8−8
@@ -78,9 +78,9 @@
7878 imageTag = "latest";
7979
8080 # Build the OCI image (named `name`) from a `{ pkgs, nur }: [ ... ]`
81− # package function, for the named shell. The image's `cmd` is zellij
81+ # package function, for the named shell. The image's `cmd` is herdr
8282 # (the session `c start` attaches to); the shell is the default `$SHELL`
83− # (what zellij panes spawn) and is added automatically, so `container.nix`
83+ # (what herdr panes spawn) and is added automatically, so `container.nix`
8484 # lists only your extras. Nix (+ CA certs) and the ncurses terminfo
8585 # database are always shipped too. Nothing here is fish-specific: the
8686 # TERM fixup happens host-side in `c` (passed via `-e TERM` at create).
@@ -119,7 +119,7 @@
119119 # entry for whatever TERM `c` passes in and render correctly.
120120 pkgsLinux.ncurses
121121 # The session `c start` always launches.
122− pkgsLinux.zellij
122+ pkgsLinux.herdr
123123 ];
124124 # Link all of /etc so the above files (nsswitch.conf, protocols,
125125 # services, passwd, group, ssl certs) are present.
@@ -133,15 +133,15 @@
133133
134134 config = {
135135 # `cmd` (not `entrypoint`): the default command, *replaced* by any
136− # command passed to `container run/create`. Plain zellij here;
137− # `c init` overrides it with `zellij --session <dir>-container` so
136+ # command passed to `container run/create`. Plain herdr here;
137+ # `c init` overrides it with `herdr session attach <dir>-container` so
138138 # the session is named per project. `c start` attaches via
139− # `container start -ai`; exiting zellij (PID1) stops the container.
140− cmd = [ "/bin/zellij" ];
139+ # `container start -ai`; exiting herdr (PID1) stops the container.
140+ cmd = [ "/bin/herdr" ];
141141 env = [
142142 "PATH=/bin"
143143 "HOME=/root"
144− # Default shell for tools that spawn one (zellij panes, etc.).
144+ # Default shell for tools that spawn one (herdr panes, etc.).
145145 "SHELL=/bin/${shell}"
146146 # Marker so shells/scripts can detect they're in here.
147147 "NIX_CONTAINER=1"