IRC channel logs


back to list of logs

<sss1>lilyp: currently i do not have enough knowledge for making contribution
<sss1>for now i want to play with package code, but i do not want to make full copy of package, instead i want "inherit" existing code
<sss1>about contribuitons, i have few attempts, but with little success, i mean i can't make things work )
<lilyp>It's fine, not everything needs to be packaged upsteam.
<lilyp>Guix offers a wide range of (guix transformations), which should make inheriting easier and enable it on the command-line as well.
<sss1>can i have some examples ?
<sss1>maybe some documentation for beginners exists ?
<roptat>sss1, the easiest is to not even create a package, but use a transformation option on the CLI
<roptat>like, guix install foo --with-latest=foo
<singpolyma>Is there a way to make a "channel" that is just a local directory instead of a git url?
<lilyp>singpolyma: file:///
<roptat>or, guix intall foo --with-latest=bar, where bar is a depnedency of foo: it will build the latest version of bar and use it in the dependency graph of foo instead of the guix version
<jab>singpolyma yes.
<jab>let me find the relevant manual for you....
<jab>Use the environmental variable GUIX_PACKAGE_PATH. I'm not certain if you can define services that way though...
<singpolyma>I don't need services. Thanks for the pointer!
<jab>singpolyma yup. That's what I use to define my jmacs package locally. If it build successfully, then I'll push it to my channel.
<lilyp>can channels define services?
<jab>lilyp yes. :)
<jab>I'm pretty sure.
<lilyp>well, meaningfully maybe
<lilyp>you're still on your own with the use-modules calls
<awb99>I have written trezord-service-type, and the guile script for it compiles.
<awb99>now I want to test it, without adding it to the os.
<awb99> (register-services trezord-service-type)
<awb99>; (start trezord-service-type)
<awb99>both of this commands fail.
<jab>awb99 Does it give you any relevant error messages?
<sss1>roptat: --with-latest often does not work, for differentr reasons, so i need some way to override few package attributes, but do not touch the rest
<awb99>No applicable method for #<<generic> provided-by (1)> in call (provided-by #<service-type trezord 7f8c333a3c00>)
<awb99>No applicable method for #<<generic> start (2)> in call (start #<service-type trezord 7f5f0f132340>)
<awb99>the second line is for (start trezord-service-type)
<lilyp>awb99 service-type records aren't 1:1 shepherd services
<sss1>roptat: it's also sometime nice to be able to disable some unwanted package features
<lilyp>you'd have to `guix system build` the os still and then launch that system's shepherd
<lilyp>alternatively, it's often easier to just try a vm
<awb99>lilyp - do you have a vm config example?
<lilyp>awb99: take your existing config.scm, add an initial password to your user and boom, done
<sss1>can i have something like this in guix ? (it's user profile config, not global one)
<sss1>i am sure i can, just do not know where to search for info
<awb99>guix environment --container -machine.scm
<lilyp>nope, guix system vm
<lilyp>though system container also exists for more lightweight stuff IIRC
<roptat>sss1, with "guix home" which just landed in guix, probably?
<roptat>sss1, I think then you want to create a package that inherits the package you want to update
<roptat>you'd create a file with something like (package (inherit the-package) (version ...) (source ...))
<sss1>does any examples exists ?
<roptat>there are plenty examples of inheritance in the guix repo if you need to find some inspiration
<roptat>here's a very simple example:
<sss1>what exacly "guix home" does ?
<dstolfa_>sss1: it's like guix, but for your dotfiles and stuff :)
<roptat>I think it's very similar to nix-home
<sss1>i am not familiar with nix-gome also )
<roptat>oh, I thought you'd be, since you sent what looks like nix code
<sss1>pated config is .config/nixpkgs/config.nix
<sss1>as far as i understand this config applied to nixpkgs
<sss1>user defined changes
<roptat>oh, ok
<roptat>that's not how it works in guix
<roptat>you have to explicitely rewrite the dependency graph by using a different package
<sss1>so, i can define new package and via (inderit ..) can use all variables from unherited packages ?
<sss1>also, related question
<sss1>for now i have found one way to install package from custom scripts, and it looks a bit awkward
<sss1>GUIX_PACKAGE_PATH=../share/guile/site guix package -f mpd.scm -K -i mpd
<sss1>probably some better way exists ?
<sss1>roptat: guix home looks also interesting )
<awb99>I managed to run guix system container - but when I do "guix build trezord" it complains that it is a read only file system.
<awb99>and on "ls /gnu/store" it complain it does not have enough ram
<robin>dstolfa_, doesn't guix home have something to do with services, too? (given the guix-devel thread about module naming)
<dstolfa_>robin: yes, similar to how you would specify systemd user services, you can do with guix-home + shepherd
<robin>that's great, i remember reading about a hack to do that and always hoped that functionality would be properly integrated someday
<robin>(managing dotfiles isn't really interesting to me, i can do that with git and a 30-line makefile :))
<robin>(although i'll look into the guix-home docs, maybe i'm missing something!)
<drakonis>well, it would let you do some cool stuff like syncing your dotfiles with a service
<drakonis>every day, a little closer to bringing lisp machines back to life
<robin>one day...
<robin>that reminds me, i need to get opengenera working on guix (purely for "digital archaeology", i know it's nonfree)
<robin>as you'd expect it has some odd requirements
<robin>(i've mentioned it here before, but unless my reading of the law and license is totally wrong, the US federal government could liberate opengenera tomorrow. i promised to start a petition for that if sanders won, that didn't happen but maybe it's still worth trying)
<robin>i'm pretty sure a petition to get the federal government to do anything not obviously in the interests of capitalists would require a huge number of signatures, and i honestly don't know if enough people care to fill in a form and click a button
<robin>care enough*
<lispmacs[work]>so, I've already got a large manifest file with channels, inferiors, and packages. How does that related to the packages in my guix-home declaration
<robin>10k signatures is probably a realistic guesstimate of the response, and is also probably too low by a factor of ten or more...
***califax- is now known as califax
<radvendii>the #:source argument is supposed to be a store path, yeah? is there a way to turn an origin... whatever they are into that store path?
<radvendii>maybe i'm going about this wrong. i was trying to do load a bunch of `origin`s as `inputs`, and then add a phase to `unpack` them all
<radvendii>but i realized i actually need an extra piece of information for each one
<radvendii>so i tried to turn it into just a normal list (not in `inputs`) and add the extra argument there
<radvendii>here's a simplified example:
<zamfofex>radvendii: I think origins can only be used as sources for packages. (If I remember correctly, the name “origin” was chose instead of “source” to avoid naming conflicts or something similar).
<zamfofex>If you have an origina, you should use it to establish a package first, then use those packages as inputs.
<radvendii>but then how do i keep around that extra argument?
<radvendii>also there's a whole bunch of extra things that get passed in as inputs that i don't want to unpack
<radvendii>fwiw, i found `derivation->output-path` and `origin->derivation` but the former doesn't seem to accept the output of the latter as an argument
<zamfofex>radvendii: You can specify the argument on its own package definition.
<radvendii>how do i get that from the package that has it as an input?
<zamfofex>What do you mean?
<zamfofex>You should create a package for each “origin” you have, then specify the import path in the arguments of each such package.
<radvendii>right, but i'm trying to unpack them all in one package
<radvendii>and then build there
<radvendii>i know this is not ideal
<radvendii>but other methods are not working, and i want to see if this will
<zamfofex>I don’t think that this is possible ideomatically, and if it is possible at all, I don’t think it’s easy.
<iskarian>sneek, later tell apteryx: I also see that weird corrupted CVE output while linting
<radvendii>by the way i can put `origin`s directly as `inputs`, without wrapping them in `package` first, so i feel like they should be manipulable like packages
<radvendii>but maybe that's a special case?
<zamfofex>radvendii: What was the issue you were facing when trying to establish multiple packages?
<radvendii>the short answer is `go` uses cyclic dependencies, and `guix` doesn't seem to like that
<radvendii>i should specify at the *module* level `go` allows cyclic dependencies
<radvendii>which is the level that guix seems to package at
<radvendii>i've been told we've run into this issue in `nix` as well, and the solution was to just dump everything into one source tree and let go deal with it
<singpolyma>Guix doesn't really handle go modules yet
<radvendii>oh. huh. there's a lot of go packages in the guix repo and `guix import go` exists. that's kind of a bummer
<zamfofex>radvendii: How do the dependencies get resolved in Go? If “a” depends on “b” and vice versa, what would you do when bulding either? Do you need to rely on a binary version of the other existing?
<singpolyma>guix import go and go-build-system use GOPATH style builds
<radvendii>zamfofex: there's a lower level of resolution that doesn't allow cyclic dependencies
<radvendii>singpolyma: i'm not sure what that means. sorry, i'm new to go and guix both
<singpolyma>Basically go didn't used to have a module system and everything was based on directory structures that mapped to GitHub urls all in the same one folder
<singpolyma>And and style still works if you set an environment variable to disable modules, which guix currently does
<singpolyma>If I understand correctly you don't really need a cyclic dependency, each just needs the source of the other present at build time, yeah?
<radvendii>yeah, so that's what i'm trying to do. put all the sources in one place
<singpolyma>If you specify the input as just the source of the other package instead of the while package that will break the guile level cycle yeah?
<singpolyma>And then you just need the environment variable set right?
<radvendii>what do you mean "the source of"? like the (origin) field?
<singpolyma>Like there must be an accessory to extract the source/origin of a package
<singpolyma>Hmm, maybe that doesn't work in guile. I'm too spoiled by lazy evaluation. Might have to put the origin in a separate variable and reference it directly
<radvendii>I'm starting to think I can maybe just remove the `build` and `check` phases of everything except the last package and it might just work?
<radvendii>because what i didn't realize is it copies the source into the output
<singpolyma>Oh, sure, that will work if you just want it to build. The binaries aren't used
<radvendii>yeah. wait what else would i want to do?
<singpolyma>Contribute the package?
<radvendii>ohhh lol
<iskarian>The usual solution to cyclical package dependencies in Guix (A <> B) is to make a package A' so that A' < B < A
<singpolyma>If it's just for you, by all means turn if the builds for go inputs, they just take up time
<radvendii>gotcha. well i was thinking of putting a `guix.scm` file in the repo so other people can build it
<radvendii>just like it has a `default.nix`
<radvendii>is that bad form for guix?
<singpolyma>No, I do that too. Though I can't call it guix.scm because I use a guile kodule
<radvendii>what do you mean? is there a better thing to call it? way to organize it? i'm open to revising this idea
<singpolyma>The problem is just that if you have a module in the file the module name has to match file name
<singpolyma>And module name guix is kinda taken
<radvendii>ohhh lol
<singpolyma>But if it's just an expression in the file you can call it whatever
<radvendii>for now it's just an expression, but that's good to know because in the future it will probably be a module
<singpolyma>Yeah, mine are all modules because I have lots of inputs that haven't made it into guix yet, so I keep them in there too
<radvendii>is there an easy way to build one of the outputs from a module?
<radvendii>i've been using `guix build -f`, and i couldn't figure out a way to build a specific one
<singpolyma>One of the defines you mean?
<radvendii>so i've just been putting the one i want at the end of the file
<radvendii>yeah the defines
<singpolyma>guix build -L. pkg-name
<radvendii>oh -L. loads the .scm files in the current directory
<singpolyma>Yeah, so then it actually doesn't even matter what the file is called to run the command
<radvendii>mm cool cool
<singpolyma>Works for guix environment -L. pkg also
<radvendii>what should I call the "no build / check" packages?
<singpolyma>Probably just name them like normal? Ideally the builds could get turned back on in future
<radvendii>oh i mean if i'm trying to break the dependency cycle so i can upstream
<radvendii>I was thinking I would have A' be A but not building/checking so that B can depend on it to build
<radvendii>and then A can depend on B to build
<singpolyma>I think A' could just be the origin of A in this case?
<singpolyma>Can inputs take an origin?
<radvendii>hmmm. it has to be put in a specific directory
<radvendii>which is determined by `#:input-path`
<radvendii>hence where we started this conversation :P
<singpolyma>Just needs the env var set right
<radvendii>what env var?
<singpolyma>You don't want the source in your unpack dir
<singpolyma>But doing it your way as a neutered package should set the paths for you automatically, so maybe that's a better idea anyway
<singpolyma>A' can just inherit A and kill build/check like you said
<singpolyma>And be a define not define-public probably but that's not my area to know what people would prefer
<radvendii>ah gotcha. how do i do that inherit?
<singpolyma>(package (inherit A) (arguments...
<singpolyma>Assuming that won't cause the cycle again :P otherwise you'll want to share the code between them some other way, procedure that returns a package maybe
<radvendii>oh hm. i'll test it out, thanks
<singpolyma>Sorry, too much Haskell I always forget just typing a variable name can do things in other languages
<radvendii>yeah, i feel you
<radvendii>coming from nix / haskell
<radvendii>nix & haskell*
<radvendii>so i know the pattern `(modify-phases %standard-phases)`. how do i get the phases of `pkg` and modify those?
<radvendii>(the package that I'm inheriting from, if htat matters)
<iskarian>radvendii, look for 'substitute-keywords-arguments'
<iskarian>sorry, 'substitute-keyword-arguments'
<iskarian>(no extra s)
<radvendii> yep, found it. thanks
<radvendii>is it bad form to just neuter all the cyclic inputs? As in, if `A <-> B`, making A' an input to B and B' an import to A
<radvendii>it's not strictly necessary, and makes there be more overall packages floating around
<radvendii>but i think it makes the code slightly cleaner
<radvendii>hmm no wait it doesn't solve my problem never mind
<radvendii>i'm pretty sure the go builder copies all the files (or at least symlinks) rather than setting GOPATH. because if i have two inputs that have the same import path and files (A and A') it complains about permission denied to copy
***CodeKiwi is now known as DigitalKiwi
<jackhill>What code is powering sneek?
<sneek>Welcome back jackhill, you have 1 message!
<sneek>jackhill, maximed says: what do you think of
<jackhill>sneek: later tell maximed I think you pinged me about the wrong issue, is an emacs bug
***charles_ is now known as char
<xd1le>hi guix
***aweinsto1k is now known as aweinstock
***seeg3 is now known as seeg
<mothacehe>hey guix!
<sneek>mothacehe, you have 1 message!
<sneek>mothacehe, maximed says: do you have an update on <>?
***jpoiret1 is now known as jpoiret
***seeg1 is now known as seeg
<civodul>Hello Guix!
<maximed>sneek: later tell jackhill: oops, see instead
<sneek>maximed, you have 1 message!
<sneek>maximed, jackhill says: I think you pinged me about the wrong issue, is an emacs bug
<sneek>Will do.
***duds-_ is now known as duds-
<abrenon>good morning guix
***sneek_ is now known as sneek
<asdf-uiop>Hi! Is it normal that `guix home reconfigure home.scm` results in an error because it cannot create `/gnu/store/...-home`? I assumed user privileges should be enough for `guix home`.
<asdf-uiop>Thanks for including it! It was what I was looking for when I started using guix.
<civodul>hi asdf-uiop!
<civodul>this looks like a bug; could you email the details to
<asdf-uiop>Sure! Thank you for the quick reply! Needing `sudo` for `guix system reconfigure` is normal though, right?
<maximed>asdf-uiop: For "guix system reconfigure", yes, but not for "guix home reconfigure"
<abrenon>asdf-uiop: yes it is
***abrenon1 is now known as abrenon
***GNUcifer is now known as cehteh
<lilyp>there's still a lot of infancy bugs in guix-home sadly
<lilyp>for instance, guix home import produces incorrect files
<civodul>lilyp: there are "guix home import" patched by yoctocell, i haven't yet taken a look
<lilyp>yeah, I know, just observing
<civodul>i you have spare cycles, feel free to review & apply :-)
<janneke>abrenon: but that's a bug, then
<brendyn>I git cloned a channel and switched to using file:// to refer to it locally, that way i can update them manually. but with an introduction, i get cannot locate remote tracking brach origin/keyring. any idea how to make that work for a local channel?
<lilyp>civodul As Andrew Tropin observes, that series is not complete, because slurp-file-gexp is missing
***duds-_ is now known as duds-
<abrenon>janneke: what is ?
<janneke>abrenon: if sudo is needed for guix home reconfigure
<abrenon>possibly, I don't know anything about guix home, and I haven't made any claim about it
<abrenon>there's been some network noise around the time, so you (or I) may have missed a couple lines
<abrenon>but my reply was intended as a reply to: 10:56:58 asdf-uiop | Sure! Thank you for the quick reply! Needing `sudo` for `guix system reconfigure` is normal though, right?
<abrenon>there were arrivals and departures from the chan but not anything else said between that message and mine on my local view of the conversation
<janneke>abrenon: ah, right. your remark here came right after
<janneke><maximed> asdf-uiop: For "guix system reconfigure", yes, but not for "guix
<janneke> home reconfigure" [11:04]
<janneke>which confused me, sorry for the noise
<abrenon>don't worry, I expected something like that : )
<abrenon>yeah, in that order my message clearly deserved a clarification ! thanks for making sure of that
<wigust>hi guix
<lilyp>abrenon: no
<lilyp>don't sudo your home
<abrenon>I don't, don't worry but thanks for your message
<abrenon>you apparently had the messages in the same order as janneke did
<lilyp>for guix system reconfigure, sudo is needed to install the bootloader
<lilyp>you can actually do much of it outside of sudo if you guix system build your config.scm normally first
<abrenon>(I haven't had time to give guix home a real try)
<lilyp>No one has, it seems you still need stuff that is currently in another channel for it to work
<lilyp>IOW it was somewhat uncleanly merged
<abrenon>ohh I see thanks for that info
<abrenon>I though I was still the only one not having moved to that instead of my crappy never-clean git repos for $HOME ^^
<civodul>hey wigust!
<civodul>we're getting but reports for Guix Home :-)
<civodul>not sure if you had a chance to see them?
<lilyp>civodul: how does `guix package' know that ~/.guix-profile ought to be updated in per-user and not elsewhere?
<civodul>lilyp: yes (IIUC)
<lilyp>*how* does `guix package' know?
<civodul>the code would tell you more :-), but essentially ~/.guix-profile is special-cased
<lilyp>I want to generalize that mechanism to multi-profiles
<civodul>ah, oh
<civodul>so that there's a special profile directory?
<woffs>Hi. Want to try guix but the gpg key the iso is signed with (27D586A4F8900854329FF09F1260E46482E63562) has no user id and gpg refuses to import that key :-D
<civodul>woffs: hi! you can get that key from
<civodul>so "wget -qO - | gpg --import" should do
<lilyp>civodul so that I can have ~/.guix-more-profiles/emacs -> /var/.../per-user/$USER/emacs
<lilyp>and then have all the emacs-N symlinks there
<civodul>ah ok, i see
<lilyp>It seems that %known-shorthand-profiles is the variable in control here
<woffs>thanks civodul, worked. it was just the default keyserver which refused to tell the user-id. Maybe a link to that key source should appear somewhere on the website.
<civodul>woffs: it's mentioned at, linked from
<civodul>two clicks away though
<civodul>for the French-speaking folks here:
<woffs>civodul: you're right. :)
<nckx>Morning Guix.
<nckx>jackhill: Bobot++ with the Guile (naturally!) extension.
<civodul>moin nckx
<sodi[m]>gnu@guix ~$ umask 077... (full message at
<sodi[m]>What happened? :|
<maximed>sodi: What are the permissions of private.key?
<maximed>umask doesn't modify the permissions of already existing files
<maximed>so you might need to delete private.key first
<maximed>or chmod it
<nckx>Plus, I'm not familiar with ‘wg genkey’. sudo > looks weird. You're generating a key as root (why?) but writing it as you.
<nckx>s/. sudo/, but sudo/
<maximed>‘wg genkey | sudo tee the-file’?
<nckx>You'd usually want to do the opposite, e.g., $ wg genkey | sudo tee /etc/foo
<nckx>Yes :)
<sodi[m]>maximed, nckx, Thanks
<roptat>hi guix!
<abrenon>hello roptat
<roptat>I'd need another pair of eye on to make sure I didn't add any problematic files
<roptat>then, I'll be able to push and update weblate, adding the missing translation units
<apteryx>is it me, or we've now recovered pre-freenode fiasco level of attendence in #guix here? :-)
<sneek>apteryx, you have 1 message!
<sneek>apteryx, iskarian says: I also see that weird corrupted CVE output while linting
<apteryx>iskarian: thanks for confirming!
<awb99>does someone have a system config that only has terminal / shell access. I need this config so I can run guix vm.
<civodul>hey apteryx, looks like it!
<civodul>or maybe slightly less still
<roptat>awb99, you mean with no xorg?
<roptat>this is the base os declaration I use:
<roptat>basically, you use %base-services instead of %desktop-services
<roptat>you can start from the bare-bones system too:
<roptat>thanks civodul :)
<awb99>thak you roptat!
<civodul>yw :-)
<awb99>how do I have to run a guix vm, so tht I can install packages inside the vm? I always get read-only filesystem errors.
<nckx>apteryx: I'd say so! Confused real humans stopped joining the ‘Freenode’ #guix channel long ago. I think we got them all.
<nckx>Any remaining difference with old ‘Freenode’ is likely just the forgotten idling BNCs we'd built up over the years ☺ It'll happen here too.
<vivien>civodul, "Ces paquets sont trivialement importables grâce à guix import depuis les autres gestionnaires les plus populaires : npm, cargo, etc. " Last time I checked, importing anything from NPM was impossible.
<vivien>Is it still the case?
<roptat>awb99, maybe "guix system image -t qcow2 ..."
<roptat>qcow2 is the format for qemu, then you can move the result out of the store to make it read-write
<apteryx>nckx: hehe
<apteryx>seems our pypi importer should transform - into _ again (this is a topic that seems to depend on the phase of the moon -- in the past there was a mixture of them, later it became only '-' on newer servers, now it seems purely '_')
<civodul>vivien: the npm importer is not in Guix proper yet, so you're right and the article is wrong
<civodul>but there are discussions about finally merging it
<civodul>(jlicht wrote the bulk of it years ago)
<jlicht>hello o/
<vivien>Hello jlicht
<vivien>Congratulations for writing (or having tried to write) a guix importer for NPM
<jlicht>the hardest part was done by Timothy T.
<sodi[m]>Could someone be kind enough to publish their Wireguard config? :)
***pushcx_ is now known as pushcx
<roptat>sodi[m], sorry, looks like nobody here uses wireguard (or wants to publish their config), do you have more specific questions? is the doc confusing/lacking somehow?
<roptat>if you haven't seen it, there's an example here:
<roptat>(I don't use wireguard, so that's the best I can do, sorry)
<apteryx>sodi[m]: I use wireguard; I'd recommend grepping in the guix-maintenance repo for examples
<apteryx>mothacehe also authored some doc in that context
<apteryx>it's in doc/
<sodi[m]>roptat: Thanks for your reply
<sodi[m]>Everything is fine, I just wanted to see a user's config to better understand it…
<apteryx>wireguard is straightforward but there's one gotcha that I lost some time with originally: the connection is lazily made; e.g. it won't exist until some traffic needs to go on it
<apteryx>so make sure to ping one of the virtual IPs before you inspect the 'sudo wg' output
<apteryx>another thing that makes it near useless for me at the moment is that it doesn't cope with dynamic IPs by itself
<sodi[m]>Thanks apteryx
<apteryx>so use IPv6 or a static IP
<apteryx>we should add some custom tooling to our service that'd workaround that limitation (it's commonly done with external scripts, so I've heard)
<sodi[m]>apteryx: 👍
<apteryx>(keepalives help with dynamic IP, but it's not enough by itself -- should the link be severed while the IP changes, it's game over)
<apteryx>the other way around makes more sense (the IP changes while the link is down :-))
<jackhill>sodi[m], apteryx: here's the config I'm using on the one host where I use our service (on all the other ones, I use NetworkManager):
<sneek>Welcome back jackhill, you have 1 message!
<sneek>jackhill, maximed says: oops, see instead
<jackhill>I make no claim about the quality of this configuration though.
<jackhill>apteryx: I think the dynamic IP stuff works ok as long as only one side of the link is changing addresses at a time :)
<jackhill>I would like to package innernet, but I haven't worked myself up to dealing with all the rust yet, and I think it would need to allow configurable IP detection and not depend on cloudflare
*dstolfa_ read that as jackhill wanting to package the internet and was mildly confused
<lilyp>guix build --source
<nckx>The FSDG cleaner script takes forever.
<awb99>is there anything equivalent to journalctl in guix ? I would like to be able to see logfiles in a better way; ideally by service.
<awb99>how can I get the console output of the services daemons then?
<awb99>I am testing a service that I am adding,
<awb99>and it appears that its console output appears in the vm console (before login),
<nckx>I don't think that such output is captured.
<nckx>Perhaps there are helpers to explicitly redirect std{err,out} to a log file?
<nckx>(Tremble in awe of my deep knowledge of Shepherd servification, but it's not like anyone else is answering…)
<awb99>Thanks nckx!
<maximed>Not sure about the exact argument, but it's something like #:log-file "/var/log/stuff" IIRC
<awb99>guix is really an awesome os.
<awb99>But it is really hard to get it going.
<awb99>Especially since there are so little examples out there.
<nckx>I mean, I don't agree with ‘really hard’ (tho' respect your opinion), but a level of dogged persistence is certainly required.
<apteryx>jackhill: seems like some simple Guile glue should be able to do it, which would be preferable in my opinion :-)
<jackhill>apteryx: uh, I think I missed something, you mean re-implement innernet in guile?
<jackhill>maximed: wow, thanks for picking up my random wish in IRC, and offering a fix. I'm looking at the patch/testing it now
<apteryx>I haven't read what 'internet' is supposed to be, but I meant for force-updating the wg link when the IP of the remote changes
<jackhill>maximed: I will reply to the ticket with my thoughts
<podiki[m]>awb99: I haven't done anything fancy, but did want to do the same thing. used bash redirect with logger to get syslog
<podiki[m]>awb99: see for a user shepherd example
<jackhill>apteryx: ah, yes, I see. I guess a host should ping all its peers when its IP changes
<podiki[m]>for a system service I guess you could do something similar if it doesn't have a logfile you can specify
<podiki[m]>but agreed that journalctl is quite nice that we don't have a replacement for (and would be different with shepherd vs systemd)
<singpolyma>Isn't journalctl just logging? I'll admit I've never used it, since I'm on Debian
<podiki[m]>this could be useful too
<lilyp>singpolyma: "just logging" is a weird phrase when every other project feels the need to reinvent it
<awb99>thanks a lot podiki
<podiki[m]>(no idea how journalctl works under the hood)
<singpolyma>Do they? I've mostly just seen logfile or syslog
<podiki[m]>welcome awb99! hope that helps, it is basic but is enough for me to get started
<lilyp>that's a pretty low-level view
<lilyp>name me any bigger project and I can assure you it has its own logging primitives, perhaps built on another project's logging primitives
<singpolyma>What is a "logging primitive" in this context?
<awb99>podiki - you have a shepherd user config. how does that get started?
<lilyp>int log(int level, const char *message, ...)
<podiki[m]>awb99: right now I just run shepherd manually, but I was just going to add it to my xinit or xmonad config (you can see the full shepherd config at the link I sent before)
<podiki[m]>so that it runs under my user upon logging in to an xsession (which is what I want for the services I have there currently)
<lilyp>plus every programming language ships its own mechanism too (with the exception of C/C++ maybe)
<lilyp>Consider for example writing a GLib application in Python, now you have two logging systems
<awb99>I am struggling with this auto-start scripts too, podiki.
<podiki[m]>some of us here have had a long convo about autostart desktop files too (autostart is a bit of a mess in general)
<lilyp>does xmonad not respect config/autostart?
<podiki[m]>but this shepherd user process is fine, I just haven't added the one line in my config to start shepherd
<podiki[m]>I use dex, since I run a bare WM
<podiki[m]>dex will go through the XDG locations, and you can specify a session name (since some autostarts are only for eg. gnome)
*janneke submits guix home bug about sudo'ing into guix-home managed account
<podiki[m]>I guess on Guix I should consolidate all (user) autostarts to shepherd eventually; dex is handy though if you are not in a full DE
<lilyp>Consolidating your autostarts is no requirement, but it can be useful.
<lilyp>I think a similar argument exists for systemd
<podiki[m]>(I'm simultaneously working on a more robust desktop file autostart for python-autokey, which I will submit a package for once it is done)
<podiki[m]>or I guess consolidate through the XDG spec, so everything is .desktop files
<podiki[m]>what I like about going via XDG is that it is more cross compatible between my computers (one on Guix, one not)
<jab>Hey guix people!
<podiki[m]>( lilyp I'm guessing you are the same as who I've been emailing back and forth about this with syncthing-gtk. hi!)
<lilyp>Hi, the syncthing-gtk thing is a different issue
<lilyp>You should be able to symlink ~/.config/autostart/syncthing-gtk to ~/.guix-profile/share/applications/syncthing-gtk as a user, for instance
<podiki[m]>you mean the desktop file?
<lilyp>it's not the fine functional variant to be sure, but still cleaner than relying on syncthing-gtk to do the right thing
<podiki[m]>hmm, the desktop file should be fine like that, you are right (I don't think there are any real changes in what it wants to create from the base desktopfile)
<podiki[m]>hrm, and then I could patch syncthing-gtk to just create/remove the symlink instead. interesting
<lilyp>but it wouldn't create the right symlink!
<lilyp>it'd still link directly into the store
<podiki[m]>it would have to link to /path/to/profile/share/applications/syncthin-gtk still, right
<makx>mhm, how can I get the dhcp client in guix to send a hostname?
<civodul>not sure, but it's ISC's DHCP client, the same you'd find on most systems
<podiki[m]>is there a way to use package transformations to build a package with a transformed (like updated source) input (just via guix build, not new package def)
<podiki[m]>e.g guix build package --with-latest=package --with-latest=inputpkg ?
<podiki[m]>(that doesn't change the inputpkg)
<lilyp>podiki[m]: I don't think that'd work, you'd have to do --with-input=inputpkg=inputpkg@latest where @latest refers to the thing you'd create from transforming --with-latest=inputpkg
<lilyp>I don't think that works on the CLI, but it might work in Scheme source
<podiki[m]>yeah, I wasn't having luck doing it in a one liner
<tissevert>hi guix !
<tissevert>long time no see, sorry about that
<roptat>hi tissevert :)
<tissevert>roptat: how are you ?
<roptat>good and you?
<tissevert>so tired… there's a reason why I haven't even had the time to log on to my VPS and notice my IRC client wasn't running for about a month ^^
<tissevert>I'm only starting to get a little time this week
<tissevert>still needs to clean some code of mine before packaging it for Guix
<radvendii>is there an existing way to parse toml to some kind of guile struct?
<maximed>radvendii: Maybe grab a parser for Python, use python-on-guile, and write some macroology to define procedures for putting the data in a struct, à la define-json-mapping?
<tissevert>roptat: what can be done if a @var{…} seem to be missing around a word in the original english version of a string to translate in weblate ?
<roptat>you can add a comment to the original string
<roptat>I'll try to look at them and propose a patch at some point...
<roptat>you can translate with or without, however you like
<tissevert>I prefer without, to keep the translation in sync with the current english string
<tissevert>still only 98%… the translation coverage is so slow to move ^^'
<roptat>yeah, the manual is pretty big :)
<g_bor>hello guix!
<g_bor>yesterday something stupid happened to me.
<g_bor>around midday utc certificate validation of melpa from emacs was failing
<g_bor>also from conan
<g_bor>both looked ok from browser.
<dstolfa_>g_bor: it's first of october. certificates need updating :)
<dstolfa_>g_bor: you can simply google "first of october 2021 letsencrypt" to see how many things fell over
<drakonis>awb99: regarding a lack of a journalctl equivalent, i'd say it is that nobody has done the work for building an equivalent
<apteryx>mothacehe: any clue if the staging branch was merged into core-updates-frozen, or if it's been abandoned?
<apteryx>radvendii: alternatively, you could have a pet project (guile-toml ?) which would implement the parser using the PEG facilities of Guile
<apteryx>my knowledge of TOML is pretty nonexistant, I'm not sure of how sound a plan that would be, so take it with a pinch of salt
***nf is now known as nfernal
<lilyp>It'd be between an INI file and a JSON parser IIUC
<radvendii>hm. I've gone the worst route I could think of, which is to write a very dumb perl script to regex my way out of the problem
<radvendii>fortunately, the toml files are also generated, so they're very well-behaved
<lilyp>If it looks stupid but it works, it ain't stupid.
<radvendii>i mean it's severely non-robust, but i really just want to make sure what i'm trying to do works in the first place
<radvendii>i'll clean it up after (said everyone who didn't clean it up after)
<singpolyma>radvendii: if you're already at that level you could also exec a toml to json script
<Guest53>Hello Guix! .. Would anybody happen to know how to make a user ssh-key available to a system service in Guix? Basically looking to do something like this:
<apteryx>I'd say by extending the ssh-service-type with that key
<Guest53>apteryx Cool. Let me try that!
<drakonis>inspiration besets me
<drakonis>time to write a command
<drakonis>rather, attempt to implement named environments
<apteryx>drakonis: :-)
<drakonis>i have a few use cases for it
<Guest53>apteryx: Do you mean adding a key to authorized_keys? This isn't quite equivalent is it? I would like a private repo deploy key to be accessible to a system service so it can git clone per se
<drakonis>in particular being able to script container environments that can be registered for specific packages
*civodul started to work on "guix shell"
<yoctocell>civodul: what would the difference between "guix shell" and "guix environment" be?
<civodul>yoctocell: primarily "--ad-hoc" would be the default, plus a few other things
<civodul>i'll post an RFC soon
<civodul>we discussed it long ago but it was never implemented
<yoctocell>ah, yes, having to type "--ad-hoc" all the time is annoying
<apteryx>Guest53: ah, I got your problem in reverse
<apteryx>it should be a matter of adding the known user SSH key to the wherever the service keeps track of it?
<Guest53>apteryx: Definitely, it's a cuirass service .. but I don't see anything there. I even added the system .pub key as a deploy key, that didn't work either :-/
<Guest53>Basically, under the hood it's a git-checkout feature of guix that is being used
<Guest53>Looks like even more under the hood this is linked to libgit2 bindings inside guile-git
<Guest53>I really have no idea how to tell it to use a key pair
<Guest53>civodul any idea?
<apteryx>perhaps mothacehe would know, they've worked the most on cuirass
<Guest53> .. I found this, and looks like there is some talk about this, and is unclear if it's ever handled, there is a mention of cuirass there as well
<ixmpp>sneek: later tell abcdw hi, so what's the plan for home, i notice some rde home-services still missing from guix
<sneek>Will do.
<civodul>Guest53: hi! i think i missed the beginning, but the basically libgit2 can talk to your ssh agent
<civodul>is that what we're talking about?
<Guest53>But how? If I am running Cuirass as a service, then it won't be MY ssh agent, if you see what I mean
<civodul>ah, then in that case, it can't talk to your agent; instead, you should use a passphrase-less SSH key
<Guest53>I have a passphrase less ssh key
<civodul>wait, i think i'm confusing Guile-SSH's and libgit2's behavior
*civodul looks for an example
<Guest53>Basically, when I invoke cuirass manually from my shell, git-checkout works as expected. However, when I run cuirass as a service, I am not quite sure what ssh-agent it has access to
<civodul>i know things like (git-checkout (url "") (commit commit)) work
<civodul>that's about all i can say
<civodul>oh mothacehe was here
<Guest53>lol .. you mean when invoked as a service or as a user?
<civodul>well, that's when using the guix CLI directly, not when using Cuirass
<Guest53>yes. I can confirm that works
<civodul>do you have messages in the Cuirass log?
<Guest53>2021-10-01T13:56:26 Git error while fetching inputs of '4dstem': "error authenticating: no auth sock variable"
<Guest53>I need to share the auth socket with the system
<Guest53> .. and that's what they do in this link here using systemd?
<Guest53>fwiw, git-checkout also works with Cuirass (when cuirass is NOT being run as a service, because it is running with the ssh-agent that I invoked in my shell prior to running cuirass register)
<Guest53>As it has access to my SSH_AUTH_SOCK shell variable which holds the key that has been added
<civodul>Guest53: yeah, so i guess it requires connection to an SSH agent, which is why it fails when running as a service
<Guest53>Is there a way to set environment variables for services?
<Guest53>maybe a way would be to launch the agent and set the SSH_AUTH_SOCK?
<Guest53>even if it is with the system keys
<apteryx>it's nice that it supports SSH_AUTH_SOCK, but it shouldn't be the only way; perhaps it could consult a file keeping authorized keys also. If that'd suite your use case better, I'd consider implementing such feature to Cuirass if I were you
<Guest53>apteryx The problem is a little deeper. Guile-git is a wrapper around libgit2. And libgit2 doesn't have some of those features
<Guest53>so I don't exactly know where the problem is
<apteryx>the fun of debugging various layers of indirection :-p
*apteryx locally merged master into staging, then wonders why it seems to rebuild the world
<apteryx>or perhaps it doesn't, but it at least rebuilt subversion and git as part of 'make as-derivation'
*apteryx merged master into staging
<apteryx>I'll try resolving an issue I saw with gdk-pixbuf(+rsvg) on staging, and after that I'll be looking to merge it into core-updates(-frozen)
<ngz>Hello. OOC, is anyone trying to bump Rust to 1.54?
<apteryx>it's lined up for a merge already to core updates frozen
<apteryx>(with the reduced rust bootstrap)
***nfernal is now known as nf