aboutsummaryrefslogtreecommitdiffhomepage
path: root/nix
diff options
context:
space:
mode:
authorJacob Birkett <[email protected]>2023-08-12 07:22:37 -0500
committerGitHub <[email protected]>2023-08-12 15:22:37 +0300
commitd20837bef8a41d6bf1732b0e8968b7f2feb9a93f (patch)
tree18c41efeead244cf5ba778c4a80862da714b6e71 /nix
parent3f7f4207a6dd8bd217c01514ea40e9e4b9b7874a (diff)
downloadHyprland-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.nix2
-rw-r--r--nix/hm-module.nix26
-rw-r--r--nix/lib.nix8
-rw-r--r--nix/overlays.nix107
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";