SSH_PORT | 22 | |
SSH_AUTHORIZED_KEYS_URL | (empty) | e.g. https://github.com/<user>.keys |
SSH_AUTHORIZED_KEYS_FILE | $SCRIPT_DIR/authorized_keys | file beside this script |
INSTALL_TAILSCALE | 1 | |
INSTALL_CHROME | 1 | |
INSTALL_LTS_KERNEL | 1 | |
QT_SKEW_FIX | 1 | update step: Qt modules / Qt-KDE packages the CachyOS repos hold back behind Arch are installed from extra/ (1), or only reported (0) |
INSTALL_OLLAMA | 1 | |
OLLAMA_BACKEND knob | auto | auto | vulkan | rocm | both | cuda | cpu |
OLLAMA_IGPU | 0 | 1 = let Ollama use an integrated AMD/Intel GPU (Strix Halo always does); benchmark first |
INSTALL_DOCKER | 1 | |
INSTALL_PYTORCH knob | auto | auto = only where a supported GPU exists | 1 | 0 |
INSTALL_ROCM knob | auto | auto = Strix Halo only | 1 = any AMD GPU | 0 |
INSTALL_CUDA_TOOLKIT | auto | auto = Turing+ only (Arch cuda 13 dropped Pascal) | 1 | 0 |
INSTALL_LEMONADE | 0 | AMD Lemonade SDK server (Arch extra: lemonade-server) |
INSTALL_THERMALD | auto | auto = Intel laptops except Razer (EC-managed; thermald would reset the powercap step's PL1 to the firmware's 60 W); 1 = also there; 0 = never |
NVIDIA_PERSISTENCE | 1 | keep the NVIDIA GPU initialised (always-on node; disables RTD3) |
NVIDIA_CONTAINER | 1 | nvidia-container-toolkit for Docker GPU access |
TTM_PAGES_LIMIT_GIB | auto | auto = min(120, RAM - 6) GiB the GPU may pin. 1 GiB = 262144 pages |
GTT_LEGACY | 0 | 1 = also set amdgpu.gttsize (deprecated on 6.18+, dmesg warns; harmless) |
IOMMU_OFF | 0 | 1 = amd_iommu=off: community llama.cpp prompt speed +5-12%, generation ~+2%; AMD: not recommended; no NPU, no DMA protection |
EXTRA_KERNEL_PARAMS | (empty) | any machine (kparams step), e.g. reboot=pci; kept in the same managed place |
PPT_MAX | 1 | 1 = push ppt_pl1_spl/pl2_sppt/pl3_fppt to the board maximum (GZ302EA: 80/92/93 W) |
FAN_CURVE | 30c:40%,40c:50%,50c:65%,60c:80%,70c:95%,80c:100%,90c:100%,100c:100% | 8 points, non-decreasing |
FAN_PROFILE | Performance | |
WIFI_ASPM_FIX | 1 | options mt7925e disable_aspm=1 (community stability fix) where an MT7925 exists |
RAZER_CONTROL | 0 | 0 = fans on the EC's automatic control, firmware power mode (default since v2.5, hardware audit); 1 = install razer-control-revived (AUR, community) |
RAZER_POWER_MODE | 1 | RAZER_CONTROL=1 only: 0 Balanced, 1 Gaming, 2 Creator (some models), 3 Silent |
RAZER_FAN_RPM | 0 | RAZER_CONTROL=1 only: 0 = automatic (EC); a fixed RPM on AC is 3500-5000, 3500-5300 on the 2019 Advanced (0245). No tachometer: it is a setpoint |
RAZER_POWERCAP knob | 1 | powercap step: cap the CPU package power (the 2019 Advanced's BIOS/EC sets PL1 60 W / PL2 80 W, above Intel's 45 W TDP); 0 = leave the firmware limits. A cap only lowers: a firmware limit already below it is kept, and the step is n/a where RAZER_PL1_W is above the CPU's TDP (15 W U-series Stealth 13) |
RAZER_PL1_W | 45 | long-term limit PL1 in W (Intel TDP of the i7-9750H); 0 = powercap step off |
RAZER_PL1_WINDOW_US | 28000000 | PL1 time window in us (the hardware rounds it: 28 s reads back 27983872) |
RAZER_PL2_W | 65 | short-term limit PL2 in W (a judgment call below the BIOS 80 W); 0 = step off |
ZRAM_SIZE | auto | auto = min(ram / 8, 16384) on Strix Halo (the iGPU's memory comes out of RAM), elsewhere CachyOS's default 'ram' (no file written); or a zram-generator expression for any machine. Swappiness is left to cachyos-settings (150) |
HIBERNATE knob | 1 | |
SWAPFILE_GIB | 0 | hibernate step, only when there is no disk swap and / is btrfs: size of the swap file it creates in subvolume @swap (0 = auto from RAM: 8->12, 16->20, 32->36, 64->72, 128->140 GiB) |
AUTOLOGIN | 0 | 1 = auto-login the desktop (a drop-in for plasma-login-manager or sddm); 0 = add none (an autologin drop-in already there is reported, kept) |
AUTOLOGIN_LOCK | 0 | |
ENABLE_SMARTD knob | 0 | 1 = smartd watches the system NVMe (weekly short self-test, 70/80 C warnings) |
ENABLE_SCRUB knob | 0 | 1 = monthly btrfs scrub of / at idle priority (btrfs-scrub@-.timer) |
AI_ROOT | /srv/ai | one tree for models, venvs, apps, data, caches (CachyOS: /srv = btrfs subvolume @srv, outside snapper's snapshots of /). Parent missing or read-only: ~/ai |
DOCKER_DATA_ROOT | /srv/docker | Docker images/containers/volumes ("data-root" in daemon.json, set before Docker's first start only; existing data is never moved). Empty = Docker's /var/lib/docker |