Desktop as a Code: automated Arch Linux installation with Sway window manager and Neovim. Based on: https://github.com/dabealu/arch-sway
Options:
- zerno build-iso - create iso with zerno bin included
- zerno boot-dev - format device creating storage and boot partitions
- Run
sudo zerno install-basefrom Arch Linux live environment - Reboot into new system
- Run
sudo zerno install-full
iwctl station wlan0 connect "SSID"iwctl station wlan0 get-networks scans for available networks
- select
QXLvideo device in QEMU, run sway viaWLR_NO_HARDWARE_CURSORS=1 sway - archiso environment have sshd and root password access enabled - easy to upload binary and start installation using
scp/ssh
laptop may enter into loop with flashing black screen after selecting install from boot menu.
select install, but press e instead of enter to edit kernel parameters, add nomodeset parameter:
linux /boot/vmlinuz-linux ... nomodeset
initrd ...press ctrl+x to save and load.
ref: https://wiki.archlinux.org/title/Kernel_parameters
this may increase CPU performance, but potentially dangerous.
disable hardware vulnerability mitigations by setting mitigations=off kernel parameter.
https://wiki.archlinux.org/title/PipeWire
set flag to enable WebRTC in chrome: chrome://flags/#enable-webrtc-pipewire-capturer
bluetoothctl
agent KeyboardOnly
default-agent
power on
scan on
pair 00:12:34:56:78:90
connect 00:12:34:56:78:90ref: https://wiki.archlinux.org/title/bluetooth#Pairing
run swaymsg -t get_outputs to get list of outputs and man sway-output for more options.
use wdisplays for GUI configuration.
use lxappearance to set GTK theme and appearance settings.
lxappearance stores config in ~/.gtkrc-2.0.
more themes: https://wiki.archlinux.org/title/GTK#Themes
based on: https://wiki.archlinux.org/title/Media_Transfer_Protocol
install dependencies:
sudo pacman -Sy android-udev android-file-transfer
restart may be needed.
connect phone, select File Transfer (MTP), keep screen unlocked.
mount phone storage:
mkdir -p ~/mnt
aft-mtp-mount ~/mntuse wev to get key code
yay -Sy wevNeovim is installed during Phase 1 (base) and configured during Phase 2 (full).
Config is embedded from assets/nvim/.
See vim.md for detailed documentation, plugins, and keybindings.
Zerno uses systemd-boot with Unified Kernel Images (UKIs). Kernel cmdline is embedded in the UKI via /etc/kernel/cmdline. systemd-boot auto-discovers UKIs in /efi/EFI/Linux/. A pacman hook preserves the previous kernel as fallback on upgrades. See AGENTS.md for full boot architecture.
Zerno always creates Secure Boot keys and signs all EFI binaries via sbctl. Works with Secure Boot OFF (signatures ignored). To enable Secure Boot:
sudo sbctl enroll-keys -mThen enable Secure Boot in your UEFI firmware settings.
- encrypted volume
- intel integrated graphics:
/etc/modprobe.d/i915.confoptions i915 enable_psr=0 enable_guc=0 enable_fbc=0 - consider replacing some apps with TUIs:
- transmission -> aria2
- thunar -> yazi
- ristretto -> chafa/uberzug++
- pavucontrol -> wiremix/pulsemixer
- evince -> AUR tdf-git/fancy-cat/just use browser?
- vlc -> try for fun: mpv --vo=kitty --hwdec=auto video.mp4
- audacious -> create tui wrapper around mpv?