README.md

5.1 KB · raw

rendered · source

1# nina23**the best way to use nixos.**45Nina wraps the full NixOS workflow in plain, memorable verbs — packages, rebuilds, generations, flakes, services, remote machines. Written in Zig. Zero dependencies. One binary.67```8$ nina search ripgrep9$ nina apply10$ nina back11$ nina status --all12```1314---1516## install1718**nix profile** (recommended — instant, per-user, no `sudo`):1920```sh21nix profile add 'https://kepr.uk/nina/archive/HEAD.tar.gz#nina'22```2324Remove any time with `nina goodbye`.2526**koh** (build from source via koh):2728```sh29koh steal kepr.uk/nina30cd nina && zig build -Doptimize=ReleaseFast31sudo cp zig-out/bin/nina /usr/local/bin/nina32```3334**source archive** (download and build manually):3536Download the source archive from [kepr.uk/nina/releases](https://kepr.uk/nina/releases), then:3738```sh39tar xf nina-*.tar.gz && cd nina-*/40zig build -Doptimize=ReleaseFast41sudo cp zig-out/bin/nina /usr/local/bin/nina42```4344**linux · nixos 24.05+** — requires `nix-command` and `flakes` experimental features.  45Run `nina setup` on first use to enable them automatically.4647---4849## the commands you'll actually use5051```52nina apply           rebuild and switch to the new configuration53nina apply --dry     preview what would change without switching54nina back            roll back to the previous generation55nina go <n>          jump to any generation by number56nina history         list all generations57nina clean           remove old generations and free store space5859nina search <q>      search nixpkgs inline — browse, install, or try60nina option <q>      search NixOS options inline61nina install <p>     add a package — profile (instant) or system config62nina remove <p>      remove a package from profile or system config63nina try <p>         run a package without installing it64nina list            show installed packages6566nina status          machine health at a glance67nina status --all    health across every configured machine68nina doctor          diagnose common issues69nina diff            what changed between generations70nina log             operation history7172nina service list    list systemd services and their state73nina service logs <s> journal logs for a service74nina service start/stop/restart <s>7576nina flake show      inspect flake outputs77nina flake update    update lock files78nina develop         enter a dev shell79nina build           build a flake output80nina run <p>         run a package without installing8182nina edit            open configuration.nix in your editor83nina check           validate config without switching84nina fmt             format nix files85nina info            nixos version, kernel, uptime86nina boot            boot entries8788nina help            all commands89nina --version       version info90```9192---9394## multi-machine9596Any command runs on a remote machine with `--on <name>`. Configure machines in `~/.nina.conf`:9798```ini99[machine]100name    = kyoshi101config  = /etc/nixos102local   = true103default = true104105[machine]106name    = azula107host    = azula108user    = june109ssh_key = ~/.ssh/id_ed25519110```111112```113nina apply --on azula114nina service logs ollama -f --on azula115nina status --all116```117118```119:: status120121   kyoshi   gen 348   3m ago    42 GB122   azula    gen 192   14m ago   18 GB123```124125---126127## search that stays at the prompt128129`nina search` opens an inline widget — no fullscreen takeover. Browse results, see versions and licenses, install to your profile or system config, copy the attr name, or try the package in a temporary shell.130131```132:: search nixpkgs  ripgrep                          12 results133134   > ripgrep        14.1.1   free    fast line-oriented search135     ripgrep-all    0.9.6    free    search across file formats136     ugrep          6.0.0    free    grep compatible ripgrep alt137138   ripgrep  14.1.1  free139   recursively search directories for a regex pattern140   attr   pkgs.ripgrep141142   [i] profile  [s] system  [t] try  [c] copy  [esc] exit143```144145---146147## install that actually works148149`nina install` uses `nix search nixpkgs` directly — no external API, no network dependency after your first channel update, no silent failures. Works offline.150151Two install paths, your choice:152153- **profile** — instant. package available immediately. no rebuild.154- **system** — opens your editor at the right line in `configuration.nix`, then offers to apply.155156---157158## config159160`~/.nina.conf` — plain text, no surprises:161162```ini163editor      = hx164generations = 5165confirm     = true166teach       = false167color       = true168169[machine]170name    = my-machine171config  = /etc/nixos172local   = true173default = true174```175176`teach = true` prints the underlying nix command after each operation so you learn while you work.177178---179180## what nina outputs181182```183:: rebuilding kyoshi...184185   -> [build output]186187:: generation 14  [42.3s]188```189190```191:: error: 'firefocks' not found in nixpkgs192   -> try: nina search firefox193```194195Pink `::` marks Nina's voice. Green for success. Red for errors. Yellow for warnings. Color auto-disables when stdout is not a TTY. Respects `NO_COLOR`.196197---198199## built by200201[asha software](https://asha.software) — hope in every line of code.202203**[nina.asha.software](https://nina.asha.software)** · [source](https://kepr.uk/nina) · [docs](https://nina.asha.software/docs)