main
flake.nix
David van Munster
·
2026-08-11
1{
2 description = "zmx - session persistence for terminal processes";
3
4 inputs = {
5 zig2nix.url = "github:Cloudef/zig2nix";
6 };
7
8 outputs =
9 { zig2nix, ... }:
10 let
11 flake-utils = zig2nix.inputs.flake-utils;
12 in
13 (flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ] (
14 system:
15 let
16 env = zig2nix.outputs.zig-env.${system} {
17 zig = zig2nix.outputs.packages.${system}.zig-0_16_0;
18 };
19 in
20 with builtins;
21 with env.pkgs.lib;
22 let
23 isDarwin = env.pkgs.stdenv.hostPlatform.isDarwin;
24 sdkRoot = env.pkgs.apple-sdk.sdkroot;
25 xcrunWrapper = env.pkgs.writeShellScriptBin "xcrun" ''
26 echo "${sdkRoot}"
27 '';
28 xcodeselectWrapper = env.pkgs.writeShellScriptBin "xcode-select" ''
29 echo "${sdkRoot}"
30 '';
31
32 zmx-package = env.package (
33 {
34 src = cleanSource ./.;
35 zigBuildFlags = [ "-Doptimize=ReleaseSafe" ];
36 zigPreferMusl = !isDarwin;
37 }
38 // optionalAttrs isDarwin {
39 glibc = null;
40 musl = null;
41 nativeBuildInputs = [
42 xcrunWrapper
43 xcodeselectWrapper
44 ];
45 }
46 );
47 in
48 {
49 packages = {
50 zmx = zmx-package;
51 default = zmx-package;
52 };
53
54 apps = {
55 zmx = {
56 type = "app";
57 program = "${zmx-package}/bin/zmx";
58 };
59 default = {
60 type = "app";
61 program = "${zmx-package}/bin/zmx";
62 };
63
64 build = env.app [ ] "zig build \"$@\"";
65
66 test = env.app [ ] "zig build test -- \"$@\"";
67 };
68
69 devShells.default = env.mkShell {
70 };
71 }
72 ));
73}