aboutsummaryrefslogtreecommitdiff
-*- mode: org; coding: utf-8; -*-

#+TITLE: What's left to do?
#+STARTUP: content hidestars

Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>

  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.

* 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.

* user interface
** 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

* 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.

* union

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.

* 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 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.

* 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
pend texi "/bin/makeinfo") "vera.texi" "--force" "--html" "-o" (string-append html "/vera.html")))) #:modules ((guix build utils)))) (native-inputs (list texinfo tar gzip)) (home-page "https://savannah.gnu.org/projects/vera/") (synopsis "List of acronyms") (description "V.E.R.A. (Virtual Entity of Relevant Acronyms) is a list of computing acronyms distributed as an info document.") (license license:fdl1.3+))) (define-public gcide (package (name "gcide") (version "0.53") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gcide/gcide-" version ".tar.xz")) (sha256 (base32 "17rigzfmih5i1z5s5v1hdr1jw8rngf40768kblnh5kp19ncbvb6k")))) (build-system copy-build-system) (arguments '(#:install-plan '(("." "share/gcide/" #:exclude ("COPYING"))))) (synopsis "GNU Collaborative International Dictionary of English") (description "GCIDE is a free dictionary based on a combination of sources. It can be used via the GNU Dico program or accessed online at http://gcide.gnu.org.ua/") (home-page "https://gcide.gnu.org.ua/") (license license:gpl3+))) (define-public diction ;; Not quite a dictionary, not quite a spell checker either… (package (name "diction") (version "1.14") (source (origin (method url-fetch) (uri (string-append "http://www.moria.de/~michael/diction/diction-" version ".tar.gz")) (sha256 (base32 "1z6p5x3l1a00h4v4s33qa82fznzc1jdqdnlc4dnmd9nblnrjy0fs")))) (build-system gnu-build-system) (synopsis "Identifies wordy and commonly misused phrases") (description "A package providing two classic Unix commands, style and diction. Diction is used to identify wordy and commonly misused phrases in a body of text. Style instead analyzes surface aspects of a written work, such as sentence length and other readability measures.") (home-page "https://www.gnu.org/software/diction/") (license license:gpl3+))) (define-public ding (package (name "ding") (version "1.9") (source (origin (method url-fetch) (uri (string-append "https://ftp.tu-chemnitz.de/pub/Local/urz/" name "/" name "-" version ".tar.gz")) (sha256 (base32 "1rcqn04l6hvsf15mqqai533p31nc04r2yd9s0mn2hnkqrwgwi9k9")))) (build-system gnu-build-system) (inputs (list tk)) (arguments `(#:phases (modify-phases %standard-phases (delete 'configure) (delete 'build) (delete 'check) (replace 'install (lambda* (#:key inputs #:allow-other-keys) (let ((bindir (string-append (assoc-ref %outputs "out") "/bin")) (wish (search-input-file inputs "/bin/wish8.6")) (sharedir (string-append (assoc-ref %outputs "out") "/share/applications")) (libdir (string-append (assoc-ref %outputs "out") "/lib"))) (mkdir-p bindir) (mkdir-p libdir) (mkdir-p sharedir) (substitute* "ding.desktop" (("Exec=/usr/bin/ding") (string-append "Exec=" bindir "/ding"))) (with-fluids ((%default-port-encoding "ISO-8859-1")) (substitute* "ding" (("exec wish") (string-append "exec " wish)))) (substitute* "install.sh" (("/bin/cp") "cp") (("/bin/mv") "mv") (("NEEDPROG=\"wish\"") (string-append "NEEDPROG=\"" wish "\"")) (("DEFBINDIR=\"/usr/local/bin\"") (string-append "DEFBINDIR=\"" bindir "\"")) (("DEFLIBDIR=\"/usr/local/lib\"") (string-append "DEFLIBDIR=\"" libdir "\""))) (install-file "ding.desktop" sharedir) (install-file "ding.png" sharedir) (invoke "./install.sh"))))))) (synopsis "Dictionary lookup program with a German-English dictionary") (description "Ding is a dictionary lookup program for the X window system. It comes with a German-English dictionary with approximately 270,000 entries.") (home-page "https://www-user.tu-chemnitz.de/~fri/ding/") (license license:gpl2+))) (define-public grammalecte (package (name "grammalecte") (version "2.1.1") (source (origin (method url-fetch/zipbomb) (uri (string-append "https://grammalecte.net/grammalecte/zip/" "Grammalecte-fr-v" version ".zip")) (sha256 (base32 "076jv3ywdgqqzg92bfbagc7ypy08xjq5zn4vgna6j9350fkfqhzn")))) (build-system python-build-system) (home-page "https://grammalecte.net") (synopsis "French spelling and grammar checker") (description "Grammalecte is a grammar checker for the French language, derived from Lightproof. Grammalecte helps writing a proper French, without distracting users with false positives. This grammar checker follows the principle: the less false positives, the better; if it cannot know with a good chance that a dubious expression is wrong, it keeps silent. The package provides the command line interface, along with a server and a Python library.") (license license:gpl3+))) (define-public translate-shell (package (name "translate-shell") (version "0.9.7.1") (source (origin (method git-fetch) (uri (git-reference (url"https://github.com/soimort/translate-shell") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0jfrypcz963pfvwwaz2i0xvwp2909ldzp15v68mgd2mbqkqw9d90")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (delete 'configure) ; no configure script (add-after 'unpack 'remove-unnecessary-file ;; This file gets generated during the build phase. (lambda _ (delete-file "translate"))) (add-after 'install 'wrap-binary (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin/trans")) (curl (assoc-ref inputs "curl")) (fribidi (assoc-ref inputs "fribidi")) (rlwrap (assoc-ref inputs "rlwrap"))) (wrap-program bin `("PATH" ":" prefix (,(string-append out "/bin:" curl "/bin:" fribidi "/bin:" rlwrap "/bin"))))))) (add-after 'unpack 'emacs-make-autoloads (assoc-ref emacs:%standard-phases 'make-autoloads)) (add-after 'install 'emacs-install (assoc-ref emacs:%standard-phases 'install)) (add-after 'emacs-install 'emacs-build (assoc-ref emacs:%standard-phases 'build))) #:make-flags (list (string-append "PREFIX=" %output) "NETWORK_ACCESS=no test") #:imported-modules (,@%default-gnu-imported-modules (guix build emacs-build-system) (guix build emacs-utils)) #:modules ((guix build gnu-build-system) ((guix build emacs-build-system) #:prefix emacs:) (guix build utils)) #:test-target "test")) (inputs (list bash-minimal curl fribidi rlwrap)) (native-inputs (list emacs-minimal util-linux)) ; hexdump, for the test (home-page "https://www.soimort.org/translate-shell/") (synopsis "Translations from the command line") (description "Translate Shell (formerly Google Translate CLI) is a command-line translator powered by Google Translate (default), Bing Translator, Yandex.Translate and Apertium. It gives you easy access to one of these translation engines from your terminal.") (license license:public-domain))) (define-public lttoolbox (package (name "lttoolbox") (version "3.5.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/apertium/lttoolbox/releases/download/v" version "/lttoolbox-" version ".tar.xz")) (sha256 (base32 "0kn9xg9sc64amd6ah5gi4qij0bhfbmc2jjvxbjjrsdd8iq054cgm")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list "--disable-static") #:phases (modify-phases %standard-phases (replace 'bootstrap ;; The included ./autogen.sh unconditionally runs ./configure before ;; its shebangs have been patched. (lambda _ (invoke "autoreconf" "-vfi")))))) (inputs (list libxml2)) (native-inputs (list autoconf automake libtool pkg-config)) (home-page "https://wiki.apertium.org/wiki/Lttoolbox") (synopsis "Lexical processing toolbox") (description "Lttoolbox is a toolbox for lexical processing, morphological analysis and generation of words. Analysis is the process of splitting a word (e.g. cats) into its lemma \"cat\" and the grammatical information @code{<n><pl>}. Generation is the opposite process.") (license (list license:gpl2 ; main license license:expat)))) ; utf8/* (define-public apertium (package (name "apertium") (version "3.5.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/apertium/apertium/releases/download/v" version "/apertium-" version ".tar.gz")) (sha256 (base32 "0lrx58ipx2kzh1pd3xm1viz05dqyrq38jbnj9dnk92c9ckkwkp4h")) (file-name (string-append name "-" version ".tar.gz")))) (build-system gnu-build-system) (inputs (list libxml2 libxslt lttoolbox pcre)) (native-inputs `(("apertium-get" ,(origin (method git-fetch) (uri (git-reference (url "https://github.com/apertium/apertium-get") (commit "692d030e68008fc123089cf2446070fe8c6e3a3b"))) (sha256 (base32 "0kgp68azvds7yjwfz57z8sa5094fyk5yr0qxzblrw7bisrrihnav")))) ("flex" ,flex) ("pkg-config" ,pkg-config) ;; python is only required for running the test suite ("python" ,python))) (arguments `(#:phases (modify-phases %standard-phases ;; If apertium-get does not exist in the source tree, the build tries ;; to download it using an svn checkout. To avoid this, copy ;; apertium-get into the source tree. (add-after 'unpack 'unpack-apertium-get (lambda* (#:key inputs #:allow-other-keys) (copy-recursively (assoc-ref inputs "apertium-get") "apertium/apertium-get") #t))))) (home-page "https://www.apertium.org/") (synopsis "Rule based machine translation system") (description "Apertium is a rule based machine translation system featuring a shallow-transfer machine translation engine. The design of the system makes translations fast (translating tens of thousands of words per second on ordinary desktop computers) and, in spite of the errors, reasonably intelligible and easily correctable.") (license (list license:gpl2 ; main license license:expat)))) ; utf8/* (define-public sdcv (package (name "sdcv") (version "0.5.5") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/Dushistov/sdcv/") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "17jwcgc3jdp41rvxqi7zdsysfpjgzqq4z1l345qwffp1an6yaaqk")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DBUILD_TESTS=YES") #:phases (modify-phases %standard-phases (add-after 'build 'build-lang (lambda _ (invoke "make" "lang"))) (add-before 'check 'pre-check (lambda _ (setenv "HOME" (getcwd)) #t))))) (native-inputs `(("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config) ;; For tests. ("jq" ,jq))) (inputs (list glib ncurses readline zlib)) (home-page "https://dushistov.github.io/sdcv/") (synopsis "Console version of StarDict") (description "sdcv is simple text-based utility for work with dictionaries in StarDict's format.") (license license:gpl2+))) (define-public skk-jisyo (let ((commit "38c81dbc74cdbdead843364023dea837f239a48c") (revision "0")) (package (name "skk-jisyo") (version (git-version "0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/skk-dev/dict") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "121j73bgd7fvj7zvaidqvgzfdvimig3f0vsyfv4vndwfgskh2r7z")))) (build-system copy-build-system) (arguments '(#:install-plan '(("./" "share/skk" #:include-regexp ("SKK-JISYO\\.*") #:exclude-regexp ("\\.gz$" "\\.md5$") #:exclude ("SKK-JISYO.pubdic+" "SKK-JISYO.wrong.annotated" "SKK-JISYO.wrong"))) #:phases (modify-phases %standard-phases (add-before 'install 'decompress (lambda* (#:key outputs #:allow-other-keys) (map (lambda (arg) (invoke "gzip" "-v" "-d" arg)) (find-files "." "SKK-JISYO\\..*\\.gz$")) (invoke "tar" "xvf" "zipcode.tar.gz")))))) (home-page "https://skk-dev.github.io/dict/") (synopsis "Jisyo (dictionary) files for the SKK Japanese-input software") (description "This package provides @file{SKK-JISYO.L}, the standard dictionary file for SKK Japanese input systems, and various dictionary files. @file{SKK-JISYO.L} can be used with @code{emacs-ddskk} or @code{uim} package.") (license license:gpl2+))))