157 lines
6.1 KiB
Nix
157 lines
6.1 KiB
Nix
{ self, inputs, ... }: {
|
|
flake.modules.nixos.niri = { pkgs, lib, ... }:
|
|
let
|
|
niriPkg = self.packages.${pkgs.stdenv.hostPlatform.system}.myNiri;
|
|
in
|
|
{
|
|
programs.niri = {
|
|
enable = true;
|
|
package = niriPkg;
|
|
};
|
|
systemd.user.services.niri.enableDefaultPath = false;
|
|
};
|
|
|
|
perSystem = { pkgs, lib, self', ... }:
|
|
let
|
|
nixGLPackage = inputs.nixgl.packages.${pkgs.stdenv.hostPlatform.system}.nixGLIntel;
|
|
noctaliaPkg = self'.packages.myNoctaliaNixGL;
|
|
terminalPkg = pkgs.ghostty;
|
|
myNiriUnwrapped = inputs.wrapper-modules.wrappers.niri.wrap {
|
|
inherit pkgs;
|
|
settings = {
|
|
spawn-at-startup = [
|
|
(lib.getExe noctaliaPkg)
|
|
];
|
|
|
|
xwayland-satellite.path = lib.getExe pkgs.xwayland-satellite;
|
|
|
|
input.keyboard.xkb.layout = "us,ua";
|
|
|
|
layout.gaps = 5;
|
|
|
|
binds = {
|
|
"Mod+Return".spawn-sh = lib.getExe terminalPkg;
|
|
# "Mod+Ctrl+Return".spawn-sh = "${lib.getExe noctaliaPkg} ipc call launcher toggle";
|
|
"Mod+Space".spawn-sh = "${lib.getExe noctaliaPkg} ipc call launcher toggle";
|
|
"Mod+B".spawn-sh = "${lib.getExe pkgs.brave}";
|
|
"Mod+E".spawn-sh = "xdg-open .";
|
|
"Mod+Alt+L".spawn-sh = "loginctl lock-session";
|
|
|
|
"Alt+F4".spawn-sh = "${lib.getExe' pkgs.coreutils "true"}";
|
|
"Mod+Shift+Q".close-window = { };
|
|
"Mod+S".spawn-sh = "${lib.getExe noctaliaPkg} ipc call launcher toggle";
|
|
|
|
"Mod+1".focus-workspace = 1;
|
|
"Mod+2".focus-workspace = 2;
|
|
"Mod+3".focus-workspace = 3;
|
|
"Mod+4".focus-workspace = 4;
|
|
"Mod+5".focus-workspace = 5;
|
|
"Mod+6".focus-workspace = 6;
|
|
"Mod+7".focus-workspace = 7;
|
|
"Mod+8".focus-workspace = 8;
|
|
"Mod+9".focus-workspace = 9;
|
|
|
|
"Mod+Tab".focus-workspace-previous = { };
|
|
|
|
# "Mod+WheelScrollDown".focus-workspace-down = { };
|
|
# "Mod+WheelScrollUp".focus-workspace-up = { };
|
|
|
|
# "Mod+Up".focus-window-up = { };
|
|
# "Mod+Down".focus-window-down = { };
|
|
"Mod+Up".focus-workspace-up = { };
|
|
"Mod+Down".focus-workspace-down = { };
|
|
"Mod+Left".focus-column-left = { };
|
|
"Mod+Right".focus-column-right = { };
|
|
"Mod+K".focus-window-up = { };
|
|
"Mod+J".focus-window-down = { };
|
|
"Mod+H".focus-column-left = { };
|
|
"Mod+L".focus-column-right = { };
|
|
"Mod+Home".focus-column-first = { };
|
|
"Mod+End".focus-column-last = { };
|
|
|
|
# "Mod+Shift+Left".focus-monitor-left = { };
|
|
# "Mod+Shift+Right".focus-monitor-right = { };
|
|
# "Mod+Shift+Up".focus-monitor-up = { };
|
|
# "Mod+Shift+Down".focus-monitor-down = { };
|
|
|
|
"Mod+Shift+1".move-column-to-workspace = 1;
|
|
"Mod+Shift+2".move-column-to-workspace = 2;
|
|
"Mod+Shift+3".move-column-to-workspace = 3;
|
|
"Mod+Shift+4".move-column-to-workspace = 4;
|
|
"Mod+Shift+5".move-column-to-workspace = 5;
|
|
"Mod+Shift+6".move-column-to-workspace = 6;
|
|
"Mod+Shift+7".move-column-to-workspace = 7;
|
|
"Mod+Shift+8".move-column-to-workspace = 8;
|
|
"Mod+Shift+9".move-column-to-workspace = 9;
|
|
|
|
"Mod+Ctrl+Up".move-window-up = { };
|
|
"Mod+Ctrl+Down".move-window-down = { };
|
|
"Mod+Ctrl+Left".move-column-left = { };
|
|
"Mod+Ctrl+Right".move-column-right = { };
|
|
"Mod+Ctrl+K".move-window-up = { };
|
|
"Mod+Ctrl+J".move-window-down = { };
|
|
"Mod+Ctrl+H".move-column-left = { };
|
|
"Mod+Ctrl+L".move-column-right = { };
|
|
"Mod+Ctrl+Home".move-column-to-first = { };
|
|
"Mod+Ctrl+End".move-column-to-last = { };
|
|
|
|
"Mod+Shift+Ctrl+Left".move-column-to-monitor-left = { };
|
|
"Mod+Shift+Ctrl+Right".move-column-to-monitor-right = { };
|
|
"Mod+Shift+Ctrl+Up".move-column-to-monitor-up = { };
|
|
"Mod+Shift+Ctrl+Down".move-column-to-monitor-down = { };
|
|
|
|
"Mod+Ctrl+F".expand-column-to-available-width = { };
|
|
"Mod+C".center-column = { };
|
|
"Mod+Ctrl+C".center-visible-columns = { };
|
|
"Mod+Minus".set-column-width = "-10%";
|
|
"Mod+Equal".set-column-width = "+10%";
|
|
"Mod+Shift+Minus".set-window-height = "-10%";
|
|
"Mod+Shift+Equal".set-window-height = "+10%";
|
|
|
|
"Mod+T".toggle-window-floating = { };
|
|
"Mod+F".fullscreen-window = { };
|
|
"Mod+W".toggle-column-tabbed-display = { };
|
|
"Mod+O".toggle-overview = { };
|
|
|
|
"Ctrl+Shift+1".screenshot = { };
|
|
"Ctrl+Shift+2".screenshot-screen = { };
|
|
"Ctrl+Shift+3".screenshot-window = { };
|
|
|
|
"Mod+Shift+Slash".show-hotkey-overlay = { };
|
|
"Mod+Escape".toggle-keyboard-shortcuts-inhibit = { };
|
|
"Mod+Shift+P".power-off-monitors = { };
|
|
"Ctrl+Alt+Delete".quit = { };
|
|
|
|
"Mod+WheelScrollRight".focus-column-right = { };
|
|
"Mod+WheelScrollLeft".focus-column-left = { };
|
|
"Mod+Ctrl+WheelScrollRight".move-column-right = { };
|
|
"Mod+Ctrl+WheelScrollLeft".move-column-left = { };
|
|
"Mod+Shift+WheelScrollDown".focus-column-right = { };
|
|
"Mod+Shift+WheelScrollUp".focus-column-left = { };
|
|
# "Mod+Ctrl+Shift+WheelScrollDown".move-column-right = { };
|
|
# "Mod+Ctrl+Shift+WheelScrollUp".move-column-left = { };
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
packages.myNiri = myNiriUnwrapped;
|
|
|
|
packages.myNiriNixGL = pkgs.symlinkJoin {
|
|
name = "my-niri-nixgl";
|
|
paths = [ myNiriUnwrapped ];
|
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
|
meta.mainProgram = "niri";
|
|
postBuild = ''
|
|
for exe in "$out"/bin/*; do
|
|
if [[ -f "$exe" ]]; then
|
|
base="$(basename "$exe")"
|
|
mv "$exe" "$out/bin/.''${base}-real"
|
|
makeWrapper ${lib.getExe nixGLPackage} "$exe" \
|
|
--add-flags "$out/bin/.''${base}-real"
|
|
fi
|
|
done
|
|
'';
|
|
};
|
|
};
|
|
}
|