{ 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 ]; }; # 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"]; }; }; }; }