Open kat-co opened 3 years ago
This is wonderful, thanks for the initiative! And I guess this is a good time to learn more about Guix too. Do you use Guix the package manager or the whole distribution? I will look into your error log asap (I guess I shall just become a bit more serious about style issues and testing, so I don't break your derivation).
I use both the package manager and the distribution. Usually I'm using the package manager on systems where the distribution is performing some kind of critical task for me, like a commercial NAS distribution. Ludovic Courtès just did a wonderful post touching on a few of the things I really appreciate about Guix: reproducibility, and a kind of rationality about the software you use, and how it all fits together.
If you do decide to try Guix to help with development, please let me know. Usually what this looks like is placing a guix.scm
at the root of the project, and then replacing the source
field with (source (dirname (current-filename)))
. Then you can do things like guix build -f guix.scm
, guix environment -l guix.scm
(give me a shell with all the things needed to build this), or even guix pack -f {deb, docker, tarball, squashfs} -e '(list (load "guix.scm") "out")'
to generate things you can distribute.
Finally, please don't feel the need to formalize your development process on my behalf. I understand that you are in the exploratory phase, and I wouldn't want you to slow down. Maybe tagging stable commits would be enough. You will never break a working Guix package because of the aforementioned reproducibility guarantee.
Thanks for the consideration!
@kat-co sorry it took longer than expected because I was playing around with guix. It seems things work from my latest commit. Just wondering if you could help me understand, this is the file that worked for me:
(use-modules (guix packages)
(guix download)
(guix build-system gnu)
(guix licenses)
(gnu packages emacs)
(guix build-system emacs)
(gnu packages emacs-xyz))
(package
(name "emacs-moldable-emacs")
(version "0.0.0")
;; (source
;; (origin
;; (method git-fetch)
;; (uri (git-reference
;; (url "https://github.com/ag91/moldable-emacs")
;; (commit commit)))
;; (file-name (git-file-name name version))
;; (sha256
;; (base32 "0zlmv7qrjc01y0j3hrrw80r82z1a5l4ki3b8ldnq0qls61x1xwfy"))))
(source (dirname (current-filename)))
(inputs
`(("emacs-dash" ,emacs-dash)
("emacs-s" ,emacs-s)
("emacs-async" ,emacs-async)))
(build-system emacs-build-system)
(home-page "https://github.com/ag91/moldable-emacs")
(synopsis "Adapting Emacs for moldable development ")
(description
"This is an extension of Emacs aiming to enable Moldable
Development. Or better still, aiming to make you a better story teller
when you deal with code.")
(license gpl3+))
Why didn't you need the use-modules
section in your recipe? And what is (define-public emacs-moldable-emacs
about?
I would be happy to add a Guix recipe to the repo, once I understand which one is the right one :)
Thank you so much! I've been trying to package your commits every day! I'm so happy I can try moldable-emacs
out!
You are correct that you need the use-modules
block in order to resolve dependencies. I'm sorry I left that out as in Guix circles, it's usually implied that the correct dependencies will be added. For reference, this is the guile module the package would live in within Gux proper.
Re. define-public
: when it's within a Guile module, if it is intended to be referenced from outside, say by the script that lets you install the package, or to add as a dependency to something outside the module, it must be exported from the module. The Guile manual tells us:
Export all bindings which should be in the public interface, either by using
define-public
orexport
[...]
Also, when the package definition is not local to your project, and is instead written for Guix, or a Guix channel (as I have done here, it must have a proper source
field that tells anything, notably the Guix build daemon, how to go fetch the code for building, and what the hash should be so everyone has confidence that everything is as it should be.
But when you are writing the package to be checked in at the root of your source (i.e. like a Dockerfile
, or a Makefile
), you want a simple use-module
block and (source (dirname (current-filename)))
. This is because guix environment can take a --load
flag:
--load=file -l file Create an environment for the package or list of packages that the code within file evaluates to.
which expects a file that returns (and in Guile, like emacs-lisp, that means is the last form declared) a package, and not a module.
In this scenario, you want the (source (dirname (current-filename)))
because you want to just build whatever is already checked out. I use this all the time for local development (and there is upcoming work to make this even better).
I hope this all helps. It would be very nice to have a guix.scm
at the root of moldable-emacs
(I can review the PR if you like), and if you're interested in contributing to Guix proper, I can help you with that too. You might be interested in running guix lint emacs-moldable-emacs
first.
Finally, you may close this issue if you like! Or, we can continue discussing things here. Thank you for the consideration!
As I'm experimenting with this, I noticed the package definitions we've been discussion would omit the molds/
directory. I've updated my channel's definition to include:
(arguments
`(#:include (cons "^molds/" %default-include)))
Also, the inputs should be propagated-inputs
, which in Guix vernacular means "dependencies needed at runtime". This means Guix will install these dependencies alongside moldable-emacs
when the package is installed.
Upon executing `(require 'moldable-emacs) I receive:
Debugger entered--Lisp error: (void-function ert-set-test)
ert-set-test(me-alist-to-plist_convert-alist-to-plist #s(ert-test me-alist-to-plist_convert-alist-to-plist nil #[nil "\306\30\3071\22\0\310\31\311\312!)\313D0\202\33\0\32\314\20\n@\nA)D\33\315\34\316\35\317\216\320\10\13\"\211\24)\2040\0\321\15!\210)\f+\207" [fn-0 signal-hook-function err args-1 value-2 form-description-4 equal (error) ert--should-signal-hook me-alist-to-plist (("A" "b") (1 2) (3 4)) ((:A 1 :b 2) (:A 3 :b 4)) signal ert-form-evaluation-aborted-3 nil #[nil "\305C\306\10\11BD\244\n\307=?\205\22\0\310\nD\244\311\312N\211\33\205!\0\313\314\13\11\"D)\244\24\315\f!\207" [fn-0 args-1 value-2 -explainer- form-description-4 (should (equal (me-alist-to-plist ...) '...)) :form ert-form-evaluation-aborted-3 :value equal ert-explainer :explanation apply ert--signal-should-execution] 6] apply ert-fail] 3] nil :passed nil))
byte-code("\300\301\302\303\301\304\305\304\306\304&\7\"\207" [ert-set-test me-alist-to-plist_convert-alist-to-plist record ert-test nil #f(compiled-function () #<bytecode 0x1366bdd>) :passed] 10)
require(moldable-emacs)
(progn (require 'moldable-emacs))
eval((progn (require 'moldable-emacs)) t)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
I had not seen or used ert
before (very nice to see it exists!). But you might want to consider moving these to somewhere that will not be loaded by end-users, as suggested here. If you'd like to keep them in here:
I think you need a (require 'ert)
at the top?
Amazing explanation, thanks! You are correct, sometimes I write tests inline: I will move those in a dedicated file so we don't need that requirement here.
Done, moved the tests in a dedicated file. Also opened https://github.com/ag91/moldable-emacs/pull/8 for the Guix recipe (although I didn't run the recipe yet myself, I just built it for now)
Success! And (require 'moldable-emacs)
works without errors.
There are still quite a few warnings you may or may not want to take a look at. Things I would consider:
require
statements.org-mode
), the user is almost guaranteed to have these packages, and I suggest adding require
statements.emacs-mold
symbols, I would definitely make sure those are resolving at compile-time.moldable-emacs
is, so it may not be a good idea to get too rigid with code-quality just yet. On the other hand, it may help you to move faster if you stay on top of warnings. This may help prevent bugs due to distint and nonobvious issues the warnings are flagging.Yeah thanks, I have to schedule a refactoring session in which I make the code look proper.
I would keep using me-require
in the molds preconditions (probably even for always available dependencies), because I can generate detailed documentation. Also you never know I could make a mold that generates a (artistic) dependency graph at some point!
Hello! I am very excited by this work, and I wanted to try it out. To do so, I created a Guix package both because I use Guix and I wanted to start playing around, and because Guix builds in a clean-room environment and helps me to understand what software actually needs and does.
Here is the package definition:
Unfortunately I got a build error:
Build Log
``` The following derivation will be built: /gnu/store/g7r2bp615xf2b036wwyqgfi651yfsc2y-emacs-moldable-emacs-0.0.0-1.0737b3a.drv building /gnu/store/g7r2bp615xf2b036wwyqgfi651yfsc2y-emacs-moldable-emacs-0.0.0-1.0737b3a.drv... starting phase `set-SOURCE-DATE-EPOCH' phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds starting phase `set-paths' environment variable `PATH' set to `/gnu/store/6kfvm6qhm5g875jp34x84bgiffhwbyn9-emacs-minimal-27.2/bin:/gnu/store/v6f44zccwh9z5zk3pjlywjybbi8n2hjh-tar-1.32/bin:/gnu/store/ncydgq2znms5n1d2k5yqshhf58nsixwv-gzip-1.10/bin:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/bin:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/bin:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/bin:/gnu/store/n4n560pfvvw50a9369axw5vj5rrqfj1n-diffutils-3.7/bin:/gnu/store/cd5qf3kcnlq35p9k392pjdpdzpsnds70-patch-2.7.6/bin:/gnu/store/hic7snhayfl7m6cpfqqr73nmm19bpqkg-findutils-4.7.0/bin:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/bin:/gnu/store/ishk7fswcs4gkwcp8mh788z4mvvl9bxh-sed-4.8/bin:/gnu/store/bhs4rj58v8j1narb2454raan2ps38xd8-grep-3.4/bin:/gnu/store/57xj5gcy1jbl9ai2lnrqnpr0dald9i65-coreutils-8.32/bin:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/bin:/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/bin:/gnu/store/mpa04aq8lblbcviyxywxcsb1zbi0mf39-ld-wrapper-0/bin:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/bin:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/bin:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/bin:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/sbin' environment variable `EMACSLOADPATH' set to `/gnu/store/6kfvm6qhm5g875jp34x84bgiffhwbyn9-emacs-minimal-27.2/share/emacs/site-lisp:/gnu/store/255jfysgmqi8lwl8x0nh88x3j5s3fi8a-emacs-dash-2.19.1/share/emacs/site-lisp:/gnu/store/lkin08vh3vlz0f5qirvhbq00jskmx834-emacs-s-1.12.0/share/emacs/site-lisp:/gnu/store/24bnqdxmchk3vgahazbbpqaq8wzbj1hr-emacs-async-1.9.4/share/emacs/site-lisp' environment variable `INFOPATH' set to `/gnu/store/6kfvm6qhm5g875jp34x84bgiffhwbyn9-emacs-minimal-27.2/share/info:/gnu/store/v6f44zccwh9z5zk3pjlywjybbi8n2hjh-tar-1.32/share/info:/gnu/store/ncydgq2znms5n1d2k5yqshhf58nsixwv-gzip-1.10/share/info:/gnu/store/n4n560pfvvw50a9369axw5vj5rrqfj1n-diffutils-3.7/share/info:/gnu/store/hic7snhayfl7m6cpfqqr73nmm19bpqkg-findutils-4.7.0/share/info:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/share/info:/gnu/store/ishk7fswcs4gkwcp8mh788z4mvvl9bxh-sed-4.8/share/info:/gnu/store/bhs4rj58v8j1narb2454raan2ps38xd8-grep-3.4/share/info:/gnu/store/57xj5gcy1jbl9ai2lnrqnpr0dald9i65-coreutils-8.32/share/info:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/share/info:/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/share/info:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/share/info:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/share/info:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/share/info' environment variable `BASH_LOADABLES_PATH' unset environment variable `C_INCLUDE_PATH' set to `/gnu/store/6kfvm6qhm5g875jp34x84bgiffhwbyn9-emacs-minimal-27.2/include:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/include:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/include:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/include:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/include:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/include:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/include:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/include:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/include:/gnu/store/gfapkk5c6hvl1d94m4sqnhn7f9l5gqyh-linux-libre-headers-5.4.20/include' environment variable `CPLUS_INCLUDE_PATH' set to `/gnu/store/6kfvm6qhm5g875jp34x84bgiffhwbyn9-emacs-minimal-27.2/include:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/include:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/include:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/include:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/include:/gnu/store/hm40bxnv8jxmbc1lpb7zfimii4xm9m81-make-4.3/include:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/include:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/include/c++:/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/include:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/include:/gnu/store/gfapkk5c6hvl1d94m4sqnhn7f9l5gqyh-linux-libre-headers-5.4.20/include' environment variable `LIBRARY_PATH' set to `/gnu/store/6kfvm6qhm5g875jp34x84bgiffhwbyn9-emacs-minimal-27.2/lib:/gnu/store/i8h2pcxqdq07ijm3ibkka8f4smn1w48v-bzip2-1.0.8/lib:/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4/lib:/gnu/store/60g7r3l01fd7c58yjbm6krgcwj1jkpwg-file-5.38/lib:/gnu/store/swqdvwri9dbv6zssg6v0by7l05hd6wxp-gawk-5.0.1/lib:/gnu/store/m1z7cdbqsqyp9xnjw5cvlb4a7gkcg3m4-binutils-2.34/lib:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/lib:/gnu/store/s3dcqzwqaakv1yx37by9chksdbkgih17-glibc-2.31-static/lib:/gnu/store/hwcky7446s952w0mwchhmm211ll07zrq-glibc-utf8-locales-2.31/lib' environment variable `GUIX_LOCPATH' set to `/gnu/store/hwcky7446s952w0mwchhmm211ll07zrq-glibc-utf8-locales-2.31/lib/locale' phase `set-paths' succeeded after 0.0 seconds starting phase `install-locale' using 'en_US.utf8' locale for category "LC_ALL" phase `install-locale' succeeded after 0.0 seconds starting phase `unpack' `/gnu/store/ardf5qwqj82gva405hywf2vbd25jhqgh-emacs-moldable-emacs-0.0.0-1.0737b3a-checkout/moldable-emacs.el' -> `./moldable-emacs.el' `/gnu/store/ardf5qwqj82gva405hywf2vbd25jhqgh-emacs-moldable-emacs-0.0.0-1.0737b3a-checkout/LICENSE.md' -> `./LICENSE.md' `/gnu/store/ardf5qwqj82gva405hywf2vbd25jhqgh-emacs-moldable-emacs-0.0.0-1.0737b3a-checkout/README.org' -> `./README.org' `/gnu/store/ardf5qwqj82gva405hywf2vbd25jhqgh-emacs-moldable-emacs-0.0.0-1.0737b3a-checkout/resources/my.jpg' -> `./resources/my.jpg' `/gnu/store/ardf5qwqj82gva405hywf2vbd25jhqgh-emacs-moldable-emacs-0.0.0-1.0737b3a-checkout/molds/core-1.el' -> `./molds/core-1.el' `/gnu/store/ardf5qwqj82gva405hywf2vbd25jhqgh-emacs-moldable-emacs-0.0.0-1.0737b3a-checkout/molds/contrib.el' -> `./molds/contrib.el' `/gnu/store/ardf5qwqj82gva405hywf2vbd25jhqgh-emacs-moldable-emacs-0.0.0-1.0737b3a-checkout/molds/contrib-1.el' -> `./molds/contrib-1.el' `/gnu/store/ardf5qwqj82gva405hywf2vbd25jhqgh-emacs-moldable-emacs-0.0.0-1.0737b3a-checkout/molds/core.el' -> `./molds/core.el' phase `unpack' succeeded after 0.0 seconds starting phase `expand-load-path' source directory "/tmp/guix-build-emacs-moldable-emacs-0.0.0-1.0737b3a.drv-0/source" prepended to the `EMACSLOADPATH' environment variable expanded load paths for dash-2.19.1, s-1.12.0, async-1.9.4 phase `expand-load-path' succeeded after 0.0 seconds starting phase `patch-usr-bin-file' phase `patch-usr-bin-file' succeeded after 0.0 seconds starting phase `patch-source-shebangs' phase `patch-source-shebangs' succeeded after 0.0 seconds starting phase `patch-generated-file-shebangs' phase `patch-generated-file-shebangs' succeeded after 0.0 seconds starting phase `check' test suite not run phase `check' succeeded after 0.0 seconds starting phase `install' `/tmp/guix-build-emacs-moldable-emacs-0.0.0-1.0737b3a.drv-0/source/moldable-emacs.el' -> `/gnu/store/46r4pm57qrppz5jb90l5nid8c575y117-emacs-moldable-emacs-0.0.0-1.0737b3a/share/emacs/site-lisp/moldable-emacs-0.0.0-1.0737b3a/moldable-emacs.el' phase `install' succeeded after 0.0 seconds starting phase `make-autoloads' INFO Scraping files for moldable-emacs-autoloads.el... INFO Scraping files for moldable-emacs-autoloads.el...done phase `make-autoloads' succeeded after 0.0 seconds starting phase `enable-autoloads-compilation' phase `enable-autoloads-compilation' succeeded after 0.0 seconds starting phase `patch-el-files' phase `patch-el-files' succeeded after 0.0 seconds starting phase `build' Checking /gnu/store/46r4pm57qrppz5jb90l5nid8c575y117-emacs-moldable-emacs-0.0.0-1.0737b3a/share/emacs/site-lisp/moldable-emacs-0.0.0-1.0737b3a/... Compiling /gnu/store/46r4pm57qrppz5jb90l5nid8c575y117-emacs-moldable-emacs-0.0.0-1.0737b3a/share/emacs/site-lisp/moldable-emacs-0.0.0-1.0737b3a/moldable-emacs-autoloads.el... Compiling /gnu/store/46r4pm57qrppz5jb90l5nid8c575y117-emacs-moldable-emacs-0.0.0-1.0737b3a/share/emacs/site-lisp/moldable-emacs-0.0.0-1.0737b3a/moldable-emacs.el... In toplevel form: moldable-emacs.el:5:1:Warning: defcustom for ‘me/files-with-molds’ fails to specify type moldable-emacs.el:5:1:Warning: defcustom for ‘me/files-with-molds’ fails to specify containing group moldable-emacs.el:5:1:Warning: defcustom for ‘me/files-with-molds’ fails to specify type moldable-emacs.el:5:1:Warning: defcustom for ‘me/files-with-molds’ fails to specify containing group moldable-emacs.el:15:1:Warning: defcustom for ‘me/molds-debug-on’ fails to specify type moldable-emacs.el:15:1:Warning: defcustom for ‘me/molds-debug-on’ fails to specify containing group moldable-emacs.el:15:1:Warning: defcustom for ‘me/molds-debug-on’ fails to specify type moldable-emacs.el:15:1:Warning: defcustom for ‘me/molds-debug-on’ fails to specify containing group In me/insert-string-table: moldable-emacs.el:116:15:Warning: assignment to free variable ‘org-confirm-elisp-link-function’ In me/alist-to-plist: moldable-emacs.el:122:27:Warning: ‘(_ (ignore-errors (= (length (car alist)) (length (-filter #'stringp (car alist))))))’ is a malformed function moldable-emacs.el:126:25:Warning: reference to free variable ‘keys’ In me/first-org-table: moldable-emacs.el:170:28:Warning: reference to free variable ‘org-table-line-regexp’ In me/all-flat-org-tables: moldable-emacs.el:182:38:Warning: reference to free variable ‘org-table-line-regexp’ In me/mold-treesitter-to-parse-tree: moldable-emacs.el:209:46:Warning: reference to free variable ‘tree-sitter-tree’ moldable-emacs.el:223:31:Warning: reference to free variable ‘acc’ moldable-emacs.el:226:21:Warning: assignment to free variable ‘acc’ moldable-emacs.el:227:18:Warning: reference to free variable ‘fn’ In me/setup-self-mold-data: moldable-emacs.el:429:35:Warning: reference to free variable ‘self’ moldable-emacs.el:434:46:Warning: reference to free variable ‘mold-data’ moldable-emacs.el:435:20:Warning: reference to free variable ‘me/last-used-mold’ In me/set-dired-self-for-playground: moldable-emacs.el:442:17:Warning: reference to free variable ‘me/last-used-mold’ moldable-emacs.el:443:25:Warning: reference to free variable ‘mold-data’ moldable-emacs.el:449:49:Warning: ‘mark-whole-buffer’ is for interactive use only. moldable-emacs.el:451:37:Warning: assignment to free variable ‘self’ In me/set-self-mold-data: moldable-emacs.el:459:38:Warning: reference to free variable ‘self’ moldable-emacs.el:461:16:Warning: assignment to free variable ‘mold-data’ In me/mold-demo: moldable-emacs.el:731:22:Warning: ‘(mold mold)’ is a malformed function moldable-emacs.el:734:8:Warning: reference to free variable ‘example’ moldable-emacs.el:759:1:Warning: defcustom for ‘me/enable-history’ fails to specify type moldable-emacs.el:759:1:Warning: defcustom for ‘me/enable-history’ fails to specify containing group moldable-emacs.el:759:1:Warning: defcustom for ‘me/enable-history’ fails to specify type moldable-emacs.el:759:1:Warning: defcustom for ‘me/enable-history’ fails to specify containing group Symbol’s value as variable is void: me/before-register-mold-hook command "/gnu/store/6kfvm6qhm5g875jp34x84bgiffhwbyn9-emacs-minimal-27.2/bin/emacs" "--quick" "--batch" "--eval=(eval '(progn (setq byte-compile-debug t) (byte-recompile-directory (file-name-as-directory \"/gnu/store/46r4pm57qrppz5jb90l5nid8c575y117-emacs-moldable-emacs-0.0.0-1.0737b3a/share/emacs/site-lisp/moldable-emacs-0.0.0-1.0737b3a\") 0 1)) t)" failed with status 255 builder for `/gnu/store/g7r2bp615xf2b036wwyqgfi651yfsc2y-emacs-moldable-emacs-0.0.0-1.0737b3a.drv' failed with exit code 1 build of /gnu/store/g7r2bp615xf2b036wwyqgfi651yfsc2y-emacs-moldable-emacs-0.0.0-1.0737b3a.drv failed View build log at '/var/log/guix/drvs/g7/r2bp615xf2b036wwyqgfi651yfsc2y-emacs-moldable-emacs-0.0.0-1.0737b3a.drv.bz2'. guix build: error: build of `/gnu/store/g7r2bp615xf2b036wwyqgfi651yfsc2y-emacs-moldable-emacs-0.0.0-1.0737b3a.drv' failed ```I know this is a very new mode, so I was wondering if there is a stable commit I can use to start? And if you find this helpful, Guix is a very handy tool to guide development, and can be used on any Linux distribution.