Skip to content

Latest commit

 

History

History
166 lines (132 loc) · 5.61 KB

File metadata and controls

166 lines (132 loc) · 5.61 KB

Dotfiles

My personal dotfiles for Fedora Linux development environment setup. This repository contains configuration files and setup scripts to quickly bootstrap a new system with my preferred tools and settings.

Features

  • 🛠 Automated setup script for quick installation on Fedora Linux
  • 📦 DNF package management
  • 💻 Terminal setup with:
    • Zsh configuration with Oh My Zsh
    • Starship prompt
    • GNOME Terminal
    • Antidote plugin manager with extensive plugin suite
  • 📝 Development tools:
    • Neovim configuration (NvChad-based)
    • Cursor (VS Code-based editor)
    • LazyGit for Git management
  • 🔧 Uses GNU Stow for dotfile management
  • 🎨 XDG Base Directory compliant configuration

Prerequisites

  • Fedora Linux
  • Git
  • Basic command line knowledge

Installation

  1. Clone this repository to your home directory:
git clone https://github.com/YOUR_USERNAME/dotfiles.git ~/dotfiles
cd ~/dotfiles
  1. Run the setup script:
./setup.sh

This will:

  • Update system packages with DNF
  • Install development tools and essential packages
  • Install Oh My Zsh
  • Install Antidote, pyenv, and rustup
  • Symlink .zshenv to $HOME for XDG configuration
  • Symlink all configuration files using GNU Stow

What's Included

Package Management

  • Fedora: DNF package manager with essential development tools and utilities

Terminal & Shell

  • Zsh: Default shell with extensive configuration
  • Oh My Zsh: Zsh framework with plugins (git, docker, python, npm, etc.)
  • Antidote: Fast Zsh plugin manager loading:
    • rupa/z - Directory jumping
    • zsh-users/zsh-completions - Additional completions
    • zsh-users/zsh-autosuggestions - Fish-like autosuggestions
    • zsh-users/zsh-history-substring-search - Better history search
    • fast-syntax-highlighting - Command syntax highlighting
    • zsh-abbr - Command abbreviations
    • Multiple Oh My Zsh plugins (docker, docker-compose, git, npm, python, pip, colored-man-pages, etc.)
  • Starship: Minimal, fast, customizable prompt
  • Terminal: GNOME Terminal
  • XDG Base Directory: Clean home directory with configs in ~/.config

Development Tools & Languages

  • Neovim: Modern Vim-based editor with NvChad configuration including:
    • LSP support, linting, formatting
    • Plugins: Telescope, LazyGit, auto-session, outline, render-markdown, surround, and more
  • Cursor: AI-powered code editor (VS Code fork)
  • LazyGit: Terminal UI for Git commands
  • Python: pyenv for version management, Poetry support
  • Node.js: pnpm, yarn, nvm (via zsh-nvm)
  • Rust: rustup toolchain
  • Lua: luarocks package manager
  • Tools: ripgrep, wget, socat, stow, ffmpeg, mpv, bat, exa, fzf, lazygit, gh, git-delta, tree, htop, jq, yq, tmux, zoxide

Setup Details

The setup script installs the following packages via DNF:

Core Development Tools

  • Development Tools group (gcc, make, git, etc.)
  • Essential utilities (curl, wget, stow, zsh)
  • Modern CLI tools (ripgrep, bat, exa, fzf, lazygit, gh)

Programming Languages

  • Python 3 with pip and development headers
  • Node.js and npm
  • Rust and Cargo
  • Go (golang)
  • Lua and luarocks

Terminal & Shell

  • Zsh with Oh My Zsh
  • Antidote plugin manager
  • Starship prompt
  • pyenv for Python version management
  • rustup for Rust toolchain management

Additional Tools

  • Neovim (latest version)
  • Git delta for better diffs
  • Tree, htop, tmux
  • JSON tools (jq, yq)
  • Archive tools (unzip, zip)
  • Media tools (ffmpeg, mpv)
  • Network tools (socat)
  • Directory navigation (zoxide)

Repository Structure

dotfiles/
├── setup.sh              # Automated installation script
├── nvim/                 # Neovim configuration (NvChad-based)
│   ├── init.lua
│   └── lua/
│       ├── options.lua
│       ├── mappings.lua
│       └── plugins/      # Plugin configurations
├── zsh/                  # Zsh configuration
│   ├── .zshenv          # XDG Base Directory setup
│   ├── .zshrc           # Main Zsh configuration
│   └── .zsh_plugins.txt # Antidote plugin list
├── starship/            # Starship prompt configuration
│   └── starship.toml
├── ghostty/             # Ghostty terminal configuration
│   └── config
├── lazygit/             # LazyGit TUI configuration
│   └── config.yml
└── wezterm/             # WezTerm configuration (legacy)
    └── wezterm.lua

Customization

Feel free to fork this repository and modify any configurations to match your preferences:

  • Brewfile: Add/remove packages, applications, and fonts
  • zsh/.zshrc: Customize shell settings, aliases, and environment variables
  • zsh/.zsh_plugins.txt: Add/remove Zsh plugins
  • starship/starship.toml: Customize your shell prompt
  • nvim/: Modify Neovim plugins and settings
  • ghostty/config: Adjust terminal appearance and behavior

The setup script uses GNU Stow to create symlinks, making it easy to manage and update configurations.

Notes

  • The .zshenv file is symlinked to $HOME to set up XDG Base Directory paths
  • Configuration files follow XDG standards where possible (~/.config/)
  • Python environment management via pyenv with custom aliases for projects
  • Includes personal aliases for workflow optimization (customize these for your needs)
  • Requires a .backend_secrets file in $HOME for private environment variables (not tracked in git)
  • The setup script automatically detects your operating system and installs appropriate packages
  • On Fedora, you may need to log out and back in after running the setup script for all changes to take effect