unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#52204] [PATCH] guix system vm: Add --no-graphic CLI argument.
@ 2021-11-30 19:13 Attila Lendvai
  2021-12-02 14:24 ` Mathieu Othacehe
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Attila Lendvai @ 2021-11-30 19:13 UTC (permalink / raw)
  To: 52204; +Cc: Attila Lendvai

It configures qemu to use the tty it was started in for IO (as opposed to
opening a separate graphical window).  This enables copy-pasting and
scrollback.  Exit qemu with C-a x.

* gnu/system/vm.scm (system-qemu-image/shared-store-script): Also add the
'-nographic' qemu argument when called with #:graphic? #false.
* guix/scripts/system.scm (system-derivation-for-action): Propagate
the #:graphic? keyword arg.
(perform-action): Add and propagate the #:graphic? keyword arg.
(show-help): Add --no-graphic CLI arg.
(%options): Process the new --no-graphic CLI arg.
(process-action): Feed in the CLI arg through the #:graphic? keyword arg.
---
 gnu/system/vm.scm       |  2 ++
 guix/scripts/system.scm | 10 ++++++++++
 2 files changed, 12 insertions(+)

diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 1e2d8b47c2..0a95302584 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -754,6 +754,8 @@ (define kernel-arguments
     (define qemu-exec
       #~(list #+(file-append qemu "/bin/"
                              (qemu-command (or target system)))
+              ;; Tells qemu to use the terminal it was started in for IO.
+              #$@(if graphic? '() #~("-nographic"))
               #$@(if full-boot?
                      #~()
                      #~("-kernel" #$(operating-system-kernel-file os)
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 7faa92fd7d..1675fccf50 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -689,6 +689,7 @@ (define file-systems
 (define* (system-derivation-for-action image action
                                        #:key
                                        full-boot?
+                                       (graphic? #t)
                                        container-shared-network?
                                        mappings)
   "Return as a monadic value the derivation for IMAGE according to ACTION."
@@ -706,6 +707,7 @@ (define* (system-derivation-for-action image action
       ((vm)
        (system-qemu-image/shared-store-script os
                                               #:full-boot? full-boot?
+                                              #:graphic? graphic?
                                               #:disk-image-size
                                               (if full-boot?
                                                   image-size
@@ -772,6 +774,7 @@ (define* (perform-action action image
                          dry-run? derivations-only?
                          use-substitutes? target
                          full-boot?
+                         (graphic? #t)
                          container-shared-network?
                          (mappings '())
                          (gc-root #f))
@@ -825,6 +828,7 @@ (define bootcfg
   (mlet* %store-monad
       ((sys       (system-derivation-for-action image action
                                                 #:full-boot? full-boot?
+                                                #:graphic? graphic?
                                                 #:container-shared-network? container-shared-network?
                                                 #:mappings mappings))
 
@@ -1012,6 +1016,8 @@ (define (show-help)
                          register it as a garbage collector root"))
   (display (G_ "
       --full-boot        for 'vm', make a full boot sequence"))
+  (display (G_ "
+      --no-graphic       for 'vm', use the tty that we are started in for IO"))
   (display (G_ "
       --skip-checks      skip file system and initrd module safety checks"))
   (display (G_ "
@@ -1081,6 +1087,9 @@ (define %options
          (option '("full-boot") #f #f
                  (lambda (opt name arg result)
                    (alist-cons 'full-boot? #t result)))
+         (option '("no-graphic") #f #f
+                 (lambda (opt name arg result)
+                   (alist-cons 'no-graphic? #t result)))
          (option '("save-provenance") #f #f
                  (lambda (opt name arg result)
                    (alist-cons 'save-provenance? #t result)))
@@ -1266,6 +1275,7 @@ (define (graph-backend)
                                #:validate-reconfigure
                                (assoc-ref opts 'validate-reconfigure)
                                #:full-boot? (assoc-ref opts 'full-boot?)
+                               #:graphic? (if (assoc-ref opts 'no-graphic?) #f #t)
                                #:container-shared-network?
                                (assoc-ref opts 'container-shared-network?)
                                #:mappings (filter-map (match-lambda
-- 
2.33.0





^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-12-03 13:42 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-30 19:13 [bug#52204] [PATCH] guix system vm: Add --no-graphic CLI argument Attila Lendvai
2021-12-02 14:24 ` Mathieu Othacehe
2021-12-02 19:09 ` [bug#52204] [PATCH 2/2] doc: Document guix system --no-graphic Attila Lendvai
2021-12-02 19:18 ` [bug#52204] [PATCH v2] guix system vm: Add --no-graphic CLI argument Attila Lendvai
2021-12-03 10:38   ` [bug#52204] [PATCH] " Mathieu Othacehe
2021-12-03 12:22 ` [bug#52204] [PATCH v3] " Attila Lendvai
2021-12-03 13:34   ` bug#52204: [PATCH] " Mathieu Othacehe

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).