# 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) - **Desktop presets** — one-key workspace setup for streaming or coding ## 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 ├── scripts/ │ ├── preset-streaming.sh # Streaming desktop preset │ └── preset-coding.sh # Coding desktop preset └── 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 | | `Mod+F1` | Preset: Streaming | | `Mod+F2` | Preset: Coding | ## Desktop Presets | Preset | Main Monitor | Second Monitor | |--------|-------------|----------------| | **Streaming** (`Mod+F1`) | Steam, Discord | OBS, btop, easyeffects | | **Coding** (`Mod+F2`) | nvim, alacritty | Firefox | ## Not Yet Included - Browser module - Status bar - Per-app window rules - Screen capture privacy rules