IRC channel logs
2026-03-29.log
back to list of logs
<apteryx>lilyp, noe: everytime I thought I fixed the showtime package wrapper, I wake up the next day with it not working, throwing a 'RuntimeError: Cannot make gtk4paintablesink'; if you have ideas, please shoot :-) <apteryx>I guess my testing was flawed by the fact showtime, once launched, stays in the background, so you need to pkill it to really test the new version <apteryx>lilyp, noe: uh, it seems to work now, haven't done anything <YAR_Oracool>Well.. .after some searching in the cyber verse known as the internet... Apearetly I don't need to mix files because someone already made a system to dynamically change colors <GalaxyNova>Is it normal for the guix daemon to take 2.2 Gb of ram when it's idling? <czan>That does seem excessive. <ieure>YAR_Oracool, Yes, but why would you want to? <ieure>YAR_Oracool, There are examples in the manual, `(guix)File Systems'. <YAR_Oracool>No declaritive way to setup partitions... this won't work... gonna lower my ambitions <adanska>YAR_Oracool, i was trying to something like this last week... you could use an initrd with a pre-mount gexp and perhaps find a way to statically compile parted... then you could look at all the file system records, check if they exist and make them if not <adanska>a LOT easier said than done... i got stuck on trying to make a static parted package <GalaxyNova>czan: strange, it appears as way less memory in `top`, but `systemctl status` is showing the 2 gb still. maybe it's just some strange interaction with systemd <lilyp>apteryx: do you still get the same error if testing correctly? <lilyp>my guess would be that the sink itself could be broken – we had something similar with cogl for quite a while <lilyp>but IIUC gtkpaintablesink is part of the new rust thingy, right? given that rust should be bugfree idk how this would happen <apteryx>it works right now, from my user profile at least <apteryx>I guess since it's started via dbus (apparently), it'll inherit the system environment in normal circumstances (the GNOME packages being installed in the system profile) <apteryx>it seems to be wired to work like kgx (gnome-console) <apteryx>I'm interested to know how it works for others <apteryx>I think the profiles are merged nowadays (system and user profiles), so that shouldn't be an issue <lilyp>if you want to know that you could start it from a pure shell with only DISPLAY and some other variables exposed; or make a vm where you run it in idk niri <lilyp>huh, it's already on master, neat <apteryx>yeah, I tried updating the tools I use/test on a daily basis on master, and was surprised I could already update most of them <apteryx>totem is already replaced by showtime in the gnome-core-meta-utilities too <apteryx>so we're gearing up toward GNOME 49 if not 50, though I heard from noe there will be some systemd integration to workaround <identity>and showtime works great for me, unlike totem <apteryx>not sure what components are impacted by this exactly <apteryx>identity: yeah, totem hadn't been particularly reliable for me either <identity>apteryx: iirc the systemd integration is mostly user-level service management (i read on guix-devel somebody is working on replacing that with home Shepherd, which seems to be coming along nicely) and userdb (no idea about this) <lilyp>Noe is doing both atm and I'm very grateful she does <lilyp>app-wise, I think most stuff can be upgraded with just glib/gtk/libadwaita being the right versions <lilyp>system-wise, i.e. shell and gdm, that's a bit more problematic <adanska>im hacking around in the repl with services, and i've used fold-services on the services from an operating system record i had lying around. Now i'm trying to look at the value that is inside this `service` record, but i seriously cannot understand how to further introspect the content of this (service-value $service$) content. does anyone have some pointers? <adanska>its some sort of procedure? what sort of procedure is it? the compose procedure... idk <identity>yarl: probably ‹more important things to do right now› <lilyp>does it say how many/which arguments it takes <adanska>lilyp, i thunk that too :p jokes aside, how can i "resolve" a thunk? <adanska>no, it just complains if i try to evaluate it that i've given it the wrong number of arguments <lilyp>a thunk is just no arguments <lilyp>you should be able to get its arity from the handle so to speak <adanska>lilyp, thats the thing, if i ((service-value $service)) i get that wrong arguments error <lilyp>can you just type (service-value $service)? what does it print? <adanska>this: #<procedure 7f2454278e60 at gnu/services.scm:443:2 (state)> <yarl>identity: Is cbaines working alone on this? <adanska>that location in the code is just the bottom of the `modify-services` function iirc <identity>yarl: cbaines is not working on that right now; i do not know the details <lilyp>i think it uses the state monad rather than the store, but yeah, run with store <adanska>lilyp, oh, do i need to specify that particular monad then? <adanska>the fold-services function returned a vhash table, would that be the monad? <adanska>sorry for the flurry of questions, i appreciate you helping me out here :) <adanska>this is my first real time diving into the Guix internals and its all quite disorienting <lilyp>I'm no expert on monads sadly; if you want to know Guix internals, there has been a series on blog posts ready for you to read, however <lilyp>the monad itself is typically bound by syntax such as run-with-store – it's not some vhash table, but a special record defined in `(guix monads)` <lilyp>anyway, gtg, wish you good luck on your endeavours <adanska>bye lilyp! Thanks for your help, catch you later :) <trev>dangit, what is the flag for ignoring a package during a reconfigure? <identity>trev: there is no such flag, as far as i know <trev>i could have sworn someone mentioned it recently <trev>sigh...every time there's a linux patch version bump i cry in RAM <cbaines>yarl, I only managed to work briefly on it back in 2023/2024, trying to keep the bordeaux build farm and QA going in 2024 ended up occupying my time <YAR_Oracool>adanska: What am I doing... Sitting here making an algorithem to automatically mount drives on guix... <YAR_Oracool>then I have to figure out what can out put drive format <YAR_Oracool>And since I know that, I can also just make the formating automated too <YAR_Oracool>probebly formating isn't what people like to use but for me.. .that's fine <janneke>anyone having any luck with `berg pull create'? <janneke>ACTION gets × not found: The target couldn't be found. whether with --target=master or target=origin/master <janneke>ACTION fires-up a graphical browser again <czan>sneek: later tell adanska When using fold-services you should set #:target-type to the type of service you're interested in. The default is system-service-type, which has its value set to a monadic service. Other services have a more directly useful service-value which you can extract with service-value. In your case you probably want to set #:target-type to your specially-defined service. <yelninei>how broken is something when rmdir(2) is segfaulting (for unknown reasons)? <yelninei>maybe this happens because the string gets garbage collected? <yelninei>sneek later tell civodul i could not reproduce your issues in commencement (on x86_64-linux) <janneke>hoping to get a nicer manually-built childhurd, i was saddened to find that `guix pull' even/still crashes on a local directory <yelninei>64bit or 32bit? 32bit might oom, i had success with 64bit recently <janneke>ooh, really; pullincg from a local branch, i take it? <yelninei>yes from local checkout, it took 2h or so to build (without dependencies) but it worked <yelninei>it also works on 32bit if you restart before it ooms as already build parts wont consume memory the second time <janneke>yelninei: yeah, i got it to work two years ago or something, by splitting-up guix/self.scm <janneke>15c5f1a2c20b21de0f19f42db1ccab4c42117ebb <janneke>self: Compile guix-packages-base in chunks of 10 files. <janneke>possibly we need to "just" use more chunks now, at least for target-hurd32? <janneke>otoh, it's probably best to direct our atteention to the 64bit hurd anyway <yelninei>it might also be related to the locale memory leak with guile <bjc>i've been able to pull from a local checkout once, it's failed three other times <bjc>make was working, though a couple store tests started crashing <janneke>ok, interesting. it failed for me once and then i gave up <yelninei>janneke: For current-guix it is only an issue if the guix package and current-guix diverge to much, and building current-guix takes longer than the stable guix <bjc>building guix on hurd seems to take about as long as on linux for me <bjc>it's 'basically forever' in both cases =) <janneke>yelninei: some signal and/or a segfault, don't remember <anthk_>hello, (service plasma-desktop-service-type) doesn't pull kwin, just kwin_wayland <PotentialUser-11>Hello. I am trying to use `specifications->manifest` in an interactive guile shell. It does not seem to be defined in `(gnu packages)` or `(gnu profiles)`. Where can I find it? <identity>i mean, it is very much defined and exported from there <PotentialUser-11>identity That is what is says in the manual, yes. I am doing something wrong, obviously. <identity>(@ (gnu packages) specifications->manifest) should show it <PotentialUser-11>`;;; <stdin>:59:0: warning: possibly unbound variable `specifications->manifest'` <PotentialUser-11>What goes into the gnu namespace and the guix namespace? (I assume they are namespaces) <identity>roughly, (guix …) is stuff pertaining to Guix itself, like build systems and the daemon/store stuff, while (gnu …) is for the GNU System more generally, like software and services <identity>(guix packages) has the stuff you need to define packages, while (gnu packages) has utilities for packages like ‘fold-packages’ and ‘specification{,s}->*’ <PotentialUser-11>`specifications->manifest` is under (gnu packages) but `packages->manifest` is under (guix profiles). It does not seem very intuitive to a newbie like me. <PotentialUser-11>I'm not saying it is wrong. If I knew all complexity in the system I am sure I would see things differently. <identity>PotentialUser-11: (gnu packages) is utilities, while (guix profiles) is more fundamental. ‘specifications->manifest’ is essentially just (compose packages->manifest specifications->packages), it is a utility. ‘packages->manifest’ is much more complex (still only about 25 lines) by comparison <bjc>25 lines of scheme can be very dense <PotentialUser-11>bjc I suppose so. I don't even know how long those lines are -- and I suppose there is no size limit and you could cram an entire program in a single line. <kestrelwx>Well, you're discouraged to go over 80 colums in Guix sources. <PotentialUser-11>Now I want to use Emacs to program in that environment, send code to Python and do some interactions with the libraries that are defined only there. <PotentialUser-11>Do I have to add Emacs to my manifest and invoke it from inside the `guix shell` ? <bjc>you can use the direnv emacs package along with envrc to do it <bjc>so that's, emacs-direnv, emacs-envrc, and direnv <ieure>emacs-guix also has the ability to update Emacs based on a profile. <ieure>bjc, `guix-set-current-profile'. <PotentialUser-11>ieure But that works on profiles. Do manifest files produce an actual profile? <n|Phreak>no pretty sure manifest files have nothing to do with profiles <n|Phreak>unless you actually create a new profile and source that profile out like guix package -p <profile_name> -m <manifest_name.scm> <n|Phreak>I have different profiles per env I want to work in <bjc>janneke: maybe i've just been lucky, but the trick to work around tty detection fixes the crashing during pull for me: guix pull --url=$whatever 2> /dev/null <n|Phreak>I then create an alias for a guix shell within that profile to launch my env <n|Phreak>alias guile-ide='guix shell -p ~/.guix-extra-profiles/guile-env -- emacs&' <bjc>so i guess the libgit fix doesn't work on x86_64. or maybe it's not is 1.5.0 <PotentialUser-11>n|Phreak Well... I could see `guix shell -m manifest.scm` being similar to creating and activating an anonymous profile that is deleted after use. <PotentialUser-11>So, if a manifest file would relate to a profile like a lambda function relates to a named function. <bjc>envrc will let you associate a guix manifest with a directory structure, such that emacs will act as if it were launched inside that environment <bjc>you can have lots of them going at once. it's pretty nice <bjc>if you don't mind launching an emacs per project it's probably overkill. but i only ever have one emacs running <trev>bjc: you can load environments (profiles) with the guix package in emacs <bjc>yeah, so ieure was telling me. i haven't used it so i'm not sure how to compare the two <n|Phreak>Ahh , ok so I run a different emacs per environment <trev>i am a envrc user too and enjoy the workflow. i only use the `M-x guix-set-current-profile' rarely <bjc>i'm a pretty big fan of envrc <trev>it changed the way i organize my projects <bjc>i've been doing stuff like this for a long time. i used to use something called 'graft' to manage dev environments <bjc>then virtual machines, then containers, now nix/guix shells <bjc>not sure how it improves from here. it's pretty seamless now <trev>bjc: did you try the toolbox/distrobox workflow yet? <bjc>well, hurd, i suppose 😄 <n|Phreak>I even use them to run non guix packages all the time <bjc>no, i'm not familiar with distrobox. i'm honestly pretty happy where i am, though i will likely peek at it <trev>it's better than the traditional docker/podman style dev environment that was popular around 10 years ago <ieure>PotentialUser-11, Yes, manifests create profiles. `guix shell' also creates profiles. <ieure>They're just, usually, short-lived profiles that get deleted on the next `guix gc', rather than long-lived profiles with generations. <ieure>PotentialUser-11, A profile is a superset of a manifest. <trev>i created some profiles but rarely use them and just resort to manifests usually <ieure>Yes, but the manifest creates a profile. Just, as I said, not a persistent one. <bdunahu>I can see why compiling multiple world rebuild changes into a single branch prevents having continuously rebuild everything in master, but how does this process prevent issues where updating a package like this breaks hundreds of dependencies? How is this tested before being merged into master? <bjc>it takes weeks to do a core-updates merge <PotentialUser-11>ieure Are you aware of a way to get the name of the current profile (e.g. after a `guix shell -m` or `guix shell -p` , so that I can pass it to Emacs? <ieure>PotentialUser-11, The store item for the profile is in $GUIX_ENVIRONMENT. Is that what you mean by "name?" <bdunahu>bjc: So it roughly includes someone building every package and updating any packages which break? <ieure>bdunahu, The branch gets built in CI, which shows any packages which failed to build, the aggregate number built/failed, etc. <PotentialUser-11>ieure That was the closest thing I found, but is empty in the default profile. I thought I was on the wrong path. <bdunahu>ieure: okay that makes sense, thank you <ieure>PotentialUser-11, Correct, it's set by `guix shell'. The current system profile is /run/current-system/profile, and the current user profile is $HOME/.guix-profile or $HOME/.guix-home/profile <yelninei>finally found an example that crashes outside of the unittests, i hope that makes debugging easier and that it is the only one <trev>PotentialUser-11: like i said before, you can use the guix package to set the current profile of emacs <bjc>yelninei: disk space in the childhurd? <bjc>or /var/tmp on the host, i guess, assuming --snapshot <bjc>the log ending abruptly like that is weird <Guest72>Hello everyone! I use guix with no graphical environment. How can I suspend to ram (sleep)?? <Guest72>Any help would be greatly appreciated. I know how to reboot and shutdown (with the correaponding commands) <trev>Guest72: loginctl suspend <Guest72>But I dont understand why there is no suspend comand <ieure>Guest72, loginctl is part of elogind, you need to add elogind-service-type to your operating-system config. <bjc>Guest72: echo -n mem >/sys/power/state <bjc>i attached that to thepower button with acpid <ieure>Guest72, The elogind-configuration lets you configure this, ex (handle-lid-switch 'suspend) <bjc>is elogind in %base-services? <Guest72>Ok what is the difference between these two options, can anyone explain? Also why is it that the suspend command is not "innate"? And who does the shutodown, shepherd? Then why does it not do suspend as well? Apologies if the answers to all these questions are obvious <bjc>writing 'mem' to /sys/power/state is a linux kernel thing. should work anywhere, pretty much <bjc>elogind adds a bunch of extra stuff on top that's convenient/useful for people who use the computer as a workstation <ieure>Guest72, Difference is, bjc's option works for you right now, but you have to manually do it; elogind gives you close-the-lid-and-it-does-the-right-thing behavior. The suspend command is not innate because not all systems need to suspend, or support it. <Guest72>I see but in view of using hurd in the future I will go with the other suggestion <ieure>Guest72, Shepherd, I'm not sure, but my guess is that since it's PID 1 it *has* to handle shutdown, but it does not have to handle suspend/hibernate, so, it doesn't. <bdunahu>Guest72: by the way, you can do `which shutdown` and then `ls -la /path/to/shutdown` to see which package in the store is providing it <ieure>Or the simpler: ls -l $(which shutdown) <bjc>indeed. shepherd is only useful for spawning elogind or acpid, which'll do the suspend for you <Guest72>Wait what is acpid? And where does it intervene here? <bjc>acpi is a daemon that'll handle power events: <Guest72>Does it intervene here with respect to suspend? Noone mentioned it earlier <Guest72>Also, does it matter for elogind that I have no graphical interface? <bjc>no, it intervenes when things like the power button are pressed <bjc>elogind doesn't need a gui <bjc>you should just be able to add it to %base-services <bdunahu>ieure: now how do you do that with eshell? <Guest72>Why eshell? And also acpi you say its for when power button is pressed but guix manual says that elogindtakes care of that <ieure>bdunahu, Not an eshells user, but it should work the same way. <ieure>Guest72, There's more than one way to do things. <bjc>iirc eshell substitution is {cmd} rather than $(cmd) <bdunahu>it's trying to evaluate (which ...) as an elisp expression I think <ieure>I thought you were talking about `guix-set-current-profile', not the ls -l $(which ...) <trev>does elogind even work on Hurd? <ieure>trev, No idea. Hurd still seems very buggy and incomplete. <bjc>elogind does not work on the hurd <bjc>hmm. new guix still crashes on pull without stderr redirection <bjc>yelninei: ah, i thought that was merged already. i was just about to go check <bjc>oh, wait. different patch <yelninei>the downside is that this will leak memory but at least prevents the gc from cleaning up the callbacks <bjc>i'm giving this vm 8gb, so i think the memory leak'll be fine <bjc>i'm confused why weak refs work on linux but not on hurd <graywolf>civodul: regarding 7424 , maybe you have overlooked my email, I am pretty sure the warning is not displayed for `guix system build' because the current-warning-port does not lead to the terminal <graywolf>That is the only difference between `guix repl' and `guix system build' I was able to find that could be relevant here <bjc>hmm. if i'm reading that stack trace right, it's crashing while it's trying to print stuff out in the progress callback <bjc>inside 'progress-bar' from the looks of it, since it's trying to write "966562\0" <bjc>…which causes the malloc, which causes the finalizer to run, which causes the crash. so the ptr was lost some time before this call, just not yet collected