Commit graph

281 commits

Author SHA1 Message Date
Alex Kost
a54a237b5f emacs: Add support for displaying outputs.
Suggested by Taylan Ulrich Bayirli/Kammer and Ludovic Courtès.

* emacs/guix-base.el (guix-param-titles): Add output titles.
  (guix-messages): Add output messages.
  (guix-get-package-id-and-output-by-output-id): New procedure.
  (guix-define-buffer-type): Add ':buffer-name' key.
* emacs/guix-info.el: Add "output-info" buffer type.
  (guix-info-insert-methods): Add output methods.
  (guix-info-displayed-params): Add output params.
  (guix-output-info-insert-version, guix-output-info-insert-output): New
  procedures.
* emacs/guix-list.el: Add "output-list" buffer type.
  (guix-list-column-format): Add output formats.
  (guix-list-column-value-methods): Add output methods.
  (guix-package-list-type): New variable.
  (guix-generation-list-show-packages): Use it.
  (guix-package-list-marking-check): Use 'guix-output-list-mode'.
  (guix-list-mark-package-upgrades): New procedure.
  (guix-package-list-mark-upgrades): Use it.
  (guix-list-execute-package-actions): New procedure.
  (guix-package-list-execute): Use it.
  (guix-list-describe-maybe): New procedure.
  (guix-list-describe): Use it.
  (guix-output-list-mark-install, guix-output-list-mark-delete,
  guix-output-list-mark-upgrade, guix-output-list-mark-upgrades,
  guix-output-list-execute, guix-output-list-make-action,
  guix-output-list-describe): New procedures.
  (guix-output-list-describe-type): New variable.
* emacs/guix.el (guix-get-show-packages): Use 'guix-package-list-type'.
* doc/emacs.texi (emacs Commands): Mention 'guix-package-list-type'.
  (emacs List buffer): Adjust accordingly.
  (emacs Info buffer): Likewise.
  (emacs Buffer Names): New node.
  (emacs Keymaps): Add keymaps for output buffers.
2014-09-24 16:09:20 +04:00
Ludovic Courtès
8689901f95 Introduce the 'GUIX_PACKAGE_PATH' environment variable.
* gnu/packages.scm (%package-module-path): Honor $GUIX_PACKAGE_PATH.
* test-env.in: Unset 'GUIX_PACKAGE_PATH'.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Package Modules): Document it.
2014-09-24 14:06:09 +02:00
Ludovic Courtès
300868ba57 guix build: Add -L/--load-path as a common option.
* guix/scripts/build.scm (show-build-options-help): Document -L.
  (%standard-build-options): Add -L/--load-path.
