<mhj[m]>Hi all, hope fellow guix people are doing well. I am using Guix on a Intel NUC i3, 16 GB of RAM and so forth, basically I got it from System 76. Anyways, the gist of my problem is that I can't seem to boot into the newest point release kernel, 5.15.17. It hangs after I get past Grub. Note: I am also using BTRFS and full disk encryption. Just wondering if anyone else was experiencing anything similar and whether I should wait for the 5.15.18 release
<lfam>Is there any other information you can share?
<mhj[m]>I think it had to do with my graphics driver? I dunno. I wish I could get a log of it, but you know, it hangs lmao
<xelxebar>Hrm. Not getting past the splash screen, right? Might be worth disabling splash (how?) and increasing kernel log verbosity.
<lfam>Why do you think it has to do with your graphics driver?
<mhj[m]>Nah, I can get past the splash screen, it just won't boot into X
<vagrantc>with guix f8bfb2d85682dcabe56a4b1b0f25d566a0abbd2b on aarch64 ... Throw to key `match-error' with args `("match" "no matching pattern" #<package firstname.lastname@example.org gnu/packages/polkit.scm:164 28796370>)'.
<lfam>Hm, I'm a bit confused. Does it boot, and then fail to start the graphical environment? Or does it fail to boot? Like, does it get to the Linux console with the login prompt?
<lfam>The range of commits between 5.15.16 and 5.15.17 can be viewed like this: `git log fbb56b570e111d97fe8fc0e0efe138e13a55b1a8..aad96ed540702b301c380b83bd7d10bc93a27b51`. It might help someone with finding a cause, if we did indeed break something
<vagrantc>lfam: guix itself builds fine (e.g. the recent re-opening of #52943)
<vagrantc>lfam: but polkit-duktape apparently is very broken
<lfam>The guix package builds, but `guix pull` fails?
<xelxebar>> If a multi-threaded process calls fork(), the new process shall contain a replica of the calling thread and its entire address space, possibly including the states of mutexes and other resources.
<lfam>Well, I'm reconfiguring my old thinkpad to update from 5.15.15 to 5.15.17 now
<lfam>However, I use a custom kernel so it will take several hours to build. Maybe the use of the custom kernel hurts the possibility of reproducing your bug. That system is also non-graphical, which also hurts chances of reproduction
<lfam>You know about rolling back from the GRUB menu, right mhj[m]?
<lfam>Yes, but it's not just the kernel. It's everything related to Guix
<mhj[m]>Yeah, I'm in an older generation right now
<lfam>Okay, just wanted to make sure you are able to keep using your computer for now
<mhj[m]>Oh yeah, no problem :D That's one reason why I continue to use Guix! Thanks to you guys for always developing it! I'm happy that I don't have to reinstall like if it were an Arch or Ubuntu system lol
<lfam>mhj[m]: If I can't reproduce the bug, I'm not sure that anyone will do anything about this unless more people report it, or unless there's a bug report sent to <email@example.com>
<lfam>I expect others have updated to 5.15.17 since we upgraded to it
<mhj[m]>That's fine! I understand. Hopefully it will work itself out if it can't be reproduced
<mhj[m]>Do you need my configuration or anything of that sort?
<lfam>Unless you have custom kernel modules, kernel arguments, initrd-modules, kernel variants, etc, then I don't think so
<lfam>Maybe it's related to your services, such as graphical services
<lfam>It's *always* helpful to share your config.scm when you are having trouble
<lfam>Others are more able to answer questions about graphical services than me
<mhj[m]>Ah, well, the only thing I've done regarding graphical services was choose both MATE and GNOME when I installed Guix, I've not enabled or disabled anything else related graphically and whatnot
<Ribby>It's a silly idea, but it will be due anyways. I wonder if we can make custom wallpapers/logos for guix. I imagine the Doom's Icon of Sin picture to attempt association akin like the GNU mascot.
<phf-1>I took the habit of `git clone --depth 1 ...'
<AwesomeAdam54321>If a guix package is given an input, can it access all the files of the input?
<gordon1>so i can drop my package transformation in the manifest in the user profile for example, but how can i do package transformations on packages used in system config (for example stuff that gets pulled for services)?
<gordon1>also how can i find out why particular store entry exists?
<attila_lendvai>it looks like 'parameterize is not bound when i run my service through a channel. when i run it locally with `./pre-inst-env guix system vm ...` then it works. any ideas why? when i start guile, then 'parameterize is bound without including anything.
<fnstudio>sorry, not very guix specific, but anyone knows of what's the minimal setup to send a PDF to a network printer and have it printed? minimal as in less software to install as possible; cups comes to mind of course but i was wondering if there's any more minimal setup
<attila_lendvai>could it be that when a module is use-module'd in a GEXP in the START code of a shepherd service, then the guile module's toplevel forms don't get evaluated? i get an unbound variable, but only when it gets there through a channel, not when i run it locally with ./pre-inst-env
<phf-1>trofi, still doing things... will tell you when it ends.
<pinoaffe>fnstudio: cups is the minimal setup that will be able to deal with a wide variety of printers
<fnstudio>pinoaffe: got it, thanks; i'm hopeful i may be able to go for a more minimal setup, that just works with my office printer
<the_tubular>I want a custom motd to apply to a few config.scm, how would I achieve that ?
<phf-1>gordon1, curious to know if you manage to make it work. I think this would mean to find all packages that have eudev in their inputs and replace that with libudev-zero. These packages would have to be written to some .scm files and then used through GUIX_PACKAGE_PATH or a channel.
<jpoiret>gordon1: the unfortunate thing is that there's no centralized list of packages for guix system configurations (also applicable to guix home)
<jpoiret>some system services offer to replace the package used by the serivce with another, in which case you're able to use package rewriting easily, but i'm not sure that's the case for all (and you'd need to do that everywhere in your config which is kind of messy)
<trofi>phf-1: thank you! looks like it at least passes test phase for you.
<gordon1>right, so that means possibly that i need to make bunch of my own services with replaced packages
<attila_lendvai>jpoiret, i think the key to the issue i to go backwards from the shepherd.conf file, and stare at the code in gnu/services/shpherd.scm... but i need to do something else now. thanks, though!
<jpoiret>jonsger: you need to add it to your profile instead
<jpoiret>jonsger: you need to check the value of QT_PLUGIN_PATH
<jonsger>jpoiret: hm, but keepassxc is also installed via config.scm
<jpoiret>the issue is that I think it only takes one directory, and so if you have a package that extends qt in your profile, sourcing the profile will overwrite the variable and it will point only to the current profile
<jpoiret>yes, but sourcing another profile that sets QT_PLUGIN_PATH will overwrite that
<jpoiret>personal opinion ahead: I don't think keepassxc should be system-wide, if that's what you're saying
<jonsger>I don't really use user profiles, I install almost everything into the "global profile" via config.scm, apart from programs like firefox or icedove which I often locally build...
<jpoiret>well, while it would be great if it could work interchangeably, there are some unfortunate side-effects such as single-valued search-paths being overwritten
<jonsger>but does it mean I need for every QT program an own profile?
<jpoiret>no, you can have all of them in the same profile?
<jpoiret>but yes, if you do `guix shell some-qt-program`, inside that shell I don't think you'll have the wayland backend, you'd need `guix shell qtwayland some-qt-program` instead
<dcunit3d>does anyone use emacs-guix? if i have a bunch of guix system operating-system definitions in a directory, how do i start a repl with the load path specified? i.e. in emacs-guix how do i set the -L parameter before i start the guix repl?
<dcunit3d>i try to add to the load-path using geiser, but that doesn't seem to work
<dcunit3d>i've also tried starting the guix repl on the commandline and connecting to it via emacs, but it causes my emacs to hang
<attila_lendvai>jpoiret, FYI, i think this is simply not handled in guix. the shepherd-configuration-file builder does (let ((files (map shepherd-service-file services)) ...), i.e. it creates one file for each service, and doesn't seem to deal with the transitive closure of its dependencies (or i don't see where it is).
<attila_lendvai>i just don't understand why it works in the other, `guix system vm ...` use-case.
<jpoiret>start/stop actions are gexps, you should be able to use it for those
<attila_lendvai>jpoiret, yes. that's a GEXP thingy, but something somewhere should grab what's collected by it, and add it to the shepherd config file (i think)
<jpoiret>well, when the gexp is lowered, it should add the necessary imported modules at the beginning of the scheme script
<jpoiret>and those modules can be specified with (with-imported-modules ...)
<attila_lendvai>jpoiret, AFAICS, shepherd is started as a standalone process with a single, generated config file. i assume no scheme code is availabel there besides the standard guile libs, and what's in the config file.
<jpoiret>each shepherd service has its own file, and each one is just a gexp that will eventually be lowered
<lil_mida_xyz>jpoiret: I usually code in rust with the emacs rustic package. In my old Debian I installed cargo using rustup, which adds a ~/.cargo folder to the $PATH variable, so that it was readily available to the rustic emacs package. Now I have the following: gnu guix starts -> exwm starts -> I run the guix environment rust -> but emacs's rustic still cannot find cargo even when the bin path is $GUIX_PROFILE/bin/cargo
<attila_lendvai>jpoiret, hrm, right. shepherd-service-file emits a gexp with a first (use-modules ...) form.
<attila_lendvai>jpoiret, but who and how will tell the shepherd guile where to find those modules? just by the virtue of being in a pulled channel makes it available for guile?
<jpoiret>so you could try (with-imported-modules `(,@(source-module-closure '((whatever module you want)))) #~(the starting gexp))
<jpoiret>if you look at .config/guix/current, you'll see that guix code and channels code are merged
<jpoiret>well, if guix can resolve those modules, with-imported-modules will work
<attila_lendvai>jpoiret, shpherd is started by /gnu/store/[hash]-guile-3.0.7/bin/guile --no-auto-compile /gnu/store/[hash]-shepherd-0.8.1/bin/shepherd --config /gnu/store/[hash]-shepherd.conf
<jpoiret>(with-imported-modules ...) will add the needed modules to the load-path of the gexp
<jpoiret>ie it will add scheme code at the beginning to extend the load path with the modules that you asked for
<jpoiret>lil_mida_xyz: when you do `guix environment rust` (by the way, `guix shell` is the newer command now, guix env is deprecated), it creates a new profile completely isolated from your default one and sources it. If you start a program outside of the shell in which you did `guix environment`, it won't be able to see it
<jpoiret>you can start emacs from within that shell, it should work then (hopefully)
<attila_lendvai>jpoiret, hrm. do you think it's an issue that shepherd-service-file adds a (use-modules #$@(shepherd-service-modules service)) in the resulting gexp, but it wraps it with a (with-imported-modules %default-imported-modules ...), i.e. does not include the serivce's modules
<jpoiret>you can add your own (with-imported-modules '((the modules you want))) around the gexp that will use them
<jpoiret>imported modules should be merged when gexps are inserted into one another
<jpoiret>imported modules only add the load-path code at the very end, when the whole gexp is lowered to something in the store iirc
<attila_lendvai>after a long struggle, i've managed to verify that the .scm file, from which the shepherd service .go file is compiled from, looks ok, and contains the code i need that binds the variable that is reported as unbound. back to square one.
<attila_lendvai>for prosperity: use guix system --verbosity=1000 to see more log output that will print enough to recover the store path for the generated .scm file
<lfam>mhj[m]: I had problems similiar to what you described
<lfam>mhj[m]: It works for me with 5.15.17 but otherwise using Guix from commit 73d775f518e8bf9c658cb0a161b22209c71e75aa, which predates recent changes to polkit and libmount (util-linux)
<lfam>Many other changes since then, too, but polkit is suspicious
<lfam>mhj[m] reported that their system is unresponsive after finishing boot with Guix revisions that include linux-libre 5.15.17
<attila_lendvai>jpoiret, this is getting strange. i'm looking at the service .scm file (https://paste.debian.net/1228960/). it does seem to set up the load path as expected, and does have a (use-modules (nongnu services swarm-utils)), and yet, the global variable *log-directory* is not bound. maybe use-modules doesn't actually load the modules, only imports their exported symbols?
<attila_lendvai>oh, wait! it's captured into a lambda, and who knows when shepherd executes it... but there's no unloading happening, i guess. or is there? maybe start gexp's are loaded into a throwaway module? and then the extracted closures run later, after the module is deleted?
<attila_lendvai>jpoiret, daaamn, i think this is it: shepherd loads its config using load-in-user-module, into a freshly made module. then the config file captures the service start code into a closure, and the closure is invoked after this dance: (save-module-excursion (lambda () (set-current-module user-module) (primitive-load file))). i.e. the definition is sideeffected into a different "current-module"
<johnhamelink>Hi, I'm trying to build the elixir package a dependency to a "package of packages" I'm trying to build to contain all of the build tools for a project (all within guix shell). The exact error I get was briefly mentioned here https://issues.guix.gnu.org/42760 . If I "guix install elixir", I can install fine. I'm not sure what to do from here :/
<lfam>csantosb: Your `guix pack` invocation includes many other directories. Are you totally sure that your config is not in the pack?
<lfam>johnhamelink: Are you getting an error when you run a particular Guix command? I can try to reproduce the problem
<johnhamelink>lfam: indeed. I'm not sure how I should go about debugging this. I looked at the source of the package in /gnu/packages/elixir.scm and I see that there is a part of the code which refers to "sh". It looks to me like its doing some patching? Perhaps the patches don't apply cleanly now? Could that be it?
<drakonis>lfam: the bridge is run by matrix people
<lfam>johnhamelink: Click on an "ID" that is interesting. For example, the last succeeding build ID, and first failing ID. From there, click on the evaluation number. The evaluation is the batch of jobs built from a particular Git commit. Then you will get the commit
<lfam>I'm sure it's just a bug they'd like to fix drakonis :)
<lfam>That commit 3da297997d "gnu: elixir: Use G-expressions." is a very likely candidate
<char[m]>I found that in guix shell, $GUIX_ENVIRONMENT and $CMAKE_PREFIX_PATH are the same and are both a single directory. In guix build, there is no $GUIX_ENVIRONMENT, and $CMAKE_PREFIX_PATH, is a "list" of directories.
<johnhamelink>lfam: yep that's where my head was at. I was literally about to start reading on what a G-expression is :)
<gordon1>so usually bunch of stuff that is build by guix is regular autohell ./configure && make && make install stuff, and usually configure part is smart enough to detect some dependencies on their own and compile it only if it's available
<nckx>civodul: The one I happen to be logged in now does (if guix size current-system is to be believed).
<char[m]>lfam: It seems to make sense to me, but stupid cmake does not seem like like it.
<johnhamelink>lfam: OK, so it seems I was able to get builds to work again, by re-using the previous method of finding "sh", but while still keeping the rest of the g-expression patch. I tested by running guix build elixir -f gnu/packages/elixir.scm and adding "elixir" to the bottom of the file. Is that a sufficient test?
<lfam>Yes johnhamelink. Can you send your patch to <firstname.lastname@example.org>?