diff --git a/pkgs/by-name/fa/factoriolab/package.nix b/pkgs/by-name/fa/factoriolab/package.nix new file mode 100644 index 000000000000..22faaf4f3e63 --- /dev/null +++ b/pkgs/by-name/fa/factoriolab/package.nix @@ -0,0 +1,56 @@ +{ + buildNpmPackage, + fetchFromGitHub, + vips, + lib, + pkg-config, + jq, + makeWrapper, + nix-update-script, +}: +buildNpmPackage rec { + pname = "factoriolab"; + version = "3.8.1"; + + src = fetchFromGitHub { + owner = "factoriolab"; + repo = "factoriolab"; + rev = "refs/tags/v${version}"; + hash = "sha256-ZI7nit+DBc1ULGDpGlee7v+NrHc5JhS7sgACGG5fB7I="; + }; + buildInputs = [ vips ]; + nativeBuildInputs = [ + pkg-config + makeWrapper + ]; + + npmDepsHash = "sha256-FX9zxq3kIQ5nxEPW57X53novtCFBPV5w9jg882EC2Lo="; + # By default angular tries to optimize fonts by inlining them + # which needs internet access during building to download said fonts. + # Internet access during build would necessitate turning this into a fixed output derivation + # which is difficult as said fonts are not actually stable. + # This disables font inlining completely in which case the fonts will be loaded on demand by your browser + postPatch = '' + ${lib.getExe jq} '.projects.factoriolab.architect.build.options += { "optimization": {"fonts": false } }' ./angular.json > angular.json.new + mv -f angular.json.new angular.json + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share + + cp -r dist/browser $out/share/factoriolab + + runHook postInstall + ''; + passthru.updateScript = nix-update-script { }; + + meta = { + homepage = "https://github.com/factoriolab/factoriolab"; + changelog = "https://github.com/factoriolab/factoriolab/releases/tag/${version}"; + description = "Angular-based calculator for factory games like Factorio and Dyson Sphere Program"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ patrickdag ]; + }; +}