nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 apple-sdk,
4 mkAppleDerivation,
5 ncurses,
6 pkg-config,
7 stdenvNoCC,
8}:
9
10let
11 iokitUser = apple-sdk.sourceRelease "IOKitUser";
12 xnu = apple-sdk.sourceRelease "xnu";
13
14 privateHeaders = stdenvNoCC.mkDerivation {
15 name = "IOKitTools-deps-private-headers";
16
17 buildCommand = ''
18 install -D -t "$out/include/IOKit/" \
19 '${iokitUser}/IOKitLibPrivate.h' \
20 '${xnu}/iokit/IOKit/IOKitKeysPrivate.h'
21
22 install -D -t "$out/include/Kernel/libkern" \
23 '${xnu}/libkern/libkern/OSKextLibPrivate.h'
24
25 mkdir -p "$out/include/perfdata"
26 cat <<EOF > "$out/include/perfdata/perfdata.h"
27 #pragma once
28 typedef void* pdunit_t;
29
30 #define PDUNIT_CUSTOM(x) ((void*)("#\"" x "\""))
31 extern const pdunit_t pdunit_B;
32
33 typedef void* pdwriter_t;
34 extern pdwriter_t pdwriter_open(const char*, const char*, size_t, size_t);
35 extern void pdwriter_close(pdwriter_t);
36 extern void pdwriter_new_value(pdwriter_t, const char*, pdunit_t, double);
37 extern void pdwriter_record_variable_str(pdwriter_t, char*, const char*);
38 EOF
39 '';
40 };
41in
42mkAppleDerivation {
43 releaseName = "IOKitTools";
44
45 outputs = [
46 "out"
47 "man"
48 ];
49
50 xcodeHash = "sha256-qFG4sB8NXNPTSvYTEX2E1ReOX+NcMBHrS2NuNBLO7zw=";
51
52 nativeBuildInputs = [ pkg-config ];
53 buildInputs = [
54 apple-sdk.privateFrameworksHook
55 ncurses
56 ];
57
58 env.NIX_CFLAGS_COMPILE = "-I${privateHeaders}/include";
59
60 meta.description = "IOKit tools";
61}