Files
nixos/modules/software/beets/default.nix
T
2026-04-21 12:24:54 +03:00

125 lines
2.3 KiB
Nix

{
config,
inputs,
lib,
pkgs,
xlib,
...
}:
let
stable = import inputs.nixpkgs-beets {
system = "x86_64-linux";
};
in
let
# depsOverlay = import ./dependencies.nix {
# # ./dependencies-full.nix if broken
# inherit (pkgs) fetchurl fetchgit fetchhg;
# inherit pkgs;
# };
# python3 = pkgs.python3.override {
# packageOverrides = depsOverlay;
# };
beetsEnv = pkgs.python314.withPackages (
ps: with ps; [
anyio # N
lap # N
llvmlite # N
scipy # N
requests-ratelimiter # N
pyrate-limiter # N
numpy # N
numba # N
et-xmlfile
markdown-it-py
mdurl
openpyxl
pygments
rich
setuptools # N
pysocks # N
beautifulsoup4
beetcamp
beets
certifi
charset-normalizer
colorama
confuse
discogs-client
# exceptiongroup
filetype
h11
httpcore
httpx
httpx-socks
socksio
idna
jellyfish
langdetect
mediafile
# munkres
# musicbrainzngs
mutagen
oauthlib
packaging
pillow
platformdirs
# pycountry
pylast
python-dateutil
pyyaml
requests
six
# sniffio
soupsieve
typing-extensions
unidecode
urllib3
]
);
in
{
# nixpkgs.config.allowBroken = true;
users = {
users = {
"${xlib.device.username}" = {
packages = [
beetsEnv
pkgs.mp3gain
pkgs.imagemagick
#ffmpeg
];
};
};
};
systemd.mounts = [
{
enable = true;
options = "bind,x-systemd.automount,nofail";
requires = [ "local-fs.target" ];
type = "none";
wantedBy = [ "multi-user.target" ];
what = "/home/${xlib.device.username}/Music";
where = "/mnt/beets/music";
}
];
# fileSystems."/mnt/beets/music" = {
# device = "/home/${xlib.device.username}/Music"; # "${xlib.dirs.vetymae-drive}/Users/User/Music"
# fsType = "none";
# options = [
# # "bind"
# "uid=1000"
# "gid=1000"
# "fmask=0077"
# "dmask=0077"
# "nofail"
# #"x-systemd.device-timeout=0"
# ];
# };
systemd.tmpfiles.rules = [
"z /mnt/beets 0700 ${xlib.device.username} users -" # beets absolute paths
];
}