* tests/guix-package.sh: Test it.
2014-09-24 14:06:09 +02:00
Ludovic Courtès
4627a46470 services: Add 'bitlbee-service'.
* gnu/services/networking.scm (bitlbee-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
2014-09-23 23:46:01 +02:00
Ludovic Courtès
52ac153e2a linux-initrd: Adjust VM code and doc to new 'base-initrd' signature.
This fixes regressions introduced in de1c158 ("system: Add support for
boot-time mapped devices.").

* doc/guix.texi (Initial RAM Disk): Adjust example with custom use of
  'base-initrd'.  Document #:mapped-devices parameter of 'base-initrd'.
* gnu/system/vm.scm (system-disk-image, system-qemu-image,
  virtualized-operating-system): Adjust call to 'base-initrd' to new
  signature.
2014-09-22 21:29:41 +02:00
Ludovic Courtès
dbcb0ab1a9 doc: Remove a couple of limitations.
* doc/guix.texi (System Installation): Remove encrypted disks and swap
  from the limitations.
2014-09-18 22:52:03 +02:00
Ludovic Courtès
510f9d8624 doc: Document mapped devices.
* doc/guix.texi (Mapped Devices): New subsection.
2014-09-18 19:50:00 +02:00
Ludovic Courtès
a023cca8d9 services: Add 'dhcp-client-service'.
* gnu/services/networking.scm (dhcp-client-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
2014-09-14 23:49:02 +02:00
Ludovic Courtès
24e752c097 doc: Mention audio, video, and cdrom groups more prominently.
* doc/guix.texi (User Accounts): Add the "audio", "video", and "cdrom"
  groups in the example.
2014-09-14 23:49:02 +02:00
Ludovic Courtès
42d10464be linux-initrd: Store Linux modules in a normal store directory.
* gnu/system/linux-initrd.scm (expression->initrd): Remove #:linux and
  #:linux-modules parameters.  Remove call to
  'float-linux-module-directory'.
  (base-initrd): Add call to 'float-linux-module-directory'.  Use it in
  #:linux-modules argument in the gexp.  Remove #:linux and
  #:linux-modules arguments to 'expression->initrd'.
* gnu/build/linux-initrd.scm (build-initrd): Remove
  #:linux-module-directory parameter.  Don't create 'modules'
  sub-directory.
* gnu/build/linux-boot.scm (boot-system): Mentin that LINUX-MODULES is a
  list of absolute file names.  Don't prepend "/modules/" to
  LINUX-MODULES.
* doc/guix.texi (Initial RAM Disk): Adjust accordingly.
2014-09-08 23:47:29 +02:00
Ludovic Courtès
df650fa84e linux-initrd: Remove #:to-copy argument of 'expression->initrd'.
* gnu/system/linux-initrd.scm (expression->initrd): Remove #:to-copy
  parameter.  Remove 'graph-files', and adjust #:references-graphs
  arguments to just list INIT.
  (base-initrd): Remove #:to-copy argument.
* doc/guix.texi (Initial RAM Disk): Adjust accordingly.
2014-09-08 23:47:28 +02:00
Alex Kost
91cc37a1e3 emacs: Improve key bindings for marking the packages.
Use "U" to upgrade the current package, "^" to upgrade all.

* emacs/guix-list.el: (guix-list-unmark): With prefix, mark all.
  (guix-package-list-mark-outputs): New procedure.
  (guix-package-list-mark-install, guix-package-list-mark-delete)
  (guix-package-list-mark-upgrade): Use it.
  (guix-package-list-mark-upgrades): New command.
* doc/emacs.texi (emacs List buffer): Update the manual accordingly.
2014-09-08 22:01:58 +04:00
Ludovic Courtès
b53833b2ef gexp: Allow use of high-level objects in #:references-graphs.
* guix/gexp.scm (lower-reference-graphs): New procedure.
  (gexp->derivation)[graphs-file-names]: New procedure.
  Use 'lower-reference-graphs', and augment #:inputs argument as a
  function of #:references-graphs.
* doc/guix.texi (G-Expressions): Adjust 'gexp->derivation' documentation
  accordingly.
* tests/gexp.scm ("gexp->derivation, store copy"): Remove reference to
  TWO in BUILD-DRV.  Use TWO directly in #:references-graphs argument.
  ("gexp->derivation #:references-graphs"): New test.
* gnu/system/vm.scm (qemu-image): Remove variable 'graph'; use INPUTS as
  the #:references-graphs argument to
  'expression->derivation-in-linux-vm'.
2014-09-06 23:42:56 +02:00
Alex Kost
457f60fa06 Add Emacs user interface.
* configure.ac (emacsuidir): New variable.
  (AC_CONFIG_FILES): Add 'emacs/guix-init.el', 'emacs/guix-helper.scm'.
* Makefile.am: Include 'emacs.am'.
* emacs.am: New file.
* doc/emacs.texi: New file.
* doc/guix.texi: Include 'emacs.texi'.
* emacs/guix-backend.el: New file.
* emacs/guix-base.el: New file.
* emacs/guix-helper.scm.in: New file.
* emacs/guix-history.el: New file.
* emacs/guix-info.el: New file.
* emacs/guix-init.el.in: New file.
* emacs/guix-list.el: New file.
* emacs/guix-main.scm: New file.
* emacs/guix-utils.el: New file.
* emacs/guix.el: New file.
2014-09-03 23:50:35 +04:00
Cyril Roelandt
b4f5e0e87c scripts: add guix lint
* guix/scripts/lint.scm: New file. Defines a 'lint' tool for Guix packages.
* tests/lint.scm: New file.
* Makefile.am (MODULES, SCM_TESTS): Add them.
* po/guix/Makevars: Update appropriately.
* po/guix/POTFILES.in: Update appropriately.
* doc/guix.texi: Document "guix lint".
2014-09-03 02:07:07 +02:00
Ludovic Courtès
ad14d9e79d doc: Clarify system installation and configuration details.
Reported by leth on #guix.

* doc/guix.texi (System Installation): Suggest running 'reboot' instead
  of 'umount /mnt'.
  (Initial RAM Disk): Add xref to SRFI-26.
2014-09-01 23:25:44 +02:00
Ludovic Courtès
ab3893d713 daemon: Rename '--disable-store-optimization' to '--disable-deduplication'.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_DISABLE_STORE_OPTIMIZATION):
  Rename to...
  (GUIX_OPT_DISABLE_DEDUPLICATION): ... this.  Adjust user accordingly.
  (options): Add "disable-deduplication".  Make
  "disable-store-optimization" a hidden alias.
* doc/guix.texi (Invoking guix-daemon): Adjust to new option name.  Add
  index entry.  Improve description.
2014-08-31 14:44:40 +02:00
Mark H Weaver
dd16424466 doc: %final-inputs is now in (gnu packages commencement).
* doc/guix.texi (Bootstrapping): Adjust the text to reflect that
  '%final-inputs' is now in (gnu packages commencement).
2014-08-28 13:59:49 -04:00
Ludovic Courtès
667b250846 gexp: Add 'ungexp-native' and 'ungexp-native-splicing'.
* guix/gexp.scm (<gexp>)[natives]: New field.
  (write-gexp): Use both 'gexp-references' and
  'gexp-native-references'.
  (gexp->derivation): Use both 'gexp-inputs' and 'gexp-native-inputs',
  and append them.
  (gexp-inputs): Add 'references' parameter and honor it.
  (gexp-native-inputs): New procedure.
  (gexp->sexp)[reference->sexp]: Add 'native?' parameter and honor it.
  Use it, and use 'gexp-native-references'.
  (gexp)[collect-native-escapes]: New procedure.
  [escape->ref]: Handle 'ungexp-native' and 'ungexp-native-splicing'.
  [substitute-ungexp, substitute-ungexp-splicing]: New procedures.
  [substitute-references]: Use them, and handle 'ungexp-native' and
  'ungexp-native-splicing'.
  Adjust generated 'make-gexp' call to provide both normal references
  and native references.
  [read-ungexp]: Support 'ungexp-native' and
  'ungexp-native-splicing'.
  Add reader extension for #+.
* tests/gexp.scm (gexp-native-inputs): New procedure.
  (gexp->sexp*): Add 'target' parameter.
  ("ungexp + ungexp-native",
  "input list + ungexp-native",
  "input list splicing + ungexp-native-splicing",
  "gexp->derivation, ungexp-native",
  "gexp->derivation, ungexp + ungexp-native"): New tests.
  ("sugar"): Add tests for #+ and #+@.
* doc/guix.texi (G-Expressions): Document 'ungexp-native' et al.
2014-08-18 15:01:58 +02:00
Ludovic Courtès
68a61e9ffb gexp: Add #:target parameter to 'gexp->derivation'.
* guix/gexp.scm (lower-inputs): Add #:system and #:target.  Use
  'package->cross-derivation' when TARGET is true.  Honor SYSTEM.
  (gexp->derivation): Add #:target argument.  Pass SYSTEM and TARGET to
  'lower-inputs' and 'gexp->sexp'.
  (gexp->sexp): Add #:system and #:target.  Pass them in recursive call
  and to 'package-file'.
* tests/gexp.scm (gexp->sexp*): Add 'system' and 'target' parameters.
  ("gexp->derivation, cross-compilation"): New test.
2014-08-17 21:20:11 +02:00
Ludovic Courtès
4231f05bbc monads: Add 'package->cross-derivation' and #:target for 'package-file'.
* guix/monads.scm (package-file): Add #:target keyword parameter and
  honor it.
  (package->cross-derivation): New procedure.
* tests/monads.scm ("package-file + package->cross-derivation"): New test.
* doc/guix.texi (The Store Monad): Update 'package-file' documentation.
  Add 'package->cross-derivation'.
2014-08-17 20:58:58 +02:00
Ludovic Courtès
b9b8607824 Add (guix monad-repl).
* guix/monad-repl.scm: New file.
* guix.scm: Add it.
* Makefile.am (MODULES): Add it.
* doc/guix.texi (The Store Monad): Document it.
2014-08-15 16:26:28 +02:00
Mark H Weaver
ce33631f54 doc: Fix mention of default log location.
* doc/guix.texi (Invoking guix-daemon): Fix mention of default log location.
2014-08-15 01:18:50 -04:00
Ludovic Courtès
6621cdb65c doc: Replace incorrect uses of @ref by @pxref.
* doc/guix.texi: Use @pxref at the end of sentences, not @ref.
2014-07-25 23:42:42 +02:00
Ludovic Courtès
445d652916 doc: Fix typo in USB image file name.
* doc/guix.texi (System Installation): Change image file name.
2014-07-25 13:47:08 +02:00
Ludovic Courtès
c8fa34265d system: Add the 'system?' field for user groups.
Suggested by Mark H. Weaver.

* gnu/system/shadow.scm (<user-group>)[system?]: New field.
  (%base-groups): Introduce 'system-group' macro, and use it.
* gnu/system.scm (user-group->gexp): Pass the 'system?' field.
* guix/build/activation.scm (add-group): Add #:system? and honor it.
  (activate-users+groups): Handle the 'system?' field.
* gnu/system/file-systems.scm (%tty-gid): Choose an ID below 1000.
* doc/guix.texi (User Accounts): Document the 'system?' field.
2014-07-25 00:12:35 +02:00
Ludovic Courtès
931c132a58 doc: Make sure out-of-source-tree builds find os-config.tmpl.
* Makefile.am (BUILT_SOURCES): New variable.
* daemon.am (BUILT_SOURCES): Use +=.
* doc.am (BUILT_SOURCES, MAINTAINERCLEANFILES, EXTRA_DIST): Add
  doc/os-config.texi.
  (doc/os-config.texi): New target.
* doc/guix.texi (System Installation): Include os-config.texi.
2014-07-24 23:50:55 +02:00
Ludovic Courtès
054e85761f doc: Add "guix system" to 'dir'.
* doc/guix.texi: Add "guix system" to the dir entry.
2014-07-24 23:07:53 +02:00
Ludovic Courtès
1dac856638 install: Add a configuration template to the image.
* gnu/system/os-config.tmpl: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it
* gnu/system/install.scm (configuration-template-service): New
  procedure.
  (installation-services): Call it.
* doc/guix.texi (System Installation): Mention
  configuration-template.scm, and @include gnu/system/os-config.tmpl.
2014-07-24 23:02:27 +02:00
Ludovic Courtès
0a90af1531 monads: Add 'interned-file'.
* guix/monads.scm (interned-file): New procedure.
* tests/monads.scm ("interned-file"): New test.
* doc/guix.texi (The Store Monad): Document it.
2014-07-24 23:02:26 +02:00
Ludovic Courtès
7ab44369b3 doc: Recommend partition labels.
* doc/guix.texi (System Installation): Recommend partition labels.
2014-07-24 23:02:26 +02:00
Ludovic Courtès
83a17b6236 install: Add a service to back the store with the target disk.
Fixes <http://bugs.gnu.org/18061>.
Reported by Adam Pribyl <pribyl@lowlevel.cz>.

* gnu/services/dmd.scm (dmd-configuration-file)[config]: Import (guix
  build utils).
* gnu/system/install.scm (make-cow-store, cow-store-service): New
  procedures.
  (installation-services): Use it.
  (%backing-directory): New variable.
* doc/guix.texi (System Installation): Add the 'deco start cow-store
  /mnt' phase.
2014-07-23 17:47:25 +02:00
Ludovic Courtès
db17ae5c27 system: Add /dev/shm.
* gnu/system/file-systems.scm (%shared-memory-file-system): New
  variable.
  (%base-file-systems): Add it.
* doc/guix.texi (File Systems): Document it.
2014-07-23 02:02:07 +02:00
Ludovic Courtès
2c071ce96e system: Recognize more file system flags.
* guix/build/linux-initrd.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC): New
  variables.
  (mount-flags->bit-mask): New procedure.
  (mount-file-system)[flags->bit-mask]: Remove.
  Use 'mount-flags->bit-mask' instead.
  In /etc/mtab, use the empty string when OPTIONS is false.
* gnu/services/base.scm (file-system-service): Add #:flags parameter and
  honor it.
* gnu/system.scm (other-file-system-services): Pass FLAGS to
  'file-system-service'.
2014-07-23 02:02:07 +02:00
Ludovic Courtès
a85b83d227 doc: Merge the type, variable, and function indices.
* doc/guix.texi (Function Index): Rename to...
  (Programming Index): ... this.  Merge the type, variable, and function
  indices.
2014-07-23 02:02:07 +02:00
Ludovic Courtès
7f239fd33f system: Add 'file-system' decl. for /dev/pts, and use the right options.
Fixes <http://bugs.gnu.org/18081>.

* gnu/system/file-systems.scm (%devtmpfs-file-system): Add
  'needed-for-boot?' field.
  (%tty-gid, %pseudo-terminal-file-system): New variables.
  (%base-file-systems): Add %PSEUDO-TERMINAL-FILE-SYSTEM.
* gnu/services/base.scm (udev-service): Remove dependency on
  'file-system-/dev'.
* gnu/system/shadow.scm (%base-groups): Add 'id' field for group 'tty'.
* guix/build/linux-initrd.scm (boot-system): Remove 'mount' call for
  /dev/pts.
* doc/guix.texi (File Systems): Add %pseudo-terminal-file-system.
2014-07-23 02:02:07 +02:00
Ludovic Courtès
4e469051a7 system: Add 'create-mount-point?' file system option.
* gnu/system/file-systems.scm (<file-system>)[create-mount-point?]: New
  field.
* gnu/services/base.scm (file-system-service): Add #:create-mount-point?
  parameter and honor it.
* gnu/system.scm (other-file-system-services): Update
  'file-system-service' call accordingly.
* doc/guix.texi (File Systems): Document it.
2014-07-23 02:02:06 +02:00
Ludovic Courtès
a69576ea85 system: Add '%devtmpfs-file-system' for udev, and '%base-file-systems'.
Suggested by Adam Pribyl <pribyl@lowlevel.cz>.

* gnu/services/base.scm (udev-service)[requirement]: Add
  'file-system-/dev'.
* gnu/system/file-systems.scm (%devtmpfs-file-system,
  %base-file-systems): New variables.
* gnu/system/install.scm (installation-services)[file-systems]: Use
  %base-file-systems.
* build-aux/hydra/demo-os.scm (file-systems): Likewise.
* doc/guix.texi (System Installation): Show %BASE-FILE-SYSTEMS in the
  example.
  (Using the Configuration System): Likewise.
  (File Systems): Document %base-file-systems, %devtmpfs-file-system,
  %binary-format-file-system, and %fuse-control-file-system.
2014-07-22 16:59:10 +02:00
Ludovic Courtès
7cb9666dd0 doc: Fix typo.
* doc/guix.texi (System Installation): s/are/is/.
2014-07-22 15:23:14 +02:00
Cyril Roelandt
2aa6efb0b9 guix package: add a "show" option.
* doc/guix.texi: Update the documentation.
* guix/scripts/package.scm: Add a "show" option.
* tests/guix-package.sh: Add a test for the "show" option.
2014-07-21 22:18:03 +02:00
Ludovic Courtès
7779ab611d doc: Show output of 'guix refresh --list-dependent' example.
* doc/guix.texi (Invoking guix refresh): Show example output of the
  command.
2014-07-20 22:39:02 +02:00
Eric Bavier
7d193ec348 guix: refresh: Add --list-dependent option.
* guix/packages.scm (package-direct-inputs): New procedure.
* gnu/packages.scm (vhash-refq, package-direct-dependents)
  (package-transitive-dependents, package-covering-dependents): New procedures.
* guix/scripts/refresh.scm (%options, show-help, guix-refresh): Add
  --list-dependent option.
* doc/guix.texi (Invoking guix refresh): Document '--list-dependent' option.
2014-07-20 11:36:09 -05:00
Mark H Weaver
1c00f83650 Fix typos in manual.
* doc/guix.texi (Using the Configuration System): 'gid' -> 'group'
  in user-account example.
  (Initial RAM Disk): 'base-init' -> 'base-initrd'.
2014-07-18 10:41:47 -04:00
Ludovic Courtès
0ae8c15aef doc: Add "Setuid Programs" node.
* doc/guix.texi (Setuid Programs): New node.
2014-07-17 18:10:16 +02:00
Ludovic Courtès
fd1b1fa296 doc: Add "Initial RAM Disk" section.
* doc/guix.texi (Initial RAM Disk): New node.
* gnu/system/linux-initrd.scm (expression->initrd): Adjust docstring.
2014-07-17 17:49:34 +02:00
Ludovic Courtès
8aaaae38a3 doc: List noteworthy limitations.
* doc/guix.texi (Limitations): New subsection.
2014-07-17 14:36:36 +02:00
Ludovic Courtès
cf4a912919 doc: Move "System Configuration" higher.
* doc/guix.texi (GNU Distribution): Move "System Configuration" right
  after "System Installation".
2014-07-16 15:54:47 +02:00
Ludovic Courtès
5af6de3e67 doc: Add a "System Installation" node.
* doc/guix.texi (Installation): Add cross-ref to "System Installation".
  (System Installation): New section.
  (System Configuration): Remove disclaimer.
2014-07-15 00:43:04 +02:00
Ludovic Courtès
246a8106ff doc: Remove redundant listing of services.
* doc/guix.texi (Defining Services): Remove listing of service
  procedures; add xref to "Services".
2014-07-14 16:34:24 +02:00
Ludovic Courtès
c11a6eb1e5 services: Add options to 'guix-service'.
* gnu/services/base.scm (guix-service): Add #:use-substitutes? and
  #:extra-options parameters, and honor them.
* doc/guix.texi (Base Services): Adjust accordingly.
2014-07-14 15:51:22 +02:00
Ludovic Courtès
927097effd services: Add Tor service.
* gnu/services/networking.scm (tor-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
* build-aux/hydra/demo-os.scm: Use it.  Add TOR and TORSOCKS to
  'packages'.
2014-07-12 23:17:54 +02:00
Ludovic Courtès
ef5dd60a3f doc: Start writing about services.
* doc/guix.texi (Using the Configuration System): Remove details about
  '%base-services', and link to "Services".
  (Services): Add introductory text.
  (Base Services, Networking Services, X Window): New nodes.
2014-07-11 23:20:48 +02:00
Ludovic Courtès
df2ce34385 guix system: Add '--system' option.
* guix/scripts/system.scm (switch-to-system): Add #:system parameter;
  pass it to 'run-with-store'.
  (%options): Add '--system'.
  (guix-system): Pass the 'system' option to 'run-with-store',
  'package-derivation', and 'switch-to-system' calls.
* doc/guix.texi (Invoking guix system): Document '--system' and
  '--image-size'.
2014-07-08 23:42:35 +02:00
Ludovic Courtès
8451a568f4 doc: Document user accounts and user groups.
* doc/guix.texi (File Systems): Fix typo.
  (User Accounts): Populate.
2014-07-03 23:36:01 +02:00
Ludovic Courtès
113daf6270 doc: Write about file system configuration.
* doc/guix.texi (Using the Configuration System): Change 'guix system
  boot' to 'guix system reconfigure'.
  (File Systems, User Accounts, Services): New nodes.
2014-07-02 23:42:06 +02:00
Ludovic Courtès
0918e64a49 doc: Improve wording and example in "Using the Configuration System".
* doc/guix.texi (Using the Configuration System): Make the intro more
  user-oriented.  Change example to return an operating system.  Fix
  typos.  Mention mandatory/optional fields.
2014-06-27 23:38:21 +02:00
Ludovic Courtès
b25937e318 guix system: Add 'reconfigure' action.
* guix/scripts/system.scm (%system-profile): New variable.
  (switch-to-system, previous-grub-entries): New procedures.
  (unless-file-not-found): New macro.
  (show-help): Add 'reconfigure'.
  (guix-system): Handle it.
* gnu/system.scm: Export 'operating-system-activation-script'.
* doc/guix.texi (Invoking guix system): Document it.
2014-06-27 00:12:40 +02:00
Ludovic Courtès
080571eeac doc: Mention KVM support for 'guix system'.
* doc/guix.texi (Invoking guix system): Add note about KVM support.
2014-06-19 23:35:41 +02:00
Ludovic Courtès
56b8210697 guix build: Allow gexps to be passed to '-e'.
* guix/ui.scm (%guix-user-module): New variable.
  (read/eval): Pass it as the second argument to 'eval'.
* guix/scripts/build.scm (options/resolve-packages): Add case for
  'gexp?'.
* tests/guix-build.sh: Add tests.
* doc/guix.texi (Invoking guix build): Document '-e gexp'.
guxi build: Allow gexps to be passed to '-e'.

* guix/ui.scm (%guix-user-module): New variable.
  (read/eval): Pass it as the second argument to 'eval'.
* guix/scripts/build.scm (options/resolve-packages): Add case for
  'gexp?'.
* tests/guix-build.sh: Add tests.
* doc/guix.texi (Invoking guix build): Document '-e gexp'.
2014-06-14 22:55:59 +02:00
Ludovic Courtès
49ad317ae1 doc: Add a few words on the term "derivation".
* doc/guix.texi (Programming Interface): Add a sentence on "derivation".
2014-06-09 18:55:48 +02:00
Ludovic Courtès
63a4282468 derivations: 'build-expression->derivation' supports #:allowed-references.
* guix/derivations.scm (build-expression->derivation): Add
  #:allowed-references and pass it to 'derivation.
* doc/guix.texi (Derivations): Adjust accordingly.
2014-06-06 17:07:26 +02:00
Ludovic Courtès
6f436c54d6 system: Define '%base-packages' and use it.
* gnu/system.scm (<operating-system>)[packages]: Change default value to
  %BASE-PACKAGES.
  (%base-packages): New variable.
* gnu/system/install.scm (installation-os): Use it when defining the
  'packages' field.
* doc/guix.texi (Using the Configuration System): Use %BASE-PACKAGES in
  example.  Remove now unneeded module imports.  Explain this.
2014-06-04 18:15:50 +02:00
Ludovic Courtès
b53be755e4 derivations: Add #:allowed-references 'derivation' parameter.
* guix/derivations.scm (derivation): Add #:allowed-references
  parameter.
  [user+system-env-vars]: Honor it.
* tests/derivations.scm ("derivation #:allowed-references, ok",
  "derivation #:allowed-references, not allowed",
  "derivation #:allowed-references, self allowed",
  "derivation #:allowed-references, self not allowed"): New tests.
* doc/guix.texi (Derivations): Document #:allowed-references.
2014-06-01 23:32:26 +02:00
Ludovic Courtès
85a83edb36 linux-initrd: Allow use of volume labels in 'file-system' declarations.
* guix/build/linux-initrd.scm (%ext2-endianness, %ext2-sblock-magic,
  %ext2-sblock-creator-os, %ext2-sblock-uuid, %ext2-sblock-volume-name):
  New macros.
  (read-ext2-superblock, ext2-superblock-uuid,
  ext2-superblock-volume-name, disk-partitions,
  partition-label-predicate, find-partition-by-label,
  canonicalize-device-spec): New procedures.
  (mount-file-system): Use 'canonicalize-device-spec' on SOURCE.
  (boot-system): Likewise for ROOT.
* doc/guix.texi (Using the Configuration System): Adjust 'file-system'
  declaration accordingly.
2014-05-30 23:46:17 +02:00
Ludovic Courtès
25083588b9 doc: Augment "Package Naming".
* doc/guix.texi (Package Naming): Mention underscores, and give SDL_net
  as an example.
2014-05-25 17:00:01 +02:00
Ludovic Courtès
4b2615e1ca services: nscd: Provide an 'activate' script to make /var/run/nscd.
* gnu/services/base.scm (nscd-service): Add 'activate' field.
* guix/build/install.scm (directives): Remove /var/run/nscd; add
  /var/run.
* doc/guix.texi (Defining Services): Add 'activate' field in example.
  Document it.
2014-05-24 18:10:05 +02:00
Ludovic Courtès
fb729425dc guix system: Add 'disk-image' action.
* guix/scripts/system.scm (show-help): Add 'disk-image'.
  (guix-system)[parse-options]: Support 'disk-image' action.
  [option-arguments]: Likewise.
  Handle the 'disk-image' action.
* doc/guix.texi (Invoking guix system): Document 'disk-image'.
2014-05-22 23:24:13 +02:00
Ludovic Courtès
c938494598 Add (gnu) module.
* gnu.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* build-aux/hydra/demo-os.scm: Use (gnu) and strip import list
  accordingly.
* doc/guix.texi (Using the Configuration System): Adjust example
  accordingly.
2014-05-22 23:24:13 +02:00
Ludovic Courtès
d467e640aa doc: Show the 'bootloader' field in system example.
* doc/guix.texi (Using the Configuration System): Add 'bootloader'
  field.
2014-05-19 23:52:40 +02:00
Ludovic Courtès
c79d54fe41 guix system: 'guix system init' installs GRUB by default.
* guix/scripts/system.scm (install): Add #:grub?, #:grub.cfg, and
  #:device parameters; honor them.
  (show-help): Document '--no-grub'.
  (%options): Add '--no-grub'.
  (%default-options): Add 'install-grub?'.
  (guix-system): Honor 'install-grub?' option from OPTS.  Adjust
  'install' call accordingly.
* doc/guix.texi (Invoking guix system): Document '--no-grub'.
2014-05-19 23:52:39 +02:00
Ludovic Courtès
72b9d60df4 guix system: Add 'init' sub-command.
* guix/scripts/system.scm (install): New procedure.
  (guix-system)[parse-option]: Remove check for extraneous arguments.
  [match-pair, option-arguments]: New procedures.
  Use 'option-arguments'.  Honor 'init'.
  (show-help): Document 'init'.
* doc/guix.texi (Invoking guix system): Document 'init'.
2014-05-18 22:27:23 +02:00
Ludovic Courtès
7889394e05 guix system: Add 'build' action.
* guix/scripts/system.scm (show-help): Document 'build' action.
  (guix-system): Honor 'build' action.
* doc/guix.texi (Invoking guix system): Add 'build' action.
2014-05-16 21:56:00 +02:00
Ludovic Courtès
64d76fa6c2 doc: Improve debugging file documentation.
* doc/guix.texi (Installing Debugging Files): Add @cindex.  Remove
  unneeded '-i' in example.  Mention source code an 'directory'.  Link
  to "Build Systems" instead of "Defining Packages".
2014-05-14 01:02:46 +02:00
Ludovic Courtès
a12d92f54e doc: Add example for --search.
* doc/guix.texi (Invoking guix package): Add LGPLv3 example.
2014-05-12 23:55:28 +02:00
Andreas Enge
af8a56b8a2 doc: Add a section on perl modules in the packaging guidelines.
* doc/guix.texi (Perl modules): New section explaining the naming of perl
    modules.
2014-05-11 12:27:37 +02:00
Ludovic Courtès
ef4ab0a4c5 doc: Mention Kiselyov's work on "staging".
* doc/guix.texi (G-Expressions): Mention Oleg's work on "staging" in
  footnote.
2014-05-08 23:42:15 +02:00
Ludovic Courtès
e20fd1bf80 doc: Minor improvements in "G-Expressions".
* doc/guix.texi (G-Expressions): Show coreutils version number in store
  file name.  Add xref to "Derivations", in documentation of
  'gexp->derivation'.  Fix typo.
2014-05-03 12:02:43 +02:00
Ludovic Courtès
83bcd0b895 system: Add first-class file system declarations.
* gnu/system.scm (<operating-system>)[initrd]: Default to
  'qemu-initrd'.
  (<file-system>): New record type.
  (operating-system-root-file-system): New procedure.
  (operating-system-derivation): Take the device name for GRUB from
  'operating-system-root-file-system'.  Pass the
  'operating-system-initrd' procedure the list of boot file systems.
* gnu/system/linux-initrd.scm (file-system->spec): New procedure.
  (qemu-initrd): Add 'file-systems' parameter, and remove #:mounts
  parameter.
  [file-system-type-predicate]: New procedure.
  [linux-modules]: Use it.
  Adjust #:mounts argument in 'boot-system' call.
  (gnu-system-initrd): Remove.
* gnu/system/vm.scm (%linux-vm-file-systems): New variable.
  (expression->derivation-in-linux-vm): Adjust call to 'qemu-initrd'.
  (virtualized-operating-system): New procedure.
  (system-qemu-image/shared-store-script)[initrd]: Remove.  Use
  'virtualized-operating-system'.  Get the 'initrd' file from OS-DRV.
* guix/build/linux-initrd.scm (mount-qemu-smb-share, mount-qemu-9p):
  Remove.
  (MS_RDONLY, MS_BIND): New global variables.
  (bind-mount): Remove local 'MS_BIND' definition.
  (mount-root-file-system): New procedure, with code formerly in
  'boot-system'.
  (mount-file-system): New procedure.
  (boot-system): Add #:root-fs-type parameter.  Remove 'MS_RDONLY' local
  variable.  Use 'mount-root-file-system' and 'mount-file-system'.
* doc/guix.texi (Using the Configuration System): Add 'file-system'
  declaration.
2014-05-03 00:46:51 +02:00
Ludovic Courtès
ada3df03e3 monads: Hide 'derivation-expression' and 'lower-inputs'.
* guix/monads.scm: Unexport 'lower-inputs' and 'derivation-expression'.
  (text-file*): Add comment about the switch to 'gexp->derivation'.
  (lower-inputs): Add comment about its doom.
  (derivation-expression): Likewise.
* guix/gexp.scm (lower-inputs*): Rename to...
  (lower-inputs): ... this.  Update callers.
* tests/monads.scm (derivation-expression): New procedure.
* doc/guix.texi (The Store Monad): Use 'gexp->derivation' instead of
  'derivation-expression'.  Remove documentation of
  'derivation-expression'.
* guix/ui.scm (read/eval): Use THE-ROOT-MODULE so that macros are
  properly expanded.
* tests/guix-build.sh: Use 'gexp->derivation' instead of
  'derivation-expression'.monads: Hide 'derivation-expression' and 'lower-inputs'.
2014-04-28 23:41:12 +02:00
Ludovic Courtès
b5f4e68635 services: Rewrite using gexps.
* gnu/services.scm (<service>)[inputs]: Remove.
* gnu/system.scm (links): Remove.
  (etc-directory): Add PASSWD and SHADOW to #:inputs.
  (operating-system-boot-script): Pass ETC to 'dmd-configuration-file'.
  (operating-system-derivation): Remove EXTRAS from the union.
* gnu/system/linux.scm (pam-service->configuration): Rewrite in terms of
  'gexp->derivation'.  Compute the contents on the build side.  Expect
  'arguments' to contain a list of gexps.
  (pam-services->directory): Rewrite in terms of 'gexp->derivation'.
  (unix-pam-service): Change 'arguments' to a list of one gexp.
* gnu/system/shadow.scm (<user-account>)[inputs]: Remove.
  [shell]: Change default value to a gexp.
  (passwd-file): Rewrite in terms of 'gexp->derivation'.  Compute
  contents on the build side.
* gnu/services/base.scm (host-name-service, mingetty-service,
  nscd-service, syslog-service, guix-service): Change 'start' and 'stop'
  to gexps; remove 'inputs' field.
  (guix-build-accounts): Change 'shell' field to a gexp.
* gnu/services/networking.scm (static-networking-service): Change
  'start' and 'stop' to gexps; remove 'inputs' field.
* gnu/services/xorg.scm (slim-service): Likewise.
* gnu/services/dmd.scm (dmd-configuration-file): Expect ETC to be a
  derivation.  Change 'config' to a gexp.  Use 'gexp->file' instead of
  'text-file'.
* doc/guix.texi (Defining Services): Update nscd example with gexps, and
  without 'inputs'.  Add xref to "G-Expressions".
2014-04-28 23:24:18 +02:00
Ludovic Courtès
21b679f694 Add (guix gexp).
* guix/gexp.scm: New file.
* tests/gexp.scm: New file.
* Makefile.am (MODULES): Add guix/gexp.scm.
  (SCM_TESTS): Add tests/gexp.scm.
* doc/guix.texi (Derivations): Add #:inputs in 'derivation' example.
  Mark 'build-expression->derivation' as deprecated, refer to
  "G-Expressions".  Remove paragraph about code strata.
  (G-Expressions): New node.
2014-04-28 23:24:17 +02:00
Alírio Eyng
9bf404e9e6 doc: Expect to fix typo.
* doc/guix.texi (Build Systems): "except" it is.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-09 22:22:19 +02:00
Ludovic Courtès
2e7b5cea8c guix system: Add 'vm-image' action and '--image-size' option.
* guix/scripts/system.scm (%options): Add --image-size.
  (%default-options): Add 'image-size'.
  (guix-system)[parse-options]: Handle the 'vm-image' action.
  Honor them.
  (show-help): Update accordingly.
* doc/guix.texi (Invoking guix system): Add 'vm-image'.
2014-04-09 01:20:19 +02:00
Ludovic Courtès
7458bd0a4a doc: Add "Build Systems" section.
* doc/guix.texi (Defining Packages): Add 'arguments' field in the
  example; update 'synopsis' and 'description'.  Remove most of the
  description of 'build-system', and instead reference to the "Build
  Systems" node.  Briefly describe 'arguments' field, and remove more
  elaborate description.  Add cross-reference to "Packaging Guidelines".
  (Build Systems): New node.
  (Packaging Guidelines): Mention '--log-file'.
2014-04-05 17:02:21 +02:00
Ludovic Courtès
4743a4da9b doc: Update description of the chroot contents.
* doc/guix.texi (Build Environment Setup): Adjust description of /dev
  and /proc; remove footnote about /dev/shm, now obsolete.
2014-04-03 23:55:51 +02:00
Alex Sassmannshausen
ef27aa9c8c doc: fix typo.
* doc/guix.texi (Substitutes): add a missing 's'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-03-31 21:59:14 +02:00
Ludovic Courtès
c4202d60b2 doc: Document substitutes.
* doc/guix.texi (Invoking guix-daemon): Add cross-reference to
  "Substitutes".
  (Features): Remove footnote about unauthenticated substitutes.  Link
  to "Substitutes".
  (Substitutes): New node.
  (Invoking guix build): Link to "Substitutes".
  (Packaging Guidelines): Likewise.
2014-03-30 23:37:46 +02:00
Ludovic Courtès
cecd72d55a offload: Allow build machines to specify a port number.
* guix/scripts/offload.scm (<build-machine>): Add 'port' field.
  (remote-pipe, send-files): Use lsh's '-p' option when invoking it.
2014-03-13 21:58:04 +01:00
Ludovic Courtès
7f3673f21d guix build: Add '--with-source'.
* guix/scripts/build.scm (package-with-source): New procedure.
  (show-help): Add '--with-source'.
  (%options): Likewise.
  (options->derivations): Call 'options/with-source' and
  'options/resolve-packages'.
  (options/resolve-packages, options/with-source): New procedures.
* doc/guix.texi (Invoking guix build): Document '--with-source'.
2014-03-12 00:22:41 +01:00
Pierre-Antoine Rault
5ff3c4b820 doc: Update packaging guidelines.
* HACKING (Submitting Patches): Mention 'git send-mail'.
* doc/guix.texi (Packaging Guidelines): More details on how to prepare a
  package module.
  (Contributing): Add reference to #guix channel on Freenode.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-03-10 23:43:31 +01:00
Ludovic Courtès
002622b65b guix build: Add '--timeout' to the common build options.
* guix/scripts/build.scm (show-build-options-help): Document
  '--timeout'.
  (set-build-options-from-command-line): Pass #:timeout to
  'set-build-options'.
  (%standard-build-options): Add '--timeout'.
* doc/guix.texi (Invoking guix build): Document it.
2014-03-09 23:09:18 +01:00
Ludovic Courtès
834129e0e2 Change the default store file name to /gnu/store.
* configure.ac: Change the default 'storedir' to /gnu/store.  Print
  $storedir.
* doc/guix.texi: Replace "/nix/store" by "/gnu/store", except where
  describing Nix compatibility.
* Makefile.am: Likewise.
2014-03-09 22:09:58 +01:00
Ludovic Courtès
e7f34eb0dc doc: Explain what's special about the (gnu packages ...) name space.
* doc/guix.texi (Invoking guix package): Explain where packages are
  searched for and link to "Package Modules".
  (Defining Packages) <example>: Use 'define-module' clause instead of
  'use-modules'.  Explain why and link to "Package Modules".
  (Invoking guix build): Explain where packages aer searched for and
  link to "Package Modules".
  (Package Modules): Explain that (gnu packages ...) is scanned.
2014-03-08 00:18:21 +01:00
Ludovic Courtès
70ee564299 doc: Factorize documentation of common build options.
* doc/guix.texi (Invoking guix package): Remove documentation for
  --dry-run, --fallback, --no-substitutes, and --max-silent-time.  Add a
  cross-ref to "Invoking guix build".
  (Invoking guix archive): Add "common build options" as the cross-ref
  topic for "Invoking guix build".
  (Invoking guix build): Move common build options separately.  Add a
  paragraph to explain.
2014-03-03 00:22:46 +01:00
Ludovic Courtès
2096ef47aa derivations: Remove unused 'derivation' parameter.
* guix/derivations.scm (derivation): Remove unused #:hash-mode parameter.
* doc/guix.texi (Derivations): Adjust accordingly.
2014-02-21 23:49:53 +01:00
Ludovic Courtès
0dbd88db39 doc: More on what's special about the archive format.
* doc/guix.texi (Invoking guix archive): Expound on what sets the Nar
  format apart.
2014-02-21 23:49:53 +01:00
Ludovic Courtès
36bbbbd150 derivations: Add support for recursive fixed-output derivations.
* guix/derivations.scm (<derivation-output>): Add 'recursive?' field.
  Adjust 'make-derivation-output' callers.
  (%read-derivation) <fixed-output>: When HASH-ALGO starts with 'r:',
  set the 'recursive?' field and drop 'r:' from the hash algo name.
  (write-derivation)[write-output]: Write the algo as 'r:HASH-ALGO' when
  the RECURSIVE? field is set.
  (derivation-hash) <fixed-output>: Prepend "r:" when RECURSIVE? is set.
  (fixed-output-path): New procedure.
  (derivation): Add #:recursive? parameter.  Use 'fixed-output-path' to
  compute the output file name of a fixed output derivation.
  (build-expression->derivation): Add #:recursive? parameter.  Pass it
  to 'derivation'.
* tests/derivations.scm ("fixed-output derivation, recursive",
  "build-expression->derivation produces recursive fixed-output",
  "build-expression->derivation uses recursive fixed-output"): New
  tests.
* doc/guix.texi (Derivations): Document #:recursive? for 'derivation'.
  Add #:recursive? for 'build-expression->derivation'.
2014-02-21 23:49:52 +01:00
Ludovic Courtès
3140f2df42 guix hash: Add '--recursive'.
* guix/scripts/hash.scm (show-help): Add --recursive.
  (%options): Likewise.
  (guix-hash)[file-hash]: New procedure.  Honor --recursive.
  Use it.
* guix/nar.scm (write-file): Add missing field to the &nar-error
  condition raised upon unsupported file type; change its message to be
  more descriptive.
* tests/guix-hash.sh: Add tests with -r.
* doc/guix.texi (Invoking guix hash): Document --recursive.
2014-02-21 23:49:52 +01:00
Ludovic Courtès
8b198abecd gnu: Define '%base-services'.
* gnu/services/base.scm (%base-services): New variable.
* gnu/system.scm (<operating-system>)[services]: Change the default
  value to %BASE-SERVICES.
* doc/guix.texi (Using the Configuration System): Change
  '%standard-services' to '%base-services'.
2014-02-19 21:08:28 +01:00
Ludovic Courtès
db4fdc04cc gnu: Introduce the (gnu services ...) modules.
* gnu/system/dmd.scm: Remove file.  Move contents to...
* gnu/services.scm, gnu/services/base.scm, gnu/services/dmd.scm,
  gnu/services/networking.scm, gnu/services/xorg.scm: ... here.  New
  files.
* gnu/system.scm, gnu/system/vm.scm: Adjust accordingly.
* guix/scripts/system.scm (%user-module): Likewise.
* doc/guix.texi (Using the Configuration System): Likewise.
  (Defining Services): Likewise.
2014-02-19 20:58:24 +01:00