Skip to content

QF0xB/qnix-iso

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QNix Installation ISO

A NixOS installation ISO that includes the qsuite-install command for installing QNix configurations (client, server, or pentesting).

Building the ISO

nix build .#iso

The ISO will be available at result/iso/qnix-iso-*.iso.

Using the ISO

  1. Burn the ISO to a USB drive or boot it in a VM
  2. Boot from the ISO
  3. Run qsuite-install to start the installation process

qsuite-install

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 /nix and /persist)
  • server: Uses standard ZFS without impermanence

Usage

qsuite-install [OPTIONS]

If no arguments are provided, the installer will prompt for all values interactively.

Arguments

All arguments are optional. Missing values will be prompted:

  • --type TYPE: Repository type (client, server, or pentesting)
  • --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) or 0 for 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 /persist from ZFS snapshot stream file
  • --interactive: Explicitly enable interactive mode (prompts for all values)
  • --yes: Skip confirmation prompts
  • --help: Show help message

Examples

# 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

Repository Types

  • 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:

  1. hosts/<host>/disko.nix (host-specific)
  2. disko.nix (root)
  3. Any disko.nix file in the repository

Development

Project Structure

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

Customizing the ISO

Edit modules/iso.nix to customize the ISO configuration, and scripts/qsuite-install.sh to modify the installation process.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors