summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-04-15 12:23:30 +0200
committerLudovic Courtès <ludo@gnu.org>2019-04-15 12:24:14 +0200
commitcbd059d1017bc22723f1e5293cc8f20dea640fff (patch)
tree401d737861a07b8a83896b3b25f68580e1d86018 /doc
parent0134ebc55b324dc073b68e3d64ef0d06cfdf35ce (diff)
downloadguix-cbd059d1017bc22723f1e5293cc8f20dea640fff.tar.gz
doc: Document 'this-package' and 'this-operating-system'.
* doc/guix.texi (package Reference): Document 'this-package'.
(operating-system Reference): Document 'this-operating-system'.
Diffstat (limited to 'doc')
-rw-r--r--doc/guix.texi42
1 files changed, 42 insertions, 0 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 1ae5711c02..4593d793b4 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5409,6 +5409,27 @@ automatically corrected.
 @end table
 @end deftp
 
+@deffn {Scheme Syntax} this-package
+When used in the @emph{lexical scope} of a package field definition, this
+identifier resolves to the package being defined.
+
+The example below shows how to add a package as a native input of itself when
+cross-compiling:
+
+@example
+(package
+  (name "guile")
+  ;; ...
+
+  ;; When cross-compiled, Guile, for example, depends on
+  ;; a native version of itself.  Add it here.
+  (native-inputs (if (%current-target-system)
+                     `(("self" ,this-package))
+                     '())))
+@end example
+
+It is an error to refer to @code{this-package} outside a package definition.
+@end deffn
 
 @node origin Reference
 @subsection @code{origin} Reference
@@ -10592,6 +10613,27 @@ is that only @code{root} and members of the @code{wheel} group may use
 @code{sudo}.
 
 @end table
+
+@deffn {Scheme Syntax} this-operating-system
+When used in the @emph{lexical scope} of an operating system field definition,
+this identifier resolves to the operating system being defined.
+
+The example below shows how to refer to the operating system being defined in
+the definition of the @code{label} field:
+
+@example
+(use-modules (gnu) (guix))
+
+(operating-system
+  ;; ...
+  (label (package-full-name
+          (operating-system-kernel this-operating-system))))
+@end example
+
+It is an error to refer to @code{this-operating-system} outside an operating
+system definition.
+@end deffn
+
 @end deftp
 
 @node File Systems