Hyprland dotfiles for Arch Linux. Snow-themed, material-you colored, multi-machine.
OS: CachyOS / Arch x86_64
WM: Hyprland
Shell: fish + starship
Terminal: kitty
Fetch: fastfetch
Launcher: fuzzel / rofi
Colors: matugen (Material You)
Bar: waybar
Notifications: swaync
curl -sL https://raw.githubusercontent.com/Snowiseverything/snowdots/main/scripts/install.sh | bashThis clones the repo to ~/Dotfiles and launches the interactive installer.
No git? The script installs it. No dependencies? You pick what to install.
Or clone and run manually:
git clone https://github.com/Snowiseverything/snowdots.git ~/Dotfiles
bash ~/Dotfiles/scripts/snow-dots installcurl -sL https://gitlab.com/sn0wman/snowdots/-/raw/main/scripts/install.sh | bash- Hyprland — Dynamic tiling, smooth animations, material-you colors
- fish — Auto-complete, autopair, pure prompt, fuzzy file nav with fzf
- kitty — GPU-accelerated terminal with material-you theme
- starship — Minimal, fast prompt
- waybar — Status bar with workspaces, volume, brightness, network, clock
- fuzzel — Fuzzy app launcher with material-you colors
- swaync — Notification center
- dunst — Lightweight notifications
- matugen — Material You theme generator from wallpaper
- wall-sync — Automatically generate theme from wallpaper
- dotsync — Unified git sync across machines
~/
├── Dotfiles/ ← This repo
│ ├── scripts/ ← dotsync, snow-dots, audit, publish, etc.
│ ├── fish/ ← config.fish, functions, conf.d/
│ ├── hypr/ ← hyprland.conf, hypridle.conf, keybinds
│ ├── kitty/ ← kitty.conf + material-you theme
│ ├── starship/ ← starship.toml
│ ├── fastfetch/ ← config.jsonc, logo
│ ├── waybar/ ← style.css, config
│ ├── swaync/ ← notification config
│ ├── dunst/ ← dunstrc
│ ├── wofi/ ← wofi style
│ ├── wallpaper/ ← current wallpaper + themes
│ ├── matugen/ ← material-you templates
│ ├── ssh/ ← authorized_keys placeholder
│ ├── README.md ← This file
│ └── README-SETUP.md ← Legacy (content merged here)
bash <(curl -sL https://raw.githubusercontent.com/Snowiseverything/snowdots/main/scripts/snow-dots.sh)Or clone and run locally:
git clone https://github.com/Snowiseverything/snowdots.git ~/Dotfiles
bash ~/Dotfiles/scripts/snow-dots.shWhat it does:
- Detects your distro (Arch, Debian, Fedora)
- Backs up your current config to
~/.dotfiles-backup-*before touching anything - Installs packages (Hyprland, fish, kitty, waybar, fonts, etc.)
- Detects if you use bash/fish/zsh and adjusts PATH setup accordingly
- Sets up symlinks for all configs
- Installs fisher + plugins (if fish is installed)
- Sets fish as default shell (optional)
- Shows restore instructions at the end
Want to undo? Run snow-dots restore and pick your backup.
After install, snow-dots is available as a command:
| Command | Description |
|---|---|
snow-dots help |
Show help |
snow-dots install |
Run interactive installer |
snow-dots backup |
Backup current dotfiles |
snow-dots restore |
Restore from a backup |
snow-dots list |
List available backups |
# Symlink configs
ln -sf ~/Dotfiles/fish ~/.config/fish
ln -sf ~/Dotfiles/kitty ~/.config/kitty
ln -sf ~/Dotfiles/fastfetch ~/.config/fastfetch
ln -sf ~/Dotfiles/hypr/hyprland.conf ~/.config/hypr/hyprland.conf
ln -sf ~/Dotfiles/hypr/hypridle.conf ~/.config/hypr/hypridle.conf
ln -sf ~/Dotfiles/starship/starship.toml ~/.config/starship.toml
# Link scripts
mkdir -p ~/.local/bin
for script in ~/Dotfiles/scripts/*.sh; do
ln -sf "$script" ~/.local/bin/$(basename "$script")
done
ln -sf ~/Dotfiles/scripts/dotsync ~/.local/bin/dotsyncArch:
sudo pacman -S --needed hyprland fish kitty waybar wofi fuzzel swaync \
dunst wlogout starship fastfetch grim slurp swappy wl-clipboard \
polkit-kde-agent xdg-desktop-portal-hyprland \
ttf-jetbrains-mono-nerd ttf-meslo-nerd noto-fonts-emoji
# AUR
yay -S matugen-bin hyprland-guiutilsDebian/Ubuntu:
sudo apt install fish kitty starship fastfetch grim slurp wl-clipboard \
fonts-jetbrains-mono fonts-noto-color-emoji
# Hyprland must be built from source or use the hyprland repodotsyncOn Freezer: pulls from GitLab, pushes to GitLab + optionally to GitHub (sanitized). On SnowPi: pulls from GitLab, pushes to GitLab + optionally to peer.
After dotsync, you'll be asked:
📢 Publish sanitized version to GitHub? [y/N]
This runs scripts/publish-public.sh which:
- Clones the repo to a temp directory
- Strips personal info (SSH keys, IPs,
.opencode/) - Asks confirmation
- Force-pushes sanitized copy to GitHub
This keeps private info on GitLab and only polished, public-safe content on GitHub.
Freezer (desktop)
gitlab → git@gitlab.com:sn0wman/snowdots.git
github → git@github.com:Snowiseverything/snowdots.git
SnowPi (RPi4)
origin → git@gitlab.com:sn0man/snowpi-dotfiles.git
| Key | Action |
|---|---|
| Super + Return | kitty |
| Super + D | fuzzel launcher |
| Super + Q | Close window |
| Super + F | Toggle fullscreen |
| Super + V | Toggle floating |
| Super + 1-9 | Switch workspace |
| Super + Shift + 1-9 | Move window to workspace |
| Super + Shift + C | Kill window |
| Super + Shift + S | Screenshot region |
| Super + L | Lock screen |
| Super + Space | Toggle layout |
| Super + arrows | Move focus |
| Super + Print | Screenshot full |
| Ctrl + T | fzf (files) |
| Ctrl + R | fzf (history) |
| Alt + C | fzf (dirs + cd) |
Place wallpapers in ~/Dotfiles/wallpaper/ and run:
bash ~/Dotfiles/scripts/wall-sync.shThis runs matugen on the current wallpaper and updates kitty, waybar, fuzzel, and hyprland colors.
MIT