ctucx.git: mqtt-webui

webui for mqtt, can be used to control/display data in mqtt-topics

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 
{

  description = "mqtt-webui";

  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.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.mqtt-webui;
      mqtt-webui = pkgs.mqtt-webui;
    });

    devShells = forAllSystems (pkgs: {
      default = pkgs.mkShell {
        nativeBuildInputs = [ pkgs.yarn pkgs.yarn2nix pkgs.caddy ];
        shellHook = ''
          export NODE_OPTIONS=--openssl-legacy-provider
          alias serve="yarn build && caddy run"
          alias generate-config="nix-instantiate --eval -E 'builtins.toJSON(import ./config.nix)' | jq '. | fromjson' > config.json"
        '';
      };
    });

    overlays.default = final: prev: {
      mqtt-webui = final.mkYarnPackage rec {
        name = "mqtt-webui";
        src  = inputs.self;

        packageJSON = ./package.json;
        yarnLock    = ./yarn.lock;
        yarnNix     = ./yarn.nix;
        doDist      = false;

        buildPhase   = ''
          export NODE_OPTIONS=--openssl-legacy-provider
          yarn build
        '';

        installPhase = ''
          mkdir -p $out
          cp -r deps/mqtt-webui/www/. $out
          rm $out/manifest.json
        '';
      };
    };

  };

}