From 152a3b3c55e74d7832fd881b068a4e5719f3b382 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Thu, 29 Feb 2024 21:50:04 -0500
Subject: [PATCH] home: add WIP mopidy config (need to fix pkg)

---
 home/profile/pc.nix              |  3 +++
 home/programs/default.nix        |  1 +
 home/programs/mopidy.nix         | 29 +++++++++++++++++++++++++++++
 pkgs/default.nix                 |  1 +
 pkgs/mopidy-autoplay/default.nix | 25 +++++++++++++++++++++++++
 5 files changed, 59 insertions(+)
 create mode 100644 home/programs/mopidy.nix
 create mode 100644 pkgs/mopidy-autoplay/default.nix

diff --git a/home/profile/pc.nix b/home/profile/pc.nix
index 2e52b85..432cd72 100644
--- a/home/profile/pc.nix
+++ b/home/profile/pc.nix
@@ -13,6 +13,9 @@ in
   config = lib.mkIf cfg.enable {
     nixfiles = {
       profile.base.enable = true;
+      programs = {
+        mopidy.enable = true;
+      };
       packageSets = {
         communication.enable = true;
         dev.enable = true;
diff --git a/home/programs/default.nix b/home/programs/default.nix
index 73afff3..72cfdfc 100644
--- a/home/programs/default.nix
+++ b/home/programs/default.nix
@@ -2,5 +2,6 @@
 {
   imports = [
     ./comma.nix
+    ./mopidy.nix
   ];
 }
diff --git a/home/programs/mopidy.nix b/home/programs/mopidy.nix
new file mode 100644
index 0000000..f49a700
--- /dev/null
+++ b/home/programs/mopidy.nix
@@ -0,0 +1,29 @@
+{ lib, pkgs, config, outputs, osConfig ? {}, ... }:
+let
+  cfg = config.nixfiles.programs.mopidy;
+in
+{
+  options.nixfiles.programs.mopidy = {
+    enable = lib.mkEnableOption "mopidy configuration";
+  };
+  config = lib.mkIf cfg.enable {
+    xdg.configFile."mopidy/mopidy.conf".enable = lib.mkForce false;
+    services.mopidy = {
+      enable = lib.mkDefault true;
+      extensionPackages = with pkgs; [
+        mopidy-mpd
+        mopidy-iris
+        mopidy-mpris
+        mopidy-local
+        mopidy-jellyfin
+        mopidy-bandcamp
+        mopidy-ytmusic
+        mopidy-soundcloud
+        # outputs.packages.${pkgs.system}.mopidy-autoplay
+      ];
+    };
+    home.packages = with pkgs; [
+      (ncmpcpp.override { visualizerSupport = true; })
+    ];
+  };
+}
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 8ff9479..f6eebbc 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -7,4 +7,5 @@ in
   google-fonts = callPackage ./google-fonts { };
   wm-helpers = callPackage ./wm-helpers { };
   atool = callPackage ./atool-wrapped { };
+  mopidy-autoplay = callPackage ./mopidy-autoplay { };
 }
diff --git a/pkgs/mopidy-autoplay/default.nix b/pkgs/mopidy-autoplay/default.nix
new file mode 100644
index 0000000..a043147
--- /dev/null
+++ b/pkgs/mopidy-autoplay/default.nix
@@ -0,0 +1,25 @@
+{ lib, python3Packages, fetchPypi, mopidy }:
+
+# based on mopidy/jellyfin.nix
+python3Packages.buildPythonApplication rec {
+  pname = "mopidy-autoplay";
+  version = "0.2.3";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "Mopidy-Autoplay";
+    sha256 = "sha256-E2Q+Cn2LWSbfoT/gFzUfChwl67Mv17uKmX2woFz/3YM=";
+  };
+
+  propagatedBuildInputs = [ mopidy ];
+
+  # no tests implemented
+  doCheck = false;
+  pythonImportsCheck = [ "mopidy_autoplay" ];
+
+   meta = with lib; {
+     homepage = "https://codeberg.org/sph/mopidy-autoplay";
+     description = "Mopidy extension to automatically pick up where you left off and start playing the last track from the position before Mopidy was shut down.";
+     license = licenses.asl20;
+   };
+}