IRC channel logs

2024-09-25.log

back to list of logs

<poddo3>is javac not packaged?
<ieure>poddo3, It's in the openjdk package, same as every other distro.
<poddo3>hmmm
<poddo3>maybe I'm installing it wrong
<robin>poddo3, you might need openjdk:jdk instead of/in addition to openjdk
<robin>(which, i just checked, includes javac)
<poddo3>interesting
<poddo3>say I need javac for a build phase,  usually I use the variable name in inputs
<poddo3>in this case the variable name is openjdk17
<poddo3>how do I get the equivelant of openjdk:jdk
<robin>hmm
<poddo3>I guess its like this: `(,openjdk17 "jdk")
<poddo3>magic incantation to me at this point lol
<robin>oh, yeah, that's how you get it into the package inputs. i thought you were asking about finding that input from within the package definition :p
<poddo3>tbh finding stuff from all directions seems to be my problem xD, but it might be because im new and its not easily searchable for me
<robin>it's definitely not always obvious where to look for details like that :)
<poddo3>is this the proper way to recursive clone? (uri (git-reference
<poddo3>           (recursive? #t)
<poddo3>I ask because it doesnt seem to be working
<jaft_r>poddo3: That /should/ be correct; it's how I've done it, in past packages.
<poddo3>is there something I need to  refresh, it fails super quick, likely has the previous clone already
<mange>Have you changed the hash in your origin? If the name and hash are the same, Guix will just use the value already in the store.
<poddo3>oh, right
<poddo3>wait,
<poddo3>are submodules pinned to git hash?
<poddo3>they must be right
<mange>I mean the (sha256 (base32 ...)) bit. The submodules are part of that hash.
<poddo3>no I understand
<poddo3>it just prompted me to wonder if someone updating a submodule could break it
<mange>Git submodules are pinned to a specific hash of the referenced repository, so it shouldn't.
<poddo3>cool
<zamfofex>poddo3: Maybe a bit of “demystifying”, your `(,openjdk17 "jdk") is equivalent to (list openjdk17 "jdk") and Guix treats these lists differently from just packages by taking the named output.
<poddo3>oh ok
<mange>Which is confusing in an input list, because it's different to `("jdk" ,openjdk17) which would be a named input. :P
<poddo3>haha
<amano>When I build and install a guix package, is it installed into a temporary directory before a proper directory is created in /gnu/store?
<poddo3>its built in one usually I think
<poddo3>at least for me
<amano>????
<poddo3>may not be what youre asking for
<poddo3>but I run guix build --keep-failed to keep my /tmp/ folder where the build happened
<poddo3>I think the build process happens there, so at the end yeah its "installed" there, then gets moved I presume
<poddo3>sorry bit new
<amano>Is a /gnu/store/xxxx directory calculated before a package is built?
<amano>Or after it is built?
<poddo3>dont know that one
<poddo3>it doesnt have xxxx format in the tmp folder
<amano>So, the build directory is in /tmp?
<poddo3>yeah at least for me
<amano>How is the hash calculated?
<poddo3>someone smart will have to answer
<poddo3>unless...
<poddo3>I wonder if its the hash provided to the build system
<poddo3>but, that wouldn't exactly work for the dependencies... or would it?
<poddo3>sorry
<zamfofex>Builds happen on a container, and only the given inputs and output directories are visible to it. The ‘/tmp’ build directory is also part of the container. Using ‘--keep-failed’ will put that directory in the root file system if the build fails.
<zamfofex>Note that the name of the build directory will always end in ‘*-0’ during the build, but it will end in ‘*-1’, ‘*-2’, etc. if you run with ‘--keep-failed’.
<zamfofex>Because the build container has no access to anything from the outside world.
<amano>So, it's impossible for the software that's being built to put the paths to its own resource files like jpg in the compiled executable?
<amano>Let's assume that a software installs a dynamic library and a compiled executable.
<zamfofex>The output directory (or directories, if there are multiple outputs) will be writable during the build, so that e.g. ‘make install’ can write stuff there. Usually build systems will store resources like images in the output directory so that it’s usable by the program.
<amano>The compiled executalbe must have the absolute or relative path to the dynamic library or any resource file.
<zamfofex>Yes.
<amano>Dependencies are already installed, so their paths don't change. But, the library or the application that's being built can't pin its own location before it's installed.
<apoorv569>anybody uses wireguard-service-type here?
<apoorv569>It never works for me. Also for some reason it creates a file under $HOME and / named as my private key owned by root for some reason.
<apoorv569>could this be a bug?
<amano>apoorv569: You are going to have to learn how to write a service.
<apoorv569>amano: What do you mean?
<zamfofex>amano: Well, that’s usually fairly normal. Even in other distros, you’ll find that the prefix can change, some will be under ‘/’, some will eb under ‘/usr’, some will be under ‘/usr/pkg’. Guix’s just happen to be under ‘/gnu/store/...’.
<amano>zamfofex: In case of guix, the prefix, /gnu/store/xxxx-prog-ver is calculated after installation.
<amano>No?
<AwesomeAdam54321>amano: If you need to know where the package will be installed, The #$output variable can be used for extending the installation phase
<amano>When is /gnu/store/xxx-prog-ver calculated?
<zamfofex>amano: No, the ‘/gun/store/...’ directory is known before the build starts.
<amano>Is /gnu/store/... directory known throughout the build process?
<AwesomeAdam54321>Yes, since it's calculated before the build starts
<zamfofex>Yes, it is, and it is available for writing during the build.
<zamfofex>Once the build finishes, Guix will make the directory available on the *actual* root file system as read‐only.
<amano>And, programs are not installed directly into it before build finishes?
<amano>apoorv569: If you don't know how to write a service, you can't analyze what's wrong in a malfunctioning service. Learn guile scheme. Learn guix.
<zamfofex>Once Guix makes it available in the actual root file system (outside of the container), it retains its name.
<amano>apoorv569: If a service goes wrong, report the issue and wait, or fix it yourself.
<apoorv569>I am not sure what you are trying to say? I'm asking if anyone uses the wireguard service and if so do you face the same issue?
<amano>apoorv569: Never mind. Somebody else will help you. I can't help you.
<apoorv569>amano: OK.
<redacted>I'm currently using wireguard. What was your issue? (I just got here.)
<amano>zamfofex: If a program wants to etch paths to its own directories and its own resource files into the compiled executable, I must pass the path to /gnu/store... to the compiler?
<apoorv569>redacted: It doesn't connect as in if I ssh to my wireguard server and run wg show, I never see a connection happening and second it creates a file under $HOME and / named as my private key, which is very wierd.
<apoorv569>I have to `sudo herd stop wireguard-wg0` every time I reboot because I have no internet otherwise.
<zamfofex>Yes. If you use an exiting build system, the directory name is passed to your build script/file with a name such as “prefix”, which you can then use to pass to e.g. your C compiler with the ‘-D’ flag, for example.
<redacted>apoorv569: Hmmmm, yeah, that's odd. Let me go have a look at my own config.
<mange>I can vouch for the wireguard service working, and apoorv569's observations being very weird.
<apoorv569>Also I think the service should have a option to decide weather the user wants the service to autostart or no.. I'll look into it and perhaps send a patch for it.
<redacted>Is the server running guix?
<apoorv569>no the server is Debian on a VPS
<zamfofex>amano: If you don’t use an existing build system, or you customise it (e.g. removing the ‘configure’ phase), you need to pass the directory name manually, see e.g. ‘suckless.scm’, which contains packages will oftenimes explicitly pass ‘PREFIX’ to ‘make’.
<apoorv569>mange: Do you also have this file created?
<redacted>apoorv569: Is the file being created in the home folder on your local machine or on the server?
<apoorv569>redacted: my local system which is running guix..
<mange>amano: The output directory for a build is calculated from the hash of the inputs, so it is known before the build starts. I think it's in #$output, from memory.
<redacted>ah ok
<mange>You can see an example in the manual (see: (guix) Build Phases) where PREFIX is set to #$output so the build installs in the right place.
<mange>apoorv569: Can you put your wireguard config in a paste? I have no idea what extra files you're talking about, so I assume I'm not seeing them.
<apoorv569>mange: I asked because you said you vouch for me.. one sec I'll redact some stuff and share it here..
<mange>No, I said I could vouch for the service working, and what you're seeing as being weird.
<apoorv569>working or not working?
<mange>Working.
<apoorv569>its not working for me..
<redacted>Ah, I'm realizing that I used NetworkManager locally to connect to the VPN. I'm not actually using a guix service type
<mange>I am currently connected to a wireguard network, using the Guix service.
<apoorv569>I'm not sure what you vouched for then.. nevermind.
<mange>I vouched for the service.
<apoorv569>OK.
<mange>I am saying "what you are experiencing is not normal, let's try to fix your problem".
<apoorv569>I got it.
<amano>Does install phase install a pacakge directly into /gnu/store?
<amano>Or, does it install a package somewhere else?
<amano>/gnu/store/xxx-prog-ver
<apoorv569> https://0x0.st/XYJL.txt why are we creating a directory named private-key? gnu/services/vpn:834
<AwesomeAdam54321>amano: The install phase installs the package to #$output, which is /gnu/store in the container
<amano>So, it is still /gnu/store/xxx-prog-ver?
<apoorv569>Yea, the wireguard-activation procedure is the only thing I see which creates a file/directory named private-key
<AwesomeAdam54321>If the build succeeds, the the container's output path will be written to the actual root file system
<amano>Don't say it is /path/to/gnu/store/xxx-prog-ver
<amano>The install phase must give /tnu/store/xxx-prog-ver to the compiler.
<mange>apoorv569: We're not? It's ensuring the directory of the private-key file exists. The private-key value is a configuration parameter.
<amano>Otherwise, paths will not be right.
<mange>So if you set (private-key "/my/fancy/dir/private-key") it will ensure that "/my/fancy/dir" exists.
<AwesomeAdam54321>amano: Guix can be built with a different store path location, if that's what you're asking? Most people use the default of /gnu/store
<mange>amano: The path in the build will be the same as the path outside the build. /gnu/store/...
<amano>AwesomeAdam54321: I just wondered whether guix gives anything other than /gnu/store/xxx-prog-ver to the install phase.
<apoorv569>mange: here you go, https://0x0.st/XYJf.txt
<mange>The private-key option should be a file. In the manual (see: (guix) VPN Services) it documents the option as "The private key file for the interface. It is automatically generated if the file does not exist."
<mange>Note "file", not the key itself.
<apoorv569>mange: Yes, I meant this is the only procedure that could be creating those files I mentioned.. perhaps the `(call-with-output-file` part creates this file under wrong path?
<mange>The file should be outside of your Guix configuration, because the configuration will get added into the store and thus be world-readable.
<apoorv569>mange: like using `(local-file ` or something?
<mange>No, like "writing it on the machine yourself using the wg command line, and then putting the path to that file in your config".
<mange>Using local-file ends up putting the secret in the store, where it has very open permissions.
<apoorv569>I don't understand, could you show me example?
<mange>In my config, I don't set the private-key option at all. Instead, I used "wg genkey > /etc/wireguard/private.key" to generate a key (which I think the service would do automatically on activation).
<apoorv569>I see what you mean. perhaps the same method should be used for public key?
<mange>Public keys aren't secret, so they don't need to be protected from the store.
<apoorv569>Hmm.. I'll try that.
<apoorv569>But why would it create the file? is it because just a file name creates that file under / and $HOME?
<apoorv569>as it assumes that as root path..
<mange>As documented, it generates a key the first time it starts, so creates the file to hold the generated key.
<mange>That is, it generates a key if it doesn't already exist.
<apoorv569>I see... so it naming the file as my private key because that's what I put there and it thinks its a path
<mange>Yep.
<apoorv569>wow
<apoorv569>unexpected.. because usually people put key in the config as string.. was not expecting that it wants path to a file
<apoorv569>but it makes sense..
<mange>It would be nicer for the option to be called private-key-file.
<apoorv569>yea, I'll make some changes in the service and submit a patch.. I also want to disable autostart..
<apoorv569>or make it configurable.
<mange>If you're familiar with the general Guix wisdom of "no secrets in your config file" then you might be able to work it out, but that's not reasonable to assume.
<apoorv569>Actually I didn't like that I had to put my key in there.. but not it makes sense.
<apoorv569>now*
<poddo3>okay, I can build in my /tmp env for my package, but I'm getting ice-9 errors at my second phase. Can someone tell me if theres an obvious oopsy here? https://bpa.st/IVOGC
<mange>Can you be more specific about the errors?
<poddo3> https://bpa.st/SEE64
<poddo3>I dont fully understand them :P
<mange>Sure, but someone here might. It's harder to debug without output.
<poddo3>its the paste above, https://bpa.st/SEE64
<apoorv569>How can I test the changes I made in the local clone of guix for my system config?
<apoorv569>I'll have to add it load path.. and maybe rename service to something obvious? like wireguard-test-service-type?
<mirai>apoorv569: in decreasing complexity: write your own system test; write a VM config; rename the service with an asterisk? wireguard-service-type* (shorter to type and rename)
<apoorv569>mirai: VM is a good idea.
<robin>guix's zsh completions are arguably worse than nothing :/
<robin>ACTION will have to learn zsh completion magic sooner or later
<amano>I recommend fish over zsh.
<amano>Fish is simple...
<amano>Simplicity
<zamfofex>Depends on yout definition of simplicity. It might be easier to use, but it has a more complex database. (I have used Fish somewhat extensively several years ago.)
<zamfofex>Err, codebase*
<poddo3>what if ysh
<poddo3>the lambda should run all the invoke components in order, right?
<blizzow>can guix run zfs on root (/) ?
<bjc>no
<blizzow>bummer.
<redacted>Is there a way to add channels to the guile load path while I'm hacking on my config?
<redacted>Guix appears to add itself (in /run/current-system/profile/share/guile/site/3.0) to the load path
<redacted>But other channels I've added to my config aren't in the load path
<mange>I don't fully understand what you're asking, I use "guix build -L my/channel/dir $package" when I'm working on my channel's package definitions.
<jaft_r>poddo3: correct; sometimes, I'll use "display" to tell when one of my "invoke"s is running, vs. another (especially for cases where the invoked command doesn't have any output and, therefore, won't show up in the failure log)
<jaft_r>poddo3: out of curiosity, what commit's your "guix" at? I tried to build the package definition you provided and didn't fail until the "tests" phase.
<poddo3>Hows that work?
<poddo3>uhh
<poddo3>e48426b45421eb8199a0dadbcd0eef3f14511e27
<peanuts>"guix.git - GNU Guix and GNU Guix System" https://git.savannah.gnu.org/cgit/guix.git/commit/?id=e48426b45421eb8199a0dadbcd0eef3f14511e27
<jaft_r>It's, more or less, basically the equivalent of a System.out.print() in Java. So I'll often do something like `(display "Making directories, now") (newline)' before the "invoke" which does that, for example.
<poddo3>oh
<poddo3>cool
<jaft_r>poddo3: Yeah; your Guix is a few weeks old. Doesn't seem like enough to make much of any difference but maybe run a "guix pull" to get up the latest changes? I'm on the latest commit and, like I said, your package definition ran great, for me (just needs to deal with the failing tests but that was it). 'Can't guarantee that's the issue but maybe.
<poddo3>hmmm same error https://bpa.st/KAJR4
<poddo3>heres the command I've been running, in case that matters guix build --keep-failed --debug=3 -f ./prism.scm
<redacted>mange: I'm using additional channels besides the default, and I'd like to be able to jump to package definitions when I'm editing my config.
<redacted>My system config
<redacted>I can already jump to packages defined in the default guix channel
<redacted>so I can jump to stuff in (gnu packages wm) for example
<redacted>but I'd like to jump to stuff in (my channel xyz)
<mange>Are you using geiser? Emacs tells me geiser-guile-load-path is a thing?
<jaft_r>poddo3: thanks for that; that /does/ seem to be the difference. It looks like the "--debug=3" part's causing issues. I get past the error you ran into with that removed.
<poddo3>:o
<poddo3>oh hey it built
<poddo3>awesome, but how do I tell it to add the ./bin to path? is it implicit?
<jaft_r>poddo3: generally. But I think the "guix build" command's only going to build it; run "guix install" (everything else can remain the same, I think), instead, for it to get installed. Then the "bin" directory will get added to your path.
<poddo3>oh yeah lol
<futurile>morning all
<efraim>o/
<taeaad>What are recommended ways of sourcing your profile system wide? For example, if I am using Guix on Ubuntu, should I source my profile in /etc/environment? The issue I have is that I need to source my (or some) profile for certain programs. Zathura can't find zathura-pdf-poppler for example if you don't. Another example is Python, I may want to launch GUI programs with some command "python <some_command>" but on my setup this would
<taeaad>actually give command not found, unless I source a Guix profile.
<taeaad>To clarify, this is _not_ on the CLI. It is CLI commands that are linked to the GUI. ~/.bashrc would not get sourced since it is not interactive.
<Viiru>In .profile.
<efraim>would .profile be sourced for the GUI?
<mange>From memory GDM/GNOME doesn't source .profile if you use Wayland.
<taeaad>I think ~/.profile is sourced on SSH login is it not?
<Viiru>.profile should be sourced at the beginning of any interactive session.
<mange>It's surprisingly complicated, and which precise files get sourced depends on your shell, but the "profile" ones (.profile, .bash_profile, .zprofile, etc.) are for "login" shells (not just SSH, but any login).
<taeaad>Hmm, I suppose I should try ~/.profile. But I think more generally /etc/environment would also work. Let me play around and see.
<taeaad>OK, looks like ~/.profile works, thanks.
<futurile>taeaad: I source in my .bash_profile, and in .xprofile for when I login via GDM.
<futurile>taeaad: I have multiple manifests that create profiles, and then a single 'master' profile and pulls them all together into one - that one master profile is what I source.
<futurile>taeaad: that's how I avoid python not finding a library, so although I have things split up for organisation - pulling them back into one 'profile' prevents dynamic languages not finding things
<taeaad>futurile: Thanks for the explanation, make sense.
<futurile>taeaad: I have some blog posts (heh) if you are interested to read about the approach
<taeaad>Sure, please.
<taeaad>futurile: ^
<rhuijzer>My local rebuild of libusb dependants looking good but far from done
<futurile>taeaad: https://www.futurile.net/2022/12/22/guix-managing-multiple-profiles/ and https://www.futurile.net/2022/12/23/guix-profiles-layering-at-login/
<taeaad>Thanks.
<apoorv569>Hi, I created these 2 patches for wireguard-service-type https://issues.guix.gnu.org/73465 and https://issues.guix.gnu.org/73467
<futurile>apoorv569: nice. The automated QA system will get to them eventually - you can track it here - https://qa.guix.gnu.org/patches
<apoorv569>futurile: Oh! I didn't know about this QA system. Nice.
<futurile>apoorv569: one thing to be aware of, there's a specific commit format. QA will test for this. You may want to reroll your patches to fit it: https://qa.guix.gnu.org/patches
<apoorv569>Can I in someway subscribe to it? to get notfications?
<apoorv569>futurile: I see. No issues, I can re-submit if need be.
<futurile>maybe someone else knows if you can subscribe
<futurile>debbugs will email you when a committer looks at it, but it doesn't know about QA - I just go there every day and check my patches heh
<apoorv569>I see.
<Deltafire>guix install: warning: Your Guix installation is 19991 days old.
<Deltafire>wow, time flies
<futurile>mmm anyone want to try and figure out why python-django is broken on master - borked around the core-updates merge
<futurile> https://ci.guix.gnu.org/build/5230783/details
<aadcg>I'm trying to set an env var before running COMMAND when issuing guix shell: guix shell -D -f guix.scm -- LD_LIBRARY_PATH="$GUIX_ENVIRONMENT/lib" sbcl
<aadcg>however, this doesn't work. any idea?
<mange>Depends on your environment, but usually "guix shell -D -f guix.scm -- env LD_LIBRARY_PATH="$GUIX_ENVIRONMENT/lib" sbcl" is how I would do it.
<aadcg>mange: that doesn't work because LD_LIBRARY_PATH is resolved to /lib only
<Rutherther>aadcg that is because it is evaluated from your original environment, not from the shell one. Use bash -c and put the argument to ' to make sure it is not evaluated in the original shell
<aadcg>Rutherther: oh I see! it works now, thanks.
<futurile>hah neat, that comes up as a Q about guix shell quite often
<User-42>Hello, i'm trying to build a rust crate (tikv-jemalloc-sys) but it fails not finding libgcc_s.so.1, i have gcc-toolchain in my build container, but it seems to not be enough
<nckx>It's not even needed, the build environment already has gcc and its associated gcc:lib. I can't help you with Rust but adding gcc-toolchain is a dead end.
<Rutherther>what is the full error? (send with paste site, not as messages)
<User-42>i'm not running a guix bulid container, rather a minimal container with rustc + gcc-toolchain. looking at the container store libgcc_s.so.1 is there, just not being found
<User-42> https://pastebin.com/t9d72xX2 <- pretty much just some process not finding the file
<User-42>(different crate failing this time, but for the same reason)
<sepeth>Hi Guix, I see a lot of rust builds with different versions, like every version from 1.54 to 1.77, when I do `guix build ...`. Is this normal? I am on aarch64. Is this because of bootstrapping the latest version?
<Rutherther>Okay, so it seems like its the executable itself that cannot load it to work. Not that the build process would need it for linking. So my guess is that executable was downloaded. Random binsries wont work on Guix, as a workaround you could set ld lib path to lib folder with the library
<User-42>as in cargo pulled some blob and is trying to run it?
<Rutherther>sepeth usually it should not be required as substitutes have them built. But there is not many builders for aarch so it can happen you use commit that is not yet built. Yes, it is the bootstrap chain and correct
<Rutherther>User-42: that is what it looks like to me from the log, yes
<sepeth>Rutherther: oh ok, thanks!
<amano>Does linux-libre work well in a virtual machine?
<amano>I'm gauging linux-libre for VPS deployments.
<sepeth>amano: yes, I use linux-libre on two virtual machines, one on my MB pro, and one a server on vultr.
<amano>What is MB pro?
<rhuijzer>The apple laptop probably
<sepeth>macbook. Afaik, linux-libre mostly removes wifi firmwares
<amano>I don't think apple macbook will work with linux-libre.
<amano>GPUs also require firmware blobs.
<amano>What's the point of a laptop without wifi?
<amano>Maybe, you can use ethernet.
<sepeth>amano: I think parallels handles the ethernet bit, I am not using any GPU stuff. I use windows on parallels for gaming etc.
<sepeth>So, I don't need wifi support on the virtual machine. I think for qemu and others you can do the same too.
<amano>You are running guix on a virtual machine on mac os?
<amano>That's degenerate.
<amano>Is mac os an expensive virtual machine host or an expensive ssh client?
<sepeth>Yeah a bit :D but I like tinkering on Guix and this is the only laptop I have, and I need macOS and Windows for other things.
<sepeth>Expensive machine to run multiple OSes at the same time ^-^
<amano>What about GPU passthrough?
<sepeth>I would be lying if I tried to look at anything on that
<sepeth>If I say*
<amano>VFIO may enable you to share GPU between mac os and guix.
<amano>No more separate GPU.
<sepeth>TBH, I just added plasma-desktop-service to my guix config.scm, I saw some graphics that looks good, and didn't dive into it further than that. I will check it out though. I think you right, I may be able to utilize it better.
<amano>sepeth: Damn, VFIO requires a separate GPU, but VFIO allows multiple VMs to share one GPU. With VFIO, the host loses the GPU.
<amano>It's good for a headless virtual machine host that hosts multiple VMs.
<sepeth>Oh I see ^-^ for desktop and dev purposes, I am happy with what I have though.
<amano>Qemu and virtualbox offer 3D aceeleration which allows VMs and the host to share the same GPU.
<amano>This isn't as good as VFIO.
<amano>My sister is god damn ugly.
<Lumie>amano: what lol
<amano>Abandoned by God
<amano>sepeth: It turns out that virgl and venus on top of virtio gpu is pretty good for linux guests.
<amano>For windows, you are going to need VFIO or PCI passthrough.
<amano>venus with virtio gpu is like vulkan passthrough. virgl is like opengl passthrough.
<User-42>So, more to my problem. i'm running `guix shell --container gcc-toolchain -- ldconfig -v` to debug, the .so i need is available in the libgccjit package, is there a way to make ldconfig pick up on this?
<User-42>adding -D libgccjit seems to do nothing
<sham1>You could always try an LFS container
<Rutherther>If you mean to make the programs pick it up, then use LD_LIBRARY_PATH
<User-42>ldconfig -v seems to ignore the LD_LIBRARY_PATH
<Rutherther>Why do you need ldconfig to see it?
<User-42>I'm assuming that the build system will find it if it's in the path
<sham1>But why would the build system care about what ldconfig sees
<User-42>i might be ignorant here, but i'm assuming it's using this method to find the objects to link
<User-42>to be clear, this is rustc/cargo
<Rutherther>The calls to find so files respect ld library config environment variable
<sham1>I'd still try --emulate-fhs, because binaries built by rustc and cargo probably depend on the FHS by default
<Rutherther>Of course it has to be put in their environment, so just setting it as variable in your current process wont work (just adding for a sanity check)
<sham1>(That's of course what --emulate-fhs is for, after all)
<User-42>Rutherther when you say "their environment", you mean as i launch the guix shell and not in the started shell process inside?
<Rutherther>I mean in the process that needs to load the library, and since environment is inherited on Linux, you can have it in the shell you start it from
<User-42>ok fair enough
<rmnull>Hi #guix I'm trying to run sudo command inside a guix container, it says "sudo: /bin/sudo must be owned by uid 0 and have the setuid bit set",
<rmnull>here's the command I use to invoke the container
<rmnull>`guix shell --emulate-fhs --user=bonnie --container --network --pure coreutils python cmake make  sudo curl`
<rmnull>any idea how I can access root permissions inside the contaienr without running the guix shell command as root
<Rutherther>rmnull you cannot use sudo from a shell like that. You need to use the sudo under /run/privileged or another path under run I forgot the name of
<Rutherther>It should be in your path by default. If you use pure shell you will have to specify full path to it or add it to PATH yourself
<Rutherther>Due to nature of the GNU store you cannot put setuid flags into it, and need for wrappers that have setuid arises
<ieure>Okay, so, Cuirass. I had broken my config, which made it fail to start in a weird way. I've fixed that, but it's not working. It did a channel eval 23 hours ago, and four packages failed to build, all with "Failed (dependency)."
<ieure>Three of the four packages have nothing listed in "Dependencies." One has one successful package listed there. None of them have log files.
<ieure>Restarting the builds puts them into "Scheduled" state, but the builds never run.
<ieure>How can I find out what's wrong, and fix it?
<rmnull>Rutherther: I see, what's the guix way to gain root permission in a container then.
<Rutherther>rmnull I think I've already covered it in my response
<rmnull>my bad, missed it, removing  --pure from the arg line doesn't help me though
<rmnull>is there any resource or links i can look at
<Rutherther>My guess is that you left sudo in guix shell package list.
<futurile>rmnull: why do you want root in guix shell?
<rmnull>futurile: I'm using some prop. libraries, the install script requires it to be installed to /usr/local/lib  which requires make, not only that some programs there are hardcoded to load from /usr/local/lib :facepalm:
<rmnull>i fought with it sometime by setting LD_LIBRARY_PATH and all, then decided its just easier to run it in a container and run make install inside the container and then discard the container after running my tests
<Rutherther>Oh its a container I completely missed that. Then just use --share on /usr/local so that file is writable by your user. No need for sudo
<futurile>rmnull: you might want a 'real' container, so an actual VM. As guix shell is really just a linux namespace etc so it can only go so far. I've seen people hit that wall pretty hard.
<rmnull>Rutherther, futurile: thanks for saving my time, i was gonna fight this for longer, I'll just spin up docker  or a qemu machine and run it there
<futurile>no worries!
<cbaines>is there an easy way around Guix not booting due to a filesystem change?
<cbaines>I need to reconfigure to update the filesystem UUID, but I can't login because shepherd won't start SSH/ttys without that filesystem
<ieure>cbaines, Probably easiest to boot the installer and reconfigure from there.
<cbaines>it took me about 2 days to get some hacked version of the installer even booting on this system
<cbaines>there aren't images for aarch64-linux and the default Linux-libre doesn't have all the necessary modules available, so I'm trying to avoid reinstalling
<cbaines>I'm also not sure what I've got wrong in the config to have the system not boot without this filesystem
<cbaines>some services should wait for it to be available, but it's not needed for SSH for example
<ieure>Uhhhh could you do something *really* dumb like format a USB flash drive with the UUID the system wants, just to get it to boot?
<cbaines>I remember the shepherd config files being .scm files at some point, but they now look to be .go files, which I can't really edit
<cbaines>ieure, hmm, maybe that would work
<ieure>.go files are the compiled object code.
<ieure>The .scm files should still be there.
<cbaines>yeah, but as it's using the .go files directly, that makes editing the config in the store harder
<cbaines>I'll see if I can figure out how to create a filesystem with a specific UUID...
<ieure>I don't think ARM uses GRUB, but if you have some way to set the kernel arguments, init=/bin/bash might boot you directly into a root shell.
<ieure>s/might/should/
<cbaines>this is a HoneyComb LX2 which does use Grub
<ieure>That should be a viable option, then. Boot it, manually mount stuff and start the Guix daemon, edit your config and reconfigure.
<cbaines>I've got a dummy filesystem on a USB stick now, so lets see if that work
<cbaines>s
<cbaines>woo, looks like that's worked!
<cbaines>thanks for the suggestion ieure, I'd have never thought of tricking Guix like that
<User-42>the error was actually that the build secretly required `make`. oh well
<ieure>cbaines, Nice! Glad you got it up.
<User-42>next error is requiring rust 1.80, is it possible to use a different guix (rust-team-branch) in a shell only in some way? or any pointers on when it might be merged? :)
<ieure>I have spent the majority of my life performing a series of increasingly preposterous actions to get whatever computery thing to actually work, sometimes you just gotta lie to the machine like that.
<ieure>User-42, You'd have to add the rust-team branch as a channel; or copy the package definition into another channel you control.
<User-42>oh great, that sounds easier than expected
<divya>I'm trying to create a custom Shepherd service, but keep getting wrong
<divya> type error.
<divya>This is what goes into my home configuration: https://paste.debian.net/1330415/
<divya>And this is what I get when doing `guix home reconfigure home.scm`: https://paste.debian.net/1330416/
<Rutherther>this is a shepherd service definition, but what are you doing with this definition afterwards?
<opalvault>I'm having this issue with installing Guix onto a t440p w/ libreboot with disk encryption. I get the encryption password, and it hands me off to GRUB, but when I select GNU Guix in grub it hangs completely. There are no boot logs in the chroot when I mount the guix filesystem in Trisquel. Does GUIX work with t440p + atheros cards? It produces 0
<opalvault>error output afaict, so I have nothing to paste here :(. The installation itself never runs into any issues. My partition table is an unformatted BIOS boot partition (gpt), a 1GB /boot partition, and an encrypted root partition. It's automatically grabbing the Trisquel /boot/efi partition. Anyone have any ideas or insight? My only suspicion is
<opalvault>potentially some incompatible hardware...
<divya>Rutherther: I am adding `kmonad-home-service` to the list of `services` in `home-environment`
<Rutherther>divya: the services that go to home-environment are supposed to be of type "service-type". You cannot put shepherd services to the home-environment-services list directly. You need to instead make a service-type that will extend home-shepherd-service-type. You can use "simple-service" procedure to make a simple service extending just one other service-type
<divya>Ah, Rutherther okay. Can you direct me where in the manual can I see an example of this?
<Rutherther> https://guix.gnu.org/manual/en/html_node/Service-Types-and-Services.html
<divya>Thanks.
<divya>Rutherther: After I have defined a `simple-service` do I need to add it to the `services` list?
<Rutherther>if you want to use it in your home-environment, then yeah
<divya>Rutherther: Just check this, I've defined the following: https://paste.debian.net/1330418/
<divya>And then adding `(service kmonad-home-servie)` to `services` of `home-environment`
<opalvault>Update: the installer does not encrypt partitions correctly (at least in my case) both manually, or letting it encrypt automatically with guided partitioning. When I do not specify root as an encrypted partition, or use the guided partitioning w/o encryption it boots the operating system perfectly.
<opalvault>Is this something that should be reported as a bug? Without any sort of logging after I select the operating system in GRUB, I have a hard time believing it will be very easy to debug.
<Rutherther>divya: no, you need to extend the home shepherd type, not system. So home-shepherd-service-type
<divya>Rutherther: Still an error: https://paste.debian.net/1330420/
<Rutherther>oh... no, in this case do not put it to (service ...), it's already a (service ...) since. See the definition of simple-service function.
<divya>Rutherther: Ah! Thanks, works!
<divya>Rutherther: Should I be able to just do `herd start` for the service?
<Rutherther>yes
<Rutherther>specifically the provision of the shepherd-service
<divya>Rutherther: Doesn't look like it's working /sigh/
<Rutherther>so what's the error?
<divya>No error, I do `herd start kmonad` it says the service could not be found.
<divya>The `guix home reconfigure` finished without any errors.
<clarkf>is `kmonad-home-service' actually in the `services' list?
<sham1>Is there some way for me to have guix use "#" for progress bars instead of box-drawing characters
<divya>Rutherther: If you responded, do resend it as I wouldn't be able to see previous messages (using erc on Emacs)
<Rutherther>I haven't, I don't really know where a problem would be given the service is in services list and reconfigure did not print any errors. You could try rebooting, other than that I have no idea
<clarkf>divya: check out https://guix.gnu.org/manual/devel/en/html_node/Shepherd-Home-Service.html
<divya>clarkf: My configuration does already extend home-shepherd-service-type, I still don't see it accessible by `herd`
<bbianomker>I can't install packages, it says the server is too slow
<futurile>where are you based?
<futurile>you could try one of the mirrors: https://libreplanet.org/wiki/Group:Guix/Mirrors
<bbianomker>Thanks
<bbianomker>How do I install daemons on guix? Just put them in /etc/config.scm?
<bbianomker>Sorry for overloading this chat with my questions btw
<sham1>bbianomker: yeah, for system-wide services, that's where you'd put them
<bbianomker>Alright thanks. And I enable them with herd after guix reconfigure?
<sham1>Either that or reboot
<sham1>Reboot would of course give you a more pristine environment, but that can of course take a bit
<bbianomker>How come "indexing objects" always gets stuck after I guix reconfigure?
<bbianomker>Is it just really slow?
<meaty>is there any reason why the Inter font hasn't been packaged yet?
<sham1>meaty: no one has probably just stepped up to do it, me thinks
<meaty>word, then I shall
<sham1>meaty: at least, if this is the font that you mean: <https://fonts.google.com/specimen/Inter>
<meaty>sham1: yes, also at rsms.me/inter
<sham1>Yeah, that's probably the better link
<sham1>I just used the Google Fonts one since that's usually quite easy
<bbianomker>Does indexing objects just take a really long time?
<bbianomker>When I run guix pull or guix reconfigure, it's the same
<sham1>Yeah\
<Lumie>The first time, sure. Or depending on how long it's been since your last pull. But for me it doesn't take too long.
<sham1>Especially the initial index can take a while
<sham1>Also ofc depends on your machine
<bbianomker>Oh okay thank you.
<Lumie>sham1: by the way, did you work out your home config with the individual config services?
<sepeth>Hi Guix, I am getting DSO missing from command line error when compiling a rust package, this error comes from gcc and it is for libpng, and indeed I don't see -lpng in the command. But I see other packages which I specified in (inputs ...). I tried manually adding via LDFLAGS, but that didn't seem to have an effect. Anyone has an idea what might be wrong?
<sepeth>Hmm, I see the build actually failed when compiling another rust package. Maybe modifying its LDFLAGS will fix...