IRC channel logs
2024-12-29.log
back to list of logs
<homo>graywolf "sudo guix gc --delete-generations", however every time I get unbound variable error, nothing is corrupted in store, it means I mistyped variable, forgot to define it or forgot to import some module <homo>the problem is this error message is so unclear you cannot know which variable is unbound <graywolf>The problem is that the corrupted entry in in use <graywolf>When I try to delete it I get: cannot delete path `/gnu/store/miwzsy04b4ryvr2y1hqghixi2riz4v0n-grub-locales' since it is still alive <graywolf>home: guix gc --verify=contents tells me the entry is corrupted though <homo>alright, I am not familiar with dealing with that part, I'm new to guix and use it month already <meaty>I want to use a session manager other than GDM. However, despite not using %desktop-services, GDM is still used. How can I find what in my config is responsible for using the gdm service? <cancername>you could use modify-services to remove gdm, but I unfortunately don't know how to find that out <meaty>sailorCat: Actually, it seems like gdm-service-type isn't even running? I have its filesystem service running but not the thing itself <meaty>Does anyone have any example configs of using a non-gdm session manager? <homo>meaty: this is confusing, but the reason gdm is used is because "set-xorg-configuration" uses gdm on x86_64 and sddm on other arches <homo>so the short answer is remove set-xorg-configuration from your config <lilyp>set-xorg-configuration was a mistake <cancername>what should I replace local-file/plain-file/whatever with in home-files-service-type? I tried url-fetch from (guix download) which gave me a type error and url-fetch from (guix build download) downloads to a fixed path instead of to the store. <cancername>to download a url with a known hash to the store* <meaty>homo: so if I'm using wayland I just remove that entry entirely and insert the session mgr service of my choice, and it will "just work"? <homo>and if you decide to use %desktop-services, don't forget to remove gdm-service-type from the list <homo>one of the reasons to prefer %desktop-services is because they setup elogind, pulseaudio and networkmanager <graywolf>Maybe a stupid question, but if I want to have a shepherd service that is just a setup/teardown script, I cannot use one-shot? (since I need a stop action). Should I just set (respawn? #f)? Are there any downsides I am missing? <homo>graywolf pulseaudio-service-type from gnu/services/sound.scm might be an example how to do that <Googulator>gcc-4.9 builds fine during bootstrapping even in the affected revisions; it's only when we try to build a final, non-bootstrap gcc-4.9 that the issue appears <lilyp>pulseaudio-service-type has no shepherd service iiuc <lilyp>graywolf: what's the use case here? would two separate one-shot services foot the bill? would a one-shot service with multiple actions? <graywolf>lilyp: #:start will create a network namespace, some interface and move them into the netns. #:stop should clean that up. <graywolf>freakingpenguin: Hm right. So the idea is to not use make-forkexec-constructor, and instead just return some constant intead of <process> record. <graywolf>So basically I need to switch to system* instead of make-forkexec-... . I can work with that, thanks for the nudge. <graywolf>lilyp: Reason why I want to use the #:start and #:stop instead of separate action or two services it to get `herd restart' working. It seems handy. <cancername>I apologize for the repeated question, but is there a better way to get a file-like object for an URL than to make a dummy package for it? <singpolyma>I use sources directly as inputs sometimes for example <cancername>thanks for your help singpolyma, unmush`! when I tried to evaluate (source ...), it gave #f, but just (origin ...) produces a file-like object ^_^ <meaty>anyone know why some bluetooth audio devices like to thrash back and forth dis/connecting? <meaty>I suspect it's something to do with the session manager and the wayland compositor fighting over it but I have no way of knowing... is there some way I can "observe" what's actually going on <cancername>meaty: since bluez uses D-Bus, you might be able to use dbus-monitor. <oriansj>the_tubular: a little slow and some packages are broken. <the_tubular>How many packages? I'm planning on deploying guix on Graviton <oriansj>the_tubular: well if you are expecting gnome desktop; enough to be a problem but if you are doing a server, not enough to break the basics. <oriansj>you'll be fine (until something new breaks) but the package maintainers don't tend to test on ARM. <the_tubular>And is there a way to limit the size of /gnu/store ? <the_tubular>I don't fully understand why it takes a lot more space than a regular distro, with only 1 user, and barely no packages <the_tubular>I don't have a lot of packages install and : du reports : 78G /gnu/ <oriansj>the_tubular: because you have all of the build dependencies too <the_tubular>Or can I mount /gnu/store so multiple machines refers to the same store ? <oriansj>the_tubular: well, you'll run into the fact that all "installed" packages are just links to files in /gnu/store <oriansj>and how would you mount that path without any installed programs or a kernel? <oriansj>the_tubular: guix gc should shrink that number a good bit <homo>without sudo it won't touth packages rooted by other others <the_tubular>Haa I think I have %desktop-services in my system.scm on this machine <homo>8,330.89 MiBs is not 80 GB <homo>you need sudo guix system delete-generations <the_tubular>Ohh let me try that, is there a switch to keep only the 5 last one ? <homo>you want 5 last generations? <homo>you will need to know their age <homo>"sudo guix system delete-generations 2m" will delete all generations older than 2 months <homo>still, 78G for 400 generations is surprisingly light <the_tubular>I guess I also need to run it without sudo correct ? <homo>not like you will notice any different unless other users have their own generations <homo>so if you want to delete generations for other users, you will need "sudo guix gc --delete-generations=2m" which will remove all users' generations older than 2 months <homo>I have only 1 generation and it takes 17GB, how comes your 400 generations took 78GB? <homo>it's funny when math goes so wrong <homo>maybe it makes sense if there are a lot of small files, like "echo hello world > hello && du -h hello" will show 4.0K, even though "hello world\n" is 12 bytes long <homo>which means when it says how much space is freed, it doesn't count sizes of blocks <homo>and "du -h" is silly enough to sum up blocks <homo>yeah, and it summarized extra 16 GB of empty blocks <homo>4 000 000 files * 4K blocks = 16GB <homo>what number do you get by running "find /gnu/store | wc -l"? <homo>yeah, block sizes betrayed your math <the_tubular>What would be a better way of knowing how big my store is ? <homo>but those blocks are occupied for real, you literally have 60GB occupied by store <homo>when guix told you that almost 33 GB are freed, it didn't calculate block sizes, only how long they are inside <homo>searching tells that MB means megabyte and MiB means megabit <homo>so, 32 000 MiB / 8 = 4 000 MB = 4 GB <homo>but that again gives inconsistent math <homo>what happenned, why I get https error running git pull <homo>"$ git pull" gives "git: 'remote-https' is not a git command. See 'git --help'. fatal: remote helper 'https' aborted session" <homo>I solved this problem differently: "guix pull", "guix shell git", "git pull" <homo>git on official guix repo yes <homo>just now I have learnt why plan9 and inferno fonts don't have source - "9 man tweak" <homo>they were most likely painted with that tool, so they are in their source form <unmush`>homo: MiB = "mebibyte", it exists because the physical sciences people kept getting annoyed that the computer scientests would use "kilo" to mean 1024 and "mega" to mean 1024^2. So 1 MiB = 1024 KiB = 2^10 KiB = 2^10 * 2^10 bytes <unmush`>"megabit" is written Mb, and "mebibit" (if anyone ever used it) would be written Mib <cancername>surely, this is a really bad way of doing this? (define (file->path file) (lowered-gexp-sexp (run-with-store (open-connection) (lower-gexp #~#$file)))) <unmush`>what does (with-store store (run-with-store store (lower file))) do for you? <unmush`>that will get you the output path that will exist once the derivation is built <homo>is there example config for guix home that appends custom bin directory to PATH? <meaty>Does anyone else use SDDM in wayland mode? I'm having issues getting it to work <meaty>i would like a config example <meaty>Actually, there seems to be an issue: /var/log/sddm.log says "The theme at "/run/current-system/profile/share/sddm/themes/maldives" requires missing "/gnu/store/1pvjn3hqlzdqvq757667p2gghzkmqpgk-sddm-0.21.0/bin/sddm-greeter" . Using fallback theme." However, that store directory instead contains ...sddm.../bin/sddm-greeter-qt6 <meaty>It also says "Failed to take control of "/dev/tty1" ("root"): Operation not permitted" <homo>because tty1 is occupied <homo>by default sddm-service-type uses tty7 <homo>also in sddm-configuration you need to set display-server to "wayland" <meaty>I'm going to try using sddm-qt5, that has the correctly named greeter binary <meaty>ok am back. It's still broken, the first error is gone but it still complains about not being able to take VT1 <homo>set-xorg-configuration must be removed as it assumes you use gdm <meaty>I'll try adding an xorg config to the service settings, maybe that does something <meaty>there's also a mention of PAM in the logs... let me paste it <homo>minimum-vt variable is a trap <homo>reading gnu/services/sddm.scm minimum-vt is not used on wayland <meaty>This is just three seconds of it, it repeats this cycle very fast <homo>this is the trouble - it doesn't use minimum-vt for wayland, so it tries to capture tty1 <homo>I don't know enough of guile to delete mingetty-service-type that sits on tty1, this is why it is dirty - you won't be able to use any vt other than tty1 <meaty>or-- what if I just inserted a newline into an argument to the 'sessions-directory' command and got the line in that way <homo>ideally you would clone guix repo, modify gnu/services/sddm.scm and then user pre-inst-env guix system reconfigure <meaty>true, or just send in a patch <homo>I'm not familiar with how to configure sddm as I use gdm and gnome <meaty>well im about to try my first idea, if that works I'll just fix it and send a patch <homo>is this patch good enough? <homo>I just checked man page for sddm.conf <homo>sddm doesn't have minimum vt for wayland <cancername>hmmm.... this takes an eternity, then returns a nonexistant path: (use-modules (guix gexp) (guix packages) (guix) (gnu packages video)) (define (file->path file) (derivation->output-path (with-store store (run-with-store store (lower-object file))))) (display (file->path mpv)). wat. could you help with any ideas, unmush`? <meaty>homo: I just found out myself too, my way didn't work <unmush`>cancername: yes, that is the result I described: the output path that will exist once the derivation is built <homo>meaty try temporarily deleting mingetty-service-type and see if that works <homo>like I showed in dirty hack above <unmush`>nope, to my knowledge all that should be required is interning a bunch of derivtaions into the store <unmush`>how long does 'guix build --derivations --dry-run --no-grafts mpv' take? <unmush`>and does file->path take the same amount of time on subsequent runs? <cancername>oops, those included other stuff, actual runtime is more like 2s <cancername>yes, it takes the same amount of time on subsequent runs <cancername>'guix build --derivations --dry-run --no-grafts mpv' takes a bit longer, about 6s <unmush`>are these subsequent runs in different processes, or evaluating file->path once again in the same process? <meaty>homo: well, doing that also requires removing the console font service, which leads to "guix system: error: error parsing derivation `/gnu/store/mbcdjqhw3pv9mhwdhq5qhgx5klpxf1zz-activate.scm.drv': expected string `Derive(['" <unmush`>the issue is that a pretty big chunk of the derivation graph is transitively referenced by mpv, so even though you're only asking for one derivation, under the hood it needs to compute probably thousands <unmush`>of course, within a single guix process, this is cached <unmush`>although IIRC that cache might be associated with the store used <unmush`>which is why it's usually good to, if you're going to be using store connections, define it somewhere once and reuse that everywhere <homo>meaty oh, it is much more difficult than with greetd, in that case you need to figure out how to remove mingetty only from tty1 <cancername>hm, are 'guix build' and '(file->path)' supposed to give different paths? <unmush`>I imagine they would give different paths depending on whether grafts are used <unmush`>could it be that the mpv being selected by the (specification->package ...) that 'guix build' implicitly uses is different from the one bound to the symbol 'mpv'? <homo>is there example config for guix home that appends custom bin directory to PATH? I want plan9port's plan9/bin to be at the end of PATH, not beginning, so that I don't get errors when most software expects posix or even gnu utils <Ironsmith>hello, i have a patch i sent in not too long ago but it's gone through a few revisions and now i have another patch that depends on it. should i close the first patch and create a new one with the both patches in the [PATCH 0/2], [PATCH 1/2], [PATCH 2/2] format? or what's the best thing to do in this case? the first patch in question is <Rutherther>Ironsmith: no, it's better to send it to the same issue. You can use -v2 parameter when generating the emails, it will put v2 in subject: [PATCH v 2 0/2]..., the CI and people who would be merging it understand that <bdju>does guix system have anything like `systemd-analyze` for checking how long booting took? <robin>homo, are you trying to use the home-environment-variables service or similar for it? or just looking for the right incantation to add to the bash profile <csantosb>Following with the new guix organization under codeberg, https://codeberg.org/guix, would it be a good idea to create a single point for all things guix channels (if it doesn't exist already) ? Some kind of index or similar for new users. <yarl>Does anybody know how I can remove the "quiet" kernel argument from my operating-system configuration please? <msavoritias>command "cargo" "package" "--no-metadata" "--no-verify" failed with status 101 <cluelessguixer>My wireguard on the outside of a shell container didn't pan out (iptables routing is annoying), so now I'm considering guix system container. I don't suppose there's a quick way to create a minimal image config like with "guix home import"? <luca>afaik no, but the installer will make a config for you <cluelessguixer>"(use-service-modules networking)" isn't enough? "guix system: error: service 'wireguard-wg0' requires 'networking', which is not provided by any service". It's a dry run if it matters. <gabber>cluelessguixer: (use-service-modules) only imports the module, it doesn't insert it into your configuration <gabber>if you are extending %base-services or %desktop-services i think networking is already provided <cluelessguixer>There is "(services (cons* (service wireg...) %base-services))". Trying to compare with my system's config I can't see anything... except "(modify-services %desktop-services...". <gabber>i must have misremembered, then (: <gabber>have a look at 11.10.4 "Networking Setup" in the manual <gabber>depending on your use-case it may suffice to simply add a dhcp-client-service-type to your configuration <cluelessguixer>Hmm... C-z just immediately stops the container and drops you back to the shell. <yarl>When using offload, if you want to build on the client too, do you need to specify it as a machine? <yarl>I mean, do I need to add "localhost"? <cluelessguixer>I see. "bg" was a command when dropped back into the shell. Neat. <nested-virtio-vi>Hi all. I am running guix in a VM with Wayland/sway as WM. If I use virtio instead of qxl as display driver then the system often hangs for several seconds. Is this somewhat of a known issue? <cluelessguixer>It seems dhcp-client-service-type wasn't enough. Although I got the container up and running, the networking service fails to start. I only have a loopback interface. How to you give a system container internet access? <yarl>cluelessguixer: 11.16 Invoking ‘guix system’ : --network ? <cluelessguixer>yarl: Much appreciated! Didn't need the dhcp-client-service-type with that. <dariqq>ekaitz: Re g-golf from friday: I think you were right with issues when 2 different glibs are present. g-golf gets grafted to a different glib than the normal grafted (hidden) glib package. If I manually adjust the PKG_CONFIG_PATH to point to the glib that g-golf is using and link with that things magically start working again <ekaitz>dariqq: glad to see that it works! <dariqq>This issue seems to be caused by glib having multiple outputs and one graft just grafts the out output and the other one all of them. Which I think is very weird <jas>hi! sorry for really newbie question: are the substitution servers doing anything but serving static https files to serve 'guix install FOO'? i.e., can i setup a mirror using rsync of a mirror and apached? <jas>i'm seeing this usage of a 'guix install FOO' session: real 9m48.280s, user 0m45.984s -- so i assume most of it is stuck in network I/O <cluelessguixer>Man, I guess wireguard won't work inside a system container either... Could it be due to the --network option? "For the container action, allow containers to access the host network, that is, do not create a network namespace." <efraim>luca: you might need to patch the _which function in the configure script, or try adding which to the native-inputs <luca>fun. Thanks for the tip! <Rutherther>it seems that in upstream they already tried to solve the unnecessary dependency on which by moving to command, but the version 0.59.2 still doesn't have that <homo>robin either one, I simply need example how others set up PATH in home config <fnat>A friend seems to be having this problem where he installs Guix system with guix system init /mnt, then reboots and he gets an error "populating /etc from /gnu/store/... in procedure symlink: File exists". <fnat>Any idea what could be causing this? <luca>Is there an equivalent to /var on guix? For "localstatedir" (like where packages' database is stored and what not) <luca>Actually probably %output/var <Rutherther>luca: it can't be %output/var as the store is immutable, so it doesn't have any state <Rutherther>system-wide state is usually kept in /var even on guix system <dariqq>luca: It is usually /var (see eg the guix package) . You might need to adjust the variable for install phase . #$output/var wont work because that is readonly . <luca>Can packages put something in /var? <Rutherther>if you mean during build, no, builds output only to the store <robin>homo, for appending, export PATH="$PATH${PATH:+:}/path/to/plan9/bin" should do it (the :+: expansion handles the improbable case where PATH is undefined) <robin>(can duplicate PATH entries in nested shells but that's harmless unless you do very deep nesting) <homo>bash scripting in home config? <homo>never mind, this is what I was trying to avoid, I wanted to declare PATH in .scm file <Rutherther>homo: if you wanted to set the env var in a scm file, you would need to start your shell from that file. But you don't have control over that from guix home (unless you launched a second sub shell every time in your normal shell). Otherwise you need to use ways to change environment of the shell the shell gives you - sourcing. And at that point, you use regular bash <homo>hm, I noticed there are packages which define their own env variables after installation, but I didn't notice any that define PATH <Rutherther>every profile has PATH export call to its bin and sbin folders (if they exist) <homo>search paths doesn't include ~/guix-home/profile/plan9/bin <Rutherther>I don't know what you mean by that. Search paths include whatever the one writing a package wants them to include <Rutherther>so a search path can of course contain plan9/bin, though it's better practice to tell the package to output to bin folder rather than a custom one <homo>that's not an option, there is name confict with gnu coreutils, they are incompatible <homo>Rutherther the problem is plan9port package installs in bin script "9" which sets plan9/bin to the beginning of the PATH, so when I develop with acme ide, I get a lot of errors because existing software expects behavior of gnu coreutils, not plan9 userspace, however on other distros where plan9/bin is by default set to the end of PATH, there are no errors <homo>according to documentation, search paths are valid only when package is being built, they are not valid when package is already installed <Rutherther>I don't know what you mean by valid. Search paths are important, and included, both when building and when installed <Rutherther>that is how python packages, emacs packages, guile packages etc. even work, without search paths they don't <homo>that's not what documentation says <homo>also I grepped packages for GST_PLUGIN_PATH, it is not set after install by any package <homo>so I can't even use another variable as example <Rutherther>because you probably didn't understand what I said earlier <Rutherther>you can't change environment of a running process, so just guix install is not going to give you any env vars <Rutherther>you need the shell to source a script, only then env vars are added <Rutherther>this is done automatically on login. Or you can do it manually <Rutherther>so after adding any packages that will provide you with a new env var (from a search path) you need to either source manually or relog <bobsuncle>Hey all, I'm having issues setting up a system with LVM on LUKS. I'm prompted for a LUKS passphrase on boot and the partition is unlocked, but when selecting an item from the menu I get the error `no such device: /store/rg...-linux-libre-6.19.9/bzImage`. <homo>then why "guix shell v4l-utils --pure --search-paths" doesn't print export INCLUDE path? <bobsuncle>It seems that GRUB is not mounting the LVM partitions needed for booting, so it can't find the kernel or initrd. <bobsuncle>This looks like the same issue described here: https://issues.guix.gnu.org/62140 Indeed I confirmed that adding `insmod lvm` manually to the GRUB entry boots the system, but I'm wondering if there's a proper fix for it. <Rutherther>homo: v4l-utils doesn't have any search paths defined (apart from the regular PATH every package has) <civodul>whereiseveryone: nobody’s working on antioxidant, AFAIK <Rutherther>bobsuncle: I don't think there is currently really a proper fix for it, I had the same issue and just went with luks without lvm, since I didn't need lvm at all <Rutherther>bobsuncle: as a workaround if you want lvm it would be possible to sneak in insmod lvm into the grub config, it's not that hard. If you want I can give you the code for that <bobsuncle>Rutherther: Cheers, I'd appreciate that. Just out of curiosity: how would you sub-partition the LUKS partition without LVM? Or you just use a single partition? <bobsuncle>I see other approaches using btrfs, but I really don't want to use that. <Rutherther>bobsuncle: yeah, I use just one partition, never can decide how to split well, so I don't :D <bobsuncle>Rutherther: Ah, I find LVM super convenient and flexible. It's nice to be able to easily resize partitions if needed, and I couldn't live without partitions. I don't want something writing to e.g. /tmp filling up my disk :) Or /gnu/store now with Guix. <homo>Rutherther ok, same problem with search path, I made this little patch https://paste.debian.net/1341709/ and it has same problem as script "9" installed by same package - plan9/bin is set to the beginning of PATH, not end of it <Rutherther>bobsuncle: https://paste.debian.net/1341710/ you can try this. You can put it above your "(operating-system ...)" and then in your bootloader replace "grub-efi-removable-bootloader" with "grub-lvm-bootloader". Not 100 % sure it's going to work, haven't tested it yet <bobsuncle>Rutherther: Uff that's hardcore. Much appreciated! I'm still getting my feet wet with Guile and couldn't have arrived at that solution. ':) I'll give it a try now. <Rutherther>please at least verify the outgoing /boot/grub/grub.cfg that it contains what it should <bobsuncle>I'm testing all this in a VM, so no harm if it doesn't work. But sure, I'll look at grub.cfg. <Rutherther>homo: right, the order is not guaranteed with search paths, so even if it worked once I wouldn't really rely on that. If your use case is to run all programs through that 9 script eventually, then maybe it would work for you to just modify that script - so it appends instead of prepends <csantosb>Is it possible to get the list of packages in a guix module, so as to check for updates ? <homo>also I wonder if some of plan9port functionality is broken because PLAN9 variable is unset <bobsuncle>Rutherther: Dumb question, but where is `grub-lvm-bootloader` supposed to be defined? I'm getting an `unbound variable` error, which makes sense, but I'm not sure how to define it. <Rutherther>csantosb: it definitely is possible. Is "guix refresh" what you are looking for? <Rutherther>bobsuncle: put the whole thing I sent before your "(operating-system ...)" <csantosb>Rutherther: sure, but I mean, how do I pass the list of packages in a module ? <Rutherther>csantosb: read help of guix refresh. It shows you how to select one module <bobsuncle>Ah, I didn't copy the grub-lvm-bootloader definition... Sorry, dumb and sleepy. <Rutherther>bobsuncle: also "s/modified-old-entries/old-entries" in what I sent, I copied the most of it from my bootloader modification and forgot to change this <bobsuncle>Rutherther: Yeah, I did that, and had to also import `(guix utils)`. It's building now... <bobsuncle>Rutherther: grub.cfg looks good, FWICT. Same as before, just with `insmod lvm` on top. Nice! Let me try booting... <bobsuncle>Rutherther: Cheers, it boots now! Or at least it loads the kernel and initrd. Something is not right during boot though, but I have a separate issue with garbled text in QEMU, so can't really troubleshoot it now. `nomodeset` doesn't fix it, but I'll look into this tomorrow. <bobsuncle>Thank you very much for the help! Have you considered posting this somewhere in the Guix documentation? That snippet would be very useful for many people, since I think LVM on LUKS is a very common setup. <zeropoint>just when I was looking for how to denote a specific machine to deploy using guix deploy, noticed that an --expression flag has been added... nice :)