summary refs log tree commit diff
path: root/nixos/modules/programs
diff options
context:
space:
mode:
authorMihai Fufezan <fufexan@protonmail.com>2023-07-23 00:57:23 +0300
committerMihai Fufezan <fufexan@protonmail.com>2023-07-23 01:15:59 +0300
commite9f270f1f03ad98b42677ad5573822deffa21663 (patch)
tree9563b31386b0bc8e16a4c42d45fe1f189598ecb4 /nixos/modules/programs
parent1d56444d15859eb2e1c929c375a019616af2b59f (diff)
downloadnixpkgs-e9f270f1f03ad98b42677ad5573822deffa21663.tar
nixpkgs-e9f270f1f03ad98b42677ad5573822deffa21663.tar.gz
nixpkgs-e9f270f1f03ad98b42677ad5573822deffa21663.tar.bz2
nixpkgs-e9f270f1f03ad98b42677ad5573822deffa21663.tar.lz
nixpkgs-e9f270f1f03ad98b42677ad5573822deffa21663.tar.xz
nixpkgs-e9f270f1f03ad98b42677ad5573822deffa21663.tar.zst
nixpkgs-e9f270f1f03ad98b42677ad5573822deffa21663.zip
nixos/hyprland: apply config options to package
Diffstat (limited to 'nixos/modules/programs')
-rw-r--r--nixos/modules/programs/hyprland.nix45
1 files changed, 22 insertions, 23 deletions
diff --git a/nixos/modules/programs/hyprland.nix b/nixos/modules/programs/hyprland.nix
index 92b8e992e64..d79680f63f1 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 "<Hyprland flake>.packages.<system>.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 ];
     };
   };
 }