Skip to content

Latest commit

History

397 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dotfiles

A comprehensive dotfiles management system using PyInfra for automated setup and configuration of macOS and Arch Linux development environments.

Overview

This repository contains dotfiles and configuration management for a complete development environment setup. It automates the installation and configuration of development tools, shell environments, and applications using PyInfra deployment automation.

Quick Start

./bin/update.sh

This single command will:

  1. Install Homebrew (if not present)
  2. Install rustup (if not present)
  3. Install uv Python package manager (if not present)
  4. Run the PyInfra deployment to configure your system

How It Works

Installation Process

  1. /bin/update.sh - Bootstrap script that:

    • Installs Homebrew package manager
    • Installs rustup (Rust toolchain manager)
    • Installs uv (fast Python package manager)
    • Calls the install script
  2. /bin/install.sh - Runs the PyInfra deployment:

    uv run pyinfra @local configure.py
  3. configure.py - PyInfra deployment script that:

    • Links .config/ directory to ~/.config/
    • Links home/ directory contents to ~/
    • Installs and configures all development tools

Directory Structure

  • .config/ - Configuration files that get linked to ~/.config/
  • home/ - Files that get linked to your home directory (~)
  • bin/ - Installation and update scripts
  • configure.py - PyInfra deployment configuration

Installed Tools

Development Tools

  • Go - Programming language
  • Bun - JavaScript runtime
  • Rust (via rustup) - Systems programming language

Terminal & Shell

  • Fish - Modern shell with autocompletion
  • Starship - Cross-shell prompt
  • Fisher - Fish plugin manager
  • Tmux - Terminal multiplexer
    • TPM (Tmux Plugin Manager) - Auto-installed for plugin management
    • tmux-fzf - Fuzzy finder for sessions, windows, panes (prefix + Ctrl-f)

Text Editor

  • Neovim - Modern Vim-based editor with full configuration

CLI Utilities

  • ripgrep - Fast text search
  • fd - Fast file finder
  • fzf - Fuzzy finder
  • gum - Glamorous shell scripts

Developer Tools

  • K9s - Kubernetes TUI
  • Pulumi - Infrastructure as Code
  • GitHub CLI - GitHub command line
  • Lazygit - Git TUI
  • Lazydocker - Docker TUI

Security & GPG

  • GnuPG - Encryption and signing
  • pinentry-mac - macOS GPG passphrase entry

Applications (GUI)

  • Alacritty - GPU-accelerated terminal
  • Slack - Team communication
  • Spotify - Music streaming
  • Obsidian - Note-taking and knowledge management
  • LinearMouse - Mouse customization
  • Bitwarden - Password manager

Configuration

All tools come pre-configured through the linked configuration directories:

  • Neovim: Full IDE setup with LSP, plugins, and keybindings
  • Fish: Shell configuration with aliases and functions
  • Tmux: Terminal multiplexer configuration
  • Git: Version control settings
  • And more: All configurations are automatically linked and ready to use

Additional Tools

This dotfiles system includes several custom utilities for configuration and environment management:

Configuration Management

  • adopt-dot - Interactive tool to adopt existing config files from ~ or ~/.config into your dotfiles repository
  • edit-env - Create and edit encrypted environment variable groups using GPG encryption

Environment Variable Management

  • env-load - Fish function to load encrypted environment variables into your shell session
    • Includes aliases: envl, envs, envls
    • Provides tab completion for environment group names
    • Calls env-select internally to decrypt and load variables
  • env-select - Decrypt and select environment variable groups from encrypted storage

These tools work together to provide secure, encrypted storage of sensitive environment variables with easy loading into shell sessions.

Tmux Plugin Manager

TPM (Tmux Plugin Manager) is automatically installed by the dotfiles. On first setup, you'll need to install the configured plugins:

  1. Start tmux: tmux
  2. Press prefix + I (capital i) to install plugins
  3. Use prefix + Ctrl-f to launch the tmux-fzf fuzzy finder for sessions/windows/panes

tmux-fzf Features

Press prefix + Ctrl-f to access:

  • Session switching - Fuzzy find across all tmux sessions
  • Window switching - Jump to any window in any session
  • Pane switching - Navigate to any pane
  • Additional tools - Commands, keybindings, clipboard, and process management

Updating

