2016-04-17 6:15 GMT+02:00 Zachary Kanfer <zkanfer@gmail.com>:
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 ;-)