Skip to content

Instantly share code, notes, and snippets.

@SuperPauly
Last active April 10, 2026 20:06
Show Gist options
  • Select an option

  • Save SuperPauly/cc9cf130b84a60a256602b2481860728 to your computer and use it in GitHub Desktop.

Select an option

Save SuperPauly/cc9cf130b84a60a256602b2481860728 to your computer and use it in GitHub Desktop.
Install Void Linux Dell XPS 6700HQ

Part 1:


This is an extremely aggressive, high-performance optimization path. By choosing Void Linux (musl) with a custom kernel and a native Wayland compositor, you are shedding decades of legacy code.

Important Reality Check: Applying mitigations=off, forcing a 1000Hz kernel tick rate, and permanently setting a performance CPU scaling governor will yield incredible, instantaneous responsiveness. However, this will severely impact your battery life and disables critical Spectre/Meltdown vulnerability protections. This stack is designed strictly for a tethered, trusted-code performance environment.

Here is your exact, exhaustive master guide to building "The Modern Minimalist" setup on your Dell XPS i7-6700HQ.


Phase 1: Pre-Install Requirements

Step 1: Address the Thermal Bottleneck (Hardware-Critical)

Complete.

Step 2: Motherboard BIOS/UEFI Configuration

Reboot and rapidly press F2 to enter the Dell BIOS.

  • SATA Operation: Set to AHCI. (Dell often ships with "RAID On". Linux requires AHCI to properly manage NVMe/SATA SSDs).
  • Secure Boot: Set to Disabled. (Required to run systemd-boot and a custom-compiled kernel).
  • Fast Boot: Set to Disabled. (Ensures complete hardware initialization for the bootloader during early boot).

Step 3: Prepare the Installation Media

  1. Download the Void Linux Base Live ISO (musl libc variant). Do not download the glibc variant or a desktop edition.
  2. Flash the ISO to a USB drive using Rufus or balenaEtcher. Note: Depending on your exact XPS model's Wi-Fi chip (often Broadcom or Killer network cards), the minimal musl ISO may lack the proprietary firmware to initialize Wi-Fi. It is highly recommended to use a wired Ethernet adapter or USB-tether your phone for the initial installation.

Phase 2: The Installation Process

We will bypass the installer GUI and use a manual chroot process. This guarantees exact control over your partition flags, prevents system-bloat, and allows us to deploy systemd-boot perfectly.

Step 1: Partition the Disk (No Physical Swap)

Boot into the Void live USB in UEFI mode. Log in as root (password: voidlinux). Identify your NVMe drive using lsblk (typically /dev/nvme0n1). Run: cfdisk /dev/nvme0n1

  1. Choose GPT.
  2. Partition 1 (Boot): Size 1G, Type EFI System. (systemd-boot stores kernels here, so 1GB prevents future overflow).
  3. Partition 2 (Root): Remaining space, Type Linux filesystem. Do not create a swap partition. We will use ZRAM.

Step 2: Format and Mount with Aggressive I/O Flags

# Format partitions
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.ext4 -L voidroot /dev/nvme0n1p2

# Mount the root filesystem with SSD optimizations
mount -o noatime,discard,commit=60 /dev/nvme0n1p2 /mnt
mkdir -p /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot

(Rationale: noatime skips write-timestamps on reads, discard handles continuous TRIM, and commit=60 batches journal writes every 60 seconds).

Step 3: Install the Base System & Drivers

XBPS_ARCH=x86_64-musl xbps-install -S -R https://repo-default.voidlinux.org/current/musl -r /mnt base-system linux linux-headers linux-firmware linux-firmware-network intel-ucode systemd-boot

(Installing linux-firmware-network ensures your Dell Wi-Fi works on reboot).

Step 4: Chroot and Configure System Basics

cp /etc/resolv.conf /mnt/etc/
for i in dev proc sys run; do mount --rbind /$i /mnt/$i && mount --make-rslave /mnt/$i; done
chroot /mnt /bin/sh

# Set Hostname, Root Password, and User
echo "xps" > /etc/hostname
passwd
useradd -m -G wheel,audio,video,input,storage,_seatd xpsuser
passwd xpsuser

# Enable sudo for wheel group
visudo # Uncomment the line: %wheel ALL=(ALL) ALL

Step 5: Configure /etc/fstab and systemd-boot

Use blkid /dev/nvme0n1p1 and blkid /dev/nvme0n1p2 to obtain your exact UUIDs. Group them into /etc/fstab:

UUID=<ROOT-UUID>  /      ext4  defaults,noatime,discard,commit=60  0 1
UUID=<BOOT-UUID>  /boot  vfat  defaults,noatime                    0 2

Install the bootloader directly to the EFI partition:

bootctl --path=/boot install

Create /boot/loader/loader.conf:

default void.conf
timeout 0
console-mode max
editor no

Check your installed Kernel version (ls /boot/vmlinuz-*), then create /boot/loader/entries/void.conf combining mitigations=off:

