Skip to content

Latest commit

 

History

History
156 lines (117 loc) · 4.32 KB

File metadata and controls

156 lines (117 loc) · 4.32 KB

Personal Dotfiles

This repository contains my personal dotfiles and system configuration, managed with chezmoi.

Installation

Prerequisites

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-moser

Linux:

# 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

Initialize Dotfiles

# 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

Install remaining tools

macOS:

# Install remaining tools via Homebrew
brew bundle --global install

Linux:

# 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

Initialize nvim

# Isnstall Neovim plugins using lockfile
nvim --headless "+Lazy! restore" +qa

Mentioned Tools

Core Development

  • 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

Container & DevOps

  • Docker - Containerization platform
  • kubectl - Kubernetes CLI
  • krew - kubectl plugin manager
  • k9s - Kubernetes cluster management
  • GitHub CLI - GitHub command line tool

Terminal & Shell

  • Ghostty - Terminal emulator
  • tmux - Terminal multiplexer
  • tpm - tmux plugin manager

Editors & Development

MacOs Applications