diff options
author | Antoine R. Dumont <antoine.romain.dumont@gmail.com> | 2014-11-19 20:13:54 +0100 |
---|---|---|
committer | Luca Bruno <lucabru@src.gnome.org> | 2014-11-30 15:19:25 +0100 |
commit | 3c7e77960282dcf550fc2df8445c7da3ee27fb3c (patch) | |
tree | 35409f1f24b84e23ff90d93c798f5e2cd4038e37 /nixos/modules | |
parent | 92448fb3ae608c8236140a13cbff635a9133dc86 (diff) | |
download | nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.gz nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.bz2 nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.lz nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.xz nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.tar.zst nixlib-3c7e77960282dcf550fc2df8445c7da3ee27fb3c.zip |
Introduce a dedicated networking.proxy option
Following the discussion NixOS#5021: - obsolete the nix.proxy option - add the networking.proxy option - open a default no_proxy environment variable - add a rsync option - Manual tests ok. - Automatic tests ok. Amended by lethalman to simplify the option descriptions.
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/config/networking.nix | 88 | ||||
-rw-r--r-- | nixos/modules/rename.nix | 3 | ||||
-rw-r--r-- | nixos/modules/services/misc/nix-daemon.nix | 18 |
3 files changed, 90 insertions, 19 deletions
diff --git a/nixos/modules/config/networking.nix b/nixos/modules/config/networking.nix index 773d0b1f1a7d..b908f95df17e 100644 --- a/nixos/modules/config/networking.nix +++ b/nixos/modules/config/networking.nix @@ -39,6 +39,73 @@ in ''; }; + networking.proxy = { + + default = lib.mkOption { + type = types.nullOr types.str; + default = null; + description = '' + This option specifies the default value for httpProxy, httpsProxy, ftpProxy and rsyncProxy. + ''; + example = "http://127.0.0.1:3128"; + }; + + httpProxy = lib.mkOption { + type = types.nullOr types.str; + default = cfg.proxy.default; + description = '' + This option specifies the http_proxy environment variable. + ''; + example = "http://127.0.0.1:3128"; + }; + + httpsProxy = lib.mkOption { + type = types.nullOr types.str; + default = cfg.proxy.default; + description = '' + This option specifies the https_proxy environment variable. + ''; + example = "http://127.0.0.1:3128"; + }; + + ftpProxy = lib.mkOption { + type = types.nullOr types.str; + default = cfg.proxy.default; + description = '' + This option specifies the ftp_proxy environment variable. + ''; + example = "http://127.0.0.1:3128"; + }; + + rsyncProxy = lib.mkOption { + type = types.nullOr types.str; + default = cfg.proxy.default; + description = '' + This option specifies the rsync_proxy environment variable. + ''; + example = "http://127.0.0.1:3128"; + }; + + noProxy = lib.mkOption { + type = types.nullOr types.str; + default = null; + description = '' + This option specifies the no_proxy environment variable. + If a default proxy is used and noProxy is null, + then noProxy will be set to 127.0.0.1,localhost. + ''; + example = "127.0.0.1,localhost,.localdomain"; + }; + + envVars = lib.mkOption { + type = types.attrs; + internal = true; + default = {}; + description = '' + Environment variables used for the network proxy. + ''; + }; + }; }; config = { @@ -93,6 +160,25 @@ in } )); + networking.proxy.envVars = + optionalAttrs (cfg.proxy.default != null) { + # other options already fallback to proxy.default + no_proxy = "127.0.0.1,localhost"; + } // optionalAttrs (cfg.proxy.httpProxy != null) { + http_proxy = cfg.proxy.httpProxy; + } // optionalAttrs (cfg.proxy.httpsProxy != null) { + https_proxy = cfg.proxy.httpsProxy; + } // optionalAttrs (cfg.proxy.rsyncProxy != null) { + rsync_proxy = cfg.proxy.rsyncProxy; + } // optionalAttrs (cfg.proxy.ftpProxy != null) { + ftp_proxy = cfg.proxy.ftpProxy; + } // optionalAttrs (cfg.proxy.noProxy != null) { + no_proxy = cfg.proxy.noProxy; + }; + + # Install the proxy environment variables + environment.sessionVariables = config.networking.proxy.envVars; + # The ‘ip-up’ target is started when we have IP connectivity. So # services that depend on IP connectivity (like ntpd) should be # pulled in by this target. @@ -120,4 +206,4 @@ in }; -} + } diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 2b2d8e8cec58..b29a3d0354c9 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -110,6 +110,9 @@ in zipModules ([] # VirtualBox ++ obsolete [ "services" "virtualbox" "enable" ] [ "services" "virtualboxGuest" "enable" ] +# proxy +++ obsolete [ "nix" "proxy" ] [ "networking" "proxy" "default" ] + # KDE ++ deprecated [ "kde" "extraPackages" ] [ "environment" "kdePackages" ] # ++ obsolete [ "environment" "kdePackages" ] [ "environment" "systemPackages" ] # !!! doesn't work! diff --git a/nixos/modules/services/misc/nix-daemon.nix b/nixos/modules/services/misc/nix-daemon.nix index 4b398979fbaa..f8f99be9b099 100644 --- a/nixos/modules/services/misc/nix-daemon.nix +++ b/nixos/modules/services/misc/nix-daemon.nix @@ -193,17 +193,6 @@ in ''; }; - proxy = mkOption { - type = types.str; - default = ""; - description = '' - This option specifies the proxy to use for fetchurl. The real effect - is just exporting http_proxy, https_proxy and ftp_proxy with that - value. - ''; - example = "http://127.0.0.1:3128"; - }; - # Environment variables for running Nix. envVars = mkOption { type = types.attrs; @@ -317,13 +306,6 @@ in NIX_BUILD_HOOK = "${nix}/libexec/nix/build-remote.pl"; NIX_REMOTE_SYSTEMS = "/etc/nix/machines"; NIX_CURRENT_LOAD = "/run/nix/current-load"; - } - - # !!! These should not be defined here, but in some general proxy configuration module! - // optionalAttrs (cfg.proxy != "") { - http_proxy = cfg.proxy; - https_proxy = cfg.proxy; - ftp_proxy = cfg.proxy; }; # Set up the environment variables for running Nix. |