configurations for my servers and desktops
nix
nixos
flake
dots
dotfiles
1{pkgs, ...}: let
2 ffmpeg-fdkaac = pkgs.ffmpeg.override {
3 withFdkAac = true;
4 withUnfree = true;
5 };
6in {
7 environment.systemPackages = with pkgs; [
8 beets
9 ffmpeg-fdkaac
10 imagemagick
11 ];
12
13 environment.variables.BEETSDIR = "/srv/media/music/beets";
14
15 systemd.tmpfiles.rules = [
16 "d /srv/media/music/beets 2775 root share-media -"
17 ];
18
19 system.activationScripts.beetsConfig = ''
20 mkdir -p /srv/media/music/beets
21 chown root:share-media /srv/media/music/beets
22 chmod 2775 /srv/media/music/beets
23
24 cat > /srv/media/music/beets/config.yaml <<'EOF'
25 directory: /srv/media/music
26 library: /srv/media/music/beets/musiclibrary.db
27
28 original_date: yes
29 import:
30 from_scratch: yes
31 languages: en
32
33 plugins: chroma musicbrainz duplicates scrub fetchart embedart lyrics convert replaygain info mbsync
34 lyrics:
35 sources: lrclib *
36 convert:
37 auto: yes
38 dest: /srv/media/music
39 never_convert_lossy_files: yes
40 format: aac
41 formats:
42 aac:
43 command: ${ffmpeg-fdkaac}/bin/ffmpeg -i $source -y -vn -c:a libfdk_aac -vbr 5 -ar 44100 $dest
44 extension: m4a
45 flac:
46 command: ${ffmpeg-fdkaac}/bin/ffmpeg -i $source -ar 44100 -sample_fmt s16 -y $dest
47 extension: flac
48 fetchart:
49 cover_format: JPEG
50 enforce_ratio: yes
51 embedart:
52 auto: yes
53 maxwidth: 600
54 quality: 90
55 replaygain:
56 backend: ffmpeg
57 EOF
58 '';
59}