IRC channel logs

2024-09-24.log

back to list of logs

<amano>Raku does the same.
<the_tubular> lilyp, just saw your patch set and was wondering how was telegram allowed in guix repos ?
<amano>So, guix seems to just propagate dependencies of libraries for guix shell and wrap an executable with path variables without propagation.
<the_tubular>I saw it was licensed under GPL3, umm
<podiki>nutcase: quick review (didn't try to build it or see how many affected packages): changelog needs to note removed patch and it should be deregistered (from a file i forget the name of, local.mk?); see other commits for details if you search for something like remove patch
<podiki>amano: guix shell, as far as i understand, doesn't change what is propagated or not: it simply builds a profile with what you asked for and activates it (putting it first in e.g. PATH for instance)
<amano>podiki: What I mean is that packages for scripting languages tend to propagate dependencies of libraries and not propgate dependencies of applications.
<podiki>the_tubular: what do you mean, gpl3 is certainly an allowed license
<the_tubular>Problem isn't with the license itself
<podiki>amano: maybe depends on the language, but i would assume that is by design for likely what the package is used for (e.g. library to do some development, application just to run)
<podiki>but i'm not familiar with guile libs/application packaging
<nutcase>podiki thanks, I'll fix it tomorrow. Elogind itself builds fine with that patch.
<podiki>nutcase: what are the number of dependents? (i'm not at my guix machine currently)
<poddo3>hey, when running stuff with guix shell --container, how do I add libraries that I want to link correctly? can I?
<mange>Can you provide a specific example of a problem you're running into, poddo3?
<poddo3>well, I'm trying to run a compiled c++ binary from the internet, for example it expects libz.so.1, so I add zlib to the list of packages for the shell, but it doesn't detect or link properly
<poddo3>maybe I should just package its github but idk how
<blizzow>I usually install a new OS by creating a new ZFS filesystem, mounting /proc /sys /dev in that filesystem, then I bootstrap a base-system into that filesystem.
<blizzow>I chroot into the mount and finish off any customizations. What program would I use in guix to do that.
<mange>Right. Guix doesn't follow the FHS, so you can't generally use binaries compiled for other systems. Guix doesn't even put ldlinux in the right place for them to work. Guix shell does have an --emulate-fhs option to get some of the way there. It's documented in the manual (see: (guix) Invoking guix shell). There's also a blog post about it somewhere.
<mange>Ah, that was easy to find: https://guix.gnu.org/en/blog/2023/the-filesystem-hierarchy-standard-comes-to-guix-containers/
<poddo3>it might be better to just make a scm for the repo right?
<mange>Creating a package definition will make it play nicer with Guix generally. --emulate-fhs is more of a last resort.
<mange>blizzow: Sorry, I don't really understand what you're asking. Are you asking how to configure a Guix system that you've just installed and chrooted into?
<poddo3>I think they want to bootstrap the install, like skip the installation media?
<blizzow>poddo3, exactly.
<poddo3>you usually do that with arch maybe?
<mange>Isn't that what "guix system init" does?
<blizzow>If I want to install void-linux. I can grab their xbps binary and bootstrap an installation with xbps-install -S -R htpts://myvoidmirror -r /mountpoint base-system
<mange>In Guix I think the same is "guix system init my-config.scm /mountpoint"?
<blizzow>Alright so just download the guix binary.
<blizzow>I saw this thing that says to use 'herd start cow-store /mountpoint' for a manual installation.
<mange>You need that when using the bootable installation image, but I don't think you need that if you're doing it from an existing installation. I could be wrong, though.
<mange>The manual (see: (guix) Proceeding with the Installation) says the cow-store makes /gnu/store copy-on-write, which is "necessary because the first phase ... downloads or builds to /gnu/store which, initially, is an in-memory file system."
<mange>If you're using a Guix installation to bootstrap a new one, then you are (presumably) not using an in-memory file system, so you don't need to do this.
<poddo3>oh god, the argument part of this scm file seems complicated
<oriansj>depends how deep you want to go into the bootstrap; (you can start without a filesystem, kernel or anything beyond a bootloader if you wanted to)
<poddo3>how do you get a versioned package in inputs
<mange>Inputs are usually specified by referencing a Scheme variable, which is precisely versioned. If the version you need is packaged in Guix, then you can find its variable name and reference it.
<poddo3>oh
<poddo3>whats the best thing to read to figure out cmake build system?
<poddo3>I just want to run this basically cmake -S . -B build -G Ninja
<mange>The manual (see: (guix) Build Systems) documents cmake-build-system and says "The #:configure-flags parameter is taken as a list of flags passed to the cmake command." Presumably, then, you need something like (arguments `(#:configure-flags '("-S" "." "-B" "build" "-G" "Ninja")))? I'm not familiar with cmake, though, so I don't know what those options do.
<RavenJoad>What is the function/macro I should use to mark a field in a define-configuration as deprecated? I saw define-deprecated/public-alias, but want to be sure.
<mange>I haven't used it, but define-deprecated/public-alias seems to be used by the mumble server service, at least. It doesn't look like it can warn on definitions using the field, though, just on uses of the accessor.
<mange>Oh, wait, mumble doesn't use define-configuration, so that's not helpful.
<mange>I guess you could write a "deprecated" serializer, which prints something if it has a value? Can you write higher-order serializers with define-configuration?
<RavenJoad>I have no idea. I have to run, but I will be back soon.
<erin93>Just like there are services to set up your configuration files, would it make sense to create a home service to set up personal directories (Downloads, Projects, Notes etc.)? Or is there a better way to set up your home directory rather than making a service?
<mange>The operating-system record has a "skeletons" field which specifies the default structure for new user accounts. It's documented in the manual: (guix) operating-system Reference
<erin93>Oh, okay. Thank you. Is there a way to do it on a per user basis in the users home configuration or is it only system-wide?
<mange>I think having it be per-user would have to be home service. I don't know of one that already does it, but you could extend home-activation-service-type to do it fairly easily.
<erin93>Got it. Thank you for your help
<lilyp>the_tubular: what is the problem with telegram (aside from it being a weakly encrypted messenger and the honestly weird build system)?
<the_tubular>You mean that thing that is probably controlled by the feds right now ?
<the_tubular>Not very 'libre' to me
<podiki>that's not what libre means though (and since it is libre, you can do what you want with it, practicality as a messenger not withstanding)
<nutcase>podiki how do I find out the number of dependents?
<AwesomeAdam54321>nutcase: `guix refresh --list-dependent` (or -l for short)
<nutcase>AwesomeAdam54321: thank you
<nutcase>podiki: "guix refresh elogind --list-dependent" tells me: Building the following 1680 packages would ensure 3220 dependent packages are rebuilt
<nutcase>podiki: I submitted a v2 patch to #73428
<peanuts>"update elogind to 255" https://issues.guix.gnu.org/73428
<necto>Hello again!
<sneek>necto, you have 1 message!
<sneek>necto, nckx says: Your mail hit the moderation queue 5h after I checked, so it was stuck ~somewhere~ else.
<necto>I am preparing a patch for an easy guix issue to get familiar with the process
<necto>Thanks, nckx! I can see my message in the issue thread now.
<necto>I've just sent another message to another issue thread and it is now shown up, even though it is from the same sender e-mail address. I guess gmail->guix mailing list just takes 6h delay regardless
<necto>Anyway, following https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html to submit a patch, I ran `guix style octave-cli` from my local checkout of guix (with my patch applied and committed on a branch), and got the following response:
<necto>> guix style: error: mkstemp: Read-only file system
<necto>What could be the reason for that?
<necto>Note, this is a subdirectory in my home directory, and I can modify files in this git clone easily
<podiki>nutcase: that will have to be done on some branch as that is a lot of rebuilds. Not sure which. Off for now, night!
<nutcase>ok, whom to ask to do that? Good night!
<apteryx>has anyone managed to pair a nintendo pro switch controller using the joycond service?
<sneek>Welcome back apteryx, you have 2 messages!
<sneek>apteryx, ArneBab says: I’m on it. For the first time with debbugs (Which is awesome! Why can’t I manage all my bug trackers like that?)
<sneek>apteryx, ArneBab says: you should have mail ☺
<apteryx>ArneBab: I guess this was in #guile; thanks, I'll catchup with my INBOX soon!
<mange>necto: I'm seeing the same thing, if that helps. Even using "./pre-inst-env guix style $package" in a git checkout fails. I managed to get it to do something with "./pre-inst-env scripts/guix style $package", though.
<apteryx>maybe this is why: https://github.com/DanielOgorchock/joycond/issues/145
<nutcase>How can I use a local git checkout of guix to reconfigure my guix system? Do I need to modify my operating-system's channels or is there an alternative way?
<mange>I would have thought that "./pre-inst-env guix system reconfigure config.scm" would do it.
<Rutherther>The guix executable itself has the channels loads inside of it. So pre-inst-env will work as far as you aren't using any other channel apart guix in your system config
<mange>Oh yeah, right, other channels.
<Rutherther>If you use other channels one possibility would be to just add them to load path with -L, or you could use guix-for-channels generated from pre inst env in the guix checkout
<nutcase>sudo ./pre-inst-env guix system reconfigure ~/.config/guix/config.scm gives me "guix: system: command not found"
<nutcase>and yes, I do use other channels
<nutcase>./pre-inst-env sudo guix system reconfigure ~/.config/guix/config.scm gives me a Backtrace ending with no code for module (guix ui)
<necto>thanks, mange, I'll try that out
<apteryx>OK, joycond-service-type works in Guix with the switch pro controller; I just didn't know I had to press that little round button at the back to pair it
<apteryx>also note this patch to have the joycond udev files installed: https://issues.guix.gnu.org/73341
<apteryx>finally, I had to be part of the 'input' group for some reason when using the controller via USB, despite the udev files supposed to give unprivileged access.
<apteryx>(reported here: https://github.com/DanielOgorchock/joycond/issues/148)
<futurile>morning all
<poddo3>ok so I can do a command in a scm with #:configure-flags , how do I do more of the same command?
<poddo3>is that phases?
<AwesomeAdam54321>poddo3: Yes, you'd have to replace the phase or add a new one
<AwesomeAdam54321>If the commands are for fixing problems with the source code, it's better written as part of a source snippet (unless it's for wrapping or hardcoding store paths)
<yaslam>is scheme hard for someone who doesnt know programming
<poddo3>well, its hard for me, and I know programming
<poddo3>so depends?
<yaslam>poddo3: is it hard to write your own desktop service for guix
<poddo3>im not sure what that means tbh
<poddo3>google wont help me understand it either
<yaslam> https://guix.gnu.org/manual/en/html_node/Desktop-Services.html like a config for a desktop environment, when you add it to your config it installs xfce
<yaslam>and when you comment it out it removes xfce and all its dependencies
<yaslam>i meant when you add xfce-desktop-service-type to your config it
<yaslam>installs xfce
<efraim>I think a desktop service is a bit easier than other service types. There's more checking the boxes to see *what packages do I need? *does anything need to be setuid? *are there any polkit/dbus actions? and then its easier to check in a VM
<poddo3>blegh Im still confused how to get more than one command to run in phases
<Rutherther>Phase is just a function. So just put two calls in it
<poddo3>hmm, thats not very clear to me
<poddo3>I'm trying to find an example, this is what I'm looking at
<poddo3> https://guix.gnu.org/cookbook/en/html_node/Extended-example.html
<poddo3>I basically just need to run 3 cmake commands
<efraim>in that example in the 'fix-hardcoded-paths phase there's one lambda and two substitute* calls.
<efraim>you could have (lambda _ (invoke "cmake" ...) (invoke "cmake" ...) (invoke "cmake" ...))
<poddo3>oh okay
<futurile>poddo3: if you're interested in build-phases I recently finished a post about it: https://www.futurile.net/2024/07/23/guix-package-structure-build-system-phases/
<poddo3>thanks
<futurile>poddo3: looking for feedback on whether it explains it well - so super interested if you do read it - it's too darn long though!
<poddo3>Lots of words for me a dumb adhd person but some of the code has already helped me
<poddo3>so like, is there a way to get the output of the invoke commands?
<poddo3>so I can iterate through errors and missing dependencies and stuff
<futurile>poddo3: guix build <blah> should give you the output, you can do guix build --log-file <blah> to see the log file and then view that
<poddo3>ohh
<poddo3>here im using package lol
<poddo3>unfortunately the log doesnt have the cmake error
<poddo3>just that it returned 1
<futurile>poddo3: try something like (invoke "cmake" "--verbose")
<futurile>poddo3: you can also debug the build by creating the same environment that the builder is using, and then just playing with commands 'by hand' if you're stuck
<futurile>poddo3: sorry more docs - https://guix.gnu.org/manual/en/html_node/Debugging-Build-Failures.html
<poddo3>yeah reading that now
<poddo3>the issue is, my tmp directory deletes itself?
<poddo3>oh
<poddo3>keepfailed
<poddo3>muhahaha
<futurile>right - and it should be there in /tmp until you reboot
<futurile>I've never quite figured out how to get guix shell to use the 'environment' file - so I just cut-n-paste those in
<poddo3>oh
<poddo3>how do I get a @version in inputs?
<poddo3>is there like a list of valid modules
<futurile>poddo3: you use the 'variable' name in your inputs - so do guix edit package@version - at the top it gives you the variable name
<futurile>poddo3: it will generally tell you the module that's missing when you do a 'guix build' if you have a variable where the module's not there
<poddo3>nice thank you
<poddo3>this has been very helpful and I've made progress
<poddo3>alas I must sleep
<futurile>poddo3: heh, happy dreams of guix build debugging
<f1refly>I found this (https://pubs.opengroup.org/onlinepubs/9799919799/) document describing an 'at' utility that I would like to use. The document reads like `at` should come with my operating system but I cannot find it, am I doing something wrong?
<aadcg>I want to setup a guix environment that exposes a dynamic library. For example, guix shell -D sqlite. I expected that LD_LIBRARY_PATH would point to /gnu/store/<hash>-sqlite/lib. What's the canonical way to achieve it in Guix?
<aadcg>I can define a variation of the sqlite package and set search-paths, but is there a better way?
<f1refly>aadcg: when I did some java development a few months ago I was told using a wrapper script that sets LD_LIBRARY_PATH="$GUIX_ENVIRONMENT/lib" is the way to go
<aadcg>f1refly: I see, thanks
<f1refly>maybe this should be set automatically when a GUIX_ENVIRONMENT is detected, i feel like that would be useful
<futurile>f1refly: on debian there's a package called 'at' - it's pretty old-school so unsure if it's in Guix
<futurile>f1refly: it's got a really cool syntax if I recall, but it's been a while!
<f1refly>I don't think it's on guix
<f1refly>Do you know a good alternative for it?
<f1refly>I have a bunch of files I'm trying to rsync over a rather slow connection so I'd like to do it sequentially, I figured some command queueing would be a good solution for that problem
<futurile>I guess systemd-timers (not guix) or a shepherd user service (on guix) as you basically want to 'run a command at time'
<Deltafire>f1refly: sounds like you're describing a shell script!
<futurile>does guix run a cron of some form?
<f1refly>Deltafire: but I want to dynamically add stuff to the queue as I stumble over it
<Deltafire>futurile: yes, https://guix.gnu.org/manual/devel/en/html_node/Scheduled-Job-Execution.html
<f1refly>should I maybe create a named pipe and pipe paths to rsync into it?
<f1refly>the target paths on the other end aren't all in the same location though...
<f1refly>I'd need to queue tuples
<Deltafire>maybe you could write a script to read from the named pipe and execute the commands
<futurile>f1refly: I think you want a simple script and the Scheduled job execution that Deltafire is pointing at - it's mcron basically
<reyman>hi !
<reyman>i search the correct way to fetch a tar.gz for a private specific release using the scheme : git+https://PRIVATETOKEN@github.com/nameoftherelease.tar.gz
<plank46>I'm trying to package https://factorcode.org/.
<plank46>This currently looks something like this (as an early iteration):
<plank46>```
<plank46>(define factor
<plank46>  (package
<plank46>   (name "factor")
<plank46>   (version "0.100")
<Deltafire>interesting, the 'at' command seems to be maintained by Debian
<Deltafire>which would explain why it's present on my Ubuntu machine
<f1refly>it read like it is supposed to be a part of every unix-like system so I was suprised it is not available at all
<nckx>plank46: Use paste.debian.net for code and other multi-line pastes. Sending them line-by-line is not customary on IRC. You were quieted by a bot and your message truncated.
<plank46>Ah I see thank you I wasn't aware. I'll rewrite it with a paste.debian.net link
<Deltafire>'at' is present as standard on MacOS also, same version as Debian
<nckx>plank46: No problem, and thanks! Also, Markdown and other markup has no special meaning here, no need or advantage in using ``` etc. We may use *emphasis* etc. but it doesn't render as bold.
<plank46>I'm trying to package https://factorcode.org/.
<nckx>Deltafire: Eh, I once started packaging 'at' but can't remember why I didn't finish...
<plank46>This currently looks something like this (as an early iteration):
<plank46> https://paste.debian.net/1330247/
<plank46>As part of the build process there is a need to download a boot image
<plank46> (https://concatenative.org/wiki/view/Factor/Building%20Factor). As far as I
<plank46>understand there is no network access available during the build process
<plank46> (https://guix.gnu.org/manual/en/html_node/Build-Environment-Setup.html).
<nckx>plank46: Same thing. Just type line by line. This isn't Matrix (yay), you can't paste emails into the text box. Each newline sends a message.
<nckx>The bot quiets you because 'flooding', even if done unintentionally, will get you kicked from the network if you exceed limits which aren't much higher than our bot's.
<nckx>Your lines are much shorter than IRC supports so the newlines weren't needed anyway.
<plank46>I'm trying to package https://factorcode.org/. This currently looks something like this (as an early iteration): https://paste.debian.net/1330247/ As part of the build process there is a need to download a boot image (https://concatenative.org/wiki/view/Factor/Building%20Factor). As far as I understand there is no network access available during
<plank46>the build process (https://guix.gnu.org/manual/en/html_node/Build-Environment-Setup.html). What would be the correct way to handle this kind of build requirements? The documentation seems to indicate that "http(s)_proxy" is respected, which I assume means that should be the way to approach download needs. But I'm having a bit of trouble
<plank46>understanding how that should be set up. As soon as I'm in the build process I have no internet access so I cannot prefetch the image at this point. At some point the original repo is downloaded so maybe by modifying that phase to additionally obtain the image?
<plank46>nckx Thank you for the explanation. I must this is my first time using IRC, I should have gotten comfortable with it before trying to ask for help. Hopefully this time I got it right.
<nckx>It's not a big deal. Your last messages were fine and now it'll never happen again :)
<mange>plank46: You might need to add the boot image as an additional (native?) input. Then you can reference it in your build step. The tzdata package is an example of a package that does this (not necessarily a good example, just the first I could find).
<nckx>In this particular case, I assume the upstream build system will download the boot image only when it doesn't find it in some known location in the build directory, so copying it (and any other files) in a phase should be enough to stop it from trying.
<mange>It looks like you need to provide the image as part of the build. The instructions say to run "./factor -i=boot.<arch>.image" after compiling the VM.
<plank46>mange It depends on how you do it. Normally you would download as part of the build through the "build.sh" script they provide which automate the various steps. But looking at the "tzdata" package that looks sensible to me. If I understand basically treat obtaining the image as its own package and use it as a dependency of the main package. Then I
<plank46>can copy it over and use it as part of the building process. I'll try this method. Thank you for the help!
<nckx>As a more general point, to save you from looking for solutions in the wrong places: you cannot 'opt into' network access during you package build. Don't look for hidden 'discouraged' doors. There are none.
<mange>Based on the instructions, I wonder if you even need to copy it over. You might just be able to provide the input path as the -i argument.
<nckx>The only way to get network access in a derivation is to declare it as 'fixed output', meaning its output hash must exactly match the one you provided. Guix origins are examples of this. Packages are not fixed-output derivations and will never get network access, full stop.
<taeaad>When I do guix pull, how do I reinstall my custom packages?
<nckx>This has been your random general point.
<taeaad>guix install $(guix build -f my-package.scm)?
<taeaad>I'm getting an import error in Python: version `GLIBC_2.38' not found
<mange>"guix install -f my-package.scm" should do it, but I don't know that it will fix your glibc issue.
<nckx>I don't think guix install knows -f. UI bug, sure.
<mange>nckx: I think it's *technically* possible to run the guix-daemon with --disable-chroot, but you really shouldn't. :P
<mange>Ah, "guix package -f my-package.scm" it is, then.
<nckx>s/install/package/ should—yes, exactly :-p
<nckx>mange: OK, that's an out-of-universe answer, but you're not wrong!
<nckx>/me braces for 'hello how can I declare my package to request a disable-chroot build please' if the wrong underpaid intern reads that.
<taeaad>I am getting "hint: Try upgrading both `python-lightgbm' and `python-seaborn', or remove one of them from the profile." The former is my custom package, python-lightgbm.
<mange>"guix package -f my-package.scm -i python-seaborn"?
<mange>It kind of depends on the specifics of what that error message says, but also I've never figured out how to reliably resolve these conflicts (other than moving to using manifests).
<taeaad>"hint: You cannot have two different versions or variants of `python-seaborn' in the same profile." I wonder if this means that python-seaborn was updated with guix pull? And my lightgbm version needed the older one?
<taeaad>I wouldn't mind moving to a manifest to be honest.
<taeaad>I was mostly tinkering but I can move my own packages to manifests, just not used to doing it yet.
<mange>"guix package --export-manifest" should output your current profile as a manifest to get you started. :)
<nckx>Manifests are fine but cas still hit unsolvable situations, becaus there's not always a solution. If 'guix upgrade' (=upgrade all packages) complains, when it should be bringing the latest of *everything*, a straightforward manifest won't fix that.
<nckx>s/cas/can/
<taeaad>My setup was working before I did guix pull today, so I suppose I can roll back.
<mange>I don't know the details, but I have got into trouble with "guix upgrade" that I wasn't able to work out, where I was able to with a manifest. I can't remember if it was something like error messages being more helpful, but I know I've run into issues where I could not get out using upgrade.
<nckx>You are right, you might have to hold back some major version upgrade. That's still possible from the CLI but not using the 'guix upgrade' alias and sometimes not easily.
<nckx>taeaad: Updating your channel's version not an immediate option?
<taeaad>nckx: How do I do that?
<taeaad>Shouldn't it in theory be possible to build a manifest file from a requirements.txt, I mean if you know the versions are all compatible? And have a python-specific .scm manifest?
<taeaad>And special python profile I suppose.
<mange>In theory, yes, but it can be tricky sometimes. In the Nix world there's a tool called Bundix for Ruby which takes a Gemfile.lock and turns it into a Nix development environment. It's pretty slick, but it also relies on a database of patches to apply for specific versions of packages to make them build properly.
<mange>Oh, and non-Ruby dependencies that are needed for the different packages (like the pg gem needing Postgres).
<taeaad>But does this distinguish between building from source and using something like wheel files?
<mange>No? I don't really know how wheel files work, so I couldn't say.
<nckx>taeaad: I just meant updating (as in 'editing', not 'bumping the version field') your custom lightgbm package to use the seaborn version from Guix master. If that doesn't make sense then never mind.
<taeaad>I think that one of the versions were bumped higher that lightgbm is not compatible with, because my custom package doesn't include version numbers.
<taeaad>Let me post both of them in pastebin.
<taeaad> https://pastebin.com/raw/LxQnbCf8 python-lightgbm
<taeaad> https://pastebin.com/raw/w7WdMCp2 r-adegraphics
<taeaad>So I assume based on the error messages that lightgbm from Pypi which I create into python-lightgbm has a dependency that has been bumped, possibly python-seaborn, that previously was a lower version and worked.
<taeaad>Can it be a cache issue? These version numbers look the same to me, but the hashes differ:
<taeaad>guix upgrade: error: first entry: python-cffi@1.15.1 /gnu/store/miyfjfaqv3c803h3jallh925nnrs2i6k-python-cffi-1.15.1
<taeaad>guix upgrade: error: second entry: python-cffi@1.15.1 /gnu/store/65wsigvybvlnv2znahvvd0xzk8254chb-python-cffi-1.15.1
<taeaad>Both are python-cffi-1.15.1?
<nckx><cache issue?> No, Guix doesn't work like that. If hashes differ, the inputs differed. Two packages can easily have the same name & version & wildly (or subtly!) different inputs & hence a different hash.
<nckx>Guix doesn't do 'I think I saw this package a week ago so I won't recompute something'.
<taeaad>But how can the hashes differ?
<nckx>Quite easily if any of the inputs differ even in a tiny detail.
<taeaad>What exactly gets hashed?
<nckx>And 'inputs' is transitive too.
<nckx>ACTION AFK, sorry.
<taeaad>Np
<mange>What command are you running to see that issue, taeaad? This is the sort of thing where I've run into issues with "guix upgrade" that I've been able to solve by using a manifest.
<Franciman>hi, when i do a guix home roll-back and go to a different generation, is there a way keep those packages versions but add new changes to the config?
<taeaad>mange: guix package --install-from-file=python-lightgbm.scm
<Franciman>s/different/previous/
<taeaad>mange: I am currently moving them to modules and then adding to the search path to see if that works.
<mange>You could use time-machine to go back to the version you used to build the previous Home generation?
<taeaad>mange: That is my recourse if this doesn't work, I think can just go back to the generation at the date that it still worked, few days ago.
<taeaad>Actually anything earlier than yesterday should work.
<taeaad>mange: What is the command you use to install your manifest?
<taeaad>guix package -m my-setup.scm?
<taeaad>Let's see if this works...
<mange>I use "guix home reconfigure my-config.scm", but I used to use "guix package --manifest=my-config.scm".
<sham1>If I make a channel for personal configs and have that depend on commit pinned channels for replication, do I need to also have the pinned channels in the ~/.config/guix/channels.scm
<kaij>is it actually a problem when a user/group appears more than once, or why is that warning?
<nutcase>is there a way to find out, how many packages are going to be rebuilt (not downloaded) by a guix system reconfigure?
<nutcase>(and which ones)
<Lumie>nutcase: inserting --dry-run after the `guix system reconfigure /path/to/config.scm` will show what would get installed, but that's off the top of my head.
<Lumie>It doesn't actually apply the changes
<Lumie>Keeping also in mind what will be built during the reconfigure
<nutcase>sure, too easy, thanks :-)
<yaslam>is it possible to create a desktop service which includes my config for a window manager
<sham1>Yes
<sham1>,next
<sham1>But yeah, you can have a service depend on `home-files-service-type` instance, which installs the actual file
<sham1>And there's also `home-xdg-files-service-type` of course for if you want ~/.config and whatnot
<Lumie>I would be curious to see example configs of that
<Lumie>With the mentioned services
<Lumie>I'm still a noob with Guix System
<yaslam>sham1: cool thanks
<yaslam>Lumie, me too
<sham1>I'll see if I can cook something up. I'm rewriting my configs to make them .
<sham1>More modular and such
<Lumie>Nice
<Lumie>sham1: hit me up when you do
<mange>I have a Guix system running on a computer connected to my TV, which uses i3 as its WM. To make that easier to manage (with "guix deploy") I have this in my services: (extra-special-file "/home/television/.config/i3/config" (local-file "i3-config"))
<Lumie>mange: that's the stuff! I have almost an indentical setup
<mange>So that's one way to do it in a system config. Not how I would usually recommend doing it, but if you want to it works.
<mange>My regular computers use Guix Home to do something similar.
<mange>But at the user level, rather than the system level.
<Lumie>My tv is connected to my Lenovo Mini 5i with Guix system with i3
<riabenko>Is it usually a bad idea to install packages with dconf in propagated-inputs when on a foreign distribution? Could I just try building the package without dconf?
<mange>Mine is connected to my old computer (that I built back in 2012), and we control it almost exclusively with kde-connect.
<Lumie>I see mange
<taeaad>mange: Moving everything to a manifest that reads two modules worked.
<sham1>That's one thing I've actually been meaning to experiment with: combine the operating-system and home configuration files by way of the `guix-home-service-type`
<taeaad>I think there was something wrong with the way I installed the packages initially that conflicted with the guix pull and caused the hashes to be different.
<taeaad>Which makes me interested in how hashes are computed.
<taeaad>Bc the versions didn't change.
<mange>The versions of the leaves might not have, but the hashes are calculated from *all* the (transitive) inputs.
<mange>So anything in the dependency graph could have changed.
<sham1>Well, more like have the home and operating-system configs come from different modules but with that system service as a glue
<yaslam>whats the benefit of guix home vs regular dotfile management with stow for example
<taeaad>By transitive you mean when you do functional composition, mange ?
<taeaad>Is the graph itself hashed?
<mange>I don't know what you mean by that. I mean all of the inputs, and their inputs, and their inputs, and their inputs, ...
<futurile>the total input graph
<taeaad>Yeah but that is not well defined. A graph can look different but mean the same and thus have different hashes.
<futurile>mange: out of curiosity - does it change if a build phase is altered? so if someone adds a build phase
<futurile>taeaad: yeah good point - I've never really tested it - I don't think there's a command to say 'what changed' when it alters
<mange>I believe, specifically, the hash in a store output is calculated from the contents of the .drv file that generates it. The .drv file contains a reference to the builder script (i.e. from the phases), so that's an input.
<mange>That means (a) the hash is well defined, but some changes can cause the hash to change without actually changing the output, and (b) changing the phases will change the output hash.
<mange>You can see the relevant .drv files with "guix build --derivations $package", if you want to see what the build instructions look like.
<futurile>ah got it - thanks
<taeaad>I am not saying the hash is not well defined, it has to be otherwise it can't be a hash, I am saying that two trees that represent the same dependencies could be not isomorphic.
<taeaad>Unless you have an algorithm that standardises dependency trees.
<nutcase>Lumie: However, the list is not complete, right?
<nutcase>aborting after some builds and restarting gives me another list with packages that weren't listed before
<taeaad>For example, I have (not for Guix) code that I use to linearise dependencies into a chain of sets, where elements of a set can be run in parallel. Many nodes in the chain are singletons. This algorithm that I use standardises a dependency tree into a linear preorder which one could hash if you wanted to rather than hashing the user defined dependencies.
<taeaad>mange: I'll have a look at --derivations, should be insightful for me.
<taeaad>mange, nckx: Thanks for the help, my system works again now. Looks like I have moved to manifests files now.
<Lumie>nutcase: weird, it should be
<Lumie>I'm not an expert on it though
<nutcase>but it matches a usual (wet run) reconfigure process, where you have several bunches/blocks of downloads or build, respectively
<rhuijzer>Hi. guix refresh --list-dependent %package% lists all the dependent packages. How can I locally test-build all of them?
<rhuijzer>With my updated package in the pre-build-env
<mange>The output of that "guix refresh" call says "Building the following X packages would ensure Y dependent packages are rebuilt: ...". If you build those packages with "guix build" that should check everything.
<rhuijzer>Thanks. I thought so but that results in: guix build: error: gnome-meta-core-utilities: package not found for version 44.10
<rhuijzer>Which seems to be a gnome meta package, but the error goes a bit above my head because they don't seem to have version
<rhuijzer>Because meta-packages don't seem to have versions
<futurile>rhuijzer: you might have to mange it manually - here's a thread from guix email list about it - https://lists.gnu.org/archive/html/help-guix/2022-11/msg00257.html
<futurile>"mangle it manually" - is what I meant
<taeaad>How do you run a program but also source a profile? For example, to run Zathura on a PDF I first have to source my profile.
<futurile>guix shell?
<rhuijzer>futurile: that seems to be what i'm looking for. Thanks!
<taeaad>I mean, when I call it outside of my CLI, for example opening it from Calibre or such.
<taeaad>Or let's say via xdg-open.
<futurile>hmm a script I guess? I guess a profile is just 'source /some/profile/; export GUIX_WHATEVER; calibre' I don't know if you can do that with an xdg-open entry
<rhuijzer>Building 1700+ dependent packages for libusb, hopefully it will be done somewhere tomorrow with no or mimimal errors
<rhuijzer>3255, including stuff like gnome so that's going to take a while
<futurile>you're going to be forced to leave your computer while that builds !
<sham1>Obviously the best thing to do is to sit and watch it as it does its compilation. Assert dominance! /s
<sham1>Anyway, channeling of the initial operating-system definition is done. Now to do the same for guix home
<rhuijzer>ACTION doesnt want to watch digital paint dry
<Lumie>sham1: woo-hoo
<rhuijzer>I'm curious if it will be done in a day, otherwise i might use a build server at work
<rhuijzer>First error! : ice-9/boot-9.scm:1685:16: In procedure raise-exception:
<rhuijzer>In procedure stat: No such file or directory: "lisp/emacs-lisp/comp.el
<rhuijzer>At first glance not related at all
<ieure>Bordeaux super slow for anyone else? Getting <1kb/sec downloading substitutes from it.
<dariqq>small update from yesterday: Managed to build fractal without vendoring the crates first. It is byfar the most complicated package i wrote at 200 loc and then another 600 loc for the 2 git dependencies (with multiple subcrates). Dealing with very weird behaviour caused by stale cargo.lock files and frustration to patch out even more pins to specific git commits
<futurile>dariqq: did you use that cargo2guix project that <someone> started work on?
<efraim>I suggest deleting the cargo.lock
<efraim>also working from the rust-team branch, there's ~270 commits there for newer rust and packages
<dariqq>futurile: yes. I originally used my own helpers but cargo2guix was superior.
<podiki>efraim: I saw your comment on the mesa-branch merge request. how do you feel about the sub coverage though? i saw no progress for about a week, and then i updated mesa/rebased again
<podiki>(also, not sure why it shows x86_64 as only around 81%, was mid 90% before that update/rebase and no real new failures reported....)
<dariqq>The generated package definition was not useful for fractal itself and the git-crates but at least the generation of #:cargo-inputs was a time saver. (and of course the 900 lines of other random crates)
<efraim> https://qa.guix.gnu.org/branch/mesa-updates this one?
<dariqq>s/900/9000/
<ieure>Anyone interested in looking at this patch I contributed in March? Looks like QA finally got to it and it's green: https://issues.guix.gnu.org/69692
<efraim>podiki: I haven't really looked at the substitute coverage at all until now
<rhuijzer_>A bit anoying to come accross unmaintained broken packages when mass-building dependent packages for an updated package
<rhuijzer_>Can someone look at https://issues.guix.gnu.org/71989 , should be a really easy one, the package needs to go IMO
<rhuijzer_>Upstream stalled for quite a long time
<dariqq>rhuijzer_: Are you using the --keep-going option for guix build?
<rhuijzer_>dariqq: oh that's what I needed. Thanks!
<podiki>efraim: yeah the QA page. i'm not sure if bordeaux is building eg aarch64 or just still catching up from core-updates or master
<podiki>maybe i'll just merge it soon and use a news entry to note non-x86 subs might be behind for a while?
<efraim> https://qa.guix.gnu.org/branch/master it's caught up from master, it just looks like it's building other branches first
<podiki>i see
<podiki>maybe we need some plan for handling non-x86 better because it takes so long to catch up (if it ever does before something else comes up)
<podiki>or managing expectations for those expecting substitutes there
<podiki>(i guess best is to just get more building power)
<kaij>how do I use chown with a specific user & group both only known as strings? I see various combinations of getting the uid/gid not not sure what applys to strings.
<ieure>kaij, In what context? On the CLI?
<kaij>ieure: in guile, like an activation service
<kaij>I think something like (passwd:uid (getpw user)) and (group:gid (getgr group)) might work? not sure
<ieure>I'd assume you can just pass the string of the username, but I don't really know.
<efraim>ekaitz: I've started working on integrating commencement.scm into (gnu packages commencement)
<futurile>whoop whoop
<ekaitz>efraim: and how is it going?
<taeaad>ieure: Mine was slow earlier today too.
<sham1>Alright. Channel now has authorization
<bbianomker>Hi can somebody help me? After I've edited my /etc/config.scm what do I run to make the changes?
<sham1>Are you in the installation process or the already-installed guix system
<efraim>ekaitz: pretty well so far. right now it's pretty slow adding 1 or 2 bits and doing some clean-up and making sure x86 and x86_64 still build hello-mesboot
<Rutherther>bbianomker: all the stuff relevant for changing the system is under "guix system" command. So you might want to read https://guix.gnu.org/manual/devel/en/html_node/Invoking-guix-system.html
<bbianomker>Oh okay thanks
<efraim>with all the tabs I have open in screen I've gotten some free progress on aarch64 also, just from the version bumps and some configure flags
<ekaitz>great! efraim !
<bbianomker>So if I just want to install packages that I added to /etc/config.scm, I run `guix system reconfigure /etc/config.scm`?
<ieure>bbianomker, Yes, though very few packages need to be in your operating-system config, most should be in your user profile.
<bbianomker>Oh I see thank you
<bbianomker>What happens if I put a package in /etc/config.scm that I installed in my user profile?
<Rutherther>then you will have it in two profiles. On guix system the user profile comes first in PATH and such by default, so you will be using the one for your user
<bbianomker>Ah I see
<bbianomker>Is there a list of Guix substitute servers?
<bbianomker>The download speed on the default one is pretty slow for me
<riabenko>bbianomker: It should be fast. Is it slow only on a specific Internet connection?
<ieure>riabenko, Both ci and bordeaux have been unusably slow for me all day. I have been C-c'ing and restarting a `guix system reconfigure` for several hours, as Guix screeches that "substitute server is somewhat slow" and it pulls down substitutes at 1kb/s.
<bbianomker>It gets stuck at 27% when "indexing", I just realized that that's not an internet thing
<ieure>While I agree that it should be fast, my experience is that it is very often very slow.
<ieure>I'm on a gigabit fiber connection.
<futurile>it's something to do with peering from what I can tell, rather than the servers - that's why it's tricky
<futurile>ieure: did you try the new USA one?
<riabenko>ieure: This sounds not unlike to what was happening to me earlier this year. Happened to be related to the MTU value. There are also other complaints in issue 71238 : https://issues.guix.gnu.org/71238
<peanuts>"Installer image consistently fails to run system init due to TLS error" https://issues.guix.gnu.org/71238
<riabenko>synchronous
<ieure>riabenko, Seems like a totally different issue, I'm not getting TLS errors, just downloading substitutes is insanely slow.
<ieure>Usually when this happens, someone complains in here, someone restarts something on some server, and it's fast again.
<alphalpha>Hello everyone, i need a new distro and i am concidering guix but i have a few questions
<alphalpha>on a scale from debian to arch, how up to date are the packages? and are you happy with your package manager?
<alphalpha>do i need to know any LISP?
<ieure>alphalpha, It's not a linear spectrum, many things are newer than Debian, some things are older than Debian.
<ekaitz>also alphalpha you should learn a little bit of scheme
<ieure>alphalpha, You will need to know some basic Scheme to do any system configuration.
<ekaitz>but just a little
<futurile>alphalpha: one way to try it out is to use it on top of your existing distribution - as an 'additional' package manager - easy to get started
<alphalpha>thx all, i actually know a little scheme
<alphalpha>where can i find information on the release cycle / roadmap
<futurile>alphalpha: it's a rolling release. The announced 'release' basically re-roll the ISO image (though you can get latest all time)
<alphalpha>ah i see
<futurile>alphalpha: best way to follow the project is the guix-devel mailing list and there's guix-help
<poddo3>where can I get JAVA_COMPILER set in my package phases