CachyOS (Arch) + Hyprland desktop configuration with custom "Dragon Fire" theme. Managed declaratively with Nix Flakes + Home Manager.
| 4K Display | 1080p Display |
|---|---|
![]() |
![]() |
- Source Color:
#fd5622(vivid orange) - Accent:
#e53935(red) - Background: dark greys (
#181616,#1e100c) - Style: Kanagawa Dragon inspired with Material You palette
| Component | Choice |
|---|---|
| WM | Hyprland + hy3 |
| Bar/Shell | Ambxst |
| Terminal | Kitty |
| Shell | Zsh + Oh My Zsh + Powerlevel10k |
| Editor | Vim + VSCodium |
| File Manager | Dolphin |
| Launcher | Hyprlauncher |
| GTK Theme | WhiteSur-Dark |
| Qt Theme | qt6ct-kde + Fusion + KvDarkRed |
| Icons | WhiteSur-dark |
| Cursor | Capitaine Cursors |
| Font | JetBrainsMono Nerd Font |
| Git Identity | git-identity-manager (flake input) |
CachyOS is an Arch-based distribution optimized for performance out of the box:
- Performance-tuned kernel (BORE scheduler, x86-64-v3/v4 optimized packages)
- Stable enough for a daily driver - rolling release with the full Arch ecosystem, but with sane defaults and a graphical installer
- Tried Bazzite OS for a few months - ran into persistent video issues (screen tearing, compositor glitches) that were never a problem on CachyOS, so switched back
- Caution with LUKS + TPM2: kernel or bootloader updates can break automatic TPM2 unlock - always keep a recovery key and re-enroll after major updates
- CachyOS (or Arch Linux)
- Nix package manager (standalone, not NixOS)
- System packages installed via pacman (Hyprland, pipewire, docker, etc.)
# First time: install Nix
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
# Deploy (first time)
cd ~/Documents/dotenv
nix run home-manager -- switch --flake .#$USER
# Deploy (after changes)
home-manager switch --flake .#$USER
# Rollback to previous generation
home-manager switch --rollback
# List all generations
home-manager generationsIf Hyprland breaks or is unusable (GPU issues, driver update, etc.), MATE is available as a fallback desktop:
# Install MATE
sudo pacman -S mate mate-extra
# Select MATE from the login screen (GDM/SDDM session picker)dotenv/
├── flake.nix # Nix flake entry point (+ git-identity-manager input)
├── home.nix # Home Manager main config
├── modules/
│ ├── packages.nix # CLI tools (nix-managed)
│ ├── backup.nix # Home backup (restic + rclone)
│ ├── desktop-entries.nix # Desktop entries
│ ├── vim.nix # Vim config
│ ├── zsh.nix # Zsh + Oh My Zsh
│ ├── kitty.nix # Kitty terminal
│ ├── hyprland.nix # Hyprland configs
│ ├── gtk.nix # GTK theming
│ └── qt.nix # Qt theming
├── scripts/
│ └── home-backup.sh # Restic backup script
├── zsh/
│ ├── aliases.zsh # Shell aliases
│ ├── init.zsh # Zsh init (cachyos, zoxide, etc.)
│ ├── plugins.zsh # Oh My Zsh plugins
│ ├── prompt.zsh # Powerlevel10k instant prompt
│ └── sourceme.zsh # Auto-load/unload project env files
├── config/
│ ├── hypr/
│ │ ├── hyprland.conf
│ │ ├── monitors.conf
│ │ ├── workspaces.conf
│ │ ├── hyprqt6engine.conf
│ │ └── hypridle.conf
│ ├── kitty/
│ │ ├── kitty.conf
│ │ └── kanagawa-dragon.conf
│ ├── fastfetch/config.jsonc
│ ├── gtk-3.0/settings.ini
│ ├── gtk-4.0/settings.ini
│ ├── qt6ct/qt6ct.conf
│ ├── Kvantum/kvantum.kvconfig
│ ├── kdeglobals
│ ├── vesktop-flags.conf
│ ├── ambxst/colors/Dragon_Fire/
│ │ ├── dark.json
│ │ └── light.json
│ └── VSCodium/
│ ├── extensions.txt
│ └── User/settings.json
├── screenshots/ # Desktop screenshots
└── vim/
├── colors/kanagawa-dragon.vim
└── config/
├── apparence.vim
├── cursor.vim
├── keybinds.vim
├── scroll.vim
├── settings.vim
└── statusline.vim
Home Manager manages the user environment declaratively:
-
Dotfiles: symlinked to
~/.config/,~/.vimrc, etc. -
CLI tools: installed via Nix in an isolated store (doesn't conflict with pacman)
-
Idempotent: running
home-manager switchmultiple times always produces the same result -
Rollback: every deployment creates a generation you can switch back to
-
External flake inputs: tools like git-identity-manager are pulled in as flake inputs and added to
home.packages
System-level packages (Hyprland, pipewire, docker daemon, fonts, etc.) remain managed by pacman.
Automated home directory backup using restic + rclone to kDrive (Infomaniak cloud storage).
Secrets management chain:
- Backup encryption password is stored in Bitwarden Secrets Manager (BWS)
- BWS access token is stored locally in
~/.config/bws/$USER-desktop.key - Restic retrieves the password from BWS on each run - never stored on disk
How it works:
home-backup backup- incremental backup of$HOMEto kDrive via rclonehome-backup prune- retention policy: 7 daily, 4 weekly, 6 monthly snapshotshome-backup restore <id>- restore a specific snapshot- Desktop notifications via
notify-sendon success/failure
See scripts/home-backup.sh for the full script.




