Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ 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. JetBrains Toolbox remains installed but does not start automatically.
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

Expand All @@ -38,14 +38,14 @@ Post-install note: after your first successful login into Niri, reboot one more

## What It Does

After you install CachyOS by following [CACHYOS_INSTALL.md](CACHYOS_INSTALL.md), Niriland installs the extra packages, configs, and tools used by this setup. It deploys Niri, DMS, Ghostty, and Zsh configs; sets up theming; installs Brave Origin and Zen Browser; configures dev tools like Docker, mise, Neovim/LazyVim, VSCodium, and Zed; and installs optional helper scripts for AI, gaming, VMs, fingerprint auth, and more.
After you install CachyOS by following [CACHYOS_INSTALL.md](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](docs/TROUBLESHOOTING.md).
For one-time migration steps on older setups, see [docs/MIGRATIONS.md](docs/MIGRATIONS.md).
For repo-local unfinished work, see [docs/ROADMAP.md](docs/ROADMAP.md).
For the expected fresh-install baseline for the default Niriland flow, see [CACHYOS_INSTALL.md](CACHYOS_INSTALL.md).

Current gaming recommendation in this setup: use `Lutris` as the unified launcher for `Steam` and `Battle.net`, and use `Heroic` for `Epic Games`.
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

Expand All @@ -69,6 +69,8 @@ Current gaming recommendation in this setup: use `Lutris` as the unified launche
- 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:
Expand Down Expand Up @@ -118,8 +120,9 @@ Current update behavior:
- requires a clean git worktree
- runs `git pull --ff-only`
- runs a full package upgrade through `niriland-pkg upgrade`
- replays selected install steps
- 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

