A lot has happened since I last wrote here. I became a real Python developer (not professionally, but I've published three PyPI packages, all esoteric in nature); I suddenly created like, three separate One Piece AUs; I set up my Macbook Air 2017 as a clamshelled dev box; but I'm here to explain that I finally understand GNU Stow after abusing it for well over a year.
Features of this massive dotfiles revamp:
- automated colored zsh/bash prompts per-machine
- fully modular sway config
- two directories,
shellandsway, with properly nested stow packages; - an
install.shscript with a--minimalflag for if I'm setting up a server like my dev box or dabbling in VPSes again, and--fulland--swayflags for if I'm setting up an actual desktop.
The install script works with both Debian apt and Arch pacman and is intended to be thrown on a USB stick to plug in after you've installed Debian, Arch, or endeavourOS. In my case, I run Debian 13 on my desktop and server and endeavourOS on my ThinkPad.
This is all redundant to the README, but I'm so impressed with myself for this. The hardware I'm working with is a 2011(!) HP Compaq 8000 UDT, a ThinkPad 480s, and as mentioned, the Macbook Air. I did consider using the Air as an nvim-only, no visual environment at all writing machine, but the resolution is brutal and the keys cannot match my ThinkPad or my mechanical keyboard.
If you would like to set up your system like mine, you can grab the script here. Read through any code you download off strangers before running it and edit as you see fit. For example, you might not like my eclectic homedir layout, which follows the XDG base directory specification and goes
.
├── .config/
│ ├── bash/
│ ├── ranger/
│ ├── sway/
│ ├── tmux/
│ └── zsh/ $ZDOTDIR
│ └── .zshrc
├── .local/
│ ├── bin/
│ ├── cache/ $XDG_CACHE_HOME
│ ├── lib/ => CARGO_HOME, GOPATH, etc
│ ├── share/ $XDG_DATA_HOME
│ └── state/ $XDG_STATE_HOME
│ └── {bash,zsh}
│ └── history
├── a/ => .deb files and pre-built binaries
├── d/ => personal documents
├── m/ $XDG_$media_DIR
├── p/ => my source code
│ ├── dots/ => this repository
│ ├── py/ => i divide dev projects by language stack
│ └── www/
├── s/ => not-my source code
│ └── neovim
├── v/
└── .profile => referenced by bash and zsh