Userland
The text tools are Rust uutils rather than GNU coreutils. The interactive
shell is zsh with a set of modern replacements wired in as defaults.
/bin/sh is dash and behaves the way scripts expect, so nothing
you already wrote changes.
~ ❯ uname -sm Linux aarch64 ~ ❯ ldd /bin/sh /lib/ld-musl-aarch64.so.1 (0x7f9c4a1000) ~ ❯ dnf5 --version 5.4.2.1 ~ ❯ ldd $(command -v dnf5) | grep -c glibc 0 ~ ❯ nvidia-smi --query-gpu=name --format=csv,noheader NVIDIA GB10
Replacements
Each of these is the interactive default. The classic tool remains available and is what scripts resolve to.
| Classic | Default | Difference |
|---|---|---|
ls | eza | git status and tree output |
cat | bat | syntax highlighting, paging |
grep | ripgrep | recursive by default, ignore-file aware |
find | fd | shorter invocations, ignore-file aware |
cd | zoxide | jumps by frecency |
du | dust | usage by directory, sorted |
df | duf | grouped filesystem summary |
top | btop | per-core and per-process history |
ps | procs | search and tree view |
diff | delta | syntax-aware side-by-side output |
time | hyperfine | repeated runs with statistical summaries |
history | atuin | searchable history database |
sudo | doas | smaller configuration surface |
dig | drill | DNS lookups |
curl | xh | HTTP requests with a modern CLI |
| — | bandwhich | bandwidth by process |
| — | gping | ping plotted over time |
Development
neovim with LSP, treesitter and linting configured for Rust, Python and Julia. tmux, git and delta. The hardware and debug set — lspci, lsof, strace, tcpdump, ethtool — is part of the base rather than something you install after the first problem.
podman for containers. CUDA driver, runtime and toolkit are in the image.