about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-11-17 10:29:06 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-11-17 10:32:58 +0100
commita4b85b9601be68c66d3bf33bf05c1ef1c0032526 (patch)
treee36e53220dc1d36bf77e779d0f1e5ebfa90d524e
parentfix(legacy/wms/river): Ensure that `mpc` is available to river (diff)
downloadnixos-config-a4b85b9601be68c66d3bf33bf05c1ef1c0032526.tar.gz
nixos-config-a4b85b9601be68c66d3bf33bf05c1ef1c0032526.zip
refactor(legacy/conf/mpd): Move to a unified `mpd` by-name module
Diffstat (limited to '')
-rw-r--r--flake/nixosConfigurations/common.nix15
-rw-r--r--modules/by-name/mp/mpd/module.nix86
-rw-r--r--modules/by-name/mp/mpd/mpc.nix37
-rw-r--r--modules/by-name/mp/mpd/mpdconf.example (renamed from modules/home.legacy/conf/mpd/mpdconf.example)0
-rw-r--r--modules/home.legacy/conf/default.nix1
-rw-r--r--modules/home.legacy/conf/mpd/default.nix50
-rw-r--r--modules/home.legacy/pkgs/default.nix15
-rwxr-xr-xpkgs/by-name/mp/mpp-beetrm/mpp-beetrm.sh (renamed from pkgs/by-name/mp/mpc-beetrm/mpc-beetrm.sh)0
-rw-r--r--pkgs/by-name/mp/mpp-beetrm/package.nix (renamed from pkgs/by-name/mp/mpc-beetrm/package.nix)4
-rwxr-xr-xpkgs/by-name/mp/mpp-lyrics/mpp-lyrics.sh (renamed from pkgs/by-name/mp/mpc-lyrics/mpc-lyrics.sh)0
-rw-r--r--pkgs/by-name/mp/mpp-lyrics/package.nix (renamed from pkgs/by-name/mp/mpc-lyrics/package.nix)4
-rwxr-xr-xpkgs/by-name/mp/mpp-searchadd/mpp-searchadd.sh (renamed from pkgs/by-name/mp/mpc-searchadd/mpc-searchadd.sh)0
-rw-r--r--pkgs/by-name/mp/mpp-searchadd/package.nix (renamed from pkgs/by-name/mp/mpc-searchadd/package.nix)4
-rwxr-xr-xpkgs/by-name/mp/mpp/mpp.sh6
14 files changed, 147 insertions, 75 deletions
diff --git a/flake/nixosConfigurations/common.nix b/flake/nixosConfigurations/common.nix
index d4660ef7..f2df9957 100644
--- a/flake/nixosConfigurations/common.nix
+++ b/flake/nixosConfigurations/common.nix
@@ -35,6 +35,21 @@
         user = "soispha";
       };
       fwupd.enable = true;
+      mpd = {
+        enable = true;
+        directories = let
+          data = "${config.home-manager.users.soispha.xdg.dataHome}/mpd";
+        in {
+          inherit data;
+          playlists = "${data}/playlists";
+          runtime = "/run/user/${builtins.toString config.users.users.soispha.uid}/mpd";
+          music = config.home-manager.users.soispha.programs.beets.settings.directory;
+        };
+        mpc = {
+          enable = true;
+          beetsPkg = config.home-manager.users.soispha.programs.beets.package;
+        };
+      };
       postgresql.enable = false;
       printing.enable = true;
       scanning.enable = true;
