diff mbox series

[bug#52790,v3,7/7] gnu: docker: Switch to gexp and new input style.

Message ID 20220509233519.26703-7-pierre.langlois@gmx.com
State Accepted
Headers show
Series Update docker to 20.10.15. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Pierre Langlois May 9, 2022, 11:35 p.m. UTC
* gnu/packages/docker.scm (docker)[arguments]: Rewrite as gexps.  Switch
to using search-input-file.
[inputs]: Use new style inputs.
---
 gnu/packages/docker.scm | 483 ++++++++++++++++++++--------------------
 1 file changed, 241 insertions(+), 242 deletions(-)

--
2.36.0

Comments

Maxim Cournoyer June 24, 2022, 5:05 a.m. UTC | #1
Hi Pierre!

Very nice work, thanks for doing it!

I've reviewed the whole series (7 patches), made some changes mostly to
update to the latest current version of Docker 20.10.17 and containerd
at 1.6.6, added a commit to address 'guix lint' issues and another one
to allow the Docker system tests to pass on my old machine.  I tested
using some Docker load I had at hand and pushed the series.

Thanks again!

Closing.

Maxim
diff mbox series

Patch

diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index a3d3e5fb51..2df4cdb98a 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -326,260 +326,259 @@  (define-public docker
         (base32 "1z816496aqla4nq0aksf0kpy8qk8x1a6y5hrazzkqliycbjnqizq"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:modules
-       ((guix build gnu-build-system)
+     (list
+      #:modules
+      '((guix build gnu-build-system)
         ((guix build go-build-system) #:prefix go:)
         (guix build union)
         (guix build utils))
-       #:imported-modules
-       (,@%gnu-build-system-modules
+      #:imported-modules
+      `(,@%gnu-build-system-modules
         (guix build union)
         (guix build go-build-system))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "builder/builder-next/executor_unix.go"
-               (("CommandCandidates:.*runc.*")
-                (string-append "CommandCandidates: []string{\""
-                               (assoc-ref inputs "runc")
-                               "/sbin/runc\"},\n")))
-             (substitute* "vendor/github.com/containerd/go-runc/runc.go"
-               (("DefaultCommand = .*")
-                (string-append "DefaultCommand = \""
-                               (assoc-ref inputs "runc")
-                               "/sbin/runc\"\n")))
-             (substitute* "vendor/github.com/containerd/containerd/runtime/v1/linux/runtime.go"
-               (("defaultRuntime[ \t]*=.*")
-                (string-append "defaultRuntime = \""
-                               (assoc-ref inputs "runc")
-                               "/sbin/runc\"\n"))
-               (("defaultShim[ \t]*=.*")
-                (string-append "defaultShim = \""
-                               (assoc-ref inputs "containerd")
-                               "/bin/containerd-shim\"\n")))
-             (substitute* "daemon/daemon_unix.go"
-               (("DefaultShimBinary = .*")
-                (string-append "DefaultShimBinary = \""
-                               (assoc-ref inputs "containerd")
-                               "/bin/containerd-shim\"\n"))
-               (("DefaultRuntimeBinary = .*")
-                (string-append "DefaultRuntimeBinary = \""
-                               (assoc-ref inputs "runc")
-                               "/sbin/runc\"\n")))
-             (substitute* "daemon/runtime_unix.go"
-               (("defaultRuntimeName = .*")
-                (string-append "defaultRuntimeName = \""
-                               (assoc-ref inputs "runc")
-                               "/sbin/runc\"\n")))
-             (substitute* "daemon/config/config.go"
-               (("StockRuntimeName = .*")
-                (string-append "StockRuntimeName = \""
-                               (assoc-ref inputs "runc")
-                               "/sbin/runc\"\n"))
-               (("DefaultInitBinary = .*")
-                (string-append "DefaultInitBinary = \""
-                               (assoc-ref inputs "tini")
-                               "/bin/tini-static\"\n")))
-             (substitute* "daemon/config/config_common_unix_test.go"
-               (("expectedInitPath: \"docker-init\"")
-                (string-append "expectedInitPath: \""
-                               (assoc-ref inputs "tini")
-                               "/bin/tini-static\"")))
-             (substitute* "vendor/github.com/moby/buildkit/executor/runcexecutor/executor.go"
-               (("var defaultCommandCandidates = .*")
-                (string-append "var defaultCommandCandidates = []string{\""
-                               (assoc-ref inputs "runc") "/sbin/runc\"}")))
-             (substitute* "vendor/github.com/docker/libnetwork/portmapper/proxy.go"
-               (("var userlandProxyCommandName = .*")
-                (string-append "var userlandProxyCommandName = \""
-                               (assoc-ref inputs "docker-proxy")
-                               "/bin/proxy\"\n")))
-             (substitute* "pkg/archive/archive.go"
-               (("string\\{\"xz")
-                (string-append "string{\"" (assoc-ref inputs "xz") "/bin/xz")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "builder/builder-next/executor_unix.go"
+                (("CommandCandidates:.*runc.*")
+                 (string-append "CommandCandidates: []string{\""
+                                (search-input-file inputs "/sbin/runc")
+                                "\"},\n")))
+              (substitute* "vendor/github.com/containerd/go-runc/runc.go"
+                (("DefaultCommand = .*")
+                 (string-append "DefaultCommand = \""
+                                (search-input-file inputs "/sbin/runc")
+                                "\"\n")))
+              (substitute* "vendor/github.com/containerd/containerd/runtime/v1/linux/runtime.go"
+                (("defaultRuntime[ \t]*=.*")
+                 (string-append "defaultRuntime = \""
+                                (search-input-file inputs "/sbin/runc")
+                                "\"\n"))
+                (("defaultShim[ \t]*=.*")
+                 (string-append "defaultShim = \""
+                                (search-input-file inputs "/bin/containerd-shim")
+                                "\"\n")))
+              (substitute* "daemon/daemon_unix.go"
+                (("DefaultShimBinary = .*")
+                 (string-append "DefaultShimBinary = \""
+                                (search-input-file inputs "/bin/containerd-shim")
+                                "\"\n"))
+                (("DefaultRuntimeBinary = .*")
+                 (string-append "DefaultRuntimeBinary = \""
+                                (search-input-file inputs "/sbin/runc")
+                                "\"\n")))
+              (substitute* "daemon/runtime_unix.go"
+                (("defaultRuntimeName = .*")
+                 (string-append "defaultRuntimeName = \""
+                                (search-input-file inputs "/sbin/runc")
+                                "\"\n")))
+              (substitute* "daemon/config/config.go"
+                (("StockRuntimeName = .*")
+                 (string-append "StockRuntimeName = \""
+                                (search-input-file inputs "/sbin/runc")
+                                "\"\n"))
+                (("DefaultInitBinary = .*")
+                 (string-append "DefaultInitBinary = \""
+                                (search-input-file inputs "/bin/tini-static")
+                                "\"\n")))
+              (substitute* "daemon/config/config_common_unix_test.go"
+                (("expectedInitPath: \"docker-init\"")
+                 (string-append "expectedInitPath: \""
+                                (search-input-file inputs "/bin/tini-static")
+                                "\"")))
+              (substitute* "vendor/github.com/moby/buildkit/executor/runcexecutor/executor.go"
+                (("var defaultCommandCandidates = .*")
+                 (string-append "var defaultCommandCandidates = []string{\""
+                                (search-input-file inputs "/sbin/runc") "\"}")))
+              (substitute* "vendor/github.com/docker/libnetwork/portmapper/proxy.go"
+                (("var userlandProxyCommandName = .*")
+                 (string-append "var userlandProxyCommandName = \""
+                                (search-input-file inputs "/bin/proxy")
+                                "\"\n")))
+              (substitute* "pkg/archive/archive.go"
+                (("string\\{\"xz")
+                 (string-append "string{\"" (search-input-file inputs "/bin/xz"))))

-             (let ((source-files (filter (lambda (name)
-                                           (not (string-contains name "test")))
-                                         (find-files "." "\\.go$"))))
-               (let-syntax ((substitute-LookPath*
-                             (syntax-rules ()
-                               ((_ (source-text package relative-path) ...)
-                                (substitute* source-files
-                                  (((string-append "\\<exec\\.LookPath\\(\""
-                                                   source-text
-                                                   "\")"))
-                                   (string-append "\""
-                                                  (assoc-ref inputs package)
-                                                  "/" relative-path
-                                                  "\", error(nil)")) ...))))
-                            (substitute-Command*
-                             (syntax-rules ()
-                               ((_ (source-text package relative-path) ...)
-                                (substitute* source-files
-                                  (((string-append "\\<(re)?exec\\.Command\\(\""
-                                                   source-text
-                                                   "\"") _ re?)
-                                   (string-append (if re? re? "")
-                                                  "exec.Command(\""
-                                                  (assoc-ref inputs package)
-                                                  "/" relative-path
-                                                  "\"")) ...)))))
-                 (substitute-LookPath*
-                  ("containerd" "containerd" "bin/containerd")
-                  ("ps" "procps" "bin/ps")
-                  ("mkfs.xfs" "xfsprogs" "sbin/mkfs.xfs")
-                  ("lvmdiskscan" "lvm2" "sbin/lvmdiskscan")
-                  ("pvdisplay" "lvm2" "sbin/pvdisplay")
-                  ("blkid" "util-linux" "sbin/blkid")
-                  ("unpigz" "pigz" "bin/unpigz")
-                  ("iptables" "iptables" "sbin/iptables")
-                  ("ip6tables" "iptables" "sbin/ip6tables")
-                  ("iptables-legacy" "iptables" "sbin/iptables")
-                  ("ip" "iproute2" "sbin/ip"))
+              (let ((source-files (filter (lambda (name)
+                                            (not (string-contains name "test")))
+                                          (find-files "." "\\.go$"))))
+                (let-syntax ((substitute-LookPath*
+                              (syntax-rules ()
+                                ((_ (source-text path) ...)
+                                 (substitute* source-files
+                                   (((string-append "\\<exec\\.LookPath\\(\""
+                                                    source-text
+                                                    "\")"))
+                                    (string-append "\""
+                                                   (search-input-file inputs path)
+                                                   "\", error(nil)")) ...))))
+                             (substitute-Command*
+                              (syntax-rules ()
+                                ((_ (source-text path) ...)
+                                 (substitute* source-files
+                                   (((string-append "\\<(re)?exec\\.Command\\(\""
+                                                    source-text
+                                                    "\"") _ re?)
+                                    (string-append (if re? re? "")
+                                                   "exec.Command(\""
+                                                   (search-input-file inputs path)
+                                                   "\"")) ...)))))
+                  (substitute-LookPath*
+                   ("containerd" "/bin/containerd")
+                   ("ps" "/bin/ps")
+                   ("mkfs.xfs" "/sbin/mkfs.xfs")
+                   ("lvmdiskscan" "/sbin/lvmdiskscan")
+                   ("pvdisplay" "/sbin/pvdisplay")
+                   ("blkid" "/sbin/blkid")
+                   ("unpigz" "/bin/unpigz")
+                   ("iptables" "/sbin/iptables")
+                   ("ip6tables" "/sbin/ip6tables")
+                   ("iptables-legacy" "/sbin/iptables")
+                   ("ip" "/sbin/ip"))

-                 (substitute-Command*
-                  ("modprobe" "kmod" "bin/modprobe")
-                  ("pvcreate" "lvm2" "sbin/pvcreate")
-                  ("vgcreate" "lvm2" "sbin/vgcreate")
-                  ("lvcreate" "lvm2" "sbin/lvcreate")
-                  ("lvconvert" "lvm2" "sbin/lvconvert")
-                  ("lvchange" "lvm2" "sbin/lvchange")
-                  ("mkfs.xfs" "xfsprogs" "sbin/mkfs.xfs")
-                  ("xfs_growfs" "xfsprogs" "sbin/xfs_growfs")
-                  ("mkfs.ext4" "e2fsprogs" "sbin/mkfs.ext4")
-                  ("tune2fs" "e2fsprogs" "sbin/tune2fs")
-                  ("blkid" "util-linux" "sbin/blkid")
-                  ("resize2fs" "e2fsprogs" "sbin/resize2fs")
-                  ("ps" "procps" "bin/ps")
-                  ("losetup" "util-linux" "sbin/losetup")
-                  ("uname" "coreutils" "bin/uname")
-                  ("dbus-launch" "dbus" "bin/dbus-launch")
-                  ("git" "git" "bin/git")))
-               ;; docker-mountfrom ??
-               ;; docker
-               ;; docker-untar ??
-               ;; docker-applyLayer ??
-               ;; /usr/bin/uname
-               ;; grep
-               ;; apparmor_parser
+                  (substitute-Command*
+                   ("modprobe" "/bin/modprobe")
+                   ("pvcreate" "/sbin/pvcreate")
+                   ("vgcreate" "/sbin/vgcreate")
+                   ("lvcreate" "/sbin/lvcreate")
+                   ("lvconvert" "/sbin/lvconvert")
+                   ("lvchange" "/sbin/lvchange")
+                   ("mkfs.xfs" "/sbin/mkfs.xfs")
+                   ("xfs_growfs" "/sbin/xfs_growfs")
+                   ("mkfs.ext4" "/sbin/mkfs.ext4")
+                   ("tune2fs" "/sbin/tune2fs")
+                   ("blkid" "/sbin/blkid")
+                   ("resize2fs" "/sbin/resize2fs")
+                   ("ps" "/bin/ps")
+                   ("losetup" "/sbin/losetup")
+                   ("uname" "/bin/uname")
+                   ("dbus-launch" "/bin/dbus-launch")
+                   ("git" "/bin/git")))
+                ;; docker-mountfrom ??
+                ;; docker
+                ;; docker-untar ??
+                ;; docker-applyLayer ??
+                ;; /usr/bin/uname
+                ;; grep
+                ;; apparmor_parser

-               ;; Make compilation fail when, in future versions, Docker
-               ;; invokes other programs we don't know about and thus don't
-               ;; substitute.
-               (substitute* source-files
-                 ;; Search for Java in PATH.
-                 (("\\<exec\\.Command\\(\"java\"")
-                  "xxec.Command(\"java\"")
-                 ;; Search for AUFS in PATH (mainline Linux doesn't support it).
-                 (("\\<exec\\.Command\\(\"auplink\"")
-                  "xxec.Command(\"auplink\"")
-                 ;; Fail on other unsubstituted commands.
-                 (("\\<exec\\.Command\\(\"([a-zA-Z0-9][a-zA-Z0-9_-]*)\""
-                   _ executable)
-                  (string-append "exec.Guix_doesnt_want_Command(\""
-                                 executable "\""))
-                 (("\\<xxec\\.Command")
-                  "exec.Command")
-                 ;; Search for ZFS in PATH.
-                 (("\\<LookPath\\(\"zfs\"\\)") "LooxPath(\"zfs\")")
+                ;; Make compilation fail when, in future versions, Docker
+                ;; invokes other programs we don't know about and thus don't
+                ;; substitute.
+                (substitute* source-files
+                  ;; Search for Java in PATH.
+                  (("\\<exec\\.Command\\(\"java\"")
+                   "xxec.Command(\"java\"")
+                  ;; Search for AUFS in PATH (mainline Linux doesn't support it).
+                  (("\\<exec\\.Command\\(\"auplink\"")
+                   "xxec.Command(\"auplink\"")
+                  ;; Fail on other unsubstituted commands.
+                  (("\\<exec\\.Command\\(\"([a-zA-Z0-9][a-zA-Z0-9_-]*)\""
+                    _ executable)
+                   (string-append "exec.Guix_doesnt_want_Command(\""
+                                  executable "\""))
+                  (("\\<xxec\\.Command")
+                   "exec.Command")
+                  ;; Search for ZFS in PATH.
+                  (("\\<LookPath\\(\"zfs\"\\)") "LooxPath(\"zfs\")")
                  ;; Do not fail when buildkit-qemu-<target> isn't found.
                  ;; FIXME: We might need to package buildkit and docker's
                  ;; buildx plugin, to support qemu-based docker containers.
-                 (("\\<LookPath\\(\"buildkit-qemu-\"") "LooxPath(\"buildkit-qemu-\"")
-                 ;; Fail on other unsubstituted LookPaths.
-                 (("\\<LookPath\\(\"") "Guix_doesnt_want_LookPath\\(\"")
-                 (("\\<LooxPath") "LookPath")))))
-         (add-after 'patch-paths 'delete-failing-tests
-           (lambda _
-             ;; Needs internet access.
-             (delete-file "builder/remotecontext/git/gitutils_test.go")
-             ;; Permission denied.
-             (delete-file "daemon/graphdriver/devmapper/devmapper_test.go")
-             ;; Operation not permitted (idtools.MkdirAllAndChown).
-             (delete-file "daemon/graphdriver/vfs/vfs_test.go")
-             ;; Timeouts after 5 min.
-             (delete-file "plugin/manager_linux_test.go")
-             ;; Operation not permitted.
-             (delete-file "daemon/graphdriver/aufs/aufs_test.go")
-             (delete-file "daemon/graphdriver/btrfs/btrfs_test.go")
-             (delete-file "daemon/graphdriver/overlay/overlay_test.go")
-             (delete-file "daemon/graphdriver/overlay2/overlay_test.go")
-             (delete-file "pkg/chrootarchive/archive_unix_test.go")
-             (delete-file "daemon/container_unix_test.go")
-             ;; This file uses cgroups and /proc.
-             (delete-file "pkg/sysinfo/sysinfo_linux_test.go")
-             ;; This file uses cgroups.
-             (delete-file "runconfig/config_test.go")
-             ;; This file uses /var.
-             (delete-file "daemon/oci_linux_test.go")
-             ;; Signal tests fail in bizarre ways
-             (delete-file "pkg/signal/signal_linux_test.go")))
-         (replace 'configure
-           (lambda _
-             (setenv "DOCKER_BUILDTAGS" "seccomp")
-             (setenv "DOCKER_GITCOMMIT" (string-append "v" ,%docker-version))
-             (setenv "VERSION" (string-append ,%docker-version "-ce"))
-             ;; Automatically use bundled dependencies.
-             ;; TODO: Unbundle - see file "vendor.conf".
-             (setenv "AUTO_GOPATH" "1")
-             ;; Respectively, strip the symbol table and debug
-             ;; information, and the DWARF symbol table.
-             (setenv "LDFLAGS" "-s -w")
-             ;; Make build faster
-             (setenv "GOCACHE" "/tmp")))
-         (add-before 'build 'setup-go-environment
-           (assoc-ref go:%standard-phases 'setup-go-environment))
-         (replace 'build
-           (lambda _
-             ;; Our LD doesn't like the statically linked relocatable things
-             ;; that go produces, so install the dynamic version of
-             ;; dockerd instead.
-             (invoke "hack/make.sh" "dynbinary")))
-         (replace 'check
-           (lambda _
-             ;; The build process generated a file because the environment
-             ;; variable "AUTO_GOPATH" was set.  Use it.
-             (setenv "GOPATH" (string-append (getcwd) "/.gopath"))
-             ;; ".gopath/src/github.com/docker/docker" is a link to the current
-             ;; directory and chdir would canonicalize to that.
-             ;; But go needs to have the uncanonicalized directory name, so
-             ;; store that.
-             (setenv "PWD" (string-append (getcwd)
-                                          "/.gopath/src/github.com/docker/docker"))
-             (with-directory-excursion ".gopath/src/github.com/docker/docker"
-               (invoke "hack/test/unit"))
-             (setenv "PWD" #f)))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (out-bin (string-append out "/bin")))
-               (install-file "bundles/dynbinary-daemon/dockerd" out-bin)
-               (install-file (string-append "bundles/dynbinary-daemon/dockerd-"
-                                            (getenv "VERSION"))
-                             out-bin))))
-         (add-after 'install 'remove-go-references
-           (assoc-ref go:%standard-phases 'remove-go-references)))))
+                  (("\\<LookPath\\(\"buildkit-qemu-\"") "LooxPath(\"buildkit-qemu-\"")
+                  ;; Fail on other unsubstituted LookPaths.
+                  (("\\<LookPath\\(\"") "Guix_doesnt_want_LookPath\\(\"")
+                  (("\\<LooxPath") "LookPath")))))
+          (add-after 'patch-paths 'delete-failing-tests
+            (lambda _
+              ;; Needs internet access.
+              (delete-file "builder/remotecontext/git/gitutils_test.go")
+              ;; Permission denied.
+              (delete-file "daemon/graphdriver/devmapper/devmapper_test.go")
+              ;; Operation not permitted (idtools.MkdirAllAndChown).
+              (delete-file "daemon/graphdriver/vfs/vfs_test.go")
+              ;; Timeouts after 5 min.
+              (delete-file "plugin/manager_linux_test.go")
+              ;; Operation not permitted.
+              (delete-file "daemon/graphdriver/aufs/aufs_test.go")
+              (delete-file "daemon/graphdriver/btrfs/btrfs_test.go")
+              (delete-file "daemon/graphdriver/overlay/overlay_test.go")
+              (delete-file "daemon/graphdriver/overlay2/overlay_test.go")
+              (delete-file "pkg/chrootarchive/archive_unix_test.go")
+              (delete-file "daemon/container_unix_test.go")
+              ;; This file uses cgroups and /proc.
+              (delete-file "pkg/sysinfo/sysinfo_linux_test.go")
+              ;; This file uses cgroups.
+              (delete-file "runconfig/config_test.go")
+              ;; This file uses /var.
+              (delete-file "daemon/oci_linux_test.go")
+              ;; Signal tests fail in bizarre ways
+              (delete-file "pkg/signal/signal_linux_test.go")))
+          (replace 'configure
+            (lambda _
+              (setenv "DOCKER_BUILDTAGS" "seccomp")
+              (setenv "DOCKER_GITCOMMIT" (string-append "v" #$%docker-version))
+              (setenv "VERSION" (string-append #$%docker-version "-ce"))
+              ;; Automatically use bundled dependencies.
+              ;; TODO: Unbundle - see file "vendor.conf".
+              (setenv "AUTO_GOPATH" "1")
+              ;; Respectively, strip the symbol table and debug
+              ;; information, and the DWARF symbol table.
+              (setenv "LDFLAGS" "-s -w")
+              ;; Make build faster
+              (setenv "GOCACHE" "/tmp")))
+          (add-before 'build 'setup-go-environment
+            (assoc-ref go:%standard-phases 'setup-go-environment))
+          (replace 'build
+            (lambda _
+              ;; Our LD doesn't like the statically linked relocatable things
+              ;; that go produces, so install the dynamic version of
+              ;; dockerd instead.
+              (invoke "hack/make.sh" "dynbinary")))
+          (replace 'check
+            (lambda _
+              ;; The build process generated a file because the environment
+              ;; variable "AUTO_GOPATH" was set.  Use it.
+              (setenv "GOPATH" (string-append (getcwd) "/.gopath"))
+              ;; ".gopath/src/github.com/docker/docker" is a link to the current
+              ;; directory and chdir would canonicalize to that.
+              ;; But go needs to have the uncanonicalized directory name, so
+              ;; store that.
+              (setenv "PWD" (string-append (getcwd)
+                                           "/.gopath/src/github.com/docker/docker"))
+              (with-directory-excursion ".gopath/src/github.com/docker/docker"
+                (invoke "hack/test/unit"))
+              (setenv "PWD" #f)))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (out-bin (string-append out "/bin")))
+                (install-file "bundles/dynbinary-daemon/dockerd" out-bin)
+                (install-file (string-append "bundles/dynbinary-daemon/dockerd-"
+                                             (getenv "VERSION"))
+                              out-bin))))
+          (add-after 'install 'remove-go-references
+            (assoc-ref go:%standard-phases 'remove-go-references)))))
     (inputs
-     `(("btrfs-progs" ,btrfs-progs)
-       ("containerd" ,containerd)       ; for containerd-shim
-       ("coreutils" ,coreutils)
-       ("dbus" ,dbus)
-       ("docker-proxy" ,docker-libnetwork-cmd-proxy)
-       ("e2fsprogs" ,e2fsprogs)
-       ("git" ,git)
-       ("iproute2" ,iproute)
-       ("iptables" ,iptables)
-       ("kmod" ,kmod)
-       ("libseccomp" ,libseccomp)
-       ("pigz" ,pigz)
-       ("procps" ,procps)
-       ("runc" ,runc)
-       ("util-linux" ,util-linux)
-       ("lvm2" ,lvm2)
-       ("tini" ,tini)
-       ("xfsprogs" ,xfsprogs)
-       ("xz" ,xz)))
+     (list btrfs-progs
+           containerd       ; for containerd-shim
+           coreutils
+           dbus
+           docker-libnetwork-cmd-proxy
+           e2fsprogs
+           git
+           iproute
+           iptables
+           kmod
+           libseccomp
+           pigz
+           procps
+           runc
+           util-linux
+           lvm2
+           tini
+           xfsprogs
+           xz))
     (native-inputs
      (list eudev ; TODO: Should be propagated by lvm2 (.pc -> .pc)
            go gotestsum pkg-config))