Package: guix;
Reported by: Leo Famulari <leo <at> famulari.name>
Date: Tue, 21 Feb 2017 17:20:01 UTC
Severity: normal
Done: Leo Famulari <leo <at> famulari.name>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Mathieu Lirzin <mthl <at> gnu.org> To: Leo Famulari <leo <at> famulari.name> Cc: 25831 <at> debbugs.gnu.org Subject: bug#25831: Expose http_proxy setting on GuixSD Date: Wed, 22 Feb 2017 10:51:47 +0100
Hi, Leo Famulari <leo <at> famulari.name> writes: > 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. > > From 1e6e95ea5b43231d09279b9e54f5c581462486f6 Mon Sep 17 00:00:00 2001 > From: Leo Famulari <leo <at> famulari.name> > Date: Tue, 21 Feb 2017 14:57:02 -0500 > Subject: [PATCH] services: guix: Support using an HTTP proxy. > > * gnu/services/base.scm (<guix-configuration>)[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. > + I don't know much about HTTP proxying but when reading 'in-band-download' in "guix/download.scm" I see a line like this: #:leaked-env-vars '("http_proxy" "https_proxy") which makes me think that maybe we should add an https_proxy toggle in 'guix-configuration' too? However I see that 'open-connection-for-uri' in "guix/download.scm" ignores "https_proxy" with a comment from 2015: ;; For HTTPS URIs, honor 'https_proxy', not 'http_proxy'. ;; FIXME: Proxying is not supported for https. Do you have any idea if this could be easily fixed? > @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 <alezost <at> gmail.com> > ;;; Copyright © 2015, 2016 Mark H Weaver <mhw <at> netris.org> > ;;; Copyright © 2015 Sou Bunnbu <iyzsong <at> gmail.com> > -;;; Copyright © 2016 Leo Famulari <leo <at> famulari.name> > +;;; Copyright © 2016, 2017 Leo Famulari <leo <at> famulari.name> > ;;; Copyright © 2016 David Craven <david <at> craven.ch> > ;;; Copyright © 2016 Ricardo Wurmus <rekado <at> elephly.net> > ;;; > @@ -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 ;<package> > - (default lsof))) > + (default lsof)) > + (http-proxy guix-http-proxy ;string > + (default #f))) '#f' is not a string. So either specify ';string | #f' or make the default value '""'. > > (define %default-guix-configuration > (guix-configuration)) > @@ -1125,7 +1127,7 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) > (($ <guix-configuration> 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)) > + #~())) I think it would be more readable like this: #$@(if http-proxy (list (string-append "http_proxy=" http-proxy)) '()) or if '""' is the default value: #$@(if (string-null? http-proxy) '() (list (string-append "http_proxy=" http-proxy))) Thanks. -- Mathieu Lirzin GPG: F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.