nix/moduler/programs/beets/default.nix
2025-12-16 21:55:33 +01:00

66 lines
1.4 KiB
Nix

{ config, pkgs, ... }:
let
beetsConfig = pkgs.writeText "beets-config.yaml" ''
directory: ${config.home.homeDirectory}/Music
library: ${config.home.homeDirectory}/.config/beets/library.db
plugins:
- fetchart
- fish
- musicbrainz
- lyrics
- web
import:
move: yes
write: yes
fetchart:
auto: yes
lyrics:
auto: yes
web:
host: 127.0.0.1
port: 8337
'';
in
{
home.packages = with pkgs; [
beets
fish
# Common helpers used by beets/plugins
ffmpeg
imagemagick
# Optional but often useful with beets:
chromaprint
];
# Install beets config into ~/.config/beets/config.yaml
xdg.configFile."beets/config.yaml".source = beetsConfig;
# Convenience: ensure beet uses that config without needing BEETSCONFIG each time
home.sessionVariables = {
BEETSCONFIG = "${config.xdg.configHome}/beets/config.yaml";
};
# Optional: a user service for `beet web`
systemd.user.services.beets-web = {
Unit = {
Description = "Beets web plugin (user service)";
After = [ "network.target" ];
};
Service = {
ExecStart = "${pkgs.beets}/bin/beet web";
Restart = "on-failure";
Environment = [
"BEETSCONFIG=${config.xdg.configHome}/beets/config.yaml"
];
};
Install = { WantedBy = [ "default.target" ]; };
};
}