mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
file-systems: Add '%network-configuration-files' and '%network-file-mappings'.
* gnu/system/file-systems.scm (%network-configuration-files) (%network-file-mappings): New variables. * guix/scripts/environment.scm (%network-configuration-files): Remove. (launch-environment/container): Refer to '%network-file-mappings' instead of calling 'filter-map'.
This commit is contained in:
parent
a24fda8114
commit
7597478e2e
2 changed files with 24 additions and 23 deletions
|
@ -18,6 +18,7 @@
|
|||
|
||||
(define-module (gnu system file-systems)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (guix records)
|
||||
#:use-module ((gnu build file-systems)
|
||||
#:select (string->uuid uuid->string))
|
||||
|
@ -64,7 +65,9 @@ (define-module (gnu system file-systems)
|
|||
|
||||
file-system-mapping->bind-mount
|
||||
|
||||
%store-mapping))
|
||||
%store-mapping
|
||||
%network-configuration-files
|
||||
%network-file-mappings))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
|
@ -389,4 +392,23 @@ (define %store-mapping
|
|||
(target (%store-prefix))
|
||||
(writable? #f)))
|
||||
|
||||
(define %network-configuration-files
|
||||
;; List of essential network configuration files.
|
||||
'("/etc/resolv.conf"
|
||||
"/etc/nsswitch.conf"
|
||||
"/etc/services"
|
||||
"/etc/hosts"))
|
||||
|
||||
(define %network-file-mappings
|
||||
;; List of file mappings for essential network files.
|
||||
(filter-map (lambda (file)
|
||||
(file-system-mapping
|
||||
(source file)
|
||||
(target file)
|
||||
;; XXX: On some GNU/Linux systems, /etc/resolv.conf is a
|
||||
;; symlink to a file in a tmpfs which, for an unknown reason,
|
||||
;; cannot be bind mounted read-only within the container.
|
||||
(writable? (string=? file "/etc/resolv.conf"))))
|
||||
%network-configuration-files))
|
||||
|
||||
;;; file-systems.scm ends here
|
||||
|
|
|
@ -60,12 +60,6 @@ (define %precious-variables
|
|||
(define %default-shell
|
||||
(or (getenv "SHELL") "/bin/sh"))
|
||||
|
||||
(define %network-configuration-files
|
||||
'("/etc/resolv.conf"
|
||||
"/etc/nsswitch.conf"
|
||||
"/etc/services"
|
||||
"/etc/hosts"))
|
||||
|
||||
(define (purify-environment)
|
||||
"Unset almost all environment variables. A small number of variables such
|
||||
as 'HOME' and 'USER' are left untouched."
|
||||
|
@ -408,22 +402,7 @@ (define* (launch-environment/container #:key command bash user-mappings
|
|||
;; When in Rome, do as Nix build.cc does: Automagically
|
||||
;; map common network configuration files.
|
||||
(if network?
|
||||
(filter-map (lambda (file)
|
||||
(and (file-exists? file)
|
||||
(file-system-mapping
|
||||
(source file)
|
||||
(target file)
|
||||
;; XXX: On some GNU/Linux
|
||||
;; systems, /etc/resolv.conf is a
|
||||
;; symlink to a file in a tmpfs
|
||||
;; which, for an unknown reason,
|
||||
;; cannot be bind mounted
|
||||
;; read-only within the
|
||||
;; container.
|
||||
(writable?
|
||||
(string=? file
|
||||
"/etc/resolv.conf")))))
|
||||
%network-configuration-files)
|
||||
%network-file-mappings
|
||||
'())
|
||||
;; Mappings for the union closure of all inputs.
|
||||
(map (lambda (dir)
|
||||
|
|
Loading…
Reference in a new issue