4 KiB
4 KiB
Electra Setup Specifics
Machine: Framework 16 (Ryzen 7940HS + RTX 7700S / RTX 5070)
1. BIOS Configuration (Crucial)
Before booting NixOS, you must configure the BIOS to handle the memory split for LLMs and performance:
- Reboot and enter BIOS (F2 or Del).
- Find Graphics Memory, UMA Frame Buffer, or iGPU Memory.
- Set this to 16G (or "Game Optimized").
2. Disk Partitioning (Btrfs)
Electra uses a 2TB NVMe with a dedicated boot partition and a flat Btrfs subvolume layout.
Step 1: Subvolume Creation (If Reinstalling)
# Mount the main partition (nvme0n1p2)
mount /dev/nvme0n1p2 /mnt
# Standard subvolumes
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@nix
btrfs subvolume create /mnt/@log
btrfs subvolume create /mnt/@cache
btrfs subvolume create /mnt/@tmp
btrfs subvolume create /mnt/@srv
umount /mnt
Step 2: Mount with Optimizations
# Mount Root
mount -o subvol=@,compress=zstd,noatime /dev/nvme0n1p2 /mnt
# Create mount points
mkdir -p /mnt/{home,nix,var/log,var/cache,var/tmp,srv,boot}
# Mount subvolumes
mount -o subvol=@home,compress=zstd,noatime /dev/nvme0n1p2 /mnt/home
mount -o subvol=@nix,compress=zstd,noatime /dev/nvme0n1p2 /mnt/nix
mount -o subvol=@log,compress=zstd,noatime /dev/nvme0n1p2 /mnt/var/log
mount -o subvol=@cache,compress=zstd,noatime /dev/nvme0n1p2 /mnt/var/cache
mount -o subvol=@tmp,compress=zstd,noatime /dev/nvme0n1p2 /mnt/var/tmp
mount -o subvol=@srv,compress=zstd,noatime /dev/nvme0n1p2 /mnt/srv
# Mount Boot (8GB partition)
mount /dev/nvme0n1p1 /mnt/boot
3. Boot Specialisations
Electra has specialized boot modes selectable at startup (systemd-boot menu):
With dGPU (Graphics Module Installed)
- NixOS Default: NVIDIA + Balanced Power (Standard mode).
- Gaming-Zen: NVIDIA + Zen Kernel + Max Performance (Lower latency/Stutter reduction).
- dGPU-Battery: NVIDIA + TLP (Max energy saving while using dGPU).
Without dGPU (Expansion Shell Installed)
- No-dGPU: iGPU Only + Balanced Power.
- No-dGPU-Battery: iGPU Only + TLP Power Saving.
Note: The dgpu-guard service is active on modes 1-3 to prevent black screens if the hardware is missing.
4. Long-Term dGPU Removal (Expansion Shell Mode)
If you plan to leave the dGPU module out for an extended period, you have two options to make the boot process seamless:
Option A: The "Sticky" Default (Recommended)
You don't need to change any code.
- Reboot Electra.
- At the systemd-boot menu, use the arrow keys to highlight the
No-dGPU(orNo-dGPU-Battery) entry. - Press 'd' (for Default).
- The bootloader will now automatically highlight and boot this entry every time until you change it back.
Option B: The Physical Swap Workflow
- Shutdown and unplug the charger.
- Move the lock switches on the back of the Framework 16 and pull the dGPU module out.
- Slide the Expansion Shell (the empty fan-only module) in and lock it.
- Boot: The system will attempt to boot the Default (Nvidia) mode, hit the
dgpu-guard, and stop at the console. - Reboot and perform Option A to set your new long-term default.
5. Hardware Identifiers & PCI Shift
Important: On the Framework 16, PCI Bus IDs shift depending on whether the dGPU is physically installed.
| Component | dGPU Installed (ID) | dGPU Removed (ID) |
|---|---|---|
| NVIDIA dGPU | PCI:193:0:0 (c1) |
N/A |
| AMD iGPU | PCI:194:0:0 (c2) |
PCI:193:0:0 (c1) |
Impact on Boot Modes:
- Default / Gaming-Zen / Eco-Battery: These modes require the dGPU to be physically installed. Booting them without the dGPU may cause the Nvidia driver to conflict with the iGPU.
- No-dGPU: Use this mode whenever the Expansion Bay is removed. It ignores Bus IDs and works regardless of the shift.
5. Fingerprint Reader
- Login: Password required (KWallet compatibility).
- Sudo / Lock Screen: Fingerprint enabled.
- Enrollment:
fprintd-enroll nimmo