aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/package.nix
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-07-07 18:32:56 +0900
committerOphestra <cat@gensokyo.uk>2026-07-07 18:56:27 +0900
commit6d55ee536e902d059380f79e870d06547627cc7c (patch)
treeaacf3e3ec42525cf0e7a674aa948359fd0c21ae2 /test/package.nix
parentc8e8651694415d497b0800319b2ddda361b7651f (diff)
test: move nix files
These are too much clutter. Move them to test directory until the test suite replacement is upstreamed. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'test/package.nix')
-rw-r--r--test/package.nix144
1 files changed, 144 insertions, 0 deletions
diff --git a/test/package.nix b/test/package.nix
new file mode 100644
index 00000000..46567b69
--- /dev/null
+++ b/test/package.nix
@@ -0,0 +1,144 @@
+{
+ lib,
+ stdenv,
+ buildGo126Module,
+ makeBinaryWrapper,
+ xdg-dbus-proxy,
+ pkg-config,
+ libffi,
+ libseccomp,
+ acl,
+ wayland,
+ wayland-protocols,
+ wayland-scanner,
+
+ libxcb,
+ libxau,
+ libxdmcp,
+
+ # for sharefs
+ fuse3,
+
+ # for passthru.buildInputs
+ go_1_26,
+ clang,
+ xorgproto,
+
+ # for check
+ util-linux,
+ nettools,
+
+ glibc, # for ldd
+ withStatic ? stdenv.hostPlatform.isStatic,
+}:
+
+buildGo126Module rec {
+ pname = "hakurei";
+ version = with lib.strings; removePrefix "v" (trim (builtins.readFile ../cmd/dist/VERSION));
+
+ 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_1_26
+ 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/info.${name}=${value}" ]
+ )
+ (
+ [ "-s -w" ]
+ ++ lib.optionals withStatic [
+ "-linkmode external"
+ "-extldflags \"-static\""
+ ]
+ )
+ {
+ buildVersion = "v${version}";
+ hakureiPath = "${placeholder "out"}/libexec/hakurei";
+ hsuPath = "/run/wrappers/bin/hsu";
+ };
+
+ env = {
+ # use clang instead of gcc
+ CC = "clang -O3 -Werror";
+ };
+
+ buildInputs = [
+ libffi
+ libseccomp
+ fuse3
+ acl
+ wayland
+
+ libxcb
+ libxau
+ libxdmcp
+ ];
+
+ nativeBuildInputs = [
+ pkg-config
+ makeBinaryWrapper
+
+ # for container example
+ nettools
+ ];
+
+ postInstall =
+ let
+ appPackages = [
+ glibc
+ xdg-dbus-proxy
+ ];
+ in
+ ''
+ install -D --target-directory=$out/share/zsh/site-functions cmd/dist/comp/*
+
+ mkdir "$out/libexec"
+ mv "$out"/bin/* "$out/libexec/"
+
+ makeBinaryWrapper "$out/libexec/hakurei" "$out/bin/hakurei" \
+ --inherit-argv0 --prefix PATH : ${lib.makeBinPath appPackages}
+ '';
+
+ passthru = {
+ go = go_1_26;
+
+ targetPkgs = [
+ go_1_26
+ clang
+ xorgproto
+ util-linux
+
+ # for go generate
+ wayland-protocols
+ wayland-scanner
+ ]
+ ++ buildInputs
+ ++ nativeBuildInputs;
+ };
+}