gnomeExtension.copyous dependencies

Hi I want to use copyous gnome extension but unfortunately I can not use all its features. It depends on libgda and gsound. My config is as follows:

    environment = {
      systemPackages = (with pkgs; [
        gnome-tweaks
        dconf-editor
        adw-gtk3
        libgda6 # needed for copyous
        gsound # needed for copyous
      ]) ++ (with pkgs.gnomeExtensions; [
        copyous
      ]);
    };

    home-manager.users.${user} =
      dconf.settings = {
        "org/gnome/shell" = {
          enabled-extensions = [
            "copyous@boerdereinar.dev"
          ];
        };
      };
    };

Unfortunately copyous is not able to see that I actually have the packages installed and is complaining about missing the dependencies. Someone has a clue on how I can let copyous know where the two packages are?

Looks like NixOS/nixpkgs#469919 has a solution.

I haven’t gotten around to writing an extension override, so right now I’m just using a custom package definition.

{
  lib,
  stdenv,
  fetchzip,
  glib,
  libgda6,
  gsound,
}:
stdenv.mkDerivation (finalAttrs: {
  pname = "gnome-shell-extension-copyous";
  version = "1.2.0";

  src = fetchzip {
    url = "https://github.com/boerdereinar/copyous/releases/download/v${finalAttrs.version}/copyous@boerdereinar.dev.zip";
    hash = "sha256-3yE0+F/E1/qrGGO6loaMoCzf5gtT1j964/HdytU0ePM=";
    stripRoot = false;
  };

  nativeBuildInputs = [ glib ];

  buildPhase = ''
    runHook preBuild
    glib-compile-schemas --strict schemas
    runHook postBuild
  '';

  preInstall = ''
    sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${libgda6}/lib/girepository-1.0');\nGIRepository.Repository.dup_default().prepend_search_path('${gsound}/lib/girepository-1.0');\n" lib/preferences/dependencies/dependencies.js
    sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${libgda6}/lib/girepository-1.0');\n" lib/misc/db.js
    sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${gsound}/lib/girepository-1.0');\n" lib/common/sound.js
    sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${gsound}/lib/girepository-1.0');\n" lib/preferences/general/feedbackSettings.js
  '';

  installPhase = ''
    runHook preInstall
    mkdir -p $out/share/gnome-shell/extensions
    cp -r -T . $out/share/gnome-shell/extensions/copyous@boerdereinar.dev
    runHook postInstall
  '';

  passthru = {
    extensionPortalSlug = "copyous";
    extensionUuid = "copyous@boerdereinar.dev";
  };

  meta = with lib; {
    description = "Modern Clipboard Manager for GNOME";
    homepage = "https://github.com/boerdereinar/copyous";
    license = licenses.gpl3Plus;
    maintainers = with maintainers; [ jmir ];
    platforms = platforms.linux;
  };
})

    environment = {
      systemPackages = (with pkgs; [
        gnome-tweaks
        dconf-editor
        adw-gtk3
        libgda6 # needed for copyous
        gsound # needed for copyous
      ]) ++ (with pkgs.gnomeExtensions; [
        (copyous.overrideAttrs(oldAttrs: {
          buildInputs = [
          pkgs.libgda6
          pkgs.gsound
        ];
        preInstall = ''
          sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${pkgs.libgda6}/lib/girepository-1.0');\nGIRepository.Repository.dup_default().prepend_search_path('${pkgs.gsound}/lib/girepository-1.0');\n" lib/preferences/dependencies/dependencies.js
          sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${pkgs.libgda6}/lib/girepository-1.0');\n" lib/misc/db.js
          sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${pkgs.gsound}/lib/girepository-1.0');\n" lib/common/sound.js
          sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${pkgs.gsound}/lib/girepository-1.0');\n" lib/preferences/general/feedbackSettings.js
          '';
        }))
      ]);
    };

    home-manager.users.${user} =
      dconf.settings = {
        "org/gnome/shell" = {
          enabled-extensions = [
            "copyous@boerdereinar.dev"
          ];
        };
      };
    };

This might work for you, @marci

Don’t think you need gda and gsound in your system packages in this case