This file provides guidance to WARP (warp.dev) when working with code in this repository.
- Active development happens on the
developmentbranch; fork or branch from there as documented inCONTRIBUTING.md. README.md,Debian-Hyprland-Install-Upgrade.md, andHOWTO-Install-NVIDIA-drivers-in-Debian.mdexplain supported Debian targets (Trixie/SID+), prerequisites (non-root execution,deb-src/non-freeenabled), and NVIDIA caveats—mirror those expectations in new docs.- Pull requests must use
.github/PULL_REQUEST_TEMPLATE.mdand honorCOMMIT_MESSAGE_GUIDELINES.md; tests or dry-runs are expected before requesting review.
install.shis the interactive orchestrator: it enforces non-root execution, can run in whiptail or--ttymode, auto-fixes APT sources (deb-src + missing non-free/non-free-firmware via an overlay file), removes any distro Hyprland packages before source builds, loadshypr-tags.env(refreshesauto/latest), then calls component installers viaexecute_script. Options (GTK themes, NVIDIA, dotfiles, SDDM, etc.) are either selected interactively or injected through--preset <file>. Trixie compatibility can be forced with--build-trixie/--no-trixie, and APT reinstalls with--force-reinstall.install-scripts/contains one script per dependency (e.g.,00-dependencies.sh,hyprwire.sh,hyprland.sh,nvidia.sh). Every script sourcesinstall-scripts/Global_functions.sh, which defines logging, apt helpers,BUILD_ROOT/SRC_ROOT, and spinner output. Scripts respectDRY_RUN=1, inherit tags such asHYPRLAND_TAG, and write detailed logs toInstall-Logs/.hypr-tags.envcentralizes the Hyprland stack versions. Setting a value toauto/latestallows tag refreshers to overwrite it; pinned versions stay untouched. These values are exported before every module run.refresh-hypr-tags.shandupdate-hyprland.shmanage tag drift and rebuilds without rerunning the full installer. They back uphypr-tags.env, fetch GitHub release tags (usingcurl/jq), and propagate them to installers.dry-run-build.shreuses the same module scripts withDRY_RUN=1to compile-only and summarize PASS/FAIL per module—useful for CI or before merging risky changes. The default dry-run stack includeshyprcursorbefore Hyprland.- Root scripts at the top level (
auto-install.sh,update-hyprland.sh,dry-run-build.sh,uninstall.sh,preset.sh) should always be invoked from repo root; per README the module scripts will fail if youcd install-scripts. assets/bundles patches (0001-fix-hyprland-compile-issue.patch,0002-start-hyprland-no-nixgl.patch), packaged deps (e.g.,libglaze), and config seeds (zsh themes, GTK/Thunar profiles) consumed by optional installers.
git clone --depth=1 -b development https://github.com/LinuxBeginnings/Debian-Hyprland.git ~/Debian-Hyprland
cd ~/Debian-Hyprland
chmod +x install.sh
./install.sh # interactive whiptail flow
./install.sh --tty --preset preset.sh # non-interactive preset run
./install.sh --build-trixie --force-reinstall # force compatibility shims + apt reinstalls- Run as an unprivileged user; the script escalates with
sudoas needed. Ensuredeb-src,non-free, andnon-free-firmwareare enabled before starting or let the script fix them when prompted.
./update-hyprland.sh --dry-run --with-deps # compile-only sanity check
./update-hyprland.sh --install --with-deps --only hyprland,hyprutils
./update-hyprland.sh --fetch-latest --force-update --install
./update-hyprland.sh --set HYPRLAND=v0.53.4 --dry-run
./update-hyprland.sh --fetch-latest --via-helper --dry-run # delegates to dry-run-build.sh for summary- Use this script after upgrading Debian releases (e.g., Trixie → Forky) as highlighted in
README.md.--with-depsre-runsinstall-scripts/00-dependencies.sh;--only/--skipconstrain the module list;--build-trixieinjects compatibility patches when required.
./dry-run-build.sh --with-deps # full stack compile test
./dry-run-build.sh --only hyprlang,hyprutils
DRY_RUN=1 ./install-scripts/hyprland.sh # targeted compile-only run
./install-scripts/hyprwire.sh # install a single dependency (from repo root)- All module logs land in
Install-Logs/*.log; review those when diagnosing failures. For CI, fail the pipeline if any module result isFAILin the dry-run summary.
./refresh-hypr-tags.sh # updates only auto/latest entries
FORCE=1 ./refresh-hypr-tags.sh # override pinned tags
./refresh-hypr-tags.sh --force-update
cat hypr-tags.env # inspect current pins- Keep
hypr-tags.envunder version control—changes should be deliberate and reviewed.refresh-hypr-tags.shandupdate-hyprland.sh --fetch-latestboth createhypr-tags.env.bak-YYYYMMDD-HHMMSSbackups automatically.
- Follow
CONTRIBUTING.md: branch fromdevelopment, keep PRs focused, and update docs when behavior changes. - Include dry-run or install logs (
Install-Logs/...) when fixing installer issues; reviewers expect evidence of successful builds. - If you touch module ordering or add a new component, update
install.sh(sequence + option),update-hyprland.sh(DEFAULT_MODULES+ Hyprland prerequisite ordering), anddry-run-build.sh(DEFAULT_MODULES) to prevent drift. - When documenting new options, cross-link the relevant HOWTO/README sections so end users see the guidance surfaces described above.