summaryrefslogtreecommitdiff
path: root/doc/guix.texi
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/guix.texi
parent0134ebc55b324dc073b68e3d64ef0d06cfdf35ce (diff)
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/guix.texi')
-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