{ pkgs, inputs, self, }: let localPackages = import ../pkgs {inherit pkgs inputs;}; mkPkgsWithOverlay = overlay: import inputs.nixpkgs { system = pkgs.stdenv.hostPlatform.system; config.allowUnfree = true; overlays = [overlay]; }; modifiedPkgs = mkPkgsWithOverlay self.overlays.modifications; defaultPkgs = mkPkgsWithOverlay self.overlays.default; expectedVersion = "2.29.4"; expectedSrcHash = "sha256-Vc10fXKn21PSlv6Sk+5zyi2efkKup1Vi+9+vyJd2I1k="; expectedPnpmHash = "sha256-2UFKP5bo06afaMPD+dIYQ7O0NiyZai4i8vkidi7HfxE="; expectedChangelog = "https://github.com/n8n-io/n8n/releases/tag/n8n@${expectedVersion}"; checkN8nOverride = overlayName: package: if package.version != expectedVersion then throw "${overlayName} n8n version is ${package.version}, expected ${expectedVersion}" else if package.src.outputHash != expectedSrcHash then throw "${overlayName} n8n src hash is ${package.src.outputHash}, expected ${expectedSrcHash}" else if package.pnpmDeps.outputHash != expectedPnpmHash then throw "${overlayName} n8n pnpmDeps hash is ${package.pnpmDeps.outputHash}, expected ${expectedPnpmHash}" else if package.meta.changelog != expectedChangelog then throw "${overlayName} n8n changelog is ${package.meta.changelog}, expected ${expectedChangelog}" else "ok"; in pkgs.runCommand "n8n-overlay-test" { localN8nAbsent = if localPackages ? n8n then throw "pkgs/default.nix must not export a local n8n package" else "ok"; modificationsOverlayN8n = checkN8nOverride "overlays.modifications" modifiedPkgs.n8n; defaultOverlayN8n = checkN8nOverride "overlays.default" defaultPkgs.n8n; } '' touch $out ''