2024-11-30 20:11:32 +03:00
|
|
|
{ config, pkgs, ... }:
|
2024-08-03 07:09:55 +03:00
|
|
|
|
|
|
|
let
|
|
|
|
UID = 1102;
|
2024-11-30 20:11:32 +03:00
|
|
|
|
|
|
|
feishin = pkgs.callPackage ./feishin.nix {};
|
|
|
|
feishinConfig = builtins.replaceStrings [ "\n" ] [ "" ] ''
|
|
|
|
window.SERVER_URL="https://navi.stupid.fish";
|
|
|
|
window.SERVER_NAME="stupid.fish";
|
|
|
|
window.SERVER_TYPE="navidrome";
|
|
|
|
window.SERVER_LOCK=true;
|
|
|
|
'';
|
2024-08-03 07:09:55 +03:00
|
|
|
in {
|
2024-11-23 16:37:34 +03:00
|
|
|
desu.secrets.navidrome-env.owner = "navidrome";
|
2024-08-03 07:09:55 +03:00
|
|
|
|
|
|
|
users.users.navidrome = {
|
|
|
|
isNormalUser = true;
|
|
|
|
uid = UID;
|
2024-11-30 20:11:32 +03:00
|
|
|
extraGroups = [ "geesefs" ];
|
2024-08-03 07:09:55 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
virtualisation.oci-containers.containers.navidrome = {
|
2024-11-30 20:11:32 +03:00
|
|
|
image = "deluan/navidrome:0.53.3";
|
2024-08-03 07:09:55 +03:00
|
|
|
volumes = [
|
|
|
|
"${./navidrome.toml}:/navidrome.toml"
|
2024-11-30 20:11:32 +03:00
|
|
|
"/mnt/s3-desu-priv-encrypted/music:/music/s3:ro"
|
|
|
|
"/srv/navidrome:/data"
|
2024-08-03 07:09:55 +03:00
|
|
|
];
|
|
|
|
environment = {
|
|
|
|
ND_CONFIGFILE = "/navidrome.toml";
|
|
|
|
};
|
|
|
|
environmentFiles = [
|
2024-11-23 16:37:34 +03:00
|
|
|
config.desu.secrets.navidrome-env.path
|
2024-08-03 07:09:55 +03:00
|
|
|
];
|
2024-11-30 20:11:32 +03:00
|
|
|
user = "${builtins.toString UID}:${builtins.toString UID}";
|
|
|
|
extraOptions = [
|
|
|
|
"--group-add=${builtins.toString config.users.groups.geesefs.gid}"
|
|
|
|
];
|
2024-08-03 07:09:55 +03:00
|
|
|
};
|
2024-12-07 06:52:47 +03:00
|
|
|
systemd.services.docker-navidrome.requires = [ "gocryptfs.service" ];
|
2024-08-03 07:09:55 +03:00
|
|
|
|
|
|
|
systemd.tmpfiles.rules = [
|
2024-11-30 20:11:32 +03:00
|
|
|
"d /srv/navidrome 0755 ${builtins.toString UID} ${builtins.toString UID} -"
|
2024-08-03 07:09:55 +03:00
|
|
|
];
|
|
|
|
|
|
|
|
services.nginx.virtualHosts."navi.stupid.fish" = {
|
|
|
|
forceSSL = true;
|
|
|
|
useACMEHost = "stupid.fish";
|
|
|
|
|
|
|
|
locations."/" = {
|
2024-08-03 22:33:50 +03:00
|
|
|
proxyPass = "http://navidrome.docker:4533$request_uri";
|
2024-08-03 07:09:55 +03:00
|
|
|
|
|
|
|
extraConfig = ''
|
|
|
|
proxy_buffering off;
|
|
|
|
'';
|
|
|
|
};
|
2024-11-30 20:11:32 +03:00
|
|
|
|
|
|
|
locations."/feishin/" = {
|
|
|
|
extraConfig = ''
|
|
|
|
alias ${feishin}/;
|
|
|
|
try_files $uri $uri/ /index.html;
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
locations."/feishin/settings.js" = {
|
|
|
|
extraConfig = ''
|
|
|
|
add_header 'Content-Type' 'application/javascript';
|
|
|
|
return 200 '${feishinConfig}';
|
|
|
|
'';
|
|
|
|
};
|
2024-08-03 07:09:55 +03:00
|
|
|
};
|
|
|
|
}
|