title   Void Linux
linux   /vmlinuz-<VERSION>
initrd  /intel-ucode.img
initrd  /initramfs-<VERSION>.img
options root=UUID=<YOUR-ROOT-UUID> rw quiet loglevel=3 nowatchdog mitigations=off

Step 6: Automate systemd-boot Kernel Updates

Unlike glibc distributions with systemd, Void’s package manager doesn't natively rewrite systemd-boot configuration entries when stock kernels update. To fix this, create a helper script /usr/local/sbin/refresh-boot-entry:

#!/bin/sh
set -eu
ROOTUUID="$(findmnt -no UUID /)"
KVER="$(ls -1 /boot/vmlinuz-* | sed 's#.*/vmlinuz-##' | sort -V | tail -n1)"
{
  echo "title Void Linux (musl)"
  echo "linux /vmlinuz-$KVER"
  [ -f /boot/intel-ucode.img ] && echo "initrd /intel-ucode.img"
  echo "initrd /initramfs-$KVER.img"
  echo "options root=UUID=$ROOTUUID rw quiet loglevel=3 nowatchdog mitigations=off"
} > /boot/loader/entries/void.conf

Run chmod +x /usr/local/sbin/refresh-boot-entry. Run this script manually anytime a kernel update drops via xbps-install -Su.

Exit your chroot, clean up, and launch the system:

exit
umount -R /mnt
reboot

Phase 3: Post-Install System Level Optimizations

Log in to your blazing-fast TTY as xpsuser (ensure you have an active network connection).

Step 1: Wayland, Shell, Audio, and Hardware Video setup

A raw Wayland installation lacks a display manager and an audio stack. We will install the window manager (river or sway), PipeWire for audio, dash for fast script execution, and fish as your interactive shell.

sudo xbps-install void-repo-nonfree
sudo xbps-install -S libva-utils intel-media-driver mesa-vulkan-intel \
  wayland river sway foot bemenu wl-clipboard seatd dbus \
  pipewire wireplumber dash fish-shell zramen firefox

Optimize Shell Defaults: Change the global script executor from bash to the mathematically-faster dash: sudo ln -sf /usr/bin/dash /bin/sh Set fish to be your interactive profile: chsh -s /usr/bin/fish

Step 2: Wayland TTY Auto-Login Profile

We bypass graphical Display Managers completely. Configure Fish so that logging onto TTY1 instantly fires up the Wayland display server through dbus. Create/edit ~/.config/fish/conf.d/login.fish:

if status is-login; and test (tty) = "/dev/tty1"
    # Offload hardware video acceleration
    set -gx LIBVA_DRIVER_NAME iHD
    set -gx MOZ_ENABLE_WAYLAND 1
    
    # Launch compositor (using river here; swap to sway if preferred)
    exec dbus-run-session river
end

(Note: Be sure to set up your river init script or sway config file first, and add exec pipewire & within it to initialize your audio).

Step 3: Run-Level Tuning (I/O, ZRAM, & Daemons)

Force the system to favor your 16GB of RAM over storage, completely avoiding physical disk paging overhead.

Enable sysctl thresholds:

sudo sh -c 'cat > /etc/sysctl.d/99-perf.conf << EOF
vm.swappiness=10
vm.vfs_cache_pressure=50
vm.dirty_ratio=10
vm.dirty_background_ratio=5
EOF'
sudo sysctl --system

Enable Native ZRAM & Wayland Daemons:

sudo ln -s /etc/sv/zramen /var/service/
sudo ln -s /etc/sv/dbus /var/service/
sudo ln -s /etc/sv/seatd /var/service/

Force "Performance" CPU Governor (Runit Script):

sudo mkdir /etc/sv/cpuperf
sudo sh -c 'cat > /etc/sv/cpuperf/run << EOF
#!/bin/sh
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
    echo performance > "\$cpu"
done
exec pause
EOF'
sudo chmod +x /etc/sv/cpuperf/run
sudo ln -s /etc/sv/cpuperf /var/service/

Step 4: Web Browser Canvas Acceleration

To fix app-level CPU bottlenecks, launch Wayland, open Firefox, type about:config, and enforce:

  • gfx.webrender.all -> true
  • media.ffmpeg.vaapi.enabled -> true This will offload heavy 1080p/4K YouTube playback entirely to your Intel iGPU, dropping web CPU load to roughly 1-2%.

Step 5: The Final Masterpiece — The Custom Kernel