Run ./bin/update.sh anytime to:

  • Update all package managers (Homebrew, rustup, uv)
  • Re-run the deployment to catch any new configurations
  • Upgrade all installed Homebrew packages
  • Update TPM and tmux plugins (run prefix + U in tmux)

Requirements

  • macOS (tested on recent versions) or Arch Linux
  • Internet connection for downloading tools
  • Admin privileges for some installations

Hyprland Desktop Environment (Arch Linux)

On Arch Linux bare metal systems, a complete Hyprland desktop environment is installed with the following components:

ComponentToolDescription
CompositorHyprlandDynamic tiling Wayland compositor
Status BarWaybarCustomizable status bar
LauncherFuzzelFast application launcher
NotificationsMakoLightweight notification daemon
WallpaperHyprpaperWallpaper manager
Lock ScreenHyprlockGPU-accelerated screen locker
Idle DaemonHypridleIdle management
File ManagerYaziTerminal-based file manager
TerminalGhosttyGPU-accelerated terminal

Hyprland Keybindings

Applications

KeybindAction
SUPER + ReturnOpen terminal (Ghostty)
SUPER + DOpen application launcher
SUPER + EOpen file manager (Yazi)
SUPER + BOpen browser (Firefox)
SUPER + VOpen clipboard history

Window Management

KeybindAction
SUPER + QClose window
SUPER + SHIFT + QExit Hyprland
SUPER + FToggle fullscreen
SUPER + SpaceToggle floating
SUPER + PToggle pseudo-tile
SUPER + SToggle split direction

Focus (Vim-style)

KeybindAction
SUPER + HFocus left
SUPER + JFocus down
SUPER + KFocus up
SUPER + LFocus right

Move Windows

KeybindAction
SUPER + SHIFT + HMove left
SUPER + SHIFT + JMove down
SUPER + SHIFT + KMove up
SUPER + SHIFT + LMove right

Resize Windows

KeybindAction
SUPER + CTRL + HShrink width
SUPER + CTRL + LGrow width
SUPER + CTRL + KShrink height
SUPER + CTRL + JGrow height

Workspaces

KeybindAction
SUPER + 1-9, 0Switch to workspace 1-10
SUPER + SHIFT + 1-9Move window to workspace
SUPER + ]Next workspace
SUPER + [Previous workspace
`SUPER + ``Toggle special workspace
`SUPER + SHIFT + ``Move to special workspace

Screenshots

KeybindAction
PrintScreenshot region to clipboard
SHIFT + PrintScreenshot screen to clipboard
SUPER + PrintScreenshot region to file
SUPER + SHIFT + PrintScreenshot screen to file

System

KeybindAction
SUPER + SHIFT + XLock screen
SUPER + SHIFT + CColor picker

Media Keys

KeyAction
XF86AudioRaiseVolumeVolume up
XF86AudioLowerVolumeVolume down
XF86AudioMuteToggle mute
XF86AudioMicMuteToggle mic mute
XF86MonBrightnessUpBrightness up
XF86MonBrightnessDownBrightness down
XF86AudioPlayPlay/Pause media
XF86AudioNextNext track
XF86AudioPrevPrevious track

Mouse Bindings

KeybindAction
SUPER + Left ClickMove window
SUPER + Right ClickResize window
SUPER + ScrollCycle workspaces

Hyprland Configuration Files

All configuration files are located in ~/.config/:

FilePurpose
hypr/hyprland.confMain Hyprland configuration
hypr/hyprpaper.confWallpaper configuration
hypr/hyprlock.confLock screen appearance
hypr/hypridle.confIdle timeout behavior
waybar/configStatus bar modules and layout
waybar/style.cssStatus bar styling (Aura theme)
fuzzel/fuzzel.iniApplication launcher settings
mako/configNotification daemon settings

Setting a Wallpaper

Edit ~/.config/hypr/hyprpaper.conf and uncomment/modify:

preload = ~/Pictures/Wallpapers/your-wallpaper.png
wallpaper = , ~/Pictures/Wallpapers/your-wallpaper.png

Idle Behavior

The default idle configuration:

  • 2.5 minutes: Screen dims to 30%
  • 5 minutes: Screen locks
  • 5.5 minutes: Display turns off
  • 30 minutes: System suspends

About

A more concise dotfiles

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages