/uses
Tools and hardware I use day to day. This changes when something starts annoying me enough. Inspired by uses.tech.
development environment
operating system
- NixOS: primary OS, mostly because I want my machines to be boring to rebuild
- KDE Plasma: desktop environment, because it lets me configure the bits I care about
- Tailscale: VPN mesh between my machines
editor and IDE
- Emacs: primary editor, configured more than is probably reasonable
- Vertico / Consult / Corfu: completion and navigation in Emacs
- org-mode: notes, planning, and bits of personal documentation
- Magit: the Git UI I miss whenever I use anything else
terminal and shell
- Starship: prompt with just enough Git state visible
development tools
- Nix / Flakes: package management and reproducible development environments
- just: project commands without pretending Make is a task runner
- git: version control
- Podman: containers for local development and deployment work
languages and runtimes
- Go: backend services and CLI tools
- Python: scripts, glue code, and data work
- Nix: systems and development environments
- Haskell: learning, mostly
- C++: low-level systems work
productivity and communication
browser
- Brave: browser with ad blocking that mostly stays out of the way
password management
- 1Password: passwords and 2FA
file sync
- Syncthing: selective file sync between my own machines
hardware
main development machine
- Desktop workstation running NixOS
- Multiple monitors, because one screen gets crowded fast
other hardware
- Laptop with the same NixOS + Home Manager configuration
- Lab server for self-hosted services and experimentation
configuration management
Most configuration lives in Git and is applied through NixOS,Home Manager, and flakes. If a machine dies, I want rebuild to be annoying, not interesting.