Re: Hi, I am R Veera Kumar - Current Outreachy selected Applicant

2020-03-10 Thread Gábor Boskovits
Hello,

Veera  ezt írta (időpont: 2020. márc. 8., Vas 8:41):

> On Sat, Mar 07, 2020 at 09:31:32PM +0100, Gábor Boskovits wrote:
> > Hello Veera,
> >
> > Veera  ezt írta (időpont: 2020. márc. 7., Szo 16:05):
> >
> > > Hi,
> > >
> > > I am R Veera Kumar from India. I have been selected as Outreachy
> applicant
> > > for May 2020 round.
> > >
> > Nice to see you around.
> >
>
> Thanks!
>
> >
> > >
> > > I have heard about Guix from news and have checked about it a little
> > > before.
> > > I do not know Scheme/Guile Language.
> > >
> > This is not a problem. I believe it can be picked up easily. This won't
> be
> > the biggest burden in the project.
> >
>
> Oh well.
>
> > >
> > > How do I get started?
> > > What contributions can I make?
> > >
> >
> > To get started you should install guix. For this project it might make
> > sense to install guix system also. You should also set up a guix
> > development environment, by checking out the source code, and building
> it.
> >
>
> I am installing GuixSD.
>

How did the install go?

Could you do it? Please feel free to reach out to me should you have any
questions.

>
> > The usual first time contribution we recommend is to package an R package
> > from cran that has all its dependencies in guix using the importer.
> >
> > You can also check out http://issues.guix.gnu.org/easy and work on some
> > easy bugs.
> >
>
> Yes. I checked that.
>
> > Thanks for your interest. I hope that I could give you useful
> information.
> >
> > Best regards,
> > g_bor
> >
>
> Thanks for the welcome!
>
> Regards,
> Veera
>
Best regards,
G_bor

>


Re: About guix mirror build script

2020-03-10 Thread zimoun
Dear,

On Tue, 10 Mar 2020 at 03:48, tumashu  wrote:

> In China , guix  substitute  download  seem to be  to slow,  
> nearly unuseable.

About which kind of substitutes are you talking?
 1. from where Guix pulls? (guix pull)
 2. from where Guix fetches the binaries? (guix install)

About 1. we had a discussion [1] on December about mirroring the
official Git repo on Savannah. But AFAIK, nothing relevant has be done
in this area. Feel free to propose a plan. :-)


About 2. currently the binaries are mainly served by ci.guix.gnu.org
located in Berlin.
And an attempt to use CDN had been done a couple of month ago. You
could be interested by this thread [2] and as you reported [3] the CDN
experience was improving the situation in China.

Well, the best is perhaps to time the issue, see this message [4].

[1] https://lists.gnu.org/archive/html/guix-devel/2019-12/msg00148.html
[2] https://lists.gnu.org/archive/html/guix-devel/2019-03/msg00135.html
[3] https://lists.gnu.org/archive/html/guix-devel/2019-03/msg00222.html
[4] https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00192.html


On the long term, a patch [5] using IPFS needs some love (review, tests, etc.).

[5] https://issues.guix.info/issue/33899


> this week, I have found that  NIX channels has been built China mirror 
> successful with the help of
> 4 files:
>
> 1. https://github.com/tuna/tunasync-scripts/blob/master/nix.py
> 2. https://github.com/tuna/tunasync-scripts/blob/master/nix-channels.py
> 3. https://github.com/tuna/tunasync-scripts/blob/master/nixos-images.py
> 4. 
> https://github.com/tuna/tunasync-scripts/blob/master/dockerfiles/nix-channels/Dockerfile
>
> guix is very similar nix, so I want to know how to port 4 files to work with 
> guix?
> is it possible add similar tools to guix?

Well, I have not dove into all these Python scripts to know exactly
what they  are doing.
And I do not know what are the storage resources one needs to mirror
ci.guix.gnu.org.
But yes, if you have the resources (storage) to mirror the binaries
susbtitute, you can try to adapt these scripts by replacing the URLs.


All the best,
simon



Re: 08/33: gnu: make: Revert to 4.1 for the Hurd.

2020-03-10 Thread Ludovic Courtès
Hello janneke!

I’m commenting as I see messages come by, hope that’s fine.  :-)

guix-comm...@gnu.org skribis:

> commit f7804e0f00741a65e7538fe7f3f0cf9844c2165c
> Author: Jan Nieuwenhuizen 
> AuthorDate: Wed Feb 26 20:22:18 2020 -0500
>
> gnu: make: Revert to 4.1 for the Hurd.
> 
> * gnu/packages/base.scm (gnu-make-4.1): New variable.
> * gnu/packages/commencement.scm (gnu-make-boot0): Use it for the Hurd.

How much effort would it be to patch current Make for the Hurd?  It
would be ideal if we could apply the patch unconditionally and have a
single Make variant.

