diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-11-17 10:29:06 +0100 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-11-17 10:32:58 +0100 |
commit | a4b85b9601be68c66d3bf33bf05c1ef1c0032526 (patch) | |
tree | e36e53220dc1d36bf77e779d0f1e5ebfa90d524e /modules | |
parent | fix(legacy/wms/river): Ensure that `mpc` is available to river (diff) | |
download | nixos-config-a4b85b9601be68c66d3bf33bf05c1ef1c0032526.tar.gz nixos-config-a4b85b9601be68c66d3bf33bf05c1ef1c0032526.zip |
refactor(legacy/conf/mpd): Move to a unified `mpd` by-name module
Diffstat (limited to 'modules')
-rw-r--r-- | modules/by-name/mp/mpd/module.nix | 86 | ||||
-rw-r--r-- | modules/by-name/mp/mpd/mpc.nix | 37 | ||||
-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.nix | 1 | ||||
-rw-r--r-- | modules/home.legacy/conf/mpd/default.nix | 50 | ||||
-rw-r--r-- | modules/home.legacy/pkgs/default.nix | 15 |
6 files changed, 123 insertions, 66 deletions
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; - }) ]; }; |