nichts/modules/wms/wayland/hyprland/module.nix

73 lines
1.6 KiB
Nix

{
config,
pkgs,
lib,
...
}: let
cfg = config.modules.desktops.hyprland;
# inherit (inputs.hyprsplit.packages.${pkgs.system}) hyprsplit;
inherit (lib.modules) mkIf mkDefault;
inherit (lib.options) mkOption;
inherit (lib.types) bool enum package;
in {
imports = [
./binds.nix
./decorations.nix
./exec.nix
./settings.nix
./workspaces.nix
./nixos-module.nix
];
# we disable the default hyprland module
disabledModules = ["programs/hyprland.nix"];
options.modules.desktops.hyprland = {
enable = mkOption {
type = bool;
default = false;
description = ''
Whether to enable Hyprland wayland compositor.
'';
};
package = mkOption {
type = package;
default = pkgs.hyprland;
description = ''
The Hyprland package to be used.
'';
};
portalPackage = mkOption {
type = package;
default = pkgs.xdg-desktop-portal-hyprland;
description = "The hyprland portal package";
};
};
config = mkIf cfg.enable {
programs.hyprland = {
enable = true;
xwayland.enable = true;
package = pkgs.hyprland;
portalPackage = pkgs.xdg-desktop-portal-hyprland;
plugins = [
pkgs.hyprlandPlugins.hyprsplit
];
withUWSM = true;
};
# xdg Portal
xdg.portal = {
enable = true;
configPackages = mkDefault [
pkgs.xdg-desktop-portal-hyprland
];
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-hyprland
];
config = {
common.default = ["gtk" "hyprland"];
};
};
};
}