summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/home/tonie.nix
blob: bc3633a8868637aa6805d4ee3fa58e09f1a1c4b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{ config, pkgs, lib, ... }:
let
  backend_port = 30005;
  #host = config.networking.hostName;
  ident = 998;
  user = "${toString ident}:${toString ident}";
  backend_host = "tonie.lan";
  #backend_host = "tonie.omo.r";
  frontend_port = 30006;
  homedir = "/var/lib/tonies";
  albumdir = "${homedir}/albumart/";
  vueconfig = pkgs.writeText "vueconfig" ''
    module.exports = {
      devServer: {
        disableHostCheck: true
      },
    }
  '';
  audiobookdir = "/media/cryptX/music/kinder_hoerspiele";
  #  TONIE_AUDIO_MATCH_USER = username;
  #  TONIE_AUDIO_MATCH_PASS = password;
  tonie-env = toString <secrets/tonie.env>;
in
  {
    systemd.tmpfiles.rules = [
      "d ${albumdir} 1750 toniebox toniebox -"
    ];
  networking.firewall.allowedTCPPorts = [ frontend_port backend_port ];
  virtualisation.oci-containers.containers.toniebox-front = {
    image = "makefoo/toniebox-audio-match_front:1.0.1";
    inherit user;
    environment = {
      VUE_APP_BACKEND_IS_LOCAL = "true";
    };
    ports = [ "${toString frontend_port}:8080" ];
    volumes = [
      "${albumdir}:/frontend/public/assets/covers"
      "${vueconfig}:/frontend/vue.config.js"
    ];
  };

  users.users.toniebox = {
    isSystemUser = true;
    uid = ident;
    home = homedir;
    createHome = true;
    group = "toniebox";
  };
  users.groups.toniebox.gid = ident;

  virtualisation.oci-containers.containers.toniebox-back = {
    image = "makefoo/toniebox-audio-match_back:1.0.0";
    inherit user;
    environmentFiles = [ tonie-env ];
    ports = [ "${toString backend_port}:5000" ];
    volumes = [
      "${albumdir}:/backend/assets/covers"
      "${audiobookdir}:/backend/assets/audiobooks"
    ];
  };
  services.nginx.virtualHosts."tonie" = {
    serverAliases = [ "tonie.lan" "tonie.omo.r" backend_host ];
    locations."/".proxyPass = "http://localhost:${toString frontend_port}";
    locations."/upload".proxyPass = "http://localhost:${toString backend_port}";
    locations."/creativetonies".proxyPass = "http://localhost:${toString backend_port}";
    locations."/audiobooks".proxyPass = "http://localhost:${toString backend_port}";
  };
}