All checks were successful
		
		
	
	Test / Create distribution (push) Successful in 33s
				
			Test / Sandbox (push) Successful in 2m9s
				
			Test / Hakurei (push) Successful in 3m5s
				
			Test / Hpkg (push) Successful in 4m4s
				
			Test / Sandbox (race detector) (push) Successful in 4m9s
				
			Test / Hakurei (race detector) (push) Successful in 4m46s
				
			Test / Flake checks (push) Successful in 1m30s
				
			These names are less ambiguous and should be understandable without reading the source code. Signed-off-by: Ophestra <cat@gensokyo.uk>
		
			
				
	
	
		
			145 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  lib,
 | 
						|
  stdenv,
 | 
						|
  buildGoModule,
 | 
						|
  makeBinaryWrapper,
 | 
						|
  xdg-dbus-proxy,
 | 
						|
  pkg-config,
 | 
						|
  libffi,
 | 
						|
  libseccomp,
 | 
						|
  acl,
 | 
						|
  wayland,
 | 
						|
  wayland-protocols,
 | 
						|
  wayland-scanner,
 | 
						|
  xorg,
 | 
						|
 | 
						|
  # for hpkg
 | 
						|
  zstd,
 | 
						|
  gnutar,
 | 
						|
  coreutils,
 | 
						|
 | 
						|
  # for passthru.buildInputs
 | 
						|
  go,
 | 
						|
  gcc,
 | 
						|
 | 
						|
  # for check
 | 
						|
  util-linux,
 | 
						|
 | 
						|
  glibc, # for ldd
 | 
						|
  withStatic ? stdenv.hostPlatform.isStatic,
 | 
						|
}:
 | 
						|
 | 
						|
buildGoModule rec {
 | 
						|
  pname = "hakurei";
 | 
						|
  version = "0.2.2";
 | 
						|
 | 
						|
  srcFiltered = builtins.path {
 | 
						|
    name = "${pname}-src";
 | 
						|
    path = lib.cleanSource ./.;
 | 
						|
    filter = path: type: !(type == "regular" && (lib.hasSuffix ".nix" path || lib.hasSuffix ".py" path)) && !(type == "directory" && lib.hasSuffix "/test" path) && !(type == "directory" && lib.hasSuffix "/cmd/hsu" path);
 | 
						|
  };
 | 
						|
  vendorHash = null;
 | 
						|
 | 
						|
  src = stdenv.mkDerivation {
 | 
						|
    name = "${pname}-src-full";
 | 
						|
    inherit version;
 | 
						|
    enableParallelBuilding = true;
 | 
						|
    src = srcFiltered;
 | 
						|
 | 
						|
    buildInputs = [
 | 
						|
      wayland
 | 
						|
      wayland-protocols
 | 
						|
    ];
 | 
						|
 | 
						|
    nativeBuildInputs = [
 | 
						|
      go
 | 
						|
      pkg-config
 | 
						|
      wayland-scanner
 | 
						|
    ];
 | 
						|
 | 
						|
    buildPhase = "GOCACHE=$(mktemp -d) go generate ./...";
 | 
						|
    installPhase = "cp -r . $out";
 | 
						|
  };
 | 
						|
 | 
						|
  ldflags =
 | 
						|
    lib.attrsets.foldlAttrs
 | 
						|
      (
 | 
						|
        ldflags: name: value:
 | 
						|
        ldflags ++ [ "-X hakurei.app/internal.${name}=${value}" ]
 | 
						|
      )
 | 
						|
      (
 | 
						|
        [ "-s -w" ]
 | 
						|
        ++ lib.optionals withStatic [
 | 
						|
          "-linkmode external"
 | 
						|
          "-extldflags \"-static\""
 | 
						|
        ]
 | 
						|
      )
 | 
						|
      {
 | 
						|
        buildVersion = "v${version}";
 | 
						|
        hakureiPath = "${placeholder "out"}/libexec/hakurei";
 | 
						|
        hsuPath = "/run/wrappers/bin/hsu";
 | 
						|
      };
 | 
						|
 | 
						|
  # nix build environment does not allow acls
 | 
						|
  env.GO_TEST_SKIP_ACL = 1;
 | 
						|
 | 
						|
  buildInputs = [
 | 
						|
    libffi
 | 
						|
    libseccomp
 | 
						|
    acl
 | 
						|
    wayland
 | 
						|
  ]
 | 
						|
  ++ (with xorg; [
 | 
						|
    libxcb
 | 
						|
    libXau
 | 
						|
    libXdmcp
 | 
						|
  ]);
 | 
						|
 | 
						|
  nativeBuildInputs = [
 | 
						|
    pkg-config
 | 
						|
    makeBinaryWrapper
 | 
						|
  ];
 | 
						|
 | 
						|
  postInstall =
 | 
						|
    let
 | 
						|
      appPackages = [
 | 
						|
        glibc
 | 
						|
        xdg-dbus-proxy
 | 
						|
      ];
 | 
						|
    in
 | 
						|
    ''
 | 
						|
      install -D --target-directory=$out/share/zsh/site-functions dist/comp/*
 | 
						|
 | 
						|
      mkdir "$out/libexec"
 | 
						|
      mv "$out"/bin/* "$out/libexec/"
 | 
						|
 | 
						|
      makeBinaryWrapper "$out/libexec/hakurei" "$out/bin/hakurei" \
 | 
						|
        --inherit-argv0 --prefix PATH : ${lib.makeBinPath appPackages}
 | 
						|
 | 
						|
      makeBinaryWrapper "$out/libexec/hpkg" "$out/bin/hpkg" \
 | 
						|
        --inherit-argv0 --prefix PATH : ${
 | 
						|
          lib.makeBinPath (
 | 
						|
            appPackages
 | 
						|
            ++ [
 | 
						|
              zstd
 | 
						|
              gnutar
 | 
						|
              coreutils
 | 
						|
            ]
 | 
						|
          )
 | 
						|
        }
 | 
						|
    '';
 | 
						|
 | 
						|
  passthru.targetPkgs = [
 | 
						|
    go
 | 
						|
    gcc
 | 
						|
    xorg.xorgproto
 | 
						|
    util-linux
 | 
						|
 | 
						|
    # for go generate
 | 
						|
    wayland-protocols
 | 
						|
    wayland-scanner
 | 
						|
  ]
 | 
						|
  ++ buildInputs
 | 
						|
  ++ nativeBuildInputs;
 | 
						|
}
 |