Uses
This page documents the tools, hardware, and software I use for development, productivity, and general computing. Inspired by uses.tech.
Development Environment
Operating System
- NixOS - Primary OS for reproducible and declarative system configuration
- KDE Plasma - Desktop environment with excellent customization options
- Tailscale - VPN mesh network for secure machine-to-machine communication
Editor & IDE
- Emacs - Primary editor with extensive customization via modular configuration
- Vertico/Consult/Corfu - Modern completion framework for Emacs
- org-mode - For documentation, planning, and knowledge management
- Magit - Git interface for Emacs, indispensable for version control
Terminal & Shell
- Starship - Cross-shell prompt with Git integration
Development Tools
- Nix/Flakes - Package management and development environments
- just - Command runner for project-specific tasks
- git - Version control system
- Podman - Containerization for development and deployment
Languages & Runtimes
- Go - Backend services and CLI tools
- Haskell - Functional programming and learning exercises
- C++ - Low-level systems programming
- Python - Scripting and data processing
- Nix - System configuration and package management
Productivity & Communication
Browser
- Brave - Privacy-focused browser with excellent ad-blocking
Password Management
- 1Password - Secure password management and 2FA
File Synchronization
- Syncthing - Peer-to-peer file synchronization for selective documents
Hardware
Primary Development Machine
- Desktop workstation running NixOS
- Adequate RAM and storage for development workloads
- Multiple monitor setup for productivity
Additional Hardware
- Laptop with same NixOS + Home Manager configuration for portability
- Lab server for self-hosted services and experimentation
Configuration Management
All configurations are managed declaratively using:
- NixOS configurations for system-level settings
- Home Manager for user environment management
- Flakes for reproducible development environments
- Git for version control of all configurations
The entire setup is designed for reproducibility, security, and productivity across multiple machines.