@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -80,4 +81,4 @@ (define opts
(list %package-default-options #f)
#:argument-handler handle-argument))
- (guix-package* opts))
+ (guix-package* opts #:root-hint? #t))
@@ -12,6 +12,7 @@
;;; Copyright © 2018 Steve Sprang <scs@stevesprang.com>
;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz>
;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1078,12 +1079,16 @@ (define opts
(parse-command-line args %options (list %default-options #f)
#:argument-handler handle-argument))
- (guix-package* opts))
+ (guix-package* opts #:root-hint? #t))
-(define (guix-package* opts)
+(define* (guix-package* opts #:key (root-hint? #f))
"Run the 'guix package' command on OPTS, an alist resulting for command-line
-option processing with 'parse-command-line'."
+option processing with 'parse-command-line'. If ROOT-HINT? is #T, a hint is
+shown on the first usage of this procedure that informs users about Guix's
+support for per-user package management."
(with-error-handling
+ (when root-hint?
+ (root-warning 'package-root-hint))
(or (process-query opts)
(parameterize ((%store (open-connection))
(%graft? (assoc-ref opts 'graft?)))
@@ -2,6 +2,7 @@
;;; Copyright © 2013-2015, 2017-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -826,6 +827,7 @@ (define (no-arguments arg _)
(leave (G_ "~A: extraneous argument~%") arg))
(with-error-handling
+ (root-warning 'pull-root-hint)
(with-git-error-handling
(let* ((opts (parse-command-line args %options
(list %default-options)
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -76,4 +77,4 @@ (define opts
(list %package-default-options #f)
#:argument-handler handle-argument))
- (guix-package* opts))
+ (guix-package* opts #:root-hint? #t))
@@ -2,6 +2,7 @@
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -87,4 +88,4 @@ (define opts
#f)
#:argument-handler handle-argument))
- (guix-package* opts))
+ (guix-package* opts #:root-hint? #t))
@@ -142,6 +142,7 @@ (define-module (guix ui)
hint-file
record-hint
hint-given?
+ root-warning
%default-message-language
current-message-language
@@ -2086,6 +2087,13 @@ (define (hint-given? hint)
"Return true if HINT was already given."
(file-exists? (hint-file hint)))
+(define (root-warning hint-name)
+ (when (and (not (hint-given? hint-name))
+ (zero? (getuid)))
+ (record-hint hint-name)
+ (warning (G_ "this command is user-specific, so running it as root \
+will affect only the 'root' user~%"))))
+
;;;
;;; Command-line option processing.