From 61b9bc5e37545493497d061931acb181cf15def3 Mon Sep 17 00:00:00 2001 From: Guanran Wang Date: Mon, 26 Feb 2024 21:15:48 +0800 Subject: [PATCH] darwin/setSystemProxy: ./home -> ./darwin - Also turns out nix-darwin hardcodes list of activation scripts. :( see: https://github.com/LnL7/nix-darwin/blob/master/modules/system/activation-scripts.nix --- darwin/modules/networking/proxy.nix | 15 +++++++++++++++ darwin/profiles/desktop/home/default.nix | 18 ------------------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/darwin/modules/networking/proxy.nix b/darwin/modules/networking/proxy.nix index 3d35330..9715d5b 100644 --- a/darwin/modules/networking/proxy.nix +++ b/darwin/modules/networking/proxy.nix @@ -119,5 +119,20 @@ in { # Install the proxy environment variables environment.variables = cfg.proxy.envVars; launchd.daemons."nix-daemon".environment = cfg.proxy.envVars; + + # Set macOS's system level proxy setting + system.activationScripts."extraActivation".text = let + inherit (cfg) knownNetworkServices; + networksetup = /usr/sbin/networksetup; + + # naive but works(tm) + # "http://127.0.0.1:1234/" -> "127.0.0.1 1234" + proxy = builtins.replaceStrings ["http://" ":" "/"] ["" " " ""] cfg.proxy.httpProxy; + in + lib.concatMapStrings (x: '' + ${networksetup} -setwebproxystate "${x}" on + ${networksetup} -setwebproxy "${x}" ${proxy} + '') + knownNetworkServices; }; } diff --git a/darwin/profiles/desktop/home/default.nix b/darwin/profiles/desktop/home/default.nix index c84b98f..b19be61 100644 --- a/darwin/profiles/desktop/home/default.nix +++ b/darwin/profiles/desktop/home/default.nix @@ -1,6 +1,5 @@ { config, - osConfig, pkgs, lib, ... @@ -53,23 +52,6 @@ done ) ''; - - # I should've putted it in /darwin/modules/networking/proxy.nix, - # but I am too stupid to figure out how nix-darwin works... - setSystemProxy = let - inherit (osConfig.networking) knownNetworkServices; - networksetup = /usr/sbin/networksetup; - - # naive but works(tm) - # "http://127.0.0.1:1234/" -> "127.0.0.1 1234" - proxy = builtins.replaceStrings ["http://" ":" "/"] ["" " " ""] osConfig.networking.proxy.httpProxy; - in - lib.hm.dag.entryAfter ["writeBoundary"] - (lib.concatMapStrings (x: '' - ${networksetup} -setwebproxystate "${x}" on - ${networksetup} -setwebproxy "${x}" ${proxy} - '') - knownNetworkServices); }; packages = with pkgs; [