IRC channel logs

2022-09-18.log

back to list of logs

<lilyp>In theory we could, but in practice someone needs to implement that 😛️
<ulfvonbelow>ah, question, are commas legal for use anywhere in package specifications?
<jonscoresby>Anyone know how the ublock-origin-chromium package is suppose to work?
<tschilptschilp23>I'm just comparing python-numpy versions installed via pip on debian-docker and various versions on guix. Functionally they seem to be the same as expected. However for another package, which uses numpy, the tests keep failing because of a missing 'blas_ilp64_opt_info' from numpy.__config__ on guix. I see that there's actually quite some effort put into our package to integrate blas, any ideas how to add this ilp64? It seems a
<tschilptschilp23>the guix version has even more features, just not the mentioned one... Here's the comparison: http://paste.debian.net/1254224, this is the manifest in use: http://paste.debian.net/1254222.
<tschilptschilp23>I missed the top part of the manifest-file: http://paste.debian.net/1254225
<drakonis>when's 1.4.0 releasing?
<Kabouik>Actually I think latest remind fails to build because of tests: https://0x0.st/oOCD.drv.gz
<csepp>could someone help me get RStudio working? i'm pretty new to R and can't figure out why it says that it can't determine the home directory.
<drakonis>you might want to use guix-science to provide rstudio
<csepp>drakonis: that is what i'm using
<drakonis>R is not actually an RStudio dependency
<drakonis>you have to install it
<csepp>i did, they are in the same profile
<csepp>does it not support using any profile other than the default one?
<drakonis>maybe?
<drakonis>i've never tried using it like that
<csepp>hm. guess i'll try installing it globally.
<csepp>thanks! at least now i know that there is a chance i don't have to patch the package.
<csepp>oh hey, it works.
<zamfofex>You don’t have to install it locally, you can install it to your user profile using ‘guix install’.
<zamfofex>You don’t have to install it *globally*, I mean.
<csepp>zamfofex: i know, but i wanted to separate it, because it's not something i need all the time and i don't want to think about having to update (and possibly build) it when i'm upgrading my main profile
<zamfofex>Ah. I feel like it might work well if you use ‘guix shell’. I always found alternate profiles a bit clunky to use, personally.
<csepp>I have some scripts to help me use them. https://git.sr.ht/~raingloom/new-window
<csepp>This is mostly a GUI problem, app launchers use the user level environment, not whatever is in any given window.
<lilyp>zamfofex: you're not alone; multiple persistent profiles are actually one of the worst supported use cases
<csepp>AFAIK some Nix users use some bash script that overrides `cd` so that changing to a directory you also enter its Nix shell or whatever.
***LispyLights is now known as Aurora_v_kosmose
<drakonis>nix users leaking into guix, innit?
<drakonis>how's y'all feeling about that?
<lilyp>We do have direnv
<csepp>follow up RStudio question: why is it not showing any text? other Qt apps work on my machine.
<csepp>well, not *any* text. the menu bar works. but not anything else.
<csepp>oh, looks like a known bug.
<csepp>welp i guess it works with the --no-sandbox workaround. i can finally rest in peace.
*csepp is slep
<lechner>Hi, anyone else having issues with sequoia not building? https://paste.debian.net/1254231/
<ulfvonbelow>re: --with-extra-input: http://paste.debian.net/1254233
<the_tubular>Anyone has a working wsl.scm config ?
<the_tubular>I'm getting errors following what I find online :/
<jonscoresby>Is there any way to run procedures on or pass variables to the install plan in the copy build system?
<jonscoresby>Like how can i put a (string-append ...) in as a target or a source?
<rdrg109_>[Q] Is it possible to disable the mousepad while doing the shell-based installation? My laptop is a bit old and the mousepad goes crazy from times to times which is amusing during the installation process because the cursor is moved at random locations.
<rdrg109_>s/mousepad/touchpad/ (pardon my english)
<Reventlov>>It's not just you! guix.gnu.org is down.
<the_tubular>What's a "replacement" package ?
<Reventlov>zamfofex: how would you add this .inputrc using nix ? (as I'm executing in containers…)
<Reventlov>(and as I'm in a shell, I cannot use services, I guess)
<tschilptschilp23>thanks to the people who patched linux-libre up to 5.19.9, my system reports battery status perfectly again! Also closing the laptop lid pushes all the windows from my laptop's main display to monitor 2 automatically. Great.
<antipode>ulfvonbelow: I doubt there is a law against putting commas in package specifications.
<antipode>However, I do not know any package names containing a comma and I don't think package names (or versions) are supposed to have a comma, so I doubt that any (specification->package "something containing a comma") will succeed.
<antipode>lechner: Maybe see recent bug report about tealdeer not building, seems to have the same cause
<antipode>in 57867
<tschilptschilp23>jpoiret: great talk! exciting insights, which will keep me chewing for the next three years at least :)
***taiju` is now known as taiju
<jpoiret>thanks :)
***Noisytoot_ is now known as Noisytoot
***tschilpt` is now known as tschilptschilp2`
***Dynom_ is now known as Guest6588
***taiju_ is now known as taiju
<tschilptschilp23>mhm, the gnome42-app gnome-maps does not open anymore on ee0768c7924134f7b4b215670c2a3ae481268fab, also the new password-safe app 'secrets' crashes on opening a remote .kdbx-file...
<lechner>antipode: thanks!
<Reventlov>Is there a goto docker container containing guix ? (goal is to use guix inside docker containers running in CI/CD environment)
<Reventlov>(tried using guix from the ubuntu docker container but it's not really working as expected ( https://0x0.st/oViC.txt )
<Kabouik>Can I use guix shell for a one off install using pip or will pip install touch my system beyond the temporary guix shell?
<Reventlov>Kabouik: I would run the shell in a container, e.g. guix shell --container, to ensure no file access
<vivien>Kabouik, pip install will touch ~/.local/lib
<Reventlov>hmm wait
<Reventlov>yeah, that should do the trick
<vivien>Reventlov, you need to start the build daemon yourself
<Kabouik>Thanks you!
<Luk6655>Kabouik, I did that, but plus virtualenv
<vivien>guix-daemon --build-users-group=_guixbuild --disable-chroot
<vivien>&
<Luk6655>it is not ideal, but it works when in pinch
<vivien>Put the & at the end of the command-line
<Reventlov>yeah
<Reventlov>let me try, thanks
<vivien>You also need ntp and the SSL certificates, I don’t remember the package name
<Kabouik>Is guix-daemon an answer to my question vivien?
<vivien>To install ntp, docker will want you to select your timezone
<vivien>The guix-daemon thing is for Reventlov
<Reventlov>(also, still searching for a way to use accents in a guix shell with accents, but configured from inside the manifest.scm)
<Luk6655>Kabuik: Also, you may need to set up LD_LIBRARY_PATH=$GUIX_ENVIRONMENT/lib if your pip installed stuff complains about missing libs
<vivien>Reventlov, you can set DEBIAN_FRONTEND=noninteractive as a gitlab ci/cd variable to avoid dpkg to ask you for your timezone and use UTC
<Kabouik>Actually when I'm in the guix shell --container, the guix command is not even recognized; so I can't install python-pip in the firsst place
<Luk6655>Kabouik: you specify all you need on the guix shell command line
<Luk6655>like this: guix shell python
<Kabouik>Right
<Luk6655>python already comes with pip, but you run it with pip3 if I remember correctly
<Luk6655>or python3 -m pip
<Luk6655>in general when I did that I always run python3 instead of python cmd, also any .py file, I run with python3 file.py
<vivien>Reventlov, you will want to set up CI/CD caching between builds. You can try and cache $HOME/.cache/guix to avoid re-authentification of commits, and if you want to cache the store, look at guix archive
<vivien>You will need to set up the archive signing key.
<Kabouik>I'm having trouble installing pass-import that way, maybe I'd be more successful with just guix import to make a package. It's just I need pass-import only once, so I wanted to be lazy and avoid defining a package
<Luk6655>Kabouik: what I describe is in general for when everything else fails, but you need it, I would definitely start with guix import
<Luk6655>guix import works when the package in pypi has sources defined, unfortunately there are a number of packages in pypi that really just deploy "wheels" (binary stuff) and for those guix import will not work
<ytc>i was very excited about emacs-guix. but currently, it's not working properly and i think it should be revised. anyone knows the current development status of it?
<jpoiret>ytc: you should check out this ML thread https://yhetil.org/guix/ygu8rn1rbyp.fsf@netpanic.org/
<Reventlov>vivien: yeah I get what you're saying about cache, it's so slow :p
<vivien>Also be careful, guix is not meant to be used with --disable-chroot, some packages may do wild things such as replacing /bin/sh. With the ordinary chroot build this has no impact, but without a chroot it can brick up your container
<Guest79>Morning. How well does guix integrate with the system? If I install a guix package, can a system package use with it? Or is it isolated like flatpak?
<jpoiret>Guest79: i understand you're using guix on top of a foreign distribution?
<Guest79>Yes, I would install guix on a GNU/Linux distro. Using it as a secondary package manager.
<jpoiret>it totally depends on what system package you're talking about and how they use them
<vivien>Everyone in the system can use a package installed by $user by running /var/guix/profiles/per-user/$user/guix-profile/bin/program
<jpoiret>there's no isolation using Linux kernel features
<jpoiret>(at least not there)
<vivien>If the package is correct, there should be nothing else to install as an other user running that program.
<Guest79>My plan is to use guix to install webkit2gtk, and use that with some system packages. As long as the paths are correct, I can use webkit2gtk with system packages?
<vivien>You may need to recompile the system packages
<vivien>So, probably not
<Guest79>I planned to install them through compilation from the beginning.
<vivien>You may need to set C_INCLUDE_PATH, LIBRARY_PATH, PKG_CONFIG_PATH and so on to search in /var/guix/profiles/per-user/$user/guix-profile/…
<vivien>If you want to compile something against a library installed by $user
<Guest79>Here's the lowdown: I like to use some distros like slackware and guix is perfect to get some packages alienbob won't package. After installing webkit2gtk from guix, I'll compile other packages that utilize webkit2gtk. I hope this works out in the end.
<Luk6655>those other packages compiled against webkit2gtk, which user will use them? Your normal user(s), or root?
<Luk6655>and if root, are we talking about launching via system service, or via sudo
<Guest79>For example, gufw (Python GUI for ufw) has a webkit2gtk dependency for whatever reason. And I'm a single user on my system, so just normal users like myself.
<Luk6655>I would probably try to get it working in guix shell
<vivien>Guest79, from what I read, you may not be far from maintaining your own distribution. I wish you well, but this may be tough!
<Luk6655>so for example run 'guix shell somepackage gcc-toolchain some_other_package', then cd tot he folder with whatever you need to build source and try building it, you may need to set various paths
<Luk6655>as vivien said, it is not exactly straightforward
<Guest79>I don't mind experimenting and playing around with $PATH or environmental variables to slackbuilds to know where webkit2gtk is.
<lilyp>Guest79: I think it might be wiser to package the thing you need via Guix rather than using cursed hacks to make Guix packages infiltrate your foreign system.
*Luk6655 is afk
<Guest79>I think so too lilyp now that I think about it. Would firewall programs like ufw or gufw work as intended if packaged for guix?
<vivien>If you intend to use them in the foreign distro, you have to fix the systemd definitions
<Guest79>Eh, I guess I can just learn to live without the GUI. I can still use ufw from the command line.
<Guest79>Thanks guys. I'll just have to live with compromises like command line only ufw.
<lilyp>well, you do need to go a little extra to wire up your system services, but you should be fine just invoking /root/.guix-profile/bin/whatever
<Reventlov>vivien: yeah, not sure it works, I might be missing something https://0x0.st/oV-_.txt
<lilyp>(through regular means such as systemd sysvinit etc.)
<vivien>Reventlov, did you install ntp and the package containing SSL certificates?
<vivien>If so, could you look at /var/log/guix/drvs/k9/7266h5064c80r9q2richqgvx9dppqx-tiff-4.2.0.tar.gz.drv.bz2
<Reventlov>let me check, it might be ntp…
<polyex>when rust gets into linux that'll end up in libre-linux kernel too?
<lilyp>we don't know yet; it's supposed to be isolated to device drivers at first so there's a good chance it'll only be the blobby ones
<polyex>ah
<polyex>ty
<polyex>if it's not blob and totally libre friendly, then we'll have rust in libre and guix? :D
<GNUtoo>Rust doesn't work for everybody yet in Guix, for i686 mrustc requires more than 3GiB of RAM to build rust
<GNUtoo>Does someone knows if Hilton Chain is on IRC?
<GNUtoo>("52e55b38f4 gnu: emacs-polymode: Add patch for native compilation." lacks the actual patch)
<oriansj>actually i686 can't build rust, you need i686-pae and about 24GB of swap to build rust
<GNUtoo>AFAIK pae doesn't fix things, you're still limited to 3GiB of ram per process
<lilyp>GCC lacking Rust support was mentioned as blocker for Linux in the kernel, but GCC-Rust ought to be merged in 13, just 3 versions ahead of current default :)
<lilyp>s/Linux in the kernel/Rust in the kernel/
<GNUtoo>And I've managed it to build it with 4GiB of RAM, with mrustc on i686 with an x86_64 kernel but It probably requires a redesign to be able to fit into less than 3GiB sadly
<GNUtoo>ok
<GNUtoo>So we might have rust on i686 thanks to gcc finally?
<lilyp>can someone explain why reconfiguring raises a git error?
<lilyp>hmm, seems to have been a cache issue
<GNUtoo>(i686 limits: with 3G/1G split (the default), you get 3G of memory limit per process, with an x86_64 kernel and an i686 userspace, you get 4G of memory limit per process)
<GNUtoo>(So you can have something like 8G of RAM and 100G of swap but you still have these limits, this is what makes workarounds complicated)
<lilyp>hmm, would it help if tmp was not a tmpfs on i686?
<GNUtoo>ah that can be configured
<GNUtoo>it probably helps in some cases but not with mrustc
<oriansj>GNUtoo: another option is a AMD64 vm
<lilyp>yeah, I doubt saving 1G is that easy
<GNUtoo>Would that be allowed?
<oriansj>why not?
<GNUtoo>Here I'm talking about paths to fix it in guix per se
<GNUtoo>Like my patch won't be refused?
<oriansj>oh, I can't answer that
<GNUtoo>emacs was built in a similar way in yocto/openembedded long time ago: it required qemu to build to create a memory dump
<GNUtoo>but here I fear that bringing in qemu to cross compile for i686 will likely get refused
<oriansj>well I've asked for qemu builds a while ago so that cross-platform builds would result in the same binaries
<GNUtoo>(note that ARM has similar issues than i686 for rust)
<GNUtoo>That would be nice to find a way for that indeed
<oriansj>but I think the software world is giving up on 32bit processors
<GNUtoo>The issue is that some very important computers are 32bit only (Thinkpad X60, X60s, X60T, Some T60)
<GNUtoo>And the issue is rather that the industry doesn't care and so we end up more isolated
<oriansj>fair but we do have the Thinkpad x200 librebooted
<oriansj>and we are starting to head to the era where we need to start building our own hardware
<GNUtoo>That would solve things indeed but where not there yet
<lilyp>the industry would abandon 64 bit computing if they could
<oriansj>lilyp: where do you think they would rather be instead?
<GNUtoo>Try to replace an X200 or X60 with an ARM computer for instance, it's not a drop-in replacement hardware wise
<GNUtoo>So at the end it covers different uses cases
<lilyp>Someone somewhere: "We need at least 256 bits for our software product line."
<GNUtoo>For instance on these thinkpads you have a SATA interface
<GNUtoo>And that doesn't give access to your RAM to the HDD/SSD firmware
<oriansj>but we can't build computers with 2^64bits of RAM, let alone 2^64Bytes of RAM and SIMD is already up to 1KB in length
<GNUtoo>+ the storage amount is way bigger
<GNUtoo>It's more things like that that are an issue hardware wise, because for the rest there are alternatives, like you have real ARM laptops that can work for instance, even with a free EC
<lilyp>car manufacturers will find a way – they never cared about physical limitations anyway
<ulfvonbelow>it seems like obscene hardware requirements increasingly can act as a form of soft DRM...
<ulfvonbelow>(still coping with building ungoogled-chromium)
<lilyp>I have an idea: Let's put our DRM as a smart contract onto the blockchain.
<GNUtoo>And the issue with i686 is also that it's not 1 computer that becomes unusable, it's a whole class of computers
<oriansj>lilyp: I'd prefer if car manufacturers would stop skimping on ECC memory and hardware bounds protection. It already has cost us thousands of lives
<GNUtoo>so both combined make it really worth to continue the support
<lilyp>That way we can mint NFTs whenever you download a car.
<oriansj>ulfvonbelow: or maybe as a sign, something lost track of reality and you might want to avoid if possible.
<lilyp>brb, rebooting into my reconfigured system
<lifestronaut>I'd like to install GuixSD on my corebooted Thinkpad t440p, but I'm struggling to find a libre-compatible wifi card that supports 5ghz. Does anyone have any recommendations?
<oriansj>lifestronaut: well the dual band ones listed here: https://ryf.fsf.org/categories/wireless-adapters appear to support 5Ghz
<lifestronaut>oriansj: Unfortunately none of those are compatible. I can find tons of wifi cards for prior generations of thinkpads
<apteryx>lifestronaut: have a look at thinkpenguin.com, perhaps
<GNUtoo>lifestronaut: look at shops like thinkpenguin for that
<GNUtoo>they have ath9k compatible cards in a wide variety of formats
<oriansj>lifestronaut: even the USB?
<GNUtoo>some other shops like vikings also have things like that
<GNUtoo>USB don't do 5GHz
<lifestronaut>I was trying to avoid usb cards, but it appears I may have no choice
<lilyp>Polari looking very nice now that I actually got it to launch.
<GNUtoo>lifestronaut: did you check all the M.2 cards as well?
<lifestronaut>I found a couple of realtek cards, but I have zero clue if they're libre-compatible or not. There isn't much listed on h-node
<GNUtoo>they are probably not
<lilyp>41.014 new commits – are those from a cu merge?
<GNUtoo>lifestronaut: only some very old ones are, but they are not in m2 format
<lilyp>Ahh, no, it's from my broken cache
<lifestronaut>I was trying to avoid nonguix, but I may have to go down that route. :(
<GNUtoo>lifestronaut: did you look at all the M2 ath9k compatible cards?
<lifestronaut>GNUtoo: I just found a few. Atheros NFA335
<GNUtoo>+ there are several M2 slots on that laptop, though on the SSD m2 it might be harder to bring the antenna until there
<GNUtoo>What M2 format is the stock wifi card?
<lifestronaut>M.2 Key-A
<lifestronaut>There is the WWAN card slot, but I doubt wifi cards exist for it
<pkill9>so there are free wifi cards that are more powerful than the old free one?
<pkill9>cos I will probably order one in that case when I get my laptop woooooo
<pkill9>if it's not USB
<pkill9>oof pretty costly
<GNUtoo> https://thinkpenguin.com/gnu-linux/wireless-n-m2-ngff-card-v2-tpe-m2ncrd2 ?
<GNUtoo>it's 2.4GHz only though
<lifestronaut>Thanks for your help! I'll continue to investigate foss drivers and which cards/chipsets are supported
<GNUtoo> https://store.vikings.net/en/atheros-qcnfa222
<GNUtoo>This supports 5GHz
<pkill9>wha'ts the benefit of 5ghz?
<pkill9>also which laptop are you running on GNUtoo?
<GNUtoo>pkill9: faster, works in conferences
<pkill9>I'm receving an x230
<GNUtoo>Right now an X200
<pkill9>ios that what you are getting a new wifi card for?
<GNUtoo>lifestronaut asked about compatible wifi cards for a t440p running coreboot
<GNUtoo>Personally I don't have M.2 slots anywyere
<antipode>Could someone restart <https://ci.guix.gnu.org/build/1453052/details> (with Action > Restart) (the non-deterministic build failure has already been reported)?
<antipode>tschilptschilp23: Maybe use CLASSPATH instead of JAVA_HOME?
<Guest4470>How is guix pronounced? "Guy-ex"? Or "Goo-ex"?
<singpolyma>Gee x
<singpolyma>Geeks
<Guest4470>Is the x supposed to be a separate thing from gee?
<singpolyma>Yes. Pronounced like the words geeks
<Guest4470>I'll take it the ui is silent?
<vivien>It’s "Nix" but with a hard G instead of the N
<singpolyma>vivien: do you say neeks for nix?
<vivien>Yes?
<singpolyma>Interesting
<singpolyma>I definitely do not, but I'm willing to be wrong
<vivien>I’m not a native english speaker
<vivien>So I’m likely the one being wrong
<singpolyma>I mean, guix was named by a French person. I dunno about nix
<Guest4470>I pronounce nix as n-icks. Like icky without the y but starts with an n. Or just nick with an s.
<vivien>Oh well I’m too not english to understand that discussion
<singpolyma>Guest4470: right. I also that
<singpolyma>Nicks and Geeks
<vivien>Or rather, not english enough
<Guest4470>The problem is I pronounce geek as like g-eee-k with a (soft?) e so it sounds different than g-ix to me.
<singpolyma>You say jeeks?
<singpolyma>Or gehcks you mean
<lilyp>I pronounce it g-oui-x
<lilyp>:)
<Guest4470>You know the screeching noises monkeys makes? The EEE EEEE EEE sound? Guh-(monkey noise)-k is how I pronounce geek.
***maximed is now known as antipode
<Guest4470>Actually I don't do g as guh, just a g.
<singpolyma>Guest4470: yes. That is correct
<vivien>Gouix has a more balanced number of vowels
<singpolyma>Geek
<Guest4470>So just 'g-ee-k' would be the correct way to pronounce guix? Odd given the ui is there.
<singpolyma>Guest4470: yes. G-ee-ks is how to say
<Guest4470>How can I avoid someone thinking it's spelling literally as geek if I told them about the guix package manager?
<Guest4470>Oh that's right, you said hard G, so Guh-eeee-ks would be more clear it's not spelled as geek with a soft g.
<singpolyma>Geek has a hard g...
<singpolyma>Or do you say jeek?
<Guest4470>No, I thought the g was soft for a minute. I was mistaken.
<singpolyma>I say "geeks, it has a dumb spelling G U I X"
<singpolyma>Then they get both data
<Guest4470>Anyways. Would I be wrong to pronounce the g as like Gah-nu? or how the gnu animal is pronounced?
<vivien>I’m curious how you would refer to guix in sign language https://en.wikipedia.org/wiki/Sign_language
<lilyp>pretty sure it's the same g as long as you don't pronouce it like the g in Giraffics Interchange Format
<Guest4470>Alright. I'll just say guix as the same way I say geek and also tell anyone it's spelled guix. Ensures no misunderstandings happen on what the program is called or spelled.
<raghavgururajan>unmatched-paren, florhizome[m]: I haven't started looking at aerc, yet. Will be doing this week. :)
<pkal>Do I misunderstand something about the --development to guix shell, or does it not install all the dependencies I would need to build a package recursivly?
<pkal>(Specifically I am trying to build the programming language Agda, but it keeps on failing because of missing dependencies)
<vivien>guix shell -D hello --container -- gcc -v
<vivien>It prints the version number of gcc
<vivien>Without the -D, you get: guix shell: error: gcc: command not found
<vivien>(-D is --development)
<lilyp>pkal: only package inputs, build system inputs and transitive propagated inputs are included
<lilyp>if you're missing an input that's further down the line, you got a bit of a situation
<Reventlov>just to be sure I can't do that easily: is there a way to define env variables in a container created from a manifest file, inside the manifest file ?
<pkal>lilyp: Hmm, it might be that there is some version discrepency going on, because there is at least one error indicating that a c library is missing.
<pkal>Perhaps I can use guix import to generate a updated package recipe?
<lilyp>not so sure for C libraries, but you could try inheriting the package and updating its origin
<Luk6655>Is there some way (in repl) to list all variables defined by a package (outputs mostly)?
<Luk6655>also, it seems when running repl on guix system, additional channels are all in the path, when running guix repl when guix is installed as package manager on foreign distro only the guix channel is on the load path
<Luk6655>is this by design?
<ulfvonbelow>I'm not sure what you mean by "variables defined by a package". Do you mean list all variables bound to packages with a given name?
<ulfvonbelow>regarding 'guix repl', I don't think there's supposed to be a difference there. What does 'type -p guix' say?
<Luk6655>for example when we specify a padckage as an input we can access its outputs, I mean I'm looking for some way to examine what those variables are without necessarily knowing all their names
<ulfvonbelow>oh, so you're looking for the output names?
<Luk6655>not wuite
<Luk6655>not quite
<Luk6655>see this bit from python-xyz.scm file: https://paste.debian.net/1254274/
<Luk6655>there we acceess the value of ncurses as a string that points to ncurses's location in the store, it is one way to access its location
<ulfvonbelow>ah, yeah, that's using the input label
<ulfvonbelow>those actually don't belong to a package, they're part of the corresponding 'inputs' list
<Luk6655>so in this example, if I wanted to list all the contents of the inputs without knowing the keys. is there some way to list them?
<Luk6655>if I didn't know that ncurses is one of the keys, how would I go about getting all the info about inputs structure (keys/values)
<lechner>Hi, is there an example for a Github updater, please? A search for "updater" in gnu/packages produces only meager results. Thanks!
<ulfvonbelow>sure, 'inputs' has a well-defined structure: it's a list consisting of pairs (conses in older-lisp lingo)
<ulfvonbelow>the first element of each pair is the label, the second is the store path
<ulfvonbelow>so (car (first inputs)) would give you an input label, and (cdr (first inputs)) would give you the corresponding store path
<Luk6655>ok, is there some way to "interrogate" an object/variable to discover its structure like that? For example if you didn't tell me that I would have to hunt for where inputs is defined. Is this the only way?
<ulfvonbelow>could always fall back on good old print-statement debugging
<ulfvonbelow>(format #t "inputs looks like ~S~%" inputs)
<Luk6655>would this print input's structure?
<Luk6655>for example in python it is pretty easy to find out a type of any variable, then if its a dictionary or class to print all its keys, methods, variables etc, I haven't found a way to do the same in guile yet.
<ulfvonbelow>it'd print something like (("ncurses" . "/gnu/store/...-ncurses-a.b.c") ("bash" . "/gnu/store/...-ncurses-x.y.z")) and so on
<lilyp>in Scheme there's print and write, which are analogous to python's print and repr
<Luk6655>I see, so to write this code, do you need prior knowledge of inputs structure (that it is a list of pairs). If it was a list of lists for example, would this bit of code error?
<lilyp>nah, (write list) is completely fine in lisp – the format from above uses display/write internally depending on the sequence
<ulfvonbelow>also, you can tell from context that 'inputs' is a list of pairs (known also as an "alist", short for "association list") by seeing that "assoc-ref" is called on it, if you know what "assoc-ref" does (a look in the guile reference manual will tell you)
<Luk6655>I think I'm not explaining what I'm looking for well. Let's take a package ncurses. When I say to use module that defines ncurses as package, then when I type just ncurses in repl it will respond that it is a variable of type package and it will give me some location. I'm looking for something that will allow me to find out more about the variable. its internal structure, is it an assoc-list, if its a record, what it contains etc
<Luk6655>something universal that can be applied to interrogate variables in general, not just a package, or inputs
<ulfvonbelow>note that in guile, variables don't have types, only their values do
<lilyp>p sure it tells you that it's a package record :P
<Luk6655>how do I know it is a record from this output: #<package ncurses@6.2.20210619 gnu/packages/ncurses.scm:43 7f884b8e3000>scheme@(guix-user)>
<Luk6655>ulfvonbelow: ok, still, it seems the functionality I'm looking for should be possible
<ulfvonbelow>I don't know that guile has a 'type-of' sort of procedure like you would find in common lisp. It does have a lot of type predicates, though, e.g. (struct? ncurses), (package? ncurses) both return #t
<ulfvonbelow>(record? ncurses) also returns #t
<ulfvonbelow>not sure what the difference between 'record?' and 'struct?' is, the guile reference manual probably says it somewhere
<Luk6655>that is another question I had actually, I founf lots of some_type? procedures, but no display_all_types procedure
<ulfvonbelow>regarding how you would know it's a record from the printed representation, the convention is for records to be printed like that. Technically every record type can have a custom printer, so it is just a convention, but in practice just about every record type I know of follows it
<Luk6655>that actually makes some sense to me that a record could be a struct etc. Looking at the structs in the manual again there is a lot about creating and acessing them, but I fail to find anything about discovering their layout
<ulfvonbelow>I think there's some struct reflection stuff in the guile reference manual
<ulfvonbelow>but you can always just look in the source code
<rekado_>are shepherd actions blocking?
<sneek>rekado_, you have 1 message!
<sneek>rekado_, antipode says: see https://logs.guix.gnu.org/guile/2022-09-17.log#213447 for lchown
<Luk6655>ulfvonbelow: that is exactly the problem, when debugging some bit of code, one would benefit from quickly finding out the structure of values used. Going to search in the source for everything seems quite ineffiecient.
<Luk6655>also, when one is learning the syntax, there can be some uncertainty
<Luk6655>anyway, I thought this is just some easy thing I'm failing to find, but it looks like there perhaps is no functionality like that
<rekado_>it looks like shepherd actions are in fact blocking other actions
<Luk6655>btw, about that repl problem, type -p guix says /home/luk/.config/guix/current/bin/guix
<ulfvonbelow>it looks like you could get the list of field names with (record-type-fields (record-type-descriptor ncurses))
<Luk6655>cool
<Luk6655>indeed it does :-) great, thanks
<Luk6655>regarding this repl issue, on guix system, when I just run repl I can then type ,use(guix) ,use(mychannel) etc this works. On a foreign distro, both don't work. However, if I run it as guix repl, then ,use(guix) works, but ,use(mychannel) doesn't
<Luk6655>the channels.scm is the same on guix system and running on foreign distro
<ulfvonbelow>are we sure that the guix running on the foreign distro is one that was pulled using that channels.scm? What does 'guix describe' say?
<Luk6655>it shows multiple channels including mychannel
<Luk6655>just a sec, I might have a typo in the channel name actualy
<Luk6655>no, still it isn;t working
<Luk6655>I thought I had a typo because the channel is called one thing and then in the define-module another name is used, but none of them work in repl
<Luk6655>while the one used in define-module does work on guix system
<Luk6655>Is there some way to show load path from within repl?
<ulfvonbelow>what does 'guix repl' say the value of %load-path is on the foreign system?
<Luk6655>a number of store locations
<Luk6655>I'm just looking what's in them
<ulfvonbelow>and after (use-modules (gnu packages))?
<Luk6655>more locations appear after use(gnu packages)
<Luk6655>however, some of the folders listed don't exist, about 3 of them
<Luk6655>actually, one of additional folders that appeared has mychannel in its name
<Luk6655>let's see if it works now
<ulfvonbelow>could it be that on the guix system repl you ran an earlier command that directly-or-indirectly loaded (gnu packages)?
<Luk6655>it is possible... it is working now
<Luk6655>when I installed guix system I was following a tutorial, perhaps it had a step ro add loading this module in .guile ?
<Luk6655>I'll check when I have access to the guix system home again, thanks for the help, this works for me now :-)
<ulfvonbelow>👍
<two[m]>hi
<two[m]>is there an apt-file like for substitutes?
<lilyp>no
<antipode>lechner: You are searching in the wrong location.
<antipode>Search in guix/import instead.
<antipode>More specifically, guix/import/github.scm (and guix/import/git.scm, which overlaps)
<antipode>(gnu packages ...) is only for packages, not updaters.
<lechner>mbakke: please ignore the amendment to #57872 for xkeyboard-config, if it comes through. i did not receive your 'done' amendment either and just filed another yet unacknowledged issue with a new diff instead. it is also here https://www.pastery.net/pmutwv/
<lechner>antipode: thanks! i figured out that the updater was probably used automatically if i got the sources from github instead
<lechner>Hi, is everything good with our debbugs instance?
<unmatched-paren>raghavgururajan: thanks! :D
<GNUtoo>Hi, what is going on in packages? in openexr if I change '(#:phases into (list #:phases it breaks compilation
<GNUtoo>Also I don't see how to conditionally add an additional phase conditionally there
<GNUtoo>I've tried $@(if (not (target-64bit?)) (add-after [...])) that fails too
<ulfvonbelow>sounds like you're running into quoting issues. Going from '(#:phases to (list #:phases, you have to quote all non-self-quoting forms in order to get the same effect.
<GNUtoo>ok
<ulfvonbelow>e.g. '(#:foo a #:bar b) => (list #:foo 'a #:bar 'b)
<GNUtoo>oh ok
<GNUtoo>thanks
<ulfvonbelow>note that if you're switching it to use gexps, you can use gexp instead of quote in some places
<GNUtoo>ok, that would be best indeed
<ulfvonbelow>e.g. '(#:phases (modify-phases ... => (list #:phases #~(modify-phases ...
<GNUtoo>thanks, I didn't see a quote somewhere I think, that's why it didn't work, now I've to find why the rest of the code still doesn't work
<ulfvonbelow>you can conditionally add a phase with ungexp-splicing, #$@. #$@(if CONDITION '((add-after ...)) '())
<zamfofex>Is there interest in bringing LLVM+Clang 15 to Guix? Because if there is and no‐one is tackling it at the moment, I feel like I might be able to work on it.
<zamfofex>It doesn’t feel like it would be difficult.
<lechner>Hi, why does changing this line not trigger a rebuild with guix package --install-from-file=guix/rocket-layout.scm please? https://www.pastery.net/pcwgwn/#l-48
<lechner>can i use that command when also using guix home?
<the_tubular>I missed the end of 10years, any words about releas 1.4 ?
<the_tubular>s/releas/release
<apteryx>no, but if you read the guix-maintainers minutes, you'll see it's slowly becoming our focus again
<the_tubular>Can I get a link ?
<apteryx> https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/maintainers/meetings/2022-08-06.org
<GNUtoo>How do you do a (if (not (target-64bit?) to a modify-phase if gexps are used?
<GNUtoo>I've been trying all possible combinations and I can't get it right
<GNUtoo>*to a (add-after [...])
*GNUtoo is becomming crazy, why why why was i686 broken again now...
<lechner>Hi, may I determine why a store item is not being garbage collected even though it no longer appears under guix package --list-installed and is (to my knowledge) not used anywhere else? Thanks!
<lechner>i think i am affected by this https://issues.guix.gnu.org/32661
<ulfvonbelow>GNUtoo: #:phases #~(modify-phases %standard-phases CLAUSE1 CLAUSE2 ... #$@(if (not (target-64bit?)) #~((add-after 'some-phase 'my-new-phase (lambda () ...))) #~()) OTHERCLAUSES...) should work
<GNUtoo>Ahh "#~((add-after"
<GNUtoo>Thanks a lot!!!!!
<ulfvonbelow>note it should also work in this case with using ' or ` instead of #~ there, the #~ just lets you ungexp stuff inside there if you wanted to
<ulfvonbelow>lechner: 'guix graph --type=referrers <your-store-item> | xdot -' should show you everything that refers to it in the store.
<the_tubular>xdot ?
<the_tubular>Time to learn a new command!Q
<ulfvonbelow>well, that's what I use when I don't wanna bother with writing to a pdf. It has some nice features like being able to highlight the edges connected to a node and being able to click on an edge and automatically follow it to the other end
<the_tubular>Nice, will check it out!
<GNUtoo>Somehow that doesn't work
<GNUtoo>I'll try ' or ` instead of #~
<two[m]>what is the package of xdot?
<GNUtoo>That doesn't work either
<two[m]>sorry, it's xdot
*GNUtoo knows where to find dot (graphviz) but not xdot
<two[m]>i can't pinch zoom in zdot, can you?
<two[m]>s/zdot/xdot/
<GNUtoo>If there is no xdot and that xdot is fully free maybe xdot needs to be packaged?
<two[m]>GNUtoo: the package is xdot
<two[m]>same name
<plattfot>Hi, is anyone else having issue with emacs-jsonrpc's hash mismatching?
<Grimpper>Hi, anyone knows a way to specify a commit for a guix package inside a manifest?
<jpoiret>GNUtoo: can you try #$@(if ... (list #~(add-after))) instead?
<jpoiret>and (list) instead of #~() at the end
<GNUtoo>I might have found something that accidentally works
<GNUtoo>(ungexp (if (not (target-64bit?)) (gexp (add-after [...] )))))
<two[m]>Grimpper: `((options->transformation '((with-commit . asdfgh))) (specification->package "packagename"))`
<ulfvonbelow>I know for a fact that this form works: #$@(if CONDITION '() `((delete 'configure)))
<two[m]>* '((with-commit . "asdfgh, * asdfgh"))) (specification->package
<ulfvonbelow>lechner: regarding changing that line not causing a rebuild, it won't cause a rebuild if the resulting builder script that is produced is the same. For example, if you add a comment into your package-definition code or just change some insignificant whitespace, it won't result in a rebuild because that's all read into scheme data structures and then serialized canonically anyway
<Grimpper>two[m]: I don't seem to get that syntax. I'm getting this error:
<Grimpper>`guix package: error: invalid replacement specification: "bc0dde310492de733f9ec528d7aeddd57093d05e"`
<ulfvonbelow>it should be '((with-commit . "<PACKAGESPEC>=<commit-id>"))
<ulfvonbelow>where PACKAGESPEC is the specification of the package you want to transform, e.g "mypackage", "mypackage@3.2.1", etc
<two[m]>* '((with-commit . "packagename=asdfgh, * asdfgh"))) (specification->package
<Grimpper>Thanks all for the help. I'm getting this error with that syntax:
<Grimpper>`guix package: warning: transformation 'with-commit' had no effect on #<<manifest> entries: ...`
<Grimpper>And a gigantic list. The packages seem to install though.
<Grimpper>This is the small snipet i'm using. Did I undesrtood the syntax correctly?
<Grimpper> `https://paste.debian.net/1254294`
<lechner>ulfvonbelow: thanks for the graph | xdot hint
<lechner>Hi, how do I remove a store item from my profile, please?
<Grimpper>lechner: Not sure what you mean but you can remove packages from a specific profile like so:
<Grimpper>`guix package -p <my-profile-path> -r <package-to-remove>`
<ulfvonbelow>Grimpper: my understanding is that 'options->transformation' wants a package, not a manifest
<Grimpper>If there are no roots pointing to the package the garbage collector will clean the store entry for you
<ulfvonbelow>(or rather, the procedure returned by options->transformation wants a package)
<ulfvonbelow>let's see how guix would write that manifest... guix shell --export-manifest --with-commit=emacs-geiser=bc0dde310492de733f9ec528d7aeddd57093d05e emacs-geiser
<ulfvonbelow> http://paste.debian.net/1254295
<Grimpper>Okay didn't know that trick. Thanks, I will look into that :)
<lechner>Grimpper: yeah, i figured it was an old profile. sorry, i am a newbie
<ulfvonbelow>the manual has so much stuff, having read a lot of it feels like a superpower of sorts
<lechner>ulfvonbelow: re rebuilding, why would modifying the string here have no effect, please? https://www.pastery.net/pcwgwn/#l-49
<ulfvonbelow>modifying the string itself absolutely should have an effect.
<lechner>alas, it does not. i'm using guix build --keep-failed --file=/home/lechner/guix/rocket-layout.scm
<ulfvonbelow>run 'guix repl', and within it do (load "/path/to/guix/rocket-layout.scm"). Then evaluate (package-arguments my-xkeyboard-config) and look at what gets printed out
<lechner>ulfvonbelow: it's empty
<ulfvonbelow>hmm, I didn't know substitute-keyword-arguments worked that way. Okay, try changing (#:phases phases) to (#:phases phases '%standard-phases)
<ulfvonbelow>the third element of that list gives a form to bind 'phases' to if there's no keyword argument corresponding to the keyword given in the original argument list
<lechner>i see
<ulfvonbelow>what I *thought* happened in that case when a default value isn't supplied is that 'phases' is bound to #f or some other default, but it appears that in that case it actually skips evaluating the replacement entirely
<lechner>wow, thanks for looking into it! i would have never found it
<ulfvonbelow>so if there is no #:phases argument before, there is no #:phases argument after
<lechner>yeah
<lechner>ulfvonbelow: thank you so much for your help! i was running low on coffee... should i attach a note to the somewhat similar https://issues.guix.gnu.org/32661
<GNUtoo>jpoiret: I did and it didn't work, I'll try to publish the code somewhere
<lechner>ulfvonbelow: alternatively, you may be able to articulate the issue more clearly
<jpoiret>GNUtoo: that would help debugging it, yeah
<ulfvonbelow>hmm, the spirit of the issue is the same, though it's a different somewhat-ambiguous behavior in a different piece of code
<GNUtoo> https://framagit.org/GNUtoo/guix/-/raw/i686-09-2022/gnu/packages/graphics.scm
<GNUtoo>I'll add the (list) at the end, that should work in its current form
<GNUtoo>ahh it works beceuase somehow the if is never taken into account
<GNUtoo>hmmm I'm so confused
<GNUtoo>disable-broken-tests is now executed with the current form, it was probably modified somehow by guix style
<ulfvonbelow>GNUtoo: the openexr definition I see at the link you posted is using #$ instead of #$@, and isn't wrapping the (add-after ...) form inside a list. That will work for that half of the if-form, but when the other half is evaluated, no matter what it is, it will leave some object in the middle of your (modify-phases ...) form.
<GNUtoo>oh ok
<ulfvonbelow>so on non-64bit systems, it looks like (modify-phases %standard-phases ... (add-after 'patch-test-directory ...) ...) and on 64bit systems, it looks like (modify-phases %standard-phases ... #<unspecified> ...)
<GNUtoo>I was trying to fix that but if it's always unspecified I would have tried a lot without any probability of succeess
<ulfvonbelow>the #<unspecified> is because the version I'm looking at has a one-armed if
<ulfvonbelow>replace the #$ with #$@ and wrap both arms (including the empty one) of the 'if' in a list
<ulfvonbelow>that way, when the empty list gets spliced in, it has no effect
<GNUtoo>ok thanks a lot, I'll try now
<GNUtoo>That works!!!!!!!!
<GNUtoo>Thanks a lot
<GNUtoo>I've intverted the if and it works too
<pkill9>anyone have problems running pipewire via guix home service when logging out then in?
<pkill9>also is there a mroe reliable way to get package name and version from store path than using regex?
<pkill9>more*
<pkill9>currently you can only get them as separate values during the build process
<pkill9>but once they're built it's meh
<antipode>I think we have a package->name+version procedure somewhere ...
<antipode>... in (guix utils), though it sounds like you need a during-build thing
<pkill9>I want an after-build thing
<pkill9>but I gues I will just have to do it another way
<antipode>Maybe use 'strip-store-file-name' and 'package-name->name+version' from (guix build utils)?
<antipode>It looks like these procedures can be used outside the build process, by giving them an appropriate "/gnu/store/..." string.
<pkill9>not sure if it's the same as you mentioned, but one is just regex I think
<pkill9>well the strip-store-file-name is
<pkill9>but then you have to split that, and it's possible to have the version be text
<antipode>Looking at the implementation, both of them don't use a regex.
<antipode>package-name->name+version splits the name and version
<pkill9>what i really mean is text manipulation in general
<antipode>Though I expect there are some edge cases where it splits incorrectly.
<pkill9>but if guix contains a procedure that uses a digit to denote the version, then I guess it's safe to assume that guix's official stance is to use versions that always begin witha digit
<pkill9>actually nvm I keep forgetting that what I want to do demands I create awrapper anyways
<pkill9>I'm wrapping packages to run in a sandbox with their own data directories
<pkill9>so it's both safer and more organised
<pkill9>it's organised into ~/.appdata/<package-name>/<package-version>/main
<antipode>"version-" and "v" prefixes shouldn't be used as versions in Guix, they should be removed before committing
<pkill9>where 'main' is the main 'instance'
<antipode>I don't think there is a rule against non-numeric versions per se, but it doesn't seem to happen in practice.
<ulfvonbelow>could it happen with git-based versions?
<pkill9>I can't remember but I think a 0 is put in front of the git versions
<Grimpper>Please, could someone test if they can build this succesfully?
<Grimpper>`guix build --with-commit=emacs-geiser-guile=e540e14db538ed0d116a188569413f5aadd79180 emacs-geiser-guile`
<Grimpper>I get this error: `In procedure stat: No such file or directory: "/gnu/store/f7nhwkcanqk8yz2hn2zrldmrwpcyb3ny-emacs-geiser-guile-git.e540e14/share/emacs/site-lisp/geiser-guile-git.e540e14/geiser-guile-autoloads.el"`
<Grimpper>Which I don't understand why because if I don't specify the commit it builds correctly
<pkill9>i'll try
<Grimpper>thanks
<pkill9>there's an example rightthere of a package with a version that doesn't begin with a number
<pkill9>i get the same error Grimpper
<Grimpper>pkill9: Dammit. Do you have any idea of why it could be?
<pkill9>no sorry
<pkill9>maybe the patching phases?
<pkill9>yes
<pkill9>patch-autoloads
<Grimpper>No worries. The thing is that even if I try to build the last commit of the repo, which I suppose is the same that gets grabed by the channel, it fails anyway
<Grimpper>So I don't understand why the "--with-commit" option can change anything
<pkill9>run `guix edit emacs-geiser-guile` and the problem is the added 'patch-autoloads' phase can't find the file it's supposed to patch, idk anything about that package though
<pkill9>if you look earlier int he output it says