From 0302a2ace6fe4bacc0437bf21bb946c8710ae5e9 Mon Sep 17 00:00:00 2001 From: Luflosi Date: Sun, 25 May 2025 17:19:55 +0200 Subject: [PATCH] feedbackd-device-themes: init at 0.8.3 Separate it from `feedbackd` for the following reasons: - Previously the update script did not see this "package" and did not update it - Now we can run the test suite of `feedbackd-device-themes` - This allows a user to only change a device theme, while not recompiling `feedbackd` - Updating only `feedbackd-device-themes` would result in an awkward commit message where we would claim to update a seemingly non-existing package - Previous commits that updated both `feedbackd` and `feedbackd-device-themes` at the same time did not mention the update to `feedbackd-device-themes` in the title of the commit message - They are separate projects after all, with the only direct dependency between the two packages existing in the test suite of `feedbackd-device-themes` - [Most other distributions also package this package](https://repology.org/project/feedbackd-device-themes/versions) separately from feedbackd --- nixos/modules/programs/feedbackd.nix | 7 ++- .../fe/feedbackd-device-themes/package.nix | 56 +++++++++++++++++++ pkgs/by-name/fe/feedbackd/package.nix | 11 +--- 3 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 pkgs/by-name/fe/feedbackd-device-themes/package.nix diff --git a/nixos/modules/programs/feedbackd.nix b/nixos/modules/programs/feedbackd.nix index dbace6c4fdaa..021ce805d376 100644 --- a/nixos/modules/programs/feedbackd.nix +++ b/nixos/modules/programs/feedbackd.nix @@ -17,10 +17,15 @@ in Your user needs to be in the `feedbackd` group to trigger effects ''; package = lib.mkPackageOption pkgs "feedbackd" { }; + theme-package = lib.mkPackageOption pkgs "feedbackd-device-themes" { + nullable = true; + }; }; }; config = lib.mkIf cfg.enable { - environment.systemPackages = [ cfg.package ]; + environment.systemPackages = [ + cfg.package + ] ++ (if cfg.theme-package != null then [ cfg.theme-package ] else [ ]); services.dbus.packages = [ cfg.package ]; services.udev.packages = [ cfg.package ]; diff --git a/pkgs/by-name/fe/feedbackd-device-themes/package.nix b/pkgs/by-name/fe/feedbackd-device-themes/package.nix new file mode 100644 index 000000000000..711e77962b09 --- /dev/null +++ b/pkgs/by-name/fe/feedbackd-device-themes/package.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchFromGitLab, + meson, + ninja, + json-glib, + feedbackd, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "feedbackd-device-themes"; + version = "0.8.3"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "agx"; + repo = "feedbackd-device-themes"; + rev = "v${finalAttrs.version}"; + hash = "sha256-z+A2G1g2gNfC0cVWUO/LT3QVvXeotcBd+5UEpEtcPfY="; + }; + + nativeBuildInputs = [ + meson + ninja + json-glib # Provides json-glib-validate + ]; + + nativeCheckInputs = [ + feedbackd # Provides fbd-theme-validate + ]; + + mesonFlags = [ + (lib.mesonOption "validate" (if finalAttrs.doCheck then "enabled" else "disabled")) + ]; + + doCheck = true; + + passthru = { + updateScript = nix-update-script { }; + }; + + strictDeps = true; + + meta = with lib; { + description = "Device specific feedback themes for Feedbackd"; + homepage = "https://gitlab.freedesktop.org/agx/feedbackd-device-themes"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ + pacman99 + Luflosi + ]; + platforms = platforms.linux; + }; +}) diff --git a/pkgs/by-name/fe/feedbackd/package.nix b/pkgs/by-name/fe/feedbackd/package.nix index 8ff14f82a79e..5092424b39e9 100644 --- a/pkgs/by-name/fe/feedbackd/package.nix +++ b/pkgs/by-name/fe/feedbackd/package.nix @@ -20,18 +20,10 @@ dbus, gmobile, umockdev, + feedbackd-device-themes, nix-update-script, }: -let - themes = fetchFromGitLab { - domain = "gitlab.freedesktop.org"; - owner = "agx"; - repo = "feedbackd-device-themes"; - rev = "v0.8.3"; - hash = "sha256-z+A2G1g2gNfC0cVWUO/LT3QVvXeotcBd+5UEpEtcPfY="; - }; -in stdenv.mkDerivation (finalAttrs: { pname = "feedbackd"; version = "0.8.2"; @@ -93,7 +85,6 @@ stdenv.mkDerivation (finalAttrs: { postInstall = '' mkdir -p $out/lib/udev/rules.d sed "s|/usr/libexec/|$out/libexec/|" < $src/data/90-feedbackd.rules > $out/lib/udev/rules.d/90-feedbackd.rules - cp ${themes}/data/* $out/share/feedbackd/themes/ ''; postFixup = ''