X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/290d437097094f82e53eac602b7a6b6037e89f2a..f6dfe42129d005662d91e1acb1c75eafe7b9b33e:/TODO diff --git a/TODO b/TODO index 8d1dfb1394..f854f7fa98 100644 --- a/TODO +++ b/TODO @@ -3,62 +3,25 @@ #+TITLE: What's left to do? #+STARTUP: content hidestars -Copyright © 2012, 2013 Ludovic Courtès +Copyright © 2012, 2013, 2014 Ludovic Courtès +Copyright © 2019 Mathieu Othacehe 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]] -** Remove dependency on OpenSSL +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. -The ‘openssl’ command-line tool is used in libstore to sign store paths -to be exported, and to check such signatures. The signing keys are -usually in /etc/nix/signing-key.{pub,sec}. They are a PKCS#8-encoded -X.509 SubjectPublicKeyInfo. These can be decoded with the [[http://lists.gnu.org/archive/html/help-gnutls/2012-12/msg00012.html][C API of -GnuTLS]], but not yet with its Guile bindings. There’s also -‘gnutls_privkey_sign_data’ to sign, and related functions. - - -** 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. - -** MAYBE Add a substituter that uses the GNUnet DHT - -Would be neat if binaries could be pushed to and pulled from the GNUnet -DHT. Guix users would sign their binaries, and define which binaries -they trust. - -** Add a remote build hook - -Like scripts/build-remote.pl in Nix. +Use UPnP and similar to traverse NAT, like ‘filegive’ does. * 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 -** add OpenPGP signatures: - - (origin - (method http-fetch) - (uri "http://.../foo.tgz") - (signature-uri (string-append uri ".sig")) - (signer-openpgp-fingerprint "...")) - -** allow to be a derivation/package or a file - * extend - ** add ‘recommends’ field For instance, glibc, binutils, gcc, and ld-wrapper would recommend each other. @@ -71,8 +34,6 @@ 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’. -** add ‘patches’ there - ** extend ‘propagated-build-inputs’ with support for multiple outputs #+BEGIN_SRC scheme @@ -84,52 +45,29 @@ create a new ‘dir’. ("i3" ,p3))) #+END_SRC - -* synchronize package descriptions with GSRC and/or the [[http://directory.fsf.org][FSD]] +* 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. -See http://lists.gnu.org/archive/html/bug-guix/2013-04/msg00120.html for info -on how to synchronize with GSRC's descriptions. - * 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. -* build-expression->derivation: define `%system' in the builder - -Would allow build expressions to have system-dependent code, like -`glibc-dynamic-linker'. - -* add ‘allowed-references’ in - -[[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. +Support sophisticated collision handling when building a union: 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 package - -** add ‘--list-generations’, and ‘--delete-generations’ - * guix build utils ** MAYBE Change ‘ld-wrapper’ to add RPATH for libs passed by file name @@ -140,13 +78,47 @@ locally-built) copy. 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. +* Installer +** Fix impossibility to restart on error after cow-store has been started +See https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00161.html. +- Force reboot upon installer failure +- Unshare the installer process +- Run the installer process in a separate namespace +** Partitioning +*** Add RAID support +*** Add more partitioning schemes +The actual schemes are taken from Debian Installer but some are not +implemented yet: like "Separate partitions for /home /var and /tmp". +*** Replace wait page "Partition formating is in progress, please wait" +Create a new waiting page describing what's being done: + +[ 20% ] +Running mkfs.ext4 on /dev/sda2 ... + +[ 40% ] +Running mkfs.ext4 on /dev/sda3 ... +*** Add a confirmation page before formating/partitioning +** Desktop environments +*** Allow for no desktop environments +Propose to choose between "headless server" and "lightweight X11" in a new +page. +*** Add services selection feature +Add a services page to the configuration. Ask for services to be installed +like SSH, bluetooth, TLP in a checkbox list? +** Locale and keymap +*** Try to guess user locale and keymap by probing BIOS or HW (dmidecode) +** Timezone +*** Regroup everything in one single page +Under the form: +(UTC + 1) Europe/Paris +(UTC + 2) Africa/Cairo +... +** Display issue +*** Investigate display issue described here: +https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00305.html