{ description = "mqtt-webui"; inputs = { flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11"; }; outputs = { self, nixpkgs, flake-utils }: { overlay = final: prev: { mqtt-webui = final.mkYarnPackage rec { name = "mqtt-webui"; src = 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 ''; }; }; } // (flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; }; in rec { packages.default = pkgs.mqtt-webui; packages.mqtt-webui = pkgs.mqtt-webui; devShells.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" ''; }; } )); }