Configuration
BIOS
Enter the BIOS by tapping F10 as the computer boots. Be sure to hold the FN key because, without it, the key will be a media key instead of a function key.
OS
This computer is running EndeavourOS/Arch, installed from a live ISO booted from a flash drive.
Kernel
Iāve added the LTS kernel after an unexpected hard reboot caused by video drivers after an update. The default kernel can be changed at any time by running set-default-kernel or on-demand from the boot menu on each boot. (The system will always boot into the last booted kernel.)
I set the default kernel in the boot loader config. The system uses systemd-boot, with a loader config at /efi/loader/loader.conf.
Added pcie_aspm=off to /etc/kernel/cmdline. This forces the PCIe bus to stay active, preventing hard hardware freezes caused by the Intel BE201 Wi-Fi 7 card crashing during power state transitions (ASPM). To revert, remove the parameter and run sudo reinstall-kernels.
Battery
The charge can be capped at 80% via a BIOS setting. Iām currently running it at 100% because it extends the life only by a little and gives me less capacity for the life of the computer. Not a great trade.
Keymaps
I use a powerful daemon called keyd to handle all system-wide key remapping. This setup replaced a previous implementation that used interception-tools and caps2esc. keyd is more flexible, allowing for complex mappings like layers, chords, and tap-vs-hold actions. It operates at the kernel event level, making it compatible with both Wayland and X11.
This is currently handling the Caps Lock remap to ctrl/esc, the remap of the Copilot key back to a control key, and Meta+Caps Lock to regular caps lock.
Configuration
The primary configuration is located at /etc/keyd/default.conf. This single file defines all custom behaviors.
Management and Debugging
Key management commands for when I need to make changes or fix issues.
Check the service status
sudo systemctl status keydApply changes after editing the config file
sudo keyd reloadDebug key events in real-time
This is the most useful command for troubleshooting. It shows exactly what keyd is seeing when you press a key.
sudo keyd monitorCheck the logs for errors
If keyd fails to start or reload, the logs will explain why (usually a syntax error in the config).
journalctl -u keyd -n 50 --no-pagerTrackpad/Touchpad
Most of the configuration is in the standard settings panel GUI, but I did install a three-finger drag script.
Uninstalling the three-finger drag script
-
Stop and disable the systemd user service
systemctl --user disable --now three-finger-drag.service -
Remove the service file, program binary, and user configuration
rm ~/.config/systemd/user/three-finger-drag.service rm -rf ~/.config/linux-3-finger-drag sudo rm /usr/bin/linux-3-finger-drag -
Remove the system rules and module configuration
sudo rm /etc/udev/rules.d/60-uinput.rules sudo rm /etc/modules-load.d/uinput.conf -
Remove your user from the
inputgroupsudo gpasswd --delete $USER input -
Reboot to apply all permission changes
sudo reboot
System Sounds
The default volume adjust sound was abrasive and annoying, so I swapped in my own. The files are at /usr/share/sounds/ocean/stereo/, and replacing the one just meant dropping in a new file named audio-volume-change.oga. I used a sound from freesound.org.
The old file was renamed audio-volume-change.oga.old. oga is an ogg file but with the extension changed.
Terminal/Shell
The shell is ZSH with oh-my-zsh and the Powerlevel10k prompt.
findfile
This oh-my-zsh plugin allows for creation of file aliases.
findfile <alias-name> <file-path>After creating an alias, the fileās path can be referenced prefixed with @ (defined in ~/.zshrc as fastfile_var_prefix).
Aliases
| Alias | Function |
|---|---|
| ff | fastfile |
| ffp | fastfile_print |
| ffrm | fastfile_rm |
| ffls | fastfile_ls |
| ffsync | fastfile_sync |
Intel GPU Acceleration (IPEX-LLM / oneAPI)
This system is configured to use the integrated Intel Arc GPU for AI/ML acceleration using Intelās instructions. This provides a significant performance uplift over CPU-only inference. The setup involves specific driver versions and the oneAPI toolkit, which are necessary for both high-performance libraries like IPEX-LLM and more general-purpose tools like Ollama.
The key steps were:
- Intel Compute Packages: Installed the official Intel compute runtime packages (
intel-level-zero-gpu,intel-opencl-icd, etc.) from Intelās dedicatedaptrepository. These packages provide the low-level Level Zero and OpenCL libraries that applications use to communicate with the GPU.sudo pacman -S intel-compute-runtime level-zero-loader intel-graphics-compiler ocl-icd - oneAPI Toolkit: Installed the Intel oneAPI Base Toolkit (version 2024.0). This provides the SYCL compilers and libraries (
DPC++) that are essential for modern, high-performance GPU code. This toolkit is required for both building specializedllama.cppversions and for pre-built applications like Ollama to function correctly.sudo pacman -S intel-oneapi-basekit
This setup ensures that any application compiled with SYCL or OpenCL support can fully leverage the iGPU for compute tasks. The environment can be activated in any shell session by running source /opt/intel/oneapi/setvars.sh.
Once the GPU acceleration is in place, itās possible to install and run Intelās custom llama.cpp build.
Login Screen
To set fractional scaling for the SDDM login screen, I created /etc/sddm.conf.d/hidpi.conf.
[General]
GreeterEnvironment=QT_SCREEN_SCALE_FACTORS=1.5,QT_FONT_DPI=144
[X11]
EnableHiDPI=true
[Wayland]
EnableHiDPI=true
Firewall
I use ufw as the firewall on this system. I have added some rules to allow for KDE to communicate: 1714:1764 TCP/UDP.
Usage
Check Status
Shows if the firewall is active and lists all current rules.
sudo ufw statusEnable Firewall
Turns the firewall on and sets it to start on system boot.
sudo ufw enableAllow a Port
Opens a specific port for incoming traffic (replace 22 with the port you need, e.g., 80, 443, or ssh). You can allow a range of ports with : like 22:24 and you can specify the protocol after a slash like 1714:1764/udp.
sudo ufw allow 22Allow from an IP
Allows all traffic coming from a specific IP address (useful for restricting access to your home/office IP).
sudo ufw allow from 192.168.1.50Delete a Rule
Removes a rule. You can delete by typing the original command prefixed with delete.
sudo ufw delete allow 22Reload
After making rule changes, reload the firewall.
sudo ufw reload/etc/hosts
Iāve added an entry for the Dockge service that runs on the home server that will route it inside the network. The service doesnāt accept traffic outside the local network, so it doesnāt respond when the VPN connected (because then traffic is routed out across the internet instead of directly across the home network). This entry enables requests to be routed correctly, even when the VPN is connected.
This means requests will not route correctly when not connected to the home network, but that doesnāt matter because the service will not respond anyway.
Package manager mirrorlist
I believe I updated the package managerās mirrorlist alongside a recent update. This had the unintended side effect of replacing my existing list with one with all of the mirrors commented out.
In an attempt to fix and prevent this in the future, I have installed ghostmirror and, I believe, configured it to run periodically on the mirrorlist. Hereās what I did:
- Ran
ghostmirror -PoclLS "United States" ~/.config/ghostmirror/mirrorlist 30 state,outofdate,morerecent,pingto get a fresh list - Ran
ghostmirror -PoDumlsS ~/.config/ghostmirror/mirrorlist ~/.config/ghostmirror/mirrorlist light state,outofdate,morerecent,estimated,speedto test the list and start a timer - Ran
systemctl --user list-timersto confirm the timer
Tried the instructions on the Arch wikiās page on Ghostmirror, but they were incorrect. I ended up using the instructions from Ghostmirrorās GitHub instead.
Software
Updates
Software updates can be handled in one shot by topgrade, either running topgrade or my upgrade alias. Topgrade was installed via Cargo because the binary shipping on the AUR is bundled with a self-upgrade that fails since the binary is installed as root, making it not modifiable by the user running Topgrade. The Cargo installation does not include this functionality since it depends on Cargo updates to also update Topgrade.
Secrets manager
I tried switched from KWallet to GNOME Keyring in KDE, but this did not work because many apps do not strictly use the bus to communicate with the secret store. Some apps cache the secret store they have begun using and continue using it. Others seem to pull the desktop environment and use that to decide which secret store to use.
In order to use other window managers without breaking everything, I will need to try to make sure they use KWallet instead of GNOME Keyring.
Distrobox
Iāve installed Distrobox for programs that need to be run via another distro. AUR has most software, but for a sensitive app like Signal, I want to install only from an official source to ensure the integrity of the app. They support installation only on Debian-based distros.
Commands
Create a New Container
Creates a new Distrobox container from a specified image. The image can be from any major registry, like ubuntu:22.04, fedora:latest, or archlinux.
distrobox-create --name <container-name> --image <image:tag>List All Containers
Shows all of your created Distrobox containers along with their name, ID, current status (Running/Stopped), and the base image they use.
distrobox-listGet a Shell on a Container
Opens an interactive terminal session inside the specified container. This is the primary command for using your Distrobox environment.
distrobox-enter <container-name>Stop a Running Container
Stops a container that is currently running, freeing up system resources. The containerās data is preserved and it can be started again with distrobox-enter.
distrobox-stop <container-name>Delete a Container
Permanently removes a container and all of its associated data. This action cannot be undone.
distrobox-rm <container-name>Export a Graphical App
Run this command from inside a container to make a graphical application available in your host systemās main application menu.
distrobox-export --app <app-name>Export a Command-Line Tool
Run this command from inside a container to make a binary or script available directly on your hostās terminal.
distrobox-export --bin <path-to-binary>Run a Single Command in a Container
Executes a single, non-interactive command inside a container and then exits. This is useful for scripting or quick status checks.
distrobox-enter <container-name> -- <command>Upgrade Distrobox Integration
Run this on the host to update the Distrobox helper scripts inside all of your containers. This is recommended after updating the Distrobox package on your host system.
distrobox-upgrade --allObsidian
I have installed Obsidian from the Flatpak and configured it to sync via my LiveSync server. Important note: if you do not use the LiveSync sync mode (On Events was the default), it seems to just not sync at all!
For customization sync, you must enable customization sync and select how to handle each file, but then you must also enable hidden file syncing.
Betterbird
Iām using Betterbird for email, contacts, and calendar, with a few additional customizations. First, Iāve added a plugin to minimize on close. (Betterbird can still be closed with Ctrl-q.) Iāve then set Betterbird to minimize to the tray. This will allow me to keep getting email and calendar notifications without having to have the window actually visible. Second, Iāve added tbkeys-lite to give me Vim-like keyboard shortcuts. The lite version does not support arbitrary JavaScript in shortcuts.
Espanso
I run Espanso for text expansion. Its config is at ~/.config/espanso, and that config is under version control. I have it pushed to my personal code forge at ssh://git@code.c.devon.lol:222/Devon/espanso-config.git.
As of 2025-12-21, Espanso does not support per-application settings in Wayland. It also canāt insert in Ghostty, so I have to make sure all of my triggers are obscure enough not to trigger in Ghostty so as to avoid randomly having the contents of the clipboard pasted into the terminal.
KOReader
KOReaderās ākeep screen aliveā setting does not work, possibly because of Wayland. I have prepended systemd-inhibit to KOReaderās .desktop file in the menu so that, when it starts, it will inhibit sleep.
Directory navigation (with z)
I am using zoxide for directory navigation with z. It works differently than the previous implementation which automatically captured directories as you navigated to them. This one only captures directories if you navigate to them using it. I will likely alias it to cd so that I will just use it automatically.
zi is also available for interactive fuzzy searching of zoxideās directory history.
Ollama (Local LLM Server)
Ollama provides a local, OpenAI-compatible API server for running large language models. It uses llama.cpp as its backend and is configured to leverage this systemās Intel Arc iGPU via the oneAPI toolkit for hardware acceleration. This allows other tools to interact with local models without needing to manage the inference process themselves.
Ollama runs as a systemd service under its own ollama user. This means models are stored in /usr/share/ollama/.ollama/models, not the home directory. All management commands must be run with sudo to interact with the service daemon. The local API is the primary way to interact with the models.
- Service Management:
sudo systemctl status|start|stop ollama - Model Management:
ollama pull|ls|rm <model> - OpenAI API Base URL:
http://localhost:11434/v1
Loki (AI Shell Assistant)
Loki is a command-line tool that connects to an LLM provider for various tasks, primarily acting as a shell assistant. Its main purpose on this system is to power the help shell alias, which converts natural language queries into shell commands. It was installed via Cargo (cargo install loki-ai).
Configuration is done in ~/.config/loki/config.yaml. The client is configured to point to the local Ollama instance.
Iāve added the shell integration to ~/.zshrc and a help alias at ~/.oh-my-zsh/custom/aliases.zsh.
Ollama
Ollama is running as a service to provide on-demand access to an OpenAI compatible API. The service name is simply ollama, and it may be managed with systemctl.
API
http://localhost:11434/v1
Commands
Download or update a model
ollama pull <model-name>Browse models using Ollama Search
List installed models
ollama listRemove an installed model
ollama rm <model-name>Loki (CLI AI tool)
Loki has many features, including a chat interface accessed via the bare command (loki). My primary use case for it is to generate CLI commands from plain language. This is done with loki -e <description-of-command>, which I have aliased to help <description-of-command>.
The configuration is at ~/.config/loki/config.yaml. It was installed via Cargo.
Document Scanner (Simple Scan)
This app goes by two names. I have installed it and used their own post-scan OCR script to do OCR on the output. The script uses ocrmypdf with Tesseract to perform the OCR. I currently have only the English language installed, but I can install others with install tesseract-data to get paru to search for the available language data packages.
CLI and TUI apps
CLI and TUI apps on AppleKid HP Omnibook X Flip 16
I have trouble remembering which CLI apps are available to me, so this list is meant to catalog what I have and describe what they are for. The table will be consumed by a shell function that makes them easily searchable from the command line. All data outside the table is ignored by the script.
Link to original
Command Tags/Category Description alsamixertuis, audio, sound, hardware, configuration, utilities A TUI-based sound card mixer for ALSA. Provides detailed control over volume levels, inputs, and outputs in the terminal. aproposhelp, discovery, documentation Searches the names and descriptions of man pages for a keyword. Useful for finding a command when you only know what it does, not what itās called. badblocksdisks, drives, storage, diagnostics, maintenance, utilities A utility to scan a storage device for bad sectors. Itās a destructive-read/write test, so itās best used on unmounted partitions. bluetoothctlbluetooth, pairing, system, devices, audio, hardware, configuration The interactive command-line shell for managing Bluetooth devices. Use it to scan for, pair with, and connect to peripherals like headphones or mice. brightnessctlhardware, display, brightness, configuration A simple command-line tool to read and control device brightness. Ideal for scripting backlight adjustments on laptops or monitors. cdaliases, navigation, paths, directories A āsmarter cdcommandā. This is an alias forzoxide, which remembers your most frequently used directories and allows you to jump to them with just a few characters.cfindfunctions, help, discovery, software, apps, cli An interactive CLI command finder which can be invoked via command or by its current binding of Ctrl+Space. Searches through commands listed in a file in my knowledgebase. chattrfiles, permissions, security, utilities Changes file attributes on a Linux filesystem. Can be used to make files immutable (even for root), preventing accidental deletion or modification. checkupdatespackages, updates, arch A script included with Arch Linux that safely checks for available package updates from official repositories without running a full system upgrade. copyfileplugins, copy, clipboard, files Copies the entire content of a specified file to the system clipboard. (From a Zsh plugin) cryptsetupencryption, disks, partitions, security The command-line tool for managing LUKS encrypted partitions. Used to open (map), close, format, and resize encrypted volumes. dignetworks, dns, diagnostics, utilities A command-line tool for querying DNS servers. Provides more detailed information than hostornslookup.distroboxcontainers, podman, docker, virtualization Creates tightly integrated containerized Linux environments using podman or docker. Allows you to run apps from any distro (e.g., Ubuntu on Arch) as if they were native. dmidecodehardware, diagnostics, firmware, bios, utilities Dumps a computerās DMI (or SMBIOS) table contents in a human-readable format. Excellent for getting detailed hardware information like serial numbers or exact motherboard models. downgradepackages, arch, maintenance, utilities An Arch Linux script to downgrade one or more packages to a version in your local cache or from the Arch Linux Archive. duftuis, disks, drives, partitions, storage, mounts, utilities A user-friendly disk usage/free utility that presents information in a clean, colorized, and easy-to-read table. dyskdisks, drives, storage Display a customizable table of disks. efibootmgrfirmware, boot, uefi, configuration, maintenance, utilities A command-line tool for managing UEFI boot entries. Used to view, create, delete, and change the boot order. ethtoolnetworks, hardware, diagnostics, drivers, utilities A utility for querying and controlling network driver and hardware settings, such as link speed and duplex mode on an ethernet device. fastfilefiles, paths, plugins Creates an alias to a path. (From a Zsh plugin) fastfile_lsfiles, paths, plugins Lists path aliases created with fastfile.findfiles, search, paths, system, utilities A powerful utility to recursively search for files based on complex criteria (name, size, type, date, etc.). Unlike locate, it searches the filesystem in real-time, making it slower but more flexible. Can also execute commands on found items.flatpakpackages, install, apps A package manager for sandboxed applications from repositories like Flathub. Lets you install apps that work across different Linux distributions. galiases, programming, source-control, development, version-control The primary alias for git.gaaliases, programming, source-control, development, version-control Adds file contents to the git index. An alias for git add.gbaliases, programming, source-control, development, version-control Lists, creates, or deletes git branches. An alias for git branch.gcaliases, programming, source-control, development, version-control Records changes to the git repository. An alias for git commit --verbose.gcoaliases, programming, source-control, development, version-control Switches git branches or restores working tree files. An alias for git checkout.gdaliases, programming, source-control, development, version-control Shows changes between git commits, commit and working tree, etc. An alias for git diff.ghostmirrorpackages, system, utilities Creates a mirrorlist for pacman by checking speeds of the list in the mirrorlist file. Can also build a new mirrorlist given a country name. (Currently configured to run on a systemd userspace timer.) ghosttyterminal Starts the Ghostty terminal emulator if run bare, or with sub-commands runs actions that are helpful in configuring the emulator. gitprogramming, source-control, development, version-control A source control app glaliases, programming, source-control, development, version-control Fetches from and integrates with another git repository or a local branch. An alias for git pull.glancestuis, monitoring, performance, processes, hardware, diagnostics, utilities A system monitoring tool providing a comprehensive, all-in-one view of system resources. gpaliases, programming, source-control, development, version-control Updates remote git refs along with associated objects. An alias for git push.gpristinealiases, programming, source-control, development, version-control Destructive. Discards all local changes to a git project, including untracked files, to restore a pristine working directory. An alias for git reset --hard && git clean --force -dfx.gstaliases, programming, source-control, development, version-control Shows the git working tree status. An alias for git status.helpaliases, help, cli An alias for lokiās loki -ecommand writer.hwinfohardware, listings, diagnostics, utilities A comprehensive hardware detection tool that can report on nearly every component in the system in great detail. installaliases, packages, install, aur, arch Alias for paru. Safely installs packages without running a full system upgrade.inxihardware, listings, diagnostics, reports, utilities A powerful command-line system information script. It can generate highly detailed and readable reports about all aspects of a systemās hardware and software configuration. iwctlnetworks, wifi, wireless, configuration, utilities The interactive command-line client for iwd, a modern wireless daemon for Linux. Used to scan for and connect to Wi-Fi networks.jqjson, processors, parsers, pipes, filters, scripting, data-transformations, utilities A command-line JSON processor, often described as āsed for JSONā. Essential for parsing, filtering, and transforming structured data from APIs or configuration files. Also used for pretty-printing. kdeconnect-clikde, phones, devices, transfers, pairing A command-line tool to interact with KDE Connect. Allows for scripting actions like sending files, sharing the clipboard, or finding your phone from the terminal. keydkeyboard, macros, input, system, utilities, configuration, hardware A powerful key remapping daemon, independent of X11 or Wayland. Used to create complex custom layouts, layers (like on QMK keyboards), and macros through simple config files. lazygittuis, version-control, development, programming, source-control An interactive terminal UI for git that simplifies common workflows. Provides a fast, visual way to manage commits, branches, and diffs without memorizing complex commands. locatefiles, search, paths, system, utilities Finds files and directories by instantly searching a pre-built system database. It is an extremely fast alternative to findfor name-based searches, but relies on its database being current (updated withupdatedb).lokillms, ai, cli, help CLI for interacting with local LLMs. Can be used for chat or to ask for help constructing shell commands. lsblkdisks, drives, partitions, storage, block-devices, mounts, filesystems, hardware, listings, system, utilities Lists block devices like hard drives and partitions. Shows a tree-like view of storage devices, their mount points, and sizes. lscpucpus, processors, hardware, listings, system, utilities Displays detailed information about the CPU architecture, including number of cores, threads, cache sizes, and model name. lsmodmodules, drivers, kernel, listings, diagnostics, system, utilities Lists all currently loaded Linux kernel modules. Used for checking which drivers are active and troubleshooting hardware support issues. lsoffiles, processes, sockets, ports, networks, listings, diagnostics, debugging, system, utilities Lists open files and the processes that opened them. An incredibly powerful diagnostic tool for figuring out which process is using a specific file, port, or socket. lspcipci, devices, peripherals, hardware, listings, diagnostics, gpu, system, utilities Lists all PCI devices and buses. Crucial for identifying graphics cards, network adapters, and other internal hardware components. lsusbusb, devices, peripherals, hardware, listings, diagnostics, system, utilities Lists all USB devices currently connected to the system. Essential for identifying hardware, checking vendor/product IDs, and troubleshooting peripherals. miseversions, environments, runtimes, dev-envs, programming, development A fast, polyglot tool version manager that replaces tools like asdfanddirenv. It manages project-specific runtimes (Node, Python, etc.) and environment variables from a single configuration file.mkfsfilesystems, formatting, partitions, disks, utilities A family of commands (e.g., mkfs.ext4,mkfs.btrfs) used to create a new filesystem on a storage device or partition, effectively formatting it.navidiscovery, software, apps, help An interactive cheat sheet for CLI apps. ncnetworks, diagnostics, utilities Functions as a āSwiss Army knifeā for network testing, port scanning, file transfers, and creating network tunnels. Essential for verifying port accessibility ( nc -zv your.ip <port>).nmclinetworks, configuration, wifi, ethernet, connections, utilities The primary command-line interface for NetworkManager. Essential for managing and scripting all aspects of network connections from the terminal. nmtuituis, networks, configuration, wifi, ethernet, connections, utilities A simple and intuitive TUI for NetworkManager. Provides an easy, curse-based interface for managing network connections. ollamallms, ai, apis A tool for running and serving large language models (like Llama 2, Mistral) on your local machine. It provides a simple CLI to pull, run, and chat with models, and exposes a REST API for other applications to use. paccachepackages, maintenance, arch, cache, utilities A script from the pacman-contribpackage used to clean the pacman package cache, for example by keeping only the last 3 versions of each package.pacdiffconfiguration, maintenance, arch, utilities A script to manage .pacnew,.pacsave, and.pacorigfiles. It provides an interactive prompt to view, merge, or delete configuration file updates.pactreepackages, dependencies, arch Shows the dependency tree of a given package. Extremely useful for understanding why a package is installed or for finding reverse dependencies. pastelcolors, graphics, art Color generation and manipulation. pclsaliases, containers, docker, virtualization, dev-envs, development Lists all running Podman containers. An alias for podman container ls.pclsaaliases, containers, docker, virtualization, dev-envs, development Lists all Podman containers, including stopped ones. An alias for podman container ls --all.pilsaliases, containers, docker, virtualization, dev-envs, development Lists all local Podman container images. An alias for podman image ls.plocatefiles, search, paths A much faster reimplementation of locate. It creates an index of all files on the system and uses it to provide instantaneous search results.podmancontainers, docker, virtualization, dev-envs, development A daemonless container engine for running OCI containers, images, and pods. Often used as a direct replacement for the Docker daemon, offering a compatible command-line interface without a central service. powerprofilesctlpower, performance, laptops, configuration, utilities A command-line tool to query and control the systemās power profile (e.g., balanced, power-saver, performance). praliases, containers, docker, virtualization, dev-envs, development Runs a command in a new Podman container. An alias for podman container run.pritaliases, containers, docker, virtualization, dev-envs, development Runs a command in a new Podman container in interactive TTY mode. An alias for podman container run --interactive --tty.prmaliases, containers, docker, virtualization, dev-envs, development Removes one or more stopped Podman containers. An alias for podman container rm.profunctions, paths, navigation Navigates to the projects directory. Add arguments to specify a directory to change to within projects. pstpaliases, containers, docker, virtualization, dev-envs, development Stops one or more running Podman containers. An alias for podman container stop.pvpipes, monitoring, progress, transfers Pipe Viewer. A terminal utility for monitoring the progress of data through a pipe. Invaluable for long-running commands like ddortar.pxcitaliases, containers, docker, virtualization, dev-envs, development Executes a command inside a running Podman container in interactive TTY mode. An alias for podman container exec --interactive --tty.reflectornetworks, packages, arch, maintenance A script that can test the latest Arch Linux mirrors, filter them by speed and country, and overwrite your mirrorlist file. rsyncfiles, backup, transfer, synchronization A utility for synchronizing files and directories, both locally and remotely over the network. It is extremely efficient for backups and mirroring because it uses a delta-transfer algorithm to copy only the differences between source and destination. set-default-kernelfunctions, system, configuration, kernel Allows for easy toggling of the default kernel between LTS and the standard Arch kernel. smartctldisks, drives, storage, health, diagnostics, maintenance, utilities The command-line utility for controlling and monitoring S.M.A.R.T. data on hard drives and SSDs. Essential for checking drive health. startprojectfunctions, development, programming Leverages mise to bootstrap a new app or script using the chosen platform. Keeps me from having to remember how to start a new project. timeshiftbackup, snapshots, restore, maintenance A system restore utility that takes snapshots of the filesystem. It can use rsyncor native BTRFS snapshots on the backend.tldrhelp, docs, cheatsheet Simplified, example-driven man pages. topgradeupdates, maintenance, packages A tool that finds all the package managers you use and runs their respective update commands. A single command to upgrade everything. typsttypesetting, documents, compilers A compiler for creating scientific and technical documents using Typstās markup language. ufwfirewalls, security, networks, configuration A user-friendly command-line interface for managing a netfilter firewall. It provides a simple way to configure iptablesby allowing or denying traffic on specific ports or from certain sources.uninstallfunctions, packages, install, aur, arch, maintenance Recursively removes a package, its unneeded dependencies, and its configuration files. Will uninstall a package by a command name in the package if you donāt know the package name. updatealiases, updates, maintenance, packages Upgrades all system packages using a variety of package managers. An alias for topgrade.updatedbfiles, search, maintenance The command used to create or update the database for locateandplocate. Run this periodically to ensure search results are current.valiases, tuis, editors, text, programming, development Starts the LazyVim Neovim configuration. An alias for lazyvim, which is a script that runsnvimwith theNVIM_APPNAMEenv var set for lazyvim.wgetnetworks, downloads, files, transfers, internet A non-interactive command-line tool for downloading files from the web. It supports HTTP, HTTPS, and FTP protocols and can handle recursive downloads. whatishelp, discovery, documentation Displays a very brief, one-line description of a command from its man page. which-commandaliases, shell, paths, discovery Shows the source of a command, indicating if itās an alias, function, or binary. An alias for Zshās powerful whencebuilt-in.winewindows, compatibility, applications, apps, virtualization, gaming A compatibility layer that allows you to run Windows applications on Linux. Used for everything from games to productivity software. wl-copyclipboard, pipes, system, utilities Copies data from standard input to the Wayland clipboard. The modern equivalent of xclipfor Wayland systems. Often used by piping data into it.wl-pasteclipboard, pipes, system, utilities Pastes data from the Wayland clipboard to standard output. The modern equivalent of xclipfor Wayland systems. Output can be redirected or piped.wpctlaudio, pipewire, hardware, configuration, diagnostics, utilities The command-line control and introspection tool for PipeWire. Used to inspect, select, and configure audio and video devices. xrandrdisplay, monitors, resolution, configuration, x11 A command-line tool for configuring screen resolution, rotation, and multi-monitor setups in X11. Essential for display scripting. zoxidenavigation, paths, directories, shell, productivity A āsmarter cdcommandā that remembers your most frequently used directories. Allows you to jump to a directory with just a few characters of its name.
Programming
Containers
I have installed Podman for containers because it offers rootless mode (although I am not using it currently) and does not require a daemon.
Neovim
Neovim was installed with pacman. Iām using a lazyvim config, which is at ~/.config/lazyvim. I created a shell script at /home/raddevon/.local/bin/lazyvim which runs nvim setting the env var NVIM_APPNAME to use the lazyvim config. That same script is aliased to v for convenience and is set to EDITOR and VISUAL.
Editing Protected Files
Itās common to need to edit a non-user file⦠and especially to open that file without thinking about it! The suda.vim plugin handles this without exiting the editor. Save a file with sudo using Space + W.
Mise (for tool version management)
mise manages tool versions (like Node, Python) and environment variables per-directory.
- Installation: Installed from the Arch Linux extras repo (
sudo pacman -S mise). - Activation: Activated using the
miseplugin in Oh My Zsh (~/.zshrc).
Usage
1. Managing Global (Default) Versions
This sets the default tool version to use when not inside a specific project. If the version isnāt installed, mise will install it for you.
Example: Set the default version for Node and Python.
mise use --global node@22
mise use --global python@3.12This updates the global config file at ~/.config/mise/config.toml.
2. Project-Specific Settings (.mise.toml)
Create a .mise.toml file in a projectās root directory. When you cd into that directory, mise automatically activates these settings.
Example .mise.toml:
# File: ./my-project/.mise.toml
[tools]
node = "20"
python = "3.11"
[env]
DATABASE_URL = "postgres://user:pass@localhost/project_db"
NODE_ENV = "development"3. Running One-off Commands
Use mise exec to run a command with a specific tool version, without changing your global or project settings.
Example: Run a command with Node v22.
mise exec node@22 -- node -v
# v22.x.xExample: Start a Python 3 REPL.
mise exec python@3 -- python
# Python 3.13.2
# >>> ...4. Installing Tools from Other Sources (Backends)
Use the backend:package syntax to install tools from package managers like npm or pipx, or directly from GitHub.
Example: Make prettier, black, and ripgrep globally available.
# Install from npm
mise use --global npm:prettier
# Install from pipx
mise use --global pipx:black
# Install from a GitHub repo
mise use --global github:BurntSushi/ripgrepNow you can run prettier, black, and rg directly in your terminal.
Git
Configuration
1. General & UI Enhancements
These settings improve the general user experience.
-
interactive.singleKey = true- Purpose: Enables single-key responses for interactive commands.
- Benefit: Avoids needing to press
Enteraftery,n, etc., in commands likegit add -p.
-
color.ui = auto- Purpose: Enables colored command-line output.
- Benefit: Drastically improves readability of
status,log,diff, and other commands.
2. Command Aliases
These aliases serve as shortcuts for common or complex commands.
co = checkout: For switching branches or restoring files.ci = commit: For saving changes to the repository.st = status -s: Provides a short, compact status view. Much cleaner than the default.br = branch: A simple shortcut for branch operations.unstage = reset HEAD --: A convenient way to unstage a file (the opposite ofgit add).last = log -1 HEAD: Quickly shows the details of the most recent commit.hist = log --pretty=format:[...] --graph: A powerful, custom log format.- Benefit: Displays commit history as a colored graph, showing branches and merges clearly. It provides a concise, readable summary of each commit (hash, date, author, message).
3. Workflow Defaults
These settings enforce modern, clean workflows.
-
init.defaultBranch = main- Purpose: Sets the default branch name for new repositories to
main. - Benefit: Aligns with the modern industry standard, moving away from
master.
- Purpose: Sets the default branch name for new repositories to
-
pull.rebase = true- Purpose: Performs a
rebaseinstead of amergewhen runninggit pull. - Benefit: Keeps the project history linear and clean by avoiding unnecessary āmerge bubbleā commits. This is a common best practice for team workflows.
- Purpose: Performs a
-
push.autoSetupRemote = true- Purpose: Automatically configures the upstream tracking branch on the first push of a new branch.
- Benefit: Eliminates the need to run the long
git push --set-upstream origin <branch-name>command.
Configuration Management & Future Changes
All global settings described here are stored in a plain text file located at ~/.gitconfig in the userās home directory.
This configuration can be managed in two ways:
- Directly editing the file: Open
~/.gitconfigin a text editor to view, add, or remove settings. - Using the
git configcommand: This is the recommended method for making changes.
Codeforges
I have generated an SSH key on this machine at ~/.ssh/id_ed25519. I have added the public key to GitHub and to my self-hosted codeforge