Commit 1bcadf2c77af

Vincent Demeester <vincent@sbr.pm>
2026-02-11 07:12:07
fix(beets): use shared package with plugins for auto-import
The beets-auto-import.service was failing to import music files because it used the default beets package without the required lidarrfields and filetote plugins, causing ModuleNotFoundError and skipped imports. Extracted beetsWithPlugins definition to pkgs/default.nix as a shared package. Both home-manager configuration and the systemd service now use the same package, ensuring consistent plugin availability.
1 parent c69530e
Changed files (3)
home
common
services
pkgs
systems
home/common/services/beets.nix
@@ -12,26 +12,6 @@ let
   actualBaseDir =
     if baseDir != null then baseDir else "${config.home.homeDirectory}/desktop/music/test";
 
-  # Override beets with our custom plugins using the official pluginOverrides mechanism
-  beetsWithPlugins = pkgs.beets.override {
-    python3 = pkgs.python3.override {
-      packageOverrides = _self: super: {
-        beets = super.beets.override {
-          pluginOverrides = {
-            lidarrfields = {
-              enable = true;
-              propagatedBuildInputs = [ pkgs.beets-lidarr-fields ];
-            };
-            filetote = {
-              enable = true;
-              propagatedBuildInputs = [ pkgs.beets-filetote ];
-            };
-          };
-        };
-      };
-    };
-  };
-
   # Check if baseDir is within home directory
   isRelativeToHome = lib.hasPrefix config.home.homeDirectory actualBaseDir;
 
@@ -63,7 +43,7 @@ in
 {
   programs.beets = {
     enable = true;
-    package = beetsWithPlugins;
+    package = pkgs.beetsWithPlugins;
 
     settings = {
       # Library paths
pkgs/default.nix
@@ -39,6 +39,26 @@ in
   beets-lidarr-fields = pkgs.python3Packages.callPackage ./beets-lidarr-fields { };
   beets-filetote = pkgs.python3Packages.callPackage ./beets-filetote { };
 
+  # Beets with custom plugins (lidarrfields and filetote)
+  beetsWithPlugins = pkgs.beets.override {
+    python3 = pkgs.python3.override {
+      packageOverrides = _self: super: {
+        beets = super.beets.override {
+          pluginOverrides = {
+            lidarrfields = {
+              enable = true;
+              propagatedBuildInputs = [ pkgs.beets-lidarr-fields ];
+            };
+            filetote = {
+              enable = true;
+              propagatedBuildInputs = [ pkgs.beets-filetote ];
+            };
+          };
+        };
+      };
+    };
+  };
+
   chmouzies-ai = pkgs.callPackage ./chmouzies/ai.nix { };
   chmouzies-git = pkgs.callPackage ./chmouzies/git.nix { };
   chmouzies-kubernetes = pkgs.callPackage ./chmouzies/kubernetes.nix { };
systems/aion/extra.nix
@@ -175,6 +175,7 @@ in
 
     beets-auto-import = {
       enable = true;
+      package = pkgs.beetsWithPlugins; # Use same package as home-manager (includes lidarrfields and filetote plugins)
       user = "vincent";
       musicDir = "/neo/music";
       importDirs = [