From e9f270f1f03ad98b42677ad5573822deffa21663 Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Sun, 23 Jul 2023 00:57:23 +0300 Subject: nixos/hyprland: apply config options to package --- nixos/modules/programs/hyprland.nix | 45 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 23 deletions(-) (limited to 'nixos/modules/programs') diff --git a/nixos/modules/programs/hyprland.nix b/nixos/modules/programs/hyprland.nix index 92b8e992e6485..d79680f63f169 100644 --- a/nixos/modules/programs/hyprland.nix +++ b/nixos/modules/programs/hyprland.nix @@ -6,10 +6,10 @@ with lib; let cfg = config.programs.hyprland; - defaultHyprlandPackage = pkgs.hyprland.override { - enableXWayland = cfg.xwayland.enable; - hidpiXWayland = cfg.xwayland.hidpi; - nvidiaPatches = cfg.nvidiaPatches; + finalPortalPackage = cfg.portalPackage.override { + hyprland-share-picker = pkgs.hyprland-share-picker.override { + hyprland = cfg.finalPackage; + }; }; in { @@ -25,24 +25,25 @@ in ''; }; - package = mkOption { - type = types.path; - default = defaultHyprlandPackage; - defaultText = literalExpression '' - pkgs.hyprland.override { - enableXWayland = config.programs.hyprland.xwayland.enable; - hidpiXWayland = config.programs.hyprland.xwayland.hidpi; - nvidiaPatches = config.programs.hyprland.nvidiaPatches; - } - ''; - example = literalExpression ".packages..default"; + package = mkPackageOptionMD pkgs "hyprland" { }; + + finalPackage = mkOption { + type = types.package; + readOnly = true; + default = cfg.package.override { + enableXWayland = cfg.xwayland.enable; + hidpiXWayland = cfg.xwayland.hidpi; + nvidiaPatches = cfg.nvidiaPatches; + }; + defaultText = literalExpression + "`wayland.windowManager.hyprland.package` with applied configuration"; description = mdDoc '' - The Hyprland package to use. - Setting this option will make {option}`programs.hyprland.xwayland` and - {option}`programs.hyprland.nvidiaPatches` not work. + The Hyprland package after applying configuration. ''; }; + portalPackage = mkPackageOptionMD pkgs "xdg-desktop-portal-hyprland" { }; + xwayland = { enable = mkEnableOption (mdDoc "XWayland") // { default = true; }; hidpi = mkEnableOption null // { @@ -57,7 +58,7 @@ in }; config = mkIf cfg.enable { - environment.systemPackages = [ cfg.package ]; + environment.systemPackages = [ cfg.finalPackage ]; fonts.enableDefaultFonts = mkDefault true; hardware.opengl.enable = mkDefault true; @@ -69,13 +70,11 @@ in security.polkit.enable = true; - services.xserver.displayManager.sessionPackages = [ cfg.package ]; + services.xserver.displayManager.sessionPackages = [ cfg.finalPackage ]; xdg.portal = { enable = mkDefault true; - extraPortals = [ - pkgs.xdg-desktop-portal-hyprland - ]; + extraPortals = [ finalPortalPackage ]; }; }; } -- cgit 1.4.1