diff --git a/modules/by-name/mp/mpd/module.nix b/modules/by-name/mp/mpd/module.nix
new file mode 100644
index 00000000..6f045f9f
--- /dev/null
+++ b/modules/by-name/mp/mpd/module.nix
@@ -0,0 +1,86 @@
+{
+  config,
+  pkgs,
+  lib,
+  ...
+}: let
+  cfg = config.soispha.services.mpd;
+in {
+  imports = [
+    ./mpc.nix
+  ];
+
+  options.soispha.services.mpd = {
+    enable = lib.mkEnableOption "mpd";
+
+    directories = {
+      runtime = lib.mkOption {
+        type = lib.types.path;
+        description = "The directory to put the sockets and such things.";
+      };
+      playlists = lib.mkOption {
+        type = lib.types.path;
+        description = "The directory to put the playlists.";
+        default = "${cfg.directories.data}/playlists";
+      };
+      data = lib.mkOption {
+        type = lib.types.path;
+        description = "The directory to put general data.";
+      };
+      music = lib.mkOption {
+        type = lib.types.path;
+        description = ''
+          The directory to search for music files.
+
+          # Info
+          This should be the same value as [`config.home-manager.users.soispha.beets.settings.directory`], if you use beets.
+        '';
+      };
+    };
+  };
+
+  config.home-manager.users.soispha = let
+    socketPath = "${cfg.directories.runtime}/socket";
+  in
+    lib.mkIf cfg.enable {
+      home.sessionVariables = {
+        MPD_HOST = socketPath;
+      };
+
+      systemd.user.services.mpd.Service.ExecStartPre = lib.mkForce ''
+        ${pkgs.coreutils}/bin/mkdir --parents "${cfg.directories.data}" "${cfg.directories.playlists}" "${cfg.directories.runtime}"
+      '';
+
+      services.mpd = {
+        enable = true;
+        network = {
+          listenAddress = socketPath;
+        };
+        dataDir = cfg.directories.data;
+        playlistDirectory = cfg.directories.playlists;
+        musicDirectory = cfg.directories.music;
+
+        extraConfig = ''
+          metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc,comment"
+          # Updated by the beets `mpdupdate` plugin
+          auto_update "no"
+
+          audio_output {
+            type "pipewire"
+            name "pipewire"
+          }
+
+          replaygain "track"
+          replaygain_limit "yes"
+
+          #database {
+          #       plugin "simple"
+          #       path "~/.local/share/mpd/db
+          #       cache_directory "~/.local/share/mpd/cache"
+          #}
+
+          filesystem_charset		"UTF-8"
+        '';
+      };
+    };
+}
diff --git a/modules/by-name/mp/mpd/mpc.nix b/modules/by-name/mp/mpd/mpc.nix
new file mode 100644
index 00000000..031465fe
--- /dev/null
+++ b/modules/by-name/mp/mpd/mpc.nix
@@ -0,0 +1,37 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}: let
+  cfg = config.soispha.services.mpd.mpc;
+  parentCfg = config.soispha.services.mpd;
+in {
+  options.soispha.services.mpd.mpc = {
+    enable = lib.mkEnableOption "mpc with extensions";
+
+    beetsPkg = lib.mkOption {
+      type = lib.types.package;
+      description = "The package to use, when calling `beet`";
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    home-manager.users.soispha.home.packages = [
+      pkgs.mpp # Wrapper around `mpc` that allows the usage of `mpc-{beetsrm,lyrics,searchadd}` (below) without the `-`
+
+      # Removes the currently playing song from the disk and storage
+      (pkgs.mpp-beetrm.override {
+        beets = cfg.beetsPkg;
+      })
+      # Works like normal `mpc searchadd` but uses the `beets` query syntax
+      (pkgs.mpp-searchadd.override {
+        beets = cfg.beetsPkg;
+      })
+      # Displays the lyrics of the currently playing song
+      (pkgs.mpp-lyrics.override {
+        mpd_music_dir = parentCfg.directories.music;
+      })
+    ];
+  };
+}
diff --git a/modules/home.legacy/conf/mpd/mpdconf.example b/modules/by-name/mp/mpd/mpdconf.example
index eaa5e641..eaa5e641 100644
--- a/modules/home.legacy/conf/mpd/mpdconf.example
+++ b/modules/by-name/mp/mpd/mpdconf.example
diff --git a/modules/home.legacy/conf/default.nix b/modules/home.legacy/conf/default.nix
index e943f7b6..9d6d00ed 100644
--- a/modules/home.legacy/conf/default.nix
+++ b/modules/home.legacy/conf/default.nix
@@ -17,7 +17,6 @@
     ./mail
     ./mako
     ./mbsync
-    ./mpd
     ./mpv
     ./mumble
     ./neomutt
diff --git a/modules/home.legacy/conf/mpd/default.nix b/modules/home.legacy/conf/mpd/default.nix
deleted file mode 100644
index b30f6995..00000000
--- a/modules/home.legacy/conf/mpd/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  config,
-  pkgs,
-  lib,
-  osConfig,
-  ...
-}: let
-  dataDir = "${config.xdg.dataHome}/mpd";
-  playlistDirectory = "${dataDir}/playlists";
-  runtimeDir = "/run/user/${builtins.toString osConfig.users.users.soispha.uid}/mpd";
-in {
-  home.sessionVariables = {
-    MPD_HOST = "/run/user/${builtins.toString osConfig.users.users.soispha.uid}/mpd/socket";
-  };
-
-  systemd.user.services.mpd.Service.ExecStartPre = lib.mkForce ''
-    ${pkgs.coreutils}/bin/mkdir --parents "${dataDir}" "${playlistDirectory}" "${runtimeDir}"
-  '';
-
-  services.mpd = {
-    enable = true;
-    inherit dataDir playlistDirectory;
-    musicDirectory = config.programs.beets.settings.directory;
-    network = {
-      listenAddress = "${runtimeDir}/socket";
-    };
-
-    extraConfig = ''
-      metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc,comment"
-      # Updated by the beets `mpdupdate` plugin
-      auto_update "no"
-
-      audio_output {
-        type "pipewire"
-        name "pipewire"
-      }
-
-      replaygain "track"
-      replaygain_limit "yes"
-
-      #database {
-      #       plugin "simple"
-      #       path "~/.local/share/mpd/db
-      #       cache_directory "~/.local/share/mpd/cache"
-      #}
-
-      filesystem_charset		"UTF-8"
-    '';
-  };
-}
diff --git a/modules/home.legacy/pkgs/default.nix b/modules/home.legacy/pkgs/default.nix
index 2018805f..3d48287f 100644
--- a/modules/home.legacy/pkgs/default.nix
+++ b/modules/home.legacy/pkgs/default.nix
@@ -121,21 +121,6 @@ with pkgs; let
       Listen = [
         spodi # Wrapper around `spotdl`.
         sort_song # Sorts songs in the current directory.
-
-        mpp # Wrapper around `mpc` that allows the usage of `mpc-{beetsrm,lyrics,searchadd}` (below) without the `-`
-
-        # Removes the currently playing song from the disk and storage
-        (mpc-beetrm.override {
-          beets = config.programs.beets.package;
-        })
-        # Works like normal `mpc searchadd` but uses the `beets` query syntax
-        (mpc-searchadd.override {
-          beets = config.programs.beets.package;
-        })
-        # Displays the lyrics of the currently playing song
-        (mpc-lyrics.override {
-          mpd_music_dir = config.services.mpd.musicDirectory;
-        })
       ];
     };
 
