IRC channel logs

2022-01-27.log

back to list of logs

<rekado>kocio: does this change when you add “--no-grafts” to the options?
<kocio>I will check it, thanks
<kocio>now I wait till git will compile, since this is quite short to check
<bdju>I think I fixed my config.scm. lotta little things like quotes and parens being off/missing. a typo here and there. then I had to unlock my encrypted second hdd before I could system reconfigure with its settings in there
<bdju>now I think I'll reboot and hope nothing breaks
<nckx>I'm not sure the git test suite is fast? You can always ‘guix -D mc git git-minimal -- true’ instead.
<nckx>kocio: ☝
<kocio>not that fast, indeed...
<kocio>> You can always ‘guix -D mc git git-minimal -- true’ instead.
<kocio>it dowloads git and some other but mc is here so it's not built
<kocio>kittyowo[m]:
<kocio>sorry this chat id not clear to me
<bdju>booted back into sway! nice. I think I'm up and running again with the new drive. what a journey.
<bdju>oh no I forgot qutebrowser is super broken and now I won't have around the old version I was launching manually... I didn't copy over my /gnu/store
<gordon1>can somebody explain why this line exists? that looks super unsafe https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/linux.scm#n880
<gordon1>race condition to substitute kernel config for anyone
<civodul>gordon1: probably because "make defconfig" needs to write to it
<civodul>no risk of race condition: the build tree is only accessible to build users
<gordon1>no, make defconfig is in "else" branch
<civodul>oh right
<civodul>the 'open-file' call just after needs write access tho
<gordon1>i mean sure, but still such lines make me uneasy
<gordon1>actually there are many more (chmod ... #o666) in sources
<nckx>And?
<gordon1>yeah, most of them are about /dev-stuff which is ok i guess
<nckx>The race condition you describe is imaginary.
<nckx>Oops, how did that get here:
***ChanServ sets mode: -o nckx
*nckx feels refreshed.
<gordon1>still doesn't sound like a good practice
<gordon1>i mean i'm definitely no expert in guix
<gordon1>just saying it looks odd
<dissoc>what is meant by '#$ in the context of g-expressions?
<nckx>gordon1: I don't understand. How would you write it?
<gordon1>well, i don't know the reason why it requires rw for everyone, just can't imagine many scenarios where it should
<Noisytoot>When I run "sudo guix system reconfigure", I get: "ice-9/boot-9.scm:1685:16: In procedure raise-exception:
<Noisytoot>Throw to key `match-error' with args `("match" "no matching pattern" #<package polkit@0.120 gnu/packages/polkit.scm:54 7f50a0c5a790>)'."
<gordon1>if i would know the reason, i can try to find out how could it be rewritten or, otherwise, be convinced there is no other good way
<nckx>OK.
<nckx>dissoc: Hm, where do you find that? I don't see that particular pattern (quote ungexp) in Guix.
<dissoc>nckx: tor service under activation: '#$(map hidden-service-name (tor-configuration-hidden-services config))
<nckx>It would equate to ‘quote whatever this ungexps to’.
<nckx>Thanks.
<dissoc>oh okay. i understand now. thank you
<nckx>Eh, disregard, "'#\$" did not do what I wanted, Guix is full of '#$.
<nckx>Usable Scheme shell when.
<PotentialUser-27>Could I ask for a hand with a package def?
<nckx>So anyway, it's distinct from ',foo which AFAIK would equate to (quote (unquote foo)) — i.e. foo is not evaluated, whilst the ungexp does happen sooner.
<nckx>PotentialUser-27: This is the place :)
*nckx AFK tho.
<PotentialUser-27>Great! I'm trying a transformation on python-gyp
<PotentialUser-27>(define latest-python-gyp
<PotentialUser-27>  ((options->transformation
<PotentialUser-27>    '((with-commit . "python-gyp=d6c5dd51dc3a60bf4ff32a5256713690a1a10376")))
<PotentialUser-27>   python-gyp))
<PotentialUser-27>The current commit in base guix doesn't build, hence why I'm trying to pull in a newer version
<PotentialUser-27>This works in the sense that I can see that HEAD is pulled in and the build of python-gyp succeeds
<PotentialUser-27>But trying this:
<PotentialUser-27>    (inputs
<PotentialUser-27>     `(("python-gyp" ,latest-python-gyp)))
<PotentialUser-27>results in an error:
<PotentialUser-27>    In ice-9/eval.scm:
<PotentialUser-27>       214:21 15 (_ #f)
<PotentialUser-27>       217:50 14 (lp (#<procedure 7ffff4b47360 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50 13 (lp (#<procedure 7ffff4b47340 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50 12 (lp (#<procedure 7ffff4b47320 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50 11 (lp (#<procedure 7ffff4b47300 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50 10 (lp (#<procedure 7ffff4b472e0 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50  9 (lp (#<procedure 7ffff4b472c0 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50  8 (lp (#<procedure 7ffff4b472a0 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50  7 (lp (#<procedure 7ffff4b47280 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50  6 (lp (#<procedure 7ffff4b47260 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50  5 (lp (#<procedure 7ffff4b47240 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50  4 (lp (#<procedure 7ffff4b47220 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:50  3 (lp (#<procedure 7ffff4b47200 at ice-9/eval.scm:282:?> ?))
<PotentialUser-27>       217:33  2 (lp (#<procedure 7ffff4b470c0 at ice-9/eval.scm:649:?> ?))
<PotentialUser-27>       293:34  1 (_ #(#<directory (guile-user) 7ffff5fdbc80> ((# . #) ?)))
<PotentialUser-27>    In guix/build/utils.scm:
<PotentialUser-27>        712:4  0 (alist-replace configure #<procedure 7ffff5f44d80 at i?> ?)
<A_Dragon>you uh
<A_Dragon>may uh
<PotentialUser-27>Maybe I should be using pastebin
<A_Dragon>want to use a paste there
<podiki[m]>yes
<PotentialUser-27>yeah sorry everyone
<A_Dragon>PotentialUser-27: given you set off spam warnings, yes :P
<A_Dragon>also likely was cut off
<podiki[m]>as for your error...maybe you want to use the input transformation
<PotentialUser-27> https://paste.debian.net/1228518/
<PotentialUser-27>The code I was trying: https://paste.debian.net/1228519/
<PotentialUser-27>apologies again for the spam
<PotentialUser-27>I've also tried inheriting the OG python-gyp definition and making another public def with the newer commit and a slightly different name, but I get the same error
<PotentialUser-27>I, uh, even tried this: https://paste.debian.net/1228520/
<ytc>i removed gdm-service-type from %desktop-services but it still comes up when i reboot my system. is it possible to start xorg without a login manager? if someone could achive this, i would like to know how. thanks.
<bdju>anyone made a swapfile lately? I'm following the manual and when I do `sudo swapon /mnt/swapfile` I get `swapon: /mnt/swapfile: swapon failed: Invalid argument`
<mhj[m]>I did, no problems here. And I am using a BTRFS+encrypted system
<bdju>same setup as me
<mhj[m]>But I put my swapfile directly in root lol
<mhj[m]>Hmm
<mhj[m]>I followed the Arch guide to create the swapfile tho, with the BTRFS directions too
<bdju>[ 4377.857220] BTRFS warning (device dm-0): swapfile must not be copy-on-write
<bdju>from my dmesg
<bdju>I'll check out their instructions then
<mhj[m]>Never got that warning. I think you have to set a specific BTRFS attribute on it
<mhj[m]>btrfs property set ./swapfile compression none
<mhj[m]>But before that you have to do chattr +C on it
<bdju>okay I did those steps and now swapon still fails but says `swapon: /mnt/swapfile: read swap header failed`
<mhj[m]>I think you also have to set chmod 600 on it too
<bdju>I did that per the guix instructions
<mhj[m]>Hmm
<bdju> https://guix.gnu.org/manual/devel/en/guix.html#Disk-Partitioning
<bdju>dd, chmod, mkswap, swapon
<mhj[m]>Well maybe try moving it to the root of the drive like mine, maybe it doesn't like the mnt directory? I dunno...
<mhj[m]>Just to test
<bdju>did you create any sort of "subvolume"?
<bdju>same error with it at /swapfile
<mhj[m]>Nah, I didn't create any sort of subvolume
<mhj[m]>Oh I see
<singpolyma>Does the #:skip-build #t on a rust package prevent custom phases from running?
<mhj[m]>Did you use "truncate -s 0" <swapfile> at any time during the creation of the swapfile?
<mhj[m]>I just followed the BTRFS swap instructions first, then the regular swap instructions
<singpolyma>Hmm, reading more in general it seems that cargo-inputs is not really "the way" anymore, but the importer still produces it for now? Is that right?
<apteryx>mhj[m]: on one machine, I have a /swap subvolume that conntains /swap/swapfile
<apteryx>I think I used that trick to avoid it getting snapshotted
<porcupirate>Seems like there's no point to having frotz if there's no z-machine games to play. Anyone know where I can get some FLOSS z-machine games? Or a tutorial on how to make my own z-machine games to play on frotz?
<mhj[m]> https://www.ifarchive.org/ here ya go porcupirate !
<porcupirate>mhj[m]: Thanks.
<porcupirate>Looking for for z-machine utilities and FLOSS games I might be able to package for guix, I found https://web.archive.org/web/20080416221129/http://jacl.game-host.org:8080/dfisher/if4.html from that link.
<nckx>bdju: Did you rm & recreate the file from scratch? +C takes effect only on (new?) empty files.
<nckx>(Just to point out the obvious: that means chattr is the very first thing you run on it.)
<bdju>nckx: I did not, thanks for the tip!
<porcupirate>inform 7 looks proprietary... but inform 6 is licensed under artistic 2.0. I hope it's simple.
<nckx>bdju: Another thing… I noticed the ‘md’ above. Even if it's RAID0, and it's not, because you're not an absolute madperson, that will severely degrade performance due to write amplification etc. If this is anything more than an emergency sometimes-swap, dedicate a portion of each drive to swap and add them with the same priority value so the kernel will strip across them.
<nckx>And even emergencies swapping a non-trivial amount will be dog-slow.
<nckx>🐕
<sam_>lol
<nckx>*stripe, *in.
<bdju>wait, what's this about "md"?
<nckx>Wait did I misread dm as md?
<nckx>I don't have scrollback and might've.
<nckx>Sweaty laugh emoji®.
<nckx>(Ain't the Linux console grand? Indeed, it ain't.)
<bdju>I just want swap because I've had some hard hangs on computers in the past even with 16GB of RAM and it might be enough to let me kill whatever is giving me trouble. also I heard something about certain things performing more how you'd want if you have some sort of swap, but can't recall the details
<bdju>I do also run earlyoom now, I just feel better having a little bit of swap
<nckx>Swap is good yes.
*nckx notices that they are using 7G of their 8G swap wait what
<bdju>intense
<nckx>🦊.oO tee hee
<nckx>I do have several 100 tabs open for exceptional reasons. Fun. Now, I didn't notice the swapping *at all*, so large props to FireFox and/or the Linux VM tbqh.
<nckx>But it's still a bit disconcerting.
<bdju>second try at the swapfile is also a failure. I didn't do that truncate command because I can't quite figure out what the point of it is and it seemed to shrink my file last time
<nckx>It shrinks it to 0 bytes.
<nckx>I don't think it is useful here.
<bdju>yeah, so doing that after the dd seems like a bad idea
<bdju>swapon failed with invalid argument again
<nckx>Could you pastebin your exact commands, from no file to swapon?
<bdju>I'm pretty sure I had a swap file before on the other drive also using btrfs. not really sure what's wrong
<bdju>yeah, sure
<bdju> http://ix.io/3NDL here
<nckx>Ta.
<nckx>Er, as noted, chattr +C needs an empty file.
<nckx>You're giving it an 8GiB big boy.
<bdju>like I should just "touch" a file or something?
<nckx>rm && touch && chattr && dd (I guess) && mkswap && swapon.
<bdju>okay
<nckx>If you set +C on a directory, any newly created files in that directory will inherit +C as well, even if they are immediately written to.
<nckx>Dunno if that's useful here, just throwing it out.
<nckx>Nice for the /var/db's of this world.
<bdju>not even really familiar with chattr
<bdju>I guess it's probably like "change attribute". is this acl stuff or something?
<nckx>(You will lose snapshotting on +C files.)
<nckx>Not really. & what they mean exactly is file-system dependent.
<bdju>I just treat btrfs like it's ext4 but a bit more cool/interesting. I haven't used most of its features so far. never done a snapshot or subvolume
<bdju>oh. I think swapon actually worked this time
<nckx>Another thing +C will disable, as something of a side effect because it needs CoW, is compression. Which is gud for swap files.
<bdju>yeah, shows in htop. neat.
<nckx>👍
<bdju>thanks for the help!
<nckx>You're welcome. Might want to make a note of the exact commands for next time.
<nckx>Because it is a dance.
<bdju>yep
<dissoc>im trying to implement authorized clients for tor hidden service. i cant get it to work. and it comes down to something im missing with g expressions http://paste.debian.net/1228525
<dissoc>its something im doing wrong at the function at line 174
<dissoc>the hidden service would be added (tor-hidden-service "example-service" '((555 "127.0.0.1:555")) '((local-file "/tmp/example.auth")))
<nckx>Did you mean to ungexp within an ungexp?
<dissoc>but i just clearly dont understand g expression i guess
<nckx>They are analogous to quoting (but separate), so what you've written now, if I'm following along correctly, is something like `(foo ,(bar ,baz)).
*nckx AFK.
<eonn>Does anyone know if there is a package that provides Qt's moc, rcc, and uic? Some configure script can't find these, but my environment includes qtbase.
<dissoc>im confused why the original tor hidden service map function was ungexp
***califax- is now known as califax
<nckx>dissoc: This code looks copy/pasted. Is it? Do you understand why you're ungexping #$(hidden-service-authorized-clients hidden-service)? At first glance, it looks sus.
<nckx>sus af.
<nckx>To be clear, I can't test any of this stuff right now. Sorry.
<dissoc>i thought i had to because it was a local-file
<dissoc>im watching a video on g-expession again. i havent dealt with them in a while
<dissoc>i think im just extra confused because it's a service
<eonn>Nevermind, I found these tools under the profile, so I just need to massage the configure script.
<dissoc>nckx: i watched the video and read the gexp page but i still dont understand. the ungexp on the authorized-clients would be to get the list of store paths of the client-auth files
<PotentialUser-27>So this code: https://paste.debian.net/1228519/ , results in the store being named like gnu/store/xxx...git-checkout/
<PotentialUser-27>versus xxx.../python-gyp/
<Ribby>I'm running out of time, but better than nothing. Is this the channel to ask for user interfacing on a guix/gnu? Does anyone knows about installing dependencies? Particularly in the right places? I'm following up on https://help.ubuntu.com/community/CompilingEasyHowTo . Around steps 3 and 4. I think I have the make installation down. Same may go for uninstallation and autoremove as well.
<bdju>if anyone is bored, pfetch could use an update to a newer commit. I've been manually installing a newer one to get support for no-color output. e.g. guix install pfetch --with-commit=pfetch=4b70dac514923a181dd7575760c30e885fa10313
<bdju>last I looked they haven't been doing releases, but I think the current package uses a specific commit already
<Ribby>Or is it better to read up on the os manual and take its documentation (nearly) as fact or natural law? https://guix.gnu.org/en/manual/en/html_node/
<Ribby>I hope the fetch isn't abused against the privacy of other users, but I am probably paranoid.
<Ribby>I think I'll just go ahead and read up on the manual later. I already read the compile page of u. Until then.
<porcupirate>What's the difference between set-build-options and set-build-options* ?
<Charles[m]1>Using guix for cicd, a program's build pipeline only runs when the package definition (in a channel) is updated. With something like Jenkins, the pipeline runs on every commit. Is there a guix solution to this? Something better than having a git hook script update the package definition.
<porcupirate>And why isn't (set-build-options #:keep-going? #t) working?
<porcupirate>Is there a way to check build options for a given store?
<sneek>lfam: Greetings :D
<lfam>How do I turn that off
<MysteriousSilve4>hello, how do i add dwm to gdm?
<MysteriousSilve4>i've added it to list of packages in systems.scm and reconfigured
<apteryx>i think that's supposed to be automatic if the wm ships a .desktop file
<HONEYPOTTER>Finally got around to booting the installer ISO without a USB. I got close with booting into the ISO from grub, but the installer was looking for the partition with the Guix files so it errored and dropped me into a Guile shell. Solution: I made a partition and dd'd the installer ISO to it, then ran the grub menuentry found in the installer's
<HONEYPOTTER>/boot/grub/grub.cfg, and the installer booted successfully. I set the original partition to format and mount as /, while leaving the installer partition untouched. Now just waiting for installation to finish :)
<mroh>upstream dwm doesn't seem to provide one, but our package adds one.
<HONEYPOTTER>Probably trivial to y'all, but it's my first time messing with grub so I'm happy I got to learn quite a bit in the process of diagnosing issues
<MysteriousSilve4><apteryx> "i think that's supposed to be..." <- there's a dwm.desktop in `/gnu/store/*dwm-6.2/share/xsessions` but not in `/gnu/store/*profile/share/xsessions`
<apteryx>MysteriousSilve4: if dwm ships a .desktop and was added to the packages field of the operating-system record, it should work it seem
*apteryx heads off bed; good luck!
<gnoo>which package provides gio? pkgconfig says to install libglib2.0-dev but i can't find libglib or glib-devel. i've already added (inputs (list glib)) and pkg config can't find it
<lfam>I'm not sure, but maybe gobject-introspection gnoo
<gnoo>thanks, i'll try
<gnoo>no, that's not it either
<gnoo>this is the output of pkgconfig: * Do you have the glib2 development package installed? (usually called glib2-devel for rpm based distros or libglib2.0-dev for deb based distros or similar)
<lfam>You may need the "bin" output of glib
<lfam>That sounds backwards so who knows
<gnoo>depends=('gtksourceview3>=3.10.0') from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=gnusim8085
<lfam>Or perhaps the build scripts just need a little help finding the dependency
<gnoo>i'll try that gtksourceview, it's available
<vivien>gnoo, the gio-2.0 pkg-config module is provided by the "glib" package
<gnoo>i have (inputs (list glib gobject-introspection gtksourceview)) and pkgconfig is still complaining
<vivien>Do you have pkg-config as a native-input too?
<vivien>(I mean obviously yo do)
<gnoo>no, i'll try that now
<vivien>Oh
<gnoo>isn't it provided by gnu-build-system?
<vivien>Yeah I think so
<lfam>You have to add it if your package needs it
<gnoo>ok
<gnoo>thanks! it finds gio
<lfam>Awesome
<gnoo>how can i specify the version of a package? this packages gtksourceview-3 but the latest is 4.2.0
<gnoo>s/packages/package requires/
<lfam>In this case, we have a package called gtksourceview-3
<lfam>Change your inputs to use that
<gnoo>thanks! it's finally building
<lfam> https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/gtk.scm?id=90a41fe388102d448b3f91a070e38a7680d2d568#n603
<gnoo>how do i get icons for gtk applications? i'm getting: Error loading theme icon 'document-new' for stock: Icon 'document-new' not present in theme Adwaita
<gnoo>i have: (inputs (list glib gtksourceview-3 pkg-config gtk+))
<mroh>gnoo: Try adding adwaita-icon-theme.
<gnoo>mroh: thanks! i was getting confused as neither emacs nor firefox have any icon-theme packages
<gnoo>this is weird, i have (inputs (list glib gtksourceview-3 pkg-config gtk+-2 adwaita-icon-theme gnome-themes-standard gnome-themes-extra))
<gnoo>and it is still saying: Error loading theme icon 'view-fullscreen' for stock: Icon 'view-fullscreen' not present in theme Adwaita
<mroh>Is it only me or does `make check-system` currently fail with "Did you forget `(use-modules (gnu ci))'?" in Compiling Scheme modules...?
<attila_lendvai>anybody knows how to prevent a guix gnome laptop to suspend when no user is logged in? the net is full of matches, and none seem to work
<gnoo>finally! turns out you need to use glib-or-gtk-build-system
<gnoo>obvious in hindsight i guess
<attila_lendvai><channel> is a very unfortunate/misleading name in channels.scm. if there's also a <channel-instance> record, then it should be something like <channel-scpeification>
<attila_lendvai>misled me for minutes, until i stubled into <channel-instance>
<attila_lendvai>it wasn't clear to me for too long that /etc/guix/channels.scm and .guix-channel are two completely different beasts
<attila_lendvai>and i tired to specify the keyring-reference in my /etc/guix/channels.scm
<ns12>Hello, how do I list *all* the dependencies of a package? Is there something similar to "guix graph" that outputs a list instead of a DAG picture?
<rekado_>ns12: when it’s installed you can do “guix gc -R /gnu/store/the-thing” to get a list of all references that /gnu/store/the-thing holds
<rekado_>these are runtime dependencies, roughly speaking
<ns12>Is it not possible to list all the dependencies of a package that I have not installed?
<rekado_>sure it is
<rekado_>you could also do some post-processing on the dot file “guix graph” outputs
<efraim>guix refresh --list-transitive
<ns12>efraim: Thank you.
<efraim>not all the packages listed are public packages
<efraim>`guix package -A | awk '{print $1 "@" $2}' | guix refresh --list-transitive | cut -f2 -d':' | sed -e 's/\ /\n/g' | sort -u | wc -l` gives me 10777
<efraim>hmm, that can't be right, I'll have to look into that again
<efraim>doh, definately mean -I, not -A
<allana>Hi guix! Is it possible to find inferior packages with outputs, à la specification->package+output?
<allana>I'm using something, possibly from the manual or cookbook, where I take the first entry from lookup-inferior-packages, but this doesn't seem to allow package names with outputs like "bind:utils"
<rekado_>FYI: new round of network problems right now
<rekado_>this affects issues.guix.gnu.org; it can’t reach debbugs to update its database
<civodul>Hello Guix!
<efraim>o/
<efraim>rekado_: sounds like fun :/
<user_oreloznog>Hello!
<Fd9a>Hi. I want to build pijul, but I have problems with libpijul.
<Fd9a> https://paste.sr.ht/~akagi/ad5f046df4efad41434281e7277a726ffaf63b22. The last
<Fd9a>version I can build is "libpijul 1.0.0-alpha.39", then the build completes with
<Fd9a>errors. The problem is that I don't know Rust at all, and it seems to me that
<rekado_>efraim: they say it’s somewhere upstream. The switched to a different resolver, but old SERVFAILs are still cached.
<Fd9a>the errors should be fixed on the library side itself. Is this correct or should it
<Fd9a>be fixed at build time? For now, I'm building pijul on my private channel, and
<Fd9a>if the attempt is successful, I'll send patches to the main guix channel. I
<Fd9a>don't know if it's allowed to post links to personal channels here. If anyone is
<Fd9a>interested, I can provide a link.
<rekado_>all free software is welcome, no matter what channel
<rekado_>Fd9a: does libpijul have special requirements as to the version of Rust?
<Fd9a>Ok, https://git.sr.ht/~akagi/rrr/tree/master/item/rrr/packages/pijul.scm
<Fd9a>rekado_: Cargo.toml does not specify any special requirements for the Rust version.
<efraim>from the looks of it you might need to figure out how to tell it to enable nghtly build flags
<rekado_>FYI: DNS works again, issues.guix.gnu.org is updating
<attila_lendvai>is it possible to add a simple, "unnamed" service to the config? something like a (make <service> ...) object?
<rekado_>yes
<rekado_>let me check the actual syntax
<rekado_>you can use simple-service
<rekado_>it’s used for extending other services
<rekado_>you’d just extend a more basic service
<attila_lendvai>rekado_, what which service-type shall i extend? all i want is a simple shepherd service instance, where i fill in the start, stop, etc fields.
<rekado_>attila_lendvai: you can extend shepherd-root-service-type
<rekado_>the manual says: Each extension must pass a list of ‘<shepherd-service>’. Its value must be a ‘shepherd-configuration’, as described below.
<rekado_>so it’s pretty close to what you want, I think
*attila_lendvai looks
<gordon1>where i can find system config for install image?
<gordon1>the one that is here https://guix.gnu.org/en/download/
<jpoiret>helo everyone
<jpoiret>gordon1: it's in gnu/system/install.scm iirc
<gordon1>cool, thanks
<attila_lendvai>thanks rekado_! this was a hassle: (simple-service 'myservice shepherd-root-service-type (list (shepherd-service ... (start #~(make-forkexec-constructor ...)))))
*attila_lendvai makes a note what to extend the cookbook with
***roptat is now known as Guest1151
<rekado_>attila_lendvai: feel free to Cc me on your cookbook mail, I’ll add it.
<attila_lendvai>rekado_, will do, but for now it's only a TODO. now, on to the next headache: how can i extend the provision list (dependency) of a service with a service type? i.e. it's a (service swarm-service-type (swarm-configuration ...)) that works, but should wait for another service to finish starting up
<nij->Anyone had luck making guix work on macOS?
<attila_lendvai>i have a fully booted system where i get: error: connect: /var/run/shepherd/socket: No such file or directory. there are several matches in the IRC logs, but no solutions.
<attila_lendvai>i'm looking at the code, and the file is deleted in a dynamic-wind, but creating outside of it. maybe something does some call/cc magic and the d-w deletes the socket file?
<attila_lendvai>i encounter this issue every once in a while
<attila_lendvai>i mean the missing herd socket file error
<attila_lendvai>see call-with-server-socket in shepherd
<AwesomeAdam54321>attila_lendvai: When I encounter that issue, it kills PID 1 so my computer's stuck until I reboot it
<attila_lendvai>AwesomeAdam54321, this computer works fine, Gnome is up, and i'm logged in
<AwesomeAdam54321>attila_lendvai: Oh, my mistake, I thought the error was the socket already existing
<attila_lendvai>which reminds me of this other, super annoying bug, that sometimes a herd stop myservice brings down my OS, and gets stuck in process that looks like a halt
*attila_lendvai reports a bug
<rekado_>nij-: I don’t think anyone’s working on that. That’s because there’s no glibc for macOS, so the best way to use Guix on macOS would require some sort of virtualization. It’s not very interesting.
<nij->rekado_: Got it. What dark magic did nix use to run on macOS?
<rekado_>they use the proprietary Apple SDK.
<rekado_>for us that’s not an option
<rekado_>I think for Guix the only way would be to do what Docker did: using macos virtualization features
<rekado_>you can think of the approach they took for NixOS on macos as a massive binary blob underpinning the whole system.
<rekado_>what in Guix is a tiny bootstrap seed going from mes to the core GNU system (glibc + binutils + gcc toolchain, etc) in NixOS on macos is the huge Apple SDK with proprietary toolchain and proprietary C library.
<gordon1>any tip where to start if i want to replace udev with mdev?
<gordon1>it looks like everything depends on udev-service-type, so i guess best option would be to replace underlying udev-shepherd-service with mdev, right?
<rekado_>is it a compatible replacement?
<rekado_>udev-service accepts a different udev package via the #:udev argument.
<gordon1>no, it is not
<gordon1>it has no daemon running and rules are different
<gordon1>hmm, actually i don't really need a shepherd service if i wont' have anything running, do i?
<gordon1>or do i still need it for one-shot executing some commands?
<gordon1>like registering kernel helper
<AwesomeAdam54321>gordon1: A oneshot is still necessary if it needs to execute some commands one time
<gordon1>i see, good to know
<gordon1>so if i define mdev-service-type but will include (name 'udev), will that work with service dependencies if i replace udev-service-tyep with mdev-service-type?
<gordon1>*type
<gordon1>it looks like hacking udev-service-type isn't the cleanliest approach here
<AwesomeAdam54321>gordon1: If mdev can do all the important things that udev does, then I don't see why not
<gordon1>sure, i'm just asking do i need to hack every other service to fix its dependencies or (name 'udev) in my mdev service would be enough for that?
<AwesomeAdam54321>gordon1: I think (name 'udev) should work, but I can't test it myself
<gordon1>ok, i'll start with that
<rekado_>gordon1: the name is not important. The provision field is.
<gordon1>ah, i see, but how would that work then, i had service that has to be running constantly but now i have service that is one-shot, will shepherd handle such a dependency?
<ytc>hello.  how can i chroot into my guix system from a livecd?  my system broke.  i didn't touch any sensitive files (/gnu/store, /var/guix).  but none of my system generations can't boot up my machine.
<ytc>i've just edited /etc/config.scm.  i did "sudo guix system reconfigure /etc/config.scm".  and since then, my pc is unbootable.  all generations somehow fucked up.
<rekado_>ytc: does it boot into a recovery guile session?
<rekado_>is there any interesting output before that?
<ytc>rekado_: how can i try to boot into that guile session?
<nij->rekado_: thanks
<ytc>i wrote my config.scm, i ran reconfigure command.  and suddenly my wm and xorg crashed.  i couldn't do ctrl+alt+f2.  then i waited for a while and once i saw nothing was happening i powered off my pc.  since then i can't boot my machine.
<ytc>it had one job: protecting my machine with generations.  if it can't even do that, well what can i say?
<nij->Currently, guix hosts a def for emacs 27.2: https://guix.gnu.org/packages/E/page/6/
<nij->Soon, emacs 28 will be the official def for emacs.
<nij->What should I do to stay in 27.2 then?
<nij->Must I go into the repo, find the older files, copy the definition, and put that into my own channel? Or is there a way to ask guix to pull emacs from official using older commits?
<singpolyma>nij-: guix time-machine
<nij->Wow.
<attila_lendvai>yeah, if a service's user code does something wrong, then herd stop my-service brings down Gnome, and makes the OS generally stuck in some halt like state
<attila_lendvai>something is wrong with the start script of the shepherd service when this happens
<rekado_>ytc: what happens when it boots? Any output?
<rekado_>what does “can’t boot my machine” mean? Where does it stop booting?
<attila_lendvai>maybe shephard kills itself due to an unitialized pid field of the service?
<apteryx>rekado_: hi! /mnt_test/var/cache is still being copied in /mnt/btrfs-pool/@cache; seems /dev/sdd is not as fast as we thought?
<rekado_>apteryx: i suppose you could also mount /dev/sde or /dev/sdf and copy from there
<rekado_>it’s a different fiber channel link to the same storage
<apteryx>ok, I'll test, thanks!
*attila_lendvai wishes it was easier to debug shepherd
<apteryx>rekado_: mount -text4 /dev/sdf /mnt_test2 -> mount: /mnt_test2: wrong fs type, bad option, bad superblock on /dev/sdf, missing codepage or helper program, or other error.; am I doing it wrong?
<rekado_>apteryx: uhm, don’t know
<rekado_>I’ll note that fdisk -l /dev/sd{d,e,f} seems to be wrong about the size, too
<rekado_>we increased the size from 5TB to 10TB; maybe the kernel needs to be informed about this.
<rekado_>apteryx: since nobody else uses /mnt_test it should be fine to unmount it, perform some kpartx magic, and then mount it again
<efraim>wouldn't it be parted to expand the partition and then you can expand the file system?
<bost>Hi. What are the verbosity levels of `guix package --verbosity=LEVEL`? Apparently it's a number:
<bost>$ guix package --verbosity=
<bost>guix package: error: : invalid number
<bost>But `guix help package` says nothing about the meaning of the verbosity numbers.
<rekado_>efraim: the file system has already been expanded
<rekado_>I don’t recall if I expanded the partition (or whether I had to)
<AwesomeAdam54321>bost: Choosing 0 means that no output is produced, 1 is for quiet output; 2 is similar to 1 but it additionally displays download URLs; 3 shows all the build log output on standard error.
<bost>AwesomeAdam54321: thx. Is it documented somewhere? Or can see it somewhere in the code?
<AwesomeAdam54321>I found it in the guix info manual: info guix "Package Management" "Invoking guix package"
<apteryx>rekado_: OK; the cp command has been running for about 8 hours; I'll let it go
<apteryx>assuming zstd compression plays no role in the on disk size of /var/cache/, we're about 33% through copying /mnt_test.
<nij->How does guix know to look for ~/.config/guix/channels.scm whenever (guix channels) is imported?
<nij->Does it configure ~/.config as one of its loadpath?
<attila_lendvai>shepherd is not very good with error handling... :/ is there anywhere any docs on how to run a second shepherd to work on it?
<rekado_>attila_lendvai: yeah, shepherd error handling and reporting is rather poor.
<gnoo>attila_lendvai: mkdir /tmp/test; export XDG_RUNTIME_DIR=/tmp/test; shepherd
<rekado_>you don’t have to run shepherd as PID 1. Should be just fine to run it manually (and tell it to load a configuration from somewhere)
<attila_lendvai>i have a lot of experience in nested error handlers in CL, but i have a hard time with shepherd... e.g. Guix System has a layer of complexity on top of shepherd, so i can't just grab my config and start shepherd with it
*attila_lendvai makes notes
<attila_lendvai>and any hints on how to specify a custom shepherd package for an openrating-system instance?
<faust45>i am trying to setup flutter sdk, and got /lib64/ld-linux-x86-64.so.2: No such file or directory
<faust45>how i can work around this issue?
<rekado_>faust45: by linking ld-linux-* from the glibc package to that location
<rekado_>or by using patchelf to change the embedded reference to the loader
<rekado_>or by building the thing from source instead of using pre-built binaries
<apteryx>(which would be ideal)
<nij->I'm on archlinux and am thinking of moving to guix gradually.
<nij->I will still live in arch for a while. Now guix (as a pkg manager) works nicely. I wonder if I can also use guix home manager?
<nij->(I'm not sure if the fundamentals of guix home manager is incompatible with arch.)
<nij->s/with arch/with normal arch usuage/
<phf-1>Hello Guix! I have a manifest with this dependency: font-gnu-freefont, yet, when executing xelatex in an environment (guix shell --container -m manifest.scm ...) I have this error: "Package fontspec Error: The font "FreeSerif" cannot be found." How come ?
<rekado_>nij-: I’m not using the home manager, but it doesn’t require Guix System. I don’t know if there are incompatibilities with Arch, though.
<faust45>rekado_: thanks! will try patchelf, build from sources in not the option for me, its to complex
<rekado_>phf-1: not sure, but you can export KPATHSEA_DEBUG=2 (or 1, or 4, or 8 or 15) to see what files xelatex encounters.
<phf-1>Great, will try that. thank you rekado_
<rekado_>could also be that you’d need to build the font cache inside of the environment first, but I don’t know if it needs to live in some special location
<phf-1>ok!
<nij->rekado_: thanks :) anyone knows if guix home manager goes well with archlinux :)?
<civodul>nij-: Guix Home (not to be confused with Guix Home Manager) should work on other distros
<civodul>at worst, you might need to explicitly source its startup files
<civodul>not sure
<nij->what's the difference?!
<florhizome[m]>Is someone looking at this?
<florhizome[m]>I don’t think much has changed there since October
<florhizome[m]> https://issues.guix.gnu.org/50862
<nij->`$ guix home` -- guix: home: command not found. Try `guix --help' for more information.
<florhizome[m]>(Someone with a capable machine for offloading maybe; in my experience KDE stuff takes a lot of time and energy, hence why it would be a pity to let these updates rot)
<florhizome[m]>I packaged Kwinft, too, with which guix would come pretty close to be able to have the packages for some minimal kde session
<florhizome[m]>I could send a reminder to the ml so it can be scheduled with the updates now...
<nij->(I'm on 1.3.0).. too early for guix home?
<nij->``guix --version`` => 1.3.0
<phf-1>rekado_ yes, indeed, it works. I've refreshed the cache as in the doc[1] and it works just fine. Amazing thing. [1]: https://guix.gnu.org/manual/en/guix.html#X11-Fonts
<faust45>rekado_: now i got Run Build Command(s):/home/moon/.guix-profile/bin/ninja cmTC_aeb5a && [1/2] Building CXX object CMakeFiles/cmTC_aeb5a.dir/testCXXCompiler.cxx.o
<faust45>    [2/2] Linking CXX executable cmTC_aeb5a
<faust45>    FAILED: cmTC_aeb5a
<faust45>    : && /home/moon/.guix-profile/bin/clang++ CMakeFiles/cmTC_aeb5a.dir/testCXXCompiler.cxx.o -o cmTC_aeb5a && :
<faust45>    clang-13: error: unable to execute command: Executable "ld" doesn't exist!
<faust45>    clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
<faust45>    ninja: build stopped: subcommand failed.
<faust45>rekado_: can you help please? )
<civodul>faust45: try installing "clang-toolchain" instead of just "clang"
<civodul>though you may be better off writing a package for this program: https://guix.gnu.org/manual/en/html_node/Defining-Packages.html
<faust45>civodul: after clang-toolchain installed got this
<faust45>CMake Error at /gnu/store/xw27p0kpd7hf96chj3wdk17mscsvzagc-cmake-3.21.4/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
<faust45>  Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
<faust45>Call Stack (most recent call first):
<faust45>  /gnu/store/xw27p0kpd7hf96chj3wdk17mscsvzagc-cmake-3.21.4/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
<faust45>  /gnu/store/xw27p0kpd7hf96chj3wdk17mscsvzagc-cmake-3.21.4/share/cmake-3.21/Modules/FindPkgConfig.cmake:70 (find_package_handle_standard_args)
<faust45>  flutter/CMakeLists.txt:23 (find_package)
<Andrew>Firstly, I'd recommend xltxtra for XeLaTeX
<Andrew>s/Firstly/Additionally/
<faust45>i am really sorry that, i am spamming you guys with stupid questions ( but i spent a few days with no success runnig flutter sdk
<gnoo>> By downloading or using the Flutter SDK you agree to the Google Terms of Service:
<gnoo>lol
<gnoo>faust45: what if you try running guix shell <things listed from below url> ?
<gnoo> https://docs.flutter.dev/get-started/install/linux
<gnoo>but given the above implicit terms of service, i'd think talking about it here is not allowed.
<gnoo>also, if you want to paste output of some command, consider using a pastebin like paste.debian.net
<faust45>gnoo: in guix shell i got this https://paste.debian.net/1228598/
<gnoo>try adding pkg-config in the <things listed from below url>
<gnoo>adding with other things as well
<phf-1>what causes this error? "guix shell: erreur : integer expected from stream"
<civodul>phf-1: you need to upgrade your daemon to get the fix for this bug
<civodul> https://guix.gnu.org/manual/fr/html_node/Mettre-a-niveau-Guix.html
<phf-1>ok, great thanks.
<civodul>(you might have seen it in the news from "guix pull" :-))
<phf-1>will check the news then :)
<faust45>gnoo: already have installed  pkg-config
<gnoo>did you also add the guix equivalent of these? clang cmake ninja-build pkg-config libgtk-3-dev
<faust45>gnoo: no, i just install all of this in default profile
<emacsen>hey all. What package is pdflatex in? I've been hunting for it for a while.
<faust45>gnoo: do i need run in separate enviroment?
<gnoo>probably not
<gnoo>can't help you much there since downloading that will make me implicitly agree to boogle's terms
<faust45>gnoo: )) any way thanks!
<gnoo>faust45: i think it will be easier for you to define a package and use cmake-build-style
<gnoo>emacsen: i think it's in texlive-bin
<emacsen>gnoo, thank you!
<faust45>gnoo: how i can install lib32stdc++6 & libgtk-3-dev ?
<gordon1>is there a way to configure ssh lib (or client?) that is used by git inside guix? It looks like it is completely different than regular git or regular ssh
<gordon1>so i set up the channel using ssh url like that (url "ssh://user@local-server/path/to/git")
<gordon1>it refused to connect complaining about key exchange, fiddling with sshd on the server i discovered that it only accepts ssh-rsa and ssh-dss key exchange algorithms, but even setting that on the server, i still get
<gordon1>guix pull: error: Git error: error authenticating: no auth sock variable
<gordon1>git clone and plain ssh both work with this server/url
<gordon1>haven't found anything mentioning that in guix handbook
<gnoo>gordon1: maybe you want something like ssh-agent?
<apteryx>it won't work, the (source) derivation occurs in a container
<gordon1>i mean ideally i want something like (private-key-for-guix "blahblah") somewhere in system.scm
<gordon1>not ssh-agent
<gnoo>if it's for a package then it won't work
<gordon1>it's for guix pull
<gordon1>for a channel
<gordon1>are there other options besides ssh or http?
<gnoo>there's git:// but maybe you want to try GIT_SSH and/or GIT_SSH_COMMAND git pull
<gnoo>setting ssh to -v should tell you some more info
<gnoo>giving*
<faust45>flatter doctor recommends me  apt install libgtk-3-dev but i couldnt find same package in guix
<gnoo>for libgtk-3-dev, you use gtk-3, i think
<gordon1>hmm, git:// would work i guess
<apteryx>gordon1: seem to rely on guile-git to do the clone
<apteryx>which wraps https://libgit2.github.com/libgit2/#HEAD/group/clone
<gordon1>ah, that will explain things
<gordon1>whatever, too hard, i'll use git:// instead
<apteryx>from guile-git's (git clone), "An authentication method from (git auth) can be passed optionally if the repository is protected."
<faust45>gnoo: i run guix search gtk
<faust45>got name: gtk
<faust45>version: 4.4.1
<faust45>couldnt find v3
<gnoo>ahh, it's just git+
<gnoo>gtk+
<apteryx>gordon1: it seems it should be supported already though looking at guile-git
<gnoo>faust45: guix show gtk+
<apteryx>perhaps there's a problem in way we call it
<gordon1>well, there are at least two problems
<gordon1>1 is about key exchange algorithms
<gordon1>and the other one is how to supply the key
<apteryx>it should be able to leverage your ssh-agent
<gordon1>i don't use ssh-agent
<faust45>gnoo: but does gtk+ include development libraries ?
<apteryx>gordon1: could you try using ssh-agent just as a test?
<gordon1>i need to remember how to use it, one sec
<gordon1>ok, that's after i ran ssh-agnet
<gordon1>guix pull: error: Git error: Failed to retrieve list of SSH authentication methods: Failed getting response
<apteryx>did you export the SSH_AUTH_SOCK environment variable?
<gordon1>yes
<apteryx>OK :-/. Sorry, I don't know.
<gordon1>can connect by just sshing
<gnoo>faust45: probably
<gnoo>gordon1: try setting GIT_SSH_COMMAND='ssh -v' and seeing the debug that ssh produces. you'll likely need to use (setenv) inside the config.scm as it is containerized
<faust45>gnoo: i installed gtk+ but flutter dont see gtk proper files flutter doctor output https://paste.debian.net/1228607/
<gnoo>maybe you can just (setenv HOME "/path/to/your/home") and ssh will use ~/.ssh/
<gnoo>or, (mkdir-p (string-append (getenv HOME) "/.ssh")) and then have a plain-file fill in ssh private keys
<akonai>question: is there a way to add something to (source (origin ... in a derivative package without overriding it? like inherit
<gordon1>gnoo: that doesn't really explain why it has only ssh-rsa/ssh-dss key exchange algos
<gordon1>anyway, i set up git daemon for now, will figure out what's wrong with ssh later
<gnoo>oh, i thought it was the server having only ssh-rsa/ssh-dss, not the other way around. sorry.
<civodul>akonai: you can use 'inherit' for an origin too
<civodul>so (package (inherit p) (source (origin (inherit (package-source p)) ...)))
<civodul>see also https://guix.gnu.org/manual/devel/en/html_node/Defining-Package-Variants.html
<gordon1>no, server actually deprecated ssh-rsa/ssh-dss already
<akonai>civodul: ah, i was trying to do that but failed, thanks
<florhizome[m]>is there an option for guix shell -D to install the packages in a local profile? I mean in the root dir?
<florhizome[m]>as far as I remember python/ruby env do that?
<unmatched-paren>if i want to check how many cores to use to build something as fast as possible, what should i use? (the build in question does not configure parallelization automatically, and uses only 1 core by default)
<unmatched-paren>huh, never mind, i thought it did support parallel builds...
<Nazar>Hi there, i'm preparing a package with git source, and there is a bash scripts that need to run some git commands, but the .git folder is not fetched, how i can clone the repo from source of package ?
<Nazar>so the files will contain .git folder
<Nazar>and i can run  git submodule init
<unmatched-paren>how do i add multiple sources to a package?
<singpolyma>unmatched-paren: add the second source as an input
<singpolyma>Nazar: you can pass recursive? #t to the git source. That won't leave .git around but will get you submodules
<gnoo>you can have a list of uri's in origin info "(guix) origin Reference". if one is down, another will be used
<Nazar>singpolyma okay, just did, yes the submodules are here, now will patch the part with bash scripts invoking git commands, thanks
<apteryx>unmatched-paren: there's a Guile parameter called parallel-job-count that you can use on the build side
<apteryx>grep the sources for example; you'll want to honor the #:parallel-build? build argument
<apteryx>(if using gnu-build-system)
<gordon1>so, mdev has hardcoded path of config file to be /etc/mdev.conf, any help how i can generate this file in guix?
<gordon1>or is the better way to patch busybox to change the path of the file?
<unmatched-paren>try patching it to read some kind of environment variable maybe
<unmatched-paren>$MDEV_CONFIG_PATH or something
<jpoiret>gordon1: you could extend etc-service-type, or (preferable) patch it as unmatched-paren said
<gordon1>unmatched-paren: it's a kernel helper, it is invoked by kernel, i think it has quite weird env
<gordon1>not something you can set
<jpoiret>you could consider generating a wrapper as part of the service that gets called instead
<gordon1>hmm, that's true
<jpoiret>from what i'm reading, you just have to echo '/path/to/helper' > /proc/sys/kernel/hotplug
<jpoiret>it's generally better to avoid populating /etc at all if you can afford to
<gordon1>makes sense
<gordon1>just doing PoC right now to see if there are some unforeseen problems, so i would go with /etc/mdev.conf right now, but will try to make a wrapper later
<gordon1>unless it would be just easier to make a wrapper
<jpoiret>ehm, if you're writing a service, I think a wrapper woud take just a bit more time, as you will have to patch the mdev source
<jpoiret>also FTR: hotplug kernel events have 2 userspace interfaces, either the kernel spawns a userspace helper process, or a daemon listens on a netlink socket provided by the kernel
<jpoiret>udev does the latter
<jgart>hi, does the manual/docs explain anywhere best practices for packaging bash scripts
<jgart>?
<jgart>I've packaged one before that was very tedious (ytfzf)
<jgart>with raghavgururajan
<jgart>But, I'd like to understand the reasons and process better from a lower level
<jgart>What I'm referring to is that bash scripts need to have all executable binary calls patched
<jgart>In my experience the program can still work without patching it.
<jgart>But, I want to understand the technical reasoning for why Guix wants to patch every binary in a shell script? And, I'd like to document it explicitly.
<jgart>For others to understand it clearly as well without having to search on the mailing lists or irc logs to uncover the reason for it.
<drakonis>its inherited from nix iirc?
<drakonis>oh, i misunderstood it
<drakonis>most shell scripts attempt to call binaries by absolute path and since those aren't in the right location, it fails
<drakonis>some nix folks were writing a daemon to automatically deal with that on the fly
<drakonis> https://github.com/abathur/resholve
<drakonis>hm, doesnt seem like a daemon?
<drakonis>it parses shellscript and replaces the binary calls with the appropriate paths
<drakonis>it used to be a daemon in the past
<jgart>take one example of the difference of what nix does for a bash script to what guix does: fff (f*cking fast file-manager)
<jgart> https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/applications/misc/fff/default.nix#L27
<jgart>this guix package currently works fine: https://git.sr.ht/~whereiseveryone/guixrus/tree/master/item/guixrus/packages/misc.scm#L179
<jgart>We have fff packaged
<jgart>But that fff package would probably not be accepted into upstream until we patch all the executables that are being called.
<jgart>It looks like nix does not have to do that tedium.
<jgart>I'd like to understand why. Are they using a script that does it for them?
<drakonis>it automates that iirc?
<jgart>Should we implement this script on our end?
<drakonis>they use wrapprogram
<jgart>So that we don't have to be maintaining extra patches or playing `substitute*` golf?
<jgart>drakonis, I think wrapprogram is only for the shebang line at the top.
<jgart>We currently have something for that also in the build-system phases
<jgart>and we have wrap-program as a function
<jgart>but that doesn't take care of the mess of packaging something like ytfzf
<jgart>see ytfzf
<jgart>`guix edit ytfzf`
<drakonis>let me see
<drakonis>their wrapprogram does not behave like ours
<jgart>and see the relevant patch for ytfzf also
<jgart>in the patches directory
<drakonis>i've tried to imitate one when i was trying to fix gzdoom a while back
<jgart>I think this might be the "magic" they are doing: `pathAdd = lib.makeSearchPath "bin" ([ xdg-utils file coreutils w3m xdotool ]);`
<jgart>I'll have to read the source when I find the time to see exactly what that is doing to the deps that fff is calling
<singpolyma>Getting resholve in guix would be great. It depends on python2 right now, not sure what the guix position on that is
<robin>i'm missing the problem, is guix's wrap-program (that can add inputs to $PATH) insufficient? it's not a perfect solution, but is an alternative to patching/substitute*-ing shell scripts
<jgart>singpolyma, I think ryanprior[m] mentioned before a way to get python2 packages with Guix in the irc logs or guix-devel mailing list
<jgart>robin, why do people still patch those executables manually then?
<jgart>miscommunication with a canonical way of doing it?
<drakonis>singpolyma: resholve has a dependency on nix iirc?
<jgart>My question is essentially: What are the accepted practices that should be followed for packaging shell scripts and why?
<singpolyma>Wrapping is a last resort kind of thing. It's allowed because sometimes making the references is too hard etx
<lagash>Out of curiosity: does anyone know of a free shell account for Guix? You know, like SDF or Grex but Guix.
<robin>jgart, well, patching is cleaner when possible, as it doesn't 'pollute' the $PATH for unrelated programs that might be invoked by the wrapped one
<jgart>lagash, A friend wanted to start one but we haven't gotten around to it
<jgart>donotshake
<jgart>If you're interested I can put you in touch with him
<gordon1>what's the best way to produce file based on the other file but append stuff at the bottom?
<gordon1>i assume there are config templates but that's kind of an overkill
<jgart>robin, but then I can override the patched path if the program has a config file that let's you specify it
<jgart>bower email client is one example of that
<jgart> https://issues.guix.gnu.org/50833
<drakonis>its been a while since i've looked into nix's innards
<drakonis>nixpkgs
<drakonis>rather.
<jgart>drakonis, if you want to read about the nix daemon you'll have to look in the nix repo instead of nixpkgs
<jgart>the implementation of the nix daemon, that is
<jgart> https://github.com/NixOS/nix
<drakonis>i'm going to read the guix implementation tho
<drakonis>since that's the one i'm going to convert to guile
<jgart> https://github.com/NixOS/nix/search?l=c%2B%2B
<jgart>drakonis, iirc edolstra's thesis talks about the low-level architecture/implementation of the nix daemon
<jgart>drakonis, https://edolstra.github.io/pubs/phd-thesis.pdf
<lagash>jgart: I don't really have any hardware to donate or anything..
<jgart>lagash, I meant just discussing the idea for it
<jgart>what's the vision for the SDF with Guix System, etc...
<jgart>why have an SDF with Guix System? What are the perks, enumerate the perks, etc...
<lagash>I'll pass, I was mostly just wondering if something already exists
<jgart>ah ok
<jgart>probably doesn't exist yet
<drakonis>SDF?
<drakonis>oh
<drakonis>right.
<jgart>drakonis, https://en.wikipedia.org/wiki/SDF_Public_Access_Unix_System
<jgart>We had one at one point.
<jgart>But it wasn't really public public
<drakonis>multiuser guix...
<jgart>But I would share a Guix System server with a small group of friends
<jgart> https://git.sr.ht/~whereiseveryone/services/tree/master/item/whereiseveryone-0.scm#L43
<drakonis>it seems like there'd be an impedance mismatch
<drakonis>how would you include new users?
<jgart>We hacked the Guix System config a bit
<jgart>easy-user-account
<jgart>easy-ssh-config
<jgart>easy-guixrus-service
<drakonis>i see
<jgart>Those are part of guix-easy package: https://git.sr.ht/~whereiseveryone/guix-easy/tree/master/item/easy/utils.scm#L19
<lilyp>Apart from those Guix-easy extensions, if you wanted to code something like that from scratch you could use unattended system upgrades or the like :)
<lilyp>also why is everyone wheel?
<lilyp>that sounds dangerous
<lagash>Anyone have experience with getting Guix to work on say AWS free tier?
<lagash>I've read this article for instance https://ofosos.org/2018/03/26/guix-images-01/
<jgart>lilyp, It was a quick library/hack project at the time. guix-easy hasn't been in active development
<jgart>We were just having fun with the Guix System APIs
<jgart>I'd like to continue hacking on guix-easy at some point but I have to think about what exactly we'd want to do with it.
<rekado_>lagash: I’m using Guix but not Guix System on AWS
<jgart>Maybe a extra sugary experimental dsl on top of upstream GNU Guix APIs
<jgart>I dream of experimenting with clojurisms and Guix System APIs. Maybe I'll try/package lokke soon.
<jgart> https://github.com/lokke-org/lokke
<lagash>rekado_: not within free tier though? takes too much disk space/RAM/CPU?
<jgart>or just use guile-pipe, guile-lenses, and similar https://github.com/joshwalters/guile-pipe
<jgart>lagash, sometimes vultr gives out free month coupons
<jgart>lagash, if you'd like to support a small NPO there is also capsul.org
<jgart> https://capsul.org/pricing
<jgart>They have a Guix System server out of the box ready to go
<civodul>that https://github.com/abathur/resholve thing looks interestnig
<jgart>with a single click
<civodul>*interesting, even
<lagash>jgart: interesting, I think.. ah! I had them in my bookmarks already :)
<jgart>I helped capsul upgrade their supported OSes to include Guix system 1.3
<jgart>I'll probably continue maintaining that. There organizational infrastructure is completely open/free software
<rekado_>lagash: I don’t know if it takes too much space.
<jgart> https://git.cyberia.club/explore/repos
<rekado_>I prepare the environment on one machine, then have the new EC2 instance request the diff
<civodul>jgart: i have a preliminary package for lokke
<civodul>there are complications though
<lilyp>civodul: does it require nix internals, a running web service, or would it be relatively easy to port this to guix
<drakonis>oho a lokke package
<rekado_>I use a persistent volume for /gnu/store and let new EC2 instances instantiate a /gnu/store volume from a snapshot
<drakonis>but when is lokke's libraries getting rolled into it
<drakonis>into guile
<rekado_>so the amount of data to move to new instances is minimal
<jgart>civodul, that's great! Looking forward to trying it. I should just stop being lazy and try it without Guix first.
<jgart>lagash, capsul.org site's source code is a flask app: https://git.cyberia.club/cyberia/capsul-flask
<lilyp>drakonis: imho lokke is rather large to squeeze into guile as-is
<jgart>lagash, The images capsul.org supports are here: https://git.cyberia.club/cyberia/capsul-images
<drakonis>regarding resholve's nix coupling, it doesnt seem extensive
<jgart>lagash, We could add trisquel and parabola support, whatever
<drakonis>seems achievable.
<jgart>cyberia is interested in supporting trisquel, et al just nobody has done it yet
<lilyp>"brb" rebooting
<lagash>OK how about using say GitLab's CI for building packages? There a template somewhere I can use?
<lilyp>lagash: I use Gitlab CI, but the working templates use Guix as a package manager on top of alpine
<lagash>lilyp: that works too, you have a template or example somewhere I can see?
<lilyp>lagash: This one's been inherited a few times, including by yours truly: https://gitlab.com/zaoqi/gnu-guix-docker
<nij->Anyone using guix home? It's a new feature which doesn't seem completely documented in the ref manual: https://guix.gnu.org/en/manual/devel/en/guix.html
<nij->I'd like to kindly ask if there are more materials on this. Thank you.
<pinoaffe>nij-: I don't use guix home, but it's definitely in the manual
<singpolyma>lagash: sr.ht has a guix system image for their CI, if that interests you
<pinoaffe> https://guix.gnu.org/manual/devel/en/html_node/Home-Configuration.html
<singpolyma>nij-: if you're looking at manual on web make sure the URL says "devel", all other links are out of date
<nij->It does have devel, and there's indeed a section on it. But I didn't see details on how to control it in fine-grain. Perhaps passing some point, I need to be able to read the source? Is that the recommended way?
<lilyp>nij-: guix home is currently a technical preview, so its details are very much subject to change still
<lilyp>therefore it's not fully documented and you'd have to read the source
<nij->Got it. Thanks for letting me know!
<nij->I look forward to what it will offer. - If this is not too much to ask - does anyone know how it compares with nix home? nix home works by locking (read-only) the user home directory, and some apps (e.g. ranger) that needs access to a state file failed to work..
<unmatched-paren>it locks /home???
<unmatched-paren>where do you put your files??
<lilyp>guix home doesn't
<lilyp>there's a similarly named guix-home-manager which is closer to what nix does
<nij->it locks /home/me iirc
<nij->lilyp nice.. i want to try it out
<lilyp>unmatched-paren: you put them in /data, silly
<nij->first gotta build the latest guix by my own..
<lilyp>I'm unsure about the state of guix-home-manager though, I haven't heard about it being used in a long while
<unmatched-paren>i'm very close to getting nim working, but in the process i learned that the nim `csources` repo is actually just C output from the nim compiler and as such is not actually bootstrappable in the guix sense :(
<nij->It says in its repo that people should stop using it and adopt the official guix home.
<jgart>nij-, yup that's what I had read also
<jgart>civodul just proposed a new redshift service: https://issues.guix.gnu.org/53466
<lilyp>unmatched-paren: that's concerning, but not for you to worry about currently
<jgart>It looks really nice! I'm looking forward to trying it out
<unmatched-paren>i don't really want to use languages that aren't bootstrappable, because then my programs won't be bootstrappable... (which is why i don't use haskell even though i like it a lot)
<lilyp>unless you want to rather work on getting a bootstrapped compiler in there
<unmatched-paren>lilyp: haha no
<unmatched-paren>:P
<lilyp>unmatched-paren: haskell is bootstrapped via hugs, though
<unmatched-paren>i mean... an interpreter might be possible...
<jgart>I think chicken scheme suffers from a similar problem
<unmatched-paren>lilyp: oh, i read on bootstrappable.org that hugs doesn't support a feature needed for glasgow haskell to work
<jgart>They compiled the compiler and "threw away the key"
<unmatched-paren>i guess the problem's been solved since then?
<jgart> nope:https://issues.guix.gnu.org/22366
<jgart>unmatched-paren, maybe you'd like to work on chicken instead ha
<unmatched-paren>if i dive really, really deep into the nim repo i *might* be able to find the old <insert whatever language, presumably c> sources to truly bootstrap it
<unmatched-paren>git log --reverse time i guess
<unmatched-paren>(that's the reversing flag, right?)
<jgart>didn't know about that one
<jgart>TIL
<jgart>I started using --autostash this month. That's a cool one I found out about
<jgart>git pull --autostash
<unmatched-paren>ooh, neat
<lilyp>autostash is really nice
<unmatched-paren>git is full of neat stuff
<jgart>unmatched-paren, https://bugs.call-cc.org/ticket/1776
<jgart>git has so much stuff
<lilyp>my favourite one is "git gud"
<jgart>compared to when it was first released, I've been told
<unmatched-paren>jgart: when i said 'I guess the problem's been solved since then?' I meant the haskell problem, not the chicken one :)
<nij->Folks - I feel like guix offers an opportunity to understand the linux system thoroughly - it provides a nice abstraction written in lisp, making it easier for us to trace down to the very base of the system.
<jgart>unmatched-paren, yeah I know
<nij->Does this view sound right to you? Am I hoping the wrong thing in guix?
*unmatched-paren tries `git gud` and feels betrayed by lilyp
<jgart>just sharing links to unrelated stuff now
<lilyp>muhaha
<lilyp>for context, it's an alias I defined to launch gitg early into my uni years
<jgart>unmatched-paren, thanks for being the guinea pig
<lilyp>is it more typing? sure
<lilyp>but it forces a chuckle out of random people looking at your command line
<unmatched-paren> `https://elephly.net/posts/2017-01-09-bootstrapping-haskell-part-1.html` seems to describe a failed attempt to bootstrap haskell using hugs to interpret uhc to compile ghc
<unmatched-paren>that post is linked to by the bootstrappable website, so i assumed it was the most recent attempt
<lilyp>GHC 7 is still built with ghc-bootstrap... you never learn out
<jgart>I'm hoping we can keep our rust bootstrapped
<jgart>lilyp, do you still use gitg?
<lilyp>why should I not?
<jgart>just curious what your workflow is with it?
<lilyp>apart from the mailmap stuff that no graphical git client seems to handle
<jgart>do you use magit also?
<lilyp>I only use it to visualize things, I don't use it for commiting
<unmatched-paren>seems like maybe the best route would be maintaining a fork of hugs with the one feature needed to interpret ghc, but i'm not sure how much effort that would be
<jgart>lilyp, got it
<lilyp>remembering all the keybindings for magit would be too much, so I focus on the most important ones like fetch, commit, rebase, push
<lilyp>gitg also nicely does branches, which magit... eh
<jgart>I use magit currently to visualize blame view mostly
<jgart>I use tig and git-interactive-rebase-tool for mostly everything else
<rekado_>unmatched-paren: that’s my blog
<unmatched-paren>rekado_: i know :)
<jgart> https://gitrebasetool.mitmaro.ca/
<rekado_>the latest attempt is to build parts of GHC 4 and combine them with Hugs to interpret GHC.
<jgart>it's in GNU Guix
<rekado_>I had a draft for part 2, but since I had no results I never published it
<jgart>rekado_, are people still working on that recently?
<rekado_>don’t know
<jgart>were can I see the latest?
<jgart>k
<rekado_>I’m out of the loop
<jgart>rekado_, where can I read about why bash scripts need to be patched in guix to refer to all paths in store?
<jgart>rekado_, for example `guix edit ytfzf`
<jgart> https://github.com/pystardust/ytfzf
<rekado_>if you’re interested in this: here are my notes: https://elephly.net/paste/1643316428.html
<jgart>ytfzf was very tedious to package
<unmatched-paren>jgart: wouldn't you have to do that to avoid propagating all the dependencies to the user's shell? presumably that isn't desirable in guix
<jgart>I wonder if there is a better way?
<unmatched-paren>rekado_: the recursive module imports are the only reason why hugs can't handle ghc, right?
<jgart>unmatched-paren, I'm just talking about having to patch executables in a bash script.
<unmatched-paren>yeah
<jgart>no propagated-inputs are being used in ytfzf
<jgart>it's using inputs
<rekado_>unmatched-paren: no
<rekado_>unmatched-paren: if that was the only problem it would be pretty easy to untangle manually
<jgart>I just feel it's tedious. nix does this instead: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/tools/misc/ytfzf/default.nix#L41
<unmatched-paren>jgart: if you use propagated-inputs, you probably wouldn't have to patch the script, but it would allow users to run the executables in their own shells, which may or may not be desirable
<jgart>${lib.makeBinPath [ chafa coreutils curl dmenu fzf gnused jq mpv ueberzug yt-dlp]}
<rekado_>the most promising way forward is to build the RTS of GHC 4.08.2 — this cannot be build with any reasonably recent C compiler, but a version of GCC from that time (so something like GCC 2.95, which we have as gcc-core-mesboot0) should be adequate.
<jgart>It's easy to override the patched script especially if the program lets you specify external programs in a config
<jgart>bower is one example of such a program: https://github.com/wangp/bower/blob/master/bower.conf.sample#L99
<jgart>does anyone want to work on a bootstrapped crystal? https://issues.guix.gnu.org/49158
<lilyp>Hmm, could we build older versions of GCC with newer ones?
<lilyp>E.g. GCC 3 from GCC 4
<rekado_>lilyp: maybe. What’s the use case?
<unmatched-paren>rekado_: urgh, i just read that irc conversation in the notes... that is truly terrifying
<lilyp>Platforms in which we can't build old GCC normally
<rekado_>unmatched-paren: yeah, that’s why I think it’s best to just use a compiler from when code like that was considered okay.
<lilyp>Though one could reason that GCC 3 would still lack e.g. a RISCV backend and therefore be useless
<rekado_>(was there ever a time like that?)
<unmatched-paren>back in the days of Real Programmers :P
<lilyp>Before standardization, all C was legal 😎️
<unmatched-paren>their code was interspersed with __asm__ :)
<lilyp>their __asm__ was interspersed with C
<unmatched-paren>they wrote .c files, but 60% was __asm__ and 35% __fortran__
<unmatched-paren>there must have been a time where that kind of code was okay, because how else did perl become so popular?
<lilyp>by stealing from awk and sed, of course
<unmatched-paren>where does pkg-config keep its... pkg configs? i'm trying to figure out how to get nim to link stuff against c libraries in the store
<dissoc>can you set permission on file going into the store via (local-file "myfile")?
<lilyp>unmatched-paren: lib/pkgconfig
<unmatched-paren>thanks
<unmatched-paren>...huh. i was NOT expecting that
<KE0VVT>unmatched-paren: (
<unmatched-paren>the first version of nim was written in pascal -.o.-
***Guest1151 is now known as roptat
<unmatched-paren>is pascal bootstrappable? i hope pascal is bootstrappable...
<unmatched-paren>hm, even if it isn't we could use `p2c` to convert it to C...
<roptat>oh, that sounds like a fun way to bootstrap a compiler
<roptat>I hope it's not written in Pascal :p
<unmatched-paren>better than rust at least
<unmatched-paren>anyway, it looks like fpc is written in c
<unmatched-paren>ah, no it's not
<unmatched-paren>tomorrow's job: bootstrap fpc with p2c! :D
<unmatched-paren>(p2c appears to be written in perl)
<unmatched-paren>i hope it's full-featured enough to compile freepascal...
<unmatched-paren>bootstrapping pascal is not where i expected to be rn, but i'll try it.. :)
<roptat>good luck :)
<apteryx>weird; extracting a guix pack -RR as non-root yields: tar: .: Cannot utime: Operation not permitted and tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
<apteryx>that defeats the purpose, right?
<apteryx>ah, I had tar xf ... -C /tmp and something pre-existed there, it seems. Works fine in a fresh directory.
<singpolyma>Serious question: what is the "bottom" for bootstrapping as far as guix is concerned? Like, there has to be some sort of assembler at least at the bottom, right?
<jackhill>singpolyma: GNU MES and stage0: https://guix.gnu.org/en/blog/2020/guix-further-reduces-bootstrap-seed-to-25/ https://www.gnu.org/software/mes/ https://github.com/oriansj/stage0 is I think what you're interested in
<jackhill>also the #bootstrappable channel here on libera
<jackhill>an interesting question though: but how do we do the Guix bootstrap without an already running kernel?
<singpolyma>jackhill: thanks, that's what I was looking for
<nckx>‘kockmorse’.
<robin>jackhill, toggle the front-panel switches and pop in some punched cards? ;)
<jackhill>:)
<jgart>I think language specific talks on Guix packaging can be great for a video or talk at a conference. Like this one for go packaging in pkgsrc by Benny: https://youtube.076.ne.jp/watch?v=5_BttFflm1I
<jgart>@8:24 in the video/slide: Mismatch between the go tool and package managers. - Either: package only Go itself? - Or: Deal with it!
<robin> https://www.collabora.com/news-and-blog/blog/2022/01/27/writing-an-open-source-gpu-driver-without-the-hardware/ nifty gpu RE story