Niriland is my personal CachyOS-first desktop setup and bootstrap repo for Niri + DankMaterialShell. It includes package lists, configs, and helper scripts. The repo is public so other people can inspect it and try it, but it is not meant to be a general Linux installer.
Project status: Niriland is in maintenance mode and is being superseded by Nimbus. Existing setups may still receive small fixes, but new platform work is moving to Nimbus.
Warning
- This is a fresh-install tool. It overwrites system and user configs. Do not run on an existing customized system without understanding what each step does.
- Step
05-setup-fdeadds TPM2 auto-unlock and a recovery key to an existing CachyOS LUKS setup. Read the step before running if you use full-disk encryption.- The repo must live at
~/.local/share/niriland. The installed Niri config reads shared fragments directly from that path.The fixed repo path is intentional: shared tracked config stays in the repo, machine-specific overrides stay outside it, and the config layout depends on that exact path.
curl -fsSL https://raw.githubusercontent.com/Furyfree/niriland/main/bootstrap | bashOr clone locally:
git clone https://github.com/Furyfree/niriland.git ~/.local/share/niriland
~/.local/share/niriland/installPost-install note: after your first successful login into Niri, reboot one more time. Some systems do not start all user-session autostarts/services (niriusd, 1Password) until the second boot.
- CachyOS with
systemd - Internet access
sudoaccessgitinstalled
After you install CachyOS by following CACHYOS_INSTALL.md, Niriland installs the shared workstation baseline. It deploys Niri, DMS, Ghostty, and Zsh configs; sets up theming; installs Brave Origin and Prism Launcher; configures Docker, user-local Mise, Neovim/LazyVim, VSCodium, and Zed; and installs optional helper scripts for gaming, AI, VMs, fingerprint auth, and more.
For known issues and operational fixes, see docs/TROUBLESHOOTING.md. For one-time migration steps on older setups, see docs/MIGRATIONS.md. For repo-local unfinished work, see docs/ROADMAP.md. For the expected fresh-install baseline for the default Niriland flow, see CACHYOS_INSTALL.md.
Prism Launcher is part of the shared baseline. The full gaming stack is opt-in through niriland-setup-gaming; it uses Lutris for Steam and Battle.net workflows and Heroic for Epic Games.
- For me and my own systems
- For people who want to inspect or experiment with my setup
- Not for people looking for an installer that works across many Linux distributions
- Not for existing heavily customized systems
- Niriland keeps installer steps, package lists, tracked config, and helper tools in one repo so the full setup is easy to inspect and repeat.
- The repo path is fixed because the installed Niri config includes repo-hosted modular fragments directly from
~/.local/share/niriland. - Shared tracked config lives in the repo, while machine-local overrides live under
$HOMEoutside the tracked tree so updates and local customization stay separate. - The project prefers a fresh-install target because the default flow deploys its own packages and config layers instead of trying to preserve an already customized system.
- The repo must live at
~/.local/share/niriland. - Shared tracked config is loaded from the repo.
- Machine-local changes belong outside the tracked tree.
- The default package manifests describe the shared workstation baseline.
packages/gaming.packagesis optional and is never read by the normal installer or updater.- The deployed Niri config layers repo config first, DMS-managed includes second, and user overrides last.
Use these override locations for local customization:
~/.config/niri/override.d/binds.kdl~/.config/niri/override.d/autostart.kdl~/.config/niri/override.d/cursor.kdl~/.config/niri/dms/binds.kdl
Terminal preference and file-type defaults are separate:
- terminal launcher preference:
~/.config/niri-xdg-terminals.list - file associations and default editor:
~/.config/mimeapps.list
Install entrypoints:
curl -fsSL https://raw.githubusercontent.com/Furyfree/niriland/main/bootstrap | bash
~/.local/share/niriland/installThe installer currently asks for:
- system password for
sudo - LUKS password, with empty input reusing the system password
- git name/email confirmation or override values
The install flow is grouped by purpose:
00-09: base system preparation10-19: package install and desktop setup20-39: config deploy and desktop polish40-59: shell, keyring, helper tools, editor bootstrap60-79: developer tools, editors, browser setup80-99: desktop integration and cleanup
For normal maintenance:
niriland-updateCurrent update behavior:
- requires a clean git worktree
- runs
git pull --ff-only - runs a full package upgrade through
niriland-pkg upgrade - replays selected shared-baseline install steps
- preserves existing local config during
20-deploy-configs - does not install or remove the optional gaming profile
bootstrap— clone/update repo and run installerinstall— installer orchestratorcleanup— plan-first, staged cleanup of retired application data and rebuildable cachesscripts/install/lib/common— shared installer helpersscripts/install/steps/— numbered install stepsscripts/tools/— helper scripts copied to~/.local/bin/nirilandconfigs/base/— files deployed to$HOMEconfigs/modules/— modular shared config fragments (Niri/Zsh/Ghostty)configs/system/— system-level assets used by steps/toolspackages/base.packages,aur.packages,cachyos.packages, andchaotic.packages— shared package manifestspackages/gaming.packages— optional full gaming profile used only byniriland-setup-gamingpackages/vscodium.extensions— VSCodium extension list
After 50-setup-tools, helper scripts are copied to ~/.local/bin/niriland.
Main tools:
niriland-pkg— package install, remove, upgrade, and cleanup helperniriland-update— repo update plus selected maintenance replayniriland-sync-base-config— replay selected tracked files into$HOME
Optional follow-up helpers:
- AI
- gaming (
niriland-setup-gaming; explicit per-machine opt-in) - WoW
- Helix
- Helium browser compatibility, including Widevine
- certificates
- fingerprint auth
- virtualization
The root-level cleanup script inventories data left by applications and
development runtimes removed from the shared baseline. It also reports
rebuildable Pacman, uv, npm (including temporary npx installs), AUR-helper,
and Nix caches. Plan mode is read-only:
./cleanup planRun ./cleanup apply only after the common-baseline package migration has
completed. Application data, Flutter/Android data, and caches use separate
typed confirmations. Docker pruning is excluded unless --docker is passed,
and Docker volumes, projects, documents, gaming data, Wine prefixes, and
snapshots are never selected.