Unverified Commit ca138e26 authored by Thomas Gerbet's avatar Thomas Gerbet Committed by GitHub
Browse files

fleet: package with frontend (#478055)

parents 566d32c3 27591c12
Loading
Loading
Loading
Loading
+61 −4
Original line number Diff line number Diff line
{
  lib,
  fetchFromGitHub,
  stdenvNoCC,
  yarnConfigHook,
  yarnBuildHook,
  nodejs_24,
  fetchYarnDeps,
  buildGoModule,
  go-bindata,
  versionCheckHook,
}:

buildGoModule (finalAttrs: {
let
  pname = "fleet";
  version = "4.78.1";

  src = fetchFromGitHub {
    owner = "fleetdm";
    repo = "fleet";
    tag = "fleet-v${finalAttrs.version}";
    tag = "fleet-v${version}";
    hash = "sha256-3F9vzY1JAw2DMzUhMl7j9I8RGjVXulQH2JcYCFuAwDY=";
  };

  frontend = stdenvNoCC.mkDerivation {
    pname = "${pname}-frontend";
    inherit version src;

    nativeBuildInputs = [
      yarnConfigHook
      yarnBuildHook
      nodejs_24
    ];

    yarnOfflineCache = fetchYarnDeps {
      yarnLock = src + "/yarn.lock";
      hash = "sha256-cCf0Q6g+VJaTCOZ12/7z8gcDf3+YT2LBTCJb39InJVw=";
    };

    NODE_ENV = "production";
    yarnBuildScript = "webpack";

    installPhase = ''
      runHook preInstall

      mkdir -p $out/assets
      cp -r assets/* $out/assets/

      mkdir -p $out/frontend/templates
      cp frontend/templates/react.tmpl $out/frontend/templates/react.tmpl

      runHook postInstall
    '';
  };
in
buildGoModule (finalAttrs: {
  inherit pname version src;

  vendorHash = "sha256-EwPbZLcqJV5J7ieoQwAJLIn4wwMlwZoTtWaXgvY3pR0=";

  subPackages = [
@@ -26,12 +65,29 @@ buildGoModule (finalAttrs: {
    "-X github.com/fleetdm/fleet/v4/server/version.version=${finalAttrs.version}"
  ];

  nativeBuildInputs = [ go-bindata ];

  preBuild = ''
    cp -r ${frontend}/assets/* assets
    cp -r ${frontend}/frontend/templates/react.tmpl frontend/templates/react.tmpl

    go-bindata -pkg=bindata -tags full \
      -o=server/bindata/generated.go \
      frontend/templates/ assets/... server/mail/templates
  '';

  tags = [ "full" ];

  doInstallCheck = true;
  versionCheckProgramArg = "version";
  nativeInstallCheckInputs = [
    versionCheckHook
  ];

  passthru = {
    inherit frontend;
  };

  meta = {
    homepage = "https://github.com/fleetdm/fleet";
    changelog = "https://github.com/fleetdm/fleet/releases/tag/fleet-v${finalAttrs.version}";
@@ -40,6 +96,7 @@ buildGoModule (finalAttrs: {
    maintainers = with lib.maintainers; [
      asauzeau
      lesuisse
      bddvlpr
    ];
    mainProgram = "fleet";
  };