Skip to content

Feature Request: Unified Hyprland dotfiles setup (combine 6 repos into dwell) #22

Description

@grave0x

Summary

Integrate/config manage 6 existing Hyprland dotfiles repos under dwell, creating a unified, modular, installable setup.

Source repos

Repo Focus Highlights
garuda-hyprdots Garuda Linux Sway/Hyprland Catppuccin Macchiato theme, Waybar themes, swaylock, MPD
ml4w-lightcrimson ML4W-based Hyprland Custom Quickshell bar, media/calendar/dashboard popups, matugen
hyprzepyx Modular Hyprland Multiple visual themes, eww widgets, modular structure
retrilzzy/dotfiles Arch Hyprland stow-based Install script, matugen theming, Vicinae launcher, wlogout
Hyprland-Simple-Setup Arch/EndeavourOS Hyprland Rust TUI installer, stow-based, complete package mgmt, modular configs
NeKoRoSHELL-DLux Quickshell desktop shell Replaces waybar/rofi/wlogout/SwayNC, QML panels, IPC

Proposed dwell integration

Phase 1: Unified source directory

Combine all configs into a single dwell-managed source dir with modular layout:

~/.local/share/dwell/
├── dot_config/
│   ├── hypr/
│   │   ├── hyprland.conf              # Main — imports sources/
│   │   ├── sources/                   # Modular Hyprland config parts
│   │   │   ├── keybindings.conf       # From Hyprland-Simple-Setup + retrilzzy
│   │   │   ├── monitors.conf          # Auto-detected or manual
│   │   │   ├── exec_once.conf         # Autostart apps
│   │   │   ├── window_rules.conf      # Floating, opacity, workspace rules
│   │   │   └── animations.conf        # Animation settings
│   │   ├── hyprlock.conf              # Lock screen (from retrilzzy)
│   │   ├── hypridle.conf              # Idle management
│   │   └── hyprpaper.conf             # Wallpaper daemon
│   ├── waybar/                        # Waybar configs (from garuda-hyprdots)
│   │   ├── config.jsonc
│   │   ├── style.css
│   │   └── scripts/
│   ├── quickshell/                    # Quickshell (from ml4w + NeKoRoSHELL)
│   │   ├── panels/
│   │   └── ipc/
│   ├── kitty/kitty.conf               # Terminal (from retrilzzy)
│   ├── fish/config.fish               # Shell (from Hyprland-Simple-Setup)
│   ├── wofi/style.css                 # Launcher (from Hyprland-Simple-Setup)
│   ├── swaync/config.json             # Notifications
│   ├── btop/btop.conf
│   ├── cava/cava.conf                 # Audio visualizer
│   ├── fastfetch/config.jsonc
│   ├── nvim/                          # Neovim (Kickstarter from Hyprland-Simple-Setup)
│   ├── bat/config
│   ├── zellij/config.kdl
│   └── dunst/dunstrc                  # Notifications fallback
├── dot_bashrc
├── dot_zshrc
├── dot_gitconfig
├── .dwell/
│   ├── deps.toml                      # Auto-detected dependencies
│   └── setup/
│       └── manifest.json              # Captured system state
└── README.md

Phase 2: dwell.toml module config

[data]
home = "/home/user"
hostname = "my-machine"

[packages]
system.pacman = [
    "hyprland", "waybar", "kitty", "fish", "wofi",
    "swaync", "btop", "cava", "fastfetch", "nvim",
    "hyprlock", "hypridle", "hyprpaper", "hyprpicker",
    "pipewire", "wireplumber", "networkmanager",
    "bluez", "bluez-utils", "blueman",
    "ttf-jetbrains-mono-nerd", "noto-fonts",
    "polkit-gnome", "xdg-desktop-portal-hyprland",
    "grim", "wl-clipboard", "satty",
    "stow", "fd", "fzf", "bat", "lsd", "zoxide",
    "brightnessctl", "playerctl", "pavucontrol",
    "firewalld", "thunar", "dolphin",
]

[modules]
enabled."programs.git".user.name = "grave0x"
enabled."programs.git".user.email = "grave@example.com"
enabled."programs.git".init.defaultBranch = "main"

Phase 3: dwell deploy pipeline

# Fresh install on new machine
curl -fsSL https://github.com/grave0x/dwell/raw/main/scripts/install.sh | sh
dwell init --clone https://github.com/grave-configs/dotfiles.git
dwell deploy

The dwell deploy command would:

  1. Install all pacman/AUR packages from deps.toml
  2. Apply all dotfiles
  3. Run post-deploy scripts (stow, theme setup, etc.)
  4. Sync to remote

Phase 4: Hybrid stow + dwell approach

Some of these repos (Hyprland-Simple-Setup, retrilzzy) use GNU stow for config management. dwell can coexist with or replace stow:

  • Option A: dwell manages all files directly (pure dwell)
  • Option B: dwell manages the stow package directory, stow handles symlinks (hybrid)
  • Option C: dwell imports existing stow packages via dwell add

Acceptance criteria

  • All 6 repos merged into a single dwell source directory
  • dwell.toml configured with all packages and modules
  • dwell deps scan detects all dependencies
  • dwell deploy installs everything on a fresh Arch system
  • dwell reset --all restores any modified file
  • dwell setup capture captures the full system state
  • dwell sync commits and pushes the config

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions