zaphyra's git: oeffisearch

fast and simple tripplanner

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 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
{

  description = "trainsearch";

  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";

  outputs =
    inputs:
    let
      forAllSystems =
        function:
        inputs.nixpkgs.lib.genAttrs
          [
            "x86_64-linux"
            "aarch64-linux"
            "aarch64-darwin"
          ]
          (
            system:
            function (
              import inputs.nixpkgs {
                system = system;
                overlays = [ inputs.self.overlays.default ];
              }
            )
          );

    in
    {

      packages = forAllSystems (pkgs: {
        default = pkgs.oeffisearch;
        trainsearch = pkgs.oeffisearch;
      });

      devShells = forAllSystems (pkgs: {
        default = pkgs.mkShell {
          buildInputs = with pkgs; [
            nodePackages.pnpm
            nginx
          ];
          shellHook = ''
            export NODE_OPTIONS=--openssl-legacy-provider
            sed "s?PWD?$(pwd)?g" < ./nginx.conf > /tmp/nginx-oeffisearch.conf
            pnpm install
            pnpm dev
            exit
          '';
        };
      });

      overlays.default = final: prev: {
        oeffisearch = final.stdenv.mkDerivation (finalAttrs: {
          pname = "oeffisearch";
          version = finalAttrs.env.GIT_VERSION;
          npmHash = "sha256-kj7eowY6OU2EsE1jh1BzbO6K0QrjHMDVeTxOzvyF4ZI=";

          src = inputs.self;

          nativeBuildInputs = [
            final.nodejs
            final.pnpm.configHook
          ];

          pnpmDeps = final.pnpm.fetchDeps {
            inherit (finalAttrs) pname version src;
            hash = finalAttrs.npmHash;
            fetcherVersion = 2;
          };

          env.GIT_VERSION =
            if (inputs.self.sourceInfo ? shortRev) then inputs.self.sourceInfo.shortRev else "dirty";
          env.GIT_COMMIT = if (inputs.self.sourceInfo ? rev) then inputs.self.sourceInfo.rev else "dirty";
          env.GIT_COMMITDATE = builtins.concatStringsSep "-" (
            builtins.match "(.{4})(.{2})(.{2}).*" inputs.self.lastModifiedDate
          );

          buildPhase = ''
            pnpm build
          '';

          installPhase = ''
            cp -r dist $out
          '';
        });
      };
    };

}