GNU bug report logs - #45065
[PATCH] services: nix: Move nix.conf generation to etc-service-type.

Previous Next

Package: guix-patches;

Reported by: Zhu Zihao <all_but_last <at> 163.com>

Date: Sun, 6 Dec 2020 08:31:02 UTC

Severity: normal

Tags: patch

Done: Oleg Pykhalov <go.wigust <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 45065 in the body.
You can then email your comments to 45065 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#45065; Package guix-patches. (Sun, 06 Dec 2020 08:31:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Zhu Zihao <all_but_last <at> 163.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sun, 06 Dec 2020 08:31:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Zhu Zihao <all_but_last <at> 163.com>
To: guix-patches <at> gnu.org
Subject: [PATCH] services: nix: Move nix.conf generation to etc-service-type.
Date: Sun, 06 Dec 2020 16:30:22 +0800
[Message part 1 (text/plain, inline)]

[signature.asc (application/pgp-signature, inline)]
[0001-services-nix-Move-nix.conf-generation-to-etc-service.patch (text/x-patch, inline)]
From 506968bd136dd00f7aecb7a89d4000ef56d752f9 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last <at> 163.com>
Date: Sun, 6 Dec 2020 16:26:02 +0800
Subject: [PATCH] services: nix: Move nix.conf generation to etc-service-type.

/etc/nix/nix.conf is a static file doesn't need rebuild on every boot.

* gnu/services/nix.scm(nix-activation): Don't create /etc/nix/nix.conf.
(nix-service-etc): New function.
(nix-service-type): New service-extension "nix-service-etc" to etc-service-type.
---
 gnu/services/nix.scm | 61 ++++++++++++++++++++++++--------------------
 1 file changed, 33 insertions(+), 28 deletions(-)

diff --git a/gnu/services/nix.scm b/gnu/services/nix.scm
index 93f46ef71e..1aef47db0a 100644
--- a/gnu/services/nix.scm
+++ b/gnu/services/nix.scm
@@ -89,37 +89,41 @@ GID."
          (id 40000))
         (nix-build-accounts 10 #:group "nixbld")))
 
-(define nix-activation
+(define (nix-activation _)
   ;; Return the activation gexp.
+  #~(begin
+      (use-modules (guix build utils)
+                   (srfi srfi-26))
+      (for-each (cut mkdir-p <>) '("/nix/store" "/nix/var/log"
+                                   "/nix/var/nix/gcroots/per-user"
+                                   "/nix/var/nix/profiles/per-user"))
+      (chown "/nix/store"
+             (passwd:uid (getpw "root")) (group:gid (getpw "nixbld01")))
+      (chmod "/nix/store" #o775)
+      (for-each (cut chmod <> #o777) '("/nix/var/nix/profiles"
+                                       "/nix/var/nix/profiles/per-user"))))
+
+(define nix-service-etc
   (match-lambda
     (($ <nix-configuration> package sandbox build-sandbox-items extra-config)
-     (with-imported-modules (source-module-closure
-                             '((guix build store-copy)))
-       #~(begin
-           (use-modules (guix build utils)
-                        (ice-9 format)
-                        (srfi srfi-1)
-                        (srfi srfi-26))
-           (for-each (cut mkdir-p <>) '("/nix/store" "/nix/var/log"
-                                        "/nix/var/nix/gcroots/per-user"
-                                        "/nix/var/nix/profiles/per-user"))
-           (chown "/nix/store"
-                  (passwd:uid (getpw "root")) (group:gid (getpw "nixbld01")))
-           (chmod "/nix/store" #o775)
-           (for-each (cut chmod <> #o777) '("/nix/var/nix/profiles"
-                                            "/nix/var/nix/profiles/per-user"))
-           (mkdir-p "/etc/nix")
-           (with-output-to-file "/etc/nix/nix.conf"
-             (lambda _
-               (format #t "sandbox = ~a~%" (if #$sandbox "true" "false"))
-               ;; config.nix captures store file names.
-               (format #t "build-sandbox-paths = ~{~a ~}~%"
-                       (append (append-map (cut call-with-input-file <> read)
-                                           '#$(map references-file
-                                                   (list package)))
-                               '#$build-sandbox-items))
-               (for-each (cut display <>) '#$extra-config)
-               (newline))))))))
+     (let ((ref-file (references-file package)))
+       `(("nix/nix.conf"
+          ,(computed-file
+            "nix.conf"
+            #~(begin
+                (use-modules (srfi srfi-26)
+                             (ice-9 format))
+                (with-output-to-file #$output
+                  (lambda _
+                    (define internal-sandbox-paths
+                      (call-with-input-file #$ref-file read))
+
+                    (format #t "sandbox = ~a~%" (if #$sandbox "true" "false"))
+                    ;; config.nix captures store file names.
+                    (format #t "build-sandbox-paths = ~{~a ~}~%"
+                            (append internal-sandbox-paths
+                                    '#$build-sandbox-items))
+                    (for-each (cut display <>) '#$extra-config)))))))))))
 
 (define nix-shepherd-service
   ;; Return a <shepherd-service> for Nix.
@@ -143,6 +147,7 @@ GID."
     (list (service-extension shepherd-root-service-type nix-shepherd-service)
           (service-extension account-service-type nix-accounts)
           (service-extension activation-service-type nix-activation)
+          (service-extension etc-service-type nix-service-etc)
           (service-extension profile-service-type
                              (compose list nix-configuration-package))))
    (description "Run the Nix daemon.")
-- 
2.29.2

[Message part 4 (text/plain, inline)]
-- 
Retrieve my PGP public key: https://meta.sr.ht/~citreu.pgp

Zihao

Reply sent to Oleg Pykhalov <go.wigust <at> gmail.com>:
You have taken responsibility. (Sun, 06 Dec 2020 11:51:02 GMT) Full text and rfc822 format available.

Notification sent to Zhu Zihao <all_but_last <at> 163.com>:
bug acknowledged by developer. (Sun, 06 Dec 2020 11:51:03 GMT) Full text and rfc822 format available.

Message #10 received at 45065-done <at> debbugs.gnu.org (full text, mbox):

From: Oleg Pykhalov <go.wigust <at> gmail.com>
To: 45065-done <at> debbugs.gnu.org
Subject: Re: [bug#45065] [PATCH] services: nix: Move nix.conf generation to
 etc-service-type.
Date: Sun, 06 Dec 2020 14:50:43 +0300
[Message part 1 (text/plain, inline)]
Merged in https://git.savannah.gnu.org/cgit/guix.git/commit/?id=8e73bf754f95fac5a383b90405e741d1cf1aaeb9
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#45065; Package guix-patches. (Sun, 06 Dec 2020 16:41:06 GMT) Full text and rfc822 format available.

Message #13 received at 45065-done <at> debbugs.gnu.org (full text, mbox):

From: 宋文武 <iyzsong <at> outlook.com>
To: Zhu Zihao <all_but_last <at> 163.com>
Cc: 45065-done <at> debbugs.gnu.org
Subject: Re: [bug#45065] [PATCH] services: nix: Move nix.conf generation to
 etc-service-type.
Date: Sun, 06 Dec 2020 17:57:51 +0800
Zhu Zihao <all_but_last <at> 163.com> writes:

> From: Zhu Zihao <all_but_last <at> 163.com>
> Date: Sun, 6 Dec 2020 16:26:02 +0800
> Subject: [PATCH] services: nix: Move nix.conf generation to etc-service-type.

Pushed to master, thank you!




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 04 Jan 2021 12:24:11 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 161 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.