Skip to content

Dxsk/dotenv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dragon Fire Desktop

CachyOS (Arch) + Hyprland desktop configuration with custom "Dragon Fire" theme. Managed declaratively with Nix Flakes + Home Manager.


Screenshots

4K Display 1080p Display
4K Desktop 1080p Desktop
More screenshots

Demo Demo Ambxst Bar & Shell

Theme

  • Source Color: #fd5622 (vivid orange)
  • Accent: #e53935 (red)
  • Background: dark greys (#181616, #1e100c)
  • Style: Kanagawa Dragon inspired with Material You palette

Stack

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)

Why CachyOS?

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

Prerequisites

  • CachyOS (or Arch Linux)
  • Nix package manager (standalone, not NixOS)
  • System packages installed via pacman (Hyprland, pipewire, docker, etc.)

Usage

# 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 generations

Fallback: MATE Desktop

If 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)

Structure

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

How it works

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 switch multiple 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.

Home Backup

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 $HOME to kDrive via rclone
  • home-backup prune - retention policy: 7 daily, 4 weekly, 6 monthly snapshots
  • home-backup restore <id> - restore a specific snapshot
  • Desktop notifications via notify-send on success/failure

See scripts/home-backup.sh for the full script.