Installation methods
Choose between a one-command quick install or manual installation for more control.
Quick install
The fastest way to get started is with the automated install script:
curl -fsSL https://raw.githubusercontent.com/shawal-mbalire/dotfiles/main/install.sh | bash
This script will:
- Clone the repository
- Use rsync to copy configurations to your home directory
- Preserve existing files (use with caution)
The quick install will copy files directly to your home directory. Back up any existing configurations before proceeding.
Manual installation
For more control over the installation process, follow these steps:
Clone the repository
git clone https://github.com/shawal-mbalire/dotfiles
cd dotfiles
Review the .stowrc configuration
The repository uses GNU Stow with these settings:--target=~
--ignore=.stowrc
--dotfiles
--verbose=1
This configuration:
- Targets your home directory (
~)
- Ignores the
.stowrc file itself
- Automatically renames
dot- prefixes to .
- Shows verbose output
Install with GNU Stow (recommended)
If you have GNU Stow installed, you can selectively install components:# Install all configurations
stow .
# Or install specific components
stow dot-config/hypr
stow dot-config/fish
stow dot-config/waybar
GNU Stow creates symlinks, making it easy to update configurations by pulling git changes.
Alternative: Use rsync
If you prefer to copy files instead of symlinking:rsync -avhu --progress dotfiles/ ~/
The flags mean:
-a: Archive mode (preserves permissions, timestamps)
-v: Verbose output
-h: Human-readable file sizes
-u: Update only (skip newer files)
--progress: Show transfer progress
Fedora
For Fedora users, follow these comprehensive setup steps:
Clone and setup the repository
gh repo clone shawal-mbalire/dotfiles
cp -r dotfiles/.git/ .git/
git pull
rm -rf dotfiles
Install core dependencies
sudo dnf install lua lua-devel luarocks go lua5.1
sudo dnf install hyprland hyprland-devel hyprlock hypridle hyprpolkitagent hyprpaper
sudo dnf install fish kitty rofi blueman pavucontrol waybar gh google-chrome nm-applet flatpak
sudo dnf install exa gammastep
Set Fish as default shell
echo /usr/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/bin/fish
Optional: Remove GNOME
If you want a minimal Hyprland-only setup:sudo dnf install hyprland sddm
sudo dnf remove gnome-shell --setopt protected_packages=
sudo dnf install nautilus # Keep file manager
This removes GNOME entirely. Make sure Hyprland is working before removing your current desktop environment.
Arch Linux
For Arch-based distributions:
Install Hyprland and core tools
yay -Syyu hyprland-git wofi drun
Clone and install dotfiles
git clone https://github.com/shawal-mbalire/dotfiles
cd dotfiles
stow . # Or use rsync method
Post-installation setup
After installing the dotfiles, complete these additional configuration steps:
Install Nerd Fonts
Required for proper icon display in Waybar and terminal.sudo dnf copr enable zawertun/hack-fonts
sudo dnf install hack-fonts
Install tmux plugin manager
Required for tmux configuration:git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
Then open tmux and press Prefix + I to install plugins. Set up Neovim
The configuration uses LazyVim. On first launch, plugins will auto-install:Wait for Lazy to install all plugins. Enable Hyprland polkit agent
For graphical authentication prompts:sudo dnf copr enable solopasha/hypr
sudo dnf install hyprpolkitagent
systemctl --user enable --now hyprpolkitagent.service
Use systemctl --user without sudo for user services.
Verify Hyprland configuration
Before restarting Hyprland, verify the configuration is valid:hyprland --config ~/.config/hypr/hyprland.conf --verify-config
Reload Hyprland
Apply the new configuration:Or log out and log back in to Hyprland.
Optional applications
Install these applications based on your needs:
Snap packages
sudo snap install obsidian --classic
sudo snap install code-insiders --classic
Flatpak applications
flatpak install flathub app.zen_browser.zen
flatpak install flathub io.github.qurancompanion.QuranCompanion
Customization
The dotfiles are designed for easy customization:
Hyprland variables
Edit ~/.config/hypr/hyprland.conf to change core settings:
# Change your terminal
$terminal = kitty # or foot, alacritty, etc.
# Change your browser
$browser = flatpak run app.zen_browser.zen
# Adjust colors
$active_border_color = rgba(89b4faff) rgba(89dcebee) 90deg
# Modify gaps and rounding
$gaps_in = 5
$gaps_out = 10
$rounding = 8
After editing, reload Hyprland:
Fish shell configuration
Edit ~/.config/fish/config.fish to customize your shell:
# Change default editor
set -gx EDITOR /usr/bin/nvim
# Add custom abbreviations
abbr --add --global myabbr 'my command'
# Modify VI keybindings
fish_vi_key_bindings insert
Changes take effect in new shell sessions.
Waybar styling
Edit ~/.config/waybar/style.css to customize the status bar appearance. Reload Waybar:
killall waybar && waybar &
Troubleshooting
Install Nerd Fonts (see post-installation step 1) and ensure your Waybar config references the correct font:"font": "JetBrainsMono Nerd Font 10"
Check the configuration for syntax errors:hyprland --config ~/.config/hypr/hyprland.conf --verify-config
Check logs:cat /tmp/hypr/$(ls -t /tmp/hypr | head -n 1)/hyprland.log
Fish shell abbreviations not working
Abbreviations are only available in interactive shells. Verify Fish is your login shell:Should output /usr/bin/fish. Authentication prompts not appearing
Ensure hyprpolkitagent is running:systemctl --user status hyprpolkitagent.service
If not running:systemctl --user enable --now hyprpolkitagent.service
Next steps
Hyprland configuration
Explore the modular Hyprland setup
Fish shell
Learn about Fish configuration and keybindings