From c1bcbdb3dd1370351738d3874a58c57be8faaa9a Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Tue, 1 Aug 2023 23:58:01 +0300 Subject: [PATCH] Nix: remove HiDPI patches - remove `hidpiXWayland` option - rename `nvidiaPatches` -> `enableNvidiaPatches` for consistency --- flake.nix | 2 - nix/default.nix | 194 +++++++++++++++++++++++------------------------ nix/overlays.nix | 14 ++-- nix/wlroots.nix | 74 +++++------------- 4 files changed, 120 insertions(+), 164 deletions(-) diff --git a/flake.nix b/flake.nix index 33643b47..b814f175 100644 --- a/flake.nix +++ b/flake.nix @@ -65,9 +65,7 @@ hyprland hyprland-unwrapped hyprland-debug - hyprland-hidpi hyprland-nvidia - hyprland-no-hidpi # hyprland-extras xdg-desktop-portal-hyprland hyprland-share-picker diff --git a/nix/default.nix b/nix/default.nix index 3fb3545b..fcafe7fe 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -26,114 +26,106 @@ xcbutilwm, xwayland, debug ? false, + enableNvidiaPatches ? false, enableXWayland ? true, - hidpiXWayland ? false, legacyRenderer ? false, - nvidiaPatches ? false, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, wrapRuntimeDeps ? true, version ? "git", commit, -}: let - assertXWayland = lib.assertMsg (hidpiXWayland -> enableXWayland) '' - Hyprland: cannot have hidpiXWayland when enableXWayland is false. +}: +stdenv.mkDerivation { + pname = "hyprland${lib.optionalString enableNvidiaPatches "-nvidia"}${lib.optionalString debug "-debug"}"; + inherit version; + + src = lib.cleanSourceWith { + filter = name: type: let + baseName = baseNameOf (toString name); + in + ! (lib.hasSuffix ".nix" baseName); + src = lib.cleanSource ../.; + }; + + nativeBuildInputs = [ + jq + meson + ninja + pkg-config + makeWrapper + wayland-scanner + ]; + + outputs = [ + "out" + "man" + "dev" + ]; + + buildInputs = + [ + git + cairo + hyprland-protocols + libdrm + libinput + libxkbcommon + mesa + pango + udis86 + wayland + wayland-protocols + pciutils + (wlroots.override {inherit enableNvidiaPatches;}) + ] + ++ lib.optionals enableXWayland [libxcb xcbutilwm xwayland] + ++ lib.optionals withSystemd [systemd]; + + mesonBuildType = + if debug + then "debug" + else "release"; + + mesonFlags = builtins.concatLists [ + ["-Dauto_features=disabled"] + (lib.optional enableXWayland "-Dxwayland=enabled") + (lib.optional legacyRenderer "-Dlegacy_renderer=enabled") + (lib.optional withSystemd "-Dsystemd=enabled") + ]; + + patches = [ + # make meson use the provided wlroots instead of the git submodule + ./patches/meson-build.patch + # fixes portals search path to be picked up from $XDG_DESKTOP_PORTAL_DIR + ./patches/portals.patch + ]; + + postPatch = '' + # Fix hardcoded paths to /usr installation + sed -i "s#/usr#$out#" src/render/OpenGL.cpp + substituteInPlace meson.build \ + --replace "@GIT_COMMIT_HASH@" '${commit}' \ + --replace "@GIT_DIRTY@" '${ + if commit == "" + then "dirty" + else "" + }' ''; -in - assert assertXWayland; - stdenv.mkDerivation { - pname = "hyprland" + lib.optionalString debug "-debug"; - inherit version; - src = lib.cleanSourceWith { - filter = name: type: let - baseName = baseNameOf (toString name); - in - ! ( - lib.hasSuffix ".nix" baseName - ); - src = lib.cleanSource ../.; - }; + postInstall = '' + ln -s ${wlroots}/include/wlr $dev/include/hyprland/wlroots + ${lib.optionalString wrapRuntimeDeps '' + wrapProgram $out/bin/Hyprland \ + --suffix PATH : ${lib.makeBinPath [binutils pciutils]} + ''} + ''; - nativeBuildInputs = [ - jq - meson - ninja - pkg-config - makeWrapper - wayland-scanner - ]; + passthru.providedSessions = ["hyprland"]; - outputs = [ - "out" - "man" - "dev" - ]; - - buildInputs = - [ - git - cairo - hyprland-protocols - libdrm - libinput - libxkbcommon - mesa - pango - udis86 - wayland - wayland-protocols - pciutils - (wlroots.override {inherit enableXWayland hidpiXWayland nvidiaPatches;}) - ] - ++ lib.optionals enableXWayland [libxcb xcbutilwm xwayland] - ++ lib.optionals withSystemd [systemd]; - - mesonBuildType = - if debug - then "debug" - else "release"; - - mesonFlags = builtins.concatLists [ - ["-Dauto_features=disabled"] - (lib.optional enableXWayland "-Dxwayland=enabled") - (lib.optional legacyRenderer "-Dlegacy_renderer=enabled") - (lib.optional withSystemd "-Dsystemd=enabled") - ]; - - patches = [ - # make meson use the provided wlroots instead of the git submodule - ./patches/meson-build.patch - # fixes portals search path to be picked up from $XDG_DESKTOP_PORTAL_DIR - ./patches/portals.patch - ]; - - postPatch = '' - # Fix hardcoded paths to /usr installation - sed -i "s#/usr#$out#" src/render/OpenGL.cpp - substituteInPlace meson.build \ - --replace "@GIT_COMMIT_HASH@" '${commit}' \ - --replace "@GIT_DIRTY@" '${ - if commit == "" - then "dirty" - else "" - }' - ''; - - postInstall = '' - ln -s ${wlroots}/include/wlr $dev/include/hyprland/wlroots - ${lib.optionalString wrapRuntimeDeps '' - wrapProgram $out/bin/Hyprland \ - --suffix PATH : ${lib.makeBinPath [binutils pciutils]} - ''} - ''; - - passthru.providedSessions = ["hyprland"]; - - meta = with lib; { - homepage = "https://github.com/vaxerski/Hyprland"; - description = "A dynamic tiling Wayland compositor that doesn't sacrifice on its looks"; - license = licenses.bsd3; - platforms = platforms.linux; - mainProgram = "Hyprland"; - }; - } + meta = with lib; { + homepage = "https://github.com/vaxerski/Hyprland"; + description = "A dynamic tiling Wayland compositor that doesn't sacrifice on its looks"; + license = licenses.bsd3; + platforms = platforms.linux; + mainProgram = "Hyprland"; + }; +} diff --git a/nix/overlays.nix b/nix/overlays.nix index 6516c755..807e0cad 100644 --- a/nix/overlays.nix +++ b/nix/overlays.nix @@ -35,14 +35,14 @@ in { commit = self.rev or ""; inherit (final) udis86 hyprland-protocols; }; - 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." + hyprland-nvidia = final.hyprland.override {enableNvidiaPatches = true;}; + hyprland-hidpi = + builtins.trace '' + hyprland-hidpi was removed. Please use the hyprland package. + For more information, refer to https://wiki.hyprland.org/Configuring/XWayland. + '' final.hyprland; }) ]; @@ -80,6 +80,7 @@ in { wlroots-hyprland = final.callPackage ./wlroots.nix { 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"; src = final.fetchFromGitLab { @@ -90,6 +91,7 @@ in { sha256 = "sha256-/q79o13Zvu7x02SBGu0W5yQznQ+p7ltZ9L6cMW5t/o4="; }; }); + libliftoff = prev.libliftoff.overrideAttrs (old: { version = "0.5.0-dev"; src = final.fetchFromGitLab { diff --git a/nix/wlroots.nix b/nix/wlroots.nix index 794bb959..c1aa27de 100644 --- a/nix/wlroots.nix +++ b/nix/wlroots.nix @@ -1,64 +1,28 @@ { + lib, version, src, - # wlroots, - xwayland, - fetchpatch, - lib, hwdata, - libliftoff, libdisplay-info, - hidpiXWayland ? true, + libliftoff, enableXWayland ? true, - nvidiaPatches ? false, + enableNvidiaPatches ? false, }: -assert (lib.assertMsg (hidpiXWayland -> enableXWayland) '' - wlroots-hyprland: cannot have hidpiXWayland when enableXWayland is false. -''); - (wlroots.overrideAttrs - (old: { - inherit version src; - pname = - old.pname - + "-hyprland" - + ( - if hidpiXWayland - then "-hidpi" - else "" - ) - + ( - if nvidiaPatches - then "-nvidia" - else "" - ); - patches = - (old.patches or []) - ++ (lib.optionals (enableXWayland && hidpiXWayland) [ - # adapted from https://gitlab.freedesktop.org/lilydjwg/wlroots/-/commit/6c5ffcd1fee9e44780a6a8792f74ecfbe24a1ca7 - ./patches/wlroots-hidpi.patch - (fetchpatch { - url = "https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/18595000f3a21502fd60bf213122859cc348f9af.diff"; - sha256 = "sha256-jvfkAMh3gzkfuoRhB4E9T5X1Hu62wgUjj4tZkJm0mrI="; - revert = true; - }) - ]) - ++ (lib.optionals nvidiaPatches [ - ./patches/wlroots-nvidia.patch - ]); - buildInputs = old.buildInputs ++ [hwdata libliftoff libdisplay-info]; +wlroots.overrideAttrs (old: { + inherit version src enableXWayland; - NIX_CFLAGS_COMPILE = toString [ - "-Wno-error=maybe-uninitialized" - ]; - })) - .override { - xwayland = xwayland.overrideAttrs (old: { - patches = - (old.patches or []) - ++ (lib.optionals hidpiXWayland [ - ./patches/xwayland-vsync.patch - ./patches/xwayland-hidpi.patch - ]); - }); - } + pname = "${old.pname}-hyprland${lib.optionalString enableNvidiaPatches "-nvidia"}"; + + patches = + (old.patches or []) + ++ (lib.optionals enableNvidiaPatches [ + ./patches/wlroots-nvidia.patch + ]); + + buildInputs = old.buildInputs ++ [hwdata libliftoff libdisplay-info]; + + NIX_CFLAGS_COMPILE = toString [ + "-Wno-error=maybe-uninitialized" + ]; +})