nix/graphical/wm.nix
2025-08-12 15:47:26 +10:00

93 lines
1.8 KiB
Nix

{
pkgs,
lib,
mainUser,
inputs,
config,
...
}:
let
inherit (config) rice;
in
{
imports = [
inputs.niri.nixosModules.niri
inputs.niri-tag.nixosModules.niri-tag
];
hm.programs.niri.settings = {
input = {
warp-mouse-to-focus.enable = true;
};
cursor = {
hide-after-inactive-ms = 5000;
hide-when-typing = true;
size = 16;
theme = rice.cursor.name;
};
layout = {
always-center-single-column = true;
gaps = config.rice.borders.gaps;
default-column-width.proportion = 0.5;
preset-column-widths = map (p: { proportion = p; }) [
(2.0 / 3.0)
0.5
(1.0 / 3.0)
];
focus-ring =
let
pal = rice.palette.hex;
in
{
active = {
color = pal.bright.yellow;
};
inactive = {
color = pal.normal.black;
};
};
};
prefer-no-csd = true;
hotkey-overlay.skip-at-startup = true;
window-rules =
let
v = 10.0;
in
[
{
geometry-corner-radius = {
bottom-left = v;
bottom-right = 0.0;
top-left = 0.0;
top-right = v;
};
clip-to-geometry = true;
}
];
xwayland-satellite = {
enable = true;
path = lib.getExe inputs.niri.packages.${pkgs.system}.xwayland-satellite-unstable;
};
};
services.greetd = {
enable = true;
restart = false;
settings =
let
session = {
command = "niri-session";
user = "${mainUser}";
};
in
{
default_session = session;
initial_session = session;
};
};
programs.niri = {
enable = true;
package = inputs.niri.packages.${pkgs.system}.niri-unstable;
};
services.niri-tag.enable = true;
}