Merge pull request #310144 from wineee/hyprland-w

hyprland: build wlroots form submodules
This commit is contained in:
rewine 2024-05-10 19:38:25 +08:00 committed by GitHub
commit e8ff2ab023
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 47 additions and 82 deletions

View File

@ -4,6 +4,7 @@
, pkg-config
, makeWrapper
, meson
, cmake
, ninja
, binutils
, cairo
@ -21,15 +22,19 @@
, mesa
, pango
, pciutils
, python3
, systemd
, tomlplusplus
, udis86-hyprland
, wayland
, wayland-protocols
, wayland-scanner
, wlroots-hyprland
, xcbutilwm
, xwayland
, hwdata
, seatd
, libdisplay-info
, libliftoff
, xorg
, debug ? false
, enableXWayland ? true
, legacyRenderer ? false
@ -44,24 +49,17 @@ assert lib.assertMsg (!nvidiaPatches) "The option `nvidiaPatches` has been remov
assert lib.assertMsg (!enableNvidiaPatches) "The option `enableNvidiaPatches` has been removed.";
assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been removed. Please refer https://wiki.hyprland.org/Configuring/XWayland";
let
wlr = wlroots-hyprland.override { inherit enableXWayland; };
in
stdenv.mkDerivation (finalAttrs: {
pname = "hyprland" + lib.optionalString debug "-debug";
version = "0.39.1";
src = fetchFromGitHub {
owner = "hyprwm";
repo = finalAttrs.pname;
fetchSubmodules = true;
rev = "v${finalAttrs.version}";
hash = "sha256-Urb/njWiHYUudXpmK8EKl9Z58esTIG0PxXw5LuM2r5g=";
hash = "sha256-7L5rqQRYH2iyyP5g3IdXJSlATfgnKhuYMf65E48MVKw=";
};
patches = [
# make meson use the provided dependencies instead of the git submodules
"${finalAttrs.src}/nix/patches/meson-build.patch"
];
postPatch = ''
# Fix hardcoded paths to /usr installation
sed -i "s#/usr#$out#" src/render/OpenGL.cpp
@ -69,12 +67,12 @@ stdenv.mkDerivation (finalAttrs: {
# Generate version.h
cp src/version.h.in src/version.h
substituteInPlace src/version.h \
--replace "@HASH@" '${finalAttrs.src.rev}' \
--replace "@BRANCH@" "" \
--replace "@MESSAGE@" "" \
--replace "@DATE@" "2024-04-16" \
--replace "@TAG@" "" \
--replace "@DIRTY@" ""
--replace-fail "@HASH@" '${finalAttrs.src.rev}' \
--replace-fail "@BRANCH@" "" \
--replace-fail "@MESSAGE@" "" \
--replace-fail "@DATE@" "2024-04-16" \
--replace-fail "@TAG@" "" \
--replace-fail "@DIRTY@" ""
'';
depsBuildBuild = [
@ -89,6 +87,8 @@ stdenv.mkDerivation (finalAttrs: {
ninja
pkg-config
wayland-scanner
cmake # for subproject udis86
python3
];
outputs = [
@ -97,36 +97,40 @@ stdenv.mkDerivation (finalAttrs: {
"dev"
];
buildInputs =
wlr.buildInputs ++ [
cairo
git
hyprcursor
hyprland-protocols
hyprlang
libGL
libdrm
libinput
libxkbcommon
mesa
udis86-hyprland
wayland
wayland-protocols
pango
pciutils
tomlplusplus
wlr
]
++ lib.optionals stdenv.hostPlatform.isMusl [ libexecinfo ]
++ lib.optionals enableXWayland [ libxcb xcbutilwm xwayland ]
++ lib.optionals withSystemd [ systemd ];
buildInputs = [
cairo
git
hyprcursor
hyprland-protocols
hyprlang
libGL
libdrm
libinput
libxkbcommon
mesa
wayland
wayland-protocols
pango
pciutils
tomlplusplus
# for subproject wlroots-hyprland
hwdata
seatd
libliftoff
libdisplay-info
xorg.xcbutilerrors
xorg.xcbutilrenderutil
]
++ lib.optionals stdenv.hostPlatform.isMusl [ libexecinfo ]
++ lib.optionals enableXWayland [ libxcb xcbutilwm xwayland ]
++ lib.optionals withSystemd [ systemd ];
mesonBuildType =
if debug
then "debug"
else "release";
mesonAutoFeatures = "disabled";
mesonAutoFeatures = "enabled";
mesonFlags = [
(lib.mesonEnable "xwayland" enableXWayland)
@ -135,7 +139,6 @@ stdenv.mkDerivation (finalAttrs: {
];
postInstall = ''
ln -s ${wlr}/include/wlr $dev/include/hyprland/wlroots
${lib.optionalString wrapRuntimeDeps ''
wrapProgram $out/bin/Hyprland \
--suffix PATH : ${lib.makeBinPath [binutils pciutils stdenv.cc]}
@ -150,6 +153,6 @@ stdenv.mkDerivation (finalAttrs: {
license = licenses.bsd3;
maintainers = with maintainers; [ wozeparrot fufexan ];
mainProgram = "Hyprland";
platforms = wlr.meta.platforms;
platforms = lib.platforms.linux;
};
})

View File

@ -1,15 +0,0 @@
{ udis86
, fetchFromGitHub
}:
udis86.overrideAttrs (old: {
version = "unstable-2022-10-13";
src = fetchFromGitHub {
owner = "canihavesomecoffee";
repo = "udis86";
rev = "5336633af70f3917760a6d441ff02d93477b0c86";
hash = "sha256-HifdUQPGsKQKQprByeIznvRLONdOXeolOsU5nkwIv3g=";
};
patches = [ ];
})

View File

@ -1,20 +0,0 @@
{ fetchFromGitHub
, wlroots
, enableXWayland ? true
}:
wlroots.overrideAttrs
(old: {
inherit enableXWayland;
version = "0.18.0-dev";
src = fetchFromGitHub {
owner = "hyprwm";
repo = "wlroots-hyprland";
rev = "611a4f24cd2384378f6e500253983107c6656c64";
hash = "sha256-vPeZCY+sdiGsz4fl3AVVujfyZyQBz6+vZdkUE4hQ+HI=";
};
patches = [ ]; # don't inherit old.patches
pname = "${old.pname}-hyprland";
})

View File

@ -5548,10 +5548,7 @@ with pkgs;
hypr = callPackage ../applications/window-managers/hyprwm/hypr {
cairo = cairo.override { xcbSupport = true; }; };
hyprland = callPackage ../applications/window-managers/hyprwm/hyprland {
wlroots-hyprland = callPackage ../applications/window-managers/hyprwm/hyprland/wlroots.nix { };
udis86-hyprland = callPackage ../applications/window-managers/hyprwm/hyprland/udis86.nix { };
};
hyprland = callPackage ../applications/window-managers/hyprwm/hyprland { };
hyprland-autoname-workspaces = callPackage ../applications/misc/hyprland-autoname-workspaces { };