IRC channel logs

2022-12-16.log

back to list of logs

<mekeor[m]>rekado: thanks for explaining :)
<KarlJoad>Does Guix have a way to diff two closures?
<KarlJoad>Specifically, I want to compare 2 operating-system configurations to see what I changed.
<rekado>KarlJoad: best you can do, I think, is to diff the derivations, but this may be too noisy
<KarlJoad>Dang. That would be kind of a nice thing to have, especially when refactoring configurations.
<kaelyn>Friendly reminder of a core-updates patch: https://issues.guix.gnu.org/59453 for fixing the Vulkan layer manifests (and fixing https://issues.guix.gnu.org/58251)
<nckx>ACTION 😴💤 but KarlJoad: I use (diff) their ‘guix size’. Works well enough!
<KarlJoad>nckx: Thanks for the idea!
<graywolf>Hi :) How exactly is one supposed to call vgcreate on the installation media? It does not seem to be in the path. My current "solution" is "/gnu/store/*-lvm2-s*/sbin/vgcreate", which let's be honest, does not seem like the optimal way.
<graywolf>Can I somehow call it using the guix tool? Or just add it to the path?
<KarlJoad>graywolf: You can just guix install the package to the installation media. Anything you install there is only kept in RAM, and is cleared out upon rebooting and will not be present on the installed system.
<KarlJoad>That should add the relevant directories into a location $PATH will find them easily.
<graywolf>I've tried the guix install, (it seems to actually download something, not sure why since that package is already present locally in /gnu/store), but it was still not in path. So I assume I'm missing something.
<oat>Why Guix decided to not included wpa_supplicant and iwd on the %base-package variable?
<KarlJoad>graywolf: If it is already present, then I cannot say why it is not already found through $PATH.
<jgart[m]>oat: cuz guix is g-angsta like that
<oat>jgart[m]: what does mean g-angsta? Could you give me a context?
<apteryx>what a tragedy: phase `build' failed after 21696.5 seconds
<apteryx>ld: ../lib/libinkscape_base.so: final close failed: No space left on device
<apteryx>thanks to /tmp on tmpfs
<apteryx>systemctl disable tmp.mount prevented that for the future, on that systemd machine
<Humanoid>When building a custom kernel, manually, where can I get a list of options needed for guix to run well?
<Humanoid>I found out from a bug report that CONFIG_DEVPTS_MULTIPLE_INSTANCES is needed. I wonder what else I am missing.
<KarlJoad>I am trying to run a "guix pull" and I keep running into the same issue on MY channel. "(exception keyword-argument-error (value #f) (value "Invalid keyword") (value ()) (value ("6.0.12")))". This happens with commits that previously used to work.
<KarlJoad>I am also trying with commits that I made several months ago, and the problem is still happening.
<KarlJoad>Humanoid: I use the kernel-config that Guix uses by default and add my own options. It is hidden away in (gnu packages linux).
<guixer>Humanoid did you check how the guix kernel is built with this command: guix edit linux-libre
<Humanoid>Ok, I see a lot of options in linux.scm. This is very helpful!
<Humanoid>It seems to be missing the option mentioned here: https://issues.guix.gnu.org/22053
<Humanoid>Is there a way to print out that resulting config file that is built in linux.scm?
<Humanoid>KarlJoad, How do you get the .config out of it to then add your own options?
<KarlJoad>Humanoid: If you need to see some code about how to get the default configs in there and add your own, I can DM you. The config I use for that is not very FSF-friendly.
<apteryx>Humanoid: also, you can get the .config of the kernel in the guix repo
<oriansj>graywolf: the most fault tolerant method is as follows: make a 1GB partition; mount it on /mnt, herd start cow-store /mnt/ ; then guix install your desired package; You can clean up the partitions after
<apteryx>e.g. gnu/packages/aux-files/linux-libre/6.0-x86_64.conf
<Humanoid>I installed linux-libre into a separate profile, and I see the .config file is in there next to the bzImage.
<Humanoid>The default .config is over 10k lines long. The linux kernel is so complicated.
<Humanoid>I hope one day we can all run a simpler microkernel based os like Hurd.
<oriansj>Humanoid: just because the individual pieces are smaller, that does not mean the collective whole is simpler.
<jgart[m]>Why is "out" set to "www"?
<Humanoid>oriansj, true.
<jgart[m]>ignore above
<oriansj>Humanoid: and honestly if there was a cheap, simple and portable way to isolate builds, then guix wouldn't need to be so tied to Linux
<apteryx>ACTION thought microkernels provided process isolation out of the box
<apteryx>ACTION afk
<oriansj>apteryx: some microkernels don't even provide basic memory management
<Humanoid>When I use the "--container" option with "guix shell" it fails with an error about not having permission to mount /proc. How do I give guix permission to mount /proc in the container?
<Gooberpatrol66>i wonder if it's possible to treat linux modules as individual packages
<Gooberpatrol66>like in gentoo packages check if the kernel modules they need are enabled
<Gooberpatrol66>so maybe you could do a thing where packages install the modules they need as dependencies
<unmatched-paren>morning guix :)
<unmatched-paren>Gooberpatrol66: that would violate guix's principles
<Gooberpatrol66>as in like an ethical principle?
<Humanoid>I think it should be possible to put linux kernel modules into individual guix packages. Most distributions do that.
<unmatched-paren>Gooberpatrol66: no, it would violate the fundumental principles of functional package management
<unmatched-paren>at least i'm pretty sure it would
<Humanoid>It's just a package with a bunch of .ko files;
<unmatched-paren>Humanoid: we do have linux module packages
<unmatched-paren>but to install them you *need* to use a service
<florhizome[m]><kaelyn> "Friendly reminder of a core-..." <- Oh i noticed some problems
<jas>hi. i just tried 1.4rc2 on my laptop and everything installed fine (kudos!), however guix system reconfigure complains about a commit is not a descendant of a hash, should I use --allow-downgrades, or what's the recommended solution?
<rekado>jas: before 1.4.0 is merged into the “master” branch none of the commits on “master” will appear to be descendants of 1.4.0.
<rekado>this is the downgrade protection kicking in.
<jas>ok. i tried 'guix pull --branch=version-1.4.0' but still get the same error
<civodul>Hello Guix!
<sneek>civodul, you have 1 message!
<sneek>civodul, ArneBab says: thank you!
<civodul>jas: hi! in the meantime 'version-1.4.0' was merged into master, so you should be able to reconfigure to current master
<civodul>(that was a couple of days ago)
<jas>thanks -- i did the system installation just minutes ago. 'guix pull --branch=master' followed by 'guix system reconfigure /etc/config.scm' fails with the error. should i use --allow-downgrades?
<civodul>hmm could you paste the entire message?
<civodul>--allow-downgrades is akin to --without-security, so use with care :-)
<civodul>(we should tweak the hint that suggests using --allow-downgrades without warning about the risks)
<jas>i lost the message, sorry -- however I added --allow-downgrades and it worked fine, including booting and doing 'guix pull' and another system reconfigure. so all set \o/
<sepi>Is it possible to pass some configuration to packages that would e.g. be used to generate config files to be put in the generated store directory?
<lilyp>you could wrap your package in a function, but more often than not it's better to define a service
<sepi>lilyp: ok, so the service would then create a custom package which closes upon the configuration variables defined in the service_
<lilyp>no, the service would simply write the config file
<sepi>ah, so using the activation-extension?
<sepi>lilyp: and where would the config go? Somewhere not in the store?
<lilyp>it would go in the store
<sepi>Oh, so the config file is not a package but can still be a built derivation?
<sepi>but then I would need to modify my package so that it points to this newly generated config file since it wont be in its usual location relative to the code (it's a php application)
<rekado>sepi: yes. Often we do that through environment variables.
<rekado>patch the application to respect an environment variable and then at runtime set that variable to the location of the config file.
<jas>i realized installing guix killed my GRUB boot menu item for Trisquel -- it would be nice for it to auto-detect other OSs and setup GRUB menu items for them
<rekado>jas: the manual has some documentation about extra entries for oter distros
<sepi>rekado: makes sense. I'll see if I can implement it that way (I'm a bit sceptical if a php application/wordpress can do this).
<jas>does anyone have a good recipe for a bootloader menu for trisquel? i read https://guix.gnu.org/en/manual/devel/en/guix.html#Bootloader-Configuration but I'm not sure it is uptodate with modern EFI booting of other OSes
<rekado>in 12.14 Bootloader Configuration
<sepi>One maybe stupid question remains: How do I trigger a derivation like the config file to be built?
<rekado>sepi: I don’t have enough context but when you use a gexp for a plain-file or computed-file inside your service it will be built automatically as the service is computed.
<sepi>ok, so whenever a gexp is "encountered" during evaluation it leads to a derivation being built
<reza[m]>In my own channel I want to use a build system which is defined in another channel, how can I achieve this?
<rekado>reza[m]: add the channel as a dependency in .guix-channel
<reza[m]>rekado: where is `.gui-channel` located?
<reza[m]>s/gui/guix/
<civodul>reza[m]: check out https://guix.gnu.org/manual/en/html_node/Declaring-Channel-Dependencies.html
<reza[m]>civodul: oh there is even documentation available! Thanks very much
<civodul>yup, there's even documentation, all without extra fees! :-)
<reza[m]>I was wondering what to search for...
<civodul>that's in the chapter on channels
<reza[m]>Is guix shell starting a bash login shell interactively?
<reza[m]>or can I expect guix shell to use BASH_ENV?: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html
<M0rc0[m]>Can I ask a few novice questions here, re.: GUIX and GNU in general?
<AwesomeAdam54321>M0rc0[m]: Of course
<civodul>reza[m]: 'guix shell' starts an interactive non-login shell
<civodul>'guix shell pkg1 pkg2 ... -- some command' does not start a shell at all
<civodul>cbaines: i'm looking at https://issues.guix.gnu.org/59784, specifically in (gnu installer final)
<civodul>sqlite question...
<civodul>there we stop the daemon, create a backup of /var/guix/db/db.sqlite, and restore it later
<civodul>however there are these two other files: db.sqlite-{shm,wal}
<civodul>we don't touch these
<civodul>is it safe to ignore these two files and assume that we can backup/restore db.sqlite alone?
<cbaines>I'm not sure, I think it depends
<cbaines>the WAL file is temporary, but only if it's empty. Otherwise it contains data that hasn't yet been written to the main database file
<rekado>civodul: the wal file should be removed automatically when all handles are closed
<rekado>the shm file contains only an index; it would be recreated when lost
<M0rc0[m]><AwesomeAdam54321> "0rc0: Of course" <- Ok. Here goes, pls excuse my poor english.
<M0rc0[m]>After some research I am near to conclude that the only way to be totally sure of that your system is not being "monitored" is to use OS's like GUIX with no non-free software, is this assumption false or correct?
<AwesomeAdam54321>The assumption you stated is correct, although using the current Internet stack may make it easier to monitor you
<cbaines>rekado, I think this supports what rekado says https://www.sqlite.org/wal.html#the_wal_file
<M0rc0[m]>using the current Internet stack - Can pls define that?
<M0rc0[m]> * using the current Internet stack - Can you pls define that?
<M0rc0[m]> * using the current Internet stack - Can you pls define that for a layman? :)
<cbaines>I stopped my local daemon, and the files weren't there, so I guess if they're not there, then they don't need backing up or restoring
<AwesomeAdam54321>M0rc0[m]: Using the TCP/IP stack, with DNS and trusting TLS certificates by Certificate Authorities you haven't researched the backstory thereof
<cbaines>maybe this means I'm not using SQLite properly through Guile, as I'm not sure I see this behaviour in the guix-build-coordinator or qa-frontpage...
<rekado>M0rc0[m]: the use of free software does not guarantee security. These are orthogonal issues.
<M0rc0[m]>AwesomeAdam54321: I use udp. mainstream DNS due to vpn,1.1.1.1. - I know their functions, what backstory are you alluding to? Jigsaw,palantir,darpa?
<M0rc0[m]>rekado: I know that.
<civodul>rekado, cbaines: https://www.sqlite.org/tempfiles.html suggests the two files are removed *if* connections are closed properly
<civodul>i think guix-daemon doesn't care about SIGTERM/SIGINT
<M0rc0[m]>Assume for 1 sec, everything is being monitored, then my assumption still stands, no? kinda of an "if" question, but I hope you understand.
<cbaines>civodul, yeah, I tried stopping my local daemon, and the files didn't seem to be there
<civodul>but that page also says it "will be automatically cleaned up the next time the database is opened."
<AwesomeAdam54321>M0rc0[m]: The history and backstory behind each of the Certificate Authorities. For example like connections to DARPA
<civodul>but then again, my WAL file is 10 times bigger db.sqlite
<M0rc0[m]>AwesomeAdam54321: Indeed. I have yet to reach that far up the chain - But I do know where it all leads. Question then becomes, found any way around this?(exluding making your own DNS)
<civodul>so something's not working as advertised
<AwesomeAdam54321>M0rc0[m]: Using GNUnet
<rekado>free software ensures that you cannot be coerced to give up four essential freedoms for using, modifying, and changing your software.
<rekado>M0rc0[m]: it is *not* primarily concerned with privacy.
<rekado>you still have a lot of so-called firmware that has privileged access to most of your hardware.
<rekado>having said all that, Guix is a great way to actually make use of these four freedoms for all free software you can install with it.
<rekado>never before has it been so convenient to create variants of applications and libraries that are transparently built from reproducible descriptions and treated as first class packages
<M0rc0[m]><rekado> "you still have a lot of so-..." <- You thinking of "opensource" firmware from hardware manufactures? Does GUIX have a way around that too? Making their own packages for f.ex usb drivers and keyboard firmware?... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/a6238dbd7632063001627bb6fc730b081e8e3237>)
<rekado>Guix (as a project) does not use Google or Amazon services or infrastructure, nor does Guix System on your machine call out to any of their services.
<rekado>there is no way around the firmware problem; there is a lot of hardware out there, some with the ability to have the kernel upload firmware, some with read-only firmware. In most cases there does not exist any free firmware.
<M0rc0[m]>Glad to hear that! rekado AwesomeAdam54321 Thx 🪖✊
<rekado>with regards to packages it should not matter where they have been built; “guix challenge” lets you compare the results of building a package on different servers to see if there are differences you should worry about.
<rekado>you can use this tool to spot check the servers that provide package binaries
<M0rc0[m]>Oh very interesting! thx!
<M0rc0[m]>* interesting! thx! Any other "hidden gems" you want to inform me about? ;)
<M0rc0[m]>* interesting! thx! Any other "hidden gems" you want to inform me about? ;) - and if you don't mind: *with regards to packages it should not matter where they have been built* : : You mind elaborating on why it should not matter?
<AwesomeAdam54321>M0rc0[m]: It shouldn't matter because the packages should be reproducible. The recipes specify the exact inputs, instructions and build environment so the output should be the same and if not `guix challenge` will expose the differences
<AwesomeAdam54321>*bit-for-bit reproducible
<rekado>realistically, there occasionally *are* differences. But a large range of sources of non-determinism are excluded by design.
<M0rc0[m]>Ok, so it should not huge risk of the packages being tampered with no matter where they are built then..?
<rekado>if you find a package that is built not-deterministically we consider this a bug
<M0rc0[m]>* should not be huge risk
<rekado>our build farms (e.g. ci.guix.gnu.org) are not privileged in how they build packages. They use Guix just like any other user would.
<rekado>there are no maintainer package uploads, for example.
<M0rc0[m]>Ok, makes sense.
<sepi>will (mkdir-p "/etc/foo") in a gexp create a directory in the store or in the outside fs?
<M0rc0[m]>* makes sense. @rekado Where would using GPL2 over GPL3 fit into all of this, if et al?
<mirai>sepi: I think it depends where you use it
<M0rc0[m]>* makes sense. @rekado Where would using GPL2 over GPL3 fit into all of this, if et al?/assuming it doesn't since: GNU is licensed under the GNU Project's own General Public License
<M0rc0[m]>* makes sense. @rekado Where would using GPL2 over GPL3 fit into all of this, if et al?/assuming it doesn't since: GNU is licensed under the GNU Project's own General Public License - Does this make GNU/(GUIX licensed under GPL "1" ?
<mirai>sepi: as a program-file or within a activation-service definition it will create it "in the outside fs"
<M0rc0[m]>* makes sense. rekado Where would using GPL2 over GPL3 fit into all of this, if et al?/assuming it doesn't since: GNU is licensed under the GNU Project's own General Public License - Does this make GNU/(GUIX licensed under GPL "1" ?
<rekado>the source code of Guix is licensed under GPL version 3 or later.
<rekado>individual software packages provided by Guix have their own licenses
<M0rc0[m]>Ok thanks. Do you have any opinion as to why Linus Torvald "slightly disliked" moving to GPL3? If I understood him correctly he meant that GPL2 was already OK and did what it was meant to do. But I can't help but hearing a slight hint in his argument to actually allowing more non-free elements into distros.
<M0rc0[m]>* into distros. Goin OT coz im guessing there is plenty of debates re.: gpl2 vs gpl3. (?)
<M0rc0[m]>* into distros. Going OT coz im guessing there is plenty of debates re.: gpl2 vs gpl3. So i just pose this as my final Q. (?)
<rekado>I can’t speak for Linus, but the GPL is a legal hack. In order to accomplish its goals of protecting the user’s four freedoms from abuse it needs to use a lot of complicated language.
<rekado>some people dislike this complexity; some disagree on what the license considers worthy of protection; some disagree on how the license goes about defining the tools to provide this protection.
<mirai>M0rc0[m]: the reason why LT "disagreed" with GPLv3 is no mystery
<mirai>GPLv3 adds the "tivoization clause" but LT didn't think TiVo was doing anything wrong in restricting (or designing) what their hardware can load
<mirai>***/didn't think/was of the opinion that TiVo wasn't doing anything wrong
<M0rc0[m]>mirai: I know. And I sense this some sort of political quagmire. I consider Stallman and Torvald to be principled men. And it is no mystery more than I make it, sort of. Consider me "paranoid" approaching these subjects.
<M0rc0[m]>***/blocks users from running modified software on its hardware by design
<oriansj>well practical vs absolutist perspectives honestly.
<oriansj>which you see even on topics such as bootstrapping; where even the 256byte bootstrap seeds which were hand made are forbidden from savannah
<oriansj>and ended up being hosted on github for a few years because of it
<M0rc0[m]>oriansj: True. So it all ends in a philosophical choice imo, and this is where Stallman is steadfast I suppose.
<oriansj>so both can be right on their own basis but there is no absolute always correct answer
<M0rc0[m]>* I suppose. As for Torvald I can say the same, but i will say contradictory that valid arguments are coming from both "sides".
<M0rc0[m]>Yeah, you said it better :)
<oriansj>Linux solves a good many problems for us; it just added a few new ones along the way; as always the source of most problems is the consequences of solving other problems.
<M0rc0[m]>Right. wow, nevertheless I'm grateful for ALL that is GNU/Linux. Looking very much forward to try GUIX :)
<M0rc0[m]>* GUIX :) and thx guys & oriansj for filling in the blanks for me, appreciate it!
<M0rc0[m]>* GUIX :) and thx guys & oriansj for filling in the blanks for me, I appreciate it!
<nckx>oriansj: They still are, right? (https://git.savannah.nongnu.org/cgit/stage0.git/tree/.gitmodules) What's Savannah's justification for refusing them?
<oriansj>nckx: well yes, one of the root copies are still on github (the main I update is on sourcehut) but ideally everyone would be free to choose their own root binaries.
<oriansj>and the short version is no binaries would be accepted
<oriansj>also my proposal to make the bootstrap-seeds a gnu project was also ignored, so eh
<sepi>Sorry to bother you again but I still can't figure out how to configure my wordpress service. I'm using the activation-service extension to write a config file into the store using plain-file. The file would later be referenced from the wordpress package from an environment variable. Is this a valid approach? I'd prefer to not have the config outside the store since I would like to run many wordpress service
<sepi>instances. When I try to reconfigure my system using my current approach I get an error telling me that my wp-config.php is an unbound variable. I only refer to this as a string in the call to plain-file.
<rekado>can you share your code?
<oriansj>(guix config)
<sepi>rekado: https://paste.debian.net/1264276/
<mirai>escape the " characters
<mirai>you can copy this file to "wp-config.php" <<<<<<<<<<<<<<<<<<<
<sepi>mirai: urgh, that's a stupid omission on my side
<sepi>I was sure it was the argument being the problem :D
<sepi>So now the reconfiguration goes through but I cant find anything /gnu/store/*wp-config.php*. Is that because I don't use the returned value in any other derivation?
<reza[m]>when adding a channel to my `.guix-channel` file I get the error `(exception unbound-variable (value #f) (value "Unbound variable: ~S") (value (gnu-build-system)) (value #f))` why is this?
<rekado>depends on the contents of your channel
<sepi>rekado: you were talking earlier about setting environment variables to pass a config file path to a service at runtime. How would I go about doing this? Also is there a way to verify if I was successful with setting that variable? Unfortunately I can't seem to find anything on this topic in the docs
<sepi>I also just noticed that passing stuff via environment to a PHP application is probably not so simple. The vars would need to be defined in php-fpm's environment
<rekado>sepi: what I had in mind was patching the PHP application’s source code to refer to a config file via environment variable.
<reza[m]><rekado> "depends on the contents of..." <- but is `gnu-build-system` not a variable from the `guix` module?
<rekado>reza[m]: it’s defined in (guix build-system gnu)
<reza[m]>So do I have missing module?
<rekado>I can’t see your code, so I can’t tell
<sepi>rekado: I see what you mean. But how would you make sure that the php interpreter gets the variable set in its environment?
<reza[m]>rekado: It was a missing module, sorry for the noise
<mekeor[m]>has it ever been discussed to write a guile/scheme function which can be used in a manifest.scm in order to import all emacs-* packages used in a init.el file, given by path? like (append (get-packages-from-emacs-init "~/.emacs.d/init.el") (specification->manifest (list "foo")))
<rekado>sepi: good question. I don’t know. That’s probably because I don’t know anything about PHP.
<rekado>I forgot that you have php-fpm running independently of the application itself.
<nij->Hello :) I understand that guix can handle multiple different versions of libraries in the file system, and let the user easily create the environment they like.
<sepi>rekado: hehe, don't worry. I'm now trying to pass env vars to php-fpm by modifying the php-fpm shepherd service to have #:environment-variables set in make-forkexec-constructor. Somehow the environemnt doesnt seem to be applied. I checked reading /proc/$PID/environ
<nij->However, when dealing with a specific runtime (e.g. python), there's still a problem that multiple versions of the 'same' module cannot be loaded coherently.
<nij->My question is, how do guix people deal with diamond conflicts?
<nckx>nij-: How does Python itself handle this?
<nij->I think they just pour in human efforts to make sure python libs/packages don't conflict.
<nij->They specify which versions of A can depend on which versions of B, for each A and B.
<nij->And they can compute from the requirement of (package . versions) the correct ((package . version)) to fetch.
<nij->But no, they cannot load multiple versions of the same A into the same python image.
<nij->(At least not coherently.)
<nckx>Interesting. So the same Python process/environment might get a different version of package P loaded into it at run time, computed based on whether that environment also has packages A (works with P1, P2) & B (works with P1, P3) or A & C (works with P2, P3) in it? Or is it not that bad?
<nij->Not python, but tools around it (e.g. conda or virtualenv).
<nij->But what I really hope to achieve, is a lang whose runtime can afford coherently loading mixed versions of package.
<nckx>There's no way to emulate that functionally (with Guix) since there's no concept of computed requirements. You'd need explicit A-with-P1 and A-with-P2, and use each where needed.
<nckx>Yeah, that's the real fix, but it's beyond the scope of a package manager, even a broadly-scoped one like Guix.
<nckx>(that = a lang whose…)
<nij->I see. This is just a dream - but suppose all langs and runtimes we use can afford loading mixed versions of packages,
<nij->then with guix, no dependency issues will ever happen again, right?
<nckx>There will always be something (like kernel version or some other shared resource like DBs/file formats) that will spoil the dream, but it would bring it closer.
<nij->I see.
<nij->Can guix scheme loads mixed versions of the same module?
<nij->(This may involve hacking the ENV of #'eval, but just in principle, is it possible?)
<nij->s/#'eval/the function eval/g
<nckx>I would expect this to be possible but I can't really say, I've never tried to do it.
<nckx>(Guix's Scheme platform is Guile; they also have a #guile channel here by the way.)
<nckx>It'll also break down as soon as you pass incompatible data structures around, of course.
<nij->What will break down?
<nckx>Mixing multiple module versions.
<nij->Could you tell me a more concrete example of "passing incompatible data structures around"?
<nckx>I didn't have a real example in mind. Just libraries A & B (re)using some struct from C in their own structs, but being linked (packaged) against different versions of C with incompatible struct layouts.
<nij->Hmm.. I don't see why that would lead to conflict.
<nij->If A expects the data struct C:v1 uses, and if B expects the data struct B:v2, then just let them do what they are supposed to do.. what would happen?
<nij->The point, I think, is to be able to load C:v1 and C:v2 orthogonally into the scheme image, and to be referred independently.
<nckx>As long as you don't pass C:v2 to A or C:v1 to B.
<nckx>And I think that becomes likely in any sufficiently complex practice.
<nij->Oh I see. Thanks :)
<nckx>I'm just a very middling hacker though. There might be fancy modern/academic/… approaches to mitigating that with which I'm not familiar.
<nij->It's fine. I appreciate your sharings.
<apteryx>rekado: 'u-boot-documentation', coming soon
<rekado>woo!
<yarl>Hello guix!
<yarl>How do I define a package that uses itself as native input (this part I got by using this-package) and modify phase of only the native (not target, e.g. the input)?
<lechner>yarl / Hi, what are you hoping to accomplish, please?
<nckx>Uh… (package (inherit foo) (arguments (substitute-keyword-arguments (package-arguments foo) ((#:phases phases) #~(modify-phases #$phases <blah blah>
<nckx>but also wut.
<nckx>How are you not infinilooping already.
<lechner>due to stack limitations, it may not go to infinity
<nckx>Uhm, hello. uhttps://downloadmoreram.com/
<nckx>Not sure where the u came from, but it stands for ‘ultra’ now.
<lechner>sorry, i forgot about that side. that's good advice
<lechner>site
<lechner>sorry, we are being mean
<nckx>My question was sincere.
<lechner>mine too
<nckx>Oh, missed yours. Anyway. Silly, sure, but not mean.
<nckx>Not much else to do in silence :)
<lechner>It is easy to be misunderstood sometimes. Someone shy could read a mocking tone into it. Maybe it's time to make some fun of ourselves again
<lechner>Hi, is there an embedded OS like OpenWRT that is purely declarative? I tend to keep spare devices on hand, but shudder at the thought to program my firewall rules again. OpenWRT does offer a way to save settings but I do not use it often enough. I'd love to have 'guix deploy' for that use case
<yarl>lechner: cross-compilation
<yarl>lechner: related
<yarl>And yeah, looping is one of the problems.
<yarl>I don't understand ungexp-native
<nckx>yarl: You said ‘this part I got by using this-package’.
<nckx>I don't understand that bit.
<nckx>How can that work? Does it even work?
<nckx>Is it conditional?
<nckx>Etc.
<yarl>nckx: Ok, I will state clearly my problem. Look in "package Reference" for "this-package".
<yarl>So : texinfo fails to cross-build.
<itd>nckx: May I /msg you?
<nckx>yarl: Thanks. So conditional.
<nckx>itd: Sure!
<itd>Thanks. :)
<yarl>It is a problem with the checks. They use the cross-compiled info and another program (pseudotty). Well then the tests can't run on the host machine, during the build. An idea would be that texinfo have texinfo (not exactly the same) as native-input.
<yarl>Of course this texinfo-input is not cross build. And it have to install pseudotty (that is not a bin_PROGRAM, in automake) in its store directory.
<yarl>nckx: Is it clearer?
<nckx>Yes! Sorry, I was just busy with other stuff.
<nckx>So is replacing ‘this-package’ with the ‘(package (inherit …) …)’ above not an option?
<nckx>I've never tried to use this-package that… hard.
<nckx>ACTION AFK.
<mbakke>yarl: I haven't quite followed the conversation, but IIUC the answer to your original question would be to use #$@(if (%current-target-system) '() '(do-something))
<yarl>I'm gonna it. I'll be back soon :)
<yarl>it/eat
<VesselWave>Hello, I am trying to package hyprland. Hyprland modifies wlroot's files. I trying to make it safely with inherited "wlroots-hyprland". Can guix package definition download two repositories?
<pkill9>yeh VesselWave , you can add the extra repositpry as an origin directly from inaide the build procedure using a gexp, or you can add it as an input and call that
<VesselWave>There are XML files in wlroot source directory protocol/, and I convert it to H file in include/wlr/types/. But some XMLs are in hyprland directory protocols/. To make it clear
<VesselWave>pkill9: Thank you
<VesselWave> pkill9: What syntax for gexp and where to put it?
<pkill9>cant remembef, it's kinda new, i think it might be #$(origin ...)
<apteryx>I'm using a Guix linux-libre kernel with buildroot, and 'modprobe zram.ko' says: modprobe: FATAL: Module zram.ko not found in directory /lib/modules/6.0.12-arm-generic
<apteryx>even after copying the same kernel's zram.ko module under that directory. ideas?
<apteryx>ah, on Guix System we have the LINUX_MODULE_DIRECTORY environment variable
<abhicherath[m]1>It'd be nice to have some way to warn people that certain packages won't work without additional work on non guix system setups
<abhicherath[m]1>(in this category: nix docker mlocate)
<abhicherath[m]1>s/non/foreign/, s/guix/distro/, s/system//
<yarl>What is ungexp-native for?
<jpoiret>yarl: usually when you ungexp something, it is built for the gexp's target, but with this it is built for the host's
<lechner>yarl / sorry we had a little bit of fun at your expense earlier. you are doing some very advanced work
<yarl>jpoiret: I don't get it. lechner: I don't feel advanced :/, and I did not mind.
<kori>am I right in my understanding that `guix system reconfigure` expects a file that returns a single operating system declaration?
<kori>because I want to declare all my configs in one file, so that I can use that for guix deploy, but I want to know if I could have a file that just pulls the file with all the operating systems declared and just contains %my-os
<yarl>jpoiret: What do you mean by "for the gexp's target/host"?
<lechner>kori / i use 'load' in machine.scm https://codeberg.org/lechner/system-config/src/branch/history/host/lechner-desktop/machine.scm#L2
<yarl>Also, (probably a dumb question but) I don't get the difference between using assoc-ref and search-input-file. Is search-input-file just when you don't know what input it is (this statement seems odd)?
<nckx>It's so you don't _have_ to know. (assoc-ref inputs "emacs") breaks when your replace "emacs" with "emacs-next". (search-input-file inputs "bin/emacs") won't.
<yarl>nckx: Oh, I see.
<nckx>yarl: ungexp-native is to ungexp as native-inputs is to inputs. No difference when you're not cross-compiling. When you are, say building aarch64 software on x86_64, #$foo will be aarch64 and #+foo will be x86_64.
<nckx>I hope I didn't mix those up 😛
<nckx>In that example, aarch64 is the target. x86_64 is the host.
<nckx>Other tools may use different terminology, but this is Guix's.
<kori>lechner: thanks, i want to do something similar
<kori>I don't want to just naïvely (load), but i'll do something similar
<yarl>nckx: Hmm. This is not crystal clear but that's probably my amateurism with gexp. I think I kind of get it. Thank you.
<yarl>What I am trying to achieve is probably stupid after all. Crossbuilding a package fails at make check because the host can't run it, indeed. Adding the package to itself as native input only tests it natively, not "targetly", the tests have lost some of their value. That is certainly a problem for most cross-compiled packages. Moreover, I am trying to substitute* the program in the tests while it has already been te
<yarl>sted as input. What is the best choice here? 1/Completely disable the tests. 2/add the package as native input, the tests are run there and disable the "target" tests. You still get "some" of the tests value. What do you think?
<lechner>kori / please let me know what you come up with
<kori>lechner: yep
<oriansj>does anyone here have a *working* thermald config
<yarl>Well. I should pull more frequently. Ludo disabled the tests when cross building texinfo 1 week ago :'D
<KarlJoad>When pulling my personal channel from a local checkout (and using --allow-downgrades), I am getting an error. "(exception keyword-argument-error (value #f) (value "Invalid keyword") (value ()) (value ("6.0.12")))" Has anyone seen this one before?
<KarlJoad>The same error happens regardless of which commit I use. Even if it is the same one as is currently being used.
<rekado>6.0.12 looks like a linux kernel version number
<rekado>KarlJoad: do you get this even without your extra channels?