about summary refs log tree commit diff stats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/by-name/ad/adb/module.nix5
-rw-r--r--modules/by-name/bo/boot/module.nix2
-rw-r--r--modules/by-name/co/constants/module.nix2
-rw-r--r--modules/by-name/di/disks/module.nix11
-rwxr-xr-xmodules/by-name/lf/lf/commands/base.sh4
-rw-r--r--modules/by-name/lf/lf/module.nix2
-rwxr-xr-xmodules/by-name/lf/lf/wrappers/ll/ll.sh2
-rw-r--r--modules/by-name/lo/locale/keymaps/dvorak_modified.xkb8
-rw-r--r--modules/by-name/lo/locale/module.nix6
-rw-r--r--modules/by-name/mp/mpd/module.nix3
-rw-r--r--modules/by-name/mp/mpdpopm/module.nix65
-rw-r--r--modules/by-name/ne/networking/module.nix17
-rw-r--r--modules/by-name/ni/nixos-option/module.nix18
-rw-r--r--modules/by-name/ni/nixos-shell/module.nix2
-rwxr-xr-xmodules/by-name/ni/nixos-shell/nixos-shell.sh2
-rw-r--r--modules/by-name/nv/nvim/plgs/femaco/default.nix3
-rw-r--r--modules/by-name/nv/nvim/plgs/neorg/default.nix4
-rw-r--r--modules/by-name/nv/nvim/plgs/treesitter/default.nix44
-rw-r--r--modules/by-name/nv/nvim/plgs/vim-tex/default.nix5
-rw-r--r--modules/by-name/qu/qutebrowser/include/redirects.py2
-rw-r--r--modules/by-name/ri/river/keymap.nix2
-rw-r--r--modules/by-name/ri/river/module.nix1
-rw-r--r--modules/common/projects.json1
-rw-r--r--modules/home.legacy/conf/beets/default.nix17
-rw-r--r--modules/home.legacy/conf/beets/plugins.nix9
-rw-r--r--modules/home.legacy/conf/beets/plugins/default.nix1
-rw-r--r--modules/home.legacy/conf/beets/plugins/ihate/default.nix1
-rw-r--r--modules/home.legacy/conf/beets/plugins/inline/default.nix4
-rw-r--r--modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix42
29 files changed, 162 insertions, 123 deletions
diff --git a/modules/by-name/ad/adb/module.nix b/modules/by-name/ad/adb/module.nix
index cf13168a..89cb1439 100644
--- a/modules/by-name/ad/adb/module.nix
+++ b/modules/by-name/ad/adb/module.nix
@@ -10,6 +10,7 @@
 {
   lib,
   config,
+  pkgs,
   ...
 }: let
   cfg = config.soispha.services.adb;
