aboutsummaryrefslogtreecommitdiffstats
path: root/modules/home.legacy/conf/beets
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/by-name/lf/lf/ctpv/prev/inode/fifo/default.nix (renamed from modules/home.legacy/conf/beets/plugins/fuzzy/default.nix)10
-rw-r--r--modules/by-name/lf/lf/ctpv/prev/inode/x-empty/default.nix (renamed from modules/home.legacy/conf/beets/plugins/lastgenre/default.nix)11
-rw-r--r--modules/by-name/pl/plymouth/module.nix (renamed from modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix)23
-rw-r--r--modules/home.legacy/conf/beets/default.nix59
-rw-r--r--modules/home.legacy/conf/beets/plugins.nix24
-rw-r--r--modules/home.legacy/conf/beets/plugins/default.nix5
-rw-r--r--modules/home.legacy/conf/beets/plugins/ihate/default.nix1
-rw-r--r--modules/home.legacy/conf/beets/plugins/inline/default.nix43
-rw-r--r--modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix42
-rw-r--r--modules/home.legacy/conf/beets/replace_override.yaml20
-rw-r--r--pkgs/by-name/sw/sw/package.nix (renamed from modules/home.legacy/conf/beets/plugins/play/default.nix)24
11 files changed, 89 insertions, 173 deletions
diff --git a/modules/home.legacy/conf/beets/plugins/fuzzy/default.nix b/modules/by-name/lf/lf/ctpv/prev/inode/fifo/default.nix
index de37c4e8..70cb9132 100644
--- a/modules/home.legacy/conf/beets/plugins/fuzzy/default.nix
+++ b/modules/by-name/lf/lf/ctpv/prev/inode/fifo/default.nix
@@ -8,8 +8,12 @@
# You should have received a copy of the License along with this program.
# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
- programs.beets.settings.fuzzy = {
- # The prefix denoting that a search should be run in fuzzy mode
- prefix = ".";
+ soispha.programs.lf.ctpv.previewers = {
+ fifo = {
+ previewer = ./fifo.sh;
+ priority = 1;
+ matches.mime = ["inode/fifo"];
+ dependencies = [];
+ };
};
}
diff --git a/modules/home.legacy/conf/beets/plugins/lastgenre/default.nix b/modules/by-name/lf/lf/ctpv/prev/inode/x-empty/default.nix
index 4d3dcfb0..670ad38b 100644
--- a/modules/home.legacy/conf/beets/plugins/lastgenre/default.nix
+++ b/modules/by-name/lf/lf/ctpv/prev/inode/x-empty/default.nix
@@ -8,9 +8,12 @@
# You should have received a copy of the License along with this program.
# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
- programs.beets.settings.lastgenre = {
- prefer_specific = false;
- # Lookup the track, not the album
- source = "track";
+ soispha.programs.lf.ctpv.previewers = {
+ empty = {
+ previewer = ./empty.sh;
+ priority = 1;
+ matches.mime = ["inode/x-empty"];
+ dependencies = [];
+ };
};
}
diff --git a/modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix b/modules/by-name/pl/plymouth/module.nix
index bdcb3721..5e4735b9 100644
--- a/modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix
+++ b/modules/by-name/pl/plymouth/module.nix
@@ -8,11 +8,26 @@
# You should have received a copy of the License along with this program.
# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
- lib,
+ config,
pkgs,
+ lib,
+ libraries,
...
-}: {
- programs.beets.settings.mbsubmit = {
- picard_path = lib.getExe pkgs.picard;
+}: let
+ cfg = config.soispha.services.plymouth;
+in {
+ options.soispha.services.plymouth = {
+ enable = libraries.base.options.mkEnable "plymouth";
+ };
+
+ config = lib.mkIf cfg.enable {
+ boot.plymouth = {
+ enable = true;
+
+ theme = "rings";
+ themePackages = [
+ pkgs.adi1090x-plymouth-themes
+ ];
+ };
};
}
diff --git a/modules/home.legacy/conf/beets/default.nix b/modules/home.legacy/conf/beets/default.nix
index de05ca24..43d6bff9 100644
--- a/modules/home.legacy/conf/beets/default.nix
+++ b/modules/home.legacy/conf/beets/default.nix
@@ -14,7 +14,6 @@
...
}: let
plugins = import ./plugins.nix {};
-
# TODO: Enable xtractor again <2025-03-29>
# package = pkgs.beets.override {
# pluginOverrides = {
@@ -23,7 +22,6 @@
# propagatedBuildInputs = [pkgs.beetsExtraPlugins.xtractor];
# };
# };
- package = pkgs.beets;
in {
imports = [
./plugins
@@ -31,7 +29,14 @@ in {
programs.beets = {
enable = true;
- inherit package;
+ package = pkgs.python3.pkgs.toPythonApplication (pkgs.python3.pkgs.beets.override
+ {
+ ffmpeg = pkgs.ffmpeg-headless;
+ keyfinder-cli = pkgs.keyfinder-cli.override {
+ ffmpeg =
+ pkgs.ffmpeg-headless;
+ };
+ });
settings = {
library = "${config.xdg.dataHome}/beets/library.db";
@@ -41,9 +46,12 @@ in {
color = true;
};
- include = [
- "./replace_override.yaml"
- ];
+ replace = {
+ "[/]" = "\\\\";
+ "[\\x00-\\x1f]" = "";
+ "\\s+$" = "";
+ "^\\s+" = "";
+ };
import = {
# move, instead of copying or linking the files
@@ -62,15 +70,21 @@ in {
};
paths = let
- j = lib.strings.concatStringsSep "/";
+ join = lib.strings.concatStringsSep "/";
in {
- default = j ["[Default]" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
- "albumtype:live" = j ["[Live]" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
+ "albumtype:live" = join [
+ "[Live, please delete]"
+ "$genre"
+ "$primary_artist" # (= $albumartists[0]). From inline plugin
+ "$album ($albumtype)"
+ "$track $title"
+ ];
- "albumtype:album" = j ["Music" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
- "albumtype::(Single|EP)" = j ["Music" "$genre" "$first_artist_singleton" "$album ($albumtype)" "$track $title"];
- "albumtype:compilation" = j ["Complilations" "$genre" "Various Artists" "$album ($albumtype)" "$track $title"];
- "albumtype:soundtrack" = j ["Soundtracks" "$genre" "$first_artist" "$album" "$track $title"];
+ default = join [
+ "$primary_artist" # (= $albumartists[0]). From inline plugin
+ "$album%aunique{}"
+ "$track $title"
+ ];
};
inherit plugins;
@@ -96,20 +110,17 @@ in {
};
mpdIntegration = {
- enableStats = true;
enableUpdate = true;
host = config.home.sessionVariables.MPD_HOST;
};
};
- xdg.configFile."beets/replace_override.yaml".source = ./replace_override.yaml;
-
- # Use the json formatter instead of the YAML one, as the YAML formatter mangles the
- # longer python inline strings.
- # YAML is a superset of JSON.
- xdg.configFile."beets/config.yaml".source =
- lib.mkForce
- ((pkgs.formats.json {}).generate
- "beets-config"
- config.programs.beets.settings);
+ # # Use the json formatter instead of the YAML one, as the YAML formatter mangles the
+ # # longer python inline strings.
+ # # YAML is a superset of JSON.
+ # xdg.configFile."beets/config.yaml".source =
+ # lib.mkForce
+ # ((pkgs.formats.json {}).generate
+ # "beets-config"
+ # config.programs.beets.settings);
}
diff --git a/modules/home.legacy/conf/beets/plugins.nix b/modules/home.legacy/conf/beets/plugins.nix
index 09eeac5b..aaeab843 100644
--- a/modules/home.legacy/conf/beets/plugins.nix
+++ b/modules/home.legacy/conf/beets/plugins.nix
@@ -17,39 +17,25 @@
# <2024-08-07>
# "scrub"
- # Help submitting stuff to music brainz
- "mbsubmit"
-
# Extract things from the music file
# "xtractor"
+ "musicbrainz"
+
# Calculate replay gain
"replaygain"
# Check for bad files
"badfiles"
- # Alows to use inline python for parsing tags
- "inline"
-
- # Support player integration
- "play"
-
# Show tags on files/queries
"info"
- # Create playlist from `play_count`/`skip_count` (gathered by the `mpdstats`
- # plugin)
- # Note that this should come _before_ the `mpdupdate` plugin, to ensure that
- # `mpdupgate` can propagate changed playlist to `mpd`.
- "smartplaylist"
+ "inline"
# Warn, when importing a matching item
"ihate"
- # Allow fuzzy searching
- "fuzzy"
-
# Filter out duplicates
"duplicates"
@@ -59,9 +45,6 @@
# Download album art
"fetchart"
- # Fetches tags from `last.fm` and adds them as genres to imported music
- "lastgenre"
-
# Run commands on events
"hook"
@@ -71,6 +54,5 @@
# Allow beets to understand deezer id's
# "deezer"
- "mpdstats" # Transfer MPD stats to beets
"mpdupdate" # Update MPD database on import
]
diff --git a/modules/home.legacy/conf/beets/plugins/default.nix b/modules/home.legacy/conf/beets/plugins/default.nix
index 65cd935c..2b2bd607 100644
--- a/modules/home.legacy/conf/beets/plugins/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/default.nix
@@ -11,15 +11,10 @@
imports = [
./badfiles
./duplicates
- ./fuzzy
./ihate
./inline
- ./lastgenre
./lyrics
- ./mbsubmit
- ./play
./replaygain
- ./smartplaylist
# ./xtractor
];
}
diff --git a/modules/home.legacy/conf/beets/plugins/ihate/default.nix b/modules/home.legacy/conf/beets/plugins/ihate/default.nix
index 51cb6f11..2356ec3b 100644
--- a/modules/home.legacy/conf/beets/plugins/ihate/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/ihate/default.nix
@@ -11,6 +11,7 @@
programs.beets.settings.ihate = {
warn = [
"title:commentary"
+ "title:live"
"albumtype:live"
];
};
diff --git a/modules/home.legacy/conf/beets/plugins/inline/default.nix b/modules/home.legacy/conf/beets/plugins/inline/default.nix
index b5655028..8dccdc20 100644
--- a/modules/home.legacy/conf/beets/plugins/inline/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/inline/default.nix
@@ -8,44 +8,9 @@
# You should have received a copy of the License along with this program.
# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
- programs.beets.settings = {
- item_fields = {
- # Taken from https://github.com/trapd00r/configs/blob/4f3dada5700846cca6c2869e6fa6b3c795b87b67/beets/config.yaml
- first_artist =
- /*
- python
- */
- ''
- # import an album to another artists directory, like:
- # Tom Jones │1999│ Burning Down the House [Single, CD, FLAC]
- # to The Cardigans/+singles/Tom Jones & the Cardigans │1999│ Burning Down the House [Single, CD, FLAC]
- # https://github.com/beetbox/beets/discussions/4012#discussioncomment-1021414
- # beet import --set myartist='The Cardigans'
- # we must first check to see if myartist is defined, that is, given on
- # import time, or we raise an NameError exception.
- try:
- myartist
- except NameError:
- import re
- return re.split(',|\\s+(feat(.?|uring)|&|(Vs|Ft).)', albumartist, 1, flags=re.IGNORECASE)[0]
- else:
- return myartist
- '';
-
- first_artist_singleton =
- /*
- python
- */
- ''
- try:
- myartist
- except NameError:
- import re
- return re.split(',|\\s+(feat(.?|uring)|&|(Vs|Ft).)', artist, 1, flags=re.IGNORECASE)[0]
- else:
- return myartist
- '';
- };
- album_fields = {};
+ programs.beets.settings.item_fields = {
+ primary_artist =
+ # python
+ ''dict(enumerate(albumartists)).get(0, artist)'';
};
}
diff --git a/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix b/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix
deleted file mode 100644
index 9b52c1ad..00000000
--- a/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-# nixos-config - My current NixOS configuration
-#
-# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-# This file is part of my nixos-config.
-#
-# You should have received a copy of the License along with this program.
-# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
-{config, ...}: {
- programs.beets.settings.smartplaylist = {
- relative_to = config.services.mpd.musicDirectory;
- playlist_dir = config.services.mpd.playlistDirectory;
- forward_slash = false;
-
- # Show the real m3u file paths, when running `--pretend`
- pretend_paths = true;
-
- playlists = [
- {
- name = "artists-$first_artist.m3u";
- query = "";
- }
- {
- name = "ratings-good.m3u";
- query = "rating:0.7..1.0";
- }
- {
- name = "ratings-mediocre.m3u";
- query = "rating:0.4..0.7";
- }
- {
- name = "ratings-bad.m3u";
- query = "rating:0.0..0.4";
- }
- {
- name = "not_played.m3u";
- query = "-play_count: artist:";
- }
- ];
- };
-}
diff --git a/modules/home.legacy/conf/beets/replace_override.yaml b/modules/home.legacy/conf/beets/replace_override.yaml
deleted file mode 100644
index aea5e54a..00000000
--- a/modules/home.legacy/conf/beets/replace_override.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-# nixos-config - My current NixOS configuration
-#
-# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-# This file is part of my nixos-config.
-#
-# You should have received a copy of the License along with this program.
-# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
-
----
-replace:
- '[\\/]': _
- '^\.': _
- '[\x00-\x1f]': _
- '[<>:"\?\*\|]': _
- '\.$': _
- '\s+$': ''
- '^\s+': ''
- '^-': _
diff --git a/modules/home.legacy/conf/beets/plugins/play/default.nix b/pkgs/by-name/sw/sw/package.nix
index 9d26f16a..dea7e16c 100644
--- a/modules/home.legacy/conf/beets/plugins/play/default.nix
+++ b/pkgs/by-name/sw/sw/package.nix
@@ -8,16 +8,18 @@
# You should have received a copy of the License along with this program.
# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
- lib,
- pkgs,
- config,
- ...
-}: {
- programs.beets.settings.play = {
- command = "${lib.getExe pkgs.mpc} $args add";
- relative_to = config.services.mpd.musicDirectory;
+ writeShellApplication,
+ # Dependencies
+ river-classic,
+}:
+writeShellApplication {
+ name = "sw";
+ text = builtins.readFile ./sw.sh;
- # Run the command with the returned paths as arguments
- raw = true;
- };
+ # We need to inherit the path, so that we can spawn stuff in a swallowed mode.
+ inheritPath = true;
+
+ runtimeInputs = [
+ river-classic
+ ];
}