Mirror of GNU Guix
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
3.9 KiB

9 years ago
9 years ago
8 years ago
9 years ago
8 years ago
9 years ago
9 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
8 years ago
9 years ago
9 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
  1. -*- mode: org; coding: utf-8; -*-
  2. #+TITLE: What's left to do?
  3. #+STARTUP: content hidestars
  4. Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
  5. Copying and distribution of this file, with or without modification,
  6. are permitted in any medium without royalty provided the copyright
  7. notice and this notice are preserved.
  8. * integrate needed Nix code
  9. ** MAYBE Add a substituter that uses the GNUnet DHT or [[http://libswift.org][libswift]]
  10. Would be neat if binaries could be pushed to and pulled from the GNUnet DHT or
  11. rather libswift (since DHTs aren’t suited for large payloads). Guix users
  12. would sign their binaries, and define which binaries they trust.
  13. Use UPnP and similar to traverse NAT, like ‘filegive’ does.
  14. ** Add a remote build hook
  15. Like scripts/build-remote.pl in Nix.
  16. * Add `guix publish' to publish the store using Guile's web server
  17. Generate narinfos and nars on the fly, upon HTTP GET requests.
  18. Ideally, extend .nix-cache-info to include the server's public key, and also
  19. reply to requests for .narinfo.sig.
  20. Optionally, use Guile-Avahi to publish the service.
  21. * user interface
  22. ** Add a package.el (Emacs) back-end
  23. package.el is quite monolithic, but we may be able to reuse/extend
  24. ‘package-menu-mode’ or at least ‘tabulated-list-mode’.
  25. ** add guile-ncurses interface
  26. * extend <package>
  27. ** add ‘recommends’ field
  28. For instance, glibc, binutils, gcc, and ld-wrapper would recommend each other.
  29. ‘guix package -i’ could ask interactively (?), or allow users to follow all or
  30. none of the recommendations.
  31. ** add a ‘user-environment-hook’
  32. This should specify builder code to be run when building a user
  33. environment with ‘guix-package’. For instance, Texinfo’s hook would
  34. create a new ‘dir’.
  35. ** extend ‘propagated-build-inputs’ with support for multiple outputs
  36. #+BEGIN_SRC scheme
  37. (outputs '("out" "include"))
  38. (propagated-build-inputs
  39. `(((("i1" ,p1 "o1")
  40. ("i2" ,p2))
  41. => "include")
  42. ("i3" ,p3)))
  43. #+END_SRC
  44. * synchronize non-GNU package descriptions with the [[http://directory.fsf.org][FSD]]
  45. Meta-data for GNU packages, including descriptions and synopses, can be
  46. dumped from the FSD:
  47. http://directory.fsf.org/wiki?title=GNU/Export&action=purge .
  48. We could periodically synchronize with that.
  49. * add a guildhall build system
  50. The Guildhall is Guile’s packaging system. It should be easy to add a
  51. ‘guildhall-build-system’ that does the right thing based on guildhall
  52. recipes.
  53. * add ‘allowed-references’ in <package>
  54. [[file:~/src/nix/src/libstore/build.cc::if%20(drv.env.find("allowedReferences")%20!%3D%20drv.env.end())%20{][See how Nix implements that internally]].
  55. * union
  56. Support sophisticated collision handling when building a union: check
  57. whether the colliding files are identical, honor per-package priorities,
  58. etc.
  59. * add GUIX_ALLOW_EXPENSIVE_TESTS
  60. Tests that need to download stuff or otherwise take a long time would only be
  61. run when that is defined.
  62. * add "guix challenge"
  63. Would download a substitute, and compare its contents against a (hopefully
  64. locally-built) copy.
  65. * guix build utils
  66. ** MAYBE Change ‘ld-wrapper’ to add RPATH for libs passed by file name
  67. ** MAYBE Add equivalent to chrpath that uses [[https://gitorious.org/guile-dlhacks/guile-dlhacks/][guile-dlhacks]]
  68. ** MAYBE Add a hash-rewriting thing for deep dependency replacement without rebuild
  69. See [[https://github.com/NixOS/nixpkgs/commit/d1662d715514e6ef9d3dc29f132f1b3d8e608a18][Shea Levy's `replace-dependency' in Nixpkgs]].
  70. * distro
  71. ** port to new GNU/Linux platforms, notably ‘mipsel64-linux’
  72. ** port to GNU/Hurd, aka. ‘i686-gnu’
  73. Problems include that current glibc releases do not build on GNU/Hurd.
  74. In addition, there haven’t been stable releases of GNU Mach, MiG, and
  75. Hurd, which would be a pre-condition.
  76. ** make a bootable GNU/Linux-Libre distro, with OS configuration EDSL
  77. Similar in spirit to /etc/nixos/configuration.nix.