Installation Guide
This document is a guide for installing NaTix OS from the live system booted with the official installation image. Before installing, it is advised to view the FAQ. For conventions used in this document, see Help:Reading.
natixinstall after booting into the live environment. This guide covers the manual process for those who want full control.
Pre-installation
Acquire an installation image
Visit the Download page and acquire the ISO image and the respective GnuPG signature file.
Verify signature
It is recommended to verify the image signature before use, especially when downloading from a mirror. Use gpg to verify:
$ gpg --keyserver-options auto-key-retrieve --verify natix-2025.2-x86_64.iso.sig natix-2025.2-x86_64.iso
Alternatively, verify the checksum:
$ sha256sum -c sha256sums.txt
Boot the live environment
The live environment can be booted from a USB flash drive, an optical disc, or a network with PXE. Write the ISO to a USB drive:
$ dd bs=4M if=natix-2025.2-x86_64.iso of=/dev/sdX conv=fsync oflag=direct status=progress
/dev/sdX. Make sure you identify the correct device.
Set the console keyboard layout
The default console keymap is US. Available layouts can be listed with:
# localectl list-keymaps
To set the keyboard layout, pass its name to loadkeys:
# loadkeys de-latin1
Verify the boot mode
To verify the boot mode, check the efivars directory:
# cat /sys/firmware/efi/fw_platform_size
If the command returns 64, the system is booted in UEFI mode with a 64-bit x64 UEFI. If the file does not exist, the system may be booted in BIOS/CSM mode.
Connect to the internet
Ensure your network interface is listed and enabled:
# ip link
For wireless, authenticate to the network using iwctl:
# iwctl
[iwd]# device list
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks
[iwd]# station wlan0 connect SSID
Verify connectivity:
# ping -c 3 natix.org
Update the system clock
In the live environment, systemd-timesyncd is enabled by default. Ensure the system clock is accurate:
# timedatectl set-ntp true
# timedatectl status
Partition the disks
When recognized by the live system, disks are assigned to a block device such as /dev/sda, /dev/nvme0n1, or /dev/mmcblk0. To identify these devices, use lsblk or fdisk:
# fdisk -l
Use a partitioning tool like fdisk or cfdisk to modify partition tables:
# cfdisk /dev/the_disk_to_be_partitioned
| Mount point | Partition | Type | Suggested size |
|---|---|---|---|
/mnt/boot | /dev/efi_partition | EFI System | 1 GiB |
[SWAP] | /dev/swap_partition | Linux swap | ≥ 4 GiB |
/mnt | /dev/root_partition | Linux x86-64 root | Remainder of device |
Format the partitions
Once the partitions have been created, each newly created partition must be formatted with an appropriate file system:
# mkfs.ext4 /dev/root_partition
# mkswap /dev/swap_partition
# mkfs.fat -F 32 /dev/efi_partition
Mount the file systems
Mount the root volume to /mnt:
# mount /dev/root_partition /mnt
# mount --mkdir /dev/efi_partition /mnt/boot
# swapon /dev/swap_partition
Installation
Select the mirrors
Packages to be installed must be downloaded from mirror servers defined in /etc/natpac.d/mirrorlist. On the live system, after connecting to the internet, reflector updates the mirror list by choosing the most recently synchronized HTTPS mirrors and sorting them by download rate.
The higher a mirror is placed in the list, the more priority it is given when downloading a package. Inspect the file and move geographically close mirrors to the top:
# nano /etc/natpac.d/mirrorlist
Install essential packages
Use the natstrap script to install the base package, Linux kernel and firmware for common hardware:
# natstrap /mnt base linux linux-firmware
linux for a kernel package of your choice, or omit it entirely when installing in a container. You may also want to install other packages like nano, vim, networkmanager, etc.
Configure the system
Fstab
Generate an fstab file (use -U for UUIDs or -L for labels):
# genfstab -U /mnt >> /mnt/etc/fstab
Check the resulting /mnt/etc/fstab file and edit it in case of errors.
Chroot
Change root into the new system:
# natix-chroot /mnt
Time zone
Set the time zone:
# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
# hwclock --systohc
Localization
Edit /etc/locale.gen and uncomment the needed locales (e.g. en_US.UTF-8 UTF-8). Then generate the locales:
# locale-gen
Create the locale.conf file and set the LANG variable:
LANG=en_US.UTF-8
If you set the console keyboard layout, make the changes persistent in vconsole.conf:
KEYMAP=de-latin1
Network configuration
Create the hostname file:
myhostname
Enable NetworkManager so networking starts on boot:
# systemctl enable NetworkManager
Root password
Set the root password:
# passwd
Boot loader
Install a Linux-capable boot loader. For UEFI systems with GRUB:
# natpac -S grub efibootmgr
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=NATIX
# grub-mkconfig -o /boot/grub/grub.cfg
natpac is the NaTix package manager. It works identically to pacman — same flags, same syntax.
Reboot
Exit the chroot environment, optionally unmount all partitions, and reboot:
# exit
# umount -R /mnt
# reboot
Remove the installation medium and log in to the new system with the root account.
Post-installation
After rebooting into your new NaTix system, here are recommended next steps:
Create a user account
# useradd -m -G wheel -s /bin/bash username
# passwd username
# EDITOR=nano visudo
## Uncomment: %wheel ALL=(ALL:ALL) ALL
Install a desktop environment
# natpac -S natix-desktop
# systemctl enable sddm
Enable essential services
# systemctl enable bluetooth
# systemctl enable cups
# systemctl enable firewalld
Install common packages
# natpac -S firefox git base-devel pipewire pipewire-pulse wireplumber
natixinstall — Guided Installer
For users who prefer a guided, interactive installation, NaTix provides natixinstall. It automates the manual steps above through a TUI (terminal user interface).
natixinstall is the NaTix equivalent of Arch Linux's archinstall. It handles partitioning, base install, locale, bootloader, user creation, and desktop environment selection — all in one guided flow.
After booting into the live environment and connecting to the internet, simply run:
# natixinstall
The installer will walk you through:
- Language & keyboard — Select locale and keymap
- Mirror selection — Choose the fastest mirrors for your region
- Disk configuration — Automatic or manual partitioning (ext4, btrfs, xfs)
- Bootloader — GRUB or systemd-boot
- Hostname & timezone
- Root password & user account
- Profile — Minimal, Desktop (NaTix Desktop, KDE, GNOME), or Server
- Additional packages — Add any extra packages before install
- Network configuration — NetworkManager or systemd-networkd
Advanced usage
You can also pass a JSON config file for unattended installs:
# natixinstall --config /path/to/user_config.json
Or run with specific flags:
# natixinstall --script minimal # Minimal headless install
# natixinstall --script desktop # Full desktop with NaTix DE
# natixinstall --dry-run # Preview without writing
See also: General recommendations · List of applications · NaTix Wiki