Skip to main content

artixinstall

An interactive, menu-driven TUI installer for Artix Linux — the systemd-free Arch-based distribution. Inspired by archinstall, built specifically for Artix with full support for all four init systems and comprehensive hardware detection.

Features

Core

  • No external dependencies — built entirely with Python's standard library (curses)
  • Four init systems — full support for OpenRC, runit, s6, and dinit
  • Guided flow — pre-filled defaults, clear value indicators, and archinstall-style organization
  • Comprehensive logging — all commands and output logged to /tmp/artixinstall.log

Disk & Boot

  • Automatic partitioning — wipes and partitions entire disk (EFI/BIOS aware)
  • Manual partitioning — drops into cfdisk for advanced users
  • LUKS encryption — full-disk encryption with automatic mkinitcpio hook setup
  • Filesystem selection — ext4, btrfs, xfs, or f2fs
  • Configurable swap — 4 GB, 8 GB, or none
  • GRUB & systemd-boot — both supported with LUKS and microcode awareness

Desktop Environments (18 options)

Category Options
Full DEs GNOME, KDE Plasma, XFCE, Cinnamon, MATE, Budgie, LXQt, Deepin, Enlightenment
Tiling WMs Hyprland, Sway, i3, bspwm, dwm, Qtile, awesome, River
Stacking WMs Openbox

Hardware Detection

  • GPU auto-detection — Intel, AMD, NVIDIA (proprietary/open/nouveau), VMware/VirtualBox
  • WiFi detection — automatic chipset detection via lspci and rfkill
  • Bluetooth detection — USB and PCI adapter scanning
  • Laptop detection — battery/chassis/touchpad heuristics for TLP and ACPI
  • CPU microcode — auto-selects Intel or AMD microcode package
  • Printing support — optional CUPS installation

System Configuration

  • 4 kernels — linux, linux-lts, linux-zen, linux-hardened
  • Audio servers — PipeWire (recommended) or PulseAudio
  • Installation profiles — Minimal, Desktop, Server, Development
  • Network managers — NetworkManager, dhcpcd, wpa_supplicant, or none

Package Management

  • Categorized package browser — 40+ packages across 8 categories
    (browsers, multimedia, office, dev tools, system tools, networking, fonts, gaming)
  • Custom package entry — type any package name to add it
  • Optional repositories — lib32 and universe toggles

Safety

  • Destructive operations require explicit "yes" — not just Enter
  • Retry/Abort/Skip on failures — never leaves you stranded
  • Passwords never logged — automatic masking in all log output
  • Input validation — injection-safe username/hostname/locale handling

Requirements

  • Python 3.10+ (included on the Artix live ISO)
  • Must be run as root on a live Artix Linux ISO
  • A storage device to install to
  • Active internet connection for package downloads

Usage

Boot into a live Artix Linux ISO, connect to the internet, then:

pacman -Sy python python-pipx expat --overwrite '*'
pipx install artixinstall
pipx ensurepath
exec $SHELL
artixinstall

If you prefer running from source instead of PyPI:

pacman -Sy git python --overwrite '*'
git clone https://github.com/1ypi/artixinstall.git
cd artixinstall
python -m artixinstall

Notes

  • This project is currently maintained by one person, and I have not tested every possible combination yet.
  • If you try it, please test it and send feedback if something breaks or feels rough. It would be genuinely appreciated.
  • NVIDIA systems are supported, but NVIDIA plus Wayland compositors such as Hyprland can still need manual post-install tuning depending on driver choice and GPU generation.
  • The installer now adds basic NVIDIA-specific Hyprland environment variables automatically when Hyprland and an NVIDIA driver are selected together.

Supported Init Systems

Init System Base Packages Service Enable Method
OpenRC base base-devel openrc elogind-openrc rc-update add <service> default
runit base base-devel runit elogind-runit ln -s /etc/runit/sv/<svc> /etc/runit/runsvdir/default/
s6 base base-devel s6-base elogind-s6 s6-rc-bundle-update add default <service>
dinit base base-devel dinit elogind-dinit dinitctl enable <service>

Project Structure

