Arch Linux automated installation configurations with netboot.xyz integration, optimized for Dell XPS 15 9500 with ZFS and Hyprland.
This repository provides:
- archinstall configurations: JSON configuration files for automated Arch Linux installations with ZFS
- netboot.xyz integration: Custom iPXE menus for network booting Arch Linux
- Dell XPS 15 9500 scripts: Pre-install and post-install setup scripts
- dotfiles: System configuration files for NVIDIA, Hyprland, touchpad, etc.
├── archinstall/ # Archinstall configuration files
│ ├── user_configuration.json # System config (ZFS, Hyprland, packages)
│ └── user_credentials.json # User accounts and passwords
├── dotfiles/ # System configuration files
│ ├── hypr/
│ │ └── nvidia.conf # Hyprland NVIDIA environment vars
│ └── etc/
│ ├── modprobe.d/
│ │ ├── nvidia.conf # NVIDIA kernel module options
│ │ └── audio.conf # Audio fixes
│ ├── X11/xorg.conf.d/
│ │ └── 30-touchpad.conf # Touchpad configuration
│ └── udev/rules.d/
│ ├── 80-nvidia-pm.rules # NVIDIA power management
│ └── 99-i2c-touchpad.rules # Touchpad power management
├── netboot/ # Netboot.xyz files
│ ├── custom.ipxe # Custom iPXE menu for Arch Linux
│ └── boot.cfg # Boot configuration
├── scripts/ # Helper scripts
│ ├── dell-xps-init.sh # ZFS pre-install script
│ ├── xps9500-hyprland-setup.sh # Post-install driver setup
│ ├── validate-configs.sh # Validate JSON configuration files
│ └── generate-config-url.sh # Generate URLs for archinstall
└── README.md
- Boot into Arch Linux ISO (USB or netboot)
- Connect to internet:
iwctl station wlan0 connect <SSID>
If cloning the repo locally:
chmod +x scripts/*.shThis must run BEFORE archinstall — it partitions the disk and creates the ZFS pool:
curl -fsSL https://raw.githubusercontent.com/danielbodnar/archconfigs/main/scripts/dell-xps-init.sh | bashThis script:
- Installs ZFS on archiso
- Partitions the disk (1GB EFI + ZFS)
- Creates ZFS pool with optimal settings
- Creates ZFS datasets (ROOT, home, var)
- Mounts filesystems at /mnt
Verify setup before continuing:
zpool list # Should show 'zroot' pool
findmnt /mnt # Should show ZFS mountWith filesystems already mounted at /mnt, archinstall will install to the existing layout:
archinstall --config https://raw.githubusercontent.com/danielbodnar/archconfigs/main/archinstall/user_configuration.jsonAfter rebooting into your new system, run:
curl -fsSL https://raw.githubusercontent.com/danielbodnar/archconfigs/main/scripts/xps9500-hyprland-setup.sh | sudo bashThis script:
- Enables multilib repository (for 32-bit packages)
- Installs NVIDIA drivers (dkms)
- Configures hybrid graphics
- Sets up Hyprland for NVIDIA
- Configures touchpad, audio, Bluetooth
- Sets up power management
Add to ~/.config/hypr/hyprland.conf:
source = /etc/hypr/nvidia.conf
- Set up a netboot.xyz server
- Copy the
netboot/files to your server - Update the
github_userandgithub_repovariables innetboot/boot.cfg - Boot your machine via PXE and select the custom menu
archinstall --config "https://raw.githubusercontent.com/danielbodnar/archconfigs/main/archinstall/user_configuration.json" \
--creds "https://raw.githubusercontent.com/danielbodnar/archconfigs/main/archinstall/user_credentials.json"The main archinstall configuration includes:
- Hostname:
xps - Kernels:
linux,linux-zen - Bootloader: Systemd-boot
- Disk: Manual ZFS partitioning
- Desktop: Hyprland with sddm greeter
- Graphics: All open-source drivers
- Custom repos: archzfs for ZFS packages
The configuration installs a curated set of packages including:
- ZFS: zfs-linux, zfs-linux-zen, zfs-utils
- Terminal: ghostty, alacritty, nushell
- Editor: neovim, neovide, zed
- Rust tools: cargo-*, rustup
- Containers: podman, podman-compose, podman-desktop
- Fonts: nerd-fonts, ttf-firacode-nerd, ttf-hack-nerd
System configuration files extracted for easy deployment:
| File | Purpose |
|---|---|
dotfiles/hypr/nvidia.conf |
Hyprland NVIDIA environment variables |
dotfiles/etc/modprobe.d/nvidia.conf |
NVIDIA kernel module options |
dotfiles/etc/modprobe.d/audio.conf |
Intel HDA audio fixes |
dotfiles/etc/X11/xorg.conf.d/30-touchpad.conf |
XWayland touchpad config |
dotfiles/etc/udev/rules.d/80-nvidia-pm.rules |
NVIDIA power management |
dotfiles/etc/udev/rules.d/99-i2c-touchpad.rules |
Touchpad power fixes |
Contains user account information for automated installation.
null will cause the installation to hang waiting for input.
Generating password hashes:
# Generate a yescrypt hash (recommended for archinstall, produces $y$ format)
mkpasswd -m yescrypt 'your-password-here'
# Alternative: SHA-512 hash (produces $6$ format, also supported)
openssl passwd -6 'your-password-here'Replace the example hashes in user_credentials.json with your generated hashes:
{
"!root-password": "$y$j9T$YOUR_GENERATED_HASH_HERE$...",
"!users": [
{
"!password": "$y$j9T$YOUR_GENERATED_HASH_HERE$...",
"sudo": true,
"username": "daniel"
}
]
}Security Note: Never commit real password hashes to public repositories. For private repos or local use, generate fresh hashes before installation.
chmod +x scripts/*.sh
./scripts/validate-configs.sh- CPU: Intel Core i7-10750H
- GPU: NVIDIA GTX 1650 Ti + Intel UHD 630
- Wi-Fi: Killer Wi-Fi 6 AX1650
- Touchpad: ELAN (requires firmware updates)
- Fingerprint reader not supported on Linux
- Deep sleep (S3) may have issues - s2idle recommended
- Touchpad may be laggy without firmware update (
update-touchpad-firmware)
MIT License - See LICENSE file for details