{ description = "trainsearch"; inputs = { flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; }; outputs = { self, nixpkgs, flake-utils }: { overlay = final: prev: { trainsearch = final.buildNpmPackage { name = "trainsearch"; src = self; npmDepsHash = "sha256-anEajLsr+iiZ1nYLBerc7VqJops5Ln2mn9EN+x1zVts="; makeCacheWritable = true; npmBuildScript = "build"; GIT_VERSION = if (self.sourceInfo ? shortRev) then self.sourceInfo.shortRev else "dirty"; GIT_COMMIT = if (self.sourceInfo ? rev) then self.sourceInfo.rev else "dirty"; GIT_COMMITDATE = builtins.concatStringsSep "-" (builtins.match "(.{4})(.{2})(.{2}).*" self.lastModifiedDate); installPhase = '' cp -r dist $out ''; }; }; } // (flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; }; in rec { packages.default = pkgs.trainsearch; packages.trainsearch = pkgs.trainsearch; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ nodejs nodePackages.webpack nodePackages.webpack-cli nodePackages.webpack-dev-server ]; shellHook = '' export NODE_OPTIONS=--openssl-legacy-provider ''; }; } )); }