summary refs log tree commit diff
path: root/nixos/modules/services/desktops/gnome
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2022-01-03 21:51:26 +0100
committerJan Tojnar <jtojnar@gmail.com>2022-01-03 22:25:03 +0100
commit3c1b474e44c01d49a79b6b9eaa49a1eccb736b09 (patch)
treed286b25a0877671c768d783256ff428c49961ce0 /nixos/modules/services/desktops/gnome
parent18c84ea816348e2a098390101b92d1e39a9dbd45 (diff)
downloadnixpkgs-3c1b474e44c01d49a79b6b9eaa49a1eccb736b09.tar
nixpkgs-3c1b474e44c01d49a79b6b9eaa49a1eccb736b09.tar.gz
nixpkgs-3c1b474e44c01d49a79b6b9eaa49a1eccb736b09.tar.bz2
nixpkgs-3c1b474e44c01d49a79b6b9eaa49a1eccb736b09.tar.lz
nixpkgs-3c1b474e44c01d49a79b6b9eaa49a1eccb736b09.tar.xz
nixpkgs-3c1b474e44c01d49a79b6b9eaa49a1eccb736b09.tar.zst
nixpkgs-3c1b474e44c01d49a79b6b9eaa49a1eccb736b09.zip
nixos/tracker: Define env var so it can find miners’ subcommands
tracker looks in its directory tree for executable files
to make available as subcommands. Users expect to find subcommands
from tracker-miners package but that fails as they are in different
tree. We also cannot change the lookup path since tracker-miners
also depends on a library from tracker package.

Until we can break the dependency cycle on package level:

   tracker -> tracker-miners -> tracker-sparql (tracker)

we need to work around it. I chose to set an environment
variable that overrides the subcommands lookup to a tree
symlinking files from both packages in GNOME NixOS module.

https://gitlab.gnome.org/GNOME/tracker/-/issues/341
Fixes: https://github.com/NixOS/nixpkgs/issues/153378
Diffstat (limited to 'nixos/modules/services/desktops/gnome')
-rw-r--r--nixos/modules/services/desktops/gnome/tracker-miners.nix2
-rw-r--r--nixos/modules/services/desktops/gnome/tracker.nix25
2 files changed, 26 insertions, 1 deletions
diff --git a/nixos/modules/services/desktops/gnome/tracker-miners.nix b/nixos/modules/services/desktops/gnome/tracker-miners.nix
index c9101f0caa6..9351007d30b 100644
--- a/nixos/modules/services/desktops/gnome/tracker-miners.nix
+++ b/nixos/modules/services/desktops/gnome/tracker-miners.nix
@@ -47,6 +47,8 @@ with lib;
 
     systemd.packages = [ pkgs.tracker-miners ];
 
+    services.gnome.tracker.subcommandPackages = [ pkgs.tracker-miners ];
+
   };
 
 }
diff --git a/nixos/modules/services/desktops/gnome/tracker.nix b/nixos/modules/services/desktops/gnome/tracker.nix
index 29d9662b0b8..fef399d0112 100644
--- a/nixos/modules/services/desktops/gnome/tracker.nix
+++ b/nixos/modules/services/desktops/gnome/tracker.nix
@@ -4,6 +4,9 @@
 
 with lib;
 
+let
+  cfg = config.services.gnome.tracker;
+in
 {
 
   meta = {
@@ -33,6 +36,15 @@ with lib;
         '';
       };
 
+      subcommandPackages = mkOption {
+        type = types.listOf types.package;
+        default = [ ];
+        internal = true;
+        description = ''
+          List of packages containing tracker3 subcommands.
+        '';
+      };
+
     };
 
   };
@@ -40,7 +52,7 @@ with lib;
 
   ###### implementation
 
-  config = mkIf config.services.gnome.tracker.enable {
+  config = mkIf cfg.enable {
 
     environment.systemPackages = [ pkgs.tracker ];
 
@@ -48,6 +60,17 @@ with lib;
 
     systemd.packages = [ pkgs.tracker ];
 
+    environment.variables = {
+      TRACKER_CLI_SUBCOMMANDS_DIR =
+        let
+          subcommandPackagesTree = pkgs.symlinkJoin {
+            name = "tracker-with-subcommands-${pkgs.tracker.version}";
+            paths = [ pkgs.tracker ] ++ cfg.subcommandPackages;
+          };
+        in
+        "${subcommandPackagesTree}/libexec/tracker3";
+    };
+
   };
 
 }