<wdkrnls>Dear Guix, I'm trying to package a python library. It's complaining that it can't find a file: FileNotFoundError: [Errno 2] No such file or directory: 'requirements/requirements.txt'
<wdkrnls>That file is there in the git repository.
<wdkrnls>I guess guix goes and deletes it so that setup.py fails?
<daviid>rekado_: I am very pleased you found the source of the problem, thanks!
<daviid>rekado_: please make sure you write about this, 'somwe where', so other guix contributors won't need to pull their hair about this in the future ... [and to answer tour firt quiz, I just had no clue, and still have no clue about why ... I don't use guix, and have very very little knowledge about its design ...]
<KE0VVT>Does anybody else realize that you need to rfkill unblock all on an x200 or no wifi?
<isf>whats the difference between guix pull and guix install?
<Luk6655>There is elogind service in guix system that has a feature to run scripts to initialise hw that requires it on suspend/resume. This is normally done by putting them in /etc/elogind however on guix that folder is in /gnu/store and read only. How can I have elogind test my scripts without having to rewrite its package definition?
<yewscion>isf: guix pull updates package definitions from the channels, and guix install adds packages to a profile.
<Luk6655>Is there some way to make /gnu/store/subfolder/etc writable for testing?
<yewscion>Luk6655: You could add those scripts to Your system definition using a local-file or plain-file definition, if they are unlikely to change frequently.
<Luk6655>yewscion: i Just need to test if they work at all, running whole reconfigure for this initial development seems a massive overkill
<Luk6655>I'll need to change them 20times before I arrive at working version
<Luk6655>wdkrnls: cool, thanks, I'll try it :-) however for when those scripts do work, does anyone have an example config snippet that writes a short file to a package folder? I don't think there is one like that in the manual anywhere.
<Luk6655>yewscion: thanks, but how would I refer to the file location that should point to elogind etc folder?
<Luk6655>The folder itself would be ellogind:sysconf
<Luk6655>I don't know guile well enough to come up with the syntax, I was planning to just get this system working to learn guile, but it seems I need to know it already to get it working ;-) chicken and egg situation
<yewscion>Something like (extra-special-file "/etc/elogind/foo" (local-file "bar.config")) should work fine, I think. I will confirm after I reconfigure with a dummy file here, if You'd like.
<Luk6655>yewscion: I'm afraid it will not work if the file is just placed in /etc/elogind. The elogind package is configured to only look at etc in its output folder. Therefore I was hoping to import it like '(elogind "out") and add etc to it, then put the file there.
<Luk6655>However if I get it working by putting the file there manually that's good enough for a week or so hopefully until I figure out the rest hopefully.
<yewscion>Luk6655: Ah, I see. I don't use much extra configuration on my elogind; maybe someone else has a working solution for that. Otherwise, inherit and modify is likely the way to go.
<Kolev>Guess I'm staying on Fedora. Good night. :(
<yewscion>Kolev: People are not always watching this channel, give it some time and You will get a response. I don't use LVM, but someone here surely does.
<Luk6655>Kolev: I will need lvm working too, but no sooner than tomorrow as its 2am here.
<oriansj>could someone more familiar with shepherd sanity this check this idea: there is a file in the initramfs (luks.key) and the binaries for cryptsetup; Shepard runs cryptsetup open /dev/sda cryptroot --key-file luks.key then mounts /dev/mapper/cryptroot to /
<apteryx>but I may be fuzzy on things, it's been a while I digested such information :-)
<oriansj>apteryx: grub stops running the clock-cycle it passes initramfs to the kernel
<oriansj>the kernel then using the intramfs as its root filessytem starts /sbin/init (Shepherd in Guix's case) which then runs init.scm
<yewscion>A change made in b084398 is preventing both my system and home configurations from building with a Wrong Type to Apply error. Did the channel spec format change with the changes in that commit?
<oriansj>it is then the task of the init to mount filesystems (use luks keyfiles to unlock luks volumes), start a boatload of services, etc
<apteryx>oriansj: ah yes, so it's the minimal kernel binary that initially runs the initramfs, and then calls pivot on the root file system.
<jtmoulia[m]>rekado_: just wanted to thank you for updating the mu package -- I started trying to figure it out but was getting stuck (guix noob). That was my blocker to switching to guix emacs, and mu/mu4e is now working great with my config
<polyex>anyone NOT run a time server on a vm server? i heard it's not good to run time server on vm servers (like at vultr) because the hypervisor does the time
<mange>If you run the build with --keep-failed then I think you can re-enter something approximating the build environment (using guix shell -D and/or the environment file that gets written). That can allow you to experiment without having to start the build from scratch every time.
<TopExpert>mange: ok, is there a way to run the lase phase again on the guix shell -D?
<TopExpert>I mean if the code in (package) definition is wrong, it doesn't help much that you have the source
<iyzsong>podiki[m]: thanks for the report, i revert the said commit, now it seems working.
<mange>TopExpert: No, there's no way to set up for a particular phase, but the kept directory will be in the state that it was when the build failed. From there you can experiment with what you need to do to have it continue.
<TopExpert>mange: that basically means it's impossible to integrate very large projects, even if you have the source, you still need to run the entire build again to test your change, which is likely wrong a few times during development
<mange>It's definitely tricky, but it can be done. The build for Chromium takes over four hours on Cuirass, but clearly someone managed to get that working.
<mange>I'm confident that any suggestions you have that could make it easier would be appreciated (patches, especially).
<TopExpert>if you have 64 very fast cores, sure, many people in the industry have that, I've booted up 32 cores in the cloud to offload this build during development and that takes maybe 20 mins
<TopExpert>but it costs so much that we need a solution that works for everybody, I doubt it's difficult to run the phases up to a point, or simply run one phase so one can test each and make btrfs snapshots
<TopExpert>add to that, Guile is highly diagnostics-hostile, you get an error in the phase that basically says "something's wrong with this form and nobody knows what"
<TopExpert>so you have to make small changes in the phase during research that are unknown to work, you get messages that the error is unknown, and the build takes over an hour to reach that phase
<muradm>i find it meaningless to make reload action for any shepherd service in the context of guix. imagine "some-daemon -c /gnu/store/....some.conf" sending reload to it will have no effect, because first the location of config should change. then i find thinking on reload functionality meaningles, or do i miss some point?
<VesselWave>Hey everyone! Is there any way to get libzmq using Guix?
<rekado>re terminal: Emacs users have a similar desire, except that they use 2-dimensional buffers for everything instead of a one-dimensional command line terminal. It’s just a small step from running everything in the terminal to running everything in Emacs :)
<unwox>cool. i hope i'll have time to take a closer look into emacs in a future
<unwox>but for now i've got enough on my plate figuring out scheme and guix :)
<rekado>feel free to ask for help here. This can all be a little confusing at first, because it’s ever so slightly unusual.
<rekado>I’ve got a Rust question again: my branch ‘rekados-rust-queue’ updates a few Rust packages and now rav1e fails to build.
<rekado>it says ‘failed to load source for dependency `aom-sys`’, but aom-sys is among the cargo inputs.
<polyex>ty for working on rust and guix i hope to use rust some day
<efraim>mbakke: ruby-2.7 and lower don't build with openssl@3, email@example.com and firstname.lastname@example.org do build with openssl@3
<vldn>is it possible to install guix on a remote host via guix copy?
<vldn>had some problems with the partition naming on another vps before
<vldn>the debian client shows /dev/sda but internally it's /dev/vda and guix needs the other name..
***Dynom_ is now known as Guest2368
<muradm>vldn: "install guix on a remote host" what do you mean by that? if remote host, which os does it run to become remote? if some other linux, you may search for guides how to install/swap distro remotely guides. once as a fun exercise I could manage to do that, but it is not easy activity.
<muradm>vldn: in the end of the day, you will have to know the hardware it is running, bios/efi settings, and probably the capabilities of already running distro.
<Christoph[m]><muradm> "i find it meaningless to make..." <- Reload might be useful if the service crashes?
<Christoph[m]><polyex> "i think the start is understandi..." <- What does that mean, progressive build?
<muradm>Christoph[m]: that would be stop/start and/or default restart?
<polyex>Christoph[m] TopExpert was trying to port a big thing to guix and a build crash an hour in meant fixing something then trying again and waiting another hour. so he wanted progressive builds so upon crash he could try a fix then restart build from where it left off
<Christoph[m]><TopExpert> "but it costs so much that we..." <- Could one go through the build instructions.step by step in a REPL? Or use break points like in a debugger?
<Christoph[m]>polyex: Sorry, I'm not a native English speaker, and I know 'progressive' only from 'progressive democrats'. I'll look it up.
<polyex>that's just a propaganda tactic to associate themselves with "progress". that's a meaningless usage. what progressive meant here is the build infra was tolerant of build failures in a way that let you keep your progress. so you could fix something and try again without starting the build all the way over
<Guest903>I just installed guix, and upon doing my first "guix pull" i got the message hint: "After settung 'PATH', run 'hash guix' to make sure your shell refers to '/home/username/.config/guix/current/bin/guix' " Sorry for being a noob but how is any of this done?
<rekado>Guest903: set PATH by doing ‘export PATH=/home/username/.config/guix/current/bin:$PATH’ and then run ‘hash guix’.
<rekado>the goal here is to make your shell find /home/username/.config/guix/current/bin/guix first when looking for ‘guix’
<Christoph[m]>polyex: I see, that sounds very useful. But it also sounds very difficult. If the last command corrupted the state of the build, it's impossible to recover. One would need a backup, maybe with rsync, which can create hard links for the second backup. So backups either after each command, or after each phase, or at explicit break points?
<mbakke>efraim: thanks! ruby 3.0.2 failed with OpenSSL 3.0 on my end, good to know it works in 3.0.4 :) I have some patches lined up
<patched[m]>Wondering if there is a "correct" way to do it in guix, e.g. with system services or something.
<abrenon>patched[m]: I don't know about the guys but personnally I have a very simple rsync script that I run when I insert the dedicated volume
<Guest1132>abrenon: an attack vector where a tiny archive can expand to TBs of data
<nckx>abrenon: A foo-0.3.tgz file that doesn't contain a politely-named foo-0.3/ top-level directory, but extracts multiple files/directories to the PWD. ‘Bomb’ because of the feeling you'd get after innocently extracting such a file to ~ :)
<dthompson>civodul: I wish 'guix shell -- make' applied the implicit guix.scm file loading like plain 'guix shell' does, would be really handy for M-x compile, but from reading an old mailing list thread it seems that you and others think only interactive invocations should do that. I think it's a real usability issue. thoughts?
<dthompson>like I'm used to running 'guix shell', and when 'guix shell -- make' gave me an "empty profile" warning, I was confused. I had to go look up what flags are implied by 'guix shell' and then add them which made the resulting command really long. coming from tools like 'bundle exec' in ruby, it feels worse even though it ought to feel better.
<civodul>dthompson: i think there was some consensus that non-interactive invocations shouldn't read those files, as you write
<superkamiguru>So I have guix installed inside qemu, and am trying to mount a shared 9p filesystem. I found something similar before when I was looking into this where system/vm.scm is using 9p filesystems with a regular device declaration. Anyone here familiar with how I could replicate this in my config?
<civodul>that said, the empty profile warning is kinda confusing and useless, i agree
<civodul>it'd be best to at least suggest passing "-m manifest.scm" or something
<dthompson>civodul: I'm trying to figure out if there's some situation where people would find it acceptable
<civodul>the difficulty here lies in the decision-making process
<dthompson>like maybe there's a way to carve out an exception if 'guix shell' is given no other args than something to exec
<dthompson>non-interactive and no packages or payload file given? okay, go ahead and look for guixs.cm
<dthompson>or maybe the question should be: non-interactive and no other args at all?
<dthompson>right now I feel like the one person who will even look at my patches is hostile to them.
<dthompson>I'd like to have a productive discussion about it and see if we can't come away with something that satisfies everyone.
<tricon>dthompson: it's a tough call. i come from the Ruby world myself, and there is that tension between "just works" and "too much magic".
<tricon>to your point, it does seem inconsistent on the surface.
<dthompson>having some basic conventions is good for usability.
<dthompson>'guix shell -- make' is so much better than 'guix shell --development --file=guix.scm -- make'
<dthompson>well 'guix shell -D -f guix.scm -- make' for short, but still not very pleasant
<dthompson>I have a hard time overlooking these types of issues because I wrote 'guix environment' so I'm pretty invested
<dthompson>it's supposed to be a developer productivity tool, and now it feels closed off to improvements without significant resistance.
<dthompson>some ideas from other language communities are good, and ruby's convention over configuration philosophy is one of them.
<dthompson>like, I wanted 'guix environment' to default to using the packages themselves, not the dependencies of the packages. --ad-hoc was a compromise I made to get it in. then years pass and 'guix shell' is introduced to correct the mistake.
<Luk6655>Is there some good tutorial /online book for learning guile syntax? Starting with simple stuff how to run a program, how modules work, lists, builtin objects, defining objects, inheritance. Nice if it has some builtin lib functions/functionalities. Basically "learn guile quick if you know all the programming concepts, but no scheme syntax whatsoever).
<Luk6655> dthompson :thanks, I'll check it out. Of course I found "tutorial introduction to guile" which focuses on c-guile integration, and "Hacker's guile notebook" which shows you how to write tests harness for your hello world before it shows you how to run the hello world...
<Guest9028>Do I need to edit any file in order to use nix package manager in guix?
<Luk6655>However, if anyone knows any other guile/scheme book please let me know. The book suggested by dthompson is definitely good, but it seems to pretty quickly start using syntax that is never properly explained (#:key - for example)
<nckx>It's explained as ‘optional and keyword arguments. Guile implements this abstraction as define*’ — terse, but ‘improper’? What would a proper explanation look like, without confusing beginners?
<Luk6655>Well, I'm not really a beginner in programming I've been doing it for decades (in many languages from asm /C to java/python), but I never had any encounters with lisp-like languages. I don't know, perhaps I just need a different resource.
*civodul ran out of battery and the laptop stopped without warning
<civodul>isn't elogind supposed to do something smarter?
<Luk6655>A table that has argument types in one column and syntax in the other that covers all options woukd do great to help for example.
<nckx>Luk6655: I might be misjudging your level, and sorry if so, but you realise that ‘#:key’ is not ‘Scheme syntax’, right? It has no special meaning outside of define*. It could have been %blueberry or !zork.
<Guest9028>Do I need to edit any file in order to use nix package manager in guix?
<nckx>Luk6655: For how some Guile procedures use the #:keyword convention for great glory, see 22.214.171.124 Coding With Keywords.
<nckx>Guest9028: You need to at least add the nix-service-type to your system.scm and reconfigure. I don't know if Nix has some nix.conf or ACL list or something else you need to edit after that.
<civodul>nckx: oh i see, that's a upower thing; then it seems upower doesn't run that critical-power-action in my case, how could it be?
<nckx>Right, that's what I'm wondering too (and not seeing obvious oversights in the code so far…)
<Luk6655>nckx: OK, I didn't know. As mentioned I never touched lisp/scheme so I'm not sure where lisp/scheme ands and guile starts etc.
<Luk6655>Still I'm reading that link which seems to be good.
<nckx>It would be a defensible choice if so, but it's more likely that it's just a stupid bug somewhere.
<Guest9092>What do I do after I added the new service to my config.scm?
<nckx>Andronikos: Almost all packages that ‘need’ systemd can be convinced not to with a configure or make flag. Otherwise, it's patching time, because I'm almost certain that there's no libsystemd in Guix.
<civodul>but HybridSleep should try suspend-to-RAM, no?
<nckx>I don't know. It's a choice: suspend to RAM and risk unclean file systems when power runs out whilst suspended (not unlikely on many machines/commutes), or sacrifice data in RAM for a graceful shutdown.
<nckx>But no, hybrid-sleep itself does not automatically mean ‘try to hibernate, then sleep regardless’ AFAIK.
<Andronikos>nckx: How would I patch it? I don't understand how for example gnu/packages/mpd does it.
<civodul>nckx: AFAICS PowerOff isn't graceful at all; in my case it just turned off, as opposed to doing invoking "halt" or similar
<Andronikos>Okay. Thanks for helping out. I do now know what needs to be done.
<nckx>You're welcome. If you get stuck (this can get really ugly, it depends on how stubborn the build script is, for one), I might give it a go.
<dthompson>Luk6655: anything else confusing besides the introduction of #:keywords without explanation? I know the author and I'm sure they'd very much like to resolve what is preventing you from getting the most out of it.
<nckx>civodul: Is your system configuration public? I wonder if I'm missing an undeclared service (I have dbus- and login-, but not the entire %desktop clique).
<Luk6655>dthompson: I had to go away for a bit, I'll msg you if I find anything more
<apteryx>mbakke: hi! any estimate as to when staging could be merged into master?
<dthompson>Luk6655: okay np. whatever you feel like sharing :)
<mbakke>apteryx: aarch64 is only at 22,8%, dunno what's up with that ... i686 is looking ok at 80,4%, not sure what the baseline (master) is
<polyex>Christoph[m] well maybe after each successful phase of a build, there's some kind of checkpoint info written to a 'progress' file. then any time a build is started, the progress file is used to pick up where you left off?
<Andronikos>I need to add code in the file CMakeLists.txt. How do I accomplish that? I am talking about making a Guix package.
<Luk6655>dthompson: I'm sort of 40% through and I have to say "scheme primer" reads much better after first reading the "crash course".
<vivien>Andronikos, I would rename the CMakeLists.txt, create a new one with the new code and include the renamed file
<nckx>Andronikos: Again, depends on what code, and where. You could use substitute* as a hacky (but common) way to insert code snippets in arbitrary places, or simply append to the file with open-file, or…
<nckx>Andronikos: I suggest applying that as a patch, possibly editing it to apply to the latest version if it no longer does (didn't check). That's a lot more clear than messing with substitution or writing CMake from within Guile.
<antipode>I've noticed a few build failures on master on ci.guix.gnu.org (wxwidgets)
<efraim>for aarch64 I restarted email@example.com and cl-asdf, a prereq for sbcl
<klm>lilyp: Hi again, I'm stuck on solvespace. I can't package libdxfrw properly: it isn't a proper CMake project and this is taking too long (2 days now). I don't think the libdxfrw fork is worthy of a package declaration. Would it be ok if I ran `git submodule init` on just libdxfrw? I managed to extract mimalloc, at least.
<rekado>klm: could you show us the URL of that project?
<lilyp>in fact, even if you had .git, you couldn't
<nckx>Which is to say, there is no network access in the build environment, and no downloading random naughty bits from the 'net. You'll have to turn libdxfrw into an origin, or better yet (if supported) a separately compiled dynamic library package.
<nckx>Re-read lilyp's ‘that is…’ message with that in mind and it'll probably click.
<jackhill>I haven't read the full backlog, but, based on rekado's "I’d say don't bother with libdxfrw", maybe you could look at the recursive option for git origins?
<Andronikos>nckx: It does now work with the patch. Thanks for the help out. Yes it would be smarter to fix it upstream but I just wanted it to work so I could use it.
<nckx>jackhill: I missed that message, thanks. So it's a single-use library or so?
<nckx>Andronikos: Sure, it is upstream's responsibility, but it's OK to carry patches in Guix as long as they have also been submitted upstream.
<nckx>Which reminds me: include a link to the upstream issue URL to keep track of that.
<klm>jackhill: Thanks for the tip, and revursive #t would have been much easier. But it pulls down _all_ dependencies, which is a lot. That's why I'm going through this hurdle to just get this small libdxfrw thing into the build path.
<klm>but speaking of which, could perhaps #:recursive go from #f/#t to a list of strings? So you could specify which submodules to update.
<Andronikos>nckx: If that is the case I am going to submit it.
<nckx>Andronikos: Thank you! By the way, even if I'm mistaken (which obviously never happens ◍•ᴗ•◍), there's nothing wrong with submitting packages in good faith that later turn out to have freedom problems. That's what review is for.
<Andronikos>Isn't "libsecret-1.so.0: cannot open shared object file: No such file or directory" fixable with "guix install libsecret"? Since I still have the error. I am using GNU Guix Binary and the package is a binary as GNU Guix package.
<nckx>When does this happen? ‘guix install’ is not generally a fix for missing libraries, no.
<Andronikos>Why do so many clients connect at the same time. Really annoing in ERC.
<Andronikos>Oh I see. Since that is how I fixed it on the Gentoo System so I thought I can just adapt that. Well it is the Minecraft launcher and it requres it to store the Microsoft credentials.
<nckx>Andronikos: 30 Aug 21:54:08-tomaw/Wallops- I need to do a quick reroute. It'll be messy but should be quick
<acrow>https://issues.guix.gnu.org/32947#29 is ready to be committed. Would you mind taking a look at it? Others agree it works but agree that you are the best informed on java matters like this one. If you see additional issues please let me know what I can do to address them.
***caleb_ is now known as KE0VVT
<KE0VVT>Odd question: Can I use Ansible with Guix System?
<Noisytoot>Andronikos: Minecraft is proprietary. Play Minetest instead. It's free, packaged in Guix, and you don't need to log in to any centralized and proprietary service to use it.
<Andronikos>Noisytoot: I am aware of that, too. But I want to test out the new update as well as learn more about Guix.
<KE0VVT>Andronikos: While in theory Minecraft can run on Guix, this is not the place to discuss it. Official forums like this are for free software only.
<apteryx>mbakke: I was asking because I wanted to try upgrading gnome-shell to latest, and it wanted a newer gjs, which wants a newer mozjs
<KE0VVT>Just to be clear: I cannot use Ansible with Guix, right?
<apteryx>it depends for what, but you won't be automating package installation with built-in modules, no
<apteryx>unless you author such a module adding support for Guix
<apteryx>which would be pointless because 'guix deploy' is a better tool for Guix System
<KE0VVT>apteryx: Basically, I want to learn Ansible, but I know its use on Guix System is limited at best.
<apteryx>you could create an ansible playbook to install guix on a foreign distribution, if you want to study how it works while providing something useful for Guix users ;-)
<KE0VVT>apteryx: Why not just run guix-install.sh?
<vagrantc>you mean, just download the script, just verify the signature, and just run it?
<kabouik>So I just received a new PC. My Guix system so far was a SBC (a powerful one but still a SBC). I was not done configuring it, but I'd rather transfer what I had to the new PC to continue my configuration. What would be the best way? I'm not comfortable yet with how to wrap up my current Guix state in the SBC and deploy it as a bootable img (if that even possible) on the new machine, but I was under the impression that's one of Guix' strong suits.
<acrow>A certificate on issues.guix.gnu.org has expired....
<KE0VVT>vagrantc: Although, on Fedora, guix-install.sh is not all that's needed.
<vagrantc>KE0VVT: and so then "just" do all the other things?
<KE0VVT>vagrantc: So do you have a Guix-based Kodi box?
<kabouik>But wasn't there a way to use that right from the initial install from a bootable device? I remember I had to change some .scm files in the initial install (namely to use the Linux kernel), I'd be happy if I could skip that and just use the working configs I have on the SBC already (single board computer)
<rekado>weird that the auto-renewal task didn’t take care of it.
***aaa is now known as chino
<Andronikos>Is there some easy way to find out what package is missing? Like for example cmake doesn't find "LibLZMA". No clue what package it is.
<nckx>Oh god, not again: "executing SQLite query: database disk image is malformed" — this is disturbing, happening as it does across machines and file system types, but also confusing, because nobody else seems to report it.
<nckx>Before xz(-utils) became the standard, there was lzma(-utils), and xz still provides that library.
<nckx>Guess I'm dating myself by just remembering that :)
<vagrantc>Andronikos: you can also use find /gnu/store -iname lzma ... and if you're lucky, it's already in there somewhere
<chino>is there a way to get more info out of `guix pull`? it's failing to build derivative with this log: (exception unbound-variable (value #f) (value "Unbound variable: ~S") (value (channel)) (value #f))