This repository contains my personal dotfiles for a modern Arch-based Wayland desktop and development environment.
It is designed to be modular and reproducible, with an interactive installer for quickly setting up the environment and manual instructions for users who want more control.
- Hyprland / Niri compositor and layout configurations
- Noctalia components for panels, widgets and lockscreen
- Neovim configuration and plugins
- Zsh configuration, aliases and plugins
- Kitty terminal configuration and helper scripts
- Reproducible package list in
package.txt - Interactive installer with logging and dry-run support
- Automatic configuration backup before symlinking dotfiles
- Optional Docker setup
- UFW, Bluetooth and power-profiles-daemon service setup
- Windows PowerShell configuration snippets
| Niri | Hyprland |
|---|---|
![]() |
![]() |
The installer is intended for Arch-based distributions, including:
- Arch Linux (Recommended)
- CachyOS (Recommended)
- EndeavourOS
- Garuda Linux
- Manjaro
- Other Arch-based distributions that identify themselves as Arch-based through
/etc/os-release
The installer will stop automatically on unsupported distributions.
The installer can be downloaded and run directly from GitHub:
bash <(curl -fsSL "https://raw.githubusercontent.com/tiesen243/dotfiles/main/install.sh")The installer collects the configuration choices at the beginning, then runs the installation without asking additional questions.
It currently lets you choose:
- Git username and email
- Hyprland, Niri, both, or no window manager
- Zen Browser, Firefox, Chromium, Google Chrome, Brave, or no browser
- Whether Docker should be installed
Before making changes, the installer displays an installation plan and waits for confirmation.
To test the installer without applying system changes:
bash <(curl -fsSL "https://raw.githubusercontent.com/tiesen243/dotfiles/main/install.sh") --dry-runDry-run mode goes through the installation flow and prints commands that would be executed without performing the installation.
bash <(curl -fsSL "https://raw.githubusercontent.com/tiesen243/dotfiles/main/install.sh") --helpIf you prefer to inspect and configure everything manually, follow the steps below.
Install Git and the base development tools:
sudo pacman -Syu --needed git base-develInstall yay:
git clone https://aur.archlinux.org/yay.git ~/yay
cd ~/yay
makepkg -si
cd ~
rm -rf ~/yaygit clone https://github.com/tiesen243/dotfiles.git ~/dotfilesyay -S --needed --noconfirm --answerclean All --answerdiff None $(grep -v '^#' ~/dotfiles/package.txt)chsh -s "$(command -v zsh)"Back up any existing configuration before creating the symlinks:
mkdir -p ~/.config.bak
mv ~/.config/{Thunar,btop,fastfetch,git,gtk-3.0,gtk-4.0,hypr,kitty,lsd,niri,noctalia,nvim,zsh} ~/.config.bak/ 2>/dev/null || trueCreate the configuration symlinks:
ln -s ~/dotfiles/{Thunar,btop,fastfetch,git,gtk-3.0,gtk-4.0,hypr,kitty,lsd,niri,noctalia,nvim,zsh} ~/.configConfigure ZDOTDIR:
echo 'export ZDOTDIR="$HOME/.config/zsh"' | sudo tee -a /etc/zsh/zshenvCreate ~/.config/git/config.local:
[user]
name = your-name
email = [email protected]UFW:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default deny routed
sudo ufw logging on
sudo ufw logging low
sudo ufw --force enable
sudo systemctl enable --now ufw.serviceBluetooth:
sudo systemctl enable --now bluetooth.servicePower profiles:
sudo systemctl enable --now power-profiles-daemon.serviceDocker:
yay -S --needed --noconfirm docker docker-buildx docker-compose
sudo systemctl enable --now docker.service
sudo usermod -aG docker "$USER"Log out or reboot after adding your user to the docker group.
Note
Some Neovim plugins require Node.js. I recommend installing it through vite-plus:
yay -S --needed vite-plus
vp env install node@ltsSome parts of this repository can also be reused on Windows, particularly the PowerShell and Neovim configuration.
Clone the repository:
git clone https://github.com/tiesen243/dotfiles.git $HOME\dotfilesRun Windows Terminal or PowerShell as Administrator when creating symbolic links.
Remove-Item -Force -Recurse $HOME\.config\fastfetch
Remove-Item -Force -Recurse $HOME\dotfiles\git
Remove-Item -Force -Recurse $HOME\AppData\Local\nvim
Remove-Item -Force -Recurse $HOME\Documents\WindowsPowerShell
New-Item -ItemType SymbolicLink -Path $HOME\.config\fastfetch -Target $HOME\dotfiles\fastfetch
New-Item -ItemType SymbolicLink -Path $HOME\.config\git -Target $HOME\dotfiles\git
New-Item -ItemType SymbolicLink -Path $HOME\AppData\Local\nvim -Target $HOME\dotfiles\nvim
New-Item -ItemType SymbolicLink -Path $HOME\Documents\WindowsPowerShell -Target $HOME\dotfiles\powershellThis project is licensed under the MIT License - see the LICENSE file for details.

