diff options
Diffstat (limited to 'gnu/packages/haskell-apps.scm')
-rw-r--r-- | gnu/packages/haskell-apps.scm | 345 |
1 files changed, 280 insertions, 65 deletions
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index e01f796178..e09285d63a 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -1,11 +1,16 @@ ;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu> ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org> +;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> +;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com> +;;; Copyright © 2015 John Soo <jsoo1@asu.edu> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +29,7 @@ (define-module (gnu packages haskell-apps) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system haskell) @@ -34,13 +40,110 @@ #:use-module (gnu packages haskell-check) #:use-module (gnu packages haskell-crypto) #:use-module (gnu packages haskell-web) + #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages rsync) - #:use-module (gnu packages sdl) #:use-module (gnu packages version-control)) +(define-public cabal-install + (package + (name "cabal-install") + (version "2.2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/cabal-install/cabal-install-" + version + ".tar.gz")) + (sha256 + (base32 "1nd3ch7qr4dpfxhgkcq2lnhvszx2kjgnn1kwb44vk9y5jgfs4mn8")))) + (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. + (build-system haskell-build-system) + (inputs + `(("ghc-async" ,ghc-async) + ("ghc-base16-bytestring" ,ghc-base16-bytestring) + ("ghc-cryptohash-sha256" ,ghc-cryptohash-sha256) + ("ghc-echo" ,ghc-echo) + ("ghc-edit-distance" ,ghc-edit-distance) + ("ghc-hackage-security" ,ghc-hackage-security) + ("ghc-hashable" ,ghc-hashable) + ("ghc-http" ,ghc-http) + ("ghc-network-uri" ,ghc-network-uri) + ("ghc-network" ,ghc-network) + ("ghc-random" ,ghc-random) + ("ghc-resolv" ,ghc-resolv) + ("ghc-tar" ,ghc-tar) + ("ghc-zlib" ,ghc-zlib))) + (home-page "https://www.haskell.org/cabal/") + (synopsis "Command-line interface for Cabal and Hackage") + (description + "The cabal command-line program simplifies the process of managing +Haskell software by automating the fetching, configuration, compilation and +installation of Haskell libraries and programs.") + (license license:bsd-3))) + +(define-public corrode + (let ((commit "b6699fb2fa552a07c6091276285a44133e5c9789")) + (package + (name "corrode") + (version (string-append "0.0.1-" (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jameysharp/corrode.git") + (commit "b6699fb2fa552a07c6091276285a44133e5c9789"))) + (file-name + (string-append name "-" version "-checkout")) + (sha256 + (base32 "02v0yyj6sk4gpg2222wzsdqjxn8w66scbnf6b20x0kbmc69qcz4r")))) + (build-system haskell-build-system) + (inputs + `(("ghc-language-c" ,ghc-language-c) + ("ghc-markdown-unlit" ,ghc-markdown-unlit))) + (home-page "https://github.com/jameysharp/corrode") + (synopsis "Automatic semantics-preserving translation from C to Rust") + (description + "This program reads a C source file and prints an equivalent module in +Rust syntax. It is intended to be useful for two different purposes: + +@enumerate +@item Partial automation for migrating legacy code that was implemented in C. +@item A new, complementary approach to static analysis for C programs. +@end enumerate\n") + (license license:gpl2+)))) + +(define-public cpphs + (package + (name "cpphs") + (version "1.20.8") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/" name "/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1bh524asqhk9v1s0wvipl0hgn7l63iy3js867yv0z3h5v2kn8vg5")))) + (build-system haskell-build-system) + (inputs + `(("ghc-polyparse" ,ghc-polyparse) + ("ghc-old-locale" ,ghc-old-locale) + ("ghc-old-time" ,ghc-old-time))) + (home-page "http://projects.haskell.org/cpphs/") + (synopsis "Liberalised re-implementation of cpp, the C pre-processor") + (description "Cpphs is a re-implementation of the C pre-processor that is +both more compatible with Haskell, and itself written in Haskell so that it +can be distributed with compilers. This version of the C pre-processor is +pretty-much feature-complete and compatible with traditional (K&R) +pre-processors. Additional features include: a plain-text mode; an option to +unlit literate code files; and an option to turn off macro-expansion.") + (license (list license:lgpl2.1+ license:gpl3+)))) + ;; Darcs has no https support: http://irclog.perlgeek.de/darcs/2016-09-17 ;; http://darcs.net/manual/Configuring_darcs.html#SECTION00440070000000000000 ;; and results of search engines will show that if the protocol is http, https @@ -142,7 +245,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. (define-public git-annex (package (name "git-annex") - (version "6.20180926") + (version "7.20190912") (source (origin (method url-fetch) @@ -150,15 +253,20 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. "git-annex/git-annex-" version ".tar.gz")) (sha256 (base32 - "1251rj8h63y30sfqk0zh670yhz14p256y59n3590pg015pf3575d")))) + "1a3jvl5cx32v78s3015i10cx00jprm1391rpww4mzkk1vskzn9cv")))) (build-system haskell-build-system) (arguments `(#:configure-flags '("--flags=-Android -Assistant -Pairing -S3 -Webapp -WebDAV") #:phases (modify-phases %standard-phases - (add-before 'configure 'patch-shell + (add-before 'configure 'patch-shell-for-tests (lambda _ + ;; Shell.hs defines "/bin/sh" that is used in Git hooks. We + ;; shouldn't patch hooks with Guix's current bash because the + ;; hooks can exist after that bash is garbage collected, but + ;; let's temporarily patch it so that we can run the tests. + (copy-file "Utility/Shell.hs" "/tmp/Shell.hs") (substitute* "Utility/Shell.hs" (("/bin/sh") (which "sh"))) #t)) @@ -192,6 +300,11 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. (symlink "git-annex" "git-annex-shell")) (invoke "git-annex" "test") #t)) + (add-after 'check 'unpatch-shell-and-rebuild + (lambda args + ;; Undo `patch-shell-for-tests'. + (copy-file "/tmp/Shell.hs" "Utility/Shell.hs") + (apply (assoc-ref %standard-phases 'build) args))) (add-after 'install 'install-symlinks (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -208,6 +321,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. ("ghc-bloomfilter" ,ghc-bloomfilter) ("ghc-byteable" ,ghc-byteable) ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-concurrent-output" ,ghc-concurrent-output) ("ghc-crypto-api" ,ghc-crypto-api) ("ghc-cryptonite" ,ghc-cryptonite) ("ghc-data-default" ,ghc-data-default) @@ -223,6 +337,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. ("ghc-http-conduit" ,ghc-http-conduit) ("ghc-http-types" ,ghc-http-types) ("ghc-ifelse" ,ghc-ifelse) + ("ghc-magic" ,ghc-magic) ("ghc-memory" ,ghc-memory) ("ghc-monad-control" ,ghc-monad-control) ("ghc-monad-logger" ,ghc-monad-logger) @@ -260,97 +375,127 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. checking the file contents into Git. It can store files in many places, such as local hard drives and cloud storage services. It can also be used to keep a folder in sync between computers.") - ;; The web app is released under the AGPLv3+. - (license (list license:gpl3+ - license:agpl3+)))) + ;; The main author has released all his changes under AGPLv3+ as of March + ;; 2019 (7.20190219-187-g40ecf58d4). These are also licensed under the + ;; original GPLv3+ license, but going forward new changes will be under + ;; only AGPLv3+. The other licenses below cover code written by others. + ;; See git-annex's COPYRIGHT file for details on each file. + (license (list license:agpl3+ + license:gpl3+ + license:bsd-2 + license:expat + license:gpl2)))) -(define-public ghc-sdl2 +(define-public hlint (package - (name "ghc-sdl2") - (version "2.4.1.0") + (name "hlint") + (version "2.1.10") (source (origin (method url-fetch) - (uri (string-append "https://hackage.haskell.org/package/" - "sdl2/sdl2-" version ".tar.gz")) + (uri (string-append + "https://hackage.haskell.org/package/" name + "/" name "-" version ".tar.gz")) (sha256 (base32 - "0p4b12fmxps0sbnkqdfy0qw19s355yrkw7fgw6xz53wzq706k991")))) + "19as2m9g75cr6n1agzvsij0cvqhb0wbjlk31w4y5d5mns87dki0w")))) (build-system haskell-build-system) - (arguments '(#:tests? #f)) ; tests require graphical environment (inputs - `(("ghc-exceptions" ,ghc-exceptions) - ("ghc-linear" ,ghc-linear) - ("ghc-statevar" ,ghc-statevar) + `(("cpphs" ,cpphs) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-yaml" ,ghc-yaml) ("ghc-vector" ,ghc-vector) - ("sdl2" ,sdl2))) - (native-inputs - `(("ghc-weigh" ,ghc-weigh) - ("pkg-config" ,pkg-config))) - (home-page "http://hackage.haskell.org/package/sdl2") - (synopsis "High- and low-level bindings to the SDL library") - (description - "This package contains bindings to the SDL 2 library, in both high- and -low-level forms. The @code{SDL} namespace contains high-level bindings, where -enumerations are split into sum types, and we perform automatic -error-checking. The @code{SDL.Raw} namespace contains an almost 1-1 -translation of the C API into Haskell FFI calls. As such, this does not -contain sum types nor error checking. Thus this namespace is suitable for -building your own abstraction over SDL, but is not recommended for day-to-day -programming.") + ("ghc-data-default" ,ghc-data-default) + ("ghc-cmdargs" ,ghc-cmdargs) + ("ghc-haskell-src-exts" ,ghc-haskell-src-exts) + ("ghc-haskell-src-exts-util" ,ghc-haskell-src-exts-util) + ("ghc-uniplate" ,ghc-uniplate) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-extra" ,ghc-extra) + ("ghc-refact" ,ghc-refact) + ("ghc-aeson" ,ghc-aeson) + ("hscolour" ,hscolour))) + (home-page "http://community.haskell.org/~ndm/hlint/") + (synopsis "Suggest improvements for Haskell source code") + (description "HLint reads Haskell programs and suggests changes that +hopefully make them easier to read. HLint also makes it easy to disable +unwanted suggestions, and to add your own custom suggestions.") (license license:bsd-3))) -(define-public ghc-sdl2-mixer +(define-public hoogle (package - (name "ghc-sdl2-mixer") - (version "1.1.0") + (name "hoogle") + (version "5.0.17.3") (source (origin (method url-fetch) - (uri (string-append "https://hackage.haskell.org/package/sdl2-mixer/" - "sdl2-mixer-" version ".tar.gz")) + (uri + (string-append + "https://hackage.haskell.org/package/hoogle/hoogle-" + version ".tar.gz")) (sha256 (base32 - "1k8avyccq5l9z7bwxigim312yaancxl1sr3q6a96bcm7pnhiak0g")))) + "174gp41v0krzj37m75pnr3aawyhkbk2wq4q6zk2z3zh0avvvmgk6")))) (build-system haskell-build-system) (inputs - `(("ghc-data-default-class" ,ghc-data-default-class) - ("ghc-lifted-base" ,ghc-lifted-base) - ("ghc-monad-control" ,ghc-monad-control) - ("ghc-sdl2" ,ghc-sdl2) + `(("ghc-network-uri" ,ghc-network-uri) + ("ghc-network" ,ghc-network) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-aeson" ,ghc-aeson) + ("ghc-cmdargs" ,ghc-cmdargs) + ("ghc-conduit" ,ghc-conduit) + ("ghc-conduit-extra" ,ghc-conduit-extra) + ("ghc-connection" ,ghc-connection) + ("ghc-extra" ,ghc-extra) + ("ghc-old-locale" ,ghc-old-locale) + ("ghc-haskell-src-exts" ,ghc-haskell-src-exts) + ("ghc-http-conduit" ,ghc-http-conduit) + ("ghc-http-types" ,ghc-http-types) + ("ghc-js-flot" ,ghc-js-flot) + ("ghc-js-jquery" ,ghc-js-jquery) + ("ghc-mmap" ,ghc-mmap) + ("ghc-process-extras" ,ghc-process-extras) + ("ghc-resourcet" ,ghc-resourcet) + ("ghc-storable-tuple" ,ghc-storable-tuple) + ("ghc-tar" ,ghc-tar) + ("ghc-uniplate" ,ghc-uniplate) + ("ghc-utf8-string" ,ghc-utf8-string) ("ghc-vector" ,ghc-vector) - ("sdl2-mixer" ,sdl2-mixer))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "http://hackage.haskell.org/package/sdl2-mixer") - (synopsis "Bindings to SDL2 mixer") - (description "This package provides Haskell bindings to -@code{SDL2_mixer}.") + ("ghc-wai" ,ghc-wai) + ("ghc-wai-logger" ,ghc-wai-logger) + ("ghc-warp" ,ghc-warp) + ("ghc-warp-tls" ,ghc-warp-tls) + ("ghc-zlib" ,ghc-zlib))) + (home-page "https://hoogle.haskell.org/") + (synopsis "Haskell API Search") + (description "Hoogle is a Haskell API search engine, which allows +you to search many standard Haskell libraries by either function name, +or by approximate type signature.") (license license:bsd-3))) -(define-public ghc-sdl2-image +(define-public hscolour (package - (name "ghc-sdl2-image") - (version "2.0.0") + (name "hscolour") + (version "1.24.4") (source (origin (method url-fetch) - (uri (string-append "https://hackage.haskell.org/package/sdl2-image/" - "sdl2-image-" version ".tar.gz")) + (uri (string-append + "https://hackage.haskell.org/package/hscolour/hscolour-" + version + ".tar.gz")) (sha256 (base32 - "1pr6dkg73cy9z0w54lrkj9c5bhxj56nl92lxikjy8kz6nyr455rr")))) + "079jwph4bwllfp03yfr26s5zc6m6kw3nhb1cggrifh99haq34cr4")))) (build-system haskell-build-system) - (inputs - `(("ghc-sdl2" ,ghc-sdl2) - ("sdl2-image" ,sdl2-image))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "http://hackage.haskell.org/package/sdl2-image") - (synopsis "Bindings to SDL2_image") - (description "This package provides Haskell bindings to -@code{SDL2_image}.") - (license license:expat))) + (home-page "https://hackage.haskell.org/package/hscolour") + (synopsis "Script to colourise Haskell code") + (description "HSColour is a small Haskell script to colourise Haskell +code. It currently has six output formats: ANSI terminal codes (optionally +XTerm-256colour codes), HTML 3.2 with font tags, HTML 4.01 with CSS, HTML 4.01 +with CSS and mouseover annotations, XHTML 1.0 with inline CSS styling, LaTeX, +and mIRC chat codes.") + (license license:bsd-3))) (define-public raincat (package @@ -393,3 +538,73 @@ play inspired from classics Lemmings and The Incredible Machine. The project proved to be an excellent learning experience for the programmers. Everything is programmed in Haskell.") (license license:bsd-3))) + +(define-public shellcheck + (package + (name "shellcheck") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/ShellCheck/ShellCheck-" + version ".tar.gz")) + (sha256 + (base32 "1vx895cp5k5h0680xfwj74lk97m9y627n965x6srds0gfnbkzy9s")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-diff" ,ghc-diff) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-regex-tdfa" ,ghc-regex-tdfa))) + (home-page "https://github.com/koalaman/shellcheck") + (synopsis "Static analysis for shell scripts") + (description "@code{shellcheck} provides static analysis for +@command{bash} and @command{sh} shell scripts. +It gives warnings and suggestions in order to: + +@enumerate +@item Point out and clarify typical beginner's syntax issues that cause +a shell to give cryptic error messages. +@item Point out and clarify typical intermediate level semantic problems +that cause a shell to behave strangely and counter-intuitively. +@item Point out subtle caveats, corner cases and pitfalls that may cause an +advanced user's otherwise working script to fail under future circumstances. +@end enumerate") + (license license:gpl3+))) + +(define-public stylish-haskell + (package + (name "stylish-haskell") + (version "0.9.2.2") + (source + (origin + (method url-fetch) + (uri + (string-append + "mirror://hackage/package/stylish-haskell/" + "stylish-haskell-" version ".tar.gz")) + (sha256 + (base32 + "1zs624xqp6j8vrl6pfv18dm8vz8hvz25grri65ximxhcizgwhnax")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-file-embed" ,ghc-file-embed) + ("ghc-haskell-src-exts" ,ghc-haskell-src-exts) + ("ghc-semigroups" ,ghc-semigroups) + ("ghc-syb" ,ghc-syb) + ("ghc-yaml" ,ghc-yaml) + ("ghc-strict" ,ghc-strict) + ("ghc-optparse-applicative" ,ghc-optparse-applicative) + ("ghc-hunit" ,ghc-hunit) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit))) + (home-page "https://github.com/jaspervdj/stylish-haskell") + (synopsis "Haskell code prettifier") + (description + "A simple Haskell code prettifier. The goal is not to format all of the +code in a file, just clean up import statements and a few other tedious +items. This tool tries to help where necessary without getting in the way.") + (license license:bsd-3))) |