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 | |
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
-rw-r--r-- | flake/nixosConfigurations/common.nix | 15 | ||||
-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 | ||||
-rwxr-xr-x | pkgs/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-x | pkgs/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-x | pkgs/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-x | pkgs/by-name/mp/mpp/mpp.sh | 6 |
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 "$@" |