|
- -*- mode: org; coding: utf-8; -*-
-
- #+TITLE: What's left to do?
- #+STARTUP: content hidestars
-
- Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
-
- Copying and distribution of this file, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved.
-
- * integrate needed Nix code
-
- ** MAYBE Add a substituter that uses the GNUnet DHT or [[http://libswift.org][libswift]]
-
- Would be neat if binaries could be pushed to and pulled from the GNUnet DHT or
- rather libswift (since DHTs aren’t suited for large payloads). Guix users
- would sign their binaries, and define which binaries they trust.
-
- Use UPnP and similar to traverse NAT, like ‘filegive’ does.
-
- ** Add a remote build hook
-
- Like scripts/build-remote.pl in Nix.
-
- * Add `guix publish' to publish the store using Guile's web server
-
- Generate narinfos and nars on the fly, upon HTTP GET requests.
- Ideally, extend .nix-cache-info to include the server's public key, and also
- reply to requests for .narinfo.sig.
- Optionally, use Guile-Avahi to publish the service.
-
- * user interface
- ** Add a package.el (Emacs) back-end
-
- package.el is quite monolithic, but we may be able to reuse/extend
- ‘package-menu-mode’ or at least ‘tabulated-list-mode’.
-
- ** add guile-ncurses interface
-
- * extend <package>
-
- ** add ‘recommends’ field
-
- For instance, glibc, binutils, gcc, and ld-wrapper would recommend each other.
- ‘guix package -i’ could ask interactively (?), or allow users to follow all or
- none of the recommendations.
-
- ** add a ‘user-environment-hook’
-
- This should specify builder code to be run when building a user
- environment with ‘guix-package’. For instance, Texinfo’s hook would
- create a new ‘dir’.
-
- ** extend ‘propagated-build-inputs’ with support for multiple outputs
-
- #+BEGIN_SRC scheme
- (outputs '("out" "include"))
- (propagated-build-inputs
- `(((("i1" ,p1 "o1")
- ("i2" ,p2))
- => "include")
- ("i3" ,p3)))
- #+END_SRC
-
- * MAYBE use HOP-like escapes to refer to inputs in build-side code
-
- Instead of doing things like:
-
- #+BEGIN_SRC scheme
- (inputs `(("foo" ,foo)))
- (arguments '(#:configure-flags
- (list (string-append "--with-foo="
- (assoc-ref %build-inputs "foo")))))
- #+END_SRC
-
- Allow things like:
-
- #+BEGIN_SRC scheme
- (inputs (list foo))
- (arguments ~(#:configure-flags
- (list (string-append "--with-foo=" $foo))))
-
- #+END_SRC
-
- ... where '~' is 'build-quote' and '$' is 'build-unquote'. Better yet,
- automatically compute the list of references of an expression passed to
- 'derivation-expression'.
-
- Use a [[http://dorophone.blogspot.fr/2011/09/scheme-syntax-is-monad.html][monad]] for the syntax.
-
- * synchronize non-GNU package descriptions with the [[http://directory.fsf.org][FSD]]
-
- Meta-data for GNU packages, including descriptions and synopses, can be
- dumped from the FSD:
- http://directory.fsf.org/wiki?title=GNU/Export&action=purge .
- We could periodically synchronize with that.
-
- * add a guildhall build system
-
- The Guildhall is Guile’s packaging system. It should be easy to add a
- ‘guildhall-build-system’ that does the right thing based on guildhall
- recipes.
-
- * add ‘allowed-references’ in <package>
-
- [[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]].
-
- * union
-
- Support sophisticated collision handling when building a union: check
- whether the colliding files are identical, honor per-package priorities,
- etc.
-
- * add GUIX_ALLOW_EXPENSIVE_TESTS
-
- Tests that need to download stuff or otherwise take a long time would only be
- run when that is defined.
-
- * add "guix challenge"
-
- Would download a substitute, and compare its contents against a (hopefully
- locally-built) copy.
-
-
- * guix build utils
- ** MAYBE Change ‘ld-wrapper’ to add RPATH for libs passed by file name
-
- ** MAYBE Add equivalent to chrpath that uses [[https://gitorious.org/guile-dlhacks/guile-dlhacks/][guile-dlhacks]]
-
- ** MAYBE Add a hash-rewriting thing for deep dependency replacement without rebuild
-
- See [[https://github.com/NixOS/nixpkgs/commit/d1662d715514e6ef9d3dc29f132f1b3d8e608a18][Shea Levy's `replace-dependency' in Nixpkgs]].
-
- * distro
- ** port to new GNU/Linux platforms, notably ‘mipsel64-linux’
- ** port to GNU/Hurd, aka. ‘i686-gnu’
-
- Problems include that current glibc releases do not build on GNU/Hurd.
- In addition, there haven’t been stable releases of GNU Mach, MiG, and
- Hurd, which would be a pre-condition.
-
- ** make a bootable GNU/Linux-Libre distro, with OS configuration EDSL
-
- Similar in spirit to /etc/nixos/configuration.nix.
|