summary refs log tree commit diff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix89
1 files changed, 89 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644

index 0000000..4c5e915 --- /dev/null +++ b/flake.nix
@@ -0,0 +1,89 @@ +# Based off of https://github.com/spacebarchat/server/blob/master/flake.nix +{ + description = "Final assignment for NodeJS"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = + { + self, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachSystem flake-utils.lib.allSystems ( + system: + let + pkgs = import nixpkgs { + inherit system; + }; + hashesFile = builtins.fromJSON (builtins.readFile ./hashes.json); + lib = pkgs.lib; + in + { + packages = { + default = pkgs.buildNpmPackage { + pname = "nodejs-ti-a-final-assignment-TheArcaneBrony"; + name = "nodejs-ti-a-final-assignment-TheArcaneBrony"; + + meta = with lib; { + description = "Final assignment for NodeJS"; + homepage = "https://github.com/VivesMDima/nodejs-ti-a-final-assignment-TheArcaneBrony"; + license = licenses.agpl3Plus; + platforms = platforms.all; + mainProgram = "start"; + }; + + src = ./.; + nativeBuildInputs = with pkgs; [ python3 ]; + npmDepsHash = hashesFile.npmDepsHash; + makeCacheWritable = true; + postPatch = '' + substituteInPlace package.json --replace 'npx patch-package' '${pkgs.nodePackages.patch-package}/bin/patch-package' + ''; + installPhase = '' + runHook preInstall + set -x + #remove packages not needed for production, or at least try to... + npm prune --omit dev --no-save $npmInstallFlags "''${npmInstallFlagsArray[@]}" $npmFlags "''${npmFlagsArray[@]}" + find node_modules -maxdepth 1 -type d -empty -delete + + mkdir -p $out + cp -r assets dist node_modules package.json $out/ + makeWrapper ${pkgs.nodejs}/bin/node $out/bin/start --prefix NODE_PATH : $out/node_modules --add-flags $out/$i + + set +x + runHook postInstall + ''; + }; + + update-nix = pkgs.writeShellApplication { + name = "update-nix"; + runtimeInputs = with pkgs; [ + prefetch-npm-deps + nix + jq + ]; + text = '' + nix flake update --extra-experimental-features 'nix-command flakes' + DEPS_HASH=$(prefetch-npm-deps package-lock.json) + TMPFILE=$(mktemp) + jq '.npmDepsHash = "'"$DEPS_HASH"'"' hashes.json > "$TMPFILE" + mv -- "$TMPFILE" hashes.json + ''; + }; + }; + + devShell = pkgs.mkShell { + buildInputs = with pkgs; [ + nodejs + nodePackages.typescript + nodePackages.ts-node + nodePackages.patch-package + nodePackages.prettier + ]; + }; + } + ); +} \ No newline at end of file