Expand All @@ -131,7 +134,8 @@ Current update behavior:
- `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/*.packages` — package manifests
- `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
Expand All @@ -147,7 +151,7 @@ Main tools:
Optional follow-up helpers:

- AI
- gaming
- gaming (`niriland-setup-gaming`; explicit per-machine opt-in)
- WoW
- Helix
- Helium browser compatibility, including Widevine
Expand Down
4 changes: 2 additions & 2 deletions configs/base/.config/DankMaterialShell/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@
"matugenTemplateQt6ct": true,
"matugenTemplateFirefox": false,
"matugenTemplatePywalfox": false,
"matugenTemplateZenBrowser": true,
"matugenTemplateZenBrowser": false,
"matugenTemplateVesktop": true,
"matugenTemplateEquibop": false,
"matugenTemplateGhostty": true,
Expand Down Expand Up @@ -573,4 +573,4 @@
"launcherPluginVisibility": {},
"launcherPluginOrder": [],
"configVersion": 5
}
}
16 changes: 0 additions & 16 deletions configs/base/.config/autostart/jetbrains-toolbox.desktop

This file was deleted.

2 changes: 1 addition & 1 deletion configs/base/.config/environment.d/90-dms.conf
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ XDG_SESSION_DESKTOP=niri
TERMINAL=ghostty
QT_QPA_PLATFORMTHEME=qt6ct
EDITOR=nvim
PATH=$HOME/.cargo/bin:$HOME/.local/share/JetBrains/Toolbox/scripts:$HOME/.local/bin:$HOME/.local/bin/niriland:$HOME/.local/bin/scripts:$HOME/.opencode/bin:$HOME/.lmstudio/bin:$HOME/.dotnet/tools:$PATH
PATH=$HOME/.cargo/bin:$HOME/.local/share/mise/shims:$HOME/.local/bin:$HOME/.local/bin/niriland:$PATH
GTK_IM_MODULE=simple
28 changes: 11 additions & 17 deletions configs/base/.config/mimeapps.list
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ image/svg+xml=org.gnome.Loupe.desktop
image/avif=org.gnome.Loupe.desktop
image/heic=org.gnome.Loupe.desktop

# Video (Showtime)
video/mp4=org.gnome.Showtime.desktop
video/x-matroska=org.gnome.Showtime.desktop
video/webm=org.gnome.Showtime.desktop
video/x-msvideo=org.gnome.Showtime.desktop
video/quicktime=org.gnome.Showtime.desktop
video/x-flv=org.gnome.Showtime.desktop
video/ogg=org.gnome.Showtime.desktop
video/3gpp=org.gnome.Showtime.desktop
# Video (mpv)
video/mp4=mpv.desktop
video/x-matroska=mpv.desktop
video/webm=mpv.desktop
video/x-msvideo=mpv.desktop
video/quicktime=mpv.desktop
video/x-flv=mpv.desktop
video/ogg=mpv.desktop
video/3gpp=mpv.desktop

# Audio (mpv)
audio/mpeg=mpv.desktop
Expand All @@ -41,14 +41,8 @@ application/oxps=org.pwmt.zathura-pdf-mupdf.desktop
application/epub+zip=org.pwmt.zathura-pdf-mupdf.desktop
application/x-fictionbook=org.pwmt.zathura-pdf-mupdf.desktop
application/x-mobipocket-ebook=org.pwmt.zathura-pdf-mupdf.desktop
image/vnd.djvu=org.pwmt.zathura-djvu.desktop
application/x-cb7=org.pwmt.zathura-cb.desktop
application/x-cbr=org.pwmt.zathura-cb.desktop
application/x-cbt=org.pwmt.zathura-cb.desktop
application/x-cbz=org.pwmt.zathura-cb.desktop

# Plaintext (Gnome Text Editor)
text/plain=org.gnome.TextEditor.desktop
# Plaintext (Zed)
text/plain=dev.zed.Zed.desktop

# Code / Text (VSCodium)
text/x-csrc=vscodium-wayland.desktop
Expand Down
14 changes: 8 additions & 6 deletions configs/base/.config/mise/config.toml
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
[tools]
bun = "1.3"
dotnet = "10"
go = "1.26"
dotnet = "9"
go = "1.25"
java = "corretto-25"
node = "24"
rust = "stable"
terraform = "latest"
uv = "0.11.8"
zig = "0.15"
uv = "latest"
"npm:@anthropic-ai/claude-code" = "latest"
"npm:@openai/codex" = "latest"
Comment thread
Furyfree marked this conversation as resolved.
"npm:@xai-official/grok" = "latest"
"npm:markdownlint-cli" = "latest"
"go:golang.org/x/tools/gopls" = "latest"

[settings]
python.uv_venv_auto = true
Expand Down
9 changes: 3 additions & 6 deletions configs/base/.config/topgrade.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,10 @@ pre_sudo = true
# sudo_command = "sudo"

# Disable specific steps - same options as the command line flag
# Bun itself is managed by mise; keep bun_packages enabled for global packages.
# Poetry is not part of the baseline mise toolset; a stale mise shim makes Topgrade probe it noisily.
# The built-in node/npm step follows the active mise Node; system npm globals are updated explicitly below.
# Poetry is not part of the baseline; disable probes from any stale shim.
# The Node step would duplicate updates already owned by the active mise tools.
# Docker/Podman images are managed manually or outside this workstation.
# JetBrains Toolbox manages IDE and plugin updates itself; Topgrade's JetBrains steps are noisy and restart Toolbox.
disable = ["bun", "poetry", "node", "containers", "android_studio", "jetbrains_aqua", "jetbrains_clion", "jetbrains_datagrip", "jetbrains_dataspell", "jetbrains_gateway", "jetbrains_goland", "jetbrains_idea", "jetbrains_mps", "jetbrains_phpstorm", "jetbrains_pycharm", "jetbrains_rider", "jetbrains_rubymine", "jetbrains_rustrover", "jetbrains_toolbox", "jetbrains_webstorm"]
disable = ["poetry", "node", "containers"]

# Run these steps before all others
# first = ["chezmoi"]
Expand Down Expand Up @@ -147,7 +145,6 @@ notify_end = "on_failure"
[commands]
# "Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
# "Custom command using interactive shell (unix)" = "-i vim_upgrade"
"Codex CLI via system npm" = "sudo env PATH=/usr/bin:/bin /usr/bin/npm install --global @openai/codex@latest"


[python]
Expand Down
4 changes: 0 additions & 4 deletions configs/base/.config/zsh/.zprofile
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,5 @@ path=(
$path
)

if [[ -d "$HOME/.local/share/JetBrains/Toolbox/scripts" ]]; then
path+=("$HOME/.local/share/JetBrains/Toolbox/scripts")
fi

typeset -U path
export PATH
2 changes: 1 addition & 1 deletion configs/base/.config/zsh/.zshenv
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ if [[ -t 0 ]]; then
fi

export STARSHIP_CONFIG="$ZDOTDIR/starship.toml"
export CHROME_EXECUTABLE="${CHROME_EXECUTABLE:-/usr/bin/helium-browser}"
export CHROME_EXECUTABLE="${CHROME_EXECUTABLE:-/usr/bin/brave-origin}"

if command -v bat >/dev/null 2>&1; then
export MANPAGER="${MANPAGER:-bat -l man -p}"
Expand Down
14 changes: 0 additions & 14 deletions configs/base/.local/share/applications/jetbrains-toolbox.desktop

This file was deleted.

2 changes: 1 addition & 1 deletion configs/modules/.config/ghostty/config
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ keybind = super+control+shift+alt+arrow_right=resize_split:right,100

# Mouse scrolling speed
mouse-scroll-multiplier = 2.0
mouse-reporting = false
mouse-reporting = true

# Copy selection to PRIMARY only. Middle-click paste uses PRIMARY;
# Ctrl+Shift+C/V still use the regular clipboard.
Expand Down
6 changes: 0 additions & 6 deletions configs/modules/.config/niri/modular/binds.kdl
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,6 @@ binds {
Mod+Shift+B hotkey-overlay-title="Browser (New)" {
spawn "niriland-launch-browser";
}
Mod+Alt+X hotkey-overlay-title="Zen (New)" {
spawn "zen-browser";
}
Mod+Shift+X hotkey-overlay-title="Zen (Focus)" {
spawn "nirius" "focus-or-spawn" "--app-id" "zen" "--" "zen-browser";
}
Mod+Shift+C hotkey-overlay-title=null {
spawn "nirius" "focus-or-spawn" "--title" "Claude" "--" "niriland-launch-webapp" "https://claude.ai/new";
}
Expand Down
7 changes: 1 addition & 6 deletions configs/modules/.config/niri/modular/rules.kdl
Original file line number Diff line number Diff line change
Expand Up @@ -46,18 +46,13 @@ window-rule {
}

window-rule {
match app-id=r#"^org\.wezfurlong\.wezterm$"#
match app-id="Alacritty"
match app-id="zen"
match app-id="helium"
match app-id="com.mitchellh.ghostty"
match app-id="kitty"
draw-border-with-background false
}

window-rule {
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
match app-id=r#"helium$"# title="^Picture-in-Picture$"
match app-id=r#"brave-origin$"# title="^Picture-in-Picture$"
// match app-id="zoom"
open-floating true
}
Expand Down
2 changes: 0 additions & 2 deletions docs/KEYBINDINGS.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ These bindings are active when the Alt+Tab switcher overlay is open.
|------------|---------|-------------|
| `Mod+Alt+B` | `spawn "sh" "-lc" "nirius focus-or-spawn --app-id \"$(niriland-get-default-browser)\" -- niriland-launch-browser"` | Focus default browser or launch if not running |
| `Mod+Shift+B` | `spawn "niriland-launch-browser"` | Launch new browser window |
| `Mod+Alt+X` | `spawn "zen-browser"` | Launch new Zen Browser window |
| `Mod+Shift+X` | `spawn "nirius" "focus-or-spawn" "--app-id" "zen" "--" "zen-browser"` | Focus Zen Browser or launch if not running |
| `Mod+Shift+C` | `spawn "nirius" "focus-or-spawn" "--title" "Claude" "--" "niriland-launch-webapp" "https://claude.ai/new"` | Focus or launch Claude AI |
| `Mod+Alt+C` | `spawn "niriland-launch-webapp" "https://claude.ai/new"` | Launch new Claude AI window |
| `Mod+Shift+A` | `spawn "nirius" "focus-or-spawn" "--title" "ChatGPT" "--" "niriland-launch-webapp" "https://chatgpt.com/"` | Focus or launch ChatGPT |
Expand Down
Loading