How to Build a Cross-Shell Dotfiles Repository
Separate shared environment, shell-specific syntax, secrets, and machine-local state, then deploy links idempotently and make rollback intentional.
tag
138 posts
Separate shared environment, shell-specific syntax, secrets, and machine-local state, then deploy links idempotently and make rollback intentional.
Test Fish, Nushell, or another shell as an interactive tool first: inventory compatibility, isolate configuration, benchmark real tasks, keep a recovery shell.
A maintainable shell library needs a documented target shell, namespaced functions, no import-time surprises, and tests run in fresh processes.
FIFOs connect unrelated processes through a filesystem name; process substitution makes similar streams temporary, and both need careful failure handling.
Choose the target shell, quote data, model arrays and pipelines correctly, and use focused ShellCheck directives only when genuinely needed.
OpenSSH can reuse one authenticated transport for later sessions — configure a private control socket, bounded persistence, and explicit cleanup.
Configure Flagger canaries with metric gates, controlled traffic shifts, load tests, and automatic rollback while preserving operational safeguards.
Implement GitOps with Argo CD using pinned installation assets, constrained projects, safe automated sync, drift detection, and tested recovery.
Deploy Kubernetes NetworkPolicies with verified CNI enforcement, default-deny baselines, explicit DNS access, namespace labels, and negative tests.
Configure and test Kubernetes PodDisruptionBudgets for safe drains and upgrades without mistaking eviction limits for an availability guarantee.
Deploy and validate kube-prometheus-stack with persistent storage, secure Grafana access, bounded cardinality, alert routing, and recovery tests.
Build a reusable Helm chart with safe templates, documented values, schema validation, immutable images, release tests, and OCI packaging checks.
Installing a C compiler and assembler on FreeDOS and building your first program, for anyone wanting to write DOS software rather than just run it.
Installing DOSLFN, understanding what it can and can't do, and verifying long filenames actually work with your specific FreeDOS utilities.
Getting sound, mouse, and memory configured correctly for DOS-era gaming — the three things almost every classic game setup guide assumes already work.
Configuring a RAM disk with the built-in RAM driver — a fast, volatile drive letter backed by memory, useful for temporary files and disk-heavy tasks.
Building a batch-file boot menu that manages memory-hungry TSRs — loading only what a chosen task needs, freeing conventional memory for everything else.
Configuring the USBASPI/ASPIDISK driver chain to give FreeDOS a working drive letter for a USB flash drive, bridging DOS-era drivers to a newer standard.
How to inspect ZFS boot-environment coverage, create and verify a bectl rollback point, activate it safely, and reclaim space afterward.
How to adapt a FreeBSD program for Capsicum by pre-opening resources, limiting descriptor rights, entering capability mode, and testing denial.
A current iocage workflow for selecting a supported FreeBSD release, creating a ZFS-backed jail, managing networking, updates, snapshots, and removal.
A secure FreeBSD pkg repository workflow covering package provenance, offline signing, atomic publication, HTTPS serving, client trust, and rollback.
A console-safe FreeBSD IPv4 router and PF NAT workflow covering interface plans, forwarding, default-deny rules, management access, validation, and recovery.
Build and test a Haiku backup that preserves BFS attributes, user settings, package inventory, writable state, and safe restore boundaries.
Prepare a native Haiku toolchain, compile and inspect a minimal Kit application, then build a reproducible x86_64 system image safely.
Verify an official Haiku image, test it live in a VM, prepare BFS and firmware boot safely, install, reboot, and validate the result.
Create typed BFS metadata, index it per volume, build and save accurate Tracker queries, and verify live results without losing attributes.
Use Haiku's limited POSIX account tools for services and shell tests while understanding why they do not create separate desktop users.
Build a warning-clean Haiku GUI with BApplication, BWindow, layout-managed controls and BMessage handling, then test its real lifecycle.
Search, install, update and remove Haiku packages safely, audit repositories and package state, and recover without imaginary rollback commands.
Use Haiku Terminal, Bash profiles and native filesystem tools safely, write portable scripts, and separate POSIX habits from Linux assumptions.
Configure WebPositive's real settings, organize file-based bookmarks, control history and cookies, and handle downloads and credentials safely.
Configuring the Linux audit daemon to watch specific files, commands, and syscalls, then actually query the resulting logs for something useful.
A complete walkthrough reading, changing, and persisting kernel runtime parameters — with a few of the most commonly tuned examples explained, not just listed.
Creating and running a lightweight systemd-nspawn container — useful for isolated testing environments without a full container runtime's overhead.
Creating, listing, mounting, and cleaning up APFS local snapshots directly — the same mechanism Time Machine uses, available for manual, ad-hoc use.
Resetting NVRAM and the System Management Controller — two different low-level resets solving different problems, on Apple Silicon and Intel Macs.
Build a RetroArch decorative border with licensed artwork, correct alpha, a measured custom viewport, safe overlay configuration, and scoped presets.
Configure RetroArch CRT shaders from an official preset, then calibrate geometry, scanlines, mask, brightness, scaling, performance, and preset scope.
Configure RetroArch local multiplayer by separating physical controller assignment from emulated multitap device types, port rules, remaps, and hotkeys.
Set up RetroArch netplay with matched builds and content, private lobby settings, relay-first connectivity, narrow firewall rules, tested ports, and logs.
Use RetroArch overrides safely by separating frontend settings, core options, input remaps, and shader presets across core, directory, and game scopes.
Install RetroArch and trusted Libretro cores, configure writable data paths, verify firmware and controllers, and prove a clean game launch.
Build a supportable RetroPie console with a model-matched official image, secure networking, lawful content, safe updates, and tested backups.
Configure RetroArch rewind with verified save-state support, measured memory and frame-time costs, safe hotkeys, narrow overrides, and rollback tests.
Configure RetroArch run-ahead from measured internal game lag, validate core serialization and performance, and keep a reversible per-game profile.
The two essential shell debugging tools: one traces exactly what a script actually executes, the other catches whole categories of bugs before it ever runs.
Setting up fzf, a general-purpose fuzzy finder that plugs into history search, file finding, and practically any list-based shell workflow.
Writing shell scripts that run correctly under any POSIX-compliant shell, not just whichever one happens to be installed on your own machine.
GNU screen is older and less feature-rich than tmux, but still genuinely useful, and often already pre-installed on systems where tmux isn't.
Installing Starship, a fast, shell-agnostic prompt that works identically across Bash, Zsh, and fish, and configuring which information it shows.
Running multiple shell sessions inside one terminal window, splitting panes, and, most importantly, keeping sessions alive across disconnects.
Setting up a terminal-based file manager for navigating, previewing, and manipulating files entirely with the keyboard, without leaving the terminal.
Installing and configuring a full-screen terminal system monitor for real-time CPU, memory, and process information, entirely keyboard-driven.
Setting up Windows Terminal specifically for a smooth WSL experience: default profile, font, and the settings that most commonly need adjusting.
Installing Zsh as your shell, setting up Oh My Zsh, and configuring a theme and a first useful plugin, from a default shell to a productive one.
Set up 86Box, PCjs, or MartyPC to recreate the 5150's real hardware — 8088 at 4.77 MHz, floppy-only boot, PC DOS — and feel the 1981 constraints.
Where to legally read the code behind computing history: Netscape 1998, early Unix via TUHS, museum releases like MacPaint, and id's GPL drops.
A practical checklist for verifying tech history claims before repeating them: earliest sources, denials, primary documents, and citogenesis traps.
Run preserved historical software in your browser through archive.org's collections, check provenance metadata, and use emulated originals for research.
Official re-releases like Atari 50, Arcade Archives, subscription libraries, licensed mini consoles, and original hardware — legal paths to 1983-era games.
Run Navigator or Mosaic via oldweb.today, a period VM, or archive.org emulation — and pair them with Wayback captures for the real 1990s experience.
Image floppies at the flux level with Greaseweazle or KryoFlux, verify with checksums, follow 3-2-1 storage, and archive disks before they fade.
Move from a secondhand claim to a verified fact using SEC filings, court opinions via RECAP, Usenet archives, and contemporaneous announcements.
Use Google Patents, Espacenet, and USPTO records — filing dates, prior art, assignments, litigation — to trace who actually built what first.
Plan around live demos like CHM's IBM 1401 and Bletchley's Colossus rebuild, mine oral history archives, and use collection databases remotely.
Find dated captures of any URL, compare page versions over time, query the CDX API, and cite Wayback Machine snapshots as real primary sources.
Packaging and deploying an MSI installer to multiple computers automatically via Group Policy Software Installation — no third-party deployment tool.
Enabling Hyper-V and creating a working virtual machine — Windows' own native, type-1 hypervisor, built directly into Pro and Enterprise editions.
Building a current App Control for Business policy from a reference system, deploying it in audit mode, reviewing evidence, and enforcing it in rings.
Exporting a WSL distro's entire state to a portable file, and restoring it later on the same machine after a problem or on an entirely different one.
A complete diskpart walkthrough for shrinking a WSL2 distro's .vhdx file after deleting large data, since Windows never reclaims that space on its own.
Configuring Docker Desktop to use WSL2 as its backend, integrating specific distros, and verifying containers run on WSL2's real kernel, not a separate VM.
Turning on systemd support in a specific WSL2 distro, applying the required restart correctly, and verifying services actually manage correctly afterward.
Both directions of WSL file access, plus the performance-driven rule for deciding which filesystem a given project's files should actually live on.
Setting up an NVIDIA GPU for CUDA-accelerated machine learning in WSL2, from Windows-side driver installation through verifying real acceleration.
Getting WSL2 and a Linux distro running from a clean Windows install using the single-command path, plus what to check if it doesn't work the first time.
Running several separate Linux distros side by side under WSL, installing new ones, switching between them, and setting a specific one as your default.
Switching between WSL2's default NAT networking and mirrored networking mode, and verifying which one actually solves your specific reachability problem.
Installing and running a graphical Linux application directly on the Windows desktop through WSLg, with no separate X server setup or remote desktop session.
Edit and debug code inside a WSL distro from Windows VS Code without copying files across operating systems or sacrificing Linux filesystem performance.
Setting memory, CPU, swap, and networking behavior for every WSL2 distro on your machine from the one central, global .wslconfig file.
Build a production-minded Kubernetes logging pipeline with Fluent Bit, Elasticsearch, Kibana, secure transport, retention, and failure controls.
Integrate Kubernetes workloads with HashiCorp Vault using scoped authentication, safe initialization, agent injection, rotation, and audit controls.
A secure FreeBSD-native nginx deployment covering packages, rc.conf, isolated site configuration, PF validation, TLS issuance, logging, and rollback.
A verifiable FreeBSD security-update workflow for pkg and base-system auditing, periodic delivery, patch-method detection, staged remediation, and evidence.
Match a printer's real page language and connection to Haiku's driver and transport, validate a test page, and isolate failures safely.
Read ProcessController's CPU and memory indicators correctly, inspect teams and threads, capture evidence, and avoid destructive controls.
Configuring unattended-upgrades (Debian/Ubuntu) and dnf-automatic (RHEL/Fedora) to apply security patches automatically, with sane limits on scope.
Combining two or more network interfaces into a single bonded interface with NetworkManager — for redundancy, throughput, or both, by mode.
Building a real automation with both of macOS's built-in automation tools — when to reach for each, and how they actually relate to one another.
Reading macOS's unified logging system through Console — filtering the noise down to the specific process or subsystem actually relevant to a problem.
Viewing saved passwords, storing new items securely, managing certificates, and understanding how iCloud Keychain syncs credentials across devices.
Configuring Screen Time for app limits, content restrictions, and downtime scheduling — for a managed child account or your own usage discipline.
Configure RetroArch native cloud sync safely with a primary device, non-destructive backups, matching directory rules, conflict tests, and secret hygiene.
Organize lawful game dumps without losing provenance: verify hashes, preserve masters, track transformations, and build auditable metadata and artwork.
The actual difference between an alias and a function, when each is the right tool, and how to avoid the mistakes that make aliases behave unpredictably.
Setting up a terminal-based git interface for staging, committing, browsing history, and resolving conflicts visually without leaving the terminal.
Find RFCs, decode status and obsoleted-by chains, read MUST/SHOULD normative language, and use the primary specs behind email and the web.
Pooling multiple physical drives into a resilient virtual disk — Windows' built-in, software-defined answer to hardware RAID, set up step by step.
A practical Kubernetes guide to blue-green cutovers and cautious canary releases, with health gates, rollback checks, and routing caveats.
Create a secure GitHub Actions pipeline that tests, builds, attests, and deploys immutable container images through OIDC and protected environments.
Configure Kubernetes HPA with verified metrics, resource requests, scaling behavior, load tests, and capacity safeguards for reliable autoscaling.
Create a reproducible local Kubernetes cluster with kind, load development images safely, expose services, test multiple nodes, and clean up.
The single most common reason to boot FreeDOS today: building a bootable USB stick to run a vendor's DOS-based firmware update tool.
Getting a CD-ROM drive recognized and assigned a drive letter on FreeDOS through the driver-plus-MSCDEX layering DOS CD-ROM support was always built on.
Installing a text editor and a couple of common utilities on FreeDOS, and wiring them into your PATH and environment correctly.
Creating a primary partition, an extended partition with logical drives, and setting the active boot partition the way DOS disks have always been organized.
Installing FreeDOS onto a virtual machine or real hardware, from booting the installer through to a working CONFIG.SYS and AUTOEXEC.BAT.
Getting real TCP/IP networking working on FreeDOS using mTCP and a packet driver, enough for FTP, Telnet, and a basic text-based browser.
A current vm-bhyve workflow for verified firmware, ZFS storage, virtual switches, guest templates, installation media, consoles, and backups.
A rollback-safe FreeBSD static-network workflow for interface identity, IPv4 and IPv6 addressing, routes, resolver ownership, staged activation, and validation.
A method-aware FreeBSD major-upgrade runbook covering release eligibility, boot environments, external backup, staged installation, bootcode, packages, and rollback.
A least-privilege FreeBSD WireGuard setup covering if_wg, protected keys, cryptokey routing, PF exposure, NAT peers, rc startup, traffic tests, and rotation.
A verified FreeBSD zfs-periodic setup for explicit datasets, hourly through monthly schedules, retention testing, capacity alerts, consistent data, and recovery.
Configure Haiku Deskbar, app lists and tray, add the Workspaces applet, switch or carry windows by keyboard, and organize daily tasks.
A complete walkthrough encrypting a disk or partition with LUKS, from initial setup through mounting it automatically (with a key file) at boot.
A complete walkthrough from raw disks to a mounted, resizable logical volume — physical volumes, volume groups, and logical volumes explained as you build them.
A practical toolkit for watching CPU, memory, disk, and network usage live — going beyond top to actually find what's causing a resource problem.
A complete, working nftables ruleset for a typical server — default-deny inbound, stateful connection tracking, and a handful of explicit allowed services.
A complete walkthrough generating an SSH key pair, deploying it correctly, and disabling password authentication safely — without locking yourself out.
Using strace to see exactly which system calls a misbehaving program makes — often the fastest way to diagnose a problem with no useful logs.
A complete, working example converting a nightly backup cron job into a properly supervised systemd timer, with logging and failure visibility cron never gave you.
A complete walkthrough using the built-in createinstallmedia tool to build a bootable USB installer for a clean install or major troubleshooting.
A practical set of real, working defaults commands to unlock hidden macOS settings, plus how to find and safely revert any customization yourself.
A complete walkthrough enabling FileVault, understanding your recovery key options, and what to do if you're locked out — before you need it, not after.
Auditing and controlling what actually starts at login — covering both the modern Login Items UI and the launchd agents it doesn't show.
Moving your entire setup — apps, files, accounts, and settings — to a new Mac, plus what to check afterward when something doesn't carry over.
A complete Time Machine setup covering drive selection, encryption, and exclusions — plus how to actually verify your backups will restore.
Set up RetroAchievements with protected credentials, a supported RetroArch core, recognized RA hashes, Casual or Hardcore rules, and verified sync.
A complete BitLocker setup covering TPM requirements, the recovery key you must save externally, and how to verify encryption actually completed.
A complete walkthrough using the official Media Creation Tool, plus how to verify the resulting USB actually boots before you need it in an emergency.
Configuring File History for continuous, versioned backups of your personal files, and actually restoring a previous version when you need one.
Creating specific, scoped inbound and outbound Windows Firewall rules with PowerShell, rather than the common mistake of disabling it entirely.
Enabling Remote Desktop the right way — Network Level Authentication, a non-default port, and firewall scoping — rather than exposing RDP openly.
A complete guide to enabling System Restore, creating restore points at the right moments, and actually rolling back correctly when something breaks.
Customizing Windows Terminal's settings.json and your PowerShell profile script, plus how fragment extensions and keybindings fit into the same configuration layers.
A complete walkthrough enabling Windows Sandbox for running untrusted applications in a clean, disposable, isolated environment — no separate VM image to manage.