kpango's comprehensive cross-platform dotfiles and fullstack development environments in Docker.
This repository contains personal system configurations, terminal setups, and containerized development environments. It supports multiple operating systems and orchestrates setup via a modular Makefile.
- Editor: Helix with extensive language support (Go, Rust, Nim, Python, C/C++, Ruby, JS, HTML/CSS) and custom themes.
- Shell:
zshplugin management via Sheldon with categorized modules (tmux, git, k8s, docker, os-specific). - Multiplexer:
tmuxwith customized configurations and K8s integrations. - Terminal: Ghostty configurations.
- Prompt: Custom optimized inline prompt (
prmt). - Version Control: Git (with global gitconfig, gitignore, and gitattributes).
- macOS: Configurations including Brewfile, launch agents (autoupdate, ulimit), and apple/container as the container backend (managed declaratively via nix-darwin, see
nix/modules/darwin/containerization.nix— colima/Docker Desktop are not used here). - Arch Linux: Full desktop setup including Sway/i3, Waybar, Wofi, Fcitx5, PulseAudio, and specific systemd services/udev rules.
- NixOS: Flake-based NixOS configurations (
nix/flake.nixwith core modules and hosts).
Fully Dockerized development environments to maintain a clean host system. Managed via make build:
- Base development environment (
dev.Dockerfile) - Language/Tool-specific environments: Go, Rust, Dart, Nim, Kubernetes (
k8s.Dockerfile), and Google Cloud (gcloud.Dockerfile). - Multi-architecture Docker builds powered by buildx.
ghqmakedockerbash/zsh
It is recommended to use ghq to manage the repository location.
# Configure ghq root
git config --global ghq.root $HOME/go/src
# Get the repository
ghq get kpango/dotfiles
cd $HOME/go/src/github.com/kpango/dotfiles
# Install dotfiles (symlink or copy)
make link # or 'make copy'- macOS:
make m1/install(orm1air/install/m3/install, pinned per host). apple/container itself is installed declaratively bynix/setup, but two things are deliberately left as one-time manual steps (not run automatically on everydarwin-rebuild switch— both need an interactive prompt and one changes system-wide network behavior):- Container-to-container DNS names (
<name>.test) — disables iCloud Private Relay while active:container system stop && container system start sudo container system dns create test
- Private registry auth —
containerdoes not read Docker'scredsStore/credHelpers(apple/container#820); log in once per registry instead, credentials are kept in the macOS Keychain:container registry login <registry>
- Container-to-container DNS names (
- Arch Linux: Check the respective install scripts under
arch/and Makefile rules. - Docker Environments:
make build/make prod
- Fork it (http://github.com/kpango/dotfiles/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request