artixinstall/
├── __main__.py               # Entry point & main menu orchestration
├── tui/
│   ├── menu.py               # Reusable curses menu component
│   ├── screen.py             # Screen/window management, colors
│   └── prompts.py            # Text input, password, yes/no prompts
├── installer/
│   ├── disk.py               # Partition, format, mount, LUKS encryption
│   ├── base.py               # basestrap, fstab generation, mirrorlist
│   ├── init.py               # Init system selection & service mapping
│   ├── locale.py             # Locale, timezone, keyboard layout
│   ├── network.py            # Hostname, network manager setup
│   ├── users.py              # Root password, user creation, sudo
│   ├── bootloader.py         # GRUB / systemd-boot (LUKS-aware)
│   ├── desktop.py            # 18 DE/WM options with package lists
│   ├── hardware.py           # GPU, WiFi, Bluetooth, laptop detection
│   └── packages.py           # Kernel, audio, profiles, package browser
├── data/
│   ├── services.json         # Service-to-init mapping (13 services × 4 inits)
│   ├── mirrors.txt           # Default Artix mirror list
│   └── locales.txt           # 30 common locales
├── utils/
│   ├── shell.py              # Safe subprocess wrapper
│   ├── log.py                # File-based logging with password masking
│   └── validate.py           # Input validation & sanitization
├── pyproject.toml
├── README.md
└── LICENSE

How It Works

  1. Configure — Navigate the grouped main menu and set each option
  2. Review — Select "Install" to see a full summary of your choices
  3. Install — Confirm to begin the automated installation:
    • Partitions and formats the disk (with optional LUKS)
    • Installs base system + all selected packages via basestrap
    • Configures locale, timezone, hostname, users
    • Sets up encryption hooks (if LUKS enabled)
    • Installs bootloader with microcode and encryption support
    • Enables all init-specific services
    • Configures hardware drivers and power management
  4. Reboot — Unmount and reboot into your new Artix system

Contributing

Contributions are welcome! Some areas where help is appreciated:

  • Testing on different hardware configurations and init systems
  • Adding more DEs/WMs — the desktop module is designed to be extended easily
  • LVM support — adding LVM partition layouts
  • Btrfs subvolumes — automatic subvolume creation for snapshots
  • Translations — locale and TUI text internationalization
  • Accessibility — screen reader support

Development

# Zero dependencies — just Python 3.10+ and curses
# Test individual modules:
python -c "from artixinstall.installer.init import load_services; print(load_services())"
python -c "from artixinstall.installer.hardware import detect_gpu; print(detect_gpu())"
python -c "from artixinstall.installer.desktop import DESKTOP_ENVIRONMENTS; print(list(DESKTOP_ENVIRONMENTS.keys()))"

# Run on a live ISO:
sudo python -m artixinstall

Troubleshooting

Problem Solution
"must be run as root" Use sudo python -m artixinstall
Terminal too small Resize to at least 60×20
basestrap fails Check internet connection and mirror availability
LUKS passphrase prompt at boot Enter the passphrase you set during installation
No WiFi after install Verify NetworkManager is enabled for your init system
Black screen after install Try a different GPU driver option

All commands are logged to /tmp/artixinstall.log.

License

GPL-3.0 — see LICENSE for details.

Metadata

Release files for artixinstall 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for artixinstall 1.1.0
File Size Uploaded Provenance
artixinstall-1.1.0.tar.gz 80.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for artixinstall 1.1.0
File Interpreter ABI Platform
artixinstall-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 168.5 kB

Release files / artixinstall-1.1.0.tar.gz

Download URL artixinstall-1.1.0.tar.gz
Size 80.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f7decd2647bfe1350e48e61b724035ae3f622ea3d2c1dba4b3a5c07fff919567
BLAKE2b-256 checksum
How to use checksums
6b91320b81cfd4a9dd3ee1dcebb36374d091029a27ada512e5e9f2991bba3402
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / artixinstall-1.1.0-py3-none-any.whl

Download URL artixinstall-1.1.0-py3-none-any.whl
Size 87.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c9f454ce04a2829e2f6ea3e4e3eef67a41f6226b4050018df2c53cbc5dfd0101
BLAKE2b-256 checksum
How to use checksums
153ecf665ba3e3b959d8a2766c4b4b0423a85f07f06c4e305fcd084d1862cb45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Security for artixinstall 1.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page