aboutsummaryrefslogtreecommitdiff
path: root/guix/profiles.scm
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2020-04-30 23:47:49 +0200
committerMarius Bakke <mbakke@fastmail.com>2020-04-30 23:47:49 +0200
commit8bf8cd9b85c85be387565f6c8ca9f6c72196fb8e (patch)
tree6fa0f8ba32b83a996625bc188903ccebfb7e7c2c /guix/profiles.scm
parent5d9e2187929ed7e8d46ec3cb3174fd78c1846360 (diff)
parent229f4fa9522fb56b014ee9c0d8111e8fb6da764d (diff)
downloadguix-8bf8cd9b85c85be387565f6c8ca9f6c72196fb8e.tar
guix-8bf8cd9b85c85be387565f6c8ca9f6c72196fb8e.tar.gz
Merge branch 'master' into core-updates
Conflicts: gnu/local.mk gnu/packages/backup.scm gnu/packages/emacs-xyz.scm gnu/packages/guile.scm gnu/packages/lisp.scm gnu/packages/openldap.scm gnu/packages/package-management.scm gnu/packages/web.scm gnu/packages/xorg.scm
Diffstat (limited to 'guix/profiles.scm')
-rw-r--r--guix/profiles.scm36
1 files changed, 36 insertions, 0 deletions
diff --git a/guix/profiles.scm b/guix/profiles.scm
index fbadf41284..2fecf3eb7d 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -125,6 +125,15 @@
profile-derivation
profile-search-paths
+ profile
+ profile?
+ profile-name
+ profile-content
+ profile-hooks
+ profile-locales?
+ profile-allow-collisions?
+ profile-relative-symlinks?
+
generation-number
generation-profile
generation-numbers
@@ -1660,6 +1669,33 @@ are cross-built for TARGET."
. ,(length
(manifest-entries manifest))))))))
+;; Declarative profile.
+(define-record-type* <profile> profile make-profile
+ profile?
+ (name profile-name (default "profile")) ;string
+ (content profile-content) ;<manifest>
+ (hooks profile-hooks ;list of procedures
+ (default %default-profile-hooks))
+ (locales? profile-locales? ;Boolean
+ (default #t))
+ (allow-collisions? profile-allow-collisions? ;Boolean
+ (default #f))
+ (relative-symlinks? profile-relative-symlinks? ;Boolean
+ (default #f)))
+
+(define-gexp-compiler (profile-compiler (profile <profile>) system target)
+ "Compile PROFILE to a derivation."
+ (match profile
+ (($ <profile> name manifest hooks
+ locales? allow-collisions? relative-symlinks?)
+ (profile-derivation manifest
+ #:name name
+ #:hooks hooks
+ #:locales? locales?
+ #:allow-collisions? allow-collisions?
+ #:relative-symlinks? relative-symlinks?
+ #:system system #:target target))))
+
(define* (profile-search-paths profile
#:optional (manifest (profile-manifest profile))
#:key (getenv (const #f)))