>  (define gnu-make-boot0
>(package
>  (inherit gnu-make)
> -(source (bootstrap-origin (package-source gnu-make)))
> +(version (if (hurd-system?) "4.1"
> + (package-version gnu-make)))
> +(source (if (hurd-system?)
> +(bootstrap-origin (package-source gnu-make-4.1))
> +(bootstrap-origin (package-source gnu-make

This won’t work as expected because ‘source’ is no thunked, and thus
(hurd-system?)  is evaluated at the top level, when the module is
loaded.  (IOW, if you do “-s i586-gnu” from GNU/Linux, it’ll go through
the wrong arm of the ‘if’.)

Ludo’.



Re: 05/33: gnu: hurd: Fix hurd-target?.

2020-03-10 Thread Ludovic Courtès
guix-comm...@gnu.org skribis:

> commit cd5f9ba3b1130d8f54b1ef33106f25f29732e007
> Author: Jan Nieuwenhuizen 
> AuthorDate: Wed Mar 4 11:49:46 2020 -0500
>
> gnu: hurd: Fix hurd-target?.
> 
> * gnu/packages/hurd.scm (hurd-target?): Bugfix; the arguments to
> string-suffix? to test (%current-system) were transposed, always resulting
> in #f.  Use hurd-triplet?.

Would be nice to squash with the previous one.  :-)



Re: `guix build hello' now succeeds on the Hurd

2020-03-10 Thread Jan Nieuwenhuizen
Ludovic Courtès writes:

>> The situation on the Hurd starts to look pretty good
>>
>> janneke@debian:~/src/guix$ ./pre-inst-env guix build hello --no-offload
>> /gnu/store/a2sylb94rm1b6qxcp5mqvgiyx9szipz7-hello-2.10
>> janneke@debian:~/src/guix$ 
>> /gnu/store/a2sylb94rm1b6qxcp5mqvgiyx9szipz7-hello-2.10/bin/hello
>> Hello, world!
>>
>> \o/
>
> Woohoo!  Congrats!
>
> How do you run guix-daemon?  (In the future it’d be great to perhaps
> implement Linux namespaces on the Hurd in libc.)

I have slightly cleaned-up a patch by Manolis so that I can run

sudo ./pre-inst-env guix-daemon --disable-chroot 
--build-users-group=guixbuild &

This and other useful recipes I have noted in my scratchbook on the Hurd

   https://gitlab.com/janneke/guix/-/blob/wip-hurd-system/THE-HURD

I briefly looked at more work-in-progress daemon patches by Manolis, but
stopped when I found that it needs [t]his "new" libhurdutils library...
@Manolis?

> Merging what you have—the earlier the better.  :-)
>> Shall I push this to savannah as `wip-hurd' (possibly save wip-hurd->
>> `wip-hurd-old?);
>
> Yup, sounds like a plan.

Great, thanks, done; follow-up here!

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40006
https://issues.guix.info/issue/40006

>> I could also rewrite wip-hurd-bootstrap?
>
> Dunno!
>
> To me, the difficult bit with porting and bootstrapping work is making
> sure that bootstrap.scm/commencement.scm/base.scm/cross-base.scm remain
> maintainable.  All this complexity adds up so we must spend time trying
> to, for instance, minimize variation across platforms/OSes.  Every line
> of code and above all every conditional avoided in these files is a win
> in the not-so-long term.  That’d be my guideline as we merge it.  :-)
>
> Anyhow, thumbs up!  I’m looking forward to merging it and having it
> built on CI (we could offload to a Debian VM!)!

Yes, that would be awesome!

janneke

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



Re: 11/33: gnu: glibc: Add and update patches for the Hurd.

2020-03-10 Thread Ludovic Courtès
Hi,

guix-comm...@gnu.org skribis:

> commit 32d3fa5309532b8bcf7f7be15ffabfa99c6ecfaf
> Author: Jan Nieuwenhuizen 
> AuthorDate: Sun Mar 1 16:37:37 2020 +0100
>
> gnu: glibc: Add and update patches for the Hurd.
> 
> * gnu/packages/patches/glibc-hurd-magic-pid.patch: Remove unused file.
> * gnu/packages/patches/glibc-hurd-clock_t_centiseconds.patch: New file.
> * gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Update them.
> * gnu/packages/base.scm (glibc): Use two new patches.

[...]

> -(patches (search-patches "glibc-ldd-x86_64.patch"
> +(patches `(,@(search-patches "glibc-ldd-x86_64.patch"
  ^
Superfluous.  :-)

> + 
> "glibc-hurd-clock_t_centiseconds.patch"
> + 
> "glibc-hurd-clock_gettime_monotonic.patch")

Nice patches!  Did you submit them upstream?  They are likely to be
applied quite quickly nowadays, so they could make it in glibc 2.32.
(It’s fine to carry them in the meantime, of course.)

Ludo’.



Re: 33/33: daemon: Workaround issues for the Hurd.

2020-03-10 Thread Ludovic Courtès
guix-comm...@gnu.org skribis:

> commit c32b64950972a459af7192abd7a8bc9619c013e9
> Author: Manolis Ragkousis 
> AuthorDate: Wed Dec 28 02:49:22 2016 +0200
>
> daemon: Workaround issues for the Hurd.
> 
> This allows for native builds on the Hurd, doing
> 
> sudo ./pre-inst-env guix-daemon --disable-chroot 
> --build-users-group=guixbuild &
> ./pre-inst-env guix build hello
> 
> * nix/libstore/build.cc (DerivationGoal::startBuilder)[__GNU__]: Allow
> non-chrooted build.
> * nix/libutil/util.cc (killUser)[__GNU__]: Avoid wait failure.

[...]

> +++ b/nix/libstore/build.cc
> @@ -1824,7 +1824,7 @@ void DerivationGoal::startBuilder()
>  }
>  
>  if (useChroot) {
> -#if CHROOT_ENABLED
> +#if CHROOT_ENABLED || __GNU__

Can we instead change the #define CHROOT_ENABLED such that
CHROOT_ENABLED is always true when __GNU__?  Also with a comment stating
that GNU supports chroot(2) without being root.

> +++ b/nix/libutil/util.cc
> @@ -872,9 +872,11 @@ void killUser(uid_t uid)
>  _exit(0);
>  });
>  
> +#if !__GNU__
>  int status = pid.wait(true);
>  if (status != 0)
>  throw Error(format("cannot kill processes for uid `%1%': %2%") % uid 
> % statusToString(status));
> +#endif

Do you know what the rationale was?  It looks like it could leave
zombies behind us.

Ludo’.



Re: 15/33: gnu: coreutils: Remove libcap dependency for the Hurd.

2020-03-10 Thread Ludovic Courtès
guix-comm...@gnu.org skribis:

> commit ae159bde64917511d345cd2e1dd1feabe5f73b72
> Author: Jan Nieuwenhuizen 
> AuthorDate: Sat Mar 7 03:53:38 2020 -0500
>
> gnu: coreutils: Remove libcap dependency for the Hurd.
> 
> * gnu/packages/base.scm (coreutils)[inputs]: Remove libcap for the Hurd.
> ---
>  gnu/packages/base.scm | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
> index 9f1477b..4b347a7 100644
> --- a/gnu/packages/base.scm
> +++ b/gnu/packages/base.scm
> @@ -304,7 +304,9 @@ used to apply commands with arbitrarily long arguments.")
>  
>   ;; Drop the dependency on libcap when cross-compiling since it's
>   ;; not quite cross-compilable.
> - ,@(if (%current-target-system)
> + ;; Also, libcap is not available on the Hurd.
> + ,@(if (or (%current-target-system)
> +   (hurd-target?))

Perhaps we’d also need something based on ‘supported-platforms’ here.
(Not a blocker, though.)

Ludo’.



Re: 27/33: gnu: commencement: glibc-intermediate: Build fixes for the Hurd.

2020-03-10 Thread Ludovic Courtès
guix-comm...@gnu.org skribis:

> ;; Tell 'libpthread' where to find 'libihash' on Hurd 
> systems.
> -   ,@(if (hurd-triplet? (%current-system))
> - `((substitute* "libpthread/Makefile"
> - (("LDLIBS-pthread.so =.*")
> -  (string-append "LDLIBS-pthread.so = "
> - (assoc-ref %build-inputs 
> "kernel-headers")
> - "/lib/libihash.a\n"
> +   ,@(if (hurd-system?)
> + `(map
> +   (lambda (f)
> +(substitute* f
> +  (("LDLIBS-pthread.so =.*")
> +   (string-append "LDLIBS-pthread.so = "
> +  (assoc-ref %build-inputs 
> "kernel-headers")
> +  "/lib/libihash.a\n")))
> +'("sysdeps/mach/Makefile"
> +  "sysdeps/mach/hurd/Makefile:")))

‘substitute*’ accepts a list of files, so you can write it like this:

  (substitute* '("sysdeps/mach/hurd/Makefile" "sysdeps/mach/Makefile")
…)

Ludo’.



Re: 23/33: gnu: commencement: gcc-boot0: Build fix for the Hurd.

2020-03-10 Thread Ludovic Courtès
guix-comm...@gnu.org skribis:

> commit 7a57ca758c590742b63100944f07fddb7290f797
> Author: Jan Nieuwenhuizen 
> AuthorDate: Sun Mar 1 13:45:42 2020 +0100
>
> gnu: commencement: gcc-boot0: Build fix for the Hurd.
> 
> Fixes:
> g++   -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions 
> -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing 
> -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual 
> -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   
> -DHAVE_CONFIG_H -DGENERATOR_FILE -fno-PIE -static-libstdc++ -static-libgcc 
> -Wl,-rpath=/gnu/store/vp2id82a597p119b3wyhhkhd467wvn78-glibc-bootstrap-0/lib 
> -Wl,-dynamic-linker -Wl,/gnu/store/vp2id82a597p119b3w [...]
> build/genmddeps.o build/read-md.o build/errors.o 
> ../build-i586-unknown-gnu/libiberty/libiberty.a
> 
> /gnu/store/jk3kx5jwjs9m60svzk6sz79bf0w33l91-binutils-cross-boot0-2.34/bin/ld: 
> build/read-md.o: in function `md_reader::~md_reader()':
> 
> /tmp/guix-build-gcc-cross-boot0-7.5.0.drv-0/build/gcc/../../gcc-7.5.0/gcc/read-md.c:1049:
>  undefined reference to `operator delete(void*, unsigned int)'
> 
> This raises the question: Should libstdc++-boot0 (v4.9) be sufficient to 
> build
> gcc-boot0 (v7.5.0)?

Hmm?  :-)

> * gnu/packages/commencement.scm (gcc-boot0): Add static library path.

> `(,(string-append "LDFLAGS="
> + (if ,(hurd-system?)
> + (string-append
> +  "-L" (assoc-ref %build-inputs "gcc") 
> "/lib ")
> + "")

Could you add a comment saying that this is to allow the ‘delete’
operator to be found?  Weird.

That’s it, thanks for the great work!

Ludo’.



Re: 08/33: gnu: make: Revert to 4.1 for the Hurd.

2020-03-10 Thread Jan Nieuwenhuizen
Ludovic Courtès writes:

Hello Ludo,

> I’m commenting as I see messages come by, hope that’s fine.  :-)

Sure, that's great!

> guix-comm...@gnu.org skribis:
>
>> commit f7804e0f00741a65e7538fe7f3f0cf9844c2165c
>> Author: Jan Nieuwenhuizen 
>> AuthorDate: Wed Feb 26 20:22:18 2020 -0500
>>
>> gnu: make: Revert to 4.1 for the Hurd.
>> 
>> * gnu/packages/base.scm (gnu-make-4.1): New variable.
>> * gnu/packages/commencement.scm (gnu-make-boot0): Use it for the Hurd.
>
> How much effort would it be to patch current Make for the Hurd?  It
> would be ideal if we could apply the patch unconditionally and have a
> single Make variant.

I agree, I don't know :-)  v4.3 compiles fine but apart from --help and
--version it hangs when invoked.  I hoped it would be fixed after
applying the clock patches, but those only worked for Python.

We could either try to debug it or try some/all of Debian's glibc
patches.  If it's already fixed by patching glibc, the only effort
involved is suffer some rebuilds.  Unless you have a better idea I'll
have look at patching glibc first.

>>  (define gnu-make-boot0
>>(package
>>  (inherit gnu-make)
>> -(source (bootstrap-origin (package-source gnu-make)))
>> +(version (if (hurd-system?) "4.1"
>> + (package-version gnu-make)))
>> +(source (if (hurd-system?)
>> +(bootstrap-origin (package-source gnu-make-4.1))
>> +(bootstrap-origin (package-source gnu-make
>
> This won’t work as expected because ‘source’ is no thunked, and thus
> (hurd-system?)  is evaluated at the top level, when the module is
> loaded.  (IOW, if you do “-s i586-gnu” from GNU/Linux, it’ll go through
> the wrong arm of the ‘if’.)

Ah, crap!  It seemed to work natively and with -t i586-pc-gnu ... (-s
won't work anyway, right?)  Hmm.

janneke

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



Re: 23/33: gnu: commencement: gcc-boot0: Build fix for the Hurd.

2020-03-10 Thread Efraim Flashner
On Tue, Mar 10, 2020 at 10:13:37AM +0100, Ludovic Courtès wrote:
> guix-comm...@gnu.org skribis:
> 
> > commit 7a57ca758c590742b63100944f07fddb7290f797
> > Author: Jan Nieuwenhuizen 
> > AuthorDate: Sun Mar 1 13:45:42 2020 +0100
> >
> > gnu: commencement: gcc-boot0: Build fix for the Hurd.
> > 
> > Fixes:
> > g++   -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   
> > -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall 
> > -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute 
> > -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros 
> > -Wno-overlength-strings   -DHAVE_CONFIG_H -DGENERATOR_FILE -fno-PIE 
> > -static-libstdc++ -static-libgcc 
> > -Wl,-rpath=/gnu/store/vp2id82a597p119b3wyhhkhd467wvn78-glibc-bootstrap-0/lib
> >  -Wl,-dynamic-linker -Wl,/gnu/store/vp2id82a597p119b3w [...]
> > build/genmddeps.o build/read-md.o build/errors.o 
> > ../build-i586-unknown-gnu/libiberty/libiberty.a
> > 
> > /gnu/store/jk3kx5jwjs9m60svzk6sz79bf0w33l91-binutils-cross-boot0-2.34/bin/ld:
> >  build/read-md.o: in function `md_reader::~md_reader()':
> > 
> > /tmp/guix-build-gcc-cross-boot0-7.5.0.drv-0/build/gcc/../../gcc-7.5.0/gcc/read-md.c:1049:
> >  undefined reference to `operator delete(void*, unsigned int)'
> > 
> > This raises the question: Should libstdc++-boot0 (v4.9) be sufficient 
> > to build
> > gcc-boot0 (v7.5.0)?
> 
> Hmm?  :-)
> 
> > * gnu/packages/commencement.scm (gcc-boot0): Add static library path.
> 
> > `(,(string-append "LDFLAGS="
> > + (if ,(hurd-system?)
> > + (string-append
> > +  "-L" (assoc-ref %build-inputs "gcc") 
> > "/lib ")
> > + "")
> 
> Could you add a comment saying that this is to allow the ‘delete’
> operator to be found?  Weird.
> 
> That’s it, thanks for the great work!
> 
> Ludo’.
> 

With the bootstrapping efforts going around there's a couple of patches
floating around to change the gcc version for libstdc++-boot0. I've
tested the following patch, which also prepares the way for any other
future supported platforms.

-- 
Efraim Flashner  אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
From 4506c48da7df4397d459337988adbdd54c0d440d Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Thu, 13 Feb 2020 10:47:34 +0200
Subject: [PATCH 1/2] gnu: libstdc++-boot0: Use per-architecture gcc versions.

* gnu/packages/commencement.scm (libstdc++-boot0): Use a version of gcc
more closely tied to their bootstrap process.
---
 gnu/packages/commencement.scm | 11 +++
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 2a0a83ad49..b5cb08a19a 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014 Andreas Enge 
 ;;; Copyright © 2012 Nikita Karetnikov 
 ;;; Copyright © 2014, 2015, 2017 Mark H Weaver 
-;;; Copyright © 2017, 2018, 2019 Efraim Flashner 
+;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner 
 ;;; Copyright © 2018 Tobias Geerinckx-Rice 
 ;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen 
 ;;; Copyright © 2019 Marius Bakke 
@@ -1427,9 +1427,12 @@ exec " gcc "/bin/" program
 (define libstdc++-boot0
   ;; GCC's libcc1 is always built as a shared library (the top-level
   ;; 'Makefile.def' forcefully adds --enable-shared) and thus needs to refer
-  ;; to libstdc++.so.  We cannot build libstdc++-5.3 because it relies on
-  ;; C++14 features missing in some of our bootstrap compilers.
-  (let ((lib (make-libstdc++ gcc-4.9)))
+  ;; to libstdc++.so.  We therefore use a version of GCC which most closely
+  ;; matches the bootstrap compiler of that architecture.
+  (let ((lib (make-libstdc++
+   (match (%current-system)
+ ("aarch64-linux" gcc-5)
+ (_ gcc-4.9)
 (package
   (inherit lib)
   (source (bootstrap-origin (package-source lib)))
-- 
2.25.0



signature.asc
Description: PGP signature


Re: About guix mirror build script

2020-03-10 Thread Ricardo Wurmus


tumashu  writes:

> In China , guix  substitute  download  seem to be  to slow,  
> nearly unuseable.

I have enabled an rsync daemon on ci.guix.gnu.org to share the “guix
publish” cache.  There are a few things missing:

* not all files in /gnu/cache/guix can be read due to overly restrictive
  permissions generated by “guix publish”

* having a copy of the cache alone is not enough.  You’ll need to serve
  them like “guix publish” would.  I haven’t looked closely enough, but
  it should be possible to serve this all statically.

The first useful step, I believe, is to mirror the “guix publish” cache.

--
Ricardo



Re: `guix build hello' now succeeds on the Hurd

2020-03-10 Thread Jan Nieuwenhuizen
Ricardo Wurmus writes:

> Ludovic Courtès  writes:
>
>> Anyhow, thumbs up!  I’m looking forward to merging it and having it
>> built on CI (we could offload to a Debian VM!)!
>
> My sentiments exactly!  I’d be happy to put up a bunch of Debian
> GNU/Hurd VMs on the nodes behind ci.guix.gnu.org.

Thanks, yes that would be great!  We just identified the wish to get
make-4.3 to work; which could mean another couple of rebuild world
rounds...

janneke

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



Re: 05/33: gnu: hurd: Fix hurd-target?.

2020-03-10 Thread Jan Nieuwenhuizen
Ludovic Courtès writes:

>> gnu: hurd: Fix hurd-target?.
>> 
>> * gnu/packages/hurd.scm (hurd-target?): Bugfix; the arguments to
>> string-suffix? to test (%current-system) were transposed, always 
>> resulting
>> in #f.  Use hurd-triplet?.
>
> Would be nice to squash with the previous one.  :-)

The previous/next hurd-system one, I guess..  :) done.

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



Re: 11/33: gnu: glibc: Add and update patches for the Hurd.

2020-03-10 Thread Jan Nieuwenhuizen
Ludovic Courtès writes:

>> * gnu/packages/patches/glibc-hurd-clock_t_centiseconds.patch: New file.
>> * gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch: New 
>> file.
>> * gnu/local.mk (dist_patch_DATA): Update them.
>> * gnu/packages/base.scm (glibc): Use two new patches.
>
> [...]
>
>> -(patches (search-patches "glibc-ldd-x86_64.patch"
>> +(patches `(,@(search-patches "glibc-ldd-x86_64.patch"
>   ^
> Superfluous.  :-)

Ah yes thanks, removed.  (I had a number of patches that meant to avoid
triggering rebuilds -- this is a leftover.

>> + 
>> "glibc-hurd-clock_t_centiseconds.patch"
>> + 
>> "glibc-hurd-clock_gettime_monotonic.patch")
>
> Nice patches!  Did you submit them upstream?  They are likely to be
> applied quite quickly nowadays, so they could make it in glibc 2.32.
> (It’s fine to carry them in the meantime, of course.)

I "only" forward ported them, and fixed one; only to find the Debian
glibc git archive just yesterday; so very similar ones are in Debian.

It is unclear to me how that works, some are prefixed local-, others
submitted- or unsubmitted-.  I'll have to ask around.

Worse, I just found what I meant to fix before with

glibc-hurd-clock_gettime_monotonic.patch

namely

Fatal Python error: Py_Initialize: can't initialize time
OSError: [Errno 1073741846] Invalid argument

has somehow regressed...bah!  Combining that with our make v4.1/v4.3
problem, I guess I'll need to dive into these Debian patches some more.

Greetings,
janneke

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



Re: 27/33: gnu: commencement: glibc-intermediate: Build fixes for the Hurd.

2020-03-10 Thread Jan Nieuwenhuizen
Ludovic Courtès writes:

>> +   ,@(if (hurd-system?)
>> + `(map
>> +   (lambda (f)
>> +(substitute* f
>
> ‘substitute*’ accepts a list of files, so you can write it like this:
>
>   (substitute* '("sysdeps/mach/hurd/Makefile" "sysdeps/mach/Makefile")
> …)

Ah nice.  Looking closer I see now that this also avoided rebuilds and
conveniently splices returns a list -- changed to

   ;; Tell 'libpthread' where to find 'libihash' on Hurd 
systems.
   ,(when (hurd-system?)
  '(substitute* '("sysdeps/mach/Makefile"

suffering a rebuild now anyway.

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



Re: 33/33: daemon: Workaround issues for the Hurd.

2020-03-10 Thread Jan Nieuwenhuizen
Ludovic Courtès writes:

>> -#if CHROOT_ENABLED
>> +#if CHROOT_ENABLED || __GNU__
>
> Can we instead change the #define CHROOT_ENABLED such that
> CHROOT_ENABLED is always true when __GNU__?  Also with a comment stating
> that GNU supports chroot(2) without being root.

I tried a couple of things and then remembered a patch by Manolis that
already does something like this; but nicer.  So, I am now using that
patch and am only keeping this hack in the second patch (both attached)

>> +#if !__GNU__
>>  int status = pid.wait(true);
>>  if (status != 0)
>>  throw Error(format("cannot kill processes for uid `%1%': %2%") % 
>> uid % statusToString(status));
>> +#endif
>
> Do you know what the rationale was?  It looks like it could leave
> zombies behind us.

No, maybe Manolis knows?  What I do know is why I used the patch: before
applying this patch I could only build up to binutils-boot0.
binutils-boot0 would always fail like so

./pre-inst-env guix build -e '(@@ (gnu packages commencement) 
binutils-boot0)' --no-offload
XXX fails: Workaround for nix daemon
phase `compress-documentation' succeeded after 0.4 seconds
error: cannot kill processes for uid `999': Operation not permitted
guix build: error: cannot kill processes for uid `999': failed with exit code 1

I haven't been seeing zombies but I'll watch for them now; don't know
what's going on here?

Greetings,
janneke

>From 0307646b22fc488e6342f5814fdef336dd154be3 Mon Sep 17 00:00:00 2001
From: Manolis Ragkousis 
Date: Sun, 7 Aug 2016 17:48:30 +0300
Subject: [PATCH 1/2] daemon: Break CHROOT_ENABLED into smaller macros.

Checking for CLONE_NEWNS is only needed for using tha Linux specific clone(2),
otherwise we can use fork(2).

* nix/libstore/build.cc (CHROOT_ENABLED): Break into CHROOT_ENABLED
and CLONE_ENABLED.
(DerivationGoal::startBuilder): Replace CHROOT_ENABLED with CLONE_ENABLED.
(DerivationGoal::runChild): Only define pivot_root() if SYS_pivot_root is
defined.
---
 nix/libstore/build.cc | 11 +++
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index 17e92c68a7..fc81e14cd1 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -52,7 +52,12 @@
 #endif
 
 
-#define CHROOT_ENABLED HAVE_CHROOT && HAVE_SYS_MOUNT_H && defined(MS_BIND) && defined(MS_PRIVATE) && defined(CLONE_NEWNS) && defined(SYS_pivot_root)
+#define CHROOT_ENABLED HAVE_CHROOT && HAVE_SYS_MOUNT_H && defined(MS_BIND) && defined(MS_PRIVATE)
+#define CLONE_ENABLED defined(CLONE_NEWNS)
+
+#if defined(SYS_pivot_root)
+#define pivot_root(new_root, put_old) (syscall(SYS_pivot_root, new_root,put_old))
+#endif
 
 #if CHROOT_ENABLED
 #include 
@@ -2005,7 +2010,7 @@ void DerivationGoal::startBuilder()
- The UTS namespace ensures that builders see a hostname of
  localhost rather than the actual hostname.
 */
-#if CHROOT_ENABLED
+#if CLONE_ENABLED
 if (useChroot) {
 	char stack[32 * 1024];
 	int flags = CLONE_NEWPID | CLONE_NEWNS | CLONE_NEWIPC | CLONE_NEWUTS | SIGCHLD;
@@ -2186,10 +2191,8 @@ void DerivationGoal::runChild()
 if (mkdir("real-root", 0) == -1)
 throw SysError("cannot create real-root directory");
 
-#define pivot_root(new_root, put_old) (syscall(SYS_pivot_root, new_root, put_old))
 if (pivot_root(".", "real-root") == -1)
 throw SysError(format("cannot pivot old root directory onto '%1%'") % (chrootRootDir + "/real-root"));
-#undef pivot_root
 
 if (chroot(".") == -1)
 throw SysError(format("cannot change root directory to '%1%'") % chrootRootDir);
-- 
2.24.0

>From f7a04d93f8ef43d56809dc7171b8e681982e2b51 Mon Sep 17 00:00:00 2001
From: Manolis Ragkousis 
Date: Wed, 28 Dec 2016 02:49:22 +0200
Subject: [PATCH 2/2] daemon: Avoid killing issues for the Hurd.

This allows for native builds on the Hurd, doing

sudo ./pre-inst-env guix-daemon --disable-chroot --build-users-group=guixbuild &
./pre-inst-env guix build hello

XXX This works around

./pre-inst-env guix build -e '(@@ (gnu packages commencement) binutils-boot0)' --no-offload
phase `compress-documentation' succeeded after 0.4 seconds
error: cannot kill processes for uid `999': Operation not permitted
guix build: error: cannot kill processes for uid `999': failed with exit code 1

* nix/libutil/util.cc (killUser)[__GNU__]: Avoid wait failure.
---
 nix/libutil/util.cc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc
index fb2dfad1f7..df2cb1eb09 100644
--- a/nix/libutil/util.cc
+++ b/nix/libutil/util.cc
@@ -872,9 +872,11 @@ void killUser(uid_t uid)
 _exit(0);
 });
 
+#if !__GNU__
 int status = pid.wait(true);
 if (status != 0)
 throw Error(format("cannot kill processes for uid `%1%': %2%") % uid % statusToString(status));
+#endif
 
 /* !!! We should really do some check to make sure that there are
no processes left running

Re: 23/33: gnu: commencement: gcc-boot0: Build fix for the Hurd.

2020-03-10 Thread Jan Nieuwenhuizen
Efraim Flashner writes:

> On Tue, Mar 10, 2020 at 10:13:37AM +0100, Ludovic Courtès wrote:
>> guix-comm...@gnu.org skribis:
>> 
>> > commit 7a57ca758c590742b63100944f07fddb7290f797
>> > Author: Jan Nieuwenhuizen 
>> > AuthorDate: Sun Mar 1 13:45:42 2020 +0100
>> >
>> > gnu: commencement: gcc-boot0: Build fix for the Hurd.
>> > 
>> > Fixes:
>> > g++   -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   
>> > -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall 
>> > -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute 
>> > -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros 
>> > -Wno-overlength-strings   -DHAVE_CONFIG_H -DGENERATOR_FILE -fno-PIE 
>> > -static-libstdc++ -static-libgcc 
>> > -Wl,-rpath=/gnu/store/vp2id82a597p119b3wyhhkhd467wvn78-glibc-bootstrap-0/lib
>> >  -Wl,-dynamic-linker -Wl,/gnu/store/vp2id82a597p119b3w [...]
>> > build/genmddeps.o build/read-md.o build/errors.o 
>> > ../build-i586-unknown-gnu/libiberty/libiberty.a
>> > 
>> > /gnu/store/jk3kx5jwjs9m60svzk6sz79bf0w33l91-binutils-cross-boot0-2.34/bin/ld:
>> >  build/read-md.o: in function `md_reader::~md_reader()':
>> > 
>> > /tmp/guix-build-gcc-cross-boot0-7.5.0.drv-0/build/gcc/../../gcc-7.5.0/gcc/read-md.c:1049:
>> >  undefined reference to `operator delete(void*, unsigned int)'
>> > 
>> > This raises the question: Should libstdc++-boot0 (v4.9) be sufficient 
>> > to build
>> > gcc-boot0 (v7.5.0)?
>> 
>> Hmm?  :-)
>> 
>> > * gnu/packages/commencement.scm (gcc-boot0): Add static library path.
>> 
>> > `(,(string-append "LDFLAGS="
>> > + (if ,(hurd-system?)
>> > + (string-append
>> > +  "-L" (assoc-ref %build-inputs 
>> > "gcc") "/lib ")
>> > + "")
>> 
>> Could you add a comment saying that this is to allow the ‘delete’
>> operator to be found?  Weird.
>> 
>> That’s it, thanks for the great work!

... I agree, however trying without this and Efraim's patch instead first.

> With the bootstrapping efforts going around there's a couple of patches
> floating around to change the gcc version for libstdc++-boot0. I've
> tested the following patch, which also prepares the way for any other
> future supported platforms.

That looks nice; thanks -- I have added i586-gnu and am trying if that
works for me.

janneke

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



Re: `guix build hello' now succeeds on the Hurd

2020-03-10 Thread Manolis Ragkousis
Hello Jan,

First of all awesome work!!

On 3/10/20 10:59 AM, Jan Nieuwenhuizen wrote:
> I briefly looked at more work-in-progress daemon patches by Manolis, but
> stopped when I found that it needs [t]his "new" libhurdutils library...
> @Manolis?
> 

This is that work
https://github.com/Phant0mas/Hurd/commit/3501ee22ad4150b3b2cf9a386d2350b9a68aecd8.patch

It was working, needed some cleanup but it never got merged. What is
does is implement mount and bind mounts using the hurd firmlinks.

>> Merging what you have—the earlier the better.  :-)
>>> Shall I push this to savannah as `wip-hurd' (possibly save wip-hurd->
>>> `wip-hurd-old?);

I don't think we need to keep the old wip-hurd. Just get rid of it.

Manolis



Re: Guix-devel Digest, Vol 81, Issue 26

2020-03-10 Thread Daniela Lura
ve all every conditional avoided in these files is a win
> in the not-so-long term.  That’d be my guideline as we merge it.  :-)
>
> Anyhow, thumbs up!  I’m looking forward to merging it and having it
> built on CI (we could offload to a Debian VM!)!
>
> Ludo’.
>
>
>
> --
>
> Message: 4
> Date: Mon, 9 Mar 2020 10:48:53 -0700
> From: John Soo 
> To: Hartmut Goebel 
> Cc: Guix-devel 
> Subject: Re: rust (build system) deficits
> Message-ID: 
> Content-Type: text/plain; charset=utf-8
>
> Hi Hartmut,
>
> > My point is less the work, but the non-transitive declarations:
> nettle-sys is an multi-indirect input for sequioa-sqv, still the later
> needs to specify these dependencies.
>
> Totally agree. I think everyone agreed, too.  A few months ago we decided
> that the package inputs should match as close to exactly the dependencies
> listed in Cargo.toml so as to avoid specifying transitive dependencies in
> the package definition.
>
> The importer does solve the transitive dependencies but there is a bug.
> Version numbers of cargo dependencies are not used which can sometimes
> cause the problem you describe. I really hope the fixes get merged soon
> because it is a real pain.
>
> > This importer does not solve the declarations, and IMHO it should not
> anyway - as the are dependencies of another packages, which might change
> over time.
>
> I’m not sure I fully understand why the recursive importer should not
> solve the transitive dependencies. Could you elaborate further?
>
> If you are suggesting that guix refresh won’t pick up the changes, then I
> think agree with you. That I believe is an artifact of using arguments
> rather than inputs to specify dependencies.
>
> Kindly,
>
> John
>
>
> --
>
> Message: 5
> Date: Mon, 09 Mar 2020 19:11:34 +0100
> From: Ricardo Wurmus 
> To: guix-devel@gnu.org
> Subject: Re: `guix build hello' now succeeds on the Hurd
> Message-ID: <87o8t5o0tl@elephly.net>
> Content-Type: text/plain; charset=utf-8
>
>
> Ludovic Courtès  writes:
>
> > Anyhow, thumbs up!  I’m looking forward to merging it and having it
> > built on CI (we could offload to a Debian VM!)!
>
> My sentiments exactly!  I’d be happy to put up a bunch of Debian
> GNU/Hurd VMs on the nodes behind ci.guix.gnu.org.
>
> --
> Ricardo
>
>
>
> --
>
> Message: 6
> Date: Mon, 9 Mar 2020 23:41:06 +0100
> From: Jan 
> To: Ricardo Wurmus 
> Cc: jbra...@dismail.de, guix-devel@gnu.org
> Subject: Re: Thunar cannot launch gio-launch-desktop
> Message-ID: <20200309234106.72ab8ce0@kompiuter>
> Content-Type: text/plain; charset=US-ASCII
>
> Hello,
>
> it seems the issue is not Thunar-specific as Diego pointed out
> https://lists.gnu.org/archive/html/guix-patches/2020-03/msg00291.html
> I'm closing the issue then.
> Cool wrapper exercise though :)
>
>
> Jan Wielkiewicz
>
>
>
> --
>
> Message: 7
> Date: Tue, 10 Mar 2020 10:32:23 +0800 (CST)
> From: tumashu 
> To: guix 
> Subject: About guix mirror build script
> Message-ID: <75a8a31c.2954.170c24939b1.coremail.tuma...@163.com>
> Content-Type: text/plain; charset=UTF-8
>
> In China , guix  substitute  download  seem to be  to slow,
> nearly unuseable.
> this week, I have found that  NIX channels has been built China mirror
> successful with the help of
> 4 files:
>
> 1. https://github.com/tuna/tunasync-scripts/blob/master/nix.py
> 2. https://github.com/tuna/tunasync-scripts/blob/master/nix-channels.py
> 3. https://github.com/tuna/tunasync-scripts/blob/master/nixos-images.py
> 4.
> https://github.com/tuna/tunasync-scripts/blob/master/dockerfiles/nix-channels/Dockerfile
>
> guix is very similar nix, so I want to know how to port 4 files to work
> with guix?
> is it possible add similar tools to guix?
>
> --
>
> Message: 8
> Date: Tue, 10 Mar 2020 08:48:05 +0100
> From: Gábor Boskovits 
> To: Veera 
> Cc: Guix-devel 
> Subject: Re: Hi, I am R Veera Kumar - Current Outreachy selected
> Applicant
> Message-ID:
>  pi5t8kpjrrthusgmbptwyao47xgpho8++z9xvqgvnv...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hello,
>
> Veera  ezt írta (időpont: 2020. márc. 8., Vas 8:41):
>
> > On Sat, Mar 07, 2020 at 09:31:32PM +0100, Gábor Boskovits wrote:
> > > Hello Veera,
> > >
> > > Veera  ezt írta (időpont: 2020. márc. 7., Szo 16:05):
> > >
> > > > Hi,
> > > >
> > > > I am R

Guix Data Services - Outreachy Applicant

2020-03-10 Thread Daniela Lura
Hello,

This is Danjela, an outreachy applicant and a second year computer science
student.
How is everyone doing?

I am trying to build the Guix Data Service project locally and it prompts
me to install Guile-Squee. I tried to install Squee but I am running into
other build problems when I run 'make'. Apparently it can't find libpq,
which I checked and is downloaded.
Here is the error message:
```
ice-9/boot-9.scm:752:25: In procedure dispatch-exception:
In procedure dynamic-link: file: "libpq", message: "file not found"
make[1]: *** [Makefile:968: squee.go] Error 1
make[1]: Leaving directory '/home/daniela/Downloads/guile-squee'
make: *** [Makefile:543: all-recursive] Error 1

```
I really want to start making some meaningful contributions to the project
but don't know where to start or what sources to use in order to do so.
I have to note that I am not using Gnu/Guix, but I do have the Guix package
manager installed as well as a Gnu/Linux distro. (OpenSuse Tumbleweed)
Any suggestion or help would be greatly appreciated by my side.

Please don't hesitate to ask me further details if the description of the
problem was to vague.

Thank you,


Re: Hi, I am R Veera Kumar - Current Outreachy selected Applicant

2020-03-10 Thread Veera
On Tue, Mar 10, 2020 at 08:48:05AM +0100, Gábor Boskovits wrote:
>Hello,
>Veera <[1]v...@vkten.in> ezt írta (időpont: 2020. márc. 8., Vas 8:41):
> 
>  On Sat, Mar 07, 2020 at 09:31:32PM +0100, Gábor Boskovits wrote:
>  >
>  > To get started you should install guix. For this project it might
>  make
>  > sense to install guix system also. You should also set up a guix
>  > development environment, by checking out the source code, and
>  building it.
>  >
>  I am installing GuixSD.
> 
>How did the install go?
>Could you do it? Please feel free to reach out to me should you have
>any questions.
> 

Install from ISO did not go well. Could not complete install.

So I tried VM img install and it is successfull.
Now I am reading docs about guix. And how to get my way around.

>  > The usual first time contribution we recommend is to package an R
>  package
>  > from cran that has all its dependencies in guix using the
>  importer.
>  >
> 
>Best regards,
>G_bor
> 
> References
> 
>1. mailto:v...@vkten.in
>3. http://issues.guix.gnu.org/easy

Regards,
Veera



Re: 02/02: gnu: next: Compress the executable.

2020-03-10 Thread Maxim Cournoyer
Hi Pierre,

Pierre Neidhardt  writes:

> Can you share your operating system declaration?

Sorry for the delay; here it is.  I've anonymized some of the
information such as SSH public keys and usernames.

--8<---cut here---start->8---
;; This is an operating system configuration template
;; for a "desktop" setup with GNOME and Xfce where the
;; root partition is encrypted with LUKS.

(use-modules (guix store)
 (gnu)
 (gnu packages bash)
 (gnu packages version-control)
 (gnu system nss)
 (srfi srfi-1))

(use-service-modules admin desktop docker linux ssh xorg)
(use-package-modules android certs docker java linux nfs ratpoison)

(define %my-desktop-services
  (remove (lambda (service)
(eq? (service-kind service) gdm-service-type))
  %desktop-services))

(operating-system
  (host-name "myhost")
  (timezone "America/Montreal")
  (locale "en_US.utf8")

  ;; Choose US English keyboard layout.  The "altgr-intl"
  ;; variant provides dead keys for accented characters.
  (keyboard-layout (keyboard-layout "dvorak"))

  ;; Use the UEFI variant of GRUB with the EFI System
  ;; Partition mounted on /boot/efi.
  (bootloader (bootloader-configuration
   (bootloader grub-efi-bootloader)
   (target "/boot/efi")
   (keyboard-layout keyboard-layout)))

  ;; Specify a mapped device for the encrypted root partition.
  ;; The UUID is that returned by 'cryptsetup luksUUID'.
  (mapped-devices
   (list (mapped-device
  (source (uuid "f85c0627-1f6f-48b9-a2c2-6c12594a7bd1"))
  (target "btrfs-pool-1")
  (type luks-device-mapping))
 (mapped-device
  (source (uuid "73b08e1a-ca2f-4d46-845a-3fe14cd7"))
  (target "btrfs-pool-4")
  (type luks-device-mapping

  (file-systems (cons*
 ;; For EFI firmware.
 (file-system
   (device (uuid "209E-67AD" 'fat))
   (mount-point "/boot/efi")
   (type "vfat"))

 ;; Main system, on a 500 GB SSD (dev/sda).
 (file-system
   (device (file-system-label "btrfs-pool-1"))
   (mount-point "/")
   (type "btrfs")
   (options "subvol=rootfs,compress=zstd")
   (dependencies mapped-devices))
 (file-system
   (device (file-system-label "btrfs-pool-1"))
   (mount-point "/home")
   (type "btrfs")
   (options "subvol=homefs,compress=zstd")
   (dependencies mapped-devices))

 ;; 1000 GB drive for builds (/dev/nvme0n1).  Shared
 ;; between jenkins-home, jenkins-build and
 ;; docker-cache subvolumes.
 (file-system
   (device (file-system-label "btrfs-pool-4"))
   (mount-point "/home/jenkins-user")
   (create-mount-point? #t)
   (type "btrfs")
   (options "subvol=jenkins-home,compress=zstd")
   (dependencies mapped-devices))
 (file-system
   (device (file-system-label "btrfs-pool-4"))
   (mount-point "/home/jenkins-user/workspace")
   (create-mount-point? #t)
   (type "btrfs")
   (options "subvol=jenkins-build,compress=zstd")
   (dependencies mapped-devices))
 (file-system
   (device (file-system-label "btrfs-pool-4"))
   (mount-point "/var/lib/docker")
   (create-mount-point? #t)
   (type "btrfs")
   (options "subvol=docker-cache,compress=zstd")
   (dependencies mapped-devices))

 ;; NFS mounts for caching the state and downloads of
 ;; Yocto.
 ;; FIXME: Must be manually mounted.
 (file-system
   (device "server:/mnt/scratch/yocto-sstate")
   (mount-point "/mnt/scratch/yocto-sstate")
   (create-mount-point? #t)
   (type "nfs")
   (mount? #f)
   (options "soft")
   (flags '(no-exec)))
 (file-system
   (device "server:/mnt/scratch/yocto-dldir")
   (mount-point "/mnt/scratch/yocto-dldir")
   (create-mount-point? #t)
   (type "nfs")
   (mount? #f)
   (options "soft")
   (flags '(no-exec)))

 %base-file-systems))

  (swap-devices '("/swap/swapfile"))

  (users (cons* (user-account
 (name "myuser")
 (group "users")
 (supplementary-groups '("dialout" "wheel" "netdev"