diff options
author | Ludovic Courtès <ludo@gnu.org> | 2025-04-04 16:07:15 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2025-05-05 14:33:59 +0200 |
commit | d4c3b31b86dcdc29dee5ae9f7e3399b388cded7e (patch) | |
tree | 03c3a825bc6b9b1a61c5ea69371973c1c1c5e9af | |
parent | e9cd72875e9bd07656c7926865310e6562f0b466 (diff) | |
download | guix-d4c3b31b86dcdc29dee5ae9f7e3399b388cded7e.tar.gz guix-d4c3b31b86dcdc29dee5ae9f7e3399b388cded7e.zip |
linux-container: Add #:mounts to ‘eval/container’.
* gnu/system/linux-container.scm (eval/container): Add #:mounts
parameter and honor it.
Change-Id: I1d5970f53a3d67db93e937e392f9bf36e75d1573
-rw-r--r-- | gnu/system/linux-container.scm | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm index c1705f491c..3622328500 100644 --- a/gnu/system/linux-container.scm +++ b/gnu/system/linux-container.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <davet@gnu.org> -;;; Copyright © 2016-2017, 2019-2023 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016-2017, 2019-2023, 2025 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Google LLC @@ -319,13 +319,14 @@ Run the container with the given options.")) (define* (eval/container exp #:key (mappings '()) + (mounts '()) (namespaces %namespaces) (guest-uid 0) (guest-gid 0)) "Evaluate EXP, a gexp, in a new process executing in separate namespaces as -listed in NAMESPACES. Add MAPPINGS, a list of <file-system-mapping>, to the -set of directories visible in the process's mount namespace. Inside the -namespaces, run code as GUEST-UID and GUEST-GID. Return the process' exit -status as a monadic value. +listed in NAMESPACES. Add MOUNTS, a list of <file-system>, and MAPPINGS, a +list of <file-system-mapping>, to the set of directories visible in the +process's mount namespace. Inside the namespaces, run code as GUEST-UID and +GUEST-GID. Return the process' exit status as a monadic value. This is useful to implement processes that, unlike derivations, are not entirely pure and need to access the outside world or to perform side @@ -342,13 +343,14 @@ effects." (mbegin %store-monad (built-derivations inputs) (mlet %store-monad ((closure ((store-lift requisites) items))) - (return (call-with-container (map file-system-mapping->bind-mount - (append (map (lambda (item) - (file-system-mapping - (source item) - (target source))) - closure) - mappings)) + (return (call-with-container (append mounts + (map file-system-mapping->bind-mount + (append (map (lambda (item) + (file-system-mapping + (source item) + (target source))) + closure) + mappings))) (lambda () (apply execl (string-append (derivation-input-output-path |