Wallpaper from this repo.
Personal dotfiles configuration for Arch Linux, managed with chezmoi for reproducible deployment and simplified maintenance across multiple machines.
Install via curl
Important
Only for archlinux.
Note
If a configuration of hypr, quickshell, kitty, nvim or rofi is found during installation, it will be moved to $HOME/.local/share/chezmoi/.backup
The script was made for my machines, it may not work for yours.
bash -c "$(curl -ffSL https://raw.githubusercontent.com/PabloCruzval/dotfiles/refs/heads/main/setup.sh)"This repository contains my system configuration managed as code, enabling:
- Versioned management of configuration files
- Consistent deployment across different machines (desktop/laptop)
- Dynamic templates that adapt based on the device
Chezmoi is a dotfiles manager that allows you to:
- Use templates for machine-specific configurations
- Apply changes safely with preview
- Manage files in their correct system locations
- Handle secrets and private configurations
Chezmoi uses special prefixes in file names:
dot_→ converts to.(hidden files)- Example:
dot_zshrc→~/.zshrc
- Example:
dot_config/→~/.config/.tmpl→ template file that gets processed- Example:
hyprland.conf.tmpl→hyprland.conf
- Example:
.
├── dot_zshrc # ~/.zshrc - Zsh configuration
├── dot_config/
│ ├── hypr/ # Modular Hyprland configuration
│ │ ├── hyprland.conf.tmpl # Main file with templates
│ │ ├── hyprpaper.conf.tmpl # Wallpaper configuration
│ │ └── modules/ # Modules separated by functionality
│ │ ├── env.conf # Environment variables
│ │ └── ... # Other files
│ ├── kitty/ # Kitty terminal
│ │ └── kitty.conf
│ ├── nvim/ # Neovim editor (see separate README)
│ │ ├── init.lua
│ │ ├── lua/
│ │ └── readme.md
│ ├── quickshell/ # Custom status bar (see separate README)
│ │ ├── Config.qml
│ │ ├── shell.qml
│ │ ├── modules/
│ │ └── README.md
│ └── rofi/ # Application launcher
│ └── config.rasi
└── NyxWallpapers/ # Wallpaper collection
└── README.md
This dotfile manages the configuration for:
- Hyprland - Wayland compositor (see README)
- Neovim - Text editor (see README)
- Quickshell - Status bar (see README)
- Kitty - Terminal emulator
- Zsh - Shell with Powerlevel10k, Zinit, and plugins
- Rofi - Application launcher
Note: Applications marked have their own README with detailed documentation.
# See which files chezmoi manages
chezmoi managed
# Check for differences between repository and system
chezmoi diffRecommended Method: Edit source files directly
# Navigate to chezmoi's source directory
chezmoi cd
# Edit your files with your preferred editor
nvim dot_zshrc
# or
nvim dot_config/hypr/hyprland.conf.tmpl
# Apply changes to the system
chezmoi apply
# Commit and push to repository
git add .
git commit -m "Update configuration"
git pushAlternative: Quick edit with chezmoi edit
# Edit the source file in chezmoi's directory
chezmoi edit ~/.zshrc
# Apply changes to the system
chezmoi apply# Pull latest changes from repository
chezmoi update
# Or manually:
cd ~/.local/share/chezmoi
git pull
chezmoi apply# Add a new file to chezmoi management
chezmoi add ~/.config/some-app/config.conf
# This creates the file in ~/.local/share/chezmoi with appropriate namingThe dotfiles use chezmoi templates to handle differences between machines:
Example from dot_config/hypr/hyprland.conf.tmpl:
{{- if eq .machinename "desktop" }}
source = ~/.config/hypr/modules/monitors-desktop.conf
{{- else if eq .machinename "laptop"}}
source = ~/.config/hypr/modules/monitors-laptop.conf
{{- else }}
monitor = ,auto,auto,1
{{- end }}
This allows the same source to generate different configurations based on the device type.
-
On the first machine:
cd ~/.local/share/chezmoi git add . git commit -m "Update configurations" git push
-
On the second machine:
chezmoi update
Chezmoi will automatically handle machine-specific differences through templates.
- Modular configuration: Large configs (Hyprland, Neovim) are split into logical modules
- Template-based: Uses
.tmplfiles for machine-specific configurations - Documentation: Each major application has its own README
- Version controlled: All changes tracked with Git
This is a personal dotfiles repository, but contributions are welcome!
If you find issues or have suggestions:
- Fork the repository
- Create a feature branch (
git checkout -b feature/improvement) - Commit your changes (
git commit -am 'Add improvement') - Push to the branch (
git push origin feature/improvement) - Open a Pull Request
This project is open source and available under the MIT License.
You are free to use, modify, and distribute these configurations. Attribution is appreciated but not required.
Note: This configuration is tailored to my personal workflow. You may need to adjust:
- Hardware-specific settings (monitor configurations, input devices)
- Application preferences
- Paths and usernames
