NixPI is a VPS-first, headless AI companion OS built on NixOS.
It combines:
- a plain OVH-compatible NixOS base system
- a host-owned
/etc/nixossystem root - a shared
nixpi-bootstrap-hostintegration path for already-installed NixOS systems - a plain shell runtime for SSH and local tty sessions
Interactive operator sessions stay in a plain shell by default. Pi remains available as a normal command inside that shell.
Install a plain base system onto a fresh OVH VPS from rescue mode:
plain-host-deployexpects the adjacent../nixos_vps_provisionersource tree. If that tree is missing, the wrapper will print setup guidance instead of starting the install.
nix run .#plain-host-deploy -- \
--target-host root@SERVER_IP \
--disk /dev/disk/by-id/PERSISTENT_TARGET_DISK_IDAfter the machine boots, reconnect to the installed host and optionally bootstrap NixPI on the machine:
nix run github:alexradunet/nixpi#nixpi-bootstrap-host -- \
--primary-user alex \
--ssh-allowed-cidr YOUR_ADMIN_IP/32 \
--authorized-key-file /root/.ssh/authorized_keys \
--timezone Europe/Bucharest \
--keyboard usIf you do not pass --hostname, the host keeps the default nixos hostname.
Bootstrap stays enabled after the first rebuild so SSH remains reachable while you validate the machine and complete the operator handoff.
Validate the running host:
systemctl status sshd.service
systemctl status nixpi-app-setup.service
systemctl status nixpi-update.timer
sshd -T | grep -E 'passwordauthentication|permitrootlogin|allowtcpforwarding|allowagentforwarding'
sudo nft list ruleset | grep 'dport 22'If the SSH allowlist is wrong, recover through the OVH console or rescue mode. There is no remote VPN fallback.
Steady-state host model:
/etc/nixosis the running host's source of truthsudo nixpi-rebuildrebuilds the installed/etc/nixos#nixoshost flake- NixPI is layered onto the host-owned system configuration rather than replacing the machine root
Rollback if needed:
sudo nixos-rebuild switch --rollback- Documentation site: https://alexradunet.github.io/NixPI
- Plain host install: https://alexradunet.github.io/NixPI/install-plain-host
- NixPI bootstrap: https://alexradunet.github.io/NixPI/install
- Operations: https://alexradunet.github.io/NixPI/operations/
- Architecture: https://alexradunet.github.io/NixPI/architecture/
- Reference: https://alexradunet.github.io/NixPI/reference/
- Internal notes (non-public):
internal/
Run docs locally:
npm run docs:dev