<dissoc>what is the best way to write services? packages has install-from-file. what is the best workflow for writing and debugging services?
<dissoc>i currently have a channel but debugging is painful. as i have to push and pull and it takes a while
<dissoc>ultimately im trying to add authorized-keys for the tor-hidden-services. where authorized-keys would a list of files. it's a relatively simple change. i just dont know what the optimal workflow for something like this is
<fnstudio>sorry, quick check in case i'm missing something, i entered an env with "guix shell gwl", and i was expecting to be able to use "guix workflow" from within there, but i was wrong
<fnstudio>i'm on a foreign distro though, so maybe that gets in the way somehow?
<lfam>The question of broken packages reminds me of my feelings about the web sites of some older distros, which have many broken or semi-abandoned interfaces to exploring the distro. That was a big factor in why I never got involved with those distros; it was frustrating and confusing
<lfam>I'd hate for our packages to give a similar impression
***califax- is now known as califax
<lfam>Like, if our web-based package database says we have a package of foo, so you install Guix in order to get foo, and then find out that foo hasn't built for 6 months... that's a bad impression
<bdju>secure boot used to only work with Windows, but I think some distros support it
<dcunit3d>that requires that you set up a TPM module (usually on your motherboard). it's apropos to a lot of proprietary stuff. it's possible to configure in CentOS, but kinda difficult. you have to get a signature of the system you're loading and the TPM stores that, so that it can be checked on boot.
<bdju>my second drive booted on the second try, got past formatting this time
<bdju>oh my god. hit edit on the system config preview screen, new backtrace
<dcunit3d>i'm probably mincing words there, but ... i think it's planned in Libreboot eventually, if its not already supported
<lfam>It's terrible that this is the best way to go
<podiki[m]>maybe later (longer term) use a more full fledged live image (desktop environment) to try out a config file and tweak it, then use that in the installer? but seems the main stumbling blocks are more paritioning
<podiki[m]>or then can use graphical partitioning tools if a user wants
<podiki[m]>I haven't tried Arch's new installer, but for forever doing it by hand was the only (Arch) way; people make a thing out of it though
<podiki[m]>does such a thing push more users away rather than getting them used to the distro's expectations? I don't know
<lfam>I've had good experiences with Debian's graphical installer. It's definitely possible to make something that works well
<lfam>The thing is, although we are happy if Guix helps people understand their computers more deeply, they shouldn't have to learn about all that in order to use Guix
<bdju>I really feel I earned the "Congratulations!" message at the end of the installer this time...
<podiki[m]>right, it is a tricky balance and I do think in general installing should be as easy as possible so you can start having fun with the distro
<apteryx>then grafting is probably the best course of action (+ a fix to core-updates)
<lfam>Although we distinguish between staging and core-updates numerically, I think that's more of a proxy for the impact of the change on the entire distro. So, a change to the docs of GCC could go on staging, if we had the build capacity
<lfam>This util-linux release is only fixes for these 2 CVEs. So I think it would be "safe", at least
<apteryx>currently we're a bit low on storage to start big rebuilds often, but that's about to change (we have about 30 GiB of usable SSD storage waiting to be deployed)
<lfam>"For example, on Fedora, /tmp is a tmpfs, so we can mount a basic FUSE filesystem named "/tmp/ (deleted)" (with FUSE's "hello world" program, ./hello) and unmount /tmp itself (a denial of service):"
<timmy>has anyone used opensmtpd with mcron? seems that mcron isn't able to send email due to a opensmtpd bug in sendmail?
<apteryx>lfam: I didn't follow the polkit thing, but we have polkit-duktape already, which is polkit using duktape as its JS engine instead of mozjs (which requires rust)
<gnoo>hello, i don't get completion from bash, and don't know where to start looking ;-;
<fnstudio>hey rekado, thanks! it's not that the sentence was wrong, i suppose? more a case of, it might make sense to add it to the tutorial as well, here https://guixwl.org/tutorial and generally to give it a bit more emphasis - i'm sure the new version is perfect, i'll pull from git later
<fnstudio>rekado: sure, it's mostly a bit of an exploration, i was looking into graphical solutions (e.g. knime) and then i thought... wait... this reminds me of that gwl talk i watched last year
<fnstudio>no worries for the rough edges, quite contrarily - thanks for working on it!
<efraim>everytime someone says PPC I assume it's powerpc-linux and powerpc64le-linux :)
<jbv1[m]>Hi guix ! Philosophical question: how would you explain what "packaging software" means to non-technical people and what problem those it solves ?
***moto7_ is now known as moto7
<jbv1[m]>I have something along the lines of: "it ensures that software that work for the developer will also work on the end-user device" but that sounds a bit limiting no ?
<efraim>"... and that everyone has the same working copy of the software"
<rekado>software is born as mere text; it has to be converted to executables first. This is very difficult for many silly reasons. Packaging does all that hard work, so that users can easily get the executables. [Add guarantees provided by the package manager if that went well.]
<fnstudio>jbv1[m]: ok, here's my go at it :) "Software often comprises a certain number of parts or dependencies, e.g. third-party components, files such as images or sound, etc. In order to distribute a piece of software it is necessary to "package" these dependencies together, so as to make all of them available to the user."
<rekado>another thing to weave in: software needs *other* software for the conversion from text to application. So what seems like an easy task for one application can easily balloon into lots of work — packagers do all that work for the user so they don’t have to.
<civodul>zap: hi! it was used twice, last time in Feb. 2020
<zap>civodul: ha, okay did you do any additional configuration in maiulutils.conf or .mailrc? Or you were just passing the smtp mailer url to mu-message-send ?
<ekaitz>janneke: before I start patching a compiler like a crazy man, I have a question for you. I'm trying to compile gcc 4.6.4 and I get the error "your system does not have /usr/include" or something like that in the build phase. Did you find that issue during the bootstrap? how did you overcome it?
<gordon1>is that normal when i run guix system reconfigure config.scm, every time it downloads different things, builds some other different things and it takes different time every try even if i do not change config.scm and run guix system reconfigure one after another?
<ekaitz>oooh yesss I was just reading about it thank civodul! :)
<civodul>ns12: the result of "guix pack" can only be used on a system that implements Linux syscalls: GNU/Linux, Android, WSL, and maybe some BSDs that have the compatibility layer turned on (not sure about that one)
<gordon1>did it again - now it downloads 138 MB of package
<gnoo>in the above url, you can see how polkit is replaced by polkit-mozjs/fixed. i think the only way to remove dbus will be to do the same
<gnoo>can i inherit a package but modify only one of it's phase? (something like after-install?)
<gnoo>it's to set a default value in a config file
<allana>Hi guix! I have a guix/guile (mostly guile) question. What is the canonical way to use dynamic-link of the system foreign module? For example, if I have libfoo installed in my profile, (dynamic-link "libfoo") will fail, but (dynamic-link "/home/allana/.guix-profile/lib/libfoo") will work fine. If I am writing a guile package, how do I ensure that it can find libfoo under other profiles?
<MysteriousSilve4><gnoo> "MysteriousSilver: what if you..." <- nah, there aint no dwm in gdm
<gnoo>MysteriousSilve4: you installed the default dwm with 'guix install dwm', right? that one provides a dwm.desktop which should be picked up. if you did 'make install' then it won't work, you can make your own package in that case which inherits from dwm
<gnoo>MysteriousSilve4: you can probably do something like this to make it work tho: (let ((comm "") (revision "0")) (source (origin (method git-fetch) (uri (git-reference (url "") (commit comm))) (sha256 (base32 "")))))
<gnoo>where the let part comes after define-public and before (package)
<attila_lendvai>looking at the graft issue, my completely uninformed gut instinct says: unintentional variable capure by a closure!
<gordon1>so is my understanding correct: if i need to modify existing package definition i just create package that inherits the old one and do my changes there, and if i for example made some new version of a package and i want to replace it in the system for every other package that depends on it - i need grafting?
*attila_lendvai continued reading and realized he spoke too early
<gnoo>gordon1: yes, that's my understanding as well, not sure how much of it is correct tho
<gnoo>how do i set some scheme variables for guix to use in 'guix install' and such ?
<rekado>apteryx: re subvolumes: I don’t know enough about this
<rekado>I don’t even know what subvolumes are and why one would want them other than to separately snapshot parts of the volume
<apteryx>that's their main purpose yes; I don't plan to use snapshotting for the build farm, but they could come handy should we want to backup something to a remote machine or storage array.
<rekado>nparafe: the problem is with unbalanced parentheses
<rekado>nparafe: your operating-system expression ends with “%base-packages)))” and after that you’ve got “(services …) …”.
<rekado>nparafe: remove one closing paren after %base-packages
<pinoaffe>hi guix! my laptop just lost power while building a package, and saved a corrupted derivation in the store - continuing the build process results in parse errors "error parsing derivation `/gnu/store/....': expected string `Derive(['"
<apteryx>rekado: currently the array does 150MiB/50MiB R/W according to the same fio command used in the issue
<apteryx>I'll see if changing the metadata profile from raid10 to raid1c4 changes anything (doubt so)
<apteryx>by the way, looking at dmesg I see lots of segfaults for mumi
<tribals>I'm trying to use guix for managing my development environment for a project. So, i created a manifest, added a couple of packages. The project I'm developing is one written in Python. And some Python package - a dependency of project - tries to load shared C library. I decided to deal with python dependencies with Python's package manager - pip. But C library needed by this python package - I want to install it as guix package. Note that it
<tribals>doesn't need development files - libfoo.a and include/foo.h - for building "native extension" for Python package. No. It just needs to be able to load it's libfoo.so. Then, I installed guix package for this library "as is" (not specifying any outputs). Unfortunately, python package can't load guix's package libfoo.so. Is there a way to solve this?
<apteryx>150MiB/50MiB sounds low but it seems good for this particuliar fio benchmark; on my home machine it wants 1h12 to run instead of 20 s ^^
<apteryx>with live perf like "[r=960KiB/s,w=336KiB/s]"
<tribals>The guix package I'm trying to use is `gdal` from `(gnu packages geo)`
<zap>tribals: I think for it to work you need to make sure that in the environment you are using for development LIBRARY_PATH var points to directory the where desired .so file is
<zap>but from what you explained it is not clear to me where you're using pip and where guix
<zap>"the where desired .so"->"where the desired .so"
<HONEYPOTTER>How would I go about converting a Debian install to a Guix System install without booting from another device and without preserving any of the old data?
<zap>but all files in /usr and such will be preserved -- they don't have an efect on funcionality of the system. You may just remove them
<tribals>I thought that when you use guix package which provides some shared libs libfoo.so libbar.so, then loader path is adjusted as needed in generated guix profile. This is not the case for profile generated from my manifest.
<HONEYPOTTER>zap: I assume most of those steps aren't required anymore when I use the installation script?
<zap>HONEYPOTTER: I haven't used installation script for a long time -- I think its made for installing guix along side with your system but steps are similar
<unmatched-paren>that would probably kill a ton of things needed for dd to even execute properly...
<unmatched-paren>not sure dd would even let you do that, i know a lot of disk manipulating tools don't
<HONEYPOTTER>Hmm, so I would need a new partition to dd to, then boot from that partition, go through installation, then extend the system partition? zap's recommendation sounds simpler but I am paranoid about junk in my system unfortunately
<zap>its like changing the car's engine while you're driving :)
<unmatched-paren>guix allowed me to be a lot braver with my system because of rollbacks tho... so i'm not as paranoid now
<HONEYPOTTER>zap: then what is live patching? changing the oil while driving? haha
<attila_lendvai>my /etc/guix/channels.scm does not understand (version 0) as advertised in the manual. my guix --version is the latest of master. any hints? i want to specify a custom keyring-reference.
<zimoun_>After "guix pull", I get /gnu/store/28k5yj520zwqx4vn8ijpgz1irq23dp3r-guile-wrapper/bin/guile: error while loading shared libraries: libguile-3.0.so.1: cannot stat shared object: Invalid argument
<HONEYPOTTER>unmatched-paren: oh yeah, that's one of the main reasons I'm switching. But I will still do all updates in VMs until my therapist fixes me.
<HONEYPOTTER>KarlJoad: that's what I figured, but I doubt the image will stay loaded in memory... so maybe the solution is to keep the image in a different partition, dd it over main partition, boot, and let the installer fix up the partition table
<zimoun_>unmatched-paren, yes it was probably me and I do not remember to get an answer. ;-)
<zimoun_>civodul, I do not know how to debug the root of the issue on foreign distro about "error while loading shared libraries: libguile-3.0.so.1: cannot stat shared object: Invalid argument". Any clue?
<rekado>sneek: later tell apteryx I also saw the segfaults; they come from guile-xapian, I think.
<zap>tribals: yea it should I think -- as a last resort you can try to source <profile-path>/etc/profile
<unmatched-paren>HONEYPOTTER: and even if you ruin grub, you just do some good old-fashioned chrooting in a live usb :) (i had to do this once, not because of guix, but because my laptop's proprietary uefi keeps breaking it, and i don't think my laptop's corebootable sadly...)
<zimoun_>civodul, old RedHat 2.6.32-754.35.1.el6.x86_64. It seems it worked couple of weeks ago. At least, I have a working Guix for revision 531a69ec from ~May 2021.
<zimoun_>so no upgrade after core-updates merge, I guess.
<unmatched-paren>i have some extra information about the Nimble /bin/sh of Doom(tm), but it's making me even more confused :( grepping for `invocation of external compiler program failed` in $nim/compiler yields two lines in `extccomp.nim`. one is executed if <number of CPUs> <= 1, and the other is after an else for the same if. the multi-core one is rather cryptic, but seems to be executing the $CC on the generated .c files. I have no idea how t
<unmatched-paren>involves a bourne shell in any way except when it starts a new process, and the new process procedure in the nim stdlib is already patched to use the /gnu/store sh!
<PurpleSym>lfam: sanity-check never calls any functions, but Python allows running code during import, so vorta must be writing there during import, even before the script entrypoint was called. That’s usually a bug.
<lfam>I can set $HOME=/tmp while building the package to work around it. Beyond that, should we do anything about this?
<lfam>It's not a bug that I can meaningfully report upstream, since I don't understand it
<podiki[m]>though maybe my desktop will use btrfs snapshots....unless I'm wasting too much since my home subvol contains mostly stuff that doesn't need backup (can exclude in a snapshot?)
***iyzsong- is now known as iyzsong
<unmatched-paren>how do i copy a file from the build dir to the output dir? i'm trying to do (copy-recursively "nimble" (string-append (assoc-ref outputs "out") "/bin/nimble")), but it reports `No such file or directory`
<Nazar>Hello there, i'm preparing one more package for guix, and this package https://github.com/elastic/elasticsearch have internal log folder, problem is that after install this package, i have an read only file system error. Could someone give me some advice how to resolve this ?
<apteryx>it should be patched to use something like /var/log/ instead
<rekado>or do you mean you want to build it locally and not get a substitute for mc itself?
<rekado>in that case you’ll need to download more than just the runtime dependencies
<rekado>(you’ll need the compiler and all that too)
<nckx>We should definitely honour them. We should also honour root= and friends and phase out or --root= affectations. It's fake shell consistency that serves only to make us inconsistent with the world.
<rekado>if you really want it gone you’ll have to remove the generations that reference mc
<rekado>“guix gc” clear garbage, but a package that’s referenced by an older generation of your profile that you may want to roll back to is not garbage
<SeerLite[m]>Hi! How can I close my own patch on debbugs? I sent a patch for core-updates a few days ago but I missed that it wasn't needed (I compared and made the patch from the wrong branch, core-updates already has the same change)
<rekado>kocio: guix package -l shows you all your past generations
<rekado>SeerLite[m]: send an email to email@example.com (with the correct number, of course)
<SeerLite[m]>Is there a message/command I can send or do I just send an update telling you maintainers to close it?
<kocio>now when I try to build mc without substitutes it still tries to build other packages