# finals NixOS rice built on **Niri** (Wayland compositor). Minimal boilerplate — extend as needed. ## Stack | Component | Choice | |-----------|--------| | Compositor | [Niri](https://github.com/YaLTeR/niri) (Wayland) | | Terminal | Alacritty | | Launcher | Fuzzel | | Notifications | Dunst | | Widgets | [Eww](https://github.com/elkowar/eww) (desktop clock) | | Lock Screen | Swaylock + Swayidle | | Theme Engine | [Stylix](https://github.com/danth/stylix) | ## Features - **Custom GLSL window open animation** (`arc.frag` shader from schrottkatze) - **Desktop clock widget** — big clock overlay, top center on wallpaper via Eww - **Vim-style keybindings** (hjkl navigation in Niri) ## Structure ``` . ├── default.nix # Entry point — imports system + home ├── system.nix # System-level config (Niri, Pipewire, Stylix, fonts) ├── home.nix # Home Manager config (packages, GPG agent) ├── terminal.nix # Alacritty config ├── notifications.nix # Dunst config ├── fuzzel.nix # Launcher config ├── eww.nix # Eww widget engine ├── niri.nix # Niri compositor config (KDL generation) ├── stylix.nix # Theme overrides ├── swayidle.nix # Lock screen integration ├── eww/ │ └── configDir/ │ ├── eww.yuck # Clock widget definition │ └── eww.css # Clock styling └── niri/ ├── shaders/ │ └── arc.frag # Window open animation shader └── kdl/ # Niri config modules ├── binds.kdl # Keybindings ├── style.kdl # Window styling └── input.kdl # Keyboard/mouse/touchpad ``` ## Key Bindings | Bind | Action | |------|--------| | `Mod+Return` | Alacritty | | `Mod+D` | Fuzzel launcher | | `Mod+N` | Firefox | | `Mod+hjkl` | Focus window (vim dirs) | | `Mod+Shift+hjkl` | Move window | | `Mod+1-5` | Switch workspace | | `Mod+Ctrl+1-5` | Move to workspace | | `Mod+F` | Maximize column | | `Mod+Ctrl+F` | Fullscreen | | `Mod+Space` | Overview | ## Not Yet Included - Browser module - Status bar - Per-app window rules - Screen capture privacy rules