Skip to content

edbzn/dotfiles

Repository files navigation

dotfiles

CI

This repository provides my personal ready-to-use dev environment using Ansible and GNU Stow.

Setup

  1. Clone the repository in the home directory.
git clone [email protected]:edbzn/dotfiles.git ~/dotfiles
  1. Install and configure the tools. (idempotent β€” safe to re-run anytime):
~/dotfiles/install.sh

πŸ’‘ Idempotent Installation: The setup process is designed to be completely safe to run multiple times. Whether you are setting up a fresh system or updating an existing one, the scripts will intelligently detect what's already installed and only make necessary changes.

Update

List Available Components

~/dotfiles/tags.sh

Update Tools

The update script provides idempotent updates - it only installs missing tools and updates outdated ones. For a complete reinstallation, use the --force-install flag.

# Update everything (idempotent - only installs what's missing)
~/dotfiles/update.sh

# Update specific roles
~/dotfiles/update.sh docker,node,dotfiles

# Or use --tags explicitly
~/dotfiles/update.sh --tags zsh,chrome

# Force reinstall everything regardless of current state
~/dotfiles/update.sh --force-install

# Force reinstall specific roles
~/dotfiles/update.sh --force-install --tags docker,node

# Test what would be changed (dry-run)
~/dotfiles/update.sh --check

# Update with detailed diff output
~/dotfiles/update.sh --check --diff --tags docker

# Verbose output for debugging
~/dotfiles/update.sh --verbose --tags slack

Options:

  • --force-install - Force reinstall everything regardless of current state
  • --check - Run in dry-run mode without making changes
  • --diff - Show differences when making changes
  • --verbose - Enable verbose output
  • --tags <tags> - Update only specific roles (comma-separated)

Shell History Backup

Easily preserve your command history across machines β€” encrypted and secret-filtered.

# Run the backup script and choose option 3 or 4
~/dotfiles/backup-secrets.sh

# Commit encrypted history
git add secrets/
git commit -m "Add encrypted shell history"

Secrets Management

Securely sync your SSH and GPG keys across machines using Ansible Vault encryption.

Initial Setup

# 1. Create vault password (one-time setup)
echo "your-secure-password" > ~/dotfiles/.vault_password
chmod 600 ~/dotfiles/.vault_password

# 2. Backup and encrypt your keys
~/dotfiles/backup-secrets.sh

# 3. Commit encrypted keys
git add secrets/
git commit -m "Add encrypted SSH, GPG keys, and shell history"
git push

On New Machines

# 1. Create the same vault password
echo "your-secure-password" > ~/dotfiles/.vault_password
chmod 600 ~/dotfiles/.vault_password

# 2. Run install - your keys are automatically restored!
~/dotfiles/install.sh

πŸ“– Full Documentation: See docs/SECRETS.md for complete guide, manual operations, and troubleshooting.

What's Encrypted:

  • SSH private and public keys
  • GPG private keys
  • Shell history (with automatic secret filtering)
  • Safe to commit - only you have the password! πŸ”’

Tools Overview

The following tools are automatically installed and configured:

Category Tool Logo Description
Shell Zsh + Oh My Zsh Zsh Enhanced shell with powerful features and themes
Shell Theme Powerlevel10k P10k Fast and customizable prompt theme
Shell Plugin zsh-syntax-highlighting 🎨 Syntax highlighting for Zsh commands
Shell Plugin zsh-autosuggestions πŸ’‘ Fish-like autosuggestions for Zsh
Shell Plugin zsh-completions πŸ“ Additional completion definitions for Zsh
Shell Plugin you-should-use πŸ’¬ Reminds you to use aliases
Shell Plugin nx-completion πŸ”§ Nx workspace autocompletion
Shell Tools lsd πŸ“‚ Modern ls command with colors and icons
Shell Tools fzf πŸ” Command-line fuzzy finder
Shell Tools zoxide πŸš€ Smarter cd command that learns your habits
Shell Tools bat πŸ¦‡ Cat clone with syntax highlighting
Shell Tools ripgrep πŸ”Ž Fast search tool that respects gitignore
Shell Tools fd πŸ”¦ Simple, fast alternative to find
Terminal Terminator Terminator Advanced terminal emulator with multiple panes
JavaScript Node.js Node.js JavaScript runtime built on Chrome's V8 engine
JavaScript Bun Bun Fast all-in-one JavaScript runtime & toolkit
Package Manager NPM npm Package manager for JavaScript
Node Version n πŸ”’ Simple Node.js version management
Systems Rust + Cargo Rust Systems programming language with memory safety
Build Tools Nx Nx Smart monorepos build system
Framework @angular/cli Angular Angular development CLI
Development http-server 🌐 Simple HTTP server for development
Containers Docker CE Docker Container platform for applications
Containers Docker Compose Docker Multi-container Docker applications
Version Control Git Git Distributed version control system
Git Enhancement delta ✨ A syntax-highlighting pager for Git
Git CLI GitHub CLI GitHub GitHub operations from command line
Editor Visual Studio Code VS Code Lightweight yet powerful code editor
Editor Vim Vim Highly configurable text editor
Browser Google Chrome Chrome Modern web browser
Communication Slack Slack Team collaboration platform
Font JetBrains Mono JetBrains Programming font with ligatures
Font JetBrains Mono Nerd Nerd Fonts Programming font with extra glyphs
Network cURL cURL Command line tool for transferring data
System htop πŸ“Š Interactive process viewer
System btop btop Resource monitor with modern UI
Files GNU Stow πŸ“ Symlink farm manager for dotfiles
Screenshots Flameshot Flameshot Powerful screenshot tool
JSON jq πŸ”§ Lightweight command-line JSON processor
System gnome-tweaks βš™οΈ Advanced GNOME configuration tool
Music Spotify Spotify Music streaming platform
Streaming OBS Studio OBS Live streaming and screen recording
Gaming Steam Steam Gaming platform and digital distribution
Communication Discord Discord Voice, video and text communication
Infrastructure Terraform Terraform Infrastructure as Code tool
Cloud AWS CLI AWS Amazon Web Services command line interface
AI Claude CLI Claude Anthropic Claude AI assistant CLI
Graphics GIMP GIMP GNU Image Manipulation Program
Video Editing Kdenlive Kdenlive Professional video editing software
Database MongoDB Compass MongoDB GUI for MongoDB database
Database MongoDB CLI (mongosh) MongoDB MongoDB command line interface
Python UV UV Ultra-fast Python package and project manager
Video Zoom Zoom Video conferencing platform

About

My personal dev environment provisioning.

Topics

Resources

Stars

Watchers

Forks