fix minifakeroot on macos

This commit is contained in:
Jörg Thalheim
2024-12-03 12:12:36 +01:00
parent cf3a5df51e
commit 5e37ca2021
4 changed files with 30 additions and 25 deletions

View File

@@ -191,31 +191,13 @@ in
config.services.zerotierone.package
pkgs.python3
];
generator.script =
let
library = "libfakeroot${pkgs.stdenv.hostPlatform.extensions.sharedLibrary}";
minifakeroot = pkgs.stdenv.mkDerivation {
name = "minifakeroot";
dontUnpack = true;
installPhase = ''
mkdir -p $out/lib
${
if pkgs.stdenv.isDarwin then
"$CC -dynamiclib -o $out/lib/libfakeroot.dylib ${./fake_root.c}"
else
"$CC -shared -o $out/lib/libfakeroot.so ${./fake_root.c}"
}
'';
};
varName = if pkgs.stdenv.isDarwin then "DYLD_INSERT_LIBRARIES" else "LD_PRELOAD";
in
''
export ${varName}=${minifakeroot}/lib/${library}
python3 ${./generate.py} --mode network \
--ip "$facts/zerotier-ip" \
--identity-secret "$secrets/zerotier-identity-secret" \
--network-id "$facts/zerotier-network-id"
'';
generator.script = ''
source ${(pkgs.callPackage ../../../pkgs/minifakeroot { })}/share/minifakeroot/rc
python3 ${./generate.py} --mode network \
--ip "$facts/zerotier-ip" \
--identity-secret "$secrets/zerotier-identity-secret" \
--network-id "$facts/zerotier-network-id"
'';
};
clan.core.state.zerotier.folders = [ "/var/lib/zerotier-one" ];

View File

@@ -28,6 +28,7 @@
zt-tcp-relay = pkgs.callPackage ./zt-tcp-relay { };
moonlight-sunshine-accept = pkgs.callPackage ./moonlight-sunshine-accept { };
merge-after-ci = pkgs.callPackage ./merge-after-ci { inherit (config.packages) tea-create-pr; };
minifakeroot = pkgs.callPackage ./minifakeroot { };
pending-reviews = pkgs.callPackage ./pending-reviews { };
editor = pkgs.callPackage ./editor/clan-edit-codium.nix { };
classgen = pkgs.callPackage ./classgen { };

View File

@@ -0,0 +1,18 @@
{ stdenv }:
let
varName = if stdenv.isDarwin then "DYLD_INSERT_LIBRARIES" else "LD_PRELOAD";
linkerFlags = if stdenv.isDarwin then "-dynamiclib" else "-shared";
sharedLibrary = stdenv.hostPlatform.extensions.sharedLibrary;
in
stdenv.mkDerivation {
name = "minifakeroot";
dontUnpack = true;
installPhase = ''
mkdir -p $out/lib
$CC ${linkerFlags} -o $out/lib/libfakeroot${sharedLibrary} ${./main.c}
mkdir -p $out/share/minifakeroot
cat > $out/share/minifakeroot/rc <<EOF
export ${varName}=$out/lib/libfakeroot${sharedLibrary}
EOF
'';
}

View File

@@ -1,4 +1,8 @@
#include <stdint.h>
#ifdef __APPLE__
#include <unistd.h>
#endif
typedef uint32_t uid_t;
#ifdef __APPLE__