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.
- 🛠 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
- Fedora Linux
- Git
- Basic command line knowledge
- Clone this repository to your home directory:
git clone https://github.com/YOUR_USERNAME/dotfiles.git ~/dotfiles
cd ~/dotfiles- Run the setup script:
./setup.shThis will:
- Update system packages with DNF
- Install development tools and essential packages
- Install Oh My Zsh
- Install Antidote, pyenv, and rustup
- Symlink
.zshenvto$HOMEfor XDG configuration - Symlink all configuration files using GNU Stow
- Fedora: DNF package manager with essential development tools and utilities
- 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 jumpingzsh-users/zsh-completions- Additional completionszsh-users/zsh-autosuggestions- Fish-like autosuggestionszsh-users/zsh-history-substring-search- Better history searchfast-syntax-highlighting- Command syntax highlightingzsh-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
- 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
The setup script installs the following packages via DNF:
- Development Tools group (gcc, make, git, etc.)
- Essential utilities (curl, wget, stow, zsh)
- Modern CLI tools (ripgrep, bat, exa, fzf, lazygit, gh)
- Python 3 with pip and development headers
- Node.js and npm
- Rust and Cargo
- Go (golang)
- Lua and luarocks
- Zsh with Oh My Zsh
- Antidote plugin manager
- Starship prompt
- pyenv for Python version management
- rustup for Rust toolchain management
- 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)
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
Feel free to fork this repository and modify any configurations to match your preferences:
Brewfile: Add/remove packages, applications, and fontszsh/.zshrc: Customize shell settings, aliases, and environment variableszsh/.zsh_plugins.txt: Add/remove Zsh pluginsstarship/starship.toml: Customize your shell promptnvim/: Modify Neovim plugins and settingsghostty/config: Adjust terminal appearance and behavior
The setup script uses GNU Stow to create symlinks, making it easy to manage and update configurations.
- The
.zshenvfile is symlinked to$HOMEto 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_secretsfile in$HOMEfor 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