@@ -25,7 +26,9 @@ in {
   };
 
   config = lib.mkIf cfg.enable {
-    programs.adb.enable = true;
+    environment.systemPackages = [
+      pkgs.android-tools
+    ];
 
     users = {
       users."${cfg.user}".extraGroups = ["adbusers"];
diff --git a/modules/by-name/bo/boot/module.nix b/modules/by-name/bo/boot/module.nix
index dfcd14b7..4b95aedf 100644
--- a/modules/by-name/bo/boot/module.nix
+++ b/modules/by-name/bo/boot/module.nix
@@ -46,7 +46,7 @@ in {
     # #    stay on disk forever) <2024-05-11>
     # copyExtraFiles = ''
     #   echo "[systemd-boot] copying files to ${bootMountPoint}"
-    #   empty_file=$(mktemp)
+    #   empty_file=$(mktemp boot_empty_file_XXX)
     #
     #   ${lib.concatStrings (lib.mapAttrsToList (n: v:
     #     /*
diff --git a/modules/by-name/co/constants/module.nix b/modules/by-name/co/constants/module.nix
index 5711e9cf..493ead1f 100644
--- a/modules/by-name/co/constants/module.nix
+++ b/modules/by-name/co/constants/module.nix
@@ -22,6 +22,7 @@
     ids.uids = {
       # Keep this sorted with `!sort --numeric-sort --key=2 --field-separator="="`
 
+      wpa_supplicant = 986;
       dhcpcd = 992;
       systemd-oom = 993;
       sshd = 994;
@@ -37,6 +38,7 @@
       # Please add your groups to the users and inherit them here.
       # This avoids having an user/group id mismatch.
 
+      wpa_supplicant = 986;
       dhcpcd = 987;
       lpadmin = 988;
       resolvconf = 989;
diff --git a/modules/by-name/di/disks/module.nix b/modules/by-name/di/disks/module.nix
index d5746ecf..3e9d4614 100644
--- a/modules/by-name/di/disks/module.nix
+++ b/modules/by-name/di/disks/module.nix
@@ -17,7 +17,7 @@
   # FIXME: The iso redeploy requires a bigger efi partition  <2024-05-12>
   cfg = config.soispha.disks;
   defaultMountOptions = [
-    "compress-force=zstd:15" # This saves disk space, at a performance cost
+    "compress=zstd:3" # This saves disk space, at a performance cost
     "noatime" # should have some performance upsides, and I don't use it anyways
     "lazytime" # make time changes in memory
   ];
@@ -86,7 +86,10 @@ in {
                       };
                       "swap" = {
                         mountpoint = "/swap";
-                        mountOptions = defaultMountOptions;
+                        mountOptions = [
+                          "noatime" # should have some performance upsides, and I don't use it anyways
+                          "lazytime" # make time changes in memory
+                        ];
                       };
                     };
                   };
@@ -115,12 +118,12 @@ in {
           fsType = "tmpfs";
           mountOptions = ["defaults" "size=50%" "mode=0755"];
         };
-        "/nix/var/nix/builds" = {
+        "/nix/var/nix/b" = {
           fsType = "tmpfs";
           mountOptions = [
             "defaults"
             "noswap" # Otherwise, we might run into io-based slowdowns
-            "size=75%"
+            "size=80%"
             "mode=0755"
           ];
         };
diff --git a/modules/by-name/lf/lf/commands/base.sh b/modules/by-name/lf/lf/commands/base.sh
index 99852c3e..7003d76c 100755
--- a/modules/by-name/lf/lf/commands/base.sh
+++ b/modules/by-name/lf/lf/commands/base.sh
@@ -41,11 +41,11 @@ prompt() {
 #   set -- "$@" "$file"
 # done < "$(echo "$fx" | tmp)"
 tmp() {
-    __base_tmp_temporary_file="$(mktemp --tmpdir="$__base_tmp_temporary_directory")"
+    __base_tmp_temporary_file="$(mktemp -t --tmpdir="$__base_tmp_temporary_directory" lf_commands_tmp_fun_XXXXXXXX )"
     cat >"$__base_tmp_temporary_file"
     echo "$__base_tmp_temporary_file"
 }
-__base_tmp_temporary_directory="$(mktemp --directory)"
+__base_tmp_temporary_directory="$(mktemp -t --directory lf_commands_tmp_fun_XXXXXXXXXXXX)"
 trap 'rm --recursive "$__base_tmp_temporary_directory"' EXIT
 
 # Run a lf command on the current lf client
diff --git a/modules/by-name/lf/lf/module.nix b/modules/by-name/lf/lf/module.nix
index e66c3a8a..8dfd0c52 100644
--- a/modules/by-name/lf/lf/module.nix
+++ b/modules/by-name/lf/lf/module.nix
@@ -100,7 +100,7 @@ in {
           # and keep running through `autoquit = false`.
           # (Otherwise, the remote command is silently dropped: https://github.com/gokcehan/lf/issues/495)
           &{{
-            tmp="$(mktemp)"
+            tmp="$(mktemp -t lf_make_map_dynamic_mapping_source_XXXXX)"
             ${lib.getExe pkgs.lf-make-map} --depth 4 generate ~/media ~/repos ~/documents >"$tmp"
 
             lf -remote "send $id source $tmp"
diff --git a/modules/by-name/lf/lf/wrappers/ll/ll.sh b/modules/by-name/lf/lf/wrappers/ll/ll.sh
index e012cffa..ce29fd97 100755
--- a/modules/by-name/lf/lf/wrappers/ll/ll.sh
+++ b/modules/by-name/lf/lf/wrappers/ll/ll.sh
@@ -10,7 +10,7 @@
 # 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>.
 
-last_directory="$(mktemp)"
+last_directory="$(mktemp -t ll_last_directory_XXXXXXX)"
 cleanup() {
     rm "$last_directory"
 }
diff --git a/modules/by-name/lo/locale/keymaps/dvorak_modified.xkb b/modules/by-name/lo/locale/keymaps/dvorak_modified.xkb
index 092e17ea..3893e605 100644
--- a/modules/by-name/lo/locale/keymaps/dvorak_modified.xkb
+++ b/modules/by-name/lo/locale/keymaps/dvorak_modified.xkb
@@ -2,11 +2,15 @@ partial alphanumeric_keys
 xkb_symbols "dvorak-modified" {
     name[Group1]= "Dvorak English with additional keys";
 
+    // German
+    key <AC01>  {[  a,  A,  adiaeresis,  Adiaeresis]};
     key <AC02>  {[  o,  O,  odiaeresis,  Odiaeresis]};
     key <AC04>  {[  u,  U,  udiaeresis,  Udiaeresis]};
-    key <AC01>  {type[Group1]="EIGHT_LEVEL",
-                 [  a,  A,  adiaeresis,  Adiaeresis,  aring,  Aring]};
 
+    // Missing Swedish letter (the rest is in the German ones)
+    key <AC07>  {[  h,  H,  aring,  Aring]};
+
+    // Slovenian
     key <AC10> {[  s,  S,  scaron,  Scaron]};
     key <AD08> {[  c,  C,  ccaron,  Ccaron]};
     key <AB10> {[  z,  Z,  zcaron,  Zcaron]};
diff --git a/modules/by-name/lo/locale/module.nix b/modules/by-name/lo/locale/module.nix
index 17096731..3c9c646c 100644
--- a/modules/by-name/lo/locale/module.nix
+++ b/modules/by-name/lo/locale/module.nix
@@ -37,10 +37,10 @@ in {
     };
 
     i18n = {
-      defaultLocale = "en_CA.UTF-8";
+      defaultLocale = "sv_SE.UTF-8";
       extraLocaleSettings = {
-        LANGUAGE = "en_CA:en_US:en";
-        LC_TIME = "en_DK.UTF-8";
+        LANGUAGE = "sv_SE:en_CA:en_US:en";
+        LC_TIME = "sv_SE.UTF-8";
         LC_COLLATE = "C.UTF-8";
       };
     };
diff --git a/modules/by-name/mp/mpd/module.nix b/modules/by-name/mp/mpd/module.nix
index b7c7ab5a..37c648c6 100644
--- a/modules/by-name/mp/mpd/module.nix
+++ b/modules/by-name/mp/mpd/module.nix
@@ -71,6 +71,7 @@ in {
 
         extraConfig = ''
           metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc,comment"
+
           # Updated by the beets `mpdupdate` plugin
           auto_update "no"
 
@@ -82,6 +83,8 @@ in {
           replaygain "track"
           replaygain_limit "yes"
 
+          sticker_file "${cfg.directories.data}/sticker.sql"
+
           #database {
           #       plugin "simple"
           #       path "~/.local/share/mpd/db
diff --git a/modules/by-name/mp/mpdpopm/module.nix b/modules/by-name/mp/mpdpopm/module.nix
new file mode 100644
index 00000000..3524554c
--- /dev/null
+++ b/modules/by-name/mp/mpdpopm/module.nix
@@ -0,0 +1,65 @@
+# 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,
+  pkgs,
+  libraries,
+  lib,
+  ...
+}: let
+  cfg = config.soispha.services.mpdpopm;
+
+  settingsFormat = pkgs.formats.json {};
+in {
+  options.soispha.services.mpdpopm = {
+    enable = libraries.base.options.mkEnable "mpdpopm";
+
+    settings = lib.mkOption {
+      # Setting this type allows for correct merging behavior
+      inherit (settingsFormat) type;
+      default = {};
+      description = ''
+        Configuration for foo, see
+        <link xlink:href="https://example.com/docs/foo"/>
+        for supported settings.
+      '';
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    soispha.services.mpdpopm.settings = {
+      version = "1";
+      log = "${config.home-manager.users.soispha.xdg.dataHome}/mpdpopm/log";
+
+      conn.Local = {
+        path = config.home-manager.users.soispha.home.sessionVariables.MPD_HOST;
+      };
+
+      local_music_dir = config.soispha.services.mpd.directories.music;
+    };
+
+    home-manager.users.soispha = {
+      systemd.user.services.mpdpopm = {
+        Unit = {
+          Description = "mpdpopm ratings and playcounts for MPD";
+          Requires = ["mpd.service"];
+          After = ["mpd.service"];
+        };
+
+        Service = {
+          Restart = "on-failure";
+          ExecStart = "${lib.getExe' pkgs.mpdpopm "mpdpopmd"} --config ${settingsFormat.generate "config.json" cfg.settings}";
+        };
+
+        Install = {WantedBy = ["default.target"];};
+      };
+    };
+  };
+}
diff --git a/modules/by-name/ne/networking/module.nix b/modules/by-name/ne/networking/module.nix
index ea080ea4..075a1a5a 100644
--- a/modules/by-name/ne/networking/module.nix
+++ b/modules/by-name/ne/networking/module.nix
@@ -99,12 +99,17 @@ in {
         soispha.impermanence.directories = [
           "/etc/NetworkManager"
         ];
-
-        users.users = {
-          "${cfg.userName}".extraGroups = [
-            "networkmanager" # allows to configure NetworkManager as this user
-          ];
-          nm-iodine.uid = config.soispha.constants.ids.uids.nm-iodine;
+        users = {
+          users = {
+            "${cfg.userName}".extraGroups = [
+              "networkmanager" # allows to configure NetworkManager as this user
+            ];
+            nm-iodine.uid = config.soispha.constants.ids.uids.nm-iodine;
+            wpa_supplicant.uid = config.soispha.constants.ids.uids.wpa_supplicant;
+          };
+          groups = {
+            wpa_supplicant.gid = config.soispha.constants.ids.gids.wpa_supplicant;
+          };
         };
       })
     ]);
diff --git a/modules/by-name/ni/nixos-option/module.nix b/modules/by-name/ni/nixos-option/module.nix
new file mode 100644
index 00000000..0053d357
--- /dev/null
+++ b/modules/by-name/ni/nixos-option/module.nix
@@ -0,0 +1,18 @@
+{
+  config,
+  lib,
+  libraries,
+  ...
+}: let
+  cfg = config.soispha.programs.nixos-option;
+in {
+  options.soispha.programs.nixos-option = {
+    enable = libraries.base.options.mkEnable "nixos-option";
+  };
+
+  config = lib.mkIf cfg.enable {
+    # NOTE: We disable nixos-option here explicitly, because I never used it, and it
+    # depends on cppnix. <2025-12-11>
+    system.tools.nixos-option.enable = false;
+  };
+}
diff --git a/modules/by-name/ni/nixos-shell/module.nix b/modules/by-name/ni/nixos-shell/module.nix
index 219f080d..8dda2890 100644
--- a/modules/by-name/ni/nixos-shell/module.nix
+++ b/modules/by-name/ni/nixos-shell/module.nix
@@ -91,7 +91,7 @@ in {
       modules = [
         {
           # TODO(@bpeetz): This should be bumped each release. <2025-05-17>
-          system.stateVersion = "25.05";
+          system.stateVersion = "25.11";
         }
 
         cfg.configuration.value
diff --git a/modules/by-name/ni/nixos-shell/nixos-shell.sh b/modules/by-name/ni/nixos-shell/nixos-shell.sh
index 390e60b1..3b34019a 100755
--- a/modules/by-name/ni/nixos-shell/nixos-shell.sh
+++ b/modules/by-name/ni/nixos-shell/nixos-shell.sh
@@ -10,7 +10,7 @@
 # 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>.
 
-SHARED_DIR="$(mktemp --directory)"
+SHARED_DIR="$(mktemp -t --directory "nixos_shell_XXXXXXXXX")"
 cleanup() {
     rm --recursive "$SHARED_DIR"
 }
diff --git a/modules/by-name/nv/nvim/plgs/femaco/default.nix b/modules/by-name/nv/nvim/plgs/femaco/default.nix
index 0388844a..eac6b393 100644
--- a/modules/by-name/nv/nvim/plgs/femaco/default.nix
+++ b/modules/by-name/nv/nvim/plgs/femaco/default.nix
@@ -14,7 +14,8 @@
 }: let
   cfg = config.soispha.programs.nvim;
 in {
-  home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+  # TODO: Re-active this plugin, when it does no longer depend on `treesitter-legacy` <2026-01-18>
+  home-manager.users.soispha.programs.nixvim = lib.mkIf false {
     plugins.femaco = {
       enable = true;
     };
diff --git a/modules/by-name/nv/nvim/plgs/neorg/default.nix b/modules/by-name/nv/nvim/plgs/neorg/default.nix
index ea451d3a..5ed87f0e 100644
--- a/modules/by-name/nv/nvim/plgs/neorg/default.nix
+++ b/modules/by-name/nv/nvim/plgs/neorg/default.nix
@@ -14,7 +14,9 @@
 }: let
   cfg = config.soispha.programs.nvim;
 in {
-  home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+  # TODO: Re-active, whence neorg actually builds with all the treesitter grammars
+  # activated <2026-01-18>
+  home-manager.users.soispha.programs.nixvim = lib.mkIf false {
     extraFiles = {
       "ftplugin/norg.lua".text = ''
         ${lib.strings.fileContents ./key_mappings.lua}
diff --git a/modules/by-name/nv/nvim/plgs/treesitter/default.nix b/modules/by-name/nv/nvim/plgs/treesitter/default.nix
index ed1499f8..1377cb8a 100644
--- a/modules/by-name/nv/nvim/plgs/treesitter/default.nix
+++ b/modules/by-name/nv/nvim/plgs/treesitter/default.nix
@@ -26,45 +26,23 @@ in {
     plugins.treesitter = {
       enable = true;
 
+      highlight.enable = true;
+      indent.enable = true;
+      folding.enable = false;
+
       # inject nixvim specific highlighting (eg in extraConfigLua).
       nixvimInjections = true;
 
-      nixGrammars = true;
-      grammarPackages =
-        # Append the `tree-sitter-yts` grammar to all the other grammars.
-        # TODO: Find a better way to do this. <2024-11-08>
-        config.home-manager.users.soispha.programs.nixvim.plugins.treesitter.package.passthru.allGrammars
-        ++ [pkgs.tree-sitter-yts];
-
-      settings = {
-        auto_install = false;
-        ensureInstalled = "all";
-        indent.enable = true;
-        disabledLanguages = [];
+      grammarPackages = pkgs.vimPlugins.nvim-treesitter.allGrammars ++ [pkgs.tree-sitter-yts];
 
-        highlight = {
-          enable = true;
-          disable = [];
+      # Register the parser to filetype
+      languageRegister.yts = "yts";
+    };
 
-          #  Setting this to true will run `:h syntax` and tree-sitter at the same time.
-          #  Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-          #  Using this option may slow down your editor; and you may see some duplicate highlights.
-          #  Instead of true it can also be a list of languages
-          additionalVimRegexHighlighting = [];
-        };
+    # TODO: Is that necessary? <2026-01-18>
+    # extraPlugins = [pkgs.tree-sitter-yts];
 
-        incrementalSelection = {
-          enable = true;
-          keymaps = {
-            # TODO: include these in the which-key description
-            initSelection = "gnn"; #  set to `false` to disable one of the mappings
-            nodeIncremental = "grn";
-            scopeIncremental = "grc";
-            nodeDecremental = "grm";
-          };
-        };
-      };
-    };
+    # TODO: Remove this by moving the queries in the package to `queries/<lang>/...`' <2026-01-18>
     extraFiles = {
       "queries/yts/highlights.scm".text = ''
         ${lib.strings.fileContents "${pkgs.tree-sitter-yts}/queries/highlights.scm"}
diff --git a/modules/by-name/nv/nvim/plgs/vim-tex/default.nix b/modules/by-name/nv/nvim/plgs/vim-tex/default.nix
index 9ee657c3..71422f94 100644
--- a/modules/by-name/nv/nvim/plgs/vim-tex/default.nix
+++ b/modules/by-name/nv/nvim/plgs/vim-tex/default.nix
@@ -14,11 +14,12 @@
 }: let
   cfg = config.soispha.programs.nvim;
 in {
-  home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+  # TODO: Do I still need this module at all? <2026-01-18>
+  home-manager.users.soispha.programs.nixvim = lib.mkIf false {
     opts.conceallevel = 0;
 
     plugins.vimtex = {
-      enable = false;
+      enable = true;
       settings = {
         view_method = "zathura";
         quickfix_mode = -1;
diff --git a/modules/by-name/qu/qutebrowser/include/redirects.py b/modules/by-name/qu/qutebrowser/include/redirects.py
index 23456a25..63a44ecf 100644
--- a/modules/by-name/qu/qutebrowser/include/redirects.py
+++ b/modules/by-name/qu/qutebrowser/include/redirects.py
@@ -38,7 +38,7 @@ REDIRECT_MAP: typing.Dict[str, typing.Callable[..., typing.Optional[bool]]] = {
     # Source: https://libredirect.github.io/
     "medium.com": partial(farside_redir, "scribe"),
     "stackoverflow.com": partial(farside_redir, "anonymousoverflow"),
-    "goodreads.com": partial(farside_redir, "biblioreads"),
+    # "goodreads.com": partial(farside_redir, "biblioreads"),
 }
 
 
diff --git a/modules/by-name/ri/river/keymap.nix b/modules/by-name/ri/river/keymap.nix
index ca7ab69d..9bcbf387 100644
--- a/modules/by-name/ri/river/keymap.nix
+++ b/modules/by-name/ri/river/keymap.nix
@@ -79,6 +79,8 @@ in {
           "n" = mkSpawn pkgs.mpp "next" {};
           "p" = mkSpawn pkgs.mpp "prev" {};
           "t" = mkSpawn pkgs.mpp "toggle" {};
+          "g" = mkSpawn' pkgs.mpdpopm "mpdpopm" "rating inc" {once = true;};
+          "b" = mkSpawn' pkgs.mpdpopm "mpdpopm" "rating decr" {once = true;};
         };
 
         # Select tags for view.
diff --git a/modules/by-name/ri/river/module.nix b/modules/by-name/ri/river/module.nix
index 75725a8d..893fdc77 100644
--- a/modules/by-name/ri/river/module.nix
+++ b/modules/by-name/ri/river/module.nix
@@ -212,6 +212,7 @@ in {
 
       home.packages = [
         (pkgs.callPackage ./river-start/package.nix {})
+        pkgs.swallow
       ];
 
       xdg.configFile."river/init" = {
diff --git a/modules/common/projects.json b/modules/common/projects.json
index ff08ce5a..e8e9bc39 100644
--- a/modules/common/projects.json
+++ b/modules/common/projects.json
@@ -49,6 +49,7 @@
       "gpg": {},
       "keyboard": {},
       "laptop": {},
+      "music": {},
       "nvim": {},
       "rss": {},
       "shell": {},
diff --git a/modules/home.legacy/conf/beets/default.nix b/modules/home.legacy/conf/beets/default.nix
index 2fec6881..0879b1a5 100644
--- a/modules/home.legacy/conf/beets/default.nix
+++ b/modules/home.legacy/conf/beets/default.nix
@@ -105,18 +105,17 @@ in {
     };
 
     mpdIntegration = {
-      enableStats = true;
       enableUpdate = true;
       host = config.home.sessionVariables.MPD_HOST;
     };
   };
 
-  # 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 ed78b49e..aaeab843 100644
--- a/modules/home.legacy/conf/beets/plugins.nix
+++ b/modules/home.legacy/conf/beets/plugins.nix
@@ -20,6 +20,8 @@
   # Extract things from the music file
   # "xtractor"
 
+  "musicbrainz"
+
   # Calculate replay gain
   "replaygain"
 
@@ -29,12 +31,6 @@
   # 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
@@ -58,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 d22369be..2b2bd607 100644
--- a/modules/home.legacy/conf/beets/plugins/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/default.nix
@@ -15,7 +15,6 @@
     ./inline
     ./lyrics
     ./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 564d5b4c..bf476c9f 100644
--- a/modules/home.legacy/conf/beets/plugins/inline/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/inline/default.nix
@@ -11,8 +11,6 @@
   programs.beets.settings.item_fields = {
     primary_artist =
       # python
-      ''
-        albumartists[0]
-      '';
+      ''albumartists[0]'';
   };
 }
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:";
-      }
-    ];
-  };
-}