Skip to content

Repository files navigation

Niriland

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-fde adds 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.

Quick Start

curl -fsSL https://raw.githubusercontent.com/Furyfree/niriland/main/bootstrap | bash

Or clone locally:

git clone https://github.com/Furyfree/niriland.git ~/.local/share/niriland
~/.local/share/niriland/install

Post-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.

Requirements

  • CachyOS with systemd
  • Internet access
  • sudo access
  • git installed

What It Does

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.

Who It Is For

  • For me and my own systems
  • For people who want to inspect or experiment with my setup

Who It Is Not For

  • Not for people looking for an installer that works across many Linux distributions
  • Not for existing heavily customized systems

Why It Is Structured This Way

  • 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 $HOME outside 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.

Runtime Model

  • 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.packages is 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 And Update

Install entrypoints:

curl -fsSL https://raw.githubusercontent.com/Furyfree/niriland/main/bootstrap | bash
~/.local/share/niriland/install

The 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 preparation
  • 10-19: package install and desktop setup
  • 20-39: config deploy and desktop polish
  • 40-59: shell, keyring, helper tools, editor bootstrap
  • 60-79: developer tools, editors, browser setup
  • 80-99: desktop integration and cleanup

For normal maintenance:

niriland-update

Current 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

Repository Layout

  • bootstrap — clone/update repo and run installer
  • install — installer orchestrator
  • cleanup — plan-first, staged cleanup of retired application data and rebuildable caches
  • scripts/install/lib/common — shared installer helpers
  • scripts/install/steps/ — numbered install steps
  • scripts/tools/ — helper scripts copied to ~/.local/bin/niriland
  • configs/base/ — files deployed to $HOME
  • configs/modules/ — modular shared config fragments (Niri/Zsh/Ghostty)
  • configs/system/ — system-level assets used by steps/tools
  • packages/base.packages, aur.packages, cachyos.packages, and chaotic.packages — shared package manifests
  • packages/gaming.packages — optional full gaming profile used only by niriland-setup-gaming
  • packages/vscodium.extensions — VSCodium extension list

Helper Tools

After 50-setup-tools, helper scripts are copied to ~/.local/bin/niriland.

Main tools:

  • niriland-pkg — package install, remove, upgrade, and cleanup helper
  • niriland-update — repo update plus selected maintenance replay
  • niriland-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

Post-baseline Cleanup

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 plan

Run ./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.

License

GNU Affero General Public License v3

About

Personal Linux dotfiles and system config for a modular Niri-based Wayland setup

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages