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.

152 lines
5.0 KiB

9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
8 years ago
9 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 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. ** Remove dependency on OpenSSL
  10. The ‘openssl’ command-line tool is used in libstore to sign store paths
  11. to be exported, and to check such signatures. The signing keys are
  12. usually in /etc/nix/signing-key.{pub,sec}. They are a PKCS#8-encoded
  13. X.509 SubjectPublicKeyInfo. These can be decoded with the [[http://lists.gnu.org/archive/html/help-gnutls/2012-12/msg00012.html][C API of
  14. GnuTLS]], but not yet with its Guile bindings. There’s also
  15. ‘gnutls_privkey_sign_data’ to sign, and related functions.
  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. ** MAYBE Add a substituter that uses the GNUnet DHT or [[http://libswift.org][libswift]]
  22. Would be neat if binaries could be pushed to and pulled from the GNUnet DHT or
  23. rather libswift (since DHTs aren’t suited for large payloads). Guix users
  24. would sign their binaries, and define which binaries they trust.
  25. Use UPnP and similar to traverse NAT, like ‘filegive’ does.
  26. ** Add a remote build hook
  27. Like scripts/build-remote.pl in Nix.
  28. * user interface
  29. ** Add a package.el (Emacs) back-end
  30. package.el is quite monolithic, but we may be able to reuse/extend
  31. ‘package-menu-mode’ or at least ‘tabulated-list-mode’.
  32. ** add guile-ncurses interface
  33. * extend <origin>
  34. ** add OpenPGP signatures:
  35. (origin
  36. (method http-fetch)
  37. (uri "http://.../foo.tgz")
  38. (signature-uri (string-append uri ".sig"))
  39. (signer-openpgp-fingerprint "..."))
  40. ** allow <origin> to be a derivation/package or a file
  41. * extend <package>
  42. ** add ‘recommends’ field
  43. For instance, glibc, binutils, gcc, and ld-wrapper would recommend each other.
  44. ‘guix package -i’ could ask interactively (?), or allow users to follow all or
  45. none of the recommendations.
  46. ** add a ‘user-environment-hook’
  47. This should specify builder code to be run when building a user
  48. environment with ‘guix-package’. For instance, Texinfo’s hook would
  49. create a new ‘dir’.
  50. ** extend ‘propagated-build-inputs’ with support for multiple outputs
  51. #+BEGIN_SRC scheme
  52. (outputs '("out" "include"))
  53. (propagated-build-inputs
  54. `(((("i1" ,p1 "o1")
  55. ("i2" ,p2))
  56. => "include")
  57. ("i3" ,p3)))
  58. #+END_SRC
  59. * synchronize package descriptions with GSRC and/or the [[http://directory.fsf.org][FSD]]
  60. Meta-data for GNU packages, including descriptions and synopses, can be
  61. dumped from the FSD:
  62. http://directory.fsf.org/wiki?title=GNU/Export&action=purge .
  63. We could periodically synchronize with that.
  64. See http://lists.gnu.org/archive/html/bug-guix/2013-04/msg00120.html for info
  65. on how to synchronize with GSRC's descriptions.
  66. * add a guildhall build system
  67. The Guildhall is Guile’s packaging system. It should be easy to add a
  68. ‘guildhall-build-system’ that does the right thing based on guildhall
  69. recipes.
  70. * build-expression->derivation: define `%system' in the builder
  71. Would allow build expressions to have system-dependent code, like
  72. `glibc-dynamic-linker'.
  73. * add ‘allowed-references’ in <package>
  74. [[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]].
  75. * union
  76. Support sophisticated collision handling when building a union: check
  77. whether the colliding files are identical, honor per-package priorities,
  78. etc.
  79. * add GUIX_ALLOW_EXPENSIVE_TESTS
  80. Tests that need to download stuff or otherwise take a long time would only be
  81. run when that is defined.
  82. * add "guix challenge"
  83. Would download a substitute, and compare its contents against a (hopefully
  84. locally-built) copy.
  85. * guix package
  86. ** add ‘--list-generations’, and ‘--delete-generations’
  87. * guix build utils
  88. ** MAYBE Change ‘ld-wrapper’ to add RPATH for libs passed by file name
  89. ** MAYBE Add equivalent to chrpath that uses [[https://gitorious.org/guile-dlhacks/guile-dlhacks/][guile-dlhacks]]
  90. ** MAYBE Add a hash-rewriting thing for deep dependency replacement without rebuild
  91. See [[https://github.com/NixOS/nixpkgs/commit/d1662d715514e6ef9d3dc29f132f1b3d8e608a18][Shea Levy's `replace-dependency' in Nixpkgs]].
  92. * distro
  93. ** port to new GNU/Linux platforms, notably ‘mipsel64-linux’
  94. ** port to GNU/Hurd, aka. ‘i686-gnu’
  95. Problems include that current glibc releases do not build on GNU/Hurd.
  96. In addition, there haven’t been stable releases of GNU Mach, MiG, and
  97. Hurd, which would be a pre-condition.
  98. ** make a bootable GNU/Linux-Libre distro, with OS configuration EDSL
  99. Similar in spirit to /etc/nixos/configuration.nix.