ctucx.git: trainsearch

web based trip-planner, fork of https://cyberchaos.dev/yuka/trainsearch

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 {

  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
        '';
      };

    }
  ));
}