Files
dotfiles/config/modules/niri/niri.nix
2026-03-18 11:04:59 +00:00

153 lines
4.6 KiB
Nix

{
modules,
inputs,
lib,
den,
...
}:
{
flake-file.inputs = {
niri-flake = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
};
modules.niri = {
nixos =
{ pkgs, ... }:
{
imports = [ inputs.niri-flake.nixosModules.niri ];
programs.niri.enable = true;
programs.niri.package = pkgs.niri-unstable;
nixpkgs.overlays = [ inputs.niri-flake.overlays.niri ];
};
homeManager =
{ pkgs, ... }:
{
# The nixos module already imports the hm module
# imports = [ inputs.niri-flake.homeModules.niri ];
gtk.enable = lib.mkForce false;
programs = {
niri = {
# enable = true;
# package = pkgs.niri-unstable;
settings = {
input = {
keyboard = {
xkb = {
layout = "gb";
};
numlock = true;
};
};
cursor = {
size = 16;
};
outputs = {
DP-3 = {
# Philips Consumer Electronics Company PHL 272E1GZ UK02101011104
mode = {
width = 1920;
height = 1080;
refresh = 144.0;
};
focus-at-startup = true;
variable-refresh-rate = false;
};
HDMI-A-1 = {
position = {
x = -1920;
y = 0;
};
scale = 1;
};
};
binds = {
# Navigation
"Mod+Shift+WheelScrollDown" = {
hotkey-overlay.title = "Workspace Down";
cooldown-ms = 150;
action.focus-workspace-down = [ ];
};
"Mod+Shift+WheelScrollUp" = {
hotkey-overlay.title = "Workspace Up";
cooldown-ms = 150;
action.focus-workspace-up = [ ];
};
"Mod+WheelScrollUp" = {
hotkey-overlay.title = "Workspace Left";
action.focus-column-right = [ ];
};
"Mod+WheelScrollDown" = {
hotkey-overlay.title = "Workspace Right";
action.focus-column-left = [ ];
};
"Super+Tab" = {
hotkey-overlay.title = "Overview";
action.toggle-overview = [ ];
};
# --
# Utility
"Super+S" = {
action.screenshot = [ ];
};
"Super+C" = {
action.close-window = [ ];
};
"Super+L" = {
action.spawn = "wlogout";
};
# Program Spawning
"Mod+E".action.spawn = "helium";
"Mod+R".action.spawn =
let
config = pkgs.writeTextFile {
name = "config";
text = ''
width = 100%
height = 100%
border-width = 0
outline-width = 0
padding-left = 35%
padding-top = 35%
result-spacing = 25
num-results = 5
font = monospace
background-color = #000A
'';
};
script = pkgs.writeShellScript "mreow" ''
exec $(tofi-drun -c ${config})
'';
in
"${script}";
"Mod+Q".action.spawn = "kitty";
# --
};
window-rules = [
{
matches = [ ];
geometry-corner-radius = {
bottom-left = 3.0;
bottom-right = 3.0;
top-left = 3.0;
top-right = 3.0;
};
clip-to-geometry = true;
draw-border-with-background = false;
focus-ring.width = 2;
}
];
xwayland-satellite = {
enable = true;
path = lib.getExe pkgs.xwayland-satellite;
};
};
};
};
};
};
}