Warning: Compile a custom kernel only after your base setup is confirmed to be stable. Do not delete your stock kernel entry until testing is complete.

  1. Install build tools:
    sudo xbps-install -S base-devel ncurses-devel elfutils-devel openssl-devel perl bc git tar xz
  2. Download the latest Linux Kernel source from kernel.org and unpack it.
  3. Download the patchset from the Clear Linux GitHub repo (https://github.com/clearlinux-pkgs/linux) and patch your active kernel directory (patch -p1 < patchfile).
  4. Run make menuconfig. Navigate through the menus and explicitly set:
    • Processor family: -> Skylake (CONFIG_MSKYLAKE=y)
    • Timer frequency: -> 1000 HZ (CONFIG_HZ_1000=y)
    • Preemption Model: -> Fully Preemptible Kernel (CONFIG_PREEMPT_DYNAMIC=y)
    • Compiler Optimization Level: -> Optimize for performance -O2 (CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y)
  5. Compile using all 8 logical cores: make -j8
  6. Install the modules: sudo make modules_install
  7. Copy your bzImage kernel out of /arch/x86/boot/ to /boot/vmlinuz-custom.
  8. Generate a custom initramfs using dracut.
  9. Copy your void.conf systemd-boot loader entry and name it custom.conf, pointing it to your newly compiled kernel names.

Upon rebooting, you will turn the laptop on, clear systemd-boot instantaneously, map RAM compressed swap natively via runit, establish a Wayland environment, and drop cleanly to the desktop from a cold state in sub-2 seconds.

Part 2:


Your Dell XPS heavily bottlenecks your Intel Core i7-6700HQ under Windows, but with 16GB of RAM and 8 logical cores, this hardware is still highly capable. The sluggishness you are feeling comes from telemetry, high scheduler overhead, heavy desktop compositors, but thermal throttling has Been upgraded with new thermal paste which improves performance compared to the manufacturers default.

To wring out every last drop of performance and achieve instantaneous responsiveness, you must strip away bloated desktop components and heavy background daemons. Below is exactly how to achieve maximum snappiness, starting from pre-installation hardware necessities, down to the top 3 fastest setups, and finally the system-level optimizations you need to apply.

0. Hardware & XPS-Specific Prerequisites

Software tuning cannot fix hardware bottlenecks. Before touching the OS, you must address these factors:

  • Use the Intel iGPU: Your XPS likely has an Intel HD 530 and an NVIDIA GTX 960M. For maximum desktop snappiness, only use the Intel iGPU to drive your display. Turn off the NVIDIA GPU via the BIOS (or keep it strictly powered down in Linux) to avoid heavy graphics switching architectures.
  • Dell BIOS Settings: Ensure your storage controller is set to AHCI, not Intel RST / RAID.
  • XPS S3 Sleep & NVMe Quirks: 6th Gen XPS laptops suffer from known Linux ACPI sleep issues with NVMe drives. Add mem_sleep_default=deep to your kernel parameters to allow the laptop to suspend properly without draining the battery or hanging on wake.
  • SSD vs HDD: If you happen to be on a spinning hard drive, a simple SATA/NVMe SSD will outperform every software optimization below combined.

Global System & Kernel Optimizations

Whichever setup you choose, apply these modifications to wring the last bits of juice out of the system.

1. Disable CPU Mitigations (MASSIVE gain)

Your Skylake i7-6700HQ was hit severely by Spectre, Meltdown, and other CPU vulnerability patches. Disabling them returns a 10–30% real-world performance improvement, making this the single largest software enhancement available. Only do this if you understand the security tradeoffs (generally acceptable for personal use if you don't run untrusted code). Add this to your kernel boot parameters:

mitigations=off

2. Custom Kernel Configuration Options

If you are compiling your kernel, set these flags to prioritize latency and exact architecture:

CONFIG_MSKYLAKE=y                     # Optimize specifically for Skylake 
CONFIG_HZ_1000=y                      # 1000Hz clock tick for snappy desktop responsiveness
CONFIG_PREEMPT_DYNAMIC=y              # Full preemption for UI snappiness
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y  # -O2 compiler optimizations

3. I/O and Sysctl Tuning

Tweak how your system handles memory and caching to favor RAM over disk usage by adding these to /etc/sysctl.conf:

vm.swappiness=10
vm.vfs_cache_pressure=50
vm.dirty_ratio=10
vm.dirty_background_ratio=5

4. Swap Physical Disk Swap for ZRAM

Do not use a traditional Swap Partition. Because you have 16GB of RAM, use zram. This creates a compressed block device in your RAM. When the system needs swap, it compresses data into RAM rather than writing it to your SSD. This drastically reduces slow physical I/O overhead.

5. Application Layer Unlocks (Fixing the Blind Spots)

Your OS might be lightning fast, but running a modern web browser can quickly sink an older CPU.

  • Hardware-Accelerated Video Decoding: Install intel-media-driver and configure VA-API. This offloads YouTube/video decoding directly to the Intel HD 530 iGPU, allowing the CPU to remain completely idle.
  • Browser Canvas Acceleration: Manually force hardware WebGL and Canvas acceleration in Firefox (about:config -> gfx.webrender.all=true) or Chromium (chrome://flags -> Override Software Rendering List).

If you clean your thermals, set up mitigations=off, use zram, and deploy Setup #2 or #3 (highly recommended over the insanity of Setup #1 for daily use), your 6th-Gen XPS will feel significantly faster than the day you bought it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment