<marusich>the_tubular, you are calling the specification->package with two arguments: "nss-certs" and "zfs" <marusich>The procedure expects just one argument. <marusich>In other words, you can't pass multiple package specs to ti. <marusich>Well, you can't change the procedure, but there are ways to do what you want <marusich>For example, try: (list (specification->package "nss-certs") (specification->package "nss-certs")) <marusich>Or perhaps: Try (map specification->package '("nss-certs" "zfs")) <marusich>You could define a new function that accepts multiple arguments and then calls specification->package multiple times to generate the list of packages, if you wanted. <marusich>You may need to (use-modules (gnu packages)) first. <marusich>The specification->package procedure is exported by the (gnu packages) module. <marusich>I found it by running "git grep 'define.*specification->package'" in a Guix source checkout. <the_tubular>I'll paste you my whole config, I think there's a few problem, give me a sec <the_tubular>I moved stuff around from the config.scm that the installer gave me, to help me a bit <marusich>I see that the final append is wrong; you should not invoke (list (service openssh-service-type) <marusich> (service network-manager-service-type)) <marusich>Sorry, let me rewrite that. Basically, you should not invoke (append (list a b c) (list x y z) another-list) <marusich>The parentheses are wrong; it looks like you have one extra parenthesis at %base-file-systems))) <marusich>Try deleting one, so you have %base-file-systems)) instead. <marusich>As currently written, the packages and services portions are actually not included in the operating-system form. <marusich>Also, I think what I said about the list of services is wrong; so just ignore what I said there. <marusich>Well, Guile thinks the form isn't right, so the question is what's wrong... <the_tubular>I cheked one of my other config and it has guix-package as module <marusich>Your use-modules form has a missing closing parenthesis. <the_tubular>Seems to have fixed it, here's the new error : (packages (append (map specification->package "nss-certs" "zfs")) %base-packages): invalid field specifier <marusich>Yeah, I get that too...that's weird, becuase packages is supposedly a valid field? <marusich>The latest issue (invalid field specifier) occurred because the config was written as (packages (append (map specification->package "nss-certs" "zfs")) %base-packages), which is incorrect; it has the form (packages A B), where A is (append (map specification->package "nss-certs" "zfs")) and B is %base-packages, but you didn't really intend for that. You intended to write it as (packages (append A B)). <marusich>Er...well...I misspoke again in the laste part of the sentence, but I hope you get the idea. <marusich>When I said "you intended to write it as (packages (append A B))," I should have written: (packages (append X Y)), where X is (map specification->package "nss-certs" "zfs") and Y is %base-packages. <marusich>Are you using a text editor that automatically balances your parentheses? If not, I highly recommend you give it a try. <marusich>In Emacs, you can use Paredit to do that. It's indispensible when modifying Scheme code. <dongcarl>Hi all, wondering how I can find out which derivation produced a store item? <dongcarl>Also, is there a command to get information about a specific store item (identified by path)? <marusich>guix gc is a good place to start looking depending on what you need. The daemon maintains a database with information; I'm sure there are scheme APIs in Guix for querying it <the_tubular>marusich sorry just read your mesage, no I was trying to install a text editor <marusich>I'm sure vi or vim must have some sort of parentheses-balancing features. <marusich>Anyway, I highly recommend you invest in doing that; it'll save you parentheses-related headaches. <marusich>Even just being able to highlight the corresponding parentheses is helpful. <marusich>Paredit in Emacs is great because you can easily cut and paste entire sexps, and it will automatically balance parentheses for you. <marusich>You rarely have to think about the parentheses. You can just think about the syntactic forms you're moving around, which is nice. <KittyOwO[m]>nheko client on the default channel seems a bit outdated. <dstolfa>KittyOwO[m]: that usually just means that nobody's actively using it. feel free to update it and send in a patch if you feel inclined to do so <KittyOwO[m]>👍️ will look into doing that soon. Haven't done that before tbh but doesn't sound like it would be difficult lol <lfam>Especially the sections Building from Git, Running Guix Before It Is Installed, and Submitting Patches <lfam>They will help teach you how to prepare a development environment, make and test your change, and then submit it *dstolfa wants to get back on writing `guix bisect` *dongcarl will be very happy if we get `guix bisect` <lfam>I think the idea is that it would be like `git bisect` but integrated into Guix. I've tried `git bisect` with Guix and it could definitely use some polishing <dragestil>Question: if I use emacs under guix, does it make sense to write a manifest declaring packages to be installed from elpa? <char>Are there any examples of electron apps packaged for guix? <podiki[m]>...I don't think so? I hear the js dependency hell is, err, hell ***sneek_ is now known as sneek
<char>Isn't it only hell because of npm/yarn. Wouldn't it be much nicer if packaged with guix? <podiki[m]>I have no idea what npm and yarn are like under the hood, but I do know I'd prefer anything in scheme :) <char>so If i'm want to package en electron app, would it be suggested to use node-build-system, or make my own electron-build-system? <wirez>im surprised guix doesn't have a better answer to electron <wirez>some kinda scheme wrapper for web apps that integrates right into OS <char>you would still need all the necessary javascript dependencies used by whatever app <wirez>ya and couple it with a webview engine instance <char>It seems like quite a bit more trouble than using the existing electron <bagsbagsbags> 1736:10 1 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _) <bagsbagsbags>I got it when trying to run `guix system reconfigure /etc/config.scm` <cossidini>might be helpful to paste config.scm as well <lfam>bagsbagsbags: I wish that error was more descriptive... hopefully somebody else has some ideas <bagsbagsbags>lfam could it be because I'm running 1.2.0 and the iso is too old <lfam>I'm not sure exactly *what* isn't working <lfam>But, maybe it rings a bell for somebody <bagsbagsbags>but they currently have 1.2.0 as the base image that gets installed <lfam>Did you just boot it for the first time? Or has it been in use for a while? Have you ever run `guix pull`? <lfam>The difference is that it uses http instead of https <bagsbagsbags>guix pull: error: Git error: unexpected http status code: 404 <lfam>I gave you the wrong URL <lfam>The idea is that it's the same URL as the default, but using http <lfam>Basically, it's a combination of the pinned certs for `guix pull` expiring and not having nss-certs installed, which would have succeeded as a fallback <lfam>The use of https isn't part of the Guix security model, so it should be fine to use http <lfam>Aside from the issue of eavesdropping <bagsbagsbags>I think I had tried installing it to my root user's default profile <bagsbagsbags>I did a `guix install nss-certs` before running your suggestion <lfam>For nss-certs to work "seamlessly" on Guix System, you'd want to add them to the list of packages in config.scm and reconfigure <lfam>I don't think it does anything automatically when installed to a user's profile. I don't see the package definition setting any search paths <bagsbagsbags>Is it possible to assign base profiles to users via config.scm? <bagsbagsbags>like for example user-foo gets a ton of emacs-packages but user-bar gets just vim, tig, and ncurses programs, etc... as a base profile managed from config.scm <bagsbagsbags>I think you probably understood what I meant without the elaboration <lfam>Users can declare a manifest, but I'm not sure if the administrator can do it from config.scm. Maybe? Definitely if you want to write some Scheme code :) <lfam>I'd be surprised if it doesn't, but I'm not familiar with the API <bagsbagsbags>or is that something that we would have to add to the current api? <lfam>I'd bet the API supports package manifests for users, but my guess if you'd have to make an abstraction to put in config.scm <lfam>But, other people will know for sure <lfam>I think that one of the original ideas of Guix was that users could do unprivileged package management, free from the tyrant admins :) <lfam>So I'm not sure if this use case has been implemented yet. No reason not to do it though <bagsbagsbags>that's one way the feature could be abused but why not have both options on the table? :) <bagsbagsbags>or creating custom isos with user profiles already stratified with particular package groups <lfam>Yeah, it would be really useful <bagsbagsbags>have you tried creating an iso that you then burn to usb? <lfam>Yeah, I've done it many times <lfam>The main things are writing the proper config.scm and making sure that flashing the usb completes <lfam>I had trouble where the flashing didn't complete before I pulled it out of the computer. Now I always run dd with "conv=fsync", which means "physically write output file data and metadata before finishing" <lfam>Otherwise, dd might exit before the kernel finishes actually writing to the storage medium <lfam>And, you think it's done and pull it out <lfam>I think you still have to get the bootloader and file-systems parts right, including partitioning and making filesystems on the the usb stick <lfam>Well, maybe not. Now that I write that it doesn't make sense <lfam>I was thinking of installing to the stick <bagsbagsbags>lfam: cyberia guix system capsul still gave me ERROR: In procedure apply-smob/0: <lfam>You get that error from `guix pull`? <lfam>Dang, I thought it was working <bagsbagsbags>maybe cyberia just needs to upgrade their isos for guix system <lfam>You could try pulling to some revision that isn't soooo far in the future compared to 1.2.0 <lfam>`guix pull` takes a --commit argument <lfam>So, basically, look at the Git repo and try a particular commit <lfam>Like, maybe 5472fb2ca7 (gnu: guix: Update to 1.2.0-2.2c11cf1.) <lfam>But yeah, they should update their iso <bagsbagsbags>aborting update of channel 'guix' to commit 5472fb2ca73ff14cc7d5d0970503e6a15ad1d95d, which is not a descendant of f350df405fbcd5b9e27e6b6aa500da7f101f41e7 <bagsbagsbags>I ran exactly this before I got that error: `guix pull --commit=5472fb2ca7` <bagsbagsbags>aborting update of channel 'guix' to commit c7a9d96051e23c728deae0974ba4aed994536705, which is not a descendant of f350df405fbcd5b9e27e6b6aa500da7f101f41e7 ***sneek_ is now known as sneek
<lfam>bagsbagsbags: What is `guix describe` say? <lfam>I mean, what does it say <lfam>Basically, the message is saying that you are currently on f350df405f, and that came after 5472fb2ca7, and are you sure you want to go backwards? <bagsbagsbags>hint: Perhaps this `guix' command was not obtained with `guix pull'? Its version string is 1.2.0rc2. <lfam>There's more debugging to do, but it's getting late here <lfam>I'm sure that someone else will chime in to help <lfam>It does appear that you've already gone back in time, maybe by reconfiguring before ever pulling <lfam>Not a great failure mode <lfam>Something confusing is definitely going on <lfam>By the way, f350df405fbcd5b9e27e6b6aa500da7f101f41e7 doesn't appear in my copy of the Guix master branch, although it does exist in the repo <lfam>Did you reconfigure yet? <bagsbagsbags>Yes, I tried reconfiguring without pulling because pulling was failing <lfam>Alright, I have to go. But I'm sure that someone else can get you moving <paul_j>Quick question - if I install a package via a manifest, how can I remove it? When I use the command "guix remove <package>", I get the error message "error: package <package> not found in profile". <paul_j>Do I just delete the package from the .guix-extra-profiles location? <paul_j>...then do guix gc to remove the orphaned items in the store? <paul_j>...answered my own question - yes. <avalenn>Why does "guix remove $package" triggers download of several MiB of substitutes ? <bricewge>I've commented on #24083 2 days ago on issues.guix.gnu.org but it wasn't taken into account <bricewge>It always seems unreliable to me to use mumi <leoprikler>yeah, comments seem to be swallowed by the web interface and never spat out <dstolfa>sneek: later tell lfam: my desktop is running at 20 degrees after that change instead of 40 ***Kimapr9 is now known as Kimapr
<dstolfa>MysteriousSilver: i usually just put mine in ~/scripts and then have my ~/.bash_profile add it to the path (not ~/.bashrc, because that messes up `guix environment`) <dstolfa>maybe there is... i don't really know :) <roptat>avalenn, when you "guix remove", you create a new profile with that package removed, but if you "guix pull"ed recently, it means that guix needs some new software to build the new profile, hence downloading substitutes <avalenn>Is it something like build dependencies for the profile ? <roptat>they're not really installed in the profile, but for instance it needs man-db to build the man page database <dstolfa>what would be needed to fix some of the download speeds with guix? <pkill9>dstolfa: if ypu mean substitutes downooad then i think thats serverside <dstolfa>pkill9: yeah, i'm wondering what could be done on the infra side to make it a bit more consistent <dstolfa>2MiB/s is a little slow by modern standards, especially when downloading texlive <pkill9>it is already consistently limited to that speed ime, lol <dstolfa>heh, i get 20-30MiB/s sometimes, usually late at night <lfam>avalenn: Basically, because (I guess) you ran `guix pull` since the last time you did `guix install` or similar. So, the dependencies of "building a profile" had changed, and by removing a package from your profile, you need to build a new profile. Does that make sense? <sneek>Welcome back lfam, you have 1 message! <sneek>lfam, dstolfa says: my desktop is running at 20 degrees after that change instead of 40 <lfam>sneek: later tell dstolfa: I'm seeing improvements here too! Report more bugs :) <avalenn>lfam: yes it makes sense, I just thought that by doing "guix pull" I already pulled what I needed for building profiles. It is more dynamic than I imagined. <lfam>Although `guix pull` does build a profile, I think the dependencies of building a profile are somewhat dynamic, based on what's in the profile <lfam>I can't point to anything specific, but that is basically what's going on with this counterintuitive behaviour of "uninstalling something requires downloading things" <lfam>I have wondered if this specific case can be improved <roptat>help, guix has been "building profile with 11 packages..." for 5 minutes now <maximed>roptat: Sometimes it seems like it takes hours on my system (though I didn't measure) <roptat>no it's the first time I see that, and it's an SSD <roptat>although, I noticed also "guix environment" of that package is taking a long time and a lot of memory (I got a gc warning about allocating 16GB of memory!) although the package builds quickly <maximed>maybe it does lots of 'stat' an 'read' <roptat>so I changed that guix environment to "guix environment --ad-hoc <all the dependencies>" and it worked better, until it builds the profile <maximed>I wonder if some code does (find-files "dir") <maximed>if "dir" has plenty of files, I would imagine it allocates quite some memory <lfam>I did notice that "buiding profile" seemed to get slower lately <roptat>it's an additional package I can't contribute because it lacks a license... <roptat>it depends only on free software, but we don't have them all yet in guix <roptat>oh, it took 10 minutes, and it finished <dstolfa>roptat: could it just be statically linking a heck of a lot of ocaml? <sneek>dstolfa, you have 1 message! <sneek>dstolfa, lfam says: I'm seeing improvements here too! Report more bugs :) <roptat>it's finished building all dependencies <dstolfa>IIRC, ocaml is statically linked, is it not? <dstolfa>hm, then i have no idea. was there any indication on what process was taking a while in top? <dstolfa>so the bottleneck is somewhere in guix then i presume <roptat>maybe it's because there are propagated inputs, so the profile is actually bigger than advertised <dstolfa>10 minutes sounds very excessive indeed <dstolfa>does --verbosity=5 (or something along those lines) with `guix environment` help identify the issue? <roptat>and I don't know how to strace it, because it's the build-side that's taking a lot of time (building /gnu/store/9zjbvx8iyyvckz18vb1j2fcl6qwxvw6c-profile.drv) <lfam>You would `strace -f` the guix-daemon with the <lfam>And --verbosity might be useful too <dstolfa>you can also `perf trace` if you don't want to deal with the overhead of strace <lfam>Maybe also `guix processes` could help <bdju>looks like the nheko package is a few months out of date <ekaitz>bdju: there have been recent efforts to update it but I think they were stalled for a reason <roptat>mh, have slowed down recently? I see only 713 commits since my last guix pull, almost three weeks ago <roptat>I would expect more, but maybe not... that's ~40 commits a day <lfam>It's the summer holiday season <the_tubular>What's the difference between global config and manifest and profile ? <bdju>thanks ekaitz and iskarian for the info <lispmacs[work]>the_tubular: a profile is basically a set of active packages you can see when you switch to it. Your default profile is the one you usually see, but you can make other ones <lispmacs[work]>manifest file is a describe of packages which you could use to create a profile <lispmacs[work]>experienced folks usually use manifest files, rather than just running "guix install <somepackage>" since manifest files allow a profile to be easily recreated, backed-up <lispmacs[work]>the_tubular: the system as a whole has its own profile, which must be built using a system config file <the_tubular>Let's say I want to install a simple package in a manifest file, how do i proceed ? <jlicht>the_tubular: either `guix environment -m <the-manifest>' <lispmacs[work]>the_tubular: to get you started, create a manifest file. Try guix package --export-manifest <lispmacs[work]>then jlicht's instructions tells you how to rebuild your profile using that manifest file <the_tubular>Ohh, so the manifest file needs to have package that are included in the system config ? <the_tubular>What does guix package --export-manifest does then ? <jlicht>or for ephemeral profiles, as I have shown (note `environment', not `package') <the_tubular>It just takes what you guix installed and put it in a file ? <lispmacs[work]>it figures out what packages are currently in your user profile and dumps them to a manifest file <the_tubular>so guix installed helloworld and guix package --export-manifest should give me a manifest file with helloworld correct ? <jlicht>the_tubular: "export-manifest" is mostly used to get your current profile into a manifest. I doubt you'll need it more than the one time <the_tubular>And does it takes an argument like where to place the file ? Or it just defaults it to your home or something ? *the_tubular is slowly learning <lispmacs[work]>when you get a few manifests going for different computers you own, you might find it handy to keep them all in one git repository somewhere. that is what I do <the_tubular>Could you also define your whole os trough a channel ? <lispmacs[work]>the_tubular: a channel is the place where you package definitions are coming from, by default the latest guix pull <lispmacs[work]>a cool feature allowing you to pull packages from different "time" snapshots in the guix continuum <lispmacs[work]>you could have a channel also to pull from a non-guix repository <lispmacs[work]>this handy feature is helpful when you want to grab some older version of a package, when something in the newer version is broken or not to your liking <drakonis>its system management, but for your home <dstolfa>the_tubular: take `guix system reconfigure`, and translate to what you think it might do for your home directory <the_tubular>But I thought the point of guix was to not have dotfiles and write those in your manifest ...? <dstolfa>well, you can't write dotfiles into your manifest :) <dstolfa>how would you put an init.el, .muttrc and .offlineimaprc into your manifest? <lispmacs[work]>if you build a profile using guix package, that does not affect the "configuration" of your home directory <lispmacs[work]>you cannot currently put those files in your manifest, no, not as far as I know <lispmacs[work]>guix system has the ability to do that for system files, but not user files <the_tubular>Got it. But you can mess with some settings inside your manifest right ? <jlicht>guix home offers ways to more easily construct your dotfiles using guile, and also does everything to wire them to up to the expected locations in your actual $HOME <lispmacs[work]> /etc/static/pam.d -> /gnu/store/vrxsqiypa81nhm6z5c4c0lq6iga0i2qf-pam.d <jlicht>that first part of that is already possible with vanilla guix, but annoying. The second part is something totally new :-) <podiki[m]>Anyone use home with literate org files yet? Or is that redundant? Figure I'd do what I do now but tangle to the scheme files for home rather than use stow? <dstolfa>does anyone know how `guix home` behaves on foreign distros? <jlicht>dstolfa: it should work, once released, but you might run into some rough edges while doing so. My 2 cents: first get comfortable with guix. <jlicht>that is not advice to anyone in particular, FYI <dstolfa>jlicht: well i don't use it on a foreign distro, but i was wondering if the intent is for it to be fully functional on one, as `guix system` obviously won't work in that sense <ss2>Could it be that substitute servers are throttled? <ss2>I'm pulling max at 280 KiB/s. <dstolfa>:( servers have been really bad today for me too <ss2>okay, sorry, didn't want to make a wild claim. It is slightly faster now. <rekado>in the past we found that connections from some ISPs are really slow, but we couldn’t figure out any problem on our end. <dstolfa>rekado: i guess it's just routing :( <dstolfa>short of having other mirrors, not much one can do i guess *raghavgururajan peeps-in <dongcarl>lfam: Hey, I think I'm encountering #48389... Do you have more insight/thoughts on what could be causing the problem? <lfam>I don't think there is any insight yet <the_tubular>Should stuff that always need sudo prviliege be put in the system config ? <lfam>dongcarl: Especially considering the last message to that thread... it's not much of a solution <dongcarl>lfam: Hmm I see, it's somewhat reproducible on my machine, so if posting logs/failed-dirs are helpful, I'd be happy to do that! <lfam>dongcarl: I would compare your logs to the ones in that thread. If they are different, then send them <lfam>What kind of machine are you using? <dongcarl>I'm on an AMD Threadripper, Guix on Arch Linux, tmpfs mounted on /tmp <lfam>The build farm is also AMD (Epyc) <lfam>I wouldn't be surprised if it only manifests on AMD. I've noticed that happens fairly often <dstolfa>unfortunately AMD is usually secondary for support on things, which isn't great but is also understandable <dstolfa>even i've worked on things where "AMD doesn't really matter, just make it work well for intel" <dstolfa>i always try to make it work well on AMD, though <lfam>I don't think that AMD is doing anything wrong. It's just less tested <lfam>Like, almost every laptop of the last decade is Intel <dstolfa>yeah... what lfam said. it's a combination of AMD doing things a little different than intel and people not testing as much on AMD <lfam>I think we need a way to reproduce the bug somewhat reliably, and then someone who is willing and able to spend some time debugging it <lfam>the_tubular: It's up to you, really <the_tubular>But stuff like docker always need root privileges though right ..? <lfam>I don't know about docker, but you can still elevate privileges in the normal way on Guix System. For example with sudo <lfam>The only stuff that has to go in config.scm are things that you want to be setuid, such as ping <the_tubular>So I could put ducker in my manifest file, even though I need root privlege and just use sudo and that would work ?