diff --git a/scripts/darwin_set_proxy.py b/scripts/darwin_set_proxy.py index 437b08b8..cc3c0c2d 100644 --- a/scripts/darwin_set_proxy.py +++ b/scripts/darwin_set_proxy.py @@ -1,5 +1,7 @@ """ - set proxy for nix-daemon to speed up downloads + Set proxy for nix-daemon to speed up downloads + You can safely ignore this file if you don't need a proxy. + https://github.com/NixOS/nix/issues/1472#issuecomment-1532955973 """ import os @@ -7,31 +9,33 @@ import plistlib import shlex import subprocess from pathlib import Path - - + + NIX_DAEMON_PLIST = Path("/Library/LaunchDaemons/org.nixos.nix-daemon.plist") NIX_DAEMON_NAME = "org.nixos.nix-daemon" -# http proxy provided by clash -HTTP_PROXY = "http://127.0.0.1:7890" - +# http proxy provided by clash or other proxy tools +HTTP_PROXY = "http://127.0.0.1:7890" + pl = plistlib.loads(NIX_DAEMON_PLIST.read_bytes()) - -# set http proxy -pl["EnvironmentVariables"]["HTTP_PROXY"] = HTTP_PROXY -pl["EnvironmentVariables"]["HTTPS_PROXY"] = HTTP_PROXY - + +# set http/https proxy +# NOTE: curl only accept the lowercase of `http_proxy`! +# NOTE: https://curl.se/libcurl/c/libcurl-env.html +pl["EnvironmentVariables"]["http_proxy"] = HTTP_PROXY +pl["EnvironmentVariables"]["https_proxy"] = HTTP_PROXY + # remove http proxy -# pl["EnvironmentVariables"].pop("HTTP_PROXY", None) -# pl["EnvironmentVariables"].pop("HTTPS_PROXY", None) - +# pl["EnvironmentVariables"].pop("http_proxy", None) +# pl["EnvironmentVariables"].pop("https_proxy", None) + os.chmod(NIX_DAEMON_PLIST, 0o644) NIX_DAEMON_PLIST.write_bytes(plistlib.dumps(pl)) os.chmod(NIX_DAEMON_PLIST, 0o444) - + # reload the plist for cmd in ( - f"launchctl unload {NIX_DAEMON_PLIST}", - f"launchctl load {NIX_DAEMON_PLIST}", + f"launchctl unload {NIX_DAEMON_PLIST}", + f"launchctl load {NIX_DAEMON_PLIST}", ): print(cmd) subprocess.run(shlex.split(cmd), capture_output=False)