introduce minifakeroot that also works on macos

This commit is contained in:
Jörg Thalheim
2024-06-27 18:20:16 +02:00
parent 2ed8bba017
commit cb9fbc969b
5 changed files with 55 additions and 11 deletions

View File

@@ -182,15 +182,33 @@ in
secret.zerotier-identity-secret = { };
generator.path = [
config.services.zerotierone.package
pkgs.fakeroot
pkgs.python3
];
generator.script = ''
python3 ${./generate.py} --mode network \
--ip "$facts/zerotier-ip" \
--identity-secret "$secrets/zerotier-identity-secret" \
--network-id "$facts/zerotier-network-id"
'';
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"
'';
};
clan.core.state.zerotier.folders = [ "/var/lib/zerotier-one" ];