A record of how my Linux desktop is put together, kept mostly so I can rebuild
it without having to remember everything. The install is scripted in
arch.sh; this page is the readable summary of what that
script sets up.
The script #
One script covers my typical use cases of a Linux machine. arch.sh installs
the base system; --desktop adds the Wayland desktop and applications, and
--vm adjusts for a virtual machine guest. The hostname and CPU microcode are
arguments. Partitioning is deliberately hard-coded and edited by hand before
each run, depending on the intended disk layout of the hardware. After
installing packages the script opens a shell in the new system, where one sets
the root password, creates a user, etc.
Base system #
- Arch Linux on an amd64 machine with UEFI. GPT disk with EFI, swap, and ext4 root partitions.
- systemd-boot, the
linuxkernel with mkinitcpio, CPU microcode, and TLP for power management. - NetworkManager with systemd-resolved. On a desktop, libvirt for virtual machines.
- paru as the AUR helper; reflector keeps the mirror list current.
- Locale
en_US.UTF-8; time zone America/Chicago.
Desktop #
- Wayland with Hyprland. greetd and ReGreet for login; waybar, rofi, dunst, swaybg, swaylock, and wlogout.
- foot as the terminal. grim and flameshot for screenshots; nwg-displays, wlr-randr, brightnessctl, and gammastep for displays.
- fcitx5 with Chewing for Chinese input.
- GTK and icon themes from Kanagawa and Everforest; phinger cursors.
- Fonts: Iosevka, Hack, Nerd Font symbols, Aleo, Besley, Drafting Mono, Noto (including CJK and emoji), and Cantarell.
Everyday tools #
- Shell and editing: bash, neovim, tmux, fd, fzf, ripgrep, zoxide, yazi, jq.
- Development: gcc, clang, rustup, go, gdb, valgrind, git, devtools, Docker, uv, fnm, bun, and QEMU/KVM with virt-manager.
- Networking: tcpdump, Wireshark, nmap, bind tools, inetutils, OpenVPN, Tailscale.
- Files and sync: rsync, syncthing, Nextcloud client, nautilus, file-roller, 7zip.
- Documents: TeX Live, biber, zathura, pdftk, JabRef, Obsidian, calibre.
- Media: PipeWire, pavucontrol, cmus, VLC, imv, ImageMagick, ffmpeg, yt-dlp, OBS.
- Browsers and mail: Firefox, Chrome, Thunderbird, newsboat; pass with browserpass; ente-auth.
- Also: Transmission, Zoom, SpeedCrunch, Safe Eyes, NetHack, logiops, blueman, CUPS.