fix minifakeroot on macos
This commit is contained in:
@@ -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" ];
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
#include <stdint.h>
|
||||
typedef uint32_t uid_t;
|
||||
|
||||
#ifdef __APPLE__
|
||||
struct dyld_interpose {
|
||||
const void * replacement;
|
||||
const void * replacee;
|
||||
};
|
||||
#define WRAPPER(ret, name) static ret _fakeroot_wrapper_##name
|
||||
#define WRAPPER_DEF(name) \
|
||||
__attribute__((used)) static struct dyld_interpose _fakeroot_interpose_##name \
|
||||
__attribute__((section("__DATA,__interpose"))) = { &_fakeroot_wrapper_##name, &name };
|
||||
#else
|
||||
#define WRAPPER(ret, name) ret name
|
||||
#define WRAPPER_DEF(name)
|
||||
#endif
|
||||
|
||||
WRAPPER(uid_t, geteuid)(const char * path, int flags, ...)
|
||||
{
|
||||
return 0; // Fake root
|
||||
}
|
||||
WRAPPER_DEF(geteuid)
|
||||
|
||||
WRAPPER(uid_t, getuid)(const char * path, int flags, ...)
|
||||
{
|
||||
return 0; // Fake root
|
||||
}
|
||||
WRAPPER_DEF(getuid)
|
||||
Reference in New Issue
Block a user