flake.nix 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. {
  2. description = "ConvertX";
  3. inputs = {
  4. nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  5. flake-utils.url = "github:numtide/flake-utils";
  6. };
  7. outputs = { self, nixpkgs, flake-utils, ... }:
  8. flake-utils.lib.eachDefaultSystem (system:
  9. let pkgs = import nixpkgs { inherit system; };
  10. appSrc = ./.;
  11. app = pkgs.dockerTools.buildLayeredImage {
  12. name = "convertx";
  13. tag = "latest";
  14. contents = [
  15. pkgs.bun
  16. pkgs.resvg
  17. pkgs.ffmpeg
  18. pkgs.graphicsmagick
  19. pkgs.ghostscript
  20. pkgs.vips
  21. pkgs.pandoc
  22. pkgs.texlive.combined.scheme-full
  23. pkgs.calibre
  24. pkgs.inkscape
  25. pkgs.poppler_utils
  26. pkgs.assimp
  27. pkgs.jxrlib
  28. pkgs.libheif
  29. pkgs.libjxl
  30. pkgs.python3Packages.numpy
  31. ];
  32. config = {
  33. Env = [
  34. "NODE_ENV=production"
  35. "PATH=/bin:/usr/bin"
  36. ];
  37. WorkingDir = "/app";
  38. Cmd = [ "bun" "run" "./src/index.tsx" ];
  39. ExposedPorts = {
  40. "3000/tcp" = {};
  41. };
  42. };
  43. extraCommands = ''
  44. export PATH=${pkgs.bun}/bin:$PATH
  45. mkdir -p /app
  46. cp -r ${./dist}/* /app/
  47. '';
  48. };
  49. in {
  50. packages.default = app;
  51. }
  52. );
  53. }