From 9447fcd603520a57b2845edd42fdd981303acf18 Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Wed, 1 Jun 2022 01:52:34 +0300 Subject: [PATCH] fix Nix build and add updater - move unnecessary toplevel files to nix/ - added patch that ignores the submodule (revert) - add update script run by a workflow --- .github/workflows/nix-update.yaml | 2 +- flake.lock | 6 +- flake.nix | 4 +- default.nix => nix/default.nix | 6 +- module.nix => nix/module.nix | 0 nix/update-inputs.sh | 13 +++ nix/wlroots.patch | 139 ++++++++++++++++++++++++++++++ 7 files changed, 162 insertions(+), 8 deletions(-) rename default.nix => nix/default.nix (92%) rename module.nix => nix/module.nix (100%) create mode 100755 nix/update-inputs.sh create mode 100644 nix/wlroots.patch diff --git a/.github/workflows/nix-update.yaml b/.github/workflows/nix-update.yaml index 323b34a8..aa23d220 100644 --- a/.github/workflows/nix-update.yaml +++ b/.github/workflows/nix-update.yaml @@ -19,7 +19,7 @@ jobs: auto-optimise-store = true experimental-features = nix-command flakes - name: Update lockfile - run: nix flake update + run: nix/update-inputs.sh - uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: "[gha] bump flake inputs" diff --git a/flake.lock b/flake.lock index aa72e787..fe160449 100644 --- a/flake.lock +++ b/flake.lock @@ -26,11 +26,11 @@ "flake": false, "locked": { "host": "gitlab.freedesktop.org", - "lastModified": 1654018490, - "narHash": "sha256-6c/2lVXpr1qL/NAiaEwFO7kiTOMc6UJjYXtxDHifBwk=", + "lastModified": 1653658290, + "narHash": "sha256-zZaona39DOZNL93A1KG3zAi8vDttJBirxacq24hWCn4=", "owner": "wlroots", "repo": "wlroots", - "rev": "ec328ca8cc82f5cac657141e31a81a590759150d", + "rev": "75d31509db8c28e8379fe9570118ef8c82284581", "type": "gitlab" }, "original": { diff --git a/flake.nix b/flake.nix index c7e672e5..aee2abd6 100644 --- a/flake.nix +++ b/flake.nix @@ -36,7 +36,7 @@ version = mkVersion inputs.wlroots.lastModifiedDate; src = inputs.wlroots; }); - default = pkgsFor.${system}.callPackage ./default.nix { + default = pkgsFor.${system}.callPackage ./nix/default.nix { version = mkVersion self.lastModifiedDate; inherit (self.packages.${system}) wlroots; }; @@ -44,7 +44,7 @@ formatter = genSystems (system: pkgsFor.${system}.alejandra); - nixosModules.default = import ./module.nix self; + nixosModules.default = import ./nix/module.nix self; # Deprecated overlays.default = _: prev: { diff --git a/default.nix b/nix/default.nix similarity index 92% rename from default.nix rename to nix/default.nix index cb0b7218..21f571bf 100644 --- a/default.nix +++ b/nix/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation { pname = "hyprland"; inherit version; - src = ./.; + src = ../.; nativeBuildInputs = [ cmake @@ -52,7 +52,9 @@ stdenv.mkDerivation { ["-DCMAKE_BUILD_TYPE=Release"] ++ lib.optional (!enableXWayland) "-DNO_XWAYLAND=true"; - prePatch = '' + # enables building with nix-supplied wlroots instead of submodule + patches = [ ./wlroots.patch ]; + postPatch = '' make config ''; diff --git a/module.nix b/nix/module.nix similarity index 100% rename from module.nix rename to nix/module.nix diff --git a/nix/update-inputs.sh b/nix/update-inputs.sh new file mode 100755 index 00000000..fd3c248b --- /dev/null +++ b/nix/update-inputs.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env -S nix shell nixpkgs#gawk nixpkgs#git nixpkgs#moreutils -c bash + +# get wlroots revision from submodule +rev=$(git submodule status | awk '{ print substr($1,2)}') + +# update nixpkgs to latest version +nix flake lock --update-input nixpkgs + +# update wlroots to submodule revision +nix flake lock --override-input wlroots "gitlab:wlroots/wlroots/$rev?host=gitlab.freedesktop.org" + +# remove "dirty" mark from lockfile +jq < flake.lock 'del(.nodes.wlroots.original.rev)' | sponge flake.lock diff --git a/nix/wlroots.patch b/nix/wlroots.patch new file mode 100644 index 00000000..f29a8422 --- /dev/null +++ b/nix/wlroots.patch @@ -0,0 +1,139 @@ +diff --git a/Makefile b/Makefile +index 55088a7..b185eb9 100644 +--- a/Makefile ++++ b/Makefile +@@ -89,7 +89,6 @@ clear: + rm -rf build + rm -f *.o *-protocol.h *-protocol.c + rm -f ./hyprctl/hyprctl +- rm -rf ./wlroots/build + + all: + make config +@@ -114,16 +113,4 @@ uninstall: + rm -f ${PREFIX}/bin/hyprctl + rm -rf ${PREFIX}/share/hyprland + +-protocols: xdg-shell-protocol.o wlr-layer-shell-unstable-v1-protocol.o wlr-screencopy-unstable-v1-protocol.o idle-protocol.o ext-workspace-unstable-v1-protocol.o pointer-constraints-unstable-v1-protocol.o +- +-config: +- make protocols +- +- sed -i -E 's/(soversion = 11)([^032]|$$)/soversion = 11032/g' ./wlroots/meson.build +- +- rm -rf ./wlroots/build +- +- cd wlroots && meson ./build --prefix=/usr --buildtype=release +- cd wlroots && ninja -C build/ +- +- cd wlroots && sudo ninja -C build/ install ++config: xdg-shell-protocol.o wlr-layer-shell-unstable-v1-protocol.o wlr-screencopy-unstable-v1-protocol.o idle-protocol.o ext-workspace-unstable-v1-protocol.o pointer-constraints-unstable-v1-protocol.o +diff --git a/src/includes.hpp b/src/includes.hpp +index 5c216b7..65f2d0f 100644 +--- a/src/includes.hpp ++++ b/src/includes.hpp +@@ -34,56 +34,56 @@ + #define static + + extern "C" { +-#include "../wlroots/include/wlr/backend.h" +-#include "../wlroots/include/wlr/backend/libinput.h" +-#include "../wlroots/include/wlr/render/allocator.h" +-#include "../wlroots/include/wlr/render/wlr_renderer.h" +-#include "../wlroots/include/wlr/types/wlr_compositor.h" +-#include "../wlroots/include/wlr/types/wlr_cursor.h" +-#include "../wlroots/include/wlr/types/wlr_data_control_v1.h" +-#include "../wlroots/include/wlr/types/wlr_data_device.h" +-#include "../wlroots/include/wlr/types/wlr_export_dmabuf_v1.h" +-#include "../wlroots/include/wlr/types/wlr_linux_dmabuf_v1.h" +-#include "../wlroots/include/wlr/types/wlr_gamma_control_v1.h" +-#include "../wlroots/include/wlr/types/wlr_idle.h" +-#include "../wlroots/include/wlr/types/wlr_input_device.h" +-#include "../wlroots/include/wlr/types/wlr_keyboard.h" +-#include "../wlroots/include/wlr/types/wlr_layer_shell_v1.h" +-#include "../wlroots/include/wlr/types/wlr_matrix.h" +-#include "../wlroots/include/wlr/types/wlr_output.h" +-#include "../wlroots/include/wlr/types/wlr_output_layout.h" +-#include "../wlroots/include/wlr/types/wlr_output_management_v1.h" +-#include "../wlroots/include/wlr/types/wlr_pointer.h" +-#include "../wlroots/include/wlr/types/wlr_presentation_time.h" +-#include "../wlroots/include/wlr/types/wlr_primary_selection.h" +-#include "../wlroots/include/wlr/types/wlr_primary_selection_v1.h" +-#include "../wlroots/include/wlr/types/wlr_screencopy_v1.h" +-#include "../wlroots/include/wlr/types/wlr_seat.h" +-#include "../wlroots/include/wlr/types/wlr_server_decoration.h" +-#include "../wlroots/include/wlr/types/wlr_viewporter.h" +-#include "../wlroots/include/wlr/types/wlr_virtual_keyboard_v1.h" +-#include "../wlroots/include/wlr/types/wlr_xcursor_manager.h" +-#include "../wlroots/include/wlr/types/wlr_xdg_activation_v1.h" +-#include "../wlroots/include/wlr/types/wlr_xdg_decoration_v1.h" +-#include "../wlroots/include/wlr/types/wlr_xdg_output_v1.h" +-#include "../wlroots/include/wlr/types/wlr_xdg_shell.h" +-#include "../wlroots/include/wlr/types/wlr_subcompositor.h" +-#include "../wlroots/include/wlr/types/wlr_scene.h" +-#include "../wlroots/include/wlr/types/wlr_output_damage.h" +-#include "../wlroots/include/wlr/types/wlr_input_inhibitor.h" +-#include "../wlroots/include/wlr/types/wlr_keyboard_shortcuts_inhibit_v1.h" +-#include "../wlroots/include/wlr/types/wlr_virtual_pointer_v1.h" +-#include "../wlroots/include/wlr/types/wlr_foreign_toplevel_management_v1.h" +-#include "../wlroots/include/wlr/util/log.h" +-#include "../wlroots/include/wlr/xwayland.h" +-#include "../wlroots/include/wlr/util/region.h" ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include + #include + #include +-#include "../wlroots/include/wlr/render/egl.h" +-#include "../wlroots/include/wlr/render/gles2.h" +-#include "../wlroots/include/wlr/render/wlr_texture.h" +-#include "../wlroots/include/wlr/types/wlr_pointer_constraints_v1.h" +-#include "../wlroots/include/wlr/types/wlr_relative_pointer_v1.h" ++#include ++#include ++#include ++#include ++#include + } + + #undef class