summaryrefslogtreecommitdiff
path: root/guix/discovery.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/discovery.scm')
-rw-r--r--guix/discovery.scm14
1 files changed, 12 insertions, 2 deletions
diff --git a/guix/discovery.scm b/guix/discovery.scm
index 292df2bd9c..2741725b9d 100644
--- a/guix/discovery.scm
+++ b/guix/discovery.scm
@@ -60,11 +60,21 @@ DIRECTORY is not accessible."
(case (entry-type absolute properties)
((directory)
(append (scheme-files absolute) result))
- ((regular symlink)
- ;; XXX: We don't recurse if we find a symlink.
+ ((regular)
(if (string-suffix? ".scm" name)
(cons absolute result)
result))
+ ((symlink)
+ (cond ((string-suffix? ".scm" name)
+ (cons absolute result))
+ ((stat absolute #f)
+ =>
+ (match-lambda
+ (#f result)
+ ((= stat:type 'directory)
+ (append (scheme-files absolute)
+ result))
+ (_ result)))))
(else
result))))))
'()