From e8e63167d23c13738f0cd760969f007f0264e2d7 Mon Sep 17 00:00:00 2001 From: Colin Date: Sat, 26 Aug 2023 13:04:07 +0000 Subject: [PATCH] phog: bring in-tree and patch to allow launching via sway it looses the bar functionality (oh well) --- overlays/cross.nix | 39 +--------- pkgs/additional/phog/default.nix | 102 +++++++++++++++++++++++++ pkgs/additional/phog/sway-compat.patch | 31 ++++++++ pkgs/default.nix | 1 + 4 files changed, 136 insertions(+), 37 deletions(-) create mode 100644 pkgs/additional/phog/default.nix create mode 100644 pkgs/additional/phog/sway-compat.patch diff --git a/overlays/cross.nix b/overlays/cross.nix index 60ac61ce..c6bbece7 100644 --- a/overlays/cross.nix +++ b/overlays/cross.nix @@ -1313,43 +1313,8 @@ in { # fixes (meson) "Program 'glib-mkenums mkenums' not found or not executable" # 2023/07/27: upstreaming is blocked on p11-kit, argyllcms, libavif cross compilation phoc = mvToNativeInputs [ final.wayland-scanner final.glib ] prev.phoc; - phog = (addInputs - { - depsBuildBuild = [ - final.pkg-config # needed by build-aux/post_install.py - ]; - nativeBuildInputs = [ - final.glib - final.wayland-scanner - final.wrapGAppsHook - ]; - # buildInputs = (upstream.buildInputs or []) ++ [ - # # see `data/phog.in` - # # final.squeekboard - # final.bash - # ]; - } - prev.phog - ).overrideAttrs (upstream: { - DESTDIR = null; - # squeekboard takes 20min to compile because of emulation, so disable it. - # postPatch = (upstream.postPatch or "") + '' - # substituteInPlace data/phog.in \ - # --replace " & squeekboard" "" - # ''; - postPatch = (upstream.postPatch or "") + '' - sed -i /phog_plugins_dir/d build-aux/post_install.py - substituteInPlace src/greetd.c \ - --replace '/usr/share/wayland-sessions' '/run/current-system/sw/share/wayland-sessions/' \ - --replace '/usr/share/xsessions' '/run/current-system/sw/share/xsessions' - ''; - preFixup = (upstream.preFixup or "") + '' - gappsWrapperArgs+=( - --prefix PATH : ${lib.makeBinPath [ final.bash final.squeekboard ]} - --prefix XDG_DATA_DIRS : "${final.gnome.gnome-shell}/share/gsettings-schemas/${final.gnome.gnome-shell.name}" - ) - ''; - }); + # disable squeekboard because it takes 20 minutes to compile when emulated + phog = prev.phog.override { squeekboard = null; }; phosh = prev.phosh.overrideAttrs (upstream: { buildInputs = upstream.buildInputs ++ [ final.libadwaita # "plugins/meson.build:41:2: ERROR: Dependency "libadwaita-1" not found, tried pkgconfig" diff --git a/pkgs/additional/phog/default.nix b/pkgs/additional/phog/default.nix new file mode 100644 index 00000000..fd5ef437 --- /dev/null +++ b/pkgs/additional/phog/default.nix @@ -0,0 +1,102 @@ +{ lib +, stdenv +, fetchFromGitLab +, meson +, ninja +, pkg-config +, gcr +, glib +, gnome-desktop +, gtk3 +, libgudev +, libjson +, json-glib +, libhandy +, networkmanager +, linux-pam +, systemd +, upower +, wayland +, libxkbcommon +, python3 +, phoc +, bash +, gnome +, squeekboard ? null +, wayland-scanner +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "phog"; + version = "0.1.3"; + + src = fetchFromGitLab { + owner = "mobian1"; + repo = "phog"; + rev = version; + hash = "sha256-zny1FUYKwVXVSBGTh8AFVtMBS7dWZHTKO2gkPNPSL2M="; + }; + + patches = [ + ./sway-compat.patch + ]; + + postPatch = '' + patchShebangs build-aux/post_install.py + sed -i /phog_plugins_dir/d build-aux/post_install.py + substituteInPlace src/greetd.c \ + --replace '/usr/share/wayland-sessions' '/run/current-system/sw/share/wayland-sessions/' \ + --replace '/usr/share/xsessions' '/run/current-system/sw/share/xsessions' + '' + lib.optionalString (squeekboard == null) '' + substituteInPlace data/phog.in \ + --replace " & squeekboard" "" + ''; + preFixup = '' + gappsWrapperArgs+=( + --prefix PATH : ${lib.makeBinPath [ bash squeekboard ]} + --prefix XDG_DATA_DIRS : "${gnome.gnome-shell}/share/gsettings-schemas/${gnome.gnome-shell.name}" + ) + ''; + + + mesonFlags = [ "-Dcompositor=${phoc}/bin/phoc" ]; + + depsBuildBuild = [ + pkg-config + ]; + + buildInputs = [ + gcr + glib + gnome-desktop + gtk3 + libgudev + libjson + json-glib + libhandy + networkmanager + linux-pam + systemd + upower + wayland + libxkbcommon + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + python3 + glib + wayland-scanner + wrapGAppsHook + ]; + + meta = with lib; { + description = "Greetd-compatible greeter for mobile phones"; + homepage = "https://gitlab.com/mobian1/phog/"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ matthewcroughan ]; + }; +} diff --git a/pkgs/additional/phog/sway-compat.patch b/pkgs/additional/phog/sway-compat.patch new file mode 100644 index 00000000..6136949c --- /dev/null +++ b/pkgs/additional/phog/sway-compat.patch @@ -0,0 +1,31 @@ +commit 86593b754405a194e749e424e27710aa08533853 +Author: Colin +Date: 2023-08-26 12:26:36 +0000 + + make phoc-specific wayland interface optional: zphoc_layer_shell_effects_v1 + +diff --git a/src/drag-surface.c b/src/drag-surface.c +index 0e1a371f..56f7a307 100644 +--- a/src/drag-surface.c ++++ b/src/drag-surface.c +@@ -204,6 +204,7 @@ phog_drag_surface_configured (PhogLayerSurface *layer_surface) + return; + + /* Configure drag surface if not done yet */ ++ g_return_if_fail(priv->layer_shell_effects); + priv->drag_surface = zphoc_layer_shell_effects_v1_get_draggable_layer_surface (priv->layer_shell_effects, + wl_layer_surface); + zphoc_draggable_layer_surface_v1_add_listener (priv->drag_surface, &drag_surface_listener, self); +diff --git a/src/phog-wayland.c b/src/phog-wayland.c +index 99933116..7c2d76ad 100644 +--- a/src/phog-wayland.c ++++ b/src/phog-wayland.c +@@ -274,7 +274,7 @@ phog_wayland_constructed (GObject *object) + !self->input_inhibit_manager || !self->xdg_wm_base || + !self->zxdg_output_manager_v1 || + !self->zphoc_layer_shell_effects_v1) { +- g_error ("Wayland compositor lacks needed globals\n" ++ g_warning ("Wayland compositor lacks needed globals\n" + "outputs: %d, layer_shell: %p, idle_manager: %p, " + "inhibit: %p, xdg_wm: %p, " + "xdg_output: %p, wlr_output_manager: %p, " diff --git a/pkgs/default.nix b/pkgs/default.nix index 6b247bc7..c9bcf821 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -49,6 +49,7 @@ let mcg = callPackage ./additional/mcg { }; mpv-uosc-latest = callPackage ./additional/mpv-uosc-latest { }; mx-sanebot = callPackage ./additional/mx-sanebot { }; + phog = callPackage ./additional/phog { }; rtl8723cs-firmware = callPackage ./additional/rtl8723cs-firmware { }; sane-scripts = lib.recurseIntoAttrs (callPackage ./additional/sane-scripts { }); sane-weather = callPackage ./additional/sane-weather { };