From mboxrd@z Thu Jan 1 00:00:00 1970 From: Leo Famulari Subject: bug#25831: Expose http_proxy setting on GuixSD Date: Tue, 21 Feb 2017 15:26:54 -0500 Message-ID: <20170221202654.GA16281@jasmine> References: <20170221171912.GB1656@jasmine> <87efyrwgrk.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="DocE+STaALJfprDB" Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cgH2b-0003yG-Du for bug-guix@gnu.org; Tue, 21 Feb 2017 15:28:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cgH2Y-0003zE-7e for bug-guix@gnu.org; Tue, 21 Feb 2017 15:28:05 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:51068) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cgH2Y-0003yz-3w for bug-guix@gnu.org; Tue, 21 Feb 2017 15:28:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cgH2X-0003xp-Se for bug-guix@gnu.org; Tue, 21 Feb 2017 15:28:01 -0500 Sender: "Debbugs-submit" Resent-Message-ID: Content-Disposition: inline In-Reply-To: <87efyrwgrk.fsf@gnu.org> List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Mathieu Lirzin Cc: 25831@debbugs.gnu.org --DocE+STaALJfprDB Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Feb 21, 2017 at 07:17:03PM +0100, Mathieu Lirzin wrote: > Not sure if this is an appropriate answer, but to customize the guix daemon > service field like described in the example here: > > https://www.gnu.org/software/guix/manual/html_node/Using-the-Configuration-System.html#System-Services > > you would have to patch "gnu/services/base.scm" by adding a field to the > 'guix-configuration' that would be then be passed to the > '#:environment-variables' option of 'make-forkexec-constructor' in > 'guix-shepherd-service'. Thank you, that helped a lot! What do the two of you think of the attached patch? Using the attached OS declaration, I verified that the http_proxy environment variable is set in the guix-daemon's environment, but I don't have a proxy to test with. --DocE+STaALJfprDB Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: attachment; filename="0001-services-guix-Support-using-an-HTTP-proxy.patch" Content-Transfer-Encoding: 8bit >From 1e6e95ea5b43231d09279b9e54f5c581462486f6 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 21 Feb 2017 14:57:02 -0500 Subject: [PATCH] services: guix: Support using an HTTP proxy. * gnu/services/base.scm ()[http-proxy]: New field. (guix-shepherd-service): Use 'http-proxy' in #:environment-variables. * doc/guix.texi ... --- doc/guix.texi | 4 ++++ gnu/services/base.scm | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 6cdb5e592..19a31c659 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -8611,6 +8611,10 @@ are written. @item @code{lsof} (default: @var{lsof}) The lsof package to use. +@item @code{http-proxy} (default: @code{#f}) +The HTTP proxy used for downloading fixed-output derivations and +substitutes. + @end table @end deftp diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 57601eab8..352a90be7 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015, 2016 Alex Kost ;;; Copyright © 2015, 2016 Mark H Weaver ;;; Copyright © 2015 Sou Bunnbu -;;; Copyright © 2016 Leo Famulari +;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2016 David Craven ;;; Copyright © 2016 Ricardo Wurmus ;;; @@ -1114,7 +1114,9 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) (log-file guix-configuration-log-file ;string (default "/var/log/guix-daemon.log")) (lsof guix-configuration-lsof ; - (default lsof))) + (default lsof)) + (http-proxy guix-http-proxy ;string + (default #f))) (define %default-guix-configuration (guix-configuration)) @@ -1125,7 +1127,7 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) (($ guix build-group build-accounts authorize-key? keys use-substitutes? substitute-urls extra-options - log-file lsof) + log-file lsof http-proxy) (list (shepherd-service (documentation "Run the Guix daemon.") (provision '(guix-daemon)) @@ -1142,7 +1144,10 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) ;; Add 'lsof' (for the GC) to the daemon's $PATH. #:environment-variables - (list (string-append "PATH=" #$lsof "/bin")) + (list (string-append "PATH=" #$lsof "/bin") + #$@(if http-proxy + #~((string-append"http_proxy=" #$http-proxy)) + #~())) #:log-file #$log-file)) (stop #~(make-kill-destructor))))))) -- 2.11.1 --DocE+STaALJfprDB Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="os-config-bare-bones.scm" ;; This is an operating system configuration template ;; for a "bare bones" setup, with no X11 display server. (use-modules (gnu)) (use-service-modules networking ssh) (use-package-modules admin) (operating-system (host-name "komputilo") (timezone "Europe/Berlin") (locale "en_US.utf8") ;; Assuming /dev/sdX is the target hard disk, and "my-root" is ;; the label of the target root file system. (bootloader (grub-configuration (device "/dev/sdX"))) (file-systems (cons (file-system (device "my-root") (title 'label) (mount-point "/") (type "ext4")) %base-file-systems)) ;; This is where user accounts are specified. The "root" ;; account is implicit, and is initially created with the ;; empty password. (users (cons (user-account (name "alice") (comment "Bob's sister") (group "users") ;; Adding the account to the "wheel" group ;; makes it a sudoer. Adding it to "audio" ;; and "video" allows the user to play sound ;; and access the webcam. (supplementary-groups '("wheel" "audio" "video")) (home-directory "/home/alice")) %base-user-accounts)) ;; Globally-installed packages. (packages (cons* tcpdump htop %base-packages)) ;; Add services to the baseline: a DHCP client and ;; an SSH server. (services (cons* (dhcp-client-service) (modify-services %base-services (guix-service-type config => (guix-configuration (inherit config) (http-proxy "http://example.com"))))))) --DocE+STaALJfprDB--