2016-04-17 6:15 GMT+02:00 Zachary Kanfer : > I recently installed Guix, and I must admit I'm feeling somewhat lost. My > goal is to not run `guix package -i` manually, but have a scheme file with > my entire system configuration in it, and run `guix package -f > /path/to/that/file` to install the programs I want on my computer. > Running "guiy package -i ..." is for the binary installation. That is when you install guix as a package in a previously existing hosting system Otherwise, you can install GuixSD and it offers exaclty what Gyou want. You can have a scheme file specifying the disk layout, the users, the services and so on and that's what will be installed You probably want to start from these instructions to have it installed https://www.gnu.org/software/guix/manual/html_node/System-Installation.html Then, when you wiill want to arrange a scheme file with the list of packages to be installed, you can come back here ;-) > > > I think what I want to start with is here ( > http://www.gnu.org/software/guix/manual/guix.html#Programming-Interface), > but I'm not sure. Looking at it is somewhat confusing, for a few reasons. > I'm going to list what I see when reading this in hopes that the > documentation can be improved. > > 1. It starts by discussing how to "define new packages". I would expect > that I would only want to *use* packages, and that this would be done by > the person adding the package to the software repository. > Not necessarily. Arranging the build of a package can be demanding. Way more demanding that just using the package. So it's not settled that the person using the package will be the one who has prepared it for the distribution The user most commonly will install packages provided by others. Volunteers, mainly > > 2. The example given looks like a very complicated way of installing a > simple package. > That's exactly what I wrote. Those instructions are not aimed to casual users wanting to USE a package. They are meant for the volunteers who arrange the build of a package, so making it available to ALL the users of the distribution > There are many properties I don't care about when I'm installing software > (homepage, synopsis /and/ description), and things I don't want to care > about (arguments, inputs, build-system). To install a package on the > command line, it's something simple like "apt-get install emacs". To use > Guix, I have to write a 20-line program with a bunch of settings? > No ;-) You just "guix package -i emacs" both on GuixSD AND on the binary installation Properties and inputs are needed for building packages, not for using them (not that knowing abiut those in detrimental, though) Anyway, if your model is "apt-get install emacs" I don't see why "guix package -i emacs" is so unsatisfying to you. They are not dramatically different > > 3. It goes on to discuss importing other people's package definitions ( > http://www.gnu.org/software/guix/manual/guix.html#Invoking-guix-import). > But it doesn't say how to do this in a Scheme file. I want my setup to be > in a Scheme file, not in a bunch of commands I have to manually run. > The instructions about how to import other people definitions, are exactly meant to edit a scheme file ;-) Only, that scheme file is not made to install a package. It's made to build it > 4. It discusses running `guix build` to use the package definitions. This > appears to be different than `guix package -i`, but I'm at a loss to say > how. > The first builds a package based on a definition written in scheme The second installs an already built package ;-) > Am I missing a useful page somewhere in the documentation? Do I have some > wrong assumptions about how Guix is used? Thanks for any help. > I don't know about the documentation. As for wrong assumptions I hope I have made things a bit clearer ;-)