A NixOS installation ISO that includes the qsuite-install command for installing QNix configurations (client, server, or pentesting).
nix build .#isoThe ISO will be available at result/iso/qnix-iso-*.iso.
- Burn the ISO to a USB drive or boot it in a VM
- Boot from the ISO
- Run
qsuite-installto start the installation process
The qsuite-install command is an installer that prompts for any missing configuration. All arguments are optional. The repository type determines the hardware configuration:
- client/pentesting: Uses impermanence (tmpfs root, persistent
/nixand/persist) - server: Uses standard ZFS without impermanence
qsuite-install [OPTIONS]If no arguments are provided, the installer will prompt for all values interactively.
All arguments are optional. Missing values will be prompted:
--type TYPE: Repository type (client,server, orpentesting)--host HOST: Host name (flake output) to install--disk DISK: Target disk (e.g.,/dev/nvme0n1)--repo URL: Flake URL (default:github:QF0xB/qnix-client) For private repos, use:git+ssh://git@github.com/user/repo--rev REV: Flake ref/rev (default:master)--swap SIZE: Swap size (e.g.,16G) or0for none (default:0)--encrypt: Use LUKS encryption for ZFS partition--half-disk: Use only half of the disk (50% for root partition)--restore FILE: Restore/persistfrom ZFS snapshot stream file--interactive: Explicitly enable interactive mode (prompts for all values)--yes: Skip confirmation prompts--help: Show help message
# Fully interactive (all prompts)
qsuite-install
# Explicitly interactive
qsuite-install --interactive
# Partially interactive (some values provided)
qsuite-install --type client --host QPC
# Non-interactive (all values provided)
qsuite-install --type client --host QPC --disk /dev/nvme0n1 --yes
# Server installation (no impermanence)
qsuite-install --type server --host myserver --disk /dev/sda --swap 32G
# With encryption
qsuite-install --type client --host QPC --disk /dev/nvme0n1 --encrypt
# With private repository (requires SSH keys)
qsuite-install --type client --host QPC --disk /dev/nvme0n1 \
--repo git+ssh://git@github.com/user/qnix-client --rev main- client: Desktop/laptop configuration with impermanence
- server: Server configuration with standard ZFS (no impermanence)
- pentesting: Pentesting configuration with impermanence
The installer fetches the disko configuration from the target repository, looking for:
hosts/<host>/disko.nix(host-specific)disko.nix(root)- Any
disko.nixfile in the repository
qnix-iso/
├── flake.nix # Flake definition
├── modules/
│ └── iso.nix # ISO configuration
├── scripts/
│ └── qsuite-install.sh # Installation script
├── disko.nix # Disko disk configuration
└── README.md # This file
Edit modules/iso.nix to customize the ISO configuration, and scripts/qsuite-install.sh to modify the installation process.