diff --git a/pkgs/by-name/mp/mpc-beetrm/mpc-beetrm.sh b/pkgs/by-name/mp/mpp-beetrm/mpp-beetrm.sh
index 3209503c..3209503c 100755
--- a/pkgs/by-name/mp/mpc-beetrm/mpc-beetrm.sh
+++ b/pkgs/by-name/mp/mpp-beetrm/mpp-beetrm.sh
diff --git a/pkgs/by-name/mp/mpc-beetrm/package.nix b/pkgs/by-name/mp/mpp-beetrm/package.nix
index 99ca8bbd..24b56606 100644
--- a/pkgs/by-name/mp/mpc-beetrm/package.nix
+++ b/pkgs/by-name/mp/mpp-beetrm/package.nix
@@ -4,8 +4,8 @@
   beets,
 }:
 sysLib.writeShellScript {
-  name = "mpc-beetrm";
-  src = ./mpc-beetrm.sh;
+  name = "mpp-beetrm";
+  src = ./mpp-beetrm.sh;
   generateCompletions = false;
   keepPath = false;
 
diff --git a/pkgs/by-name/mp/mpc-lyrics/mpc-lyrics.sh b/pkgs/by-name/mp/mpp-lyrics/mpp-lyrics.sh
index 004c67c7..004c67c7 100755
--- a/pkgs/by-name/mp/mpc-lyrics/mpc-lyrics.sh
+++ b/pkgs/by-name/mp/mpp-lyrics/mpp-lyrics.sh
diff --git a/pkgs/by-name/mp/mpc-lyrics/package.nix b/pkgs/by-name/mp/mpp-lyrics/package.nix
index 08cc8e48..76b590c7 100644
--- a/pkgs/by-name/mp/mpc-lyrics/package.nix
+++ b/pkgs/by-name/mp/mpp-lyrics/package.nix
@@ -8,8 +8,8 @@
   mpd_music_dir ? "\${XDG_MUSIC_DIR}",
 }:
 sysLib.writeShellScript {
-  name = "mpc-lyrics";
-  src = ./mpc-lyrics.sh;
+  name = "mpp-lyrics";
+  src = ./mpp-lyrics.sh;
   generateCompletions = false;
   keepPath = false;
 
diff --git a/pkgs/by-name/mp/mpc-searchadd/mpc-searchadd.sh b/pkgs/by-name/mp/mpp-searchadd/mpp-searchadd.sh
index 3fe9a6b6..3fe9a6b6 100755
--- a/pkgs/by-name/mp/mpc-searchadd/mpc-searchadd.sh
+++ b/pkgs/by-name/mp/mpp-searchadd/mpp-searchadd.sh
diff --git a/pkgs/by-name/mp/mpc-searchadd/package.nix b/pkgs/by-name/mp/mpp-searchadd/package.nix
index fd9f94e6..a98472d1 100644
--- a/pkgs/by-name/mp/mpc-searchadd/package.nix
+++ b/pkgs/by-name/mp/mpp-searchadd/package.nix
@@ -4,8 +4,8 @@
   beets,
 }:
 sysLib.writeShellScript {
-  name = "mpc-searchadd";
-  src = ./mpc-searchadd.sh;
+  name = "mpp-searchadd";
+  src = ./mpp-searchadd.sh;
   generateCompletions = false;
   keepPath = false;
 
diff --git a/pkgs/by-name/mp/mpp/mpp.sh b/pkgs/by-name/mp/mpp/mpp.sh
index 0d636ac5..538a56ee 100755
--- a/pkgs/by-name/mp/mpp/mpp.sh
+++ b/pkgs/by-name/mp/mpp/mpp.sh
@@ -6,15 +6,15 @@ SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
 case "$1" in
 "searchadd")
     shift 1
-    mpc-searchadd "$@"
+    mpp-searchadd "$@"
     ;;
 "lyrics")
     shift 1
-    mpc-lyrics "$@"
+    mpp-lyrics "$@"
     ;;
 "beetrm")
     shift 1
-    mpc-beetrm "$@"
+    mpp-beetrm "$@"
     ;;
 *)
     mpc "$@"