Q2TG/docker.nix

59 lines
2.0 KiB
Nix

{ pkgs, flakePkgs, nix2container, ... }:
nix2container.buildImage {
name = "q2tg";
maxLayers = 8;
# optimizations
layers = with pkgs;[
(nix2container.buildLayer {
copyToRoot = pkgs.buildEnv {
name = "root";
paths = [ pkgs.bash pkgs.coreutils ];
pathsToLink = [ "/bin" ];
};
})
(nix2container.buildLayer { deps = [ nodejs ]; })
# deps of sharp
(nix2container.buildLayer {
deps = [
(vips.override {
libjxl = libjxl.overrideAttrs (attrs: {
doCheck = false;
});
}).dev
];
})
# deps of node-canvas
(nix2container.buildLayer { deps = [ pixman cairo.dev pango.dev giflib libjpeg.dev libpng.dev librsvg.dev ]; })
(nix2container.buildLayer { deps = [ ffmpeg ]; })
(nix2container.buildLayer { deps = with flakePkgs;[ prisma-patched prisma-engines tgs-to-gif ]; })
(nix2container.buildLayer { deps = with flakePkgs;[ fontsSf ]; })
];
config = {
Cmd = [
(
pkgs.writeScript "start" ''
#!${pkgs.bash}/bin/bash
mkdir -p /tmp /root/.cache
${flakePkgs.prisma-patched}/bin/prisma db push --accept-data-loss --skip-generate --schema ${flakePkgs.default}/libexec/q2tg/node_modules/.prisma/client/schema.prisma
${flakePkgs.default}/bin/q2tg
''
)
];
Env = [
"DATA_DIR=/app/data"
"PRISMA_MIGRATION_ENGINE_BINARY=${pkgs.prisma-engines}/bin/migration-engine"
"PRISMA_QUERY_ENGINE_BINARY=${pkgs.prisma-engines}/bin/query-engine"
"PRISMA_QUERY_ENGINE_LIBRARY=${pkgs.prisma-engines}/lib/libquery_engine.node"
"PRISMA_INTROSPECTION_ENGINE_BINARY=${pkgs.prisma-engines}/bin/introspection-engine"
"PRISMA_FMT_BINARY=${pkgs.prisma-engines}/bin/prisma-fmt"
"TGS_TO_GIF=${flakePkgs.tgs-to-gif}/bin/tgs-to-gif"
"FFMPEG_PATH=${pkgs.ffmpeg}/bin/ffmpeg"
"FFPROBE_PATH=${pkgs.ffmpeg}/bin/ffprobe"
"FONTCONFIG_PATH=${flakePkgs.fontsSf}"
];
Volumes = {
"/app/data" = { };
};
};
}