<roptat>mh, what's the correct linking order for static libraries? should I put dependencies first, or dependents first'
<steggy[m]>👋 I'm using fish shell, and to clear the screen it wants 'tput' from ncurses for clearing the screen. I _could_ just add to my path, but that seems brittle and "unguix" if I'm understanding things correctly - especially given that ncurses is a required input, it feels like it should just be exposed(though, not as a propagated, because I don't want to pollute stuff). Do I have that right/am I possibly missing something obvious?
<nckx>Hi steggy[m]! I just tried ‘guix environment --pure --ad-hoc fish -- fish’ and it clears the screen just fine, but I don't use fish. Is tput really required? When?
<nckx>Or maybe it's loading some file behind my back that pulls tput back into the environment.
<steggy[m]>Yeah, wonder if `which tput` resolves for you
<nckx>I really don't know the first thing about fish ☝
<steggy[m]>but, it might also be my weirdness with using vterm in particualr
<steggy[m]>s/particualr/particular and that playing with fish/
<steggy[m]>well, so I definitely do have ncurses in store, but given that ncurses is an input to fish, there should be some way to let fish know about it without polluting the rest of my env with whatever version of ncurses fish wants, right?
<steggy[m]>Again, could be totally off base, I only started guix a month ago and still trying to get used to the mindset :)
<nckx>steggy[m]: Since you're new (welcome!) here(?), just want to point out one pitfall: you might be tempted to use wrap-program here to add ncurses & coreutils to $PATH, as is done elsewhere in Guix. You can't do that here: fish is a shell, and a shell silently munging PATH to invoke a different coreutils than the user might've installed is a big no-no.
<steggy[m]>Gotcha - yeah, that would be very uncool to do
<vagrantc>most often the answer to such questions is "nobody thought to try" :)
<nckx>steggy[m]: For unrelated reasons related to cross-compilation, you can't simply use (which …) either. Instead use (lambda* (#:key inputs #:allow-other-keys) (substitute* "file" (("clear") (string-append (assoc-ref inputs "ncurses") "/bin/clear"))) …))
<maximed>it's just a bit tedious to write, and 'assoc-ref' might be a bit scary to newcomers or something
<steggy[m]>Out of curiosity - my current way of playing with this is just "put the package I'm messing with in a file, do things, `guix package -f $FILE` - is there a more clever way of doing this kind of iterated change-test looping?
<maximed>The input labels are becoming less prominent to ‘the user’, but internally they are still there, and do not seem to be disappearing anytime soon
<nckx>steggy[m]: The procedure substitute* will work, if that's what you mean, and it will successfully embed a file name to clear, and Guix will track that (x86) as a dependency of (arm) fish and make sure its present on the system when you install fish, it just won't run and fish will fail in a probably ugly way at runtime.
<maximed>Instead, "guix environment ..." builds a temporary profile, containing only the listed packages
<maximed>nckx: (about search-input-file): Additionally, search-input-file raises a ‘nice’ error if the file doesn't exist
<maximed>instead of type errors with unclear backtraces
<maximed>it's origins were from before the labelless thing actually, IIRC
<bsturmfels>I'm just attempting to build coreboot on Guix, but it's complaining about a missing Ada compiler "gnat". Does anyone know if this is available in Guix under another name? I can't seem to find it by grepping the sources
<bsturmfels>build warning also suggests it might be called "gcc-ada"
<roptat>bsturmfels, I think gnat has a bootstrapping issue: it's partially written in ada
<oriansj>roptat: guix also has a Ada compiler written in C, which could be used to bootstrap gnat if I remember correctly. which was the original Ada compiler used in GCC, so it does have a valid bootstrap path in GCC. I can't however speak to if someone has done that work yet.
<iskarian>sneek, later tell excalamus: I don't think you need to combine the packages; just making a package for plover-python-dictionary and then installing both that and plover in your profile *should* work
<sneek>excalamus, iskarian says: I don't think you need to combine the packages; just making a package for plover-python-dictionary and then installing both that and plover in your profile *should* work
<excalamus>working on defining plover-python-dictionary atm
<brendyn>seeg, I believe there is a blog post somewhere of someone attemping to calculate how many dependencies are required for basic js packages and it went in to the several thousands, including older versions of the same package
<brendyn>package those dependencies so we can generate everything in Guix. When you look at how many dependencies there really are, it begins to spin out of control
<dhruvin>Hello guix! I have updates on sourcehut builder image and a follow-up question.
<dhruvin>sr.ht developers told me to continue using the repository field of build manifest for channels (even though they are not perfect fit).
<muradm>i have a function that has one argument, that one argument can be either record of some-type or (program-file ..). i can easily test if passed in argument is record by some-type?, for program-file, i see from code that it is also record, but its program-file? is not exported, why?
<muradm>how can i check if passed in thing is a thing returned from (program-file ?
<lilyp>muradm: we typically use (ice-9 match) for record matching within guix, hence the predicates themselves aren't exported
<seeg>ah, ok brendyn, is there a way then to do it like nix?
<muradm>lilyp: hmm... you suggest me to write (match (($ <program-file ...))) ? but wouldnt it fail, if that match applied to <some-type> ?
<lilyp>you can have a separate match clause for your <some-type> record, no?
<brendyn>seeg, I'm sure there is a way with a lot of work. I think you need to package nodejs
<muradm>dhruvin: hi, personaly i liked previous version, where you just had channel in scheme.. :) but for the sake of curriosity, why do you go with properties like multiline string, instead of straight yaml?
<muradm>maybe it would be easier to map yaml node to channel? also more user friendly and clear syntax
<attila_lendvai>what's the deal with the guix wiki? will there ever be a dedicated one?
<dhruvin>muradm: Doing this will help implement validation of user-input scheme code. I'll still have to prepend said channel specification to %default-channels in channels.scm for guix pull to work.
<dhruvin>muradm: Are there any upsides to validating user input before adding a new channel, if guix pull is called immediately after doing so anyway?
<muradm>dhruvin: i suppose if you are going to call "guix pull" from script it is possible to trust that it will fail any way on corrupt channel definition
<dhruvin>muradm: The reason why I asked that is because I'm a bit stuck here. I'll either have to pattern match sexp (which is prevented by the requirement of evaluation of make-channel-introduction and openpgp-fingerprint), or will have to eval the string anyway to check for a valid channel being returned.
<muradm>dhruvin: what i understand now, is you just want to configure supposedly container you are in which is for one time use, right?
<muradm>read "guix package --export-channels" read your input, make a single list and write to /etc/guix/channels.scm may be
<dhruvin>muradm: Yes, but that uses channel->code (to output channels.scm compatible code). I need code->channel.
<muradm>dhruvin: months ago when i started writing shepherd services, i wrote one, that was interacting with guix, i.e. it was defining dependencies, making derivation and starting it :) it was pretty slow, but showed the power of "scheme every where" :)
<dhruvin>muradm: In our case builder's users will be adding channel to the build manifest and the builder's shepherd service will be adding them (supposedly after validating/verifying) to ~/.config/channels.scm.
<mbakke>dhruvin: I'm not yet sourcehut user, but at work we use the 'guix-install-action' on GitHub to generate reproducible container images, does your work mean I can do similar things on sourcehut now? :-)
<civodul>apteryx: not really "interested" but i vaguely considered packaging it some time ago, as an example kernel for Jupyter
<apteryx>OK! I got it working in the "build everything at once (patched LLVM + patched Clang + Cling plugin), but when attempting to build it from prebuilt (patched) LLVM & Clang, linking to LLVM libraries fail
<EdLin>raghavgururajan, openpower had a lot of promise, but then hackers discovered an exploit whose mitigation requires constant flushing of L1 cache, garanteeing no commercial application for that architecture until a redesign occurs.
<qzdlns[m]>If I'm running =inherit= thorugh some =operating-system= definitions, but how should I deal with services? Getting missing core (e.g =networking=) when calling =operating-system-user-services=, but duplicated core (e.g shepherd root, system) services when I just take all base services with =operating-system-services=
<apteryx>civodul: another question I had was whether LGPL2.1+ applies as a the "combined work" license; LLVM is Apache 2.0, which Cling (LGPL 2.1+) links to.
<civodul>apteryx: ah, i suppose LGPL applies to the combination
<civodul>annoying that there are too many false negatives when running "guix weather -c10" on core-updates
<maximed>i.e., (package (inputs STUFF) ...) is internally translated to something like (package (inputs (lambda () STUFF)) ...)
<asgas>My hardware really sucks, so it's just not practical to compile from source. I only ask for whoever maintains the repos to switch to the LTS branch rather than stable for blender.
<civodul>asgas: packages are maintained collectively, and we'd happily welcome you on board
<civodul>if you could try upgrading it and report how it went or send a patch, that'd be perfect
<maximed>asgas: "--cores=1" and "--max-jobs=1" reduces memory usage
<asgas>So this isn't like say debian to where there is an assigned maintainer?
<maximed>in case you mean "little RAM" with "hardware sucks"
<maximed>asgas: sometimes there are de-facto maintainers for some packages, build systems, importers ...
<civodul>asgas: no; the project purposefully chose to not list specific names under each package
<civodul>in practice there are still affinities, of course, but there's no notion of "ownership" in the sense Debian has
<asgas>If I ever get around to making a package for 2.93.4 I'll be sure to submit a patch. Guix seems to be more reliable and trustworthy than some strangers ppa for ubuntu.
<AleQu[m]>Ni! Hi all ... Any tips on running cups besides adding the service to config.scm ? The web interface loads but the admin page doesn't. In the logs trying to load /admin shows several connection attempts and then "max clients reached".
<roptat>I'm building llvm, and it's interesting to see a mix of [ 6%] and [100%] in the logs ^^'
<muradm>i have a function that receives argument, which i normally pass result of (program-file ....), for documentation of that function argument, would it be correct to write "A gexp->script like executable to use as ..."?
<asgas>To be perfectly honest, I'm away from my GNU/Linux machine right now. So I'm unable to use guix for the time being. I have an SHA256 hash checker and base32 program I used to get the base32. Sorry about that, if someone with guix access could double check, that would be great.
<excalamus>EdLin, guix package -u=REGEXP, there's also --do-not-upgrade=REGEXP, for updating specific packages or excluding others
<maximed>The output from "guix hash ..." is the base32
<roptat>asgas, that's definitely not a base32 string
<roptat>asgas, guix download told me it's "1ckz91hj0b5gzbf0534vfd09050sbvq7s8chrg20mbykyaf43hg5"
<asgas>Then that would be the correct hash because I did it wrong.
<rndd>hi guix! is it possible to manage guix (pull channels, install packages, etc) using guile repl instead bash?
<excalamus>I have done `guix import pypi -r plover-python-dictionary > plover-python-dictionary.scm`
<excalamus>I want plover-python-dictionary for Plover v4 (which is the available in Guix). Per the Plover community, the plover-python-dictionary plugin should be compatible with Plover v4. I remove the autogenerated python-plover definition in plover-python-dictionary.scm because its for plover v3. I update references for "python-plover" to be just "plover". I add the definition name at the end of the file. The result is
<dstolfa>sneek: later tell rndd: as someone who's modified anaconda and has complex setups based on anaconda, i think that is a terrible idea. simple way to crash anaconda: have 2 disks with MDRAID metadata and watch anaconda drop you into the python debugger.
<excalamus>Looks like it's the back end for pypi, but it's not clear to me how they're connected
<pineapples>muradm: Hi! I just glanced through your greetd+seatd patchset and noticed that you moved the latter out of `freedesktop.scm' to `admin.scm' and that you also somewhat heavily modified the package recipe of `seatd'. In this case, should you be requested to make changes to v6 and sumbit v7, I'd like to ask you if you could remove my name from the copyright header in `freedesktop.scm' :-)
<podiki[m]>excalamus: not sure what is happening behind the scenes, but needs underscores in the filename (except before the version) in the url
<podiki[m]>then the url works you had in the error message
<muradm>pineapples: hi! hmm... i don't know about removing names from copyright, never done that :) may be i can move your name to admin.scm with the packages, but i'm not aware of such practice either... :) may be maintainers may comment on your request.. :)
<excalamus>I guess that means the URL is fine, that's god
<pineapples>muradm: I, too, have concerns if this is an appropiate practise, but I can abandon my right to the original `seatd' package recipe if this is required. I don't mind who holds rights to whatever I submitted to this project as long as the users of GNU Guix can benefit from it :)
<excalamus>may be it's grabbing from the line(uri (pypi-uri "plover-python-dictionary" version))
<pineapples>...and, of course, as long as the GPL3 license is enforced
<podiki[m]>good luck! i've done just a few python packages, but there are tons of examples in guix to see things that need to be done
<excalamus>thanks, any suggestions? I've just been grepping broadly
<muradm>mbakke: thanks, what about removing?... :)
<pineapples>mbakke: Can my copyright header be just removed if I renounce my right to the original code and request that it's transferred to muradm?
<muradm>pineapples: you will need to issue a license, that will license that :D
<muradm>i noted, the moving of pineapples @ to admin.scm, since in the end of the day i modified what was there before.. :)
<podiki[m]>excalamus: I just look for errors I came across, like wrapping GI paths, or doing substitutes (patches). feel free to ask here when you hit something (though personally will be afk for a while, much more experience here than me)
<mbakke>muradm: not sure, there are precedents either way (leaving the original copyright notice intact + adding it on the new code location, and removing the original notice)...
<mbakke>pineapples: that's a good question, and I am not in a position to answer that :-)
<mbakke>the safest bet is probably to leave the original notice, and add it in the new location
<excalamus>podiki[m], thanks for sharing your experience. It's a nice sanity check
<pineapples>mbakke: I'd remove the original notice since there's no other work made by me in the original file besides the code that's now being moved. Anyway, thanks for your opinion!
<nckx>hjklambda: How do you print on GNU/Linux without CUPS?
<hjklambda>hmm, is there a way to track which package I currently have depend on cups, because there are things like gtk that depend on cups and other packages use it, so it goes package -> gtk -> cups, How do I remove a dependency like this?
<hjklambda>nckx: take a pdf file send it to printer using netcat
<excalamus>bombing out on error: Could not find suitable distribution for Requirement.parse('python-xlib>=0.16')
<iskarian>excalamus, that's good to hear! I found an issue with what I originally suggested. For some reason adding 'search-paths' for PYTHONPATH to plover doesn't actually give me a PYTHONPATH envvar in profile
<jab>now pkg-config --cflags gtk+-3.0 is just complaining that pango was not found in the config path.
<civodul>jab: to hack on a GTK+ app, the easiest solution is probably something along the lines of: guix environment --ad-hoc gcc-toolchain gtk+ pkg-config
<civodul>that'll spawn a shell where all the relevant environment variables are set
<jab>civodul: that's true. It just annoys me that that's the correct solution. New users to guix would probably be confused...Why wouldn't just 'guix install gtk+' work? I'm not complaining. Just pointing it out.