diff options
author | Jacob Birkett <[email protected]> | 2023-08-12 07:22:37 -0500 |
---|---|---|
committer | GitHub <[email protected]> | 2023-08-12 15:22:37 +0300 |
commit | d20837bef8a41d6bf1732b0e8968b7f2feb9a93f (patch) | |
tree | 18c41efeead244cf5ba778c4a80862da714b6e71 /nix | |
parent | 3f7f4207a6dd8bd217c01514ea40e9e4b9b7874a (diff) | |
download | Hyprland-d20837bef8a41d6bf1732b0e8968b7f2feb9a93f.tar.gz Hyprland-d20837bef8a41d6bf1732b0e8968b7f2feb9a93f.zip |
Nix: corrections for overlays, overrideable systems (#2929)
* nix: overlays: move waybar-hyprland to own overlay
* flake: use legacyPackages for formatter
Run `nix fmt` for all files.
* flake: move default overlay to nix/overlays.nix
* nix: lib: remove lib
* nix: overlays: extras: explicitly include xdph overlays
* nix: use interpolation for versions
* nix: overlays: include deps with hyprland-packages
* flake: make systems overrideable
* flake: packages: inherit from overlaid pkgsFor
Diffstat (limited to 'nix')
-rw-r--r-- | nix/default.nix | 2 | ||||
-rw-r--r-- | nix/hm-module.nix | 26 | ||||
-rw-r--r-- | nix/lib.nix | 8 | ||||
-rw-r--r-- | nix/overlays.nix | 107 |
4 files changed, 76 insertions, 67 deletions
diff --git a/nix/default.nix b/nix/default.nix index 8c3c6364..3fb3545b 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -123,7 +123,7 @@ in ln -s ${wlroots}/include/wlr $dev/include/hyprland/wlroots ${lib.optionalString wrapRuntimeDeps '' wrapProgram $out/bin/Hyprland \ - --suffix PATH : ${lib.makeBinPath [ binutils pciutils ]} + --suffix PATH : ${lib.makeBinPath [binutils pciutils]} ''} ''; diff --git a/nix/hm-module.nix b/nix/hm-module.nix index 133c0ef6..705ddf86 100644 --- a/nix/hm-module.nix +++ b/nix/hm-module.nix @@ -119,10 +119,14 @@ in { config = lib.mkIf cfg.enable { warnings = - if (cfg.systemdIntegration || cfg.plugins != []) && cfg.extraConfig == null then - [ ''You have enabled hyprland.systemdIntegration or listed plugins in hyprland.plugins. - Your Hyprland config will be linked by home manager. - Set hyprland.extraConfig or unset hyprland.systemdIntegration and hyprland.plugins to remove this warning.'' ] + if (cfg.systemdIntegration || cfg.plugins != []) && cfg.extraConfig == null + then [ + '' + You have enabled hyprland.systemdIntegration or listed plugins in hyprland.plugins. + Your Hyprland config will be linked by home manager. + Set hyprland.extraConfig or unset hyprland.systemdIntegration and hyprland.plugins to remove this warning. + '' + ] else []; home.packages = @@ -138,9 +142,17 @@ in { exec-once=${pkgs.dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP && systemctl --user start hyprland-session.target '') + lib.concatStrings (builtins.map (entry: let - plugin = if lib.types.package.check entry then "${entry}/lib/lib${entry.pname}.so" else entry; - in "plugin = ${plugin}\n") cfg.plugins) - + (if cfg.extraConfig != null then cfg.extraConfig else ""); + plugin = + if lib.types.package.check entry + then "${entry}/lib/lib${entry.pname}.so" + else entry; + in "plugin = ${plugin}\n") + cfg.plugins) + + ( + if cfg.extraConfig != null + then cfg.extraConfig + else "" + ); onChange = let hyprlandPackage = diff --git a/nix/lib.nix b/nix/lib.nix deleted file mode 100644 index 1a413352..00000000 --- a/nix/lib.nix +++ /dev/null @@ -1,8 +0,0 @@ -final: prev: let - lib = final; - - mkJoinedOverlays = overlays: final: prev: - lib.foldl' (attrs: overlay: attrs // (overlay final prev)) {} overlays; -in prev // { - inherit mkJoinedOverlays; -} diff --git a/nix/overlays.nix b/nix/overlays.nix index 8a61fa10..6516c755 100644 --- a/nix/overlays.nix +++ b/nix/overlays.nix @@ -10,70 +10,75 @@ (builtins.substring 4 2 longDate) (builtins.substring 6 2 longDate) ]); + + mkJoinedOverlays = overlays: final: prev: + lib.foldl' (attrs: overlay: attrs // (overlay final prev)) {} overlays; in { - # Packages for variations of Hyprland, and its dependencies. - hyprland-packages = final: prev: { - hyprland = final.callPackage ./default.nix { - version = - props.version - + "+date=" - + (mkDate (self.lastModifiedDate or "19700101")) - + "_" - + (self.shortRev or "dirty"); - wlroots = final.wlroots-hyprland; - commit = self.rev or ""; - inherit (final) udis86 hyprland-protocols; - }; + # Contains what a user is most likely to care about: + # Hyprland itself, XDPH, the Share Picker, and patched Waybar. + default = mkJoinedOverlays (with self.overlays; [ + hyprland-packages + hyprland-extras + ]); - hyprland-unwrapped = final.hyprland.override {wrapRuntimeDeps = false;}; - hyprland-debug = final.hyprland.override {debug = true;}; - hyprland-hidpi = final.hyprland.override {hidpiXWayland = true;}; - hyprland-nvidia = final.hyprland.override {nvidiaPatches = true;}; - hyprland-no-hidpi = - builtins.trace - "hyprland-no-hidpi was removed. Please use the default package." - final.hyprland; + # Packages for variations of Hyprland, dependencies included. + hyprland-packages = mkJoinedOverlays [ + # Dependencies + inputs.hyprland-protocols.overlays.default + self.overlays.wlroots-hyprland + self.overlays.udis86 + # Hyprland packages themselves + (final: prev: { + hyprland = final.callPackage ./default.nix { + version = "${props.version}+date=${mkDate (self.lastModifiedDate or "19700101")}_${self.shortRev or "dirty"}"; + wlroots = final.wlroots-hyprland; + commit = self.rev or ""; + inherit (final) udis86 hyprland-protocols; + }; - udis86 = final.callPackage ./udis86.nix {}; - }; + hyprland-unwrapped = final.hyprland.override {wrapRuntimeDeps = false;}; + hyprland-debug = final.hyprland.override {debug = true;}; + hyprland-hidpi = final.hyprland.override {hidpiXWayland = true;}; + hyprland-nvidia = final.hyprland.override {nvidiaPatches = true;}; + hyprland-no-hidpi = + builtins.trace + "hyprland-no-hidpi was removed. Please use the default package." + final.hyprland; + }) + ]; # Packages for extra software recommended for usage with Hyprland, # including forked or patched packages for compatibility. - hyprland-extras = lib.mkJoinedOverlays [ - # Include any inputs' specific overlays whose attributes should - # be re-exported by the Hyprland flake. - # - inputs.xdph.overlays.default - # Provides: - # - xdg-desktop-portal-hyprland - # - hyprland-share-picker - # - # Attributes for `hyprland-extras` defined by this flake can - # go in the oberlay below. - (final: prev: { - waybar-hyprland = prev.waybar.overrideAttrs (old: { - postPatch = '' - # use hyprctl to switch workspaces - sed -i 's/zext_workspace_handle_v1_activate(workspace_handle_);/const std::string command = "hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());/g' src/modules/wlr/workspace_manager.cpp - ''; - postFixup = '' - wrapProgram $out/bin/waybar \ - --suffix PATH : ${lib.makeBinPath [final.hyprland]} - ''; - mesonFlags = old.mesonFlags ++ ["-Dexperimental=true"]; - }); - }) + hyprland-extras = mkJoinedOverlays [ + inputs.xdph.overlays.xdg-desktop-portal-hyprland + inputs.xdph.overlays.hyprland-share-picker + self.overlays.waybar-hyprland ]; + waybar-hyprland = final: prev: { + waybar-hyprland = prev.waybar.overrideAttrs (old: { + postPatch = '' + # use hyprctl to switch workspaces + sed -i 's/zext_workspace_handle_v1_activate(workspace_handle_);/const std::string command = "hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());/g' src/modules/wlr/workspace_manager.cpp + ''; + postFixup = '' + wrapProgram $out/bin/waybar \ + --suffix PATH : ${lib.makeBinPath [final.hyprland]} + ''; + mesonFlags = old.mesonFlags ++ ["-Dexperimental=true"]; + }); + }; + + udis86 = final: prev: { + udis86 = final.callPackage ./udis86.nix {}; + }; + # Patched version of wlroots for Hyprland. # It is under a new package name so as to not conflict with # the standard version in nixpkgs. wlroots-hyprland = final: prev: { wlroots-hyprland = final.callPackage ./wlroots.nix { - version = - mkDate (inputs.wlroots.lastModifiedDate or "19700101") - + "_" - + (inputs.wlroots.shortRev or "dirty"); + version = "${mkDate (inputs.wlroots.lastModifiedDate or "19700101")}_${inputs.wlroots.shortRev or "dirty"}"; src = inputs.wlroots; libdisplay-info = prev.libdisplay-info.overrideAttrs (old: { version = "0.1.1+date=2023-03-02"; |