refactor: scripts

This commit is contained in:
Ryan Yin
2024-04-30 18:40:41 +08:00
parent a626458b8e
commit 4f780f3f61

View File

@@ -4,39 +4,56 @@
https://github.com/NixOS/nix/issues/1472#issuecomment-1532955973
"""
import os
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 my homelab's bypass router
HTTP_PROXY = "http://192.168.5.103:7890"
pl = plistlib.loads(NIX_DAEMON_PLIST.read_bytes())
# 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)
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 (
HTTP_PROXY = "http://192.168.5.179:7890"
PLIST = plistlib.loads(NIX_DAEMON_PLIST.read_bytes())
def update_plist():
os.chmod(NIX_DAEMON_PLIST, 0o644)
NIX_DAEMON_PLIST.write_bytes(plistlib.dumps(PLIST))
os.chmod(NIX_DAEMON_PLIST, 0o444)
def reload_daemon():
# reload the plist
for cmd in (
f"launchctl unload {NIX_DAEMON_PLIST}",
f"launchctl load {NIX_DAEMON_PLIST}",
):
print(cmd)
subprocess.run(shlex.split(cmd), capture_output=False)
):
print(cmd)
subprocess.run(shlex.split(cmd), capture_output=False)
def set_proxy():
# set http/https proxy
# NOTE: curl only accept the lowercase of `http_proxy`!
# NOTE: https://curl.se/libcurl/c/libcurl-env.html
PLIST["EnvironmentVariables"]["http_proxy"] = HTTP_PROXY
PLIST["EnvironmentVariables"]["https_proxy"] = HTTP_PROXY
update_plist()
reload_daemon()
def unset_proxy():
# remove http proxy
PLIST["EnvironmentVariables"].pop("http_proxy", None)
PLIST["EnvironmentVariables"].pop("https_proxy", None)
update_plist()
reload_daemon()
if __name__ == "__main__":
set_proxy()
# unset_proxy()