This repository contains my personal dotfiles and system configuration, managed with chezmoi.
macOS:
# Install Homebrew (https://brew.sh/)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install required tools
brew install bash git gpg chezmoi bitwarden-cli
# Add Homebrew to PATH
eval "$(/opt/homebrew/bin/brew shellenv)"
# Change default shell to homebrew bash
echo "$(brew --prefix)/bin/bash" | sudo tee -a /etc/shells
chsh -s "$(brew --prefix)/bin/bash"
# Init chezmoi repo
chezmoi init robin-moserLinux:
# Install required packages
sudo apt update && sudo apt install curl git gpg gcc build-essential coreutils
# Install chezmoi
BINDIR=$HOME/.local/bin sh -c "$(curl -fsLS get.chezmoi.io)"
export PATH="$HOME/.local/bin:$PATH"
# Init chezmoi repo
chezmoi init robin-moser
# Set up bash environment to use the custom paths for Node
# No decryption required yet
chezmoi apply .bashrc .bash_profile .bash
# Reload shell to pick up custom paths
source ~/.bashrc
# Install Node via n-install
curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s -- -n
# Install Bitwarden CLI via npm
npm install -g @bitwarden/cli# Bitwarden: set custom URL
bw config server https://pass.robinmoser.de
# Login to Bitwarden to store 2FA code
bw login robin@moser && bw sync
# Now apply all remaining dotfiles, GPG keys and other configurations
chezmoi apply
macOS:
# Install remaining tools via Homebrew
brew bundle --global installLinux:
# Install remaining tools via apt
sudo apt install -y \
tree colordiff zoxide dnsutils \
fzf fd-find bat ripgrep jq yq gh \
# Download zig
tar tar xf <zig-archive.tar.xz>
cp <zig-archive>/zig ~/.local/bin/
rm -rf <zig-archive.tar.xz> <zig-archive>
# Compile Ghostty
sudo apt install -y \
libgtk-4-dev libadwaita-1-dev blueprint-compiler \
gettext libxml2-utils libgtk4-layer-shell-dev
git clone https://github.com/ghostty-org/ghostty ~/Development/repos/ghostty
cd ~/Development/repos/ghostty
zig build -p $HOME/.local -Doptimize=ReleaseFast
# Install pyenv
curl -fsSL https://pyenv.run | bash
# Build tmux (extended-keys support since 3.6)
sudo apt install autoconf automake pkg-config libevent-dev \
ncurses-dev build-essential bison pkg-config
git clone https://github.com/tmux/tmux ~/Development/repos/tmux
cd ~/Development/repos/tmux
sh autogen.sh
./configure && make
ln -s /home/robin/Development/repos/tmux/tmux ~/.local/bin/
# Install Neovim
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz && rm nvim-linux-x86_64.tar.gz
# Install xremap
rustup default stable
cargo install xremap --features gnome
systemctl --user start xremap.service
systemctl --user enable xremap.service# Isnstall Neovim plugins using lockfile
nvim --headless "+Lazy! restore" +qa- Node.js - JavaScript runtime
- n - Node version manager (installed via npm)
- Go - Go programming language
- Rust - Rust programming language and Cargo package manager
- pyenv - Python version manager
- Docker - Containerization platform
- kubectl - Kubernetes CLI
- krew - kubectl plugin manager
- k9s - Kubernetes cluster management
- GitHub CLI - GitHub command line tool
- ActivityWatch - Time tracking
- OrbStack - Docker Desktop alternative for macOS