mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 05:48: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)
|
(define-module (gnu system file-systems)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (guix records)
|
#:use-module (guix records)
|
||||||
#:use-module ((gnu build file-systems)
|
#:use-module ((gnu build file-systems)
|
||||||
#:select (string->uuid uuid->string))
|
#:select (string->uuid uuid->string))
|
||||||
|
@ -64,7 +65,9 @@ (define-module (gnu system file-systems)
|
||||||
|
|
||||||
file-system-mapping->bind-mount
|
file-system-mapping->bind-mount
|
||||||
|
|
||||||
%store-mapping))
|
%store-mapping
|
||||||
|
%network-configuration-files
|
||||||
|
%network-file-mappings))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
|
@ -389,4 +392,23 @@ (define %store-mapping
|
||||||
(target (%store-prefix))
|
(target (%store-prefix))
|
||||||
(writable? #f)))
|
(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
|
;;; file-systems.scm ends here
|
||||||
|
|
|
@ -60,12 +60,6 @@ (define %precious-variables
|
||||||
(define %default-shell
|
(define %default-shell
|
||||||
(or (getenv "SHELL") "/bin/sh"))
|
(or (getenv "SHELL") "/bin/sh"))
|
||||||
|
|
||||||
(define %network-configuration-files
|
|
||||||
'("/etc/resolv.conf"
|
|
||||||
"/etc/nsswitch.conf"
|
|
||||||
"/etc/services"
|
|
||||||
"/etc/hosts"))
|
|
||||||
|
|
||||||
(define (purify-environment)
|
(define (purify-environment)
|
||||||
"Unset almost all environment variables. A small number of variables such
|
"Unset almost all environment variables. A small number of variables such
|
||||||
as 'HOME' and 'USER' are left untouched."
|
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
|
;; When in Rome, do as Nix build.cc does: Automagically
|
||||||
;; map common network configuration files.
|
;; map common network configuration files.
|
||||||
(if network?
|
(if network?
|
||||||
(filter-map (lambda (file)
|
%network-file-mappings
|
||||||
(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)
|
|
||||||
'())
|
'())
|
||||||
;; Mappings for the union closure of all inputs.
|
;; Mappings for the union closure of all inputs.
|
||||||
(map (lambda (dir)
|
(map (lambda (dir)
|
||||||
|
|
Loading…
Reference in a new issue