diff --git a/hosts/kilgharrah/default.nix b/hosts/kilgharrah/default.nix index 8044b0e..ba72d24 100644 --- a/hosts/kilgharrah/default.nix +++ b/hosts/kilgharrah/default.nix @@ -50,14 +50,21 @@ enable = true; domain = "jellyfin.qenya.tel"; }; + qenya.services.navidrome = { + enable = true; + domain = "music.qenya.tel"; + dataDir = "/srv/music"; + }; randomcat.services.zfs.datasets = { "rpool_albion/data" = { mountpoint = "none"; }; "rpool_albion/data/steam" = { mountpoint = "/home/qenya/.local/share/Steam"; }; "rpool_albion/state" = { mountpoint = "none"; }; "rpool_albion/state/jellyfin" = { mountpoint = "/var/lib/jellyfin"; }; + "rpool_albion/state/navidrome" = { mountpoint = "/var/lib/navidrome"; }; "rpool_albion/srv" = { mountpoint = "none"; }; "rpool_albion/srv/jellyfin" = { mountpoint = "/srv/jellyfin"; }; + "rpool_albion/srv/music" = { mountpoint = "/srv/music"; }; }; system.stateVersion = "24.05"; diff --git a/services/default.nix b/services/default.nix index 809686d..4a25d41 100644 --- a/services/default.nix +++ b/services/default.nix @@ -3,6 +3,7 @@ ./actual.nix ./forgejo.nix ./jellyfin.nix + ./navidrome.nix ./pipewire-low-latency.nix ]; } \ No newline at end of file diff --git a/services/navidrome.nix b/services/navidrome.nix new file mode 100644 index 0000000..d678005 --- /dev/null +++ b/services/navidrome.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf mkOption mkEnableOption types; + cfg = config.qenya.services.navidrome; +in +{ + options.qenya.services.navidrome = { + enable = mkEnableOption "Navidrome"; + domain = mkOption { + type = types.str; + }; + dataDir = mkOption { + type = types.str; + }; + }; + + config = mkIf cfg.enable { + services.nginx = { + enable = true; + virtualHosts = { + ${cfg.domain} = { + forceSSL = true; + enableACME = true; + locations."/".proxyPass = "http://127.0.0.1:4533/"; + }; + }; + }; + + networking.firewall.allowedTCPPorts = [ 80 443 ]; + + services.navidrome.enable = true; + services.navidrome.settings = { + MusicFolder = cfg.dataDir; + BaseUrl = "https://${cfg.domain}"; + }; + }; +}