M emacs/guix-base.el => emacs/guix-base.el +21 -0
@@ 1085,6 1085,27 @@ FILE. With a prefix argument, also prompt for PROFILE."
operation-buffer)))
+;;; Executing guix commands
+
+(defun guix-run-command-in-repl (args)
+ "Execute 'guix ARGS ...' command in Guix REPL."
+ (guix-eval-in-repl
+ (apply #'guix-make-guile-expression
+ 'guix-command args)))
+
+(defun guix-command-output (args)
+ "Return string with 'guix ARGS ...' output."
+ (guix-eval-read
+ (apply #'guix-make-guile-expression
+ 'guix-command-output args)))
+
+(defun guix-help-string (&optional commands)
+ "Return string with 'guix COMMANDS ... --help' output."
+ (guix-eval-read
+ (apply #'guix-make-guile-expression
+ 'help-string commands)))
+
+
;;; Pull
(defcustom guix-update-after-pull t
M emacs/guix-main.scm => emacs/guix-main.scm +18 -0
@@ 931,6 931,24 @@ GENERATIONS is a list of generation numbers."
(package-source-derivation->store-path derivation))))))
+;;; Executing guix commands
+
+(define (guix-command . args)
+ "Run 'guix ARGS ...' command."
+ (catch 'quit
+ (lambda () (apply run-guix args))
+ (const #t)))
+
+(define (guix-command-output . args)
+ "Return string with 'guix ARGS ...' output."
+ (with-output-to-string
+ (lambda () (apply guix-command args))))
+
+(define (help-string . commands)
+ "Return string with 'guix COMMANDS ... --help' output."
+ (apply guix-command-output `(,@commands "--help")))
+
+
;;; Lists of packages, lint checkers, etc.
(define (graph-type-names)