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
|