IRC channel logs


back to list of logs

<AwesomeAdam54321>Does anyone know why I get a broken pipe error with IceCat?
<KarlJoad>I'm curious. How long does it take for patches to be reviewed, usually?
<nckx>AwesomeAdam54321: Just FYI, that's like debugging someone not answering your call when they are lying dead. Or, er… something. Aaanyway: the issue is the segfault above it, not the broken pipe.
<nckx>You could check dmesg to see what exactly segfaulted, but I don't know if it will be useful.
<nckx>Definitely a bug worth reporting if you don't get answers here.
<nckx>KarlJoad: Too long. If you don't get a response for more than a week, a friendly ping is fine.
<AwesomeAdam54321>nckx: thanks
<KarlJoad>nckx: Awesome. Good to know. Thanks.
<mbkamble>Hi. I am using fish shell as my login shell. could someone guide me how to write the code for (home-environment ... (services ... (service home-fish-service-type ...))) so that the generated fish.config will source the $GUIX_EXTRA_PROFILES/<profile>/<profile>/etc/profile for all profiles under $GUIX_EXTRA_PROFILES?
<mbkamble>I believe I will ned to use home-fish-extension, but I don't know how
<tinybronca[m]>Register says package managers won't be here?
<tinybronca[m]>"So, no, systemd is not going to become a package manager, because ordinary distros won't have a package manager at all, except maybe Flatpak, or Snap or something similar. The new functionality, including managing installed kernels, is to facilitate A/B type dual-live-system partitions."
<tinybronca[m]>This is the "experimental" feature:
<ahriman>snap is already reliant on systemd, so it may aswell count as the systemd package manager? XD
<zamfofex>I’ve let Guile 3.0.7 build on the VM again, and it seems to fail during the tests. The log file in ‘/var/log/guix’ is entirely empty for some reason.
<zamfofex>Now, it takes multiple hours to even get there, so I’m a bit hesitant to let it build again.
<nckx>Good thing Guix is no ordinary distro!
***tremon is now known as tremon_
<ahriman>zamfofex: im building Guile 3.0.7 build in a 12 core 8GB-ram VM, it really is taking very long
<zamfofex>ahriman: Are you using the Hurd too? Or are you running Guix on Linux on the VM?
<ahriman>hurd too
<zamfofex>Note that you might be able to speed things up by using the ‘--enable-kvm’ flag to QEMU if you haven’t already.
<ahriman>my qemu command had `--enable-kvm -cpu host -smp 12`
<ahriman>i'll leave this overnight, and if i dont forget i'll come back XD
<zamfofex>Fair enough!
<KiranShila[m]>Am I missing some PAM configuration here? I have `pam-limits-entry` setup such that it creates `* - memlock unlimited` in `/etc/security/limits.conf`, but those setting are not being applied. `ulimit -a` shows that the memlock size is unchanged.
<KiranShila[m]>Ah I see - is only enabled in `login` in pam.d
<KiranShila[m]>Is there any documentation for customizing pam.d entries?
<zacchae[m]>I found a script someone made to put guix on WSL, and I noticed someone suggest that the script be added to the guix installer:
<zacchae[m]>If someone made a pull request for something like this, would guix even accept it? I searched the manual for "windows" and came up dry, so I'm wondering if there is some policy against doing something like this
<zacchae[m]>Kiran Shila:
<KiranShila[m]>That’s just PAM mount, not an arbitrary pam.d entry
<lilyp>If only there was a package manager that could support more than two system generations...
<ardon>Hi guys. I'm trying to spin up a server with Guix on a VPS, but after booting up the ISO and building the new system with `guix system reconfigure', it complains about `Out of memory: Killed process'. Is my best bet to include an `ssh-service' in the ISO and then invoke `guix deploy'? Or does anyone know what are the memory requirements of Guix? I'm currently trying it on a 1GB RAM cloud instance from Vultr
<pashencija[m]>1gb sounds bad
<jpoiret>sneek, later tell civodul: do you think it'd be ok if we used (@@ (ice-9 popen) piped-process) like maximed suggested? i don't think it'd be worth it to reinvent the wheel, maybe propose exporting it upstream?
<sneek>Got it.
<jpoiret>1gb is definitely not enough, i'd suggest using guix deploy from a local machine instead
<efraim>ardon: unfortunately I'd suggest 2GB minimum
<zamfofex>Hello, Guix! I’m trying to use a Hurd VM service to offload builds, but I keep getting an SSH error. ‘guix offload test’ tells me “Access denied for 'publickey'. Authentication that can continue: publickey,password”. I have some more info to share, just give me a moment.
<jpoiret>what kind of key are you using? wasn't there some deprecation recently?
<ardon>efraim, jpoiret: Thanks, I'd mostly use it with `guix deploy' though, so it was more about the initial installation of the system. I'll try and see if I can rebuild the VPS with an ISO that has an openssh service running
<jpoiret>great! maybe it'd be worth to have a 'minimal VPS bootstrap ISO`
<meo>ardon: you may want to turn on swap
<meo>tldr dd if=/dev/zero of=/swap bs=1M count=2048 && mkswap /swap && swapon /swap
<zamfofex>jpoiret: What deprecation are you talking about?
<jpoiret>meo: you can use fallocate also to avoid having to fill it with zeroes
<meo>jpoiret: oh nice i didnt even know its a thing
<jpoiret>swap is almost always dirty anyways, the kernel doesn't need it zero-initialized
<jpoiret>zamfofex: disregard that, you use ed25519
<zamfofex>It is strange because I can use ‘ssh’ and it works, but Guix can’t seem to.
<zamfofex>I found these: <> and <>, but they didn’t seem to help.
<zamfofex>janneke: In your blog post at <>, you make use of a ‘~/.ssh/id_rsa_childhurd’. Is it special in any way? How did you establish it?
<pkill9>does anyone use guix on qubes os?
<unmatched-paren>pkill9: there was someone i think but i can't remember who
<lilyp>zamfofex: Guix doesn't use your own SSH keys
<zamfofex>lilyp: It uses root’s, right? But I was able to connect with ‘sudo ssh’ too. I also went as far as to add root’s public key to ‘/etc/childhurd/root/.ssh/authorized_keys’ to no avail.
<zamfofex>At any rate, I need to be absent for a while now, but I’ll be back later!
<rekado>for as long as I can remember, bash completion of Guix commands hasn’t worked for me.
<rekado>I’ll type “guix package --manifest=<TAB>” in a shell in Emacs (M-x shell) and I get a REPL error.
<rekado>it does seem to work in a Gnome terminal, so it must be something to do with my Emacs settings.
<rekado>do you have any ideas on how to debug this?
<blake2b>in guix we don't configure, we schematize :sunglasses-emoji:
<unmatched-paren>So, someone in #hare recently noted that the leap-seconds.list file that Hare uses for timekeeping is not included in their distribution's tzdata. I checked, and we don't have it either. Would we be able to graft a new version of tzdata that includes leap-seconds.list? Or are grafts reserved for security updates only?
<nckx>unmatched-paren: In tzdata's case you'd just update the main tzdata package whilst making sure tzdata-for-tests doesn't change.
*jonsger[m] wasn't aware that combining 16:9 and 4:3 on Wayland (on Xorg I guess as well) behaves so badly...
<unmatched-paren>nckx: oh, cool.
<nckx>So much nonsense in that convo.
<vivien>Hello guix! Who wants to have minetest 5.5.1?
<nckx>rekado: That ‘Unknown object’ error is what I get when I do *anything* with guix in Emacs, including M-x guix-all-packages. As for completion, M-x shell doesn't use bash/readline's and must roll its own. For example it fails at completing ‘ls --’.
<pashencija[m]>I want to have conditional arguments inside invoke. How do I do that?
<pashencija[m]>Arguments are two strings like `"--flag" "10"`
<unmatched-paren>maybe something like (invoke (apply string-append `("foo" "bar" ,@(if flag '("--flag" "10") '()))))? probably a simpler way
<unmatched-paren>invoke takes a single string, right?
<unmatched-paren>no, it doesn't apparently
<unmatched-paren>ignore that
<pashencija[m]>Can I write... (full message at
<rekado>(apply invoke (your constructed list here))
<pashencija[m]>the question is about (member 'esp flags)
<rekado>don’t use a single-branched if
<unmatched-paren>(apply invoke `("foo" "bar" ,@(if flag '("--flag" "10") '())))
<rekado>do what unmatched-paren wrote and build a list that’s either empty or contains your flags
<nckx>The ,@ unmatched-paren used above is particularly significant.
<unmatched-paren>(I was conflating invoke with system :P)
<nckx>Then there's system*, just to confuse you.
<rekado>pashencija[m]: you can also use append if you don’t like to quasiquote and splice.
*pashencija[m] sent a code block:
<pashencija[m]>Correct now?
<rekado>(apply invoke (append (list some args here) (if foo (list bar baz) ())))
<rekado>pashencija[m]: no
<unmatched-paren>`,@` is like `,`, but it splices the list that it's given into the quoted list. So `(foo ,(list 32 12)) returns (list 'foo (list 32 12)), whereas `(foo ,@(list 32 12)) returns (list 'foo 32 12).
<pashencija[m]>rekado: Why?
<nckx>There is no ’@’ syntax.
<unmatched-paren>nckx: Sadly.
<rekado>1) you wrote “@” instead of “,@”, and 2) you’re using “,@” outside of a quasiquoted expression
<nckx>Anyway, the suggestion to use append if this confuses you to much right now is a good one.
<pashencija[m]>Append sounds sad
<unmatched-paren>I still don't understand why whoever invented unquote-splicing didn't think to add a regular splice.
<unmatched-paren>Like how janet uses ;[32 12] for splice afaicr.
<unmatched-paren>(Its comments are #, not ;, in case you're thinking that that would just be a comment)
<pashencija[m]>Can you please help me rewrite the code above correctly?
<rekado>pashencija[m]: have you tried using append?
<pashencija[m]>The problem with append is order
<rekado>pashencija[m]: how so?
<pashencija[m]>I do not understand how to append in the right place
<rekado>“apply” takes at least two arguments: a procedure to apply and a list of arguments.
<pashencija[m]>It runs all fakeroot commands in one invoke
<nckx>unmatched-paren: That hurts my brain, but if Janet is a Lisp I guess they somehow made it work?
<rekado>you use append to append several lists of arguments into one
<pashencija[m]>So if I append to the end of the list, it appends to mcopy
<nckx>Oh, it's inspired by Lisp, more like.
<unmatched-paren>nckx: what part of it hurts your brain?
<rekado>pashencija[m]: I don’t follow.
<rekado>pashencija[m]: the mcopy thing is a separate expression
<unmatched-paren>Well, it has macros and lisp-like syntax, but it doesn't have cons cells
<unmatched-paren>it uses arrays for lists
<pashencija[m]>rekado: It's not
<pashencija[m]>It's one invoke!
<unmatched-paren>so it's debatable whether it's a Lisp
<unmatched-paren>Anyway... pashencija[m], you understand what quote, unquote, and quasiquote do?
<nckx>pashencija[m]: Then your indentation is very misleading.
<pashencija[m]>Not really...
<pashencija[m]>pashencija[m]: Two invokes. My fault
<unmatched-paren>(Janet also has quoting etc, so it gets two out of three Lisp points :P)
<pashencija[m]>nckx: It's my mind misleading
<nckx>unmatched-paren: Er, for one, how would you implement it?
<unmatched-paren>no idea. It just does :P
<nckx>Granted, I've given it all of 5 seconds thought because of your suggestion, you probably much more.
<rekado>pashencija[m]: (quasiquote (hello world)) and (quote (hello world)) both result in a list containing two symbols: 'hello and 'world.
<rekado>pashencija[m]: the difference is that inside of a quasiquote expression you can unquote to compute a value.
<unmatched-paren>nckx: source code here, in case you're that curious :)
<rekado>e.g: (quasiquote (hello world (unquote (symbol-append 'mama 'mia))))
<rekado>this computes (symbol-append 'mama 'mia) first and so you get '(hello world mamamia)
<unmatched-paren>quasiquote, quote, and unquote all have special syntatic sugar: a quote '(), a backtick `() for qq, and a comma ,() for uq.
<rekado>there’s also unquote-splicing, which has this syntax: ,@
<unmatched-paren>It's used far less often.
<rekado>unquote-splicing is just like unquote, except that it “opens up” its list value and barfs it into the containing list
<rekado>`(hello world ,@(list 'mama 'mia)) => '(hello world mama mia)
<rekado>compare `(hello world ,(list 'mama 'mia)) => '(hello world (mama mia))
<rekado>these things can be used to build up lists with conditional content
<rekado>such as your list of arguments, which depends on whether a flag is provided
<vivien>I use quasi/unquote a lot to replace cons because it’s easier to understand
<vivien>And you can put more things into the list
<vivien>`(,thing1 ,@other-things ,a-last-thing)
<rekado>pashencija[m]: your intention here is to build a list of arguments for “invoke”, and the exact appearance of that list depends on some other value
<rekado>so you can either build this list by appending lists, or you can use quasiquotation
<rekado>(apply invoke "ls" (append (list "-l") (if all? (list "-a") (list))))
*pashencija[m] sent a code block:
<pashencija[m]>Correct now?
<rekado>invoke does not take a list as an argument
<rekado>that’s why we use apply
<unmatched-paren>apply takes a procedure and a list and uses the list as the arguments for the procedure
<rekado>I encourage you to open a Guile REPL and try this
<rekado>replace invoke with system*
<unmatched-paren>it's useful when we want to pass a list as the arguments to a function that takes any number of arguments
<unmatched-paren>such as invoke or system*
<pashencija[m]>Can I do something like size-in-kib is done? What's the difference?
<rekado>size-in-kib is a procedure
<pashencija[m]>Is it... (full message at
<pashencija[m]>rekado: Yes. Cannot I just use if the same way?
<pashencija[m]>* just use `if, * if` the
<rekado>(list "-S" "1024") () —> (list "-S" "1024") '()
<pashencija[m]>rekado: Whyyyyyyy
<rekado>sorry, I don’t understand what you’re asking
<rekado>() is a syntax error
<rekado>use (list) or '()
<rekado>I still encourage you to try building this up in a REPL
<nckx>Open guile REPL, type () → error, type '() → happiness. It has nothing to do with ‘if’.
<unmatched-paren>(...) is a procedure application; it expects to be fed a procedure. If you do not give it a procedure, it will not be happy.
<unmatched-paren>Whereas since '(...) is a list, it's fine with being empty.
<pashencija[m]>Got you
<rekado>personally, I’d move all the static arguments out of the list
<rekado>apply takes *at least* two arguments, but it may take more as long as the last argument is a list.
<rekado>(apply invoke "echo" "whatever" "I" (list "don't" "care"))
<rekado>in your case this allows you to do without the “append”
<pashencija[m]>Like this... (full message at
<rekado>almost, you’ve got unmatched parentheses
<rekado>again, I strongly suggest you do all this in a REPL
*pashencija[m] sent a code block:
<rekado>looks fine to me
<pashencija[m]>Ok, I will try
<pashencija[m]>I personally do not understand idea behind that 1024 sector size
<pashencija[m]>I try to keep it just not to break things
<unmatched-paren>pashencija[m]: btw, the matrix code blocks are a little annoying on IRC. Could you please use a pastebin-like site instead?
<rekado>what’s the difference between a paste site and a link to a … matrix paste thing?
<rekado>(to me it’s pretty much the same)
<nckx>Here too. Apart from weird ``` noise.
<nckx>Well, at least with a paste site, people don't usually hide their actualy message in it. Maybe that's what unmatched-paren means.
<pashencija[m]>unmatched-paren: Why? They are pastebin-like there
<unmatched-paren>ah, i was thinking of the "full message at ..." thing. _that_ is a little annoying
<unmatched-paren>the code blocks are fine, ignore me :)
*nckx has set a chat block:
<nckx>But yes, it's not *that* far from using a pastebin.
*nckx was also confusing code blocks with the ‘full message’ thing.
<nckx>I thought I'd seen code blocks with prose.
<unmatched-paren>I _think_ when you have a message _with_ a code block, it becomes a full message at ...
<pashencija[m]>Was guix originally intended for hackers?
<unmatched-paren>in matrix that just displays as a message with code in it i think
<unmatched-paren>pashencija[m]: which meaning do you mean :P
<pashencija[m]>I feel I'm too stupid for it
<unmatched-paren>pashencija[m]: It's just that Scheme is quite different from most languages that you probably know.
<unmatched-paren>I'm sure if someone learned Scheme first, they'd find C et al quite bizarre.
<pashencija[m]>Either GUIX is made for hackers or for typical PC users
<pashencija[m]>But if it's developed for typical PC users... I'm too stupid for one
<unmatched-paren>Don't say that about yourself. You just need to learn incrementally :)
<unmatched-paren>Everyone is stupid in terms of $THING if they haven't learned $THING.
<nckx>‘Either GUIX is made for hackers or for typical PC users’ is a false dichotomy. I'm hardly a hacker on a good day.
<unmatched-paren>(btw, you clearly aren't a "typical PC user". You're using Linux, silly :)
<pashencija[m]>I cannot learn. It's already a month I'm with guix and I still have no idea how to produce correct images for my board
<unmatched-paren>Ah, apparently the images are a pain point.
<pashencija[m]>Btw I'm on mac haha
<nckx>pashencija[m]: That's how I feel when I'm forced to write YAML configuration files, which everyone falsely claims is simpler. It's just a different language.
<nckx>It's not harder, just new.
<pashencija[m]>I have no idea about YAML :)
<unmatched-paren>(I typed that URL manually, which was clearly a mistake :P)
<nckx>rekado: To finish an old topic: installing emacs-bash-completion gives sane completions for coreutils options etc., and doesn't crash with guix.
<nckx>It's still working around a general bug with guix in emacs but hey.
<unmatched-paren>pashencija[m]: wait how are you using guix on smack
<unmatched-paren>i thought that wasn't possible...
<pashencija[m]>In a VM
<furrymcgee>invoke should be used instead of system*, why?
<pashencija[m]>In qemu
<unmatched-paren>Well, there you go. You're using Linux in a VM. Still impressive for someone who says they're a "typical PC user".
<unmatched-paren>The fact that you even know what a VM is means you are not a "typical PC user".
<nckx>furrymcgee: Throws exceptions rather than ‘quietly’ returning a status you have to tediously check across thousands of packages.
<nckx>Yes. Exactly.
<nckx>‘Users’ are a myth, and Guix doesn't drink that Kool-Aid.
<nckx>There's a lot of work left to make Guix more user-friendly, but in a way that benefits equally all users, not ‘users’. Projects chasing the latter make poor ‘I'd never use this myself but my users are idiots’ decisions.
<nckx>GNOME had this bad. I don't know if they still do. I hope not.
<pashencija[m]>The code above really works
<unmatched-paren>nckx: Yes, they do.
<pashencija[m]>I mean it produces correct partitions that depend on esp flag
<pashencija[m]>nckx: What DE do you use?
<unmatched-paren>I doubt that will ever change; GNOME explicitly dumbs down their UIs to make them easier to comprehend
<unmatched-paren>they use sway, unless they've changed it recently, as do i
<pashencija[m]>I recommend LXQt
<pashencija[m]>It's not as polished as some other environments, but worth trying
<pashencija[m]>At least it saves RAM compared to GNOME
<nckx>pashencija[m]: Sway. I use mostly GTK applications, but that's really coincidence, and not saying much since I use only 4 applications daily (Emacs, HexChat, Firefox, foot) :)
<unmatched-paren>I've seen LXQt 0.9, and it seemed to be fatally unpolished. But I haven't seen 1.0, which is probably far better.
<nckx>My mother uses XFCE though, so I'm a bit familiar with it.
<pashencija[m]>unmatched-paren: Yes, 0.9 is way tooo outdated
<pashencija[m]>It also depends on the distro
<pashencija[m]>Lubuntu maintainers, for example, manage to break unbreakable things in LXQt
<pashencija[m]>I have sent the patch for Image API
<pashencija[m]>Now I have found a bug i the patch and fixed it
<pashencija[m]>Should I amend the commit and make a new patch or create a patch to apply on top of the previous one?
<nckx>unmatched-paren: ‘Are you using a VM?’ was a genius argument. I have to remember that one.
<nckx>It would cover most people I've heard describing themselves as average users.
<nckx>Selection bias is a thing.
<unmatched-paren>"Genius" may be a bit too far :P
<nckx>I almost sent genious but it sounded too sarcastic.
<pashencija[m]>nckx: I suppose most Mac users use VMs to run Windows software :)
<pashencija[m]>There's a lot of useful software not present on apple systems
<pashencija[m]>So, do I send an all new patch or patch on top of the patch?
<nckx>Use -v2 (or -v$whatever) if you use git send-email.
<nckx>If you don't already know how to merge patches: git commit --amend, probably.
<unmatched-paren>A "typical PC user" doesn't _really_ exist any more... obviously there are still windows users, but most people are on "smart" phones now. So to an extent, any PC user is somewhere above average.
<nckx>If it's on the tip.
<pashencija[m]>It would be fun getting guix on pinephone pro
<pashencija[m]>I need to order one later
<nckx>unmatched-paren: Smart phones kind of make the myth a reality, although I'm undecided on how much of it is prejudice. Nobody develops telephone software on the telephone. The ‘thank you, based dev’ rift is strictly enforced.
<unmatched-paren>That has been mentioned countless times :P
<unmatched-paren>nckx: [citation needed] technically there's termux
<pashencija[m]>unmatched-paren: Pinephone? Is it that popular here?
<nckx>unmatched-paren: I use termux. I use emacs in termux. I have edited bash scripts in termux. You do not write software in termux. 😛
<pashencija[m]>But it's modem is non-libre, is it?
<nckx>Unless you hate yourself.
<pashencija[m]>nckx: There's also AIDE
<nckx>Ah oui. L' Association Intercommunale pour le Démergement et l'Epuration des communes de la province de Liège.
*nckx looks up AIDE better.
<unmatched-paren>I'm a bit concerned that Guix may wreck the phone's SD card.
<nckx>Even they say ‘browse and touch your code on the go’ in the opening sentence.
<pashencija[m]>unmatched-paren: Why?
<pashencija[m]>A good sd card can live really long
<unmatched-paren>My concern is probably unfounded, but I have seen "guix uses up your disk a bit faster than other distros" mentioned here.
<unmatched-paren>Okay then :)
<pashencija[m]>Also, is it a problem to buy another sd card in 5 years?
<unmatched-paren>pashencija[m]: It also seems to me as if Macs are dwindling in popularity among average PC users. I have not seen a Mac in a long time, barring some workplaces that are clearly using them to look professional.
<unmatched-paren>So even if you're using a Mac normally, you are not an average PC user! :P
<unmatched-paren>Urgh, how do i remedy Guile ABI mismatches when compiling guix?
<unmatched-paren>it's in a guix shell -D guix btw
<pashencija[m]>unmatched-paren: It depends on the city and country. The times I lived in Moscow, I saw a looooot of macs around.
<pashencija[m]>In Turkey, for example, I see only foreigners use it in Starbucks
<nckx>unmatched-paren: Answer at will, but ~whereabouts~ are you?
<unmatched-paren>nckx: UK
<furrymcgee>I guess multiline strings would improve usability,
<furrymcgee>(define s #<<EOF
<furrymcgee>This is my mult-line literal
<furrymcgee>Line number two! This line starts with two spaces
<furrymcgee>) ;; Can't put ) on the same line as EOF.
<pashencija[m]>nckx: Istanbul now
<nckx>Right, I think I knew that.
<unmatched-paren>there are not many macs. They are an endangered species here, and I hope there nobody tries to reintroduce them.
<nckx>furrymcgee: What's wrong with normal multiline strings?
<unmatched-paren>*not many macs here.
<nckx>That does not look readable to me, sorry.
<unmatched-paren>(define s "
<unmatched-paren>foo bar baz
<pashencija[m]>nckx: That looks bash-like
<unmatched-paren>") also works
<nckx>pashencija[m]: It look horror-like.
<pashencija[m]>To some people, bash is a horror
<unmatched-paren>nckx: Why are you two saying the same thing?
<unmatched-paren>seems a bit redundant
<unmatched-paren>(Oh, how ironic.)
<unmatched-paren>As soon as I write that, pashencija[m] says the same thing /o\
<nckx>Anyway, multi-line strings are as simple as pressing return halfway your string journey. Even if you don't want a newline in your string you can split strings using \ , I think.
<furrymcgee>adds extra quoting
<nckx>So you want heredocs, not multi-line strings. Gotcha. Hm. If that's possible, I don't want to know.
<nckx>unmatched-paren: I actually quite enjoy writing bash. To the detriment of my Guile prototyping skills. I stick with bash PoCs faaar too long.
<unmatched-paren>burn them!
<nckx>Everything's a data structure if you pipe it to sed!
<pashencija[m]>So it's there
<pashencija[m]>I hope someone merges it one day :)
<nckx>Well, you urged me not to last I checked.
<nckx>What was the bug?
<pashencija[m]>Thanks to you all!
<pashencija[m]>I would blow my mind with all this scheme-stuff
<unmatched-paren>"{ foo = 32, bar = \"baz\" }" what do you mean, why are there are these strings and awk scripts?
<pashencija[m]>nckx: 1024kb pages do not work well with all fs sizes
<nckx>pashencija[m]: It gets better if you put the (normal) effort into learning it. I installed Guix System without understanding a single Scheme character. I copy-pasted my way into functional bliss.
<nckx>Nasty bug.
<unmatched-paren>So did I.
<pashencija[m]>It's alright for ESP partitions, but not for any fat* partition in general
<nckx>We should definitely add that as a comment, or the next person will wonder the exact same thing (and possibly break things).
*nckx AFK.
<pashencija[m]>Also, forcing page size to 1024 invokes some bug in Raspberry PI firmware (stored in EEPROM)
<maximed>The rust-cargo crate fails to build with antioxidant.
<unmatched-paren>pashencija[m]: you are talking about ESP partitions, EEPROM, and Raspberry Pi firmware. I don't think an average PC user will understand those terms.
<unmatched-paren>maximed: they clearly dislike each other :)
<pashencija[m]>unmatched-paren: Maybe
<maximed>making it (rust-cargo) build with sounds like heresy (to both cargo and antioxidant) :p
<maximed>* build with antioxidant
<unmatched-paren>pashencija[m]: The only part of Scheme that's really hard to get your head around is call-with-current-continuation.
<maximed>(fwiw, in most situations call-with-current-continuation can be replaced with call-with-prompt + abort-to-prompt
<maximed>Those are supposed to be easier to reason about.
<maximed>Haven't compared any call-with-prompt+abort-to-prompt with call-with-current-continuation myself though, I always use the (delimited) call-with-prompt
<unmatched-paren>maximed: i suppose call-with-prompt/abort-to-prompt are themselves implemented in terms of call-with-current-continuation?
<maximed>unmatched-paren: IIUC, not in GUile
<maximed>lemme se
<jpoiret>i think it's the other way around yes
<maximed>basically, there's probably one big call-with-prompt around everything else for implementing call-with-current-continuation?
<jpoiret>hmmm i thought i saw that written somewhere in the manual but i can't find it
<maximed>Apparently call-with-current-continuation is implemented as a 'primitive'
<jpoiret>it took me some time to understand dynamic-wind though
<jpoiret>i still don't like it very much
<unmatched-paren>jpoiret: what's that?
<jpoiret>non-local control flow really messes with functional programming
<jpoiret>basically, (dynamic-wind pre thunk post) runs pre before the dynamic extent of thunk is entered and post after it is left, which means that for example if you abort to a prompt in thunk that goes outside of it, post will be run
<unmatched-paren>i think scheme's biggest weakness is how it tries to be both simultaneously functional and imperative
<jpoiret>this lets you clean up things when there's a non-local exit
<maximed>FWIW I think that should be implemented with the exception system.
<unmatched-paren>I understand the second message but not the first :P
<maximed>But then you have let/ec
<jpoiret>the exception system is implemented with a prompt
<nckx>unmatched-paren: I don't really agree that it tries. It just is—or isn't, depending on your POV. Which unfortunately does translate to being neither, sometimes.
<unmatched-paren>The second-biggest weakness imo is probably that it's dynamically typed.
<maximed>unmatched-paren: There are systems that add static typing to Guile
<nckx>Are we voting? 'cause that's my #1.
<unmatched-paren>maximed: OOH tell me more!
*unmatched-paren rubs hands together >:)
<nckx>TypedGuix fork in 3…
<maximed>I thought it was named Guile d-theme but I cannot find that
<unmatched-paren>(wow, that's an ugly website :P)
<zamfofex>Let’s all just use BODOL instead. 😅
<KarlJoad>Is there an IRC bouncer already packaged in Guix, like ZNC?
<unmatched-paren>KarlJoad: znc is there
<maximed>KarlJoad: "guix show znc"
<nckx>There's just no service yet.
<KarlJoad>Ahh. Maybe another project for me, after I get email working...
<nckx>Apart from that, I think many people here use ZNC on Guix Systems.
<nckx>In particular, does.
<unmatched-paren>nckx: I find that dynamically typed languages have a place, so I'm happy to use them, but once they start being used for big projects like Guix they become rather annoying to work with
<nckx>unmatched-paren: Sure. Much like being functional, the Scheme thing to do would be to leave it up to the programmer. Some won't like that (but then they like Haskell so who's truly sane here) but it's the Scheme way.
*nckx has nothing against Haskell :)
<maximed>FWIW, I'm not opposed to using a static type system in Guix
*unmatched-paren likes Haskell O_o
<maximed>though not something I'd volunteer to do myself.
<KarlJoad>Getting static typing on top of the dynamic typing of Scheme seems... masochistic...
*unmatched-paren prefers Caml to Haskell though.
<KarlJoad>At least to me.
<singpolyma>KarlJoad: I think you mis-spelled "helpful" ;)
<nckx>unmatched-paren: I'm just not clever enough to.
<pashencija[m]>Let's rewrite GUIX in shell
<zamfofex>I feel like it would be nice to have a better way to verify types at runtime at least. If you claim “the argument must be a list of numbers”, I don’t care that it might not be checked at build time, but it would be nice to have it fail early tight then and there instead of failing later.
<unmatched-paren>no, javascript. then we'll get users.
<singpolyma>Don't have to rewrite anything
<nckx>pashencija[m] has been kicked from #guix (No.)
<unmatched-paren>(joking of course, please don't murder me)
<pashencija[m]>And shell interpreter with js
<singpolyma>Guile can do any lang we add to it. It's not just scheme
<nckx>unmatched-paren has been kicked from #guix (No.)
<maximed>zamfofex: There was some thread on guix-devel about a contract system à la Racket some time ago
<pashencija[m]>singpolyma: Even brainfuck?
<KarlJoad>Oh, helpful for sure! Still feels like a hurculean amount of work.
<unmatched-paren>oh yeah let's rewrite guix in brainfuck!
<singpolyma>pashencija[m]: there is a BF already yes
<singpolyma>Getting a useful guix package in BF I have not tried and probably will not
<singpolyma>I've done Lua and JS so far.
<maximed>unmatched-paren: Why not directly write Guix in Guile bytecode?
<unmatched-paren>maximed: genius.
<singpolyma>Probably TS this year if I get some more time
<unmatched-paren>no, machine code. get close to the machine.
<nckx>Odd. Mornington Crescent isn't in Guix yet.
<nckx>No wonder we're niche.
<pashencija[m]>Gotta google about Guile
<unmatched-paren>Loss of portability is a small price to pay for s p e e d.
<singpolyma>pashencija[m]: not much out there that's useful. There's the manual and the source, hed
<lilyp>but machine code won't run in the guile vm smh
<lilyp>you also lose backwards compatibility that way
<nckx>It runs fine on QEMU, lilyp.
<unmatched-paren>lilyp: who said it had to
<rekado>nckx: thanks, emacs-bash-completion works!
<singpolyma>Could run machine code on guile
<nckx>rekado: Nice.
<vivien>Is it OK if I split a commit into multiple commits? 1 - update version and hash, 2 - add new dependencies? It means that the first commit is broken but they do less things.
<unmatched-paren>pashencija[m]: there's currently a mostly-working elisp frontend and a half-finished js frontend iirc
<unmatched-paren>for guile
<singpolyma>vivien: a broken commit is incomplete
<unmatched-paren>and third-party lua/python ones
<wdkrnls>Dear Guix, are there info docs for git? Guix info docs reference them, but on my system it tells me that they don't exist.
<nckx>vivien: No, each commit should result in a sane state whenever possible.
<singpolyma>Atomic but no less
<singpolyma>unmatched-paren: the js frontend is pretty finished afaict
<pashencija[m]>unmatched-paren: My GF asked me to mention YoptaScript
<singpolyma>Though not if you want es6
<unmatched-paren>pashencija[m]: i think the point of the elisp frontend was so emacs could eventually switch to guile as its backend instead of having its own JIT thing for elisp
<wdkrnls>I don't see an info file in the git share folder.
<singpolyma>unmatched-paren: there is an emacs build that does that even. And it works. But the emacs project did not agree
<unmatched-paren>singpolyma: hmm, that's sad.
<nckx>It still works?
<singpolyma>nckx: define still.
<singpolyma>I don't think it exists for latest emacs version
<lilyp>It did work at one point, but it's stuck in the past
<rekado>re JS: Guix accepts package definitions written in JSON. Wouldn’t take much to support an arguments field with ECMAscript body.
<lilyp>Though "work" should go in scare quotes, because it didn't even use plain guile.
<singpolyma>rekado: I have packages written in js already
<singpolyma>The needed bindings are very small
<singpolyma>I want to work towards a reusable core of bindings that work for js, Lua, python, etc
<lilyp>I think we have to differentiate between Guix the package manager and Guix the channel here
<lilyp>Guix the channel does not accept heretic languages.
<pashencija[m]>I just released Tobias Geerinckx-Rice on email and nckx are the same person O_o
<singpolyma>Right. Put all your elisp in a second repo ;)
***jesopo is now known as jess
<lilyp>singpolyma: joke's on you, I wrote a visual novel in Elisp (on Guile)
<singpolyma>I know what the differences are, but in the context of guix I feel like elisp and scheme would just be exactly the same
<singpolyma>Since it's mostly invoking custom macros anyway
<lilyp>hmm, guile modules sadly can't really do the scheme-1 vs scheme-2 divide
<nckx>pashencija[m]: Just out of curiosity (it's not hidden at all, quite the opposite): how?
<pashencija[m]>Saw your github page
<nckx>Ah, ancient graveyard of broken shit.
<unmatched-paren>nckx: I realized that only when you linked to your website :)
<nckx>Ah, ancient graveyard of nothing at all.
<nckx>Thanks for satisfying my curiosity. It's interesting that it's never the (to me) obvious /whois that does it.
<wdkrnls>Anyway, I was hoping to get some guidance on how to ensure info and man documentation is always available from Emacs even if the profile isn't loaded.
<pashencija[m]><nckx> "Thanks for satisfying my..." <- Actually it doesn't
<wdkrnls>I load a shell script in my .bashrc to place all my profiles on the MANPATH and INFOPATH.
<wdkrnls>But that doesn't seem to help Emacs actually find things.
<wdkrnls>For example, I see that R provides a lot of texinfo documentation that doesn't show up at all.
<maximed_>wdkrnls: Are you starting emacs from a shell?
<pashencija[m]><nckx> "Thanks for satisfying my..." <- whois shows you're ""
<pashencija[m]>Nothing more
<lilyp>I'd be surprised if R documentation ever showed up outside of R.
<wdkrnls>maximed_: Good question. I guess I'm starting it from shepherd. That might have something to do with it.
<maximed_>If it isn't started from a shell (e.g. directly from the graphical environment), then .bashrc won't be loaded I think
<nckx>pashencija[m]: Interesting. That's a Matrix limitation.
<maximed_>wdkrnls: I don't think there is currently a mechanism for starting Emacs from Shepherd
<maximed_>unless you wrote a service yourself to do that
<wdkrnls>I suppose I can add that line to the wrapper script I'm using to start emacs instead.
<maximed_>Though I think the solution here is to just load the profile
<unmatched-paren>`/whois nckx` shows... uh, `"whois nckx": command "WHOIS" doesn't exist` :P
<maximed_>Profile not loaded -> not added to $PATH, $INFOPATH, etc.
<maximed_>Profile loaded -> stuff added to $PATH, $INFOPATH, etc.
<wdkrnls>maximed_: I started using separate profiles because it took way too long to update my massive manifest on my ancient laptop.
<maximed_>wdkrnls: You can load multiple separate profiles
<maximed_>All their $PATH and $INFOPATH ... will be combined.
<nckx>unmatched-paren: Y'all using some messed up clients, by which I mean anything that is not the supreme and perfect HexChat. /quote whois would probably work.
<unmatched-paren>nckx: Well, I'm using a client which doesn't even have a release tag yet :P
<unmatched-paren>Yet another item added to my List Of Patches To Send To Once I Can Be Bothered To Learn Go And The IRC Protocol.
<nckx>That name gave me a bloody nose.
<wdkrnls>maximed_: That does make a lot of sense to me.
<nckx>unmatched-paren: Interesting concept, a bouncer-first client.
<unmatched-paren>nckx: yeah, i'm using with it.
*maximed_ AFK
<zamfofex>I’m still a bit stuck trying to offload builds to the Hurd VM I set up. Does anyone have that kind of thing set up?
<wdkrnls>Sadly, I think I'm pretty much going to have to give up on using R directly from Guix for now until the community grows. Everything is available and works perfectly from debian, but there is just so much.
<civodul>wdkrnls: re missing Info files in R, it's worth reporting a bug
<sneek>civodul, you have 1 message!
<sneek>civodul, jpoiret says: do you think it'd be ok if we used (@@ (ice-9 popen) piped-process) like maximed suggested? i don't think it'd be worth it to reinvent the wheel, maybe propose exporting it upstream?
<civodul>jpoiret: using @@ on external software should be a last resort IMO
<maximed_>civodul: The idea is to export it in Guile (the external software)
<civodul>i'd rather work on a fix in Guile proper and use it once it's available
<jpoiret>i can propose exporting it as well
<jpoiret>w/ adding it to the docs possibly
<civodul>then we should check whether piped-process has a "nice" interface
<maximed_>but it won't be available for a while yet to Guix, so while we wait for a new Guile release @@ could be used
<civodul>it wasn't meant to be exported so far, because i think it was kinda special-purpose
<civodul>maybe we could @@ as an interim solution, once we know there's something else coming next :-)
<maximed_>jpoiret: On the new patches: each individual change seems reasonable, but I have no idea if the whole accidentally introduces new bugs
<jpoiret>me neither unfortunately
<maximed_>hence my request for (unit) tests
<maximed_>I've some ideas for things that can break constructions like piped-process
<jpoiret>i've done some tests with threading, ie (par-for-each ... (iota 1000)) with just open-pipe* to cat and it hangs with current guile head but not with the patches
<jpoiret>what i'm wondering is how we should proceed to get this in asap for cuirass, if these hangs are still occuring
<maximed>jpoiret: Maybe a test that sets 'current-error-port' to a port with fd 0 and make sures it ends up as fd 2 in the subprocess?
<maximed>And a test that checks that nothing breaks when fd=0, fd=1 and fd=2 are unset in the parent process
<maximed>And does the fd closing logic work if fds 0...1000 are allocated, then the fd limit is lowered to 200, then open-pipe* is used?
<maximed>(i.e., will it still close fd 201?)
*pashencija[m] uploaded an image: (96KiB) < >
<pashencija[m]>Maybe not the best form, but straight to the point
<zamfofex>I’m planning to set up a substitute server for the Hurd. But first I need to figure out how to offload builds to a VM locally.
<zamfofex>I hate to keep bringing this up, but I’m completely stuck, and it’s really frustrating to me.
<maximed>zamfofex: Is this on Guix System?
<maximed>If so, hurd-vm-service-type can be used.
<maximed>Only requires adding hurd-vm-service-type to the system configuration.
<zamfofex>I am using it! See: <>
<maximed>zamfofex: ok, I don't know
<maximed>zamfofex: What command are you running?
<zamfofex>See: <> Also note that ‘guix build -s i586-gnu hello’ doesn’t work either.
<maximed>I just read that message and was about to ask to run the following message.
<maximed>I don't know
<maximed>* following command (guix build -s)
<zamfofex>It feels like there is an issue with how Guix connects through SSH.
<zamfofex>Running ‘ssh -vv ...’ says it connects using ‘none’ as the authentication, which I think is meant to differ from ‘publickey’ which Guix tries to use.
<zamfofex>I wish I could debug this more carefully, but I don’t know what I’d need to do.
<nckx>Maybe you already know this, but have you tried connecting with sudo -i youroffloaduser@ssh first, and accepting the host key?
<anadon>nckx: Can I get an ETA for 54630 ?  I'd like to avoid straying from origin/master, even if it ends up being just a little.  Sorry to be a bother.  I want it in so I can get the C++ runtime for the Antlr4 package in.
<lilyp>anadon: Did you not receive my response to your patch?
<lechner>unmatched-paren: About pkg-config in Linux PAM, Guix would need a newer PAM release. I built and use it locally without issues after just updating version and hashes. Is a diff to -patches the way to go? Thanks!
<anadon>lilyp: Nope!  Like last time, some emails seem to have been just dropped.  I'm reading it on the debbugs page now.
<emacsomancer[m]><KarlJoad> "Is there an IRC bouncer already..." <- KarlJoad: Weechat?
<anadon>Strange.  Well, on to version 3 of the patch.  Crud.
<KarlJoad>maximed_, wdkrnls: There is not a shepherd service already defined for Emacs. You will have to write your own if you want that.
***Xenguy_ is now known as Xenguy
<anadon>lilyp: Response sent.  Can you confirm receipt?  IDK why emails are being dropped like they are, but so long as they are I'll try double checking in here.
<anadon>I need to leave to do stuff.  BBL
<lechner>Hi, did someone else mention losing windows under X recently?
<unmatched-paren>lechner: "pkg-config in Linux PAM" <- yeah, do a `git send-email --to -a HEAD~`, assuming your commit is on HEAD :)
<unmatched-paren>Sorry, ^HEAD.
<unmatched-paren>Not HEAD~.
<unmatched-paren>aargh, no, HEAD^ :P
<unmatched-paren>if your commit isn't HEAD then just check it out first. I've tried to do <commit>^ but it didn't behave like I expected.
<maximed>unmatched-paren: that's only for a single patch
<maximed>For a patch series, there's another process (documented in the manual) to avoid creating many bug ids
<maximed>does anyone know why is blocked?
<pashencija[m]>There's a function, that runs make-u-boot-package with special params and returns a directory in a store with uboot files(let's say `/gnu/store/ry78hc0jkpsp834ngcpl2mz52wjhj3jx-u-boot-rpi-4-2022.04/`)
<pashencija[m]>There's a file `/gnu/store/ry78hc0jkpsp834ngcpl2mz52wjhj3jx-u-boot-rpi-4-2022.04/libexec/u-boot.bin`
<pashencija[m]>I want to take that file in a gexp to store it in some directory (I run that gexp as partition initializer)
<pashencija[m]>How do I do that correctly?
<pashencija[m]>(I'm copying that file manually at the moment)
<maximed>#~(copy-file #$(file-append (make-u-boot-package ...) "/libexec/u-boot.bin") "/the/destination)?
<maximed>* #~(copy-file #$(file-append (make-u-boot-package ...) "/libexec/u-boot.bin") "/the/destination")?
<maximed>not sure if copy-file exists
<maximed>It exists.
<maximed>Though you'll need copy-recursively instead
<maximed>(requires importing (guix build utils))
<pashencija[m]>maximed: Why?
<maximed>Because 'copy-file' only supports regular files, it doesn't support directories IIUC
<maximed>or is the question about the importing?
<pashencija[m]>I think your answered the question
<pashencija[m]>Thank you, I'll try that
<pashencija[m]>* try that now
<nckx>maximed: Blocked by?
<maximed>nckx: Telenet (ISP)
<nckx>Oh god. It's probably a hacking tool!!! (I'm on Proximus for the next hour or so, works fine here.)
<pashencija[m]><maximed> "* #~(copy-file #$(file-append (..." <- `/home/pavel/factory/raspberry-pi.scm:108:65: Wrong type to apply: #<package u-boot-rpi-4@2022.04 gnu/packages/bootloaders.scm:665 36406790>`
<pashencija[m]>I cannot copy from package u-boot like that
<maximed>pashencija: why are you putting a (... after the file-append?
<maximed>can I see the full line
<pashencija[m]>Ah, wait
<maximed>pashencija: u-boot-rpi-4 is (probably) not a procedure
<pashencija[m]>Wait a bit
<maximed>also, that let cannot work
<maximed>u-boot-binary lives inside the gexp, not outside the gexp
<pashencija[m]>(define u-boot-rpi-4
<pashencija[m]> (make-u-boot-package "rpi_4" "aarch64-linux-gnu"))
<maximed>pashencija: What about #$uboot-binary?
<maximed>I don't think you need #$uboot-binary anywhere, unless you'd like to replace file-append by string-append
<maximed>What's the question?
<pashencija[m]>I'll get rid of that variable
<maximed>you don't need to
<pashencija[m]>I want to simplify things for now
<maximed>just replace (u-boot-rpi-4) by u-boot-rpi-4
<maximed>Oops I read your original question wrong, copy-file will work there as u-boot.bin is a regular file, not a directory
<maximed>(though copy-recursively should work too I guess)
<pashencija[m]>`./guix/ui.scm:554:4: In procedure copy-file: No such file or directory: "tmp-root/u-boot.bin"`
<pashencija[m]>`(mkdir-p root)` ?))))))
<maximed>Is (guix gexp) imported at the top of the file?
<maximed>Also, maybe you need to ddo (mkdir-p root) before the (copy-recursively ...)
<pashencija[m]>I have tried that
<pashencija[m]>`ice-9/eval.scm:619:8: Wrong type to apply: #<unspecified>`
<maximed>paschencija: you added a ( ... )
<maximed>around the (use-modules ...) (mkdir-p ...) (copy-recursively ...)
<maximed>So Guile thinks it needs to invoke the procedure (use-modules (guix build utils))
<maximed>but (use-modules (guix build utils)) isn't a procedure, it evaluated to #<unspecified>
<maximed>* evaluates
<pashencija[m]>It works now
<pashencija[m]>At least it doesn't fail
<pashencija[m]>And the file is there!
<pashencija[m]>Thank you maximed !
<pashencija[m]>It boots!
<pashencija[m]>I hope FAT32 patch gets upstream soon as well
<ardon>I'm trying to invoke `guix deploy' on a VPS with a barebones Guix ISO and openssh-service enabled, but I get this error back when sending store items to the server "error: preallocating file of 170413 bytes: No space left on device". Is this a memory error or a storage one? It's a 1GB RAM 25GB SSD cloud instance.
<ardon>^ Also, is this referring to my local system or the remote?
<ardon>Ah ok, it's the storage space. Now I'm in sort of a dilemma though, the ISO's storage is too small to invoke `guix deploy' on the instance and reboot to a full Guix system, and the VPS' RAM is too limited to run `guix system reconfigure' on it.
<maximed>ardon: Storage, unless it's on /tmp
<maximed>or maybe even then
<maximed>(I don't know when tmpfs is used on Guix)
<yewscion>Hi Guix, quick question: What is the canonical way of setting $CLASSPATH for java under Guix? I'm tempted to just export the variable in my .bashrc to point to my current profile, but that seems a bit clunky to me. Is there another way more canonical to Guix?
<singpolyma>yewscion: some package hopefully has that as a search path. I would hope the Java/jre package?
<nckx>sneek: later tell maximed (if they care) works fine here too (TN), but I'm a business customer with a reputation, soo... I'd send them an e-mail just to hear their excuse if it were blocked for me.
<sneek>Will do.
<yewscion>singpolyma: I am looking through the source for such a package now. I have `icedtea:jdk`, icedtea:doc`, `ant`, and `maven` installed in my profile, though, and it is does not appear to be set (unless I've done something incorrectly).
<yewscion>(FWIW, it is not listed in `~/.guix-home/profile/etc/profile` either.)