IRC channel logs


back to list of logs

<awb99_>thanks Ifam
<awb99_>i use ungoogled-chromium-wayland
<awb99_>i still have to setup X11 fonts?
<lfam>sneek: later tell nckx: Same annoying issue with '.$hash-disk-image-rw' filling up $TMPDIR
<sneek>Will do.
<lfam>awb99_: I don't know about wayland. Hopefully somebody who uses wayland can help
<lfam>You do probably have to install some fonts, however
<mbakke>awb99_: the same font mechanisms are in place for both X11 and Wayland ... probably installing the essential fonts from that manual page will work.
<yewscion>Why might a python package's `site-packages` not be added to GUIX_PYTHONPATH? For some reason, the plugin I'm trying to debug's `site-package` is not being found by the program, and therefore the program cannot find it.
*mbakke has 11 fonts installed
<ss2>you might also have to run fc-cache -rv or something to load the fonts.
<ss2>Samba’s really tricky..
<awb99_>thanks mbakke. I cannot find a list of essential fonts though.
<awb99_>but very helpful to know that fonts are the same for x and Wayland.
<mbakke>awb99_: quoth the manual: "Essential font packages include font-ghostscript, font-dejavu, and font-gnu-freefont" ... you also need to run fc-cache -rv afterwards as ss2 mentioned.
<awb99_>thanks so much mbakke
<mbakke>yewscion: are you testing this in a package build, through 'guix shell', or something else?
<Kolev>$ guix package -l 19 | grep font- | wc -l
<yewscion>I am testing this using a guix checkout, using `./pre-inst-env guix shell --pure -N beets beets-bandcamp bash coreutils which` as the environment.
<yewscion>Currently, `beets-bandcamp` will build, but is not found by `beets` afterwards, because `beets` is installed first and `beets-bandcamp` is not pointed to by any library.
<yewscion>More explicit details are being tracked in this ticket:
<yewscion>s/not pointed to by any library/not pointed to by any environment variable/
<Kolev>I'm not sure how to use Gash.
<mbakke>awb99_: I just noticed that you mentioned fonts were "pixely", not missing outright. I think at least font-dejavu should scale properly, dunno about the others from that list.
<Kolev>(ls (pwd)) ?
<mbakke>yewscion: try adding 'python' to the shell, otherwise GUIX_PYTHONPATH won't be configured at all
<awb99_>with pixely I mean this:
<awb99_>i can see the tab menu texts in chromium and icecat
<awb99_>but they are not sharp
<awb99_>very hard to read
<awb99_>blurry is perhaps the best word
<awb99_>i can selext a ton of fonts in Chromium preferences
<awb99_>they all are pixely
<awb99_>and In alacrity they are all sharp
<awb99_>it was the same with quassel ... then Installed some packages (not Fonts)
<awb99_>and since then it works.
<yewscion>mbakke: I was told in the above ticket to avoid propagating `python`, since it would lock the user into a dependency on a specific version of python.
<awb99_>quassel at least tells me it uses qt
<awb99_>but I cannot see this for Chromium or icecat
***yewscion is now known as Guest4664
***yewscion_ is now known as yewscion
<mbakke>yewscion: right, one workaround is to configure the same (native-search-paths ...) for Beets as for Python, like 'ansible' does. But the best solution would probably be to patch Beets with a GUIX_BEETSPATH as alluded to in the ticket.
<mbakke>yewscion: 'gajim' also configures GUIX_PYTHONPATH, so you are in decent company :)
<lfam>Does anyone know off-hand how much space is required for the gui-installed-desktop-os-encrypted system test?
<mbakke>awb99_: do you have any existing "~/.config/fontconfig" or "/etc/fonts" perhaps carried over from some previous installation? Don't know why IceCat and Chromium behaves different from Alacritty :/
<lfam>It was a bad idea to dedicate ~90% of my memory to tmpfs for that system test
<lfam>Hard to believe, I'm sure
<jonsger>like only the best of the best do, sir :)
<awb99_>thanks mbakke ... I am now going through my .config folder .. great idea
<yewscion>mbakke: Awesome, I'll check out 'gajim' and 'ansible'! Thanks for pointing me in the right direction!
<AIM[m]>How to use packages->manifest in config.scm?
<Kolev>Is this right? (keyboard-layout (keyboard-layout "gb,he" #:options '("grp:alt_shift_toggle") #:options '("compose:caps")))
<opalvaults[m]>what is the syntax for setuid on a program? It falls under the operating system umbrella. Can't seem to get the syntax right. (append (list #~(string-/run/current-system/profile/bin/swaylock) %setuid-programs) right?
<lfam>opalvaults[m]: Take a look at the Setuid Programs manual section:
***sneek_ is now known as sneek
<lfam>We should add a complete example to that chapter
<opalvaults[m]>lfam: I have, it's not very clear on how the syntax is supposed to be
<lfam>Here's an example:
<lfam>You don't need to escape the quotation marks
<lfam>That's only done because it's using texinfo markup
<lfam>You could look at the formatted example with `guix show xsecurelock`
<lfam>The big difference from what you tried is that you should specify the package itself, and the string path of the executable within that package's built output
<lfam>That's what FILE-APPEND is for
<lfam>Let us know how it goes
<opalvaults[m]> warning: representing setuid programs with file-like objects is deprecated; use 'setuid-program' instead
<opalvaults[m]>what is the correct usage as it appears the example is deprecated
<lfam>It's deprecated, you can use it
<opalvaults[m]>Well why is it deprecated? :P
<lfam>It's still okay to use
<lfam>Eventually it will go away
<opalvaults[m]>Fair enough. I just don't want to be putting old tricks in the configuration file.
<lfam>I would try cons-ing the example from the manual onto %setuid-programs
<lfam>Does that make sense?
<opalvaults[m]> (setuid-programs (cons*
<opalvaults[m]> (file-append swaylock "/run/current-system/profile/bin/swaylock")
<opalvaults[m]> %setuid-programs))
<opalvaults[m]>like so?
<lfam>Notice that the examples I am showing you use file-append to join together a package and a relative path
<lfam>That basically results in a string such as /gnu/store/salfdkjdsalkfjdslkfjs-foo-1/bin/foo
<lfam>I guess the paths don't appear to be relative... but they are :) Because there is no '/bin' directory on Guix
<lfam>I'm suggesting something like this:
<opalvaults[m]>You'll have to excuse my ignorance, I'm not very good at Lisp. Do you mean that I should just be cons'ing "run/current-system/profile/bin/swaylock", instead of using file-append?
<lfam>It's the example from the manual, added to %setuid-programs
<lfam>No, don't refer to anything in /run at all
<opalvaults[m]>I'm so confused. Is there a place in the manual that says don't refer to /run at all?
<lfam>I doubt it. It's just something that you shouldn't do in this context
<lfam>Did you see it being done somewhere?
<lfam>I can explain what my example does
<lfam>If you want
<opalvaults[m]>There's so many little weird rules about this. Like why am I consing setuid-program into (program (file-append...?
<opalvaults[m]>That's terribly complicated.
<lfam>I don't disagree
<lfam>I don't really know Scheme or Lisp, so it takes me a long time to understand these things
<opalvaults[m]>Well I'm glad I'm not alone.
<lfam>Anyways, I gave you a simple example that will work, or a more complicated example, that I am testing now
<opalvaults[m]>Thank you for the help! Much appreciated
<lfam>And I can explain how they work, if you want
<lfam>By the way, my example doesn't cons setuid-program into program. It conses setuid-program onto %setuid-programs
<lfam>So, you are adding a new setuid-program to the default list of %setuid-programs
<opalvaults[m]>so what is the program variable? or shadow?
<lfam>setuid-programs is a record-type: <>
<lfam>program is a field of that record
<opalvaults[m]>okay looks like those are variables that setuid wants
<lfam>Shadow is a package that provides authentication-related tools such as passwd, su, and login
<lfam>Sorry, shadow is a mystifying choice for an example if you don't know what it is
<opalvaults[m]>wait are these packages on disk anyways and I'm pulling them in for why exactly? If it's a system configuration shouldn't it know all of its packages to begin with? why not just an (gnu package system) or something that covers all of the operating system variables?
<lfam>I don't understand your question
<opalvaults[m]>I don't know why this:... (full message at
<opalvaults[m]>pardon the redundancy
<lfam>It just is
<opalvaults[m]>Well you have a more accepting heart than I lfam
<lfam>It's computer programming. I think it's somewhat normal to have to import modules that contain the code you want to use
<lfam>It's a little weird to have to import (gnu system setuid)
<lfam>The other modules provide optional packages and services
<opalvaults[m]>Well it's one thing when I'm compiling a program. You don't want to pull in the entire package for one module. However I'm describing the state of a system that already has everything it needs to know about passwd, shadow, etc.
<lfam>And, Guix System includes passwd by default, without you having to do anything
<lfam>I only used it as an example
<opalvaults[m]>I could see if I was pulling in say puppet modules, as those typically need to be pulled down and sit in a folder to be pointed at.
<lfam>I still don't see what's wrong here
<opalvaults[m]>It's just a bit perplexing coming from a configuration management perspective as you don't really have to pull modules that are already built in.
<lfam>I see
<lfam>Well it's somewhat primitive in comparison, I'm sure
<lfam>One of the things about Guix is that it's just programming in Guile Scheme, and importing modules is Scheme
<lfam>I can't say if it's better or worse than something else, but it's definitely Scheme
<lfam>If you need help finding a package, you can use `guix show foo` and it will tell you which module foo is in
<lfam>In the "Location" field
<opalvaults[m]>I'm coming from professional automation experience so my bias is surely showing.
<opalvaults[m]>Thanks for the explanation
<lfam>Yeah, customers usually won't buy "program it yourself" as a product :)
<opalvaults[m]>One of these days I'll get scheme :P
<lfam>I find Scheme kind of tough because of the homoiconicity
<opalvaults[m]>I was just talking about this earlier using that same sentence.
<opalvaults[m]>(with a friend on PM)
<opalvaults[m]>that's the same reason I have a hard time grokking it as well.
<lfam>In ... shall we say... normal languages, the distinction between expressions, statements, data, etc make it easier to understand how a program is implemented, at least for me
<lfam>I think that with S-expression languages with Scheme, you are supposed to use fancy editors that can interact directly with the code and show you function definitions, etc
<lfam>So while looking for things in the Guix codebase, I see a variable, and I'm like... is it a procedure? A record? Just some data? It slows me down
<singpolyma>lfam: why does it matter?
<opalvaults[m]>I agree and empathize with that completely lfam
<lfam>It matters because it takes me forever to figure out how some code works, compared languages in the C family
<lfam>It's almost clear what kind of thing something is in those languages
<lfam>I definitely hold myself back by using the wrong kind of editor
<singpolyma>I don't think there are really editors that get all that fancy
<lfam>But I see people use Emacs, and they have an easier time with it
<singpolyma>The editor doesn't know what's in a variable either
<opalvaults[m]>Yeah but I need to know whats in the variable
<lfam>It's a settled point that I find Lisp and Scheme harder to understand than other languages
<singpolyma>I guess if you used a typed language the editor could know the type, but for scheme, ruby, python, Perl, et al you can never know
<opalvaults[m]>first class functions are great until it's a string of this-and-that but-this-too oh-and-this
<podiki[m]>one thing that can be confusing with lisps is that the same name (string of characters) can refer to a function, variable, etc., based on context
<singpolyma>podiki[m]: not so in scheme
<singpolyma>That's just elisp and the like
<lfam>If you ask these questions again during the European day, especially not during a holiday, you'll get a lot of other answers too
<podiki[m]>ah, lisp-1 vs lisp-2 then
<lfam>podiki[m]: That's exactly what I meant
<opalvaults[m]>like say %setuid-programs is an array, okay you want to add a program to it? Then you:
<singpolyma>Scheme one variable name always contains only one value
<podiki[m]>perhaps what was being referred to earlier with something like emacs is that you'll see a hint that you are in e.g. a function and what it expects after, like (func <string> <file> :keyword ... etc.
<lfam>podiki[m]: Yes, that sort of assistance seems crucial
<opalvaults[m]> (cons (setuid-program
<opalvaults[m]> (program (file-append shadow "/bin/passwd")))
<opalvaults[m]> %setuid-programs))
<opalvaults[m]>is kind of ridiculous to add a program to setuid
<podiki[m]>the confusion (it looks confusing to me) would imply needing better syntatic sugar
<lfam>Well, if you don't like Scheme, Guix is going to be tough
<singpolyma>opalvaults[m]: why? You just prepend your item to the list, looks like
<podiki[m]>the whole setuid thing changed recently too, perhaps that's why it is more confusing too (I know nothing here, much as I would like to help)
<lfam>The good news is that it's fairly easy to get help
<opalvaults[m]>right, I prepend/append the item to %setuid-programs. which shouldn't look like the above example. If %setuid-programs is an array of programs that have setuid on them, then why not just something as easy as (append "/bin/swaylock" %setuid-programs), or even swaylock.append(%setuid-programs)
<podiki[m]>the nesting nature of sexps can be confusing, for sure. you could perhaps unpack that example working from inner most ()s to outer most, thinking of each sexp as a new thing (you could have used let to define each part and put it together as one simple line at the end, for example)
<lfam>opalvaults[m]: That's basically what I gave you in my first example
<opalvaults[m]>I don't dislike scheme. It's just hard to grok.
<lfam>But you had to pull the thread!
<opalvaults[m]>for me
<opalvaults[m]>Wait what?
<podiki[m]>perhaps what you are getting at is a need for something to make that procedure easier, like we have for service lists
<opalvaults[m]>What was your first example?
<podiki[m]>(modify-services with things like delete)
<lfam>opalvaults[m]: The example using xsecurelock
<lfam>The only difference is that it used cons instead of append (same difference)
<opalvaults[m]>(setuid-programs (cons*
<opalvaults[m]> (file-append xsecurelock \"/libexec/xsecurelock/authproto_pam\")
<opalvaults[m]> %setuid-programs))
<opalvaults[m]>is what lfam is referring to
<opalvaults[m]>I don't really see your point lfam. That's still a crummy way to express that.
<singpolyma>It looks the same as what you asked for
<singpolyma>(cons (mything) %thestuff)
<opalvaults[m]>(append "/bin/whatever %setuid-programs) is quite a bit shorter.
<lfam>Your example of (append "/bin/swaylock") is incomplete, because that string isn't specific enough
<opalvaults[m]>Wait does guile have append?
<lfam>For one thing, that path doesn't exist on Guix
<opalvaults[m]>Or have I been spending too much time in CL lmao
<lfam>And second, you presumably care which package a "bin/swaylock" executable is pulled from
<opalvaults[m]>okay, then infer swaylock
<lfam>So, what FILE-APPEND does, is take a package and a string, and turns that into a full absolute path to the executable you want
<lfam>Crucially, you tell it which package to look in
<opalvaults[m]>also, I will also mention that it's deprecated as well
<lfam>So what?
<opalvaults[m]>I'm not really sure how else to explain to you that it's an overly complicated way to express that logic.
<lfam>FILE-APPEND is not deprecated, only the first simple example I gave
<opalvaults[m]>I mean you can stan it all you want, I like Guix a lot, but I'm not going to agree with you on this.
<lfam>I agree with you that the documentation on how to do this is incomplete
<opalvaults[m]>No I mean it warned me that using the method in the documentation that it was deprecated with a warning in stout
<lfam>Yeah... it's a help wanted situation
<lfam>In Guix, there is generally a process of refinement where 1) Plain Scheme is used 2) Guix-specific abstractions are created and then 3) Those abstractions are simplified and refined based on user feedback
<lfam>Currently, this functionality is at step 2
<lfam>The setuid-programs record type was created and implemented, deprecating the old interface
<lfam>Now, we can keep refining things
<lfam>It would be nice if you didn't dismiss people as stans
<lfam>It's a nasty thing to say
<opalvaults[m]>I've been contributing where I can. It's important to know where criticism is needed, and I think that it's not unreasonable to expect a bit of concision from something you can stick in a variable and expand when necessary.
<opalvaults[m]>Here's another example:... (full message at
<opalvaults[m]>I'd have never guessed in a million years, that the process for using SDDM and wayland is...that.
<opalvaults[m]>even from the documentation. nckx was gracious enough to give me his configuration.
<drakonis>there are other things that could be done like breaking up desktop services
<drakonis>not sure why it has to default to gdm
<podiki[m]>would be great to have lightdm, since gdm and sddm pull in either gnome or kde pieces
<lfam>There's no real reason for it to default to GDM
<lfam>It's what people did before, and now people can do something else
<lfam>That kind of decision is basically a matter of who wants to do the work and how do they want to do it
<podiki[m]> .....
<lfam>Looks like a good place to start
<podiki[m]>perhaps the next thing on my guix learning list, after I clear out my package backlog (taffybar will take a bit, lots of packages involved)
<opalvaults[m]>lfam: I apologize that I made you feel dismissed as a stan. I did not mean to be dismissive. I think that in my field of professional expertise (devops) I see a lot of supposed nerds who want to keep things that are better left refactored or tossed out. That's an attitude that really sucks for those that would like to help out.
<lfam>Well, like I said. The software progresses in phases
<lfam>If you have something to contribute, help is wanted
<lfam>I was trying to help you accomplish your goal and instead you turned it into a rant and then insulted me
<opalvaults[m]>I've been working a little on Nyxt, and I've been attempting to write a sway article. I'm pretty terrible with Lisp despite wanting to be good at it. I contribute where I won't make a mess of things further.
<lfam>I just need some time to cool down
<lfam>I'm not really in the right mood to be here right now and that's my fault
<opalvaults[m]>Fair enough. My apologies. If it makes you feel any better I was referring to the royal YOU, and not you personally.
<lfam>I understand. And it's probably unlikely the origin of the slang 'stan' is well known
<opalvaults[m]>I'm unaware of the origin, to your point.
<lfam>It's quite a bit worse than "likes something too much"
<lfam>I think we should try to work together to improve Guix. I'm just gonna go afk for a while since I'm obviously feeling uptight
<lfam>I hope this doesn't put you off. We definitely have stockholm syndrome and need fresh eyes
<opalvaults[m]>I'm here to stay fortunately. I'm sorry again. Have a good night lfam!
<lfam>I'm glad to hear it!
*lfam afk
<drakonis>ah nyxt.
<drakonis>opalvaults[m]: no worries about being terrible with lisp, everyone has to start somewhere
<opalvaults[m]>drakonis: I appreciate the encouraging words. I surround myself with some of the most brilliant craftsman and hackers around so it's a bit frustrating being completely immersed into a Lisp-sphere (Guix, Nyxt, Practical Common Lisp), and still coming up short when it comes to doing more basic configuration.
<drakonis>hah, i'm still working on it myself
<drakonis>i finally got around learning common lisp after so long
<opalvaults[m]>By surround myself with some of the most brilliant..etc, I meant a lot of those in here in this room, and in #common-lisp, and many other places. Not that I somehow think myself as brilliant or anything. Don't want to come off that way.
<opalvaults[m]>It's been a really fun experience! I spun my wheels for a while before landing on Common Lisp. I come from Python, Go, and C, so it's a lot like learning a new foreign language where you can't say basic sentences but you know exactly what you'd say if you could.
<opalvaults[m]>What was your Guile scheme/Common Lisp journey like?
<drakonis>still ongoing
<drakonis>the most difficult part has been shaking off the bad habits other languages taught me
<opalvaults[m]>Ah! Absolutely! You have to be very sure of that data you're creating, as it's part of the syntax of the language itself. So being haphazard just gets one stuck in interpreter hell.
<opalvaults[m]>In Go, and a lesser extent Python, I know what is data, and what is code, and how those pieces are allowed to mutate. Not that I'm diehard for typing or anything. It's just part of charm of Lisp.
<opalvaults[m]>Guix is a great learning tool however much I get frustrated with its idiosyncrasies.
<drakonis>there is always room for improvement
<drakonis>i am curious about how reimplementing guix in a different lisp would look like
<AIM[m]>Hey, I know reddit has been gathering lotta hate... But, Is there any alternative just for fresh new memes?
<drakonis>there have been a couple ill fated attempts that never took off
<AIM[m]>Sorry wrong room
<drakonis>there was work done but it never made past the initial hump
<opalvaults[m]>drakonis: I was under the impression that Guile Scheme is one of the better, if not the best implementation to extend an operating system with as it wraps around C functions and libraries like it's nothing.
<drakonis>it is a scheme mind you
<drakonis>different strokes for different people
<drakonis>rather, scheme has various implementations with varying levels of compliance, which is fine
<opalvaults[m]>Well I only say that because it seems natural that it would have been done in Guile and not in say SBCL Common Lisp.
<opalvaults[m]>or some other variant of Scheme that doesn't have the ease of wrapping around C libraries
<drakonis>there's a story behind why guile
<drakonis>i unfortunately do not remember why but civodul could answer it whenever he's around
<drakonis>but if i remember correctly, its something to do with being gnu, scheme and its design
<opalvaults[m]>okay so I've stuck this bit of code into (operating systems:... (full message at
<opalvaults[m]>Did I mess up the syntax?
<opalvaults[m]>is there another way to reference swaylock in such a way that it is sure to become prepended/appended to %setuid-programs?
<podiki[m]>silly questions...shouldn't "shadow" be "swaylock"? don't you want the path to the swaylock bin?
<podiki[m]>then the patch would be appending "/bin/swaylock" to the swaylock package path (in /gnu/store)
<opalvaults[m]>what is shadow in this instance?
<podiki[m]>from your code snippet
<opalvaults[m]>when I'm calling file-append shadow on "/bin/swalock", I was under the impression that I was adding some piece of data that gave it authenticity
<podiki[m]>you want to add swaylock to setuid programs, so you need the path to swaylock, which is in the swaylock package (not the shadow package) if I'm understanding
<opalvaults[m]>This isn't my code snippet, fwiw. It's what lfam and others graciously gave to me
<podiki[m]>I think it is a typo or partially changed; the manual example is for passwd from the shadow package, here you want swaylock from the swaylock package
<opalvaults[m]>wouldn't this be easier with an SELINUX file label system?
<opalvaults[m]>ohh, I see what you mean
<opalvaults[m]>You're right it's from an /etc/passwd example
<opalvaults[m]>i thought that was agnostic.
<opalvaults[m]>shows how much I understand what the heck this is doing
<podiki[m]>yeah, so to break it down, you want to add a specific binary as setuid, so you need to give the full store path to it
<podiki[m]>you'll see something similar in package definitions, to write a full path in a package so it knows where to find something (you'll see it with string-append to construct that path from the package /gnu/store/...)
<podiki[m]>since everything is in /gnu/store and linked, so often in guix you need that full path
<podiki[m]>does that make some sense?
<podiki[m]>(note that file-append is some g-exp stuff that I just found out existed, but you'll see the same construction with string-append n other places)
<opalvaults[m]>hmm. I'm struggling here. The relevant piece of code in the manual seems to suggest that I'm merely adding this string "#~(string-append #$shadow "/bin/passwd")" to %setuid-program(s?)
<podiki[m]>I haven't used setuid programs, but may be important that the example was with file-append which is a bit different than string-append
<opalvaults[m]>(define %setuid-programs... (full message at
<opalvaults[m]>this is the piece of code that I'm aware of after digging
<opalvaults[m]>So like...why not just add the string directly into the list via an append "#~Gexpr here"
<podiki[m]>may be functionally the same? I see in the manual that string-append is evaluated at runtime, while file-append will already be the string (no idea if that means something here)
<podiki[m]>you'll need someone that knows gexps and the system configure stuff
<opalvaults[m]>thanks for the help! I'll give your suggestion a try
<podiki[m]> (see file-append)
<podiki[m]>at least I can say you shouldn't have shadow but the actual package that has the bin you want
<podiki[m]>as for string vs file-append and the internals...only guesses
<opalvaults[m]>yeah I'm gonna do that for sure. I was under the impression that this "bit" aka shadow needed to be somehow appended to "/bin/swaylock" in order to authenticate
<opalvaults[m]>Maybe i'm too used to Selinux, not that it's better. It's just easier to know what to look for ( sometimes ).
<opalvaults[m]>For instance if I need a docker container to mount a volume onto a root directory, SELinux won't allow it until I've set a specific filesystem label to the directory and deemed that "the only thing you're allowed to touch".
<opalvaults[m]>If we're just appending/prepending strings/declarations to predefined arrays/vecs/keywords or whatever, seems like this is a bit out of the way?
<podiki[m]>SELinux is another in the long list I know nothing about :)
<opalvaults[m]>It's fun stuff!
<podiki[m]>what is a bit out of the way?
<opalvaults[m]>oh, sorry. this bit (cons (setuid-program (program (file-append swaylock "/bin/swaylock"))
<opalvaults[m]>and then have that being a declaration under setuid-programs
<opalvaults[m]>which then is added to %setuid-programs
<opalvaults[m]>anyways, it's not important
<opalvaults[m]>i've been staring at text too long.
<opalvaults[m]>I would probably be better off not questioning these things for my own sake lmao
<podiki[m]>not sure what setuid-program (the function) does, but must be something :-P
<podiki[m]>but getting the full path via code is important, so you know you are getting the right program
<opalvaults[m]>Something about this function is deprecated too, so I think this is about to change?
<opalvaults[m]>Unsure about that one.
<podiki[m]>since the path will change upon new derivations
<podiki[m]>setuid did change recently, I know that, but not sure how changed it is (e.g. planned changes still?)
<podiki[m]>since the example wasn't helpful or deprecated, certainly worth pointing out at the very least
<opalvaults[m]>Oh, it didn't throw an error that time! I must have upgraded out of the deprecation, and/or someone changed the syntax above. That's good then
<opalvaults[m]>Thanks for helping me understand this one, one of the long line of those who have heard my ranting tonight. Much appreciated~!
<opalvaults[m]>Lets home this one works. I'm gonna reboot. afk for a second
<podiki[m]>happy to help! i'm still relatively new too
<podiki[m]>reading guix code is the most helpful (and asking here), as well as the manual
<opalvaults[m]>Wait how did you add that so quickly. Is that just in the /docs?
<opalvaults[m]>Good on you, I was going to add it.
<opalvaults[m]>(If it works).
<podiki[m]>was not me
<podiki[m]>and I see in the manual that setuid-program explicitly wants a file like object, which I think means needs file-append (not string-append)
<podiki[m]>most up to date docs will be info guix (matches your current commit) or the "devel" web manual (which will track master)
<opalvaults[m]>Huzzah! That worked!
<podiki[m]>and in the process we all learned something and the manual got updated to have a full example
<opalvaults[m]>That was lfam that made that PR. Thanks to you, one less person would be bewildered by Setuid
<opalvaults[m]>well..more than one less. dozens less even.
<opalvaults[m]>It's a lot of learning with Guix, and a lot of habits being broken and/or challenged.
<opalvaults[m]>Which is the best part of being a nerd tbh
<podiki[m]>I find it the fun of guix exactly that, yes
<podiki[m]>(and a lisp lover, that gets by with common lisp knowledge and guessing/copying guile so far)
*opalvaults[m] uploaded an image: (1086KiB) < >
<opalvaults[m]>here lfam and podiki
<podiki[m]>*as a lisp lover
<opalvaults[m]>have a wallpaper I made
<opalvaults[m]>for all of your help today
<podiki[m]>happy to help and learn with you
<robin>hum, xpra seems to have broken recently, can't start an x server ('xpra start :$N' fails immediately). probably a missing input or something, i'll have to fix it as that's how i magnify non-gtk/qt apps on a 4k screen
<robin>Xephyr + xpra attach --desktop-scaling=... should do the trick for tonight (or xrandr under Xephyr, maybe)
<robin>(given that my goal is just playing a round of wesnoth before bed :p)
<robin>hm, xvfb doesn't cut it (or xpra is quite badly broken), let's see how long it takes to package xephyr
<robin>(bonus: a few packages seem to have check phases disabled because xephyr and xnest are presently unpackaged)
<robin>...of course it turns out xephyr, though not xnest, are packaged as part of xorg-server (just not in my profile or the package description), even easier
<mothacehe>hey guix!
<robin>hallo mothacehe
<mroh>Hi mothacehe
<efraim>hello guix!
<robin>(no, xephyr+xpra doesn't work, why would it?)
<robin>i'm quite puzzled as to what's causing this error, as it should *only* occur if guix were misidentified as macos or windows during the build process, which i expect would cause the build to fail anyway...
<robin>guix time-machine isn't restoring the penultimate or antepenultimate versions to functionality either, somehow, so this should be fun to debug
<robin>(or maybe i'm misusing time-machine somehow, i did only start trying it a few weeks ago investigating a guile-emacs build bug)
<jpoiret>robin: how are you using `guix time-machine`?
<jpoiret>if you want to restore an older guix version, better use `guix pull --commit=<SHA> --allow-downgrades`
<jpoiret>or `guix pull --switch-generation` if you still have an older one
<jpoiret>which is likely since no one remembers to clean up old guix generations (me included, as I've just realized)
<abrenon>hello guix
<ss2>I’m working on a samba service, and I’ve noticed that i can’t select a different package to be used in said service:
<ss2>I’ve got a modified samba package, but it never selects it, and even if I select, say rsync, it still loads the default samba package.
<ss2>oh, I think I just realised it myself now. The service constructors call the package directly, rather than taking the value from package.
<abrenon>great that you've found your answer !
<ss2>I began looking at my own paste. Code doesn’t always present itself while sitting in an editor.
<ss2>Should do that more often. ^^
<abrenon>hmmm, good pro tip : )
<vldn[m]>is it possible to set the channels within config.scm?
<mekeor>is there a guix package for what's called bsdutils in debian? it contains executables like logger, renice, script, scriptreplay und wall.
*mekeor realizes that all those executables are present in his guix system ô.Ô
<mekeor>mekeor: it's called `util-linux-with-udev'
<abrenon>is it Solve-Your-Own-Problem-Day today ?
<abrenon>vldn[m]: I don't think so
<abrenon>and doesn't seem to prove me wrong
<abrenon>I suppose it would be because config.scm contains an operating system definition, but channels are a matter for guix the package manager, not for a particular system
<abrenon>(all systems can't necessarily be upgraded, think about CD image in .iso for instance, it doesn't make sense to have channels in them because you can't install anything on them anyway)
<vldn[m]>yeah same as having the substitute config in the config.scm but the command line config get's ignored on guix system..
<vldn[m]>so i wanted to put it all in the system config :D
<vldn[m]>or having the substitute config outside :D
<abrenon>(this is a wild guess, I'd love it if someone who actually knows about guix system and guix-the-package-manager could confirm or correct it)
<vldn[m]>maybe just my weird config
<abrenon>hmmm not sure what you mean that your "command line config" got ignored
<vldn[m]>if i try to setting guix-daemon cli options like --substitute-urls
<vldn[m]>or authorize a substiute server
<vldn[m]>you have to modify the guix-daemon service config within config.scm
<vldn[m]>kinda the same problem you mentioned above
<abrenon>yes, because they're part of the guix-daemon, which is a service, hence declared with the rest of the OS
<vldn[m]>if i hadn't authorize the server prior to initialitation i have to rebuild the whole system till my substitute server is authorized
<abrenon>I see
<vldn[m]>that's why i love the disable-authentication option but not possible with guix system reconfigure :(
<abrenon>I think that's because of the architecture: there is this command-line "client" guix which asks the guix-daemon server to build things IIUC
<vldn[m]>haven't thought of a solution either
<vldn[m]>just sitting there and waiting for the reconfigure
<abrenon>so yes, substitutes are about "how" you build your package, so they're relevant to the daemon, but channels are about "what" you build, from which "book" you take the recipe so they're relevant to the client
<vldn[m]>or maybe just installing it again because it would be faster :D
<abrenon>but I understand your concerns : /
<abrenon>why not simply reconfigure just with the added substitutes declaration
<abrenon>but no packages from there
<abrenon>reconfigure should be fast
<vldn[m]>jep that's what i'm doing now
<vldn[m]>but problem is i'm using the normal linux kernel
<abrenon>then you can add the actual packages
<vldn[m]>fun times
<vldn[m]>no ethernet port on my super slim gaming laptop >.<
<abrenon>you can still use the linux-libre one for the first reconfigure
<abrenon>(not even via USB-C ?)
<vldn[m]>then i'm out of internet :D been there done that
<abrenon>: )
<vldn[m]>maybe, but no adapter was delivered, have to buy an extra one someday
<abrenon>that's too bad : (
<abrenon>I forgot one on vacation one day
<abrenon>it's still somewhere living its life on its own
<vldn[m]>maybe a cool suggestion would be to have an extra option within channels.scm that guix system could read prior to using the build in service definition for the substitute server..?
<abrenon>on vacation for ever in a dreamy place, while I returned to my everyday routine
<abrenon>I have no idea whether that's possible or not ^^
<vldn[m]>me neither
<vldn[m]>let the pros figure it out :D
<abrenon>maybe that's the kind of ideas you could submit to the devel mailing list ?
<abrenon>that way the pros would see your message for sure, and I suppose you'd either get an answer of why it's not possible, or a nice thanks for bringing such a good idea
<jpoiret>does anyone use tramp sudo on guix system? If so, how did you configure your tramp-remote-path and friends to have it behave? I haven't been able to use it yet
<yewscion>Good Monring, Guix!
<gnoo>is the default install image provided from with or without dbus?
<gnoo>can it be changed later?
<abrenon>gnoo: it can always be changed later: the installer image is just a live CD running guix in order to provide access to the guix command-line tool, what it contains has no influence on what will or will not be installed in the process
<gnoo>thanks, i'm putting that on my usb right now, any thing i should expect? i heard there is an installer?
<abrenon>but I think getting dbus rather depends on the desktop environment you use than on the system itself
<abrenon>you mean a graphical one ?
<jpoiret>for completeness sake, dbus does run on the installer :)
<gnoo>i don't think i'll use a de rather a simple wm. sway and/or dwm
<jpoiret>that'll require a bit more configuring, but you can take a look at users configuration, there are plenty on the internet
<abrenon>yeah, it's a couple of dialogs that make sure you get a proper internet connection, disk partitioning etc.
<abrenon>jpoiret: ah, it does ? great ! good to know : )
<gnoo>can i use my existing /home ?
<gnoo>it's on a separate partition
<abrenon>sure, I did that just last week when I finally installed guix on my personal laptop
<jpoiret>yes! although you'll have to setup your user in the guix configuration to have the right uid/gid
<abrenon>I had an old artix linux with /home on a dedicated partition
<abrenon>I simply told it to be mounted under guix like jpoiret said, and first time I ran my mail-client, everything looked like I had simply closed it two minutes before
<gnoo>neat! i can't wait!
<jpoiret>you'll also have to double check your .{bash_,z}profile, as it needs to include some guix-specific things
<jpoiret>note although that we don't have thunderbird in the repositories, only icedove, which uses .icedove instead of .thunderbird iirc
<abrenon>also, if your current setup leaks some variables that can upset guix shell, it will tell you the first time you run it
<gnoo>what variables should be set in .bashrc?
<jpoiret>none :)
<jpoiret>ideally, you should *never* set any env variables in bashrc
<abrenon>jpoiret: out of curiosity, how does dbus gets run on the installer ? here I never configured anything but since it runs from user "gdm" I assume that service was responsible for enabling it on my system
<abrenon>but gdm doesn't run on the installer
<abrenon>variables rather belong to the profile, and guix shell makes sure of that
<singpolyma>jpoiret: well, PS1 in bashrc is sensible
<jpoiret>env variables should be set in profile files, as they need to be sourced only once per session, not in every shell
<gnoo>cool, is the info node available on the install-image? i'll not have access to irc to ask you guys :)
<abrenon>not really an "env" variable, really a variable only for the shell
<jpoiret>well, yes, but that isn't truly an env var :) more like a bash configuration variable
<jpoiret>abrenon: there's just a (dbus-service) in the gnu/system/install.scm services
<gnoo>thanks, i'm off to install it now
<abrenon>good luck
<jpoiret>but on your system I guess it's in %desktop-default-services
<jpoiret>gnoo: the info is available on tty2 on the install image
<abrenon>yes, on ctl-alt-f2 you have the documentation in info-style pages
<abrenon>again ^^
<gnoo>nice! it looks like it is really well thought out!
<jpoiret>well, we'll see that after you finish installing, as some things can get a bit tricky
<abrenon>jpoiret: why is it needed on the installer ? I thought it was about user sessions and mount permissions from graphical file managers ?
<jpoiret>dbus is a general IPC mechanism, I believe connman (the connection manager of the install image) uses it
<jpoiret>for example, NetworkManager uses it as well: you have a server that takes care of everything, and a frontend that connects to the server using dbus
<abrenon>ahhh there's connman too ?
<abrenon>I forgot to wonder how the link was enabled
<jpoiret>other example: elogind (or systemd's logind) registers org.freedesktop.login1, to which you can send commands like 'Lock', 'Shutdown', 'Suspend', etc... using dbus
<abrenon>(I only knew connman as a graphical tool, a systray thingy for network alternative to NetworkManager)
<abrenon>ok, but that wouldn't be of much use on the installer where you're root all the time, right ?
<jpoiret>that way a non-privileged user can ask for the system to suspend, as elogind has the permissions to do it. But there's a third thing in the equation there, Polkit, which checks for permissions over DBus
<jpoiret>basically, Polkit is the backend of the sudo-like graphical window that sometimes pops up
<jpoiret>it's quite a complicated beast, but it helps a lot
<abrenon>oh yeah right, there's polkit too
<abrenon>I knew about elogind and polkit, but I hadn't understood dbus was the communication system they used, I thought it was a more superficial, graphical environment-related, stuff
<abrenon>thanks for the clarification ! : )
<jpoiret>so, anyone had success using the `sudo` protocol of TRAMP on guix? I cannot seem to have it set the proper PATH variable
<abrenon>sorry, I have no idea what that is : /
<the_tubular>Anyone is using PPPOE with guix ?
<jpoiret>I just managed to make it work anyway :) basically Tramp lets you edit remote files in Emacs natively, and one protocol it supports is `sudo`, so that you can edit files as another user without restarting emacs as root
<rekado>when pushing to savannah I now see a remote error: ‘remote: ImportError: No module named git_multimail’
<rekado>guix-commits is probably no longer working
<awb99>herd: exception caught while executing 'load' on service 'root'
<yewscion>jpoiret: I've used TRAMP and sudo on other OSes; What was the process to get it to work right in Guix System?
<awb99>this is the error I get when I reconfigure home.
<awb99>Any idea what it could mean?
<awb99>I tried to find logfiles, but there is nothing.
<jpoiret>basically, you have to tell tramp to use the login shell's PATH
<gnoo_>Hello, I'm installing guix and it says: error: primary group gnoo of user gnoo is undeclared
<gnoo_>While doing guix system init /mnt/etc/config.scm /mnt
<gnoo_>I continued by just using the group "users"
<yewscion>jpoiret: Awesome, thanks!
<jpoiret>gnoo_: you need to declare a group in the groups field of the operating-system declaration
<gnoo_>Thanks, one more thing, I used the previous root partition as-is, will it remove the unneeded parts and clean it before installing?
<gnoo_>I'm getting lots of errors like: TLS error in procedure write to session record port : error in the push function
<gnoo_>Also for some reason each time I re-run guix system init(because of the above error), it looks like it downloads everything again
<podiki[m]>I don't think the installer will clean out a partition, other than at the formatting step, but I could be wrong
<yewscion>Is there a way to specify a specific version of an input in a package definition? I tried python@3.9, but it is an unbound variable.
<podiki[m]>as for the downloads, often it shows what looks like the same downloads but might be different versions/grafts; but I do see that on a regular system too so I would just ignore it for now
<podiki[m]>yewscion: you can see examples in the new style here I believe
<podiki[m]>isn't python-3.9 the default?
<podiki[m]>I think python, python-3 should both give you python 3.9 currently
<podiki[m]>(guix edit python will show you the definitions and names)
<yewscion>podiki: I need to set the python version because I didn't think You could pull the version of an input (I need to set the path of the python's site packages at build time, without actually installing python in the profile, because that pathing is honored by the package I'm working on).
<yewscion>If gexps will let me pull the version number, that will avoid a lot of complexity. I'll have to read up on them.
<jpoiret>gnoo_: just saw your message. Are you starting the cow-store service prior to running that?
<podiki[m]>if the version is available, most packages will just have the latest
<podiki[m]>but ones like python have a few (like python-2)
<podiki[m]>so if you need a different version of an input, you'll need to make a package for it or update the current one; this can be very simple with inherit
<jpoiret>yewscion: inputs of a package won't be installed to the profile
<jpoiret>only propagated-inputs
<yewscion>jpoiret: Yes, I'm trying to avoid propagating a specific version of python when installing a package with a plugin. Details here:
<thorwil>hi! hope santa has been nice to everyone.
<thorwil>3 gx lv2 plugins fail to build in the same way. gx-saturator-lv2-0-3, gx-slow-gear-lv2-0-3, gx-vbass-preamp-lv2-0-2
<yewscion>Basically, I need `beets` to point to the plugin package `beets-bandcamp` in the store, but because `beets-bandcamp` is installed after `beets` it isn't being added to the wrapper for `beets`.
<thorwil>`/gnu/store/qqs98rxwjrji6aaf6dqwp7q4m545g2sn-glib-2.70.0/include/glib-2.0/glib/gtypes.h:545:26: note: declared here. 545 | typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);`
<yewscion>The workaround I was pursuing was having `beets` set `$PYTHONPATH` when it gets installed, as that is all that needs to happen in the profile for things to work as expected.
<podiki[m]>or you could have beets use beets-bandcamp as an input? or does that end up in a circular dependency?
<thorwil>now is tha rather something for issues.guix, or should i go to upstream directly?
<yewscion>podiki: unfortunately, `beets-bandcamp` depends on `beets`. I haven't tried it, but I think that would be circular.
<podiki[m]>are there other examples of some plugin programs to look at how they do it in guix?
<jpoiret>have you tried defining a GUIX_BEETSPLUGINPATH?
<jpoiret>yes, I know of at least one
<podiki[m]>(I actually wanted to look at something similar with rofi, but haven't done it yet. I think rofi has an enviornment variable though)
<gnoo_>jpoiret: I did it once
<podiki[m]>or a configure option?
<gnoo_>Haven't restarted
<yewscion>podiki: The closest I've found so far are `ansible` and `gajim` , which both define `PYTHONPATH` in a hardcoded way. I wanted to avoid that, because python will update eventually and break the package.
<gnoo_>Did herd start cow-start /mnt at the start
<yewscion>jpoiret: I haven't; Is that better than having `beets` set `PYTHONPATH` ? If it will make it into the wrapper, that's all I really need.
<podiki[m]>yewscion: gotcha. yeah, maybe a new env variable is the cleanest? like I said, will need to tackle this for rofi since I have a plugin package I wanted to submit
<jpoiret>gnoo_: then it's pretty weird that it would re-download everything
<jpoiret>yes, I think a new search-path is the cleanest way to do it
<podiki[m]>beets doesn't have any other options like a configure setting or other places it looks by default? (like share/ or something)
<yewscion>podiki and jpoiret: That makes sense, and sounds like the way forward. Is there documentation, or can You provide an example of a package that does this? Unfortunately, this was the first Guix issue I've tried to solve, and I am still learning the basics.
<jpoiret>unfortunately, search paths aren't really documented. I'm looking for a simple example
<yewscion>podiki: Not that I'm aware of, though I'll check the docs
<podiki[m]>sounds like jpoiret had an example, more generally you can look at wrap-program examples
<podiki[m]>wrap-program for setting that env variable before launching beets, if that is needed
<podiki[m]>search-paths are used sporadically, the one I know a little of is from xdg-desktop-portal packages
<podiki[m]>e.g. guix edit xdg-desktop-portal to see an example of a package setting it
<podiki[m]>that is simple I think
<yewscion>podiki: Awesome, thanks. I'll take a look.
<gnoo_>Since I did not format, can I remove everything except /gnu, /home and /etc/config.scm after a reboot?
<jpoiret>podiki[m]: oh, that's a great one :)
<podiki[m]>yewscion: and then see the manual for search paths so you can see how to see if they are in your profile after installing a package
*gnoo_ should've formatted the root partition beforehand
<jpoiret>although i don't really understand the distinction between native-search-paths and search-paths, but alas
<podiki[m]>jpoiret: thanks, I know because I suffered over that (upstream only wants one dir in that path and it was being set by multiple packages before)
<jpoiret>gnoo_: no, since other things were populated by guix system init
<gnoo_>So, to remove old and useless files, I should reinstall?
<jpoiret>gnoo_: well, that's the easiest way to do it, yes
<jpoiret>or I could tell you which dirs to keep but I'm not 100% sure it would keep your system bootable
<gnoo_>Well, I have a bootable USB anyhow so I can try your way ;)
<podiki[m]>also not sure about native vs regular search-paths, usually "native" has to do with cross compiling and if it is a host or target, so maybe that is similar....dunno
<jpoiret>you can delete everything except what's listed here:, as well as /gnu. For those directories, you can empty them ONLY if they're not /gnu or /var/guix/
<jpoiret>(or anything under /var/guix/ or /gnu/)
<cnx1>no don't rm /etc/passwd
<jpoiret>is that not generated by activation scripts?
<jpoiret>activations scripts are run on boot iirc
<cnx1>i don't think shadow is stored in the config
<gnoo_>OK, thanks!
<jpoiret>cnx1: it's generated by account-service-type extending activation-service-type i think
<cnx1>if so why need we mutably set passwd on first boot?
<podiki[m]>you can specify a hashed password in config can't you? (never tried)
<podiki[m]>yes, you can, using crypt, but then the hash is world readable in the store
<cnx1>yes you can but it's not the default
<podiki[m]> (see password)
<podiki[m]>right, and probably not recommended
<vldn[m]>wine trys to build alot of texlive packages even if there are subs avaiable?
<podiki[m]>I noticed that too sometimes
<podiki[m]>maybe because of needing i686 too?
<gnoo_>Is it normal that copying to /mnt step takes about 10 mins?
<gnoo_>Had to re-do that step because it aborted, again.
<podiki[m]>someone recently had a very slow copying to /mnt too, but could be from lots of things, in their case 2 usb devices, so just one slow one could do it
<vldn[m]>my superfast SSD was really slow on copying to mount
<vldn[m]>the last 2% percent needed 90% of the time
<podiki[m]>typical curse of the progress bar :-) all the technology and still it is never accurate
<vldn[m]>can't install wine without building..
<abrenon>that's strange, guix weather shows substitutes available for wine
<vldn[m]>could you try installing it?
<abrenon>hmmm why is it downloading gcc and binutils and… ?!
<vldn[m]>i got a lot of texlive and all other dependencies like libnotify
<abrenon>no it's fine
<abrenon>grafted a lot of stuff but no compilation
<vldn[m]>alright then my weird config
<abrenon>or possibly outdated channel ? like, the version guix is loading is too old and not found on the server anymore ?
<abrenon>when did you last `guix pull`ed ?
<vldn[m]>2 secs ago
<abrenon>: (
<abrenon>ok so not that ^^'
<vldn[m]>but i'm using --profile=/usr/guix option
<jpoiret>cnx1: FTR, (gnu build accounts) uses the last /etc/passwd to create the new one
<jpoiret>so passwords are kept for example
<rekado>when there are substitutes but your Guix doesn’t fetch them: check your substitute cache.
<vldn[m]>system reconfigure always complains that i don't habe pulled prior
<vldn[m]>maybe missing an Option that my Profile is recognized by system reconfigure
<abrenon>what can be done about the cache ?
<jpoiret>vldn[m]: are you sourcing the installed guix profile?
<vldn[m]>jep within my bashrc
<rekado>abrenon: you can delete it.
<vldn[m]>on every New terminal opening
<jpoiret>that should be done in a .profile file, not a .bashrc one, but it should still work
<vldn[m]>deleted substitutes/cache
<jpoiret>what does guix describe say?
<vldn[m]>still building :(
<abrenon>like, it could be corrupted and prevent substitutes from being fetched ?
<abrenon>what do you mean by "check": how does a good cache look ? (compared to a bad one)
<gnoo_>There isn't a /sys/firmware/efi on my device but the last os used uefi
<gnoo_>(I'm doing a reinstall)
<vldn[m]>just delete the cache and try again
<vldn[m]>tech magic
<abrenon>I hate that kind of answers
<vldn[m]>xD me too
<vldn[m]>something could go wrong while caching i think
<vldn[m]>Finding the problem is more tendidous then just deleting and recreating cache :)
<abrenon>gnoo_: booted the installation device in BIOS-boot-compatible-something mode that bypassed the UEFI perhaps ?
<abrenon>happened to me sometimes
<vldn[m]>but still not working for me sadly
<gnoo_>abrenon: Maybe? I'm using ventoy so perhaps it does that
<rekado>abrenon: no, it’s not about corruption. It’s about not checking for whether it’s outdated often enough.
<rekado>by deleting it you ensure that no old state is around
<abrenon>hmmm I thinking more along the lines of "the one-time boot menu of your host that you missed twice or thrice and finally entered by pounding the escape or delete or f2 key"
<gnoo_>Oh, I did that too
<abrenon>in the motherboard settings, my laptop can enable or disable UEFI
<abrenon>and in the one-time boot menu, my USB devices appear twice, with a slightly different name, for each mode ("bios-legacy" or "UEFI")
<abrenon>so I thought maybe after the reboot it switched back to bios by accident and now /sys/firmware/efi is empty
<abrenon>rekado: thanks for the answer
<abrenon>so should one regularly delete its substitutes cache ?
<abrenon>ohhhh right, wine is 32 bits by default
<vldn[m]>not depends abrenon
<vldn[m]>wine and wine64 needs buulding for me
<jpoiret>mothacehe: what do you think of having an "external commands output" port which all commands should use as their output, so that we can display the history later on if a problem occurs?
<vldn[m]>now trying without profile
<abrenon>sorry I meant, the package called "wine" is the 32-bits one, the 64 is called 32-bits (I only realized when trying to play with wine once it got installed)
<mothacehe>jpoiret: you mean in the installer?
<jpoiret>if i'm reading it right, at least all mkfs commands have their output ports set to /dev/null
<jpoiret>or at least its guile equivalent :)
<abrenon>wooo, just won a minesweeper
<mothacehe>jpoiret: we are already logging some stuff to the syslog, we could try to redirect "external commands" output there too
<vldn[m]>nope even without extra commands
<vldn[m]>pulling 800mb on reconfigure
<mothacehe>turns out, i'm trying to see how can we be more resiliant to errors
<mothacehe>printing error messages instead of dirty backtraces
<jpoiret>and display the syslog in case something goes wrong? that's a good idea. syslog requires a specific protocol though, it's not just setting the port to /var/log/syslog, right?
<jpoiret>ah, that's exactly what i was thinking as well
<mothacehe>we already have the "syslog" procedure that relies on the syslog port from (gnu installer utils)
<mothacehe>for now i'm am filtering devices < 10GiB
<mothacehe>in the non-install-devices procedure
<mothacehe>that i'll rename "available-devices"
<mothacehe>or eligible-devices
<jpoiret>nice. As for the mkfs thing, maybe we could simply add a "call-external-install-command" syntax that would replace invoke everywhere in the installer? (or at least parted)
<mothacehe>seems like a nice idea :)
<roptat>compiling a lexer and a parser with flex and bison, I get this error: error: unknown type name 'YYLTYPE' when building the generated lexer. I can see bison defines YYLTYPE, but only in the C file, not in the header file. How can I fix this?
<jpoiret>good :) i'll work on that
<mothacehe>yay! i'd like to harden a bit the installer for the 1.4.0 release, so that's much appreciated
<jpoiret>yes, i've also been procrastinating on a better networking page, with a possible manual setup
<jpoiret>someone had an issue where their DHCP didn't have a default DNS
<mothacehe>yes, now that we have guile-netlink, we don't have an excuse anymore :)
<jpoiret>exactly what i was thinking aha
<jpoiret>maybe we could remove connman?
<mothacehe>that would be nice, but we still need it for wifi discovery/connection
<jpoiret>and DHCP i guess
<jpoiret>we have a `run-command` in utils.scm, but it doesn't log the output to syslog, only that it is executing the command
<mothacehe>we are using a dirty wrapper i wrote on top of nmcli, once we have guile-dbus, we can at least have a cleaner integration
<mothacehe>run-command is also pausing the input
<jpoiret>i think repurposing run-command (it's only used 3 times if grep is right) would be good
<jpoiret>don't you think it would be great if it could also display the running command to the user right before "Press Enter to continue"?
<mothacehe>yes that would be nice!
<ngz>It seems <> is stuck since Dec, 22th.
<Kabouik>How can I configure default sshd settings in Guix system? There is no /etc/ssh/sshd_config file after installing openssh-server.
<mekeor>Kabouik: in your system declaration, e.g. you can put (operating-system (services* (service openssh-service-type (openssh-configuration ...))))
<jpoiret>see at openssh-service-type
<Kabouik>Oh, thanks. That is going to be confusing for me as I don't know Guile, so not having a sshd_config file will make things harder
<florhizome[m]>„guix gc —F 50G“ is now running since hours in „deleting used links“ phase...
<arjan>hi! I have some shepherd user services defined in a separate config file that I want to move to a guix home configuration, how could I load that file or define them in home services?
<florhizome[m]>florhizome[m]: is that normal?
<jpoiret>the "deleting used links" phase is the one where actual deletion takes place
<jpoiret>what fs type do you use?
<florhizome[m]>jpoiret: That went by fast.
<jpoiret>it should handle large directories ok then, that's weird
<mekeor>Kabouik: as written in the manual, you can still stick to the sshd_config syntax per (openssh-configuration (extra-content "PermitRootLogin yes")) e.g.
<Kabouik> I added some brackets under openssh-configuration in my ~/.config/guix/system.scm: Is that what I should do?
<Kabouik>Also one side question, how do you make bash scripts find bash without editing the top "#!/bin/bash" in each script? I made a symlink from /run/current-system/profile/bin/bash to /bin/bash but I don't know if that's the right way, I'm new to the guix file system paradigm.
<jpoiret>you shouldn't ever have to add symlinks to anywhere else manually, everything should be taken care of by your config.scm file. The best way would be to have `#!/usr/bin/env bash` as the shebang line (i think that's the recommended one anyway in other distros too)
<jpoiret>good old sed can do the trick pretty easily I reckon
<Kabouik>Right, maybe I faced this issue because the first script I used didn't use the recommended shebang. You're right, it should not be #!/bin/bash in the first place
<jpoiret>as to the system.scm file, it looks good to me
<jpoiret>I personally have my system.scm file root-owned and read only, just in case
<jpoiret>since it can do whatever it wants to your system (it is a guile program that'll be run as root)
<Kabouik>Thanks. I'm not sure how to make Guix take the changes in ssytem.scm into account though.
<Kabouik>Mine is in ~/.config/guix/system.scm, but making it owned by root seems like a good idea indeed
<florhizome[m]><jpoiret> "it should handle large directori..." <- Hm.
<florhizome[m]>i think I’ll abort it for the moment
<jpoiret>Kabouik: you have to reconfigure using `sudo guix system reconfigure ~/path/to/your/config.scm`
<jpoiret>you may want to read
<Kabouik>Shouldn't it be `sudo -E guix...`? I think I saw that in the SystemCrafter video I used to install Guix
<Guest41>trying to install guix on my laptop, went out to get a wifi dongle for network. arent drivers for it included in the installation image?
<Guest41>its a tp-link dongle
<Kabouik>No Guest41, not with the official GNU Guix image
<Guest41>that complicate things...
<arjan>Guest41: ath9k based devices are supported by linux-libre in case that is an option
<mekeor>Kabouik, Guest41: there is the driver ath9k_htc which works for some wifi dongles. i use such a wifi dongle, namely TP-Link TL-WN722N
<mekeor>here's a list of devices which ath9k_htc supports, which is loaded on guix system (also install image) by default, at least: -- there might be other relevant drivers as well, but idk
<gnoo_>/gnu/.../grub/i386-pc/ doesn't exists. Please specify --target or --directory
<yewscion>If I'm rewrapping an executable with an environment variable, is it correct for the resulting wrapped binary to have multiple definitions for the same variable? It works, but it looks sloppy.
<Kabouik>Seems openssh still doesn't use my custom ssh port after system reconfigure
<gnoo_>Above it is: grub-install --boot directory /mnt/boot --bootloader-id=Guix --efi-directory /mnt/boot/efi exited with status 1;
<gnoo_>What should I do?
<mekeor>Kabouik: maybe try a manual restart of the sshd per 'herd restart sshd' or so
<Kabouik>I did mekeor, no luck
<mekeor>Kabouik: how did you configure it?
<rekado><abrenon> [16:31:11] so should one regularly delete its substitutes cache ? <— no.
<Kabouik>mekeor: and then I ran `sudo -E guix system reconfigure ~/.config/guix/system.scm`
<Kabouik>I just want to disable password logins in ssh and change the default port.
<mekeor>Kabouik: hmm. i'm not sure. could you need to specify '22 instead of 22?
<mekeor>just a wild guess
*mekeor shrugs
<Kabouik>I can try but the manual says the default is 22 while it does say 'something for other options
<Kabouik>I'll try. Anyway I realyze I also need to specify other defaults for ssh_config and ont only sshd_config, because I want the machine to use the custom port when it connects to other ssh servers
<gnoo_>I did guix system init and it didn't fix itself so... Anyone know how to install grub manually? Or maybe fix that error?
<jpoiret>gnoo_: do you have your config at hand?
<jpoiret>it looks like you're using the grub-efi-bootloader with the non grub-efi package
<gnoo_>Yes, I have it
<jpoiret>can you paste the relevant (bootloader ) part?
<gnoo_>There's no curl in image, how can I download it?
<gnoo_>Guix install curl?
<mekeor>Kabouik: you can still use ~/.ssh/config, independently from guix
<jpoiret>does /sys/firmware/efi/ exist on your system?
<jpoiret>if not, you're not booted through the UEFI firmware
<mekeor>Kabouik: i think you should make sure that the reconfiguration procedes successfully and that the service-restart procedes successfully. also you might check the logs of the service and the generated sshd-config file.
<gnoo_>It doesn't exista
<gnoo_>But my old os used uefi
<[[>My /var/guix/db/db.sqlite-wal is corrupted. How can I fix it? Is it safe to just delete it?
<Kabouik>They did look like they succeeded and I manually restarted with `sudo herd restart sshd`, but maybe I missed something and I will try again mekeor. From the manual, however, it is not clear to me how to specify ssh default settings (not sshd). Like if I want to connect from my Guix system to a server using port 123, I would do `ssh -p 123`, but if I want to use eternalterminal, I need the port to be set tod efault in ssh since eternalterminal uses
<Kabouik>default value.s
<mekeor>Kabouik: you can edit ~/.ssh/config to specify ssh-config for your user.
<Kabouik>Ok, so that part (client ssh) is not to be set in Guix scm file, I see
<Kabouik>Thanks. I'll redo the system reconfigure and check if I see errors to understand why connecting to my Guix machine is still done through the port 22 though.
<mekeor>Kabouik: i'm not sure if you can use "guix home" to create that file. i think, you can. (but you won't write it in scheme, afaik.)
<gnoo_>If I use grub-bootloader with (target "/dev/sda") then it says cannot build derivation /gnu/.../..-system.drv : 1 dependencies cannot be build
<Kabouik>What do you mean by "guix home" mekeor? In general, but that's because I'm totally new to Guix system, it's not straightforward to me what should or shouldn't (and can or cannot) be set in the scheme file.
<mekeor>Kabouik: guix is a package manager. you can install packages etc. guix is also a system declaration system. you can declare services and an operating system and apply that declaration. and just recently, guix -- as per "guix home" -- gained support for "supports declarative configuration of “home environments”". guix-home can make sure that you, as a user, have specific files (in your home-directory), or that
<mekeor>services are running. (because shepherd also supports user-services.)
<mekeor>Kabouik: personally, i didn't try guix-home yet because guix lacks a compatibility between system- and user-services. i don't like that.
<Kabouik>I installed Guix System. I knew Guix was also the package manager (also available on other distros) but I had never heard of guix-home
<mekeor>Kabouik: see for more info on guix-home.
<mekeor>Kabouik: i didn't want to mansplain, i just wanted to list all general features of guix, i know of. :D sorry (:
*mekeor sees the beta-warning in the section about guix-home in the guix-manual :D
<Kabouik>No problem at all mekeor, I'm opening tabs for further reads :p
<\a>How can I recover from a missing /var/guix/db/db.sqlite-wal? It got corrupted so I deleted it. guix pull fails with guix pull: error: Git error: object not found - no match for id (9f6532c77d35603f5e5d190616e0c6b1740e82bd)
<mekeor>dayum, you should have moved it away, at least :D
<Kabouik>Client side is fixed using ~/.ssh/config mekeor, but that part was easy because it looks like what I was used to before Guix/Guile/schemes
<\a>cp failed with Input/Output error, but I did do cat /var/guix/db/db.sqlite-wal > ~/db.sqlite-wal to recover part of it first.
<mekeor>Kabouik: yep :)
<\a>Except I seem to have lost it
<florhizome[m]>hm After guix gc –F 50G there are still only 36G left on this.
<Kabouik>Stupid issue I think mekeor... It worked, but I realize I reconfigured with my example scm file where the port was 12345. I did edit it to the real port, but that was after reconfigure. :<
*Kabouik hides.
<mekeor>Kabouik: :D
<mekeor>\a: maybe ask in the guix-help mailing-list
<mothacehe>jpoiret: i pushed a patch to wip-hard-installer branch, the system tests are run here:
<jpoiret>thanks! i'm currently trying to fix a guile bug (i think) where system* doesn't set up stdin,out,err when they have duplicate fds
<mothacehe> oh guile interface is terrible here
<jpoiret>i was trying to redirect system* stdout and stderr to the same port
<mothacehe>racket system interface is much better
<Kabouik>What packages provides tput on Guix system?
<mekeor>Kabouik: ncurses
<Kabouik>Oh right, thanks!
<\a>Is running sudo guix system init /etc/config.scm / on my Guix system installation safe?
<lfam>That will re-install your system from scratch
<lfam>Are you sure that's what you want to do
<mekeor>lfam: \a lost their guix-sqlite-database
<mekeor>i guess that's what the re-install is about
<mekeor>(i meant /var/guix/db/db.sqlite-wal)
<\a>/var/guix/db/db.sqlite-wal is missing, but /var/guix/db/db.sqlite still exists
<GNUtoo>hi, I have a bug similar to on master on i686 with 8GiB of RAM and 9GiB of swap, is there some tricks I can use to increase the memory Guile can use?
<GNUtoo>I've that: "GC Warning: Failed to expand heap by 8388608 bytes" and then "GC Warning: Failed to expand heap by 65536 bytes" and then "GC Warning: Out of Memory! Heap size: 2616 MiB. Returning NULL!" and then "Warning: Unwind-only out of memory exception; skipping pre-unwind handler." and then the build kind of hangs
<GNUtoo>Is there some limit on the amount of memory per process on i686?
<Kabouik>What is the recommended workflow for rust applicaitions distributed through cargo? I tried installing cargo with guix but then `cargo install` seem to fail on the software I tried. Should I use rustup to install cargo?
<Kabouik>Same question with pip3, not sure how to install it on Guix System, I see no relevant package in Guix.
<mekeor>Kabouik: i think you gotta package the crate for guix
<mekeor>Kabouik: there is also `guix import crate …` for this purpose. see manual-chapter 9.5
<Kabouik>Let's see, thanks again mekeor
<mekeor>but i have a related question: how can i run "cargo build" on guix-system? it fails for me with an error claiming that "cc" can't be found
<opalvaults[m]>does 'cc' come with another package other than gcc-toolchain? libtool is complaining about not being able to find cc. Does it need to be included with system.scm or something?
<opalvaults[m]>(trying to build vterm)
<opalvaults[m]>or should I just use the emacs-vterm or some such package and that will pull in the necessary packages? I've been using straight.el but I suppose there's no time like the present to switch on over to Guix :P
<lfam>Many Guix packages set the make flag "CC=gcc"
<lfam>That's because GCC doesn't provide a binary named "cc"
<opalvaults[m]>mekeor: it seems we are in a similar dilemna
<mekeor>opalvaults[m]: yes
<opalvaults[m]>lfam I PM'ed you btw
<Kabouik>I can't tell mekeor. I would need `cargo install` too to be honest because I use rust plugins for Kakoune and the plugin manager installs them with cargo install.
<attila_lendvai_>lfam, IIRC gcc-toolchain (or maybe only clang-toolchain?) provides one
<mekeor>opalvaults[m]: maybe we gotta create a package declaration for guix. i mean isn't it possible to specify a local path inside (package (source (origin (uri …))))?
<opalvaults[m]>well fwiw, installing emacs-vterm did not fix the situation (which makes sense).
<lfam>I don't believe that gcc-toolchain provides a `cc` executable
<mekeor>Kabouik: you need to package all plugins for guix
<lfam>So, like I said, you probably need to set CC=gcc
<opalvaults[m]>If i try and install gcc, it downgrades my toolchain
<opalvaults[m]>unsure if that's an issue, but I noticed it didn't fix the issue of finding CC either.
<opalvaults[m]>mekeor: it's not a bad idea to do a specification->package "gcc-toolchain" I suppose. That's what I'm trying next.
<mekeor>lfam: CC=gcc seems to help in my case. thanks :)
*mekeor ran "export CC=gcc"
*mekeor ... before running "cargo build"
<opalvaults[m]>ah, good that you found a solution mekeor . That does not work for me.
<opalvaults[m]>I'll try putting it in .bash_profile or something.
<mekeor>opalvaults[m]: oh no hmmm strange!
<mekeor>opalvaults[m]: what does `export $CC` tell?
<mekeor>i mean `echo $CC`, sorry
<Kabouik>I'm getting "error: could not execute process `rustc -vV` (never executed)" in all cases
<opalvaults[m]>it's empty. The problem is that Emacs is doing a prompt for compiling vterm for me.
<opalvaults[m]>So I need Emacs to see the env variable
<lfam>Is there anyone who can help me with the installer system tests? I'm struggling to adjust them to account for a new page in the installer
<mekeor>opalvaults[m]: you need to run "export CC=gcc" before you start emacs in that shell
<florhizome[m]>what pattern do you use to clean up system/guix generations? I think I read somewhere about using an algorithm to generate the pattern
<opalvaults[m]>aye! mekeor that worked! I didn't think to run it in terminal mode
<opalvaults[m]>thanks for the help
<\a>initializing operating system under '/'...
<\a>guix system: warning: initializing the current root file system
<\a>populating '/'...
<\a>error: failed to evaluate directive: (directory "/gnu/store" 0 0 1021)
<\a>guix system: error: chmod: Read-only file system
<Kabouik>Any idea about the rustc issue? I assume I'm just missing a package
<mekeor>opalvaults[m]: yeah. the env-var is set inside the shell and gets passed to all child-processes ;)
<lfam>florhizome[m]: I decide how long I want to keep generations for, and then delete older generations with something like `guix package -d 2m`, which deletes everything older than 2 months
<lfam>\a: That's expected. It won't be easy to overwrite the running system
<opalvaults[m]>I was assuming that emacs opened up a new shell (much like it does with `term`) when calling to compile vterm. My bad. Thanks for the lesson.
<Kabouik>Well I was just missing `rust`, thought it would come as a dependency for `guix install cargo`
<mekeor>i'd love to have emacs-tree-sitter packaged for guix :)
<opalvaults[m]>maybe i'll take a crack at it
<mekeor[m]>opalvaults: we could have a pair-packaging session :D
<mekeor[m]>i also would love to package wezterm (<>) but maybe i get used to emacs' shell
<opalvaults[m]>Sure I'm down, I'll pm you
<lilyp>rekado: Heads up, guile-aiscm has a raw commit instead of a tag in the git-reference
<mekeor[m]>opalvaults: i wonder if it'd be possible to use in emacs to start a guix-shell with certain arguments so that rustic would work nicely in emacs on guix-system xD
<florhizome[m]>hmmm so I deleted some guix, home, and system generations, started guix gc another time and this time it just keeps going in „/gnu/store/trash“
<lilyp>florhizome[m]: that's the two-staged gc which is necessary due to hard-linking
<opalvaults[m]>wow guix hash be convenient as heck
<mekeor[m]>when i run `guix shell rust-foo`, does guix add rust-foo to some kind of env-var or so? or how is it found by cargo within that shell?
<lilyp>if you run guix shell rust-foo without anything else, nothing useful will happe
<lilyp>if you use -D rust-foo, you will get an environment to hack on rust-foo, including obviously rust and cargo
<mekeor[m]>lilyp: why not?
<mekeor[m]>lilyp: "guix shell rust-foo" creates a shell where rust-foo seems installed. that's what i want.
<lilyp>yes, but even if rust had an envvar for rust crates (it doesn't as far as Guix is concerned), running that shell would not modify it
<karrq>hey I just made a manifest with some dependencies for a project but when running it seems to lack gcc-subs32 header. I tried searching and it's because I'm lacking some multilib headers (namely gcc-toolchain for i686-linux) but I don't know how to write the manifest to specify that
<karrq>I found this but I don't know how to translate it into a manifest for `guix shell`
<mekeor[m]>karrq: i have a very old manifest. so i might not be up-to-date. but i have "gcc-toolchain@6" in there. does that help?
<karrq>that looks like the version of the package, but the system :(
<karrq>hmm I can use `--export-manifest` from an existing profile. maybe I can start with the manifest I have, install the different system version for gcc-toolchain, and export
<podiki[m]>not sure, but you may need to specify a (simple) package variant where you set system so that you get the one you want
<mekeor[m]>i wonder if `guix shell -D -m manifest.scm` does what i think it does
<podiki[m]>or actually use --system (not sure in a manifest how that would work)
<karrq>sorry this is actually my first time using manifest in guix, or really using guix a bit more than reading about it... so "making a simple package variant" I don't know how to start actually
<karrq>I tried `guix shell -m manifest.scm -s i686-linux` but that didn't do anything actually
<mekeor[m]>lilyp: am i wrong that "guix shell rust-foo" creates a shell where rust-foo seems to be installed?
<lilyp>you're not wrong in that it creates a profile containing rust-foo and loads that profile, but for one, said profile does not contain rust or cargo and for another it does not set any environment variables (as far as I'm aware)
<mekeor[m]>lilyp: well, i have rust and cargo installed globally. so that's fine for me in this certain case. but i wonder how cargo/rustc finds the rust-foo package when i run `cargo build` inside a directory which depends on rust-foo (while being inside said shell).
<lfam>lilyp: It should set PATH
<mekeor[m]>lfam: what would it add to PATH?
<lfam>You could try it yourself and see :)
<lfam>`gux shell hello` and then `echo $PATH`
<lfam>It creates a new profile and prepends it to PATH
<lfam>And you could also run `env` before and after to see all things it does
<lilyp>lfam: even if there's no bin folder?
<lfam>It works by changing environment variables
<mekeor[m]>lfam: i guess that's because "hello" has an executable output. rust-foo is meant to be a library.
<lfam>The 'hello' package has a bin folder
<lilyp>but otherwise yeah, PATH will be set if there's a bin folder
<mekeor[m]>so, how does cargo/rustc find the library if the env-vars don't change?
<mekeor[m]>even PATH isn't changed
<opalvaults[m]>What module do I need for home-page. I have:... (full message at
<lfam>So, does *anything* change?
<lfam>You could use `env` to find out
<nckx>Morning, Guix.
<sneek>nckx, you have 1 message!
<sneek>nckx, lfam says: Same annoying issue with '.$hash-disk-image-rw' filling up $TMPDIR
<lilyp>mekeor[m]: ✨✨ magic ✨✨
<lfam>nckx: I'm still trying to finish those patches that offer NTP and GPM in the installer. What I have works well, but the hard part is figuring out how to instrument the system tests properly
<nckx>opalvaults[m]: It's just a <package> field (<package> is provided by (guix packages) but that's not even truly relevant here). Sounds like you have a typo.
<nckx>lfam: I found that the hardest part as well.
<lfam>Want to take a look at what I have?
<lfam>I'm floundering because each run of the system tests takes at least an hour
<lfam>Because building the Guix package is slow
<mekeor[m]>mekeor: oh, cargo does not use rust-foo which is installed via guix. it just downloads it by itself xD
<opalvaults[m]>check parens isn't giving me any flak, the line is:... (full message at
<nckx>Sure, lfam, although I'll only be here for another five minutes. Might be back later tho'.
<lfam>Oh, alright
<florhizome[m]>„guix style -L .“ in guix shell in a channel dir fails with mkstemp: filesystem is readable only
<lfam>If we meet again later I'll bug yo
<florhizome[m]>florhizome[m]: what to do. :/
<nckx>You very seldom bug me.
<lfam>I know
<nckx>opalvaults[m]: Can you share the error?
<lfam>Can you tell I'm getting desperate to finish this patch series
<florhizome[m]>Also any other time
<podiki[m]>sneek: later tell karrq take a look at to get started, not sure if this is what is easiest, but this is one way to have a package definition for a particular system, by modifying that argument
<nckx>lfam: It would be nice to have in 1.3+1 for sure.
<opalvaults[m]>work:test-tmp:% guix package --install-from-file=emacs-tree-sitter.scm <opalvaults-package-devel ✗>
<opalvaults[m]>/home/opal/Projects/Code/Guix/test-tmp/emacs-tree-sitter.scm:16:27: error: home-page: unbound variable
<opalvaults[m]>hint: Did you forget a `use-modules' form?
<opalvaults[m]>i'll do a pastebin, sorry
<lfam>nckx: I would even considering punting on the system tests...
<mekeor[m]>openvaults: wanna pair-package here?
<nckx>opalvaults[m]: Thanks, and also share the complete file.
<mekeor[m]>openvaults: just make sure you select RobotoMono as font in top-right corner :D
<podiki[m]>sneek: hello?
<nckx>‘We can pair-program but I get to choose the font’ is the new ‘sure you can drive but I get to choose the music’.
<nckx>lfam: If you punt, you punt, but we can't break existing tests.
<mekeor[m]>i think everyone has to choose their own font for themselves. i just wanted to mention that it's not required to keep the default font
<lfam>(url home-page)
<lfam>That won't work
<lfam>Just write the URL again
<lfam>home-page isn't available in the context of origins
<lfam>nckx: Yeah, I would just not test the new functionality
<lfam>I know it works
<opalvaults[m]>sorry what is the issue?
<nckx>opalvaults[m]: If you want to use home-page in the source origin (this has nothing to do with (home-page "foo") as I thought), you need to place home-page above source.
<lfam>home-page isn't available in the context of (source (origin ...))
<opalvaults[m]>is that directed at my paste?
<opalvaults[m]>it's not underneath source origin?
<opalvaults[m]>It's under package
<nckx>It's literally under source.
<mekeor[m]>yes but it's not available in the above context
<opalvaults[m]>there's a closing bracket on source (origin
<mekeor[m]>why not use my link so everyone can see the changes? xD
<nckx>Gotta go.
<opalvaults[m]>I'm confused. Is it a scoping issue?
<Kolev>Do I really need to use ungoogled-chromium-wayland if I'm using Sway?
<mekeor[m]>maybe i was wrong
<nckx>opalvaults[m]: You're using home-page (in source) before it's defined (*under* source)? I don't understand the confusion so I can't fix it. Good luck!
<mekeor[m]>opalvaults: nckx moved a line upwards:
<mekeor[m]>oh wait. tree-sitter isn't packaged for guix as well uh heh
<robin>jpoiret, oh, i forgot about --allow-downgrades, and haven't GCed in a while either, ty!
<opalvaults[m]>so guile is lexically scoped. maybe i've been spending too much time in Emacs Lisp
<robin>(probably easiest just to make an alias to /gnu/store/... for a single program, really)
<jpoiret>mekeor[m]: there's someone working on tree-sitter iirc. I think it's in the ML
<opalvaults[m]>jpoiret: well then I guess I should quit working on this package then lmao
<opalvaults[m]>serves me right for trying to contribute
<robin>opalvaults[m], right, you have to explicitly use fluids or parameters (wrappers around fluids) for dynamic scope
<opalvaults[m]>okay well mekeor looks like you'll get it at some point
<mekeor[m]>opalvaults: tree-sitter does not equal emacs-tree-sitter, so your work is useful!
<robin>(or delimited continuations if you want to do it the hard way ;))
<jpoiret>although in Guix you shouldn't really have to touch fluids or parameters unless you know exactly why
<opalvaults[m]> mekeor here is my WIP if you want it sooner
<opalvaults[m]>I was still testing it but it should just take a bit of tinkering with guix package --install-from-file=nameofpackagefile.scm
<opalvaults[m]>I have no use for this package personally so if it's more urgent there's a way to get it on guix :)
<mekeor[m]>opalvaults: emacs-tree-sitter depends on emacs-tree-sitter-langs which is quiet complex as it has an own build-script AFAICS:
<opalvaults[m]>yeah guix doesn't have cask so that's a whole other can of worms.
<mekeor[m]>opalvaults: i was thinking you code rust in emacs, too :)
<opalvaults[m]>Nope! can't stand Rust actually lmao
<opalvaults[m]>cool borrowing system tho
<rekado>lilyp: the raw commit is on purpose
<rekado>tags are mutable
***attila_lendvai_ is now known as attila_lendvai
<nckx>Everyone has opinions and (often valid) arguments about whether to prefer url-fetch, git tags, git commits, …, but there should be a clear standard that everyone follows, whether or not they agree.
<nckx>There actually seems to be consensus about using commits over tags but it seems to be scattered across threads & lists & IRC asides; e.g., <>
<Kolev>I forgot the workaround to get alacritty to run.
<jpoiret>is there any?
<jpoiret>alacritty ran fine when i tested it i think, although I just switched to Kitty
<Kolev>jpoiret: Alacritty and Kitty have GPU issues on the Libreboot laptops.
<Kolev>There was an env. var. that let me run it, but I don't remember what I ran, and it's not in my Bash hist.
<nckx>opalvaults[m]: I'm not very familiar with elisp. Are you saying that dynamic scoping means that you're able to refer to a variable (or field, if there's such a thing) before it's defined? I thought it was something different.
<jpoiret>oh, seems like a pain to debug...
<usernegativeone>vagrantc: weird question but what browser do you use? I'm on a pbp and webkit crashes on and js-heavy sites; not sure if that's just me tho
<jpoiret>nckx: yes, basically the lexical context of a definition isn't captured, so rather you'll be looking up globals instead
<nckx>But doesn't that imply some kind of lazier evaluation too?
<jpoiret>that's also why dynamic scoping cannot be easily optimized, you don't know what binding you're referring to until you actually run the code
<jpoiret>how so?
<nckx>I have a basic grasp of how lexical/dynamic scoping work, but I didn't think this would be a side-effect.
<vagrantc>usernegativeone: i was briefly using epiphany, but ever since the merge of core-updates* it hasn't built, probably due to a rust dependency
<vagrantc>usernegativeone: mostly, i haven't used a browser
<nckx>jpoiret: Here, HOME-PAGE is used before its value is known:
<nckx>That would work in elisp?
<vagrantc>usernegativeone: i had also been using netsurf, though it is of limited functionality
<Kolev>$ LIBGL_ALWAYS_SOFTWARE=true alacritty ## This was the line.
<podiki[m]>I also don't see how that snippet could work, home-page is defined later and in different scope
<podiki[m]>so it could find a global with the same name, if it existed
<nckx>That was also my impression.
<jpoiret>nckx: i don't think so, especially since package is actually a lot of syntax
<podiki[m]>(globals in lisps typically get some convention of naming, this being one reason I think)
<nckx>OK, thanks both. The response was ‘so guile is lexically scoped. maybe i've been spending too much time in Emacs Lisp’ which confused me, because it didn't seem like elisp would fare any better.
<usernegativeone>vagrantc: hasn't built as in locally or on the substitute build farms?
<vagrantc>usernegativeone: i don't think it's possible to build at all
<vagrantc>usernegativeone: until someone gets a working rust bootstrap on aarch64...
<opalvaults[m]>nckx: the context here is that I didn't realize (url home-page) was of any importance, nor did I touch that part of the package definition. Another curse of homoiconicity.
<nckx>you thought some kind of hidden quoting was going on behind the scenes?
<usernegativeone>vagrantc: ah shit didn't see the rust dep :(
<usernegativeone>vagrantc: well, thanks! god I hate the contemporary internet
<opalvaults[m]>nckx: I ripped that package definition from another package above it, which must have had (home-page.. as an expression above (url home-page). However I tried to consolidate the information so that all arbitrary discriptions were at the bottom
<nckx>opalvaults[m]: I also prefer simply ‘duplicating’ (whether it's really duplication is a matter of taste) both URLs here.
<opalvaults[m]>A case of not paying attention (also I suck at Scheme). ;)
<podiki[m]>maybe it was just a let? you'll see that for defining commit to use in the source
<podiki[m]>so then you'll see (commit commit)
<opalvaults[m]>nckx: I saw other package definitions doing that. Should have just taken a page from their book instead.
<opalvaults[m]>Good learning experience all the same.
<nckx>The temptation to over-factor code is often strong, e.g., (url (string-append "" name "/" name "/" …)) — no value whatsoever. I'm of a similar mind about (url home-page).
<podiki[m]>different package copied, different thing learned :)
<nckx>opalvaults[m]: Right, you've now learnt a thing!
<nckx>As have I, that elisp is not magic, just cursed.
<podiki[m]>"Guix: You'll learn something whether you want to or not"
<nckx>Prepare to be educated.
<opalvaults[m]>Ahaha, I really like Elisp but I get that others don't.
<opalvaults[m]>I find it a lot easier to figure out personally.
<opalvaults[m]>But that's because I can use describe-X and get what I need.
<opalvaults[m]>Does the guile repl have a similar functionality?
<opalvaults[m]>/guix repl
<podiki[m]>and/or emacs-guix
<nckx>opalvaults[m]: There's a ,describe but I don't know if it can compete with emacs'.
<nckx>Going by precedent, probably not.
<opalvaults[m]>ah I see
<nckx>opalvaults[m]: I don't hate elisp :) I just avoid using it despite using emacs a lot.
<opalvaults[m]>I was hoping for like...,describe program. I see that it has a ,describe setuid but that isn't the same as %setuid-programs, etc.
<opalvaults[m]>It'd be kind of nice to have an array of guix variables to look up
<opalvaults[m]>or functions, symbols, etc.
<nckx>Modules make that difficult.
<opalvaults[m]>Like G-expressions were a strange one ;P
<nckx>But yes, even then.
<vagrantc>sneek: later tell usernegativeone i also haven't actually been able to build "guix" on aarch64 either due to test suite failures, so ... things are ugly on aarch64 right now
<sneek>Got it.
<nckx>G-Expressions look scarier than they are!
<vagrantc>sneek: botsnack
<podiki[m]>finally read the manual on g-exps last night, making some sense now
<opalvaults[m]>I've already said my peace about all of that last night.
<opalvaults[m]>I would have just liked to append "#~... to %setuid-programs or something
<opalvaults[m]>as the list inside of define %setuid-programs is a simple list of g-expression strings
<nckx>You mean like a magical #~bash/bin/bash notation? (Which is tricky, because / is currently used as a valid package variable name, but that could be adjusted.)
<opalvaults[m]>(define %setuid-programs... (full message at
<opalvaults[m]>Does that format correctly or does it look like hot garbage. It looks fine on Matrix but I don't want to be hurting peoples heads with these pastes lmao
<opalvaults[m]>i was mistaken they aren't strings.
<nckx>We see:
<nckx>27 Dec 23:21:13<opalvaults[m]> (define %setuid-programs... (full message at
<nckx>It's not super-pleasant if it's just text that could have been multiple ‘real’ lines, and then there are the geniuses that ping you at the end of the text hidden behind the link, but when used as a pastebing substitute it makes sense.
<opalvaults[m]>oh hey that's pretty convenient
<nckx>Yeah, just don't ping people beneath the fold ☺
<opalvaults[m]>pastes it for me
<opalvaults[m]>ahaha, noted
<opalvaults[m]>i'll just use paste.debian from now on
<nckx>Oh, I think both are fine.
<nckx>Just use 'em the same way. Don't write a prose letter to and post it here.
<nckx>opalvaults[m]: It's not clear to me what your objection is to the above snippet, but perhaps that's been discussed to death above and we shouldn't rehash it. I'll read the backlog if I have time.
<opalvaults[m]>so guix repl gets me into what I assume is a guile/geiser repl. Why is it that guix can't access something like "describe-function" can in Emacs? Is Guix not as "alive", in that sense?
<opalvaults[m]>nckx: I have no objection to the above snippet. My objections were to the way a user must implement mutation to that in their configuration files. It's very verbose, non-intuitive, etc. However yes, I think it's been discussed to death. Feel free to PM me if you want to talk about it further :)
<jpoiret>sneek, later tell mothacehe: do you think we could add a "Paste to" link for the backtraces in the installer? I was thinking we could also have the same for syslog
<sneek>Got it.
<nckx>jpoiret: If it's not considered abuse (we'd set it to expire, of course) why not do that for the user? Installations are networked already. ‘Here's your pastebin link: …’
<nckx>opalvaults[m]: I'll pass, but only because the subject doesn't fascinate me that much ☺
<nckx>opalvaults[m]: Here's what I wrote, matter of taste & all that:
<jpoiret>nckx: I don't think it is, Debian does the same from what I gather
<nckx>Well, it is their pastebin, but point taken 😉 Probably fine.
<opalvaults[m]>nckx: That's quite an interesting take to make a lambda function that allows for easier consing of multiple programs. I was actually trying to make that work this morning. You might add that example along with lfam's example (which they've already done a PR for) to the Setuid manual page. The one that finally worked was
<jpoiret>although might be saying otherwise
<opalvaults[m]>nckx: I'm unable to use keybinds to lock sway however. It appears to only work if I manually type in 'swaylock' to a terminal..
<opalvaults[m]>Did you run into any trouble with that?
***lh is now known as hpfr
<opalvaults[m]>This also doesn't seem to want to work: bindsym $mod+Shift+x swaymsg -r exit
<opalvaults[m]>the swaylock binding is simply: bindsym $mod+Shift+p swaylock
<nckx>bindsym $mod+L exec swaylock -C ~/.config/sway/lock.conf # works for me
<opalvaults[m]>Ah, excellent! I will give that a shot. Does swaymsg need a similar directive?
<nckx>I don't use swaymsg, sorry.
<jpoiret>I finally properly configured swayidle today with elogind lock-session support, it's pretty nice
<jpoiret>now when close the lid and reopen (ie suspending), it goes back to the GDM login screen 8)
<opalvaults[m]>may I see either of your configuration files for sway? I'm running into a lot of programs from the default configuration that don't execute.
<nckx>Well, not knowingly. Seems I do use it in rather a convoluted way:
<opalvaults[m]>( jpoiret I'm surprised you got sway working with GDM! I wish I was able to as well.
<jpoiret>you need to have (wayland? #t) in your gdm-configuration
<opalvaults[m]>Ah, I think nckx mentioned that but I wasn't able to figure out where to put it. Maybe I'll give that shot at some point this week.
<jpoiret>heh, I just got a "Do not spam" from Weird, I haven't been using it that much today
<nckx>It was in the context of a modify-phases snippet which you'll also need.
<jpoiret>opalvaults[m]: let me link you the relevant part of my config as well
<nckx>I just got the same ‘do not spam’ nonsense.
<opalvaults[m]>jpoiret: much appreciated! same to nckx, thanks for the help.
<nckx>I hope you like cargo as well as cults.
<jpoiret>opalvaults[m]: here is my sway config (disregard all the borked comments, relics of Arch Linux)
<opalvaults[m]>I'm unfamiliar with the term nckx . Urban dictionary says:
<opalvaults[m]>The act of copy and pasting code from a source (book, website, CD_ROM etc) into code you are writing, without first understanding what it does.
<nckx>Basically, although I was exaggerating.
<nckx>I know what everything does at least.
<nckx>But don't assume anything I do is the best way to do anything.
<jpoiret>opalvaults[m]: this should work (you can remove the (debug? #t) part though)
<opalvaults[m]>Well to be frank, a lot of the behavior of these configuration declarations can be very unintuitive. I come from Puppet/Ansible and automation. I don't think I ever would have figured out that I'd "need" to modify desktopservices and remove gdm-service, etc.
<opalvaults[m]>Sometimes the cargo cult gets me from point A->B I suppose. ;)
<jpoiret>opalvaults[m]: well, %desktop-services contain a bunch of things, so you want to modify some services that are included in it, hence the modify-services syntax
<jpoiret>it's very useful
<opalvaults[m]>jpoiret: Thanks! I will put that in the config to test later. SDDM isn't so bad for now.
<jpoiret>one day i'll ~ clean-up (whatever that means) my config.scm and post it somewhere
<jpoiret>one thing i've been meaning to do is switch my dotfiles from org -> guix home
<podiki[m]>emacs-guix is nice for seeing what are default services, jumping to their definitions,searching for services, etc
<jpoiret>you have that with `guix system search` as well
<opalvaults[m]>jpoiret: you don't find this a bit strange?
<nckx>I tried ansible once but it was so inscrutably complex that I had to give up.
<awb99>can someone tell me how I can solve this issue? I want to run "chromium --force-dark-mode --enable-features=WebUIDarkMode" every time I start chromium.
<awb99>This is needed to start chromium on wayland with hidpi scaling working.
<opalvaults[m]>nckx: I'm doing a workshop for some friends in EmacsConf, feel free to tag along if you'd like.
<nckx>Emacsconf is still going?
<awb99>I am not sure if I should do this via a bash alias and then start only via terinal
<awb99>or if I can somehow modify the XDG desktop application icons, so that this parameters are passed.
<opalvaults[m]>Sure if, Courtesy of Sacha, Zaeph, and Amin (Bandali)
<jpoiret>if you use guix home, I reckon there'd be a simple way to do that
<awb99>yes I use guix home.
<jpoiret>huh, now I feel like a fool because i don't actually know how someone would do that in guix home. But i'm pretty sure you can
<jpoiret>anyways, I'm off to get some sleep, see you all later
<opalvaults[m]>take care jpoiret
<nckx>Good night!
<nckx>I should follow.
<nckx>I'm ridiculously ill.
<nckx>Good night Guix.
<singpolyma>I believe ~/.local/share/applications is a thing
<opalvaults[m]>awb99: I believe you can execute an arbitrary command to correspond to the chromium .desktop file.
<podiki[m]>yeah I think you can overwrite the desktop file
<opalvaults[m]>It's just an Exec= directive
<mekeor[m]>awb99: you can also force dark mode via some flags in chrome://flags
<opalvaults[m]>let me see if I can find an example
<awb99>I normally start apps via wofi
<awb99>And I think wofi uses the normal xdg desktop init files.
<awb99>But I have no idea how to add them
<opalvaults[m]>As long as wofi looks in .local/share/applications, you should be able to add a .desktop file to that directory and it will pick up on it
<opalvaults[m]>The syntax is thus
<opalvaults[m]>However I'm curious if you'll be able to point to the store...
<awb99>yes, this might be more difficult.
<awb99>I think I need some kind of home service for that.
<singpolyma>Could just point to your profile as a hack
<opalvaults[m]>you may be able to point to ~/.guix-profile/bin/chromium --force-dark-mode --enable-features=WebUIDarkMode