
niri-flake配置入門programs.niri.settings類型化選項樹徹底告別KDL手寫配置【免費下載鏈接】niri-flakeNix-native configuration for niri項目地址: https://gitcode.com/gh_mirrors/ni/niri-flakeniri-flake是為滾動平鋪式 Wayland 合成器niri提供的 Nix 原生配置方案它把 niri 的 KDL 配置文件封裝成programs.niri.settings類型化選項樹讓你用 Nix 屬性集完成全部配置并在構建期自動通過niri validate校驗——拼錯一個參數名系統構建會立刻報錯而不是等你開機后才發現配置失效。本文面向新手帶你三步裝好 niri并用類型化選項管理鍵位、工作區和窗口規則。 它能為 niri 配置解決什么問題手寫config.kdl的三大痛點niri-flake 全部覆蓋手寫 KDL 的痛點niri-flake 的解決方案參數拼錯無提示開機才報錯類型化選項樹構建期類型檢查配置與 niri 版本不同步構建期用niri validate按當前版本校驗改配置只能重啟驗證nix rebuild即可驗證失敗則回滾核心能力一覽NixOS / home-manager 模塊一行enable true;裝好 niri 及全部依賴polkit、GNOME keyring、xdg portal 等programs.niri.settings類型化選項樹全部選項有類型、有默認值、有文檔雙版本包niri-stable最新穩定標簽與niri-unstable開發分支最新提交并附帶二進制緩存Stylix 集成邊框顏色、光標主題隨主題聯動 三步安裝從克隆到桌面第一步獲取倉庫并添加 flake 輸入git clone https://gitcode.com/gh_mirrors/ni/niri-flake在你的 NixOS 配置中聲明輸入參考 flake.nix 查看其完整的 inputs 與 outputs 定義{ inputs.niri-flake.url github:sodiboo/niri-flake; }第二步啟用 NixOS 模塊并配置{ inputs, ... }: { imports [ inputs.niri-flake.nixosModules.niri ]; nixpkgs.overlays [ inputs.niri-flake.overlays.niri ]; programs.niri.enable true; }該模塊會自動安裝合成器、xdg-desktop-portal-gnome截屏共享所需、啟用 polkit 與swaylock的 PAM 條目若你裝了 home-manager配置模塊會自動導入無需額外操作。第三步重建系統sudo nixos-rebuild switch構建成功即表示配置通過了niri validate校驗。不想等本地編譯的話模塊默認啟用了作者的 Cachix 二進制緩存可用niri-flake.cache.enable false;關閉。?? programs.niri.settings 類型化選項上手官方文檔明確建議programs.niri.settings是配置 niri 的首選方式。選項樹源碼位于 settings.nix每個選項都帶類型和默認值。示例 1屏幕縮放最簡入門{ programs.niri.settings { outputs.eDP-1.scale 2.0; }; }對應的 KDLoutput eDP-1 { scale 2.0; }由 flake 自動生成你無需再碰。示例 2鍵位綁定binds以「按鍵」為鍵名action是類型化的動作選項。單參數動作可直接寫值{ programs.niri.settings.binds { ModD.action.spawn fuzzel; Mod1.action.focus-workspace 1; }; }多參數用列表、帶命名屬性用屬性集{ programs.niri.settings.binds.XF86AudioRaiseVolume.action.spawn [ wpctl set-volume DEFAULT_AUDIO_SINK 0.1 ]; }每個鍵位還支持repeat按住連發、cooldown-ms冷卻毫秒數、allow-when-locked鎖屏下放行等子選項編輯器可全部自動補全。選項樹還有哪些常用分支workspaces.name預定義工作區可指定open-on-output固定到某塊屏幕window-rules/layer-rules按應用標題、app-id 匹配控制窗口位置、置頂、透明度、遮擋錄屏等animations對每個事件設置 easing 或 spring 動畫二選一的 variant 類型input.mouse/input.keyboard/input.touchpad指針加速、滾動手法、鍵盤布局等spawn-at-startup開機自啟應用列表完整選項參考含每個選項的類型、默認值與說明見項目內自動生成的 docs.md它隨 niri 版本更新自動重新生成始終與安裝版本同步。? 構建期校驗是如何做到的流程在 flake.nix 中你的 Nix 配置先被求值成一棵 KDL 文檔序列化邏輯在 kdl.nix隨后由niri validate -c config用你實際安裝的那個 niri 包做語法與語義校驗校驗不通過則整個系統構建失敗。也就是說選項拼錯 → Nix 求值階段直接報「未知選項」選項類型錯比如 scale 寫了字符串→ 類型檢查報錯語義上 niri 不認的寫法 →niri validate攔截三層防線全部發生在sudo nixos-rebuild期間桌面永遠只收到合法配置。 進階何時才需要 programs.niri.configprograms.niri.config允許直接提供原始配置可傳 KDL 字符串也可傳niri.lib.kdl的結構化節點。兩個注意點一旦設置config它會完全覆蓋programs.niri.settings生成的所有內容想接入 Stylix 主題homeModules.stylix會寫邊框顏色與光標主題時不要設置config否則主題選項無處生效調試時還可以讀取programs.niri.finalConfig——它是最終落盤配置文件的字符串形式方便核對某個選項的生成結果。? 新手常見問題問nixpkgs 自帶的 niri 包能用這個選項樹嗎類型化選項只保證與 flake 提供的niri-stable/niri-unstable同步若把programs.niri.package設為pkgs.niri建議改用programs.niri.config它本身版本無關且仍有構建期校驗。問想用 niri 開發分支怎么辦{pkgs, ...}: { nixpkgs.overlays [ inputs.niri-flake.overlays.niri ]; programs.niri.package pkgs.niri-unstable; }問裝完還缺什么建議再用 home-manager 裝上通知中心mako、狀態欄waybar記得設mainBar.layer top和啟動器fuzzel即成完整桌面。小結niri-flake 把 niri 配置從「手寫 KDL 字符串」升級為「類型化 Nix 選項」programs.niri.settings提供補全與類型檢查構建期niri validate兜底語義校驗再配合niri-stable/niri-unstable雙包與二進制緩存——這是目前用 Nix 管理 niri 配置最完整、最省心的方案。主要資料來源README.md、docs.md、settings.nix、flake.nix、kdl.nix【免費下載鏈接】niri-flakeNix-native configuration for niri項目地址: https://gitcode.com/gh_mirrors/ni/niri-flake創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考