Skip to content
LoicPilPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

Β 

History

220 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dotfiles

My personal configuration files for Fedora Workstation with Hyprland, including Zsh, Neovim, Kitty, Rofi, Waybar, and more.

Fedora Hyprland Neovim Zsh


πŸ“‹ Table of Contents


πŸ†• Setting Up a New PC

Full Installation (Recommended)

Do NOT manually install Hyprland first! JaKooLit's script handles everything.

Step 1: Install Fedora Workstation

Start with a fresh Fedora Workstation installation.

Step 2: Install JaKooLit's Hyprland

This handles all system setup (Hyprland, SDDM, audio pipelines, systemd services, etc.):

git clone --depth=1 https://github.com/JaKooLit/Fedora-Hyprland.git
cd Fedora-Hyprland
./install.sh

# Reboot into Hyprland
sudo reboot

Step 3: Clone Your Dotfiles

# Clone your personal dotfiles
git clone git@github.com:LoicPil/dotfiles.git ~/dotfiles
cd ~/dotfiles

Step 4: Setup Repositories (CRITICAL!)

⚠️ IMPORTANT: You MUST setup repositories BEFORE installing packages!

# Setup all required repositories
./setup-repos.sh

This installs:

  • RPM Fusion (Free & Nonfree)
  • Visual Studio Code
  • Google Chrome
  • Opera Browser
  • Belgian eID
  • All COPR repos (Hyprland, PyCharm, SwayNotificationCenter, etc.)

Step 5: Install Packages

# Install DNF packages
sudo dnf install $(cat packages.txt)

# Install Flatpaks
cat flatpaks.txt | xargs -I {} flatpak install -y flathub {}

Step 6: Apply Your Dotfiles

# Apply your configs (automatically creates backups and symlinks)
./install.sh

Step 7: Install Development Tools (Optional)

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Install UV (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh

Your personalized Hyprland setup is now ready! πŸŽ‰


πŸš€ Quick Start (Existing Installation)

Installation on a New System

# Clone the repository
git clone git@github.com:LoicPil/dotfiles.git ~/dotfiles
cd ~/dotfiles

# Setup repositories (REQUIRED FIRST!)
./setup-repos.sh

# Install dotfiles
./install.sh

# Optional: Install all packages from backup
sudo dnf install $(cat packages.txt)
cat flatpaks.txt | xargs -I {} flatpak install -y flathub {}

Uninstallation

cd ~/dotfiles
./uninstall.sh

πŸ”§ Scripts Overview

All scripts are organized in the scripts/ directory. Symlinks at the root provide easy access.

Main Scripts

Script Purpose
install.sh Creates symlinks, initializes submodules, sets up dotfiles
uninstall.sh Removes all symlinks
sync-configs.sh Syncs configs after external installers break symlinks
backup-system.sh Full system backup (repos + packages + flatpaks)
restore-system.sh Full system restore from backup
cleanup-backups.sh Keep only the 2 most recent backups

Maintenance Scripts

Script Purpose
setup-repos.sh Configures all required DNF repositories
update-repos.sh Saves current repository configuration
update-packages.sh Updates package lists (DNF + Flatpak)

Usage Examples

cd ~/dotfiles

# Full system backup
./backup-system.sh

# Restore everything on a new system
./restore-system.sh

# Clean old backups (keeps only 2 most recent)
./cleanup-backups.sh

# Setup repositories only
./setup-repos.sh

# Update package lists only
./update-packages.sh

πŸ“¦ Repository Management

Setup Repositories on Fresh System

⚠️ CRITICAL: Always setup repositories BEFORE installing packages!

cd ~/dotfiles
./setup-repos.sh

This configures:

  • RPM Fusion (Free & Nonfree) - Additional software packages
  • Visual Studio Code - Microsoft's code editor
  • Google Chrome - Google's web browser
  • Opera - Opera web browser
  • Belgian eID - Belgian electronic ID card support
  • COPR Repositories: Hyprland, PyCharm, SwayNotificationCenter, lazygit, and more

Update Repository List

cd ~/dotfiles
./update-repos.sh

git add repos.txt
git commit -m "Update repository list"
git push

πŸ“¦ Package Management

Update Package Lists

cd ~/dotfiles
./update-packages.sh

This updates both:

  • packages.txt - All user-installed DNF packages
  • flatpaks.txt - All installed Flatpak applications

Restore Packages on a Fresh System

# FIRST: Setup repositories
cd ~/dotfiles
./setup-repos.sh

# THEN: Install packages
sudo dnf install $(cat packages.txt)
cat flatpaks.txt | xargs -I {} flatpak install -y flathub {}

πŸ”„ Updating Configurations

Method 1: Automatic Updates via Waybar Button (Recommended)

  1. Click the update button in Waybar
  2. Compares your local version with JaKooLit's GitHub
  3. Shows notification if update available
  4. One-click update process

After Update: Review and Commit

cd ~/dotfiles
git status
git diff

git add .
git commit -m "Update from JaKooLit v2.X.X"
git push

Method 2: Manual Update

cd ~/Hyprland-Dots
git pull
~/.config/hypr/UserScripts/upgrade-custom.sh

cd ~/dotfiles
git add .
git commit -m "Update from JaKooLit"
git push

Method 3: Sync After Broken Symlinks

cd ~/dotfiles
./sync-configs.sh

git add .
git commit -m "Sync configs after external update"
git push

πŸ”§ How It Works

Symlink Structure

The install script creates symlinks from your home directory to the dotfiles repository:

~/.config/nvim    β†’ ~/dotfiles/nvim
~/.config/hypr    β†’ ~/dotfiles/hypr
~/.zshrc          β†’ ~/dotfiles/zsh/.zshrc
~/.gitconfig      β†’ ~/dotfiles/git/gitconfig
# etc...

Repository Structure

dotfiles/
β”œβ”€β”€ backup/              # Timestamped backups (gitignored)
β”œβ”€β”€ backups/             # System backups from backup-system.sh
β”œβ”€β”€ consign/             # Complete recovery & installation guide
β”œβ”€β”€ scripts/             # ALL scripts organized here
β”‚   β”œβ”€β”€ install.sh
β”‚   β”œβ”€β”€ uninstall.sh
β”‚   β”œβ”€β”€ sync-configs.sh
β”‚   β”œβ”€β”€ backup-system.sh
β”‚   β”œβ”€β”€ restore-system.sh
β”‚   β”œβ”€β”€ cleanup-backups.sh
β”‚   β”œβ”€β”€ setup-repos.sh
β”‚   β”œβ”€β”€ update-repos.sh
β”‚   └── update-packages.sh
β”œβ”€β”€ btop/                # System monitor configuration
β”œβ”€β”€ cava/                # Audio visualizer
β”œβ”€β”€ emacs/               # Emacs configuration
β”œβ”€β”€ git/                 # Git configuration
β”œβ”€β”€ hypr/                # Hyprland window manager
β”œβ”€β”€ kitty/               # Kitty terminal emulator
β”œβ”€β”€ Kvantum/             # Theme engine
β”œβ”€β”€ nvim/                # Neovim configuration
β”œβ”€β”€ oh-my-zsh/           # Oh My Zsh framework (submodule)
β”œβ”€β”€ qt5ct/ qt6ct/        # Qt configuration
β”œβ”€β”€ rofi/                # Application launcher
β”œβ”€β”€ ssh/                 # SSH config (keys NOT tracked!)
β”œβ”€β”€ swaync/              # Notification daemon
β”œβ”€β”€ swappy/              # Screenshot tool
β”œβ”€β”€ wallust/             # Wallpaper & color scheme manager
β”œβ”€β”€ waybar/              # Status bar
β”œβ”€β”€ wlogout/             # Logout menu
β”œβ”€β”€ zsh/                 # Zsh configuration
β”œβ”€β”€ flatpaks.txt         # Flatpak applications list
β”œβ”€β”€ packages.txt         # DNF packages list
β”œβ”€β”€ repos.txt            # Repository configuration
└── [symlinks to scripts/*.sh]

πŸ› οΈ Development Tools

Python Development with UV

UV is a fast Python package installer and resolver.

Install UV

curl -LsSf https://astral.sh/uv/install.sh | sh

Initialize a New Python Project

mkdir ~/my-python-project
cd ~/my-python-project
uv init

# Or with specific Python version
uv init --python 3.12

Working with UV

# Add dependencies
uv add requests pandas numpy

# Add development dependencies
uv add --dev pytest black ruff

# Install all dependencies
uv sync

# Run Python with virtual environment
uv run python script.py

Common UV Commands

uv add <package>        # Add a package
uv remove <package>     # Remove a package
uv sync                 # Install all dependencies
uv run <command>        # Run command in virtual environment
uv pip list             # List installed packages
uv pip freeze           # Export dependencies
uv lock                 # Update lockfile

Rust Development

Rust is a systems programming language focused on safety, speed, and concurrency.

Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Verify installation
rustc --version
cargo --version

Creating a New Rust Project

mkdir ~/projects
cd ~/projects
cargo new my-app

Working with Cargo

cd project-name
cargo build                  # Build in debug mode
cargo build --release        # Build optimized
cargo run                    # Build and run
cargo test                   # Run tests
cargo check                  # Check code without building
cargo clippy                 # Run linter
cargo fmt                    # Format code

# Dependencies
cargo add serde              # Add a dependency
cargo remove serde           # Remove a dependency
cargo update                 # Update dependencies

Common Cargo Commands

cargo new <name>             # Create new project
cargo build                  # Build project
cargo run                    # Build and run
cargo test                   # Run tests
cargo check                  # Fast compile check
cargo clippy                 # Linting
cargo fmt                    # Format code
cargo clean                  # Clean build artifacts
cargo doc --open             # Generate and open docs

Updating Rust

rustup update
rustc --version

πŸ” SSH Key Setup

Generate SSH Key

ssh-keygen -t ed25519 -C "your-email@example.com"

Add to SSH Agent

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Add to GitHub

cat ~/.ssh/id_ed25519.pub

Copy the output and add it at GitHub SSH Keys

Auto-load SSH Keys at Startup

Add to ~/.zshrc:

# Start SSH agent if not running
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
    eval "$(ssh-agent -s)"
fi

# Add SSH keys
ssh-add ~/.ssh/id_ed25519 2>/dev/null

Test Connection

ssh -T git@github.com

πŸ”„ Daily Workflow

Making Changes

# Edit any config file
nvim ~/dotfiles/hypr/hyprland.conf

# Changes apply immediately (it's a symlink!)

# Commit when satisfied
cd ~/dotfiles
git add .
git commit -m "Update Hyprland keybinds"
git push

Syncing to Another Machine

cd ~/dotfiles
git pull
# Changes apply immediately via symlinks

Updating Package Lists

cd ~/dotfiles
./update-packages.sh
git add packages.txt flatpaks.txt
git commit -m "Update package lists"
git push

Updating Repository Lists

cd ~/dotfiles
./update-repos.sh
git add repos.txt
git commit -m "Update repository list"
git push

⚠️ Important Notes

  • Repositories First: Always run ./setup-repos.sh BEFORE installing packages
  • SSH Keys: Private keys are NOT tracked in git (see .gitignore)
  • Backups: Created automatically in ~/dotfiles/backup/TIMESTAMP/ during updates
  • Oh-my-zsh: Managed as a git submodule (automatically initialized by install.sh)
  • Package Lists: Auto-generated by update-packages.sh - don't edit manually
  • Repository List: Auto-generated by update-repos.sh - don't edit manually
  • Protected Configs: UserConfigs/, UserScripts/, and personal waybar styles are never overwritten
  • JaKooLit First: Always install JaKooLit's Hyprland setup before applying your dotfiles

πŸ†˜ Troubleshooting

Repository Issues

"Package not found" errors during installation

# You probably forgot to setup repositories first!
cd ~/dotfiles
./setup-repos.sh

# Then retry package installation
sudo dnf install $(cat packages.txt)

Check which repositories are enabled

dnf repolist

Update Issues

"No update available" message

# You're already on the latest version
# Check manually:
ls ~/Hyprland-Dots/config/hypr/v*

Restore from Backup

List available backups:

ls ~/dotfiles/backup/

Restore specific config:

cp -r ~/dotfiles/backup/TIMESTAMP/hypr ~/dotfiles/

cd ~/dotfiles
git add .
git commit -m "Restore hypr config from backup"
git push

Check Symlinks

# Verify symlinks are correct
ls -la ~/.config/nvim   # Should show β†’ /home/username/dotfiles/nvim
ls -la ~/.config/hypr   # Should show β†’ /home/username/dotfiles/hypr

🎯 Quick Reference

First-Time Setup (Correct Order!)

# 1. Install JaKooLit's Hyprland
git clone --depth=1 https://github.com/JaKooLit/Fedora-Hyprland.git
cd Fedora-Hyprland && ./install.sh && sudo reboot

# 2. Clone your dotfiles
git clone git@github.com:LoicPil/dotfiles.git ~/dotfiles
cd ~/dotfiles

# 3. Setup repositories FIRST (CRITICAL!)
./setup-repos.sh

# 4. Install packages
sudo dnf install $(cat packages.txt)
cat flatpaks.txt | xargs -I {} flatpak install -y flathub {}

# 5. Apply dotfiles
./install.sh

# 6. Install development tools (optional)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
curl -LsSf https://astral.sh/uv/install.sh | sh

Maintenance

# Full system backup (repos + packages + flatpaks)
./backup-system.sh

# Full system restore
./restore-system.sh

# Update package lists only
./update-packages.sh

# Update repository list only
./update-repos.sh

# Clean old backups (keeps 2 most recent)
./cleanup-backups.sh

# Reinstall dotfiles
./uninstall.sh && ./install.sh

# Restore from backup
cp -r backup/20260831_114623/hypr ~/dotfiles/

Keep your dotfiles safe and your system consistent! πŸŽ‰

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors