alezost / guix.el Goto Github PK
View Code? Open in Web Editor NEWEmacs interface for GNU Guix package manager
Home Page: https://emacs-guix.gitlab.io/website/
License: GNU General Public License v3.0
Emacs interface for GNU Guix package manager
Home Page: https://emacs-guix.gitlab.io/website/
License: GNU General Public License v3.0
At the moment it seems that it's not possible to delete system generations without starting Emacs as root.
Would it be possible to lift this limitation for example using TRAMP?
Besides, is it possible to delete a system generation from the commandline?
Hello Alex,
Before a new emacs-guix
release, I want to discus a org-mode
Scheme source code block:
#+BEGIN_SRC scheme
#+END_SRC
C-c '
inside this source code block will invoke a new buffer and window. After finishing typing a code, I assume to close it with C-c '
, but instead I get a message user-error: The point should be inside ’description’ or ’synopsis’
.
So, guix-devel-code-block-edit
collide with a default well known by users org-mode
behavior. Could we bind guix-devel-code-block-edit
to another key?
Dear,
Giving a look to the guix search
command, see [1] and [2], I notice that M-x guix p r drawing tools
outputs only these 2 packages texlive-latex-eepic
and tuxpaint
.
The good news is that the issue reported in guix search
is not in M-x guix p r
. :-)
The bad news is that---for example---the package r-cli
is not listed and it should be because the description
field has the both terms drawing
and tools
.
Do I miss something?
Thank you in advance.
And thank you for this nice interface.
All he best,
simon
[1] https://lists.gnu.org/archive/html/guix-devel/2019-07/msg00263.html
[2] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=36763
On emacs-image+
, C-c . b
tries to run
,run-in-store (build-package emacs-image #:use-substitutes? #t #:dry-run? #f)
The +
is missing. The command works if I add the +
manually.
From a Scheme buffer in Guix mode:
M-x guix-switch-to-repl
M-x switch-to-geiser
Is there a way to go back to the calling buffer?
Hello,
I use guix package manager on a Fedora 33. Emacs is installed from the fedora repo and guix.el from elpa/melpa.
Whenever I run a command that interact with geiser, I face the following error:
guix-geiser-eval: Error in evaluating guile expression: Unknown meta command: geiser-eval
$7 = #f
$8 = "GNU Guix"
While compiling expression:
ERROR: Syntax error:
unknown location: unexpected syntax in form ()
scheme@(emacs-guix) [6]>
The text following the first line changes following which action I want to perform.
I can launch the geiser REPL with run-geiser, without problems.
Emacs: GNU Emacs 27.1 (build 1, x86_64-redhat-linux-gnu, GTK+ Version 3.24.22, cairo version 1.16.0) of 2020-08-21
Guix.el: 20201222.907 (commit bb2a053)
Geiser: 20210215.555 (e97ad73f97efc5c52a3f4ab2fc92db9be53efa2b)
Guile: GNU Guile 3.0.5 (~/.guix-profile/bin/guile)
It would be nice to have a guix-report-bug
command that mirrors report-emacs-bug
.
The first time I run a guix command, I get the following error:
helm-M-x: Error in evaluating guile expression: <unnamed port>:17:23: In procedure module-lookup: Unbound variable: %max-returned-list-size
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
Running the command again works though.
Hello,
What do you think about implementing the Emacs interface for the GNU Shepherd?
Feautures:
Thanks,
Oleg.
Is it possible to use guix.el
to manage a remote machine via TRAMP? Is it as simple as changing all of the variables like guix-state-directory
, or would that not work?
Say I have a foder with a checked ot guix master branch in it
Manually, I use to cd into that folder, then call
.pre-ins-env guix ... blah blah
.pre-ins-env guile ... blah blah
I'd like the manual to give an example of how to configure the guix-guile-program
variable in order to have Emacs-Guix using the guix/guile from within that folder as I do manually
Thanks
It looks like this package doesn't specify geiser-guile
as it's dependency. Whenever I try to execute the command guix-packages-by-name
, Emacs says eval-buffer: Cannot open load file: No such file or directory, geiser-guile
. I've solved the problem by installing geiser-guile
myself, but it should be automatically install when someone installs guix
.
When I use guix-system-from-file on my system config it fails, I used (setq debug-on-error t)
to get the backtrace below:
Debugger entered--Lisp error: (wrong-type-argument markerp nil)
marker-position(nil)
geiser-repl--narrow-to-prompt()
geiser-repl--wrap-unfontify-region-function(1 419)
font-lock-unfontify-region(1 419)
font-lock-default-unfontify-buffer()
font-lock-unfontify-buffer()
font-lock-mode-internal(nil)
font-lock-default-function(nil)
font-lock-mode(-1)
font-lock-change-mode()
kill-all-local-variables()
comint-mode()
geiser-repl-mode()
guix-start-repl(#<buffer *Guix Internal REPL*> "/tmp/emacs-guix-WyITVu/repl-socket")
guix-start-repl-maybe(internal)
guix-start-process-maybe()
guix-get-repl-buffer(internal)
guix-eval-read("(system-sexps 'from-file '(\"/home/wednesday/.guix-packages/wed/system/pc.scm\") '(file number-of-packages number-of-services kernel bootloader firmware initrd-modules))")
guix-system-get-entries(from-file ("/home/wednesday/.guix-packages/wed/system/pc.scm") (file number-of-packages number-of-services kernel bootloader firmware initrd-modules))
guix-system-info-get-entries(from-file "/home/wednesday/.guix-packages/wed/system/pc.scm")
apply(guix-system-info-get-entries (from-file "/home/wednesday/.guix-packages/wed/system/pc.scm"))
bui-get-entries(guix-system info (from-file "/home/wednesday/.guix-packages/wed/system/pc.scm"))
bui-get-display-entries(guix-system info (from-file "/home/wednesday/.guix-packages/wed/system/pc.scm"))
guix-system-get-display(from-file "/home/wednesday/.guix-packages/wed/system/pc.scm")
guix-system-from-file("/home/wednesday/.guix-packages/wed/system/pc.scm")
funcall-interactively(guix-system-from-file "/home/wednesday/.guix-packages/wed/system/pc.scm")
call-interactively(guix-system-from-file)
magit-invoke-popup-action(121)
funcall-interactively(magit-invoke-popup-action 121)
call-interactively(magit-invoke-popup-action nil nil)
command-execute(magit-invoke-popup-action)
By looking at it, this could end in a problem with guiser but since it stems from guix I brought the issue here.
I get Starting Guix REPL...
in minibuffer, then after some while geiser-repl--wait-for-prompt: No prompt found!
The Guix REPL gets opened in a buffer, but it seems like guix.el cannot find it.
I use guix as package manager on manjaro linux, did your PATH setup and have guix guile and emacs-guix installed through the guix package manager.
Just to let you know: I've just added support for guix.el
to Evil Collection.
Comments are welcome!
@alezost: It was a good opportunity to explore the various features of guix.el
a bit more in depth: I'm amazed by how rich and polished the user experience is. You've done a fantastic job here!
I end up with a lot of errors of the form:
;;; WARNING: loading compiled file /home/slade/.config/guix/current/lib/guile/3.0/site-ccache/guix/ui.go failed:
;;; In procedure load-thunk-from-memory: incompatible bytecode kind
I'm running a Guix-managed installation of Emacs 26.1 on my Debian computer. I'm having trouble doing most things with your Guix frontend, though. Here's what happens upon trying to view my Guix packages:
(setq debug-on-error t)
(require 'geiser)
(require 'guix)
Debugger entered--Lisp error: (error "Error in evaluating guile expression: <unnamed port>:17:23: In procedure module-lookup: Unbound variable: %max-returned-list-size\n\nEntering a new prompt. Type `,bt' for a backtrace or `,q' to continue.\nscheme@(emacs-guix) [1]> ")
signal(error ("Error in evaluating guile expression: <unnamed port>:17:23: In procedure module-lookup: Unbound variable: %max-returned-list-size\n\nEntering a new prompt. Type `,bt' for a backtrace or `,q' to continue.\nscheme@(emacs-guix) [1]> "))
error("Error in evaluating guile expression: %s" "<unnamed port>:17:23: In procedure module-lookup: Unbound variable: %max-returned-list-size\n\nEntering a new prompt. Type `,bt' for a backtrace or `,q' to continue.\nscheme@(emacs-guix) [1]> ")
guix-geiser-eval("(begin (set! %max-returned-list-size 10)(set! %temporary-directory \"/tmp/emacs-guix-Ivsyqk\"))" #<buffer *Guix Internal REPL*>)
guix-eval("(begin (set! %max-returned-list-size 10)(set! %temporary-directory \"/tmp/emacs-guix-Ivsyqk\"))")
guix-repl-configure-guile-side()
run-hooks(guix-repl-after-start-hook)
guix-start-repl-maybe(nil "Starting Guix REPL ..." nil)
guix-start-process-maybe()
guix-get-repl-buffer(internal)
guix-eval-read("(help-string )")
guix-help-string(nil)
guix-command-parse-arguments(nil)
guix-command-all-arguments(nil)
guix-command-arguments(nil)
guix-command-generate-popup(guix-popup nil)
guix(nil)
funcall-interactively(guix nil)
call-interactively(guix record nil)
command-execute(guix record)
execute-extended-command(nil "guix" "guix")
funcall-interactively(execute-extended-command nil "guix" "guix")
call-interactively(execute-extended-command nil nil)
command-execute(execute-extended-command)
M-x guix
doesn't seem to be working for me with the above minimal config using guix-installed versions of these packages. I'd appreciate any help. I'm using Geiser v 0.10 and Guile 2.2.4. Thanks for your time.
When the package is not installed guix.el
should warn the user appropriately. Instead it returns:
When the package is installed, image mode fails with:
guix-geiser-eval: Error in evaluating guile expression: guix/scripts/size.scm:202:4: In procedure profile->page-map:
error: make-page-map: unbound variable
It seems that guix-edit
and related locations functionality are not able to understand external guix package definitions. Whereas the actual packages names are loaded properly in the selection list after issuing guix-edit
(due to that happening in the guix repl, I presume?), the link to e.g. gnu/packages/third-party.scm is resolved to ~/.guix-profile/latest/gnu/packages/third-party.scm
, while it is actually in $GUIX_PACKAGE_PATH/gnu/packages/third-party.scm
.
Consequently, I cannot currently use guix.el to easily edit my out-of-tree package defintions.
I am using a git checkout of the guix tree in ~/.guix-profile/latest
, in case that might influence things.
I see there is a new website and a Gitlab repo:
Planning on moving there permanently?
If so, instead of creating a new repository on GitLab, you should "import" this repository on GitHub so that all issues and pull requests get copied along.
Also don't forget to redirect from the GitHub repo and to update the MELPA recipe :)
When running guix pull via M-x guix
, P
, r
, I get a *Guix Repl*
with the following output:
GNU Guile 2.2.2
Copyright (C) 1995-2017 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.
Enter `,help' for help.
scheme@(guile-user)> ,m (emacs-guix)
scheme@(emacs-guix)> (guix-command "pull")
$4 = #t
scheme@(emacs-guix)>
It's been nice interacting with you!
Press C-c C-z to bring me back.
GNU Guile 2.2.2
Copyright (C) 1995-2017 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.
Enter `,help' for help.
scheme@(guile-user)> ,m (emacs-guix)
scheme@(emacs-guix)>
I am using
Some debugging on the created guix repl gives me the following:
scheme@(emacs-guix)> (guix-command-output "pull")
$4 = ""
$5 = "guix pull: error: could not find bootstrap binary 'guile-2.0.9.tar.xz' for system 'x86_64-linux'\n"
Invoking guix pull
from any shell does seem to have the desired effect, and does not mention the bootstrap binary problem.
When I type a command other than guix
in my shell, I can complete fine. If I type:
l0p!ieure:~$ ls ~/Pro
...and then press TAB
, it expands to:
l0p!ieure~$ ls ~/Projects/
If I do the same thing, but with any command beginning with guix
, such as:
l0p!ieure~$ guix home reconfigure ~/Pro
...then tab completion doesn't work, and I get this error in my *Messages*
buffer:
guix-geiser-eval: Error in evaluating guile expression: ice-9/boot-9.scm:1685:16: In procedure raise-exception:
/home/ieure/.config/guix/current/share/guile/site/3.0/guix/scripts/deploy.scm:176:7: Unknown # object: "#~"
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
scheme@(emacs-guix) [5]>
This is the stack trace up to that error:
Debugger entered--Lisp error: (error "Error in evaluating guile expression: ice-9/boot-9...")
error("Error in evaluating guile expression: %s" "ice-9/boot-9.scm:1685:16: In procedure raise-excep...")
guix-geiser-eval("(help-string )" #<buffer *Guix Internal REPL*>)
guix-geiser-eval-read("(help-string )" #<buffer *Guix Internal REPL*>)
guix-eval-read("(help-string )")
guix-help-string(nil)
guix-pcomplete-search-in-help("^ \\([[:word:]]\\(?:[[:word:]]\\|-\\)+\\)" 1)
apply(guix-pcomplete-search-in-help "^ \\([[:word:]]\\(?:[[:word:]]\\|-\\)+\\)" 1 nil)
#f(compiled-function (&rest commands) #<bytecode 0xa94b9d9a9533046>)()
apply(#f(compiled-function (&rest commands) #<bytecode 0xa94b9d9a9533046>) nil)
guix-pcomplete-commands()
pcomplete/guix()
pcomplete-completions()
pcomplete-completions-at-point()
comint-completion-at-point()
completion--capf-wrapper(comint-completion-at-point all)
completion-at-point()
funcall-interactively(completion-at-point)
command-execute(completion-at-point)
This happens for any command which begins with guix
; if guix
is in any position other than the start of the command, it works fine, so commands like ls guix
are unaffected.
The immediate issue is that guix-help-string
is called with a nil
argument, which it can't handle and has no guard for. The potential larger issue is that this is being called when the thing needs to be completed isn't a guix command, but a file path.
Changing guix-help-string
to return an empty string when commands
is nil
prevents the error, but completion of guix
subcommands doesn't work, and I'm not convinced this is a proper fix.
I'm using guix.el
on GuixSD, installed via Guix. My emacs-guix
package version is 0.5.2-7.455272c. Here's the output of guix describe
:
guix 61f2d84
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 61f2d84e75c340c2ba528d392f522c51b8843f34
katco-upstream-staging 80bfd9f
repository URL: https://github.com/kat-co/guix-channels.git
branch: upstream-staging
commit: 80bfd9f61502dcc2df9da21d7804480732157e97
atomized 7cdeec5
repository URL: https://codeberg.org/ieure/atomized-guix.git
branch: main
commit: 7cdeec5154ab140d8463f38113b25bd4a334a080
nonguix 0f7c8e3
repository URL: https://gitlab.com/nonguix/nonguix
branch: master
commit: 0f7c8e3e2b72c19d8a60b2a7e94a9ca8783d4754
When I C-c .b, the problem is showed like below:
scheme@(guile-user)> (begin
(guix-warning-port (current-warning-port))
(current-build-output-port (current-error-port)))
$2 = #<output: file 9da3f18>
scheme@(guile-user)> ,run-in-store (build-package emacs-exwm-x #:use-substitutes? #t #:dry-run? #f)
While executing meta-command:
ERROR: Throw to key `srfi-34' with args `(#<condition &message [message: "gcc-arm-bug-71399.patch: patch not found"] 9b3acb0>)'.
scheme@(guile-user)>
Any suggestion? The below is my guix config
(require 'guix)
(require 'geiser-guile)
(global-guix-prettify-mode)
(setq geiser-debug-jump-to-debug-p nil)
(setq guix-directory "~/project/guix")
(with-eval-after-load 'geiser-guile
(add-to-list 'geiser-guile-load-path "~/.config/guix/latest/")
;; (add-to-list 'geiser-guile-load-path "~/project/guix/")
)
(add-hook 'scheme-mode-hook 'guix-devel-mode)
Running guix-all-packages
or guix-number-of-packages
(maybe other commands as well) produces the following warning in "Guix REPL", and the displayed total number of packages 1341, which is significantly less than actual number of packages.
Thanks :)
GNU Guile 2.2.4
Copyright (C) 1995-2017 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type
,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type
,show c' for details.Enter `,help' for help.
scheme@(guile-user)> ,m (emacs-guix)
scheme@(emacs-guix)> warning: failed to load '(gnu packages accessibility)':
warning: failed to load '(gnu packages ada)':
warning: failed to load '(gnu packages android)':
warning: failed to load '(gnu packages animation)':
warning: failed to load '(gnu packages avr)':
warning: failed to load '(gnu packages axoloti)':
warning: failed to load '(gnu packages benchmark)':
warning: failed to load '(gnu packages bioconductor)':
warning: failed to load '(gnu packages bittorrent)':
warning: failed to load '(gnu packages bootloaders)':
warning: failed to load '(gnu packages chemistry)':
warning: failed to load '(gnu packages chez)':
warning: failed to load '(gnu packages ci)':
warning: failed to load '(gnu packages commencement)':
warning: failed to load '(gnu packages compton)':
warning: failed to load '(gnu packages connman)':
warning: failed to load '(gnu packages debian)':
warning: failed to load '(gnu packages debug)':
warning: failed to load '(gnu packages digest)':
warning: failed to load '(gnu packages display-managers)':
warning: failed to load '(gnu packages education)':
warning: failed to load '(gnu packages elixir)':
warning: failed to load '(gnu packages emulators)':
warning: failed to load '(gnu packages engineering)':
warning: failed to load '(gnu packages file-systems)':
warning: failed to load '(gnu packages finance)':
warning: failed to load '(gnu packages firmware)':
warning: failed to load '(gnu packages games)':
warning: failed to load '(gnu packages gps)':
warning: failed to load '(gnu packages guile-wm)':
warning: failed to load '(gnu packages hardware)':
warning: failed to load '(gnu packages idris)':
warning: failed to load '(gnu packages image-viewers)':
warning: failed to load '(gnu packages julia)':
warning: failed to load '(gnu packages kodi)':
warning: failed to load '(gnu packages license)':
warning: failed to load '(gnu packages lirc)':
warning: failed to load '(gnu packages lxde)':
warning: failed to load '(gnu packages make-bootstrap)':
warning: failed to load '(gnu packages mate)':
warning: failed to load '(gnu packages maven)':
warning: failed to load '(gnu packages microcom)':
warning: failed to load '(gnu packages monitoring)':
warning: failed to load '(gnu packages ntp)':
warning: failed to load '(gnu packages opencl)':
warning: failed to load '(gnu packages printers)':
warning: failed to load '(gnu packages pumpio)':
warning: failed to load '(gnu packages robotics)':
warning: failed to load '(gnu packages rust)':
warning: failed to load '(gnu packages scheme)':
warning: failed to load '(gnu packages security-token)':
warning: failed to load '(gnu packages stb)':
warning: failed to load '(gnu packages sync)':
warning: failed to load '(gnu packages syncthing)':
warning: failed to load '(gnu packages syndication)':
warning: failed to load '(gnu packages telephony)':
warning: failed to load '(gnu packages terraform)':
warning: failed to load '(gnu packages tmux)':
warning: failed to load '(gnu packages tor)':
warning: failed to load '(gnu packages toys)':
warning: failed to load '(gnu packages unrtf)':
warning: failed to load '(gnu packages vulkan)':
warning: failed to load '(gnu packages zile)':
Hello,
Our derivation mode has a conflict probably with auctex in auto-mode-alist. The latex-mode from auctex takes a precedence. Is it our or auctex problem?
natsu@magnolia ~/src/emacs-guix$ find -L ~/.guix-profile/share/emacs | xargs grep drv 2>/dev/null
Binary file /home/natsu/.guix-profile/share/emacs/site-lisp/guix-build-config.elc matches
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex.el:(add-to-list 'auto-mode-alist '("\\.drv\\'" . latex-mode))
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/style/shortvrb.el:;; the style list is empty. In its master file, preview.drv, it
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/auctex-autoloads.el:(add-to-list 'auto-mode-alist '("\\.drv\\'" . latex-mode))
Binary file /home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex.elc matches
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/preview.dtx:%<installer> \file{preview.drv}{\from{preview.dtx}{driver}}
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/preview.dtx:% TeX-master: "preview.drv"
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/.gitignore:*.drv
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in:all: $(TEXMFGEN) preview.drv preview-mk.ins preview.dvi preview.pdf
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in:$(TEXMFGEN) preview.drv: preview.dtx preview-mk.ins
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in:preview.dvi: preview.drv preview.dtx preview.sty
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in: $(LATEX) '\nonstopmode \input preview.drv'
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in: $(LATEX) '\nonstopmode \input preview.drv'
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in: $(LATEX) '\nonstopmode \input preview.drv'
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in:preview.pdf: preview.drv preview.dtx preview.sty
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in: $(PDFLATEX) '\nonstopmode \AtBeginDocument{\OnlyDescription}\input{preview.drv}'
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in: $(PDFLATEX) '\nonstopmode \AtBeginDocument{\OnlyDescription}\input{preview.drv}'
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in: $(PDFLATEX) '\nonstopmode \AtBeginDocument{\OnlyDescription}\input{preview.drv}'
/home/natsu/.guix-profile/share/emacs/site-lisp/guix.d/auctex-11.91.0/latex/Makefile.in: rm -f *~ *.aux *.dvi *.drv *.log
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-derivation.el:;; derivation files (*.drv).
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-derivation.el:(defface guix-derivation-drv-file-name
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-derivation.el: "Face for '*.drv' store file names."
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-derivation.el: '(("\\.drv\\'" . guix-derivation-drv-file-name)
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-derivation.el:(add-to-list 'auto-mode-alist '("\\.drv\\'" . guix-derivation-mode))
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-build-log.el: (cons (rx "/guix/drvs/" (= 2 alnum) "/" (= 30 alnum)
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-build-log.el: "-" (+ (any alnum "-+.")) ".drv" string-end)
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-autoloads.el:(add-to-list 'auto-mode-alist (cons (rx "/guix/drvs/" (= 2 alnum) "/" (= 30 alnum) "-" (+ (any alnum "-+.")) ".drv" string-end) 'guix-build-log-mode))
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-autoloads.el:(add-to-list 'auto-mode-alist '("\\.drv\\'" . guix-derivation-mode))
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-build-config.el: (expand-file-name "images" "/tmp/guix-build-emacs-guix-0.3.3-e9e9e02.drv-0/source")))
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-build-config.el: (expand-file-name "scheme" "/tmp/guix-build-emacs-guix-0.3.3-e9e9e02.drv-0/source")))
/home/natsu/.guix-profile/share/emacs/site-lisp/guix-build-config.el: (expand-file-name "scheme" "/tmp/guix-build-emacs-guix-0.3.3-e9e9e02.drv-0/source")))
Binary file /home/natsu/.guix-profile/share/emacs/site-lisp/guix-build-log.elc matches
Binary file /home/natsu/.guix-profile/share/emacs/site-lisp/guix-derivation.elc matches
Binary file /home/natsu/.guix-profile/share/emacs/site-lisp/geiser-install.elc matches
/home/natsu/.guix-profile/share/emacs/site-lisp/geiser-autoloads.el:(setq geiser-scheme-dir "/gnu/store/9kfky3gnvrcpa0kmnmwalv8drvh36i3q-geiser-0.9/share/geiser")
/home/natsu/.guix-profile/share/emacs/site-lisp/geiser-install.el:(setq geiser-scheme-dir "/gnu/store/9kfky3gnvrcpa0kmnmwalv8drvh36i3q-geiser-0.9/share/geiser")
Binary file /home/natsu/.guix-profile/share/emacs/25.3/lisp/bindings.elc matches
Binary file /home/natsu/.guix-profile/share/emacs/25.3/lisp/leim/quail/ZIRANMA.elc matches
Binary file /home/natsu/.guix-profile/share/emacs/25.3/lisp/dos-w32.elc matches
Binary file /home/natsu/.guix-profile/share/emacs/25.3/lisp/international/latexenc.elc matches
Binary file /home/natsu/.guix-profile/share/emacs/25.3/lisp/international/mule-conf.elc matches```
Oleg.
I want to a command, which can generate a command string, for example: "guix build -f /temp/path/emacs-exwm-x.scm emacs-exwm-x", so I can use this command to build package current be edited
First, thank you for the package! When it's all working it's a joy to use. Unfortunately, right now I am encountering an error.
If I execute M-x guix-package-by-name
immediately after starting a fresh Emacs instance, I get the following error (as copied from *Messages*
):
guix-geiser-eval: Error in evaluating guile expression: While executing meta-command:
error: %max-returned-list-size: unbound variable
Attempting to run the same command again in the same Emacs instance gives me a slightly different error:
guix-geiser-eval: Error in evaluating guile expression: While executing meta-command:
error: package-names*: unbound variable
This is with emacs 27.2 and emacs-guix 0.5.2-4.8ce6d21 installed via Guix on Guix System. Nothing in my Emacs config should be relevant except the use-package
declarations to load the packages:
(use-package geiser-guile)
(use-package guix)
I've installed emacs
and emacs-guix
yet nothing happens when I type M-x guix
inside emacs. Am I missing something obvious? Let me know what additional information I can provide, as I'm an emacs noob.
$ guix package -I | grep emacs
emacs 27.1 out /gnu/store/7mvfn7d96q61lmya9j6hw77zn0z45d2q-emacs-27.1
emacs-guix 0.5.2-3.a694fdb out /gnu/store/p7n9i8gjz29w68dmywz8n50fdmwpb47n-emacs-guix-0.5.2-3.a694fdb
Hi, I am running Guix in two laptops, one is a full GuixOS and in the second one guix runs in a foreign distro (pop os!).
I don't have any problem running emacs-guix
in the GuixOS
laptop, but I am getting the following error in the foreign distro:
Debugger entered--Lisp error: (error "Error in evaluating guile expression: ice-9/boot-9.scm:1685:16: In procedure raise-exception:\nUnbound variable: package/output-sexps\n\nEntering a new prompt. Type `,bt' for a backtrace or `,q' to cont...")
signal(error ("Error in evaluating guile expression: ice-9/boot-9.scm:1685:16: In procedure raise-exception:\nUnbound variable: package/output-sexps\n\nEntering a new prompt. Type `,bt' for a backtrace or `,q' to cont..."))
error("Error in evaluating guile expression: %s" "ice-9/boot-9.scm:1685:16: In procedure raise-exception:\nUnbound variable: package/output-sexps\n\nEntering a new prompt. Type `,bt' for a backtrace or ...")
guix-geiser-eval("(package/output-sexps \"/var/guix/profiles/per-user..." #<buffer *Guix Internal REPL*>)
guix-geiser-eval-read("(package/output-sexps \"/var/guix/profiles/per-user..." #<buffer *Guix Internal REPL*>)
guix-eval-read("(package/output-sexps \"/var/guix/profiles/per-user...")
guix-output-list-get-entries("/var/guix/profiles/per-user/nanounanue/guix-profil..." all)
apply(guix-output-list-get-entries ("/var/guix/profiles/per-user/nanounanue/guix-profil..." all))
bui-get-entries(guix-output list ("/var/guix/profiles/per-user/nanounanue/guix-profil..." all))
guix-package-get-display("/var/guix/profiles/per-user/nanounanue/guix-profil..." all)
guix-all-packages("/var/guix/profiles/per-user/nanounanue/guix-profil...")
funcall-interactively(guix-all-packages "/var/guix/profiles/per-user/nanounanue/guix-profil...")
call-interactively(guix-all-packages)
magit-invoke-popup-action(97)
funcall-interactively(magit-invoke-popup-action 97)
call-interactively(magit-invoke-popup-action nil nil)
command-execute(magit-invoke-popup-action)
This error happened when trying to list the packages.
Two buffers are opened, besides de *Backtrace*
: *Guix REPL*
y *Guix Internal REPL*
.
The first one shows the following:
Enter `,help' for help.
scheme@(guile-user)> ,m (emacs-guix)
While executing meta-command:
no code for module (gcrypt hash)
scheme@(guile-user)>
The second one just this:
Enter `,help' for help.
scheme@(guile-user)> ,m (emacs-guix)
scheme@(emacs-guix)>
NOTE: In the GUIX reddit someone post a similar problem: https://www.reddit.com/r/GUIX/comments/ouv0p5/problem_with_emacsguix_on_foreign_distro/?utm_source=share&utm_medium=web2x&context=3
I've noticed since the last few weeks that guix.el fails to do many things:
scheme@(emacs-guix)> (process-package-actions "/var/guix/profiles/per-user/ambrevar/guix-profile" #:install '((58691776 "out")) #:upgrade '() #:remove '() #:use-substitutes? #t #:dry-run? #f)
The process begins ...
The following package will be installed:
ncdu 1.13 /gnu/store/ir2izsd72axl0xxdl4aapr9bz0vssm31-ncdu-1.13
substitute: updating substitutes from 'http://mirror.hydra.gnu.org'... 100.0%
The following derivations will be built:
/gnu/store/92pz45s40vgyk5kn7h8f40q0gx47avl8-profile.drv
/gnu/store/w6lnbyr3a4ghpfdn06rdvaq4qivb31dm-xdg-mime-database.drv
/gnu/store/lhzg3cpnlc2zbdylxi7g0hf2l6xsg9xn-gtk-icon-themes.drv
/gnu/store/fi1x56vgl3pdjxmfvbr7mncfalal98yz-ca-certificate-bundle.drv
/gnu/store/an61h203f1cxa76rxd1d2vcpdj5pcglq-glib-schemas.drv
/gnu/store/8agfwvylacn4ylgwd82qh1gvfvdcr9z8-xdg-desktop-database.drv
/gnu/store/7m2hkyri6z86pmrhvsn5f423vpicx89z-info-dir.drv
/gnu/store/57k1zz4jwscbkr02gxsbdv3cwij4grwr-gtk-im-modules.drv
/gnu/store/438djmkajir6ikfal453c47bby6791d9-fonts-dir.drv
/gnu/store/3chn2amck5455dkw9jdl7c01sx7kp2p9-ghc-package-cache.drv
/gnu/store/ix790527fc5n43zrvbyxxxv65fmhb60r-manual-database.drv
Backtrace:
10 (primitive-load "/gnu/store/dlqqng4xbamabl8b0j5jacxqd4m?")
In ice-9/eval.scm:
721:20 9 (primitive-eval (begin (use-modules (guix build #) ?) #))
In ice-9/psyntax.scm:
1235:36 8 (expand-top-sequence ((begin (use-modules (# # ?) ?) ?)) ?)
1182:24 7 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?)
1182:24 6 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?)
285:10 5 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) ?)
In ice-9/boot-9.scm:
3365:20 4 (process-use-modules _)
222:17 3 (map1 (((guix build utils)) ((guix build union)) ((?)) ?))
3366:31 2 (_ ((guix build utils)))
2791:6 1 (resolve-interface _ #:select _ #:hide _ #:prefix _ # _ ?)
In unknown file:
0 (scm-error misc-error #f "~A ~S" ("no code for modu?" ?) ?)
ERROR: In procedure scm-error:
no code for module (guix build utils)
Using a GUI system, the command guix package -i emacs-guix
installs nothing but a single .el file, and the only command it provides is (guix-emacs-autoload-packages) . The documentation isn't helping me.
when the point is on an empty line, this fails:
guix.el/elisp/guix-ui-package.el
Line 1516 in 8ce6d21
with: split-string: Wrong type argument: stringp, nil
something like this should work:
(or (thing-at-point 'symbol t) "")
As I mentioned in this thread on help-guix, using the recommended workaround for foreign distros as indicated in #28 and #29 didn't really work for me. At first it seems that package lists work, however on close inspection I noticed that emacs-guix
shows package descriptions from the previous pull.
For example, after pulling with guix pull
and updating packages with guix package -u
, running guix package -s guix
yields version 1.0.1-15.0984481
(which matches ~/.guix-profile/bin/guix --version
and the description shown by guix edit guix
). However, if I then run a new Emacs and open guix-installed-packages
, guix
is marked as being "from the future":
guix 1.0.1-15.0984481
This package is from the future, i.e. this (installed) package
is newer than the available package recipe for guix.
And when I follow the "guix" link to open that recipe, it is for guix 1.0.1-14.c2f9ea2
(i.e. that in the previous pull). In fact, opening guix
in guix-all-packages
shows the description of guix 1.0.1-14.c2f9ea2
straight away.
I don't know if this is something that would go away by using guix repl internally, but I'm happy to do whatever testing is needed.
Thanks a lot for the very nice package!
Hi,
I try to use my own channel but I can't list package detonations in it. Could point on how I may add them to the search list?
Steps
ws-butler-global-mode
and selectrum-mode
.guix-package-by-name
and select any package.Here, I select the "go" package. Result:
if: Error in evaluating guile expression: ice-9/boot-9.scm:1685:16: In procedure raise-exception:
In procedure string-index-right: Wrong type argument in position 1 (expecting string): #("go" 0 2 (ws-butler-chg chg))
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
scheme@(emacs-guix) [1]>
I'm not sure what's happening but at a guess, ws-butler is active in the selectrum minibuffer and propertizes the string candidate we send to Guile.
This is a workaround that perhaps should be upstreamed to ws-butler:
(add-to-list 'ws-butler-global-exempt-modes #'minibuffer-inactive-mode)
If I'm right that it's text properties, perhaps guix.el could de-propertize any strings before sending them to external programs.
Hello,
I removed find-newest-available-packages
from (gnu packages)
in Guix commit e2a903c807ccacec5925f197ce26f626060e1953 (Jan. 2019) because it was not used internally. Only recently did I realize that Emacs-Guix uses it.
Would it be an option for you to re-introduce it in packages.scm
in Emacs-Guix proper? WDYT?
Apologies for the breakage!
Package seems to get installed by
$ guix package -i emacs-guix
, yet when one goes M-x 'guix-installed-packages..." i get
Starting Guix REPL ... No prompt found!
(let me add that a Guile REPL prompt is opened in another parallel buffer, though )
... thus, leaving the package unusable.
Thanks, thanks, thanks
I'm the current maintainer of Helm System Packages, a Helm-powered package manager which supports pacman, portage, dpkg (all Debian-based distributions) and xbps (Void Linux). It also runs over the network via TRAMP!
I was thinking of adding support for Guix but since there is an obvious overlap with guix.el
I thought it would be worth discussing the features first.
guix-all-available-packages
already provides most of the features of Helm System Packages. Combine it with helm-occur
and you get a similar browsing experience.
The main missing feature provided by Helm System Packages is the ability to mark the results of a search.
Thus I would suggest the following: helm-system-packages
for Guix would simply switch to the *Guix Packages:...
buffer and run a Helm-occur-like session where the action is to mark the packages. The downside is that it would not work over the network.
Otherwise I could just go ahead and re-implement an independent cache of the list of packages.
Thoughts?
I'm running emacs27.1 from guix upstream on ArchLinux.
Right now, I can't run guix commands using the emacs interface. When I try to search for a package(guix package-search
. I get: Starting GUIX REPL...
then: No prompt found
. How do I work around this? I have guix
and guile
:
➜ ~ guix --version
guix (GNU Guix) 99a9aa8f55cfa4117c268acadd81817b6d90e94e
Copyright (C) 2020 the Guix authors
➜ ~ guile --version
guile (GNU Guile) 3.0.4
Does this package work for people on foreign distros?
My question is: the first two path come from where? they are always in the begin of list
Enter `,help' for help.
scheme@(guile-user)> %load-path
$2 = ("/home/feng/.config/guix/latest" "/home/feng/.emacs.d/elpa/geiser-20170704.1044/scheme/guile/" "~/.config/guix/latest" "/home/feng/.emacs.d/elpa/geiser-20170704.1044/scheme/guile" "/run/current-system/profile/share/guile/site/2.2" "/gnu/store/jkhydh37k4dcrw3mhcv2hlcipalmpblf-guile-2.2.2/share/guile/2.2" "/gnu/store/jkhydh37k4dcrw3mhcv2hlcipalmpblf-guile-2.2.2/share/guile/site/2.2" "/gnu/store/jkhydh37k4dcrw3mhcv2hlcipalmpblf-guile-2.2.2/share/guile/site" "/gnu/store/jkhydh37k4dcrw3mhcv2hlcipalmpblf-guile-2.2.2/share/guile")
scheme@(guile-user)>
This is my config:
(use-package guix
:ensure nil
:config
(setq guix-directory "~/project/guix")
(setq geiser-debug-jump-to-debug-p nil)
(add-hook 'after-init-hook 'global-guix-prettify-mode)
(add-hook 'scheme-mode-hook 'guix-devel-mode)
(with-eval-after-load 'geiser-guile
;; NOTE: "~/.config/guix/latest/" is invaild,
;; use "~/.config/guix/latest" instead.
(add-to-list 'geiser-guile-load-path
(concat (file-name-directory (locate-library "geiser.el"))
"scheme/guile"))
(add-to-list 'geiser-guile-load-path "~/.config/guix/latest")))
The file geiser-company.el had been removed in the geiser upstream repo in Commit 18faa0ba
Consequently, the line
(geiser-company--setup geiser-repl-company-p) in guix-repl.el needs to be eliminated
Hi, I tried to compile and install locally guix.el to play a bit with the code but I was unable to do it.
Those are the steps I did:
guix environment -l guix.scm
./autogen.sh
./configure --prefix=$PWD/install
make
Make fails when compiling the .el
files. The problem seems to be in the build-aux/build-env.el
file. This file seems to load the autoload definitions inside the guix enviroment using the function guix-emacs-autoload-packages
passing it the environment directory.
The problem I have is that my guix installation defines that function not taking any argument, so that code fails.
I don't really know if I'm missing something or just that little script is broken but I managed to workaround it removing the argument, setting the EMACSLOADPATH env variable to point the environment and adding -q
(why do it needs to load my init files?).
Am I missing something on how to build it locally using guix?
Thanks.
With an up-to-date GuixSD, I do not see all (10,000+) packages, but rather only a small subset (~790). I seem to recall it showing all packages the first time I ran it.
Using guix-installed emacs on Debian GNU/Linux buster, I see all 10,000+ pacakges.
Dear,
If I read well, the profiles are provided by this piece of code (defcustom
) and then listed by this piece of code (defun
).
Now there is an CLI to list all the user's profile: guix package --list-profiles
.
I am not sure to have my mind clear enough: using this new Guix plumbing, is it better to update the variable guix-profile
or the function?
Thank you in advance.
All the best
Hi @alezost,
I'm using guix-1.1.0 with emacs-guix is installed from guix package
And after I install magit
from melpa.org
, the guix-popup doesn't work anymore. I believe it relative with magit-popup, because all functions guix
still works well.
with toggle-debug-on-error
I have:
Debugger entered--Lisp error: (wrong-type-argument sequencep all)
cl-intersection((all magit) all)
byte-code("\301\302!\210\301\303!\210\301\304!\210\301\305!\210\301\306\307\310#\203/\0\311\312\313\300!\205!\0\010\"\203/\0\314\315!\203/\0\315\316!\210\317\320\307\321\322\323\324\325&\007\210\317\326\307\327\324\320%\210\330\331\332\333\334DD\335\336\337\324\320\340\341&\011\210\330\342\332\333\343DD\344\324\320\340\345&\007\210\330\346\332\333\347DD\350\324\320\340\351&\007\210\330\352\332\333\353DD\354\336\355\324\320\340\351&\011\210\330\356\332\333\357DD\360\324\320\340\361&\007\210\362\363\364\365\324\326%\210\362\366\367\370\324\326%\210\362\371\372\373\324\326%\210\362\374\375\376\324\326%\210\362\377\201@\0\201A\0\324\326%\207" [async-bytecomp-allowed-packages require button cl-lib dash format-spec async-bytecomp nil t cl-intersection (all magit) boundp fboundp async-bytecomp-package-mode 1 custom-declare-group magit-popup "Infix arguments with a popup as feedback." :link (info-link "(magit-popup)") :group bindings magit-popup-faces "Faces used by Magit-Popup." custom-declare-variable magit-popup-display-buffer-action funcall function #f(compiled-function () #<bytecode 0xfe8139>) "The action used to display a popup buffer.\n\nPopup buffers are displayed using `display-buffer' with the value\nof this option as ACTION argument. You can also set this to nil\nand instead add an entry to `display-buffer-alist'." :package-version (magit-popup . "2.4.0") :type sexp magit-popup-manpage-package #f(compiled-function () #<bytecode 0xfe8151>) "The package used to display manpages.\nOne of `man' or `woman'." (choice (const man) (const woman)) magit-popup-show-help-echo #f(compiled-function () #<bytecode 0xfe8161>) "Show usage information in the echo area." boolean magit-popup-show-common-commands #f(compiled-function () #<bytecode 0xfe8171>) "Whether to initially show section with commands common to all popups.\nThis section can also be toggled temporarily using \\<magit-popup-mode-map>\\[magit-popup-toggle-show-common-commands]." (magit-popup . "2.9.0") magit-popup-use-prefix-argument #f(compiled-function () #<bytecode 0xfe8181>) "Control how prefix arguments affect infix argument popups.\n\nThis option controls the effect that the use of a prefix argument\nbefore entering a popup has.\n\n`default' With a prefix argument directly invoke the popup's\n default action (an Emacs command), instead of bringing\n up the popup.\n\n`popup' With a prefix argument bring up the popup, otherwise\n directly invoke the popup's default action.\n\n`nil' Ignore prefix arguments." (choice (const :tag "Call default action instead of showing popup" default) (const :tag "Show popup instead of calling default action" popup) (const :tag "Ignore prefix argument" nil)) ...] 10)
require(magit-popup)
byte-code("\300\301!\210\300\302!\210\303\304\305\306\307\310%\207" [require magit-popup guix-profiles custom-declare-group guix-popup nil "Popup interface for Emacs-Guix commands." :group guix] 6)
autoload-do-load((autoload "guix-popup" nil t nil) guix)
command-execute(guix record)
counsel-M-x-action("guix")
ivy-call()
ivy-read("M-x " ("toggle-debug-on-error" "package-delete" "guix-system-generations" "guix-all-services" "guix-all-packages" "cd" "magit" "5x5" "arp" "dbx" "dig" "erc" "ert" "eww" "ftp" "gdb" "irc" "jdb" "man" "mpc" "pdb" "pwd" "rsh" "sdb" "xdb" "calc" "diff" "ffap" "gnus" "grep" "help" "ielm" "info" "life" "mail" "mpuz" "ping" "pong" "smex" "talk" "term" "undo" "yank" "zone" "align" "chmod" "debug" "diary" "dired" "ediff" ...) :predicate #f(compiled-function (x) #<bytecode 0xe315ed>) :require-match t :history counsel-M-x-history :action counsel-M-x-action :keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) :initial-input nil :caller counsel-M-x)
counsel-M-x()
funcall-interactively(counsel-M-x)
call-interactively(counsel-M-x nil nil)
command-execute(counsel-M-x)
I discovered if I remove rm .emacs.d/elpa/async-20200809.501/ -rf
(a dependency of magit), guix-popup works well again.
Some infomations:
emacs-guix 0.5.2
Outputs:
out
Store directory:
/gnu/store/j8x9rgxyhiaixk0w4h5d5kx719l31392-emacs-guix-0.5.2 Store item
Dependencies:
/gnu/store/sil5d94sxsqm2bay2l1qflgg8zlsk3q6-emacs-geiser-0.11.2 Store item
/gnu/store/c64fi1b6qy4apvc8nza3palfii13fb5i-guile-gcrypt-0.2.1 Store item
/gnu/store/zcf2b4fvv0lak1lxmvncy1bliq8s8mby-emacs-dash-2.17.0 Store item
/gnu/store/vjajf14zn5cn2q0rpjpnfi9sfylz9pvk-emacs-bui-1.2.1 Store item
/gnu/store/wnhfg5jh9kg718ax6dh4y0yh2h18r0xv-emacs-edit-indirect-0.1.5 Store item
/gnu/store/4p7n6xij0ql5asqdyym5icnkp8r6k5sg-emacs-magit-popup-2.12.5 Store item
magit is an installed package.
Status: Installed in ‘magit-20201119.1947/’ (unsigned). [Delete]
Version: 20201119.1947
Commit: 04e641ac8579b0c2feda738e77e8a7c9bb6945da
Summary: A Git porcelain inside Emacs.
Requires: emacs-25.1, async-20200113, dash-20200524, git-commit-20200516,
transient-20200601, with-editor-20200522
Thanks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.