From 05d1c992ef4df545095421590ea1eefbfabeee8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 3 Dec 2024 12:12:36 +0100 Subject: [PATCH] fix minifakeroot on macos --- nixosModules/clanCore/zerotier/default.nix | 32 ++++--------------- pkgs/flake-module.nix | 1 + pkgs/minifakeroot/default.nix | 18 +++++++++++ .../fake_root.c => pkgs/minifakeroot/main.c | 4 +++ 4 files changed, 30 insertions(+), 25 deletions(-) create mode 100644 pkgs/minifakeroot/default.nix rename nixosModules/clanCore/zerotier/fake_root.c => pkgs/minifakeroot/main.c (94%) diff --git a/nixosModules/clanCore/zerotier/default.nix b/nixosModules/clanCore/zerotier/default.nix index 5fd8fcb08..f7e6cb29f 100644 --- a/nixosModules/clanCore/zerotier/default.nix +++ b/nixosModules/clanCore/zerotier/default.nix @@ -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" ]; diff --git a/pkgs/flake-module.nix b/pkgs/flake-module.nix index 940cbbc19..93548a7e4 100644 --- a/pkgs/flake-module.nix +++ b/pkgs/flake-module.nix @@ -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 { }; diff --git a/pkgs/minifakeroot/default.nix b/pkgs/minifakeroot/default.nix new file mode 100644 index 000000000..1e63515cc --- /dev/null +++ b/pkgs/minifakeroot/default.nix @@ -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 < +#ifdef __APPLE__ +#include +#endif + typedef uint32_t uid_t; #ifdef __APPLE__