hyprland: build wlroots form submodules

This commit is contained in:
rewine 2024-05-08 23:43:31 +08:00
parent dfd8445b59
commit b900e33ee3
4 changed files with 47 additions and 82 deletions

View file

@ -4,6 +4,7 @@
, pkg-config , pkg-config
, makeWrapper , makeWrapper
, meson , meson
, cmake
, ninja , ninja
, binutils , binutils
, cairo , cairo
@ -21,15 +22,19 @@
, mesa , mesa
, pango , pango
, pciutils , pciutils
, python3
, systemd , systemd
, tomlplusplus , tomlplusplus
, udis86-hyprland
, wayland , wayland
, wayland-protocols , wayland-protocols
, wayland-scanner , wayland-scanner
, wlroots-hyprland
, xcbutilwm , xcbutilwm
, xwayland , xwayland
, hwdata
, seatd
, libdisplay-info
, libliftoff
, xorg
, debug ? false , debug ? false
, enableXWayland ? true , enableXWayland ? true
, legacyRenderer ? false , 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 (!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"; 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: { stdenv.mkDerivation (finalAttrs: {
pname = "hyprland" + lib.optionalString debug "-debug"; pname = "hyprland" + lib.optionalString debug "-debug";
version = "0.39.1"; version = "0.39.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hyprwm"; owner = "hyprwm";
repo = finalAttrs.pname; repo = finalAttrs.pname;
fetchSubmodules = true;
rev = "v${finalAttrs.version}"; 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 = '' postPatch = ''
# Fix hardcoded paths to /usr installation # Fix hardcoded paths to /usr installation
sed -i "s#/usr#$out#" src/render/OpenGL.cpp sed -i "s#/usr#$out#" src/render/OpenGL.cpp
@ -69,12 +67,12 @@ stdenv.mkDerivation (finalAttrs: {
# Generate version.h # Generate version.h
cp src/version.h.in src/version.h cp src/version.h.in src/version.h
substituteInPlace src/version.h \ substituteInPlace src/version.h \
--replace "@HASH@" '${finalAttrs.src.rev}' \ --replace-fail "@HASH@" '${finalAttrs.src.rev}' \
--replace "@BRANCH@" "" \ --replace-fail "@BRANCH@" "" \
--replace "@MESSAGE@" "" \ --replace-fail "@MESSAGE@" "" \
--replace "@DATE@" "2024-04-16" \ --replace-fail "@DATE@" "2024-04-16" \
--replace "@TAG@" "" \ --replace-fail "@TAG@" "" \
--replace "@DIRTY@" "" --replace-fail "@DIRTY@" ""
''; '';
depsBuildBuild = [ depsBuildBuild = [
@ -89,6 +87,8 @@ stdenv.mkDerivation (finalAttrs: {
ninja ninja
pkg-config pkg-config
wayland-scanner wayland-scanner
cmake # for subproject udis86
python3
]; ];
outputs = [ outputs = [
@ -97,36 +97,40 @@ stdenv.mkDerivation (finalAttrs: {
"dev" "dev"
]; ];
buildInputs = buildInputs = [
wlr.buildInputs ++ [ cairo
cairo git
git hyprcursor
hyprcursor hyprland-protocols
hyprland-protocols hyprlang
hyprlang libGL
libGL libdrm
libdrm libinput
libinput libxkbcommon
libxkbcommon mesa
mesa wayland
udis86-hyprland wayland-protocols
wayland pango
wayland-protocols pciutils
pango tomlplusplus
pciutils # for subproject wlroots-hyprland
tomlplusplus hwdata
wlr seatd
] libliftoff
++ lib.optionals stdenv.hostPlatform.isMusl [ libexecinfo ] libdisplay-info
++ lib.optionals enableXWayland [ libxcb xcbutilwm xwayland ] xorg.xcbutilerrors
++ lib.optionals withSystemd [ systemd ]; xorg.xcbutilrenderutil
]
++ lib.optionals stdenv.hostPlatform.isMusl [ libexecinfo ]
++ lib.optionals enableXWayland [ libxcb xcbutilwm xwayland ]
++ lib.optionals withSystemd [ systemd ];
mesonBuildType = mesonBuildType =
if debug if debug
then "debug" then "debug"
else "release"; else "release";
mesonAutoFeatures = "disabled"; mesonAutoFeatures = "enabled";
mesonFlags = [ mesonFlags = [
(lib.mesonEnable "xwayland" enableXWayland) (lib.mesonEnable "xwayland" enableXWayland)
@ -135,7 +139,6 @@ stdenv.mkDerivation (finalAttrs: {
]; ];
postInstall = '' postInstall = ''
ln -s ${wlr}/include/wlr $dev/include/hyprland/wlroots
${lib.optionalString wrapRuntimeDeps '' ${lib.optionalString wrapRuntimeDeps ''
wrapProgram $out/bin/Hyprland \ wrapProgram $out/bin/Hyprland \
--suffix PATH : ${lib.makeBinPath [binutils pciutils stdenv.cc]} --suffix PATH : ${lib.makeBinPath [binutils pciutils stdenv.cc]}
@ -150,6 +153,6 @@ stdenv.mkDerivation (finalAttrs: {
license = licenses.bsd3; license = licenses.bsd3;
maintainers = with maintainers; [ wozeparrot fufexan ]; maintainers = with maintainers; [ wozeparrot fufexan ];
mainProgram = "Hyprland"; 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

@ -5561,10 +5561,7 @@ with pkgs;
hypr = callPackage ../applications/window-managers/hyprwm/hypr { hypr = callPackage ../applications/window-managers/hyprwm/hypr {
cairo = cairo.override { xcbSupport = true; }; }; cairo = cairo.override { xcbSupport = true; }; };
hyprland = callPackage ../applications/window-managers/hyprwm/hyprland { 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-autoname-workspaces = callPackage ../applications/misc/hyprland-autoname-workspaces { }; hyprland-autoname-workspaces = callPackage ../applications/misc/hyprland-autoname-workspaces { };