<sneek>vagrantc, efraim says: do you know if u-boot provides a UEFI interface for aarch64 and riscv64 by default? I'd like to redo some of our images
<wdkrnls>The most promising one it appeared to me was to somehow use package-with-explicit-python.
<wdkrnls>Presumably, I could use inferiors to get the python package 3.6.5 from 2018 and then pass that to this procedure.
<vagrantc>efraim: most modern boards support UEFI ... but ... last i looked most implementations appear to not have any way to save environment variables and such ... so you have to use the EFI/boot/bootaa64.efi or whatever it's called
<wdkrnls>There is this python?-variant property thing which I don't actually understand.
<vagrantc>efraim: i have used u-boot's EFI implementation on occasion, but it still is a little quirky in some ways ... very actively improved in u-boot, though (for both better and worse :)
<wdkrnls>I thought maybe this whole thing was too complicated, and since the PyPI entry suggested the package would work under python-2 I thought maybe I could just use that. Unfortunately, that resulted in a ton of other errors, especially around tests.
<wdkrnls>Plus, even when I used package-with-python2 I still found scripts were running which used python3 features.
<vagrantc>efraim: it would be good to provide a UEFI image for aarch64 for sure, though, maybe riscv64 ... but it is going to need a more sophisticated module handling in the initrd for that to actually be useful :/
<wdkrnls>So, I gave up on that and am looking for ways I can use python 3.6.5 directly.
<vagrantc>efraim: that said, i think more sophisticated module loading would be a huge win all around :)
<gabber>wdkrnls: i haven't worked much with python in Guix (but i feel like i will follow that white rabbit a bit in the coming days). if you want more practical input/feedback it is always a good idea to share error messages
<gabber>but yeah, some packages (especially from the ancient python2 realms) tend to be a real pain - which might not even be Guix' fault
<wdkrnls>That definitely tracks with my experience.
<gabber>yeah, the deprecation of python2 was pretty heavy - glad it's over (although i have the dim feeling that the ghost of Python2 might haunt us for a long time)
<apoorv569[m]>This might work... but you have constantly add/remove stuff inside this container that you need..
<thanos_apollon><unmatched-paren> "thanos_apollon: Probably just..." <- Just started using qemu directly from the terminal with virtio etc. the performance is day and night compared to gnome boxes, not sure why is that
<nckx>apoorv569[m]: You can remove coreutils, it's unrelated to Guile's CHMOD procedure. If you run the build with --keep-failed, you'll see that the build directory is totally empty when this error occurs! The t-b-s makes you do almost everything yourself, including unpacking the source. It's a trivial build system, but not a trivial (or fun) experience :) IMO it's for advanced users, or truly trivial packages where you're installing a simple shell script or so.
<apoorv569[m]>Well this rustup-init is a binary we download from their website which on most standard systems you don't download it directly but instead use a curl command they have on their site that fetches a script that checks the cpu and os type and downloads this automatically.
<apoorv569[m]>Nix package manager has rustup too so it must work under Guix as well.
<nckx>Sure, but that binary from (source …) doesn't magically arrive in the build directory. You have to copy it to "." first. The gexp equivalent would be (copy-file #$(package-source this-package) "."). I don't remember the non-gexp, non lambda* version.
<lechner>Hi, any chance we can demote the Guix manual for the most recent release and publish only the 'devel' manual online? For anyone using Guix, it's only a 'guix pull' away. The old one is still available via the Info system.
<nckx>We ‘ship’ it in the sense that yes, we do, as (package-source linux-libre). I'm sure it's also provided as part of the linux-module-build-system, since modules are ‘legitimate’ users of such internal headers. Others might be… questionable? Since it's not UAPI.
<nckx>lechner [manual]: Yes, 100% chance, I was going to do this but got distracted by trying to add a ‘This document describes a stable release of Guix, which might be…’ banner to the generated HTML, which ended up going nowhere. My fault.
<bjc>you're probably not going to find a lot of love for copilot around here
<graywolf>Well, sure, I do not *need* the old style progress bars. But the new one feels so much brighter to the point of being distracting. Oh, I guess I can just alias guix to `LANG=C guix` and that should suffice. I do not need utf8 inside guix, just for my system in general. I'll give that a try.
<lechner>graywolf / i was also taken aback, but let's embrace change for the time being
<bost>bjc: That's not surprising here on this channel :) But I'd like to hear you opinions, anyway.
<bjc>you don't need anything, but geiser and paredit/smartparens are pretty nice to have
<bjc>there's even at least one oddball here who uses vi
<minikN>Hello, anyway to keep Guix from building ungoogled-chromium during reconfigure? guix weather says substitute should be available, I'm on latest Guix channel.
<lechner>i usually wait for a few hours when that happens and use guix shell for whatever i need in the meantime
<bost>bjc: It's not about editing comfort but about snippets. I've been all the time in situations that I need to know, eg. how to check if a string contains a substring in Guile/Emacs Lisp and it costs too much mental power to memorize such if the function I need is called `string-append` or `str` or `concat` etc.
<apteryx>does setrlimit work from a user application on Guix System?
<bost>bjc: or `string-match` in that particular example.
<bjc>yeah, i know the pain. it's the biggest problem with working in a bunch of different languages. still not going to use copilot, though
<graywolf>bost: Out of curiosity, you don't mind that copilot is sending your code to microsoft? Or is that not the case?
<bjc>i'm pretty mad that ms took my code in the first place for it, without asking
<bost>graywolf: I use github and gitlab to backup my code and exchange it across the machines I use.
<bost>graywolf: so no I don't mind. I actively use it. It's OS and I greatly profit from such services.
<minikN>lechner: Seems like this is what I'll have to do. Still painful :/
<graywolf>bost: But I would assume you still use *some* license instead of just public domain. And copilot completely ignores that. Like, I'm not trying to start a flamewar here, I'm just honestly surprised (and bit sad) that people find that ok :/
<bjc>lots of people find it ok, because it benefits them, and the sequelae aren't thought about, if not actively dismissed because they would prevent the comfortable use of the tool
<minikN>lechner: But is there an explanation why that happens? The substitute is 3 days old now.
<bost>graywolf: I'm not a big corp with a team of lawyers extorting patent-licensing money from other corporations. I'm on my own so all that licensing is just a extra work for me.
<bjc>graywolf: because the kernel/initrd/firmware are field declarations in the struct, not arbitrary sexps
<graywolf>So there is no way to do a conditional field declaration?
<bjc>the immediate children of a struct constructor (in this case ‘operating-system’) need to be its field names (eg ‘kernel’)
<bjc>you can have conditional field declarations, but it's either going to look like what you have already done (or something like moving the values to a separate variable), or using ‘apply’ on ‘operating-system’
<graywolf>I see, so I have basically two options: 1. helper defines so that I can do just (kernel %my-kernel) without the conditions 2. another layer with (inherit), that would have two branches and patch just these fields?
<bjc>i'm not familiar enough with inherit to tell you if that'd work, but it seems reasonable
<graywolf>Cool, thanks. Now all that remains is figuring out why it does not boot :D
<bost>graywolf: From my POV the deal is: Microsoft provide me free and reliable backup & exchange medium and a huge code library for which they get my code.
<bjc>microsoft *stole* that code they give you for free
<bjc>llm training is a moral cesspit and the entire industry is corrupt
<lechner>bost / that's exactly right. it's the MIT/Expat model that allows capital to do its thing. As a creator you may not care. i think most folks simply realize too late what it happening. everyone is different
<lechner>i personally chose to migrate away from Github, in a personal exodus
<bost>bjc: not really. There's a plenty of people like me who write OS - this code is not stolen. And yes, there are probably several important projects from which M$ has been stealing... On the other hand it's not like I had been paying every non-free SW all the time in the past.
<lechner>people have different perspectives, that's all
<abrenon>you can see the importance of a strong military without endorsing a military-industrial complex, especially in the form it currently takes
<lechner>well, i was going to say that my grocery store feeds me but that does not mean i have to love the price
<bost>abrenon: ??? and where should then the military get the weapons from if you don't support the M/I complex?
<abrenon>you could fear war and call for an entirely public military industry: is it moral to make money off the security of the citizens ? if the army itself is public, shouldn't their equipment be produced by the state itself ?
<abrenon>(but that was a digression, just to answer your precise point, these are not necessarily my views)
<lechner>well, right now Copilot isn't declaring war on anyone. It's just that the world is changing, once again, and we all have different opinions on where that's going, and whether it is good. What's good is then another debate
<mirai>stracing xdot under guix and fedora (where it works) shows a lot less directories are being searched
<graywolf>How can I configure system-wide inputrc under guix? I'm looking at operating-system reference page in the documentation, but do not see a attribute I could use for generic configuration under /etc.
<mirai>graywolf: through a etc-service-file service-extension
<mirai>there's actually multiple ways to achieve the same effect
<mirai>through special-files-service-type,through the procedure extra-special-file (which simply extends special-files-service-type) or through (simple-service 'some-name-here 'etc-service-type (list '("name under /etc" file-like-obj))) << (that is, a service-extension on etc-service-type)
<graywolf>I like the second one, looks simple enough :)
<mirai>graywolf: note that the services are slightly different
<mirai>the special-files-service-type allows you to use arbitrary paths
<andreas-e>To build my big ungoogled-chromium on a stronger machine than my laptop, I need to send its dependents there. "guix archive" should be able to do it, but I do not see how; it requires the list of packages, not its dependencies.
<andreas-e>Something like "guix shell -D", but with "guix archive".
<bjc>the issue tracker will send you an email when the ticket is updated
<gabber>andreas-e: i just saw your review, thank you! i did some manual testing with my python-scapy package and it seemed to run fine so far (at least it started in it's own "shell"). i guess actually finding out how well it works needs some users, i will do that (and fix the package as necessary) since i'll need it for work
<lechner>Hi, I am trying to finish the cachefilesd service, which I use extensively (but manually). What does this error mean, please? #<<cachefilesd-configuration> cachefilesd: #<package firstname.lastname@example.org gnu/packages/linux.scm:9212 7fd6d514ff20> debug-output?: #f use-syslog?: #t scan?: #t cache-directory: "/var/cache/fscache" %location: #<<location> file: "/home/lechner/config/system/host/lechner-desktop/../../service/cachefilesd.scm"
<dthompson>I wish the certbot service also installed a one-shot shepherd service for when you want to run it manually and not wait for cron, such as after a 'guix deploy'
<graywolf>Any idea what could error `guix archive: error: mkstemp: Not a directory" on boot be about? The ,bt does not seem to give anything useful (I could post a screenshot, but unsure what is a paste service for those)
<lechner>dthompson / there is certbot certonly --standalone (after herd stop nginx)
<unmatched-paren>(configuration-file #~(serialize-cachefilesd-configuration #$config)) should be (configuration-file (serialize-cachefilesd-configuration config)), i believe
<unmatched-paren>the ungexping of ``config'' is causing 'Invalid G-expression input', I think
<PotentialUser-0>hey to open a bug report to I send an email to just email@example.com or do I send an email to a specific number from there? because I sent an email around 2 hours ago but nothing in the issue tracker
<lechner>Hi, when is "no-serialization" from g/s/configuration.scm be surrounded by parens, please?
<unmatched-paren>lechner: no problem! remember -- the only things that can be #$ungexped are: things that can be ,unquoted, like lists, numbers, strings, etc, and any record that has a gexp compiler defined with the DEFINE-GEXP-COMPILER macro
<unmatched-paren>for instance, the <package> object has a compiler defined through something like this: (define-gexp-compiler (package-compiler (package <package>) system target) ...)
<lechner>now i get Wrong type to apply: (no serialization) Anybody seen that?
<nckx>PotentialUser-0: Probably just out of date. I'd try it, but due to another (unrelated, reported) bug it wants to build chromium and I don't have an existing binary.
<elevenkb>yah about my error build daemon related error `invalid option name/value` from yesterday...
<elevenkb>it is still there, I can bring it back by reconfiguring my operating system.
<PotentialUser-0>i tried adding xorg-server to the packages available in the container but nothing
<lechner>unmatched-paren / i think that's getting super close. (i see parts of the generated config). now i get this error, however: Wrong type (expecting string): #<gexp gnu/services/configuration.scm:124:2 7fcbe1498660> https://paste.debian.net/1271645/
<nckx>Nyxt fails to render anything (empty light-grey window) but it does not look related. I'm pretty sure your auth errors are not red herrings. Did you try ‘xhost +’ or anything similarly desparate/insecure, just to test?
<bdju>okay the --cores=1 worked (build log shows -j 1 now) but the build still failed. oh well.
<PotentialUser-83>i'm having some issues installing, i'm getting the error message "the selected network does not provide access to the internet and the guix substitute server" even though it was working fine the other day on this network, does anyone know what could cause this?
<nckx>PotentialUser-96: OK! I suggested that because there's a socket in /tmp/.X11-unix that talks to your running X server (you could try --share=/tmp/.X11-unix to test that assumption, and for more isolation). However, that's only half of the story: I do not have that socket exposed in my container, yet icecat can talk to X. I don't know why, but I suspect socket (‘@’) namespace issues and the --share ‘fix’ working because it falls back to using the file.
<nckx>I hope the current state is good enough for you for now.
<ieure>lechner, It's the best OOP system I've ever used, honestly. I suspect performance isn't terrific, but the flexibility and de/composability is unmatched.
<jackhill>ieure: cool. I've never used it. Do you know how it differs/exceeds goops?
<lechner>ieure / after some time with declarative systems like SQL and Haskell, the issue may be on the other side of my eyeballs!
<ieure>jackhill, I've never looked at goops, so I have no idea.
<ieure>You can write very generic classes that get mixed in with others via multiple inheritance, which lets you write very focused code which nevertheless is widely applicable. Almost like function composition, but with objects. It's great.
<mirai>gulab-jamun: you are right, it doesn't look too nice
<elevenkb>1. switch cloud providers to, e.g. Linode as according to your suggestion
<elevenkb>2. find a way to convert a running ubuntu vm into a guix system vm.
<mirai>lechner: imo rewriting it to something "These default values should satisfy most usage cases" subtly alters the meaning
<mirai>you might wonder to yourself "what is 'most usage cases'?"
<lechner>my replacement wording did not receive the same scrutiny or thought as your wording
<mirai>its non-descriptive and doesn't help the reader
<lechner>i believe the direct you style is inappropriate. in debian we also had that issue in package descriptions
<mirai>because it introduces non/ill-defined elements into the phrase ('most usage cases')
<lechner>this is about the 90% of communications that does not involve facts or being accurate
<lechner>i think there are many nice ways you can advertise utility without confronting the reader
<lechner>Hi, how may I require the explicit setting of a configuration option, please?
<mirai>when it comes to using the direct style, in general I don't think the reader should be handled with mittens (overly done its either infantilizing or results in a boring read)
<mirai>though that's not really the issue at hand here
<lechner>you are doubling up but that's okay. it's a common reaction to a review
<f3n1x>My question to the guix community today is the following: How do you guys run 'guix home reconfigure' guix home configure' so that it does not eat all your CPUs power ? thanks, thanks, thanks beforehand!
<yewscion>elevenkb: Hmm, looking at the docs for that provider, I understand why You hesitate to do a swapover like in the cookbook. They seem more focused on running various applications on top of an Ubuntu host, rather than hosting arbitrary OSes.
<mfs5173>Hello guix, Can someone explain to me what the difference between packages listed in ~firmware~ and packages listed in ~packages~ when declaring an operating system?
<nckx>ACTION brushes feathers, brownie crumbs, and octopus ink off shoulders as if nothing happened.
<nckx>As a reader, I prefer being addressed if the alternative is the hegemony of the passive and a less pleasant read. There's no policy mandating either in Guix.
<mirai>lechner: I am actually wondering how to rewrite this in the passive without introducing ambiguities
<mirai>and I have no clear idea how to without having to resort to vague things like 'most usage cases'
<lechner>mirai / it's probably because, as a technically brilliant person, you prefer direct speech. good writing is hard, and good technical writing is a separate job
<lechner>but with nckx weighing in, you should feel affirmed
<nckx>mfs5173: Both are handled by a different service and I don't think they have anything in common: the firmware service tells the running kernel (through /sys) where it can find firmware when a driver requests some. The packages field makes packages available in your system profile, i.e. available in PATH etc. No overlap really.
<nckx>lechner: I'm sure you could find someone who agrees with you! I just wanted to confirm that there's no rule, as I took your statement about Debian to imply they do have one.
<mfs5173>nckx: I see. Firmware are packages which provide their contents to the kernel though a special mechanism similar to kernel modules?
<lechner>mirai / i do not accept your precision point, however. how are "most usage scenarios" different from "For most setups this is what you want" if you please?
<nckx>‘Readability wins’ is our (admittedly prone to bikeshedding rule), although there's a little bit of GNU-ish ‘let's be conversational, friend’ thrown in compared to other projects, especially Big Serious Projects.
<lechner>unless whispered into an ear, "you" is not generally perceived as friendly
<nckx>mfs5173: Basically, yes! If you ignore the details (as most users should).
<mfs5173>I am trying to port guix to an fpga so these are exactly the details I'm interested in learning
<wdkrnls>I am still trying to package up my workflow and I have been pointed to an unexported procedure.
<nckx>There is a lot about this discussion that will never be resolved (for example, *I* fundamentally disagree with ‘you’ being unfriendly—we are simply different). Without trying to be a mediocre mediator here: I find the passive vs. ‘you’ irrelevant here. Both contain ‘most setups’, both are vague, I honestly can't tell a difference, and I agree that it *could* be improved.
<wdkrnls>For the life of me I cannot figure out how to get at it.
<wdkrnls>I want to get at (@@ (guix build-system python) package-with-explicit-python)
<lechner>mirai / it is not necessary for you and i to disagree in this forum. i do not have an axe to grind and only responded when you asked. i am, however, entitled to my opinion, and you are to yours
<lechner>as you are entitle to yours is a better ending
<nckx>f3n1x: I think the next step up from ‘nice’ is cgroups. The API for that has been completely redone since I last used those, and it (also) requires a single piece of software to manage them. On most systems that's systemd (slices). Guix/Shepherd have no such thing built in. Maybe there's a stand-alone one.
<nckx>Muh, I probably made a mistake by diving into this. My personal opinion is that I prefer ‘You’; I find the sentence hard to read because of the lack of commas, no other reason. I don't personally object to ‘most setups’ at all.
<nckx>It's OK to say something is common when you're very sure it is. And until I push my telemetry commit tonight when everyone's asleep, that's the best we can do.
<f3n1x>the situation i'm trying to alleviate is the one in wich the system stays (almost) irresponsive while in processes like building a derivation.
<nckx>lechner: I forgor! What was ‘sad’ earlier? :)
<graywolf>So, I had my first try at debuging failing boot after being dropped into the repl. I have to say, once I got over the cultural shock of it not being emergency posix shell, It was quite an experience. Being able to ,bt separate frames of the failed boot script feels crazy powerful. And even I, with my noob level skills in guile and guix managed to figure out what the problem was (it did not like
<graywolf>I don't really have deeper point to make, I was just really taken aback by how smooth it all was.
<nckx>Oof, I suggested as much earlier, sorry that you missed it :-/
<nckx>…I mean it was all part of my plan to make you learn!
<mirai>I'm surprised that you could get something meaningful from the backtrace
<futurile1>Q: I have a Rust create (rust-if-addr-sys) which is an input to another crate (rust-if-addr). How would I find that out - I thought that guix graph --type=reverse-package rust-if-addr would show this, but it's not showing it. Where I'm updating a crate, I want to find all the other crates/apps that depend on it and make sure they build.
<mirai>most of the times guile has crapped itself on me I only got gibberish for bt
<graywolf>,bt 2 #:width 120 have me the paths is is trying to symlink, from there on stat and stat:type
<nckx>I find that REPL to be an unusable horror and always try to escape it ASAP. I'm surprised but very happy you made it work for you.
<unmatched-paren>futurile1: the problem is that Cargo is evil so we need to do other evil things to make it work with Guix so ultimately we end up with a system where cargo inputs aren't Real Inputs.
<nckx>graywolf: Do you know why /etc/guix was a file?
<nckx>A bit stronger than even I would have put it and yet… can't say you're *wrong*, exactly… dammit… :)
<graywolf>Yeah, in my install script I'm doing cp channels.scm /mnt/install/etc/guix ; usually it copied it under that directory, but since the directory did not exist yet... At least that is my hypothesis, testing it out now
<unmatched-paren>futurile1: so guix doesn't actually recognise cargo inputs as inputs per se.
<nckx>Graceful of you to accept the blame, but if you were to file a UX improvement bug you'd be justified.
<mirai>unmatched-paren: the out part needn't come entirely scrambled so that it bears no resemblance to the input
<graywolf>I mean, I would definitely prefer the system to boot right, but when I compare it with my experience of debugging failed boots for alpine or archlinux, it was interesting experience (and better imo)
<futurile1>unmatched-paren: it definitely feels like Cargo is "evil: - from my massive dependency tree of packaging - so basically just have to do a grep. Thanks for the answer.
<unmatched-paren>futurile1: it'd probably be possible to write a program to output a cargo input graph, though
<ellysone[m]>Does anyone knows if you can include arbitrary files via the guix system image api ?
<ellysone[m]>the idea would be to create a vm with nginx serving the webist eform the get go, no need to rsync,ansible...
<rekado>apteryx: a colleague dusted off his old Guix installation from 2019, and ‘guix pull’ fails because ‘raise-exception’ does not exist
<rekado>my guess is that the changes to the platform code make assumptions about the (minor?) version of Guile that is used by Guix, but we cannot reliably make these assumptions as the Guile version used to compute the pull derivation may differ.