X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/d4160848a06a390d6d5df9b8506cd796ad1326aa..refs/heads/wip-bees:/gnu/packages/haskell-apps.scm diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index 6423b910f2..8128c5425e 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Siniša Biđin ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus -;;; Copyright © 2016, 2017, 2018 ng0 +;;; Copyright © 2016, 2017, 2018 Nikita ;;; Copyright © 2017 Danny Milosavljevic ;;; Copyright © 2017, 2018 Alex Vong ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice @@ -9,10 +9,14 @@ ;;; Copyright © 2018 Arun Isaac ;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2015 Paul van der Walt -;;; Copyright © 2019 Kyle Meyer +;;; Copyright © 2019, 2020 Kyle Meyer ;;; Copyright © 2015 John Soo -;;; Copyright © 2019 Efraim Flashner -;;; Copyright © 2019 Alex Griffin +;;; Copyright © 2019, 2020 Efraim Flashner +;;; Copyright © 2019, 2020 Alex Griffin +;;; Copyright © 2020 Alexandru-Sergiu Marton +;;; Copyright © 2020 Brian Leung +;;; Copyright © 2021 EuAndreh +;;; Copyright © 2021 Stefan Reichör ;;; ;;; This file is part of GNU Guix. ;;; @@ -47,7 +51,44 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages rsync) - #:use-module (gnu packages version-control)) + #:use-module (gnu packages version-control) + #:use-module (gnu packages xorg)) + +(define-public apply-refact + (package + (name "apply-refact") + (version "0.6.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/apply-refact/apply-refact-" + version ".tar.gz")) + (sha256 + (base32 + "0p2mqgjcqr1zcmk8zgr0yq7g8z1agsa6l493lkj6g3ya9lyhxgig")))) + (build-system haskell-build-system) + (inputs + `(("ghc-refact" ,ghc-refact) + ("ghc-exactprint" ,ghc-exactprint) + ("ghc-syb" ,ghc-syb) + ("ghc-temporary" ,ghc-temporary) + ("ghc-filemanip" ,ghc-filemanip) + ("ghc-unix-compat" ,ghc-unix-compat) + ("ghc-optparse-applicative" + ,ghc-optparse-applicative))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-golden" ,ghc-tasty-golden) + ("ghc-tasty-expected-failure" + ,ghc-tasty-expected-failure) + ("ghc-silently" ,ghc-silently))) + (home-page "https://hackage.haskell.org/package/apply-refact") + (synopsis "Perform refactorings specified by the refact library") + (description + "This package lets you perform refactorings specified by the refact +library. It is primarily used with HLint's @code{--refactor} flag.") + (license license:bsd-3))) ;; In Stackage LTS 14, this package is at 2.4.1.0. However, that ;; version requires version 2.4.1.0 of the 'Cabal' package, which is @@ -111,10 +152,9 @@ installation of Haskell libraries and programs.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/jameysharp/corrode.git") + (url "https://github.com/jameysharp/corrode") (commit "b6699fb2fa552a07c6091276285a44133e5c9789"))) - (file-name - (string-append name "-" version "-checkout")) + (file-name (git-file-name name version)) (sha256 (base32 "02v0yyj6sk4gpg2222wzsdqjxn8w66scbnf6b20x0kbmc69qcz4r")))) (build-system haskell-build-system) @@ -161,7 +201,7 @@ 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 +;; Darcs has no https support: ;; http://darcs.net/manual/Configuring_darcs.html#SECTION00440070000000000000 ;; and results of search engines will show that if the protocol is http, https ;; is never mentioned. @@ -267,21 +307,53 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. @end enumerate") (license license:gpl2))) +(define-public ghcid + (package + (name "ghcid") + (version "0.8.7") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/ghcid/" + "ghcid-" version ".tar.gz")) + (sha256 + (base32 "0yqc1pkfajnr56gnh43sbj50r7c3r41b2jfz07ivgl6phi4frjbq")))) + (build-system haskell-build-system) + (inputs + `(("ghc-extra" ,ghc-extra) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-cmdargs" ,ghc-cmdargs) + ("ghc-fsnotify" ,ghc-fsnotify) + ("ghc-terminal-size" ,ghc-terminal-size))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-hunit" ,ghc-tasty-hunit))) + (home-page "https://github.com/ndmitchell/ghcid#readme") + (synopsis "GHCi based bare bones IDE") + (description + "Either \"GHCi as a daemon\" or \"GHC + a bit of an IDE\". A very simple Haskell +development tool which shows you the errors in your project and updates them whenever +you save. Run @code{ghcid --topmost --command=ghci}, where @code{--topmost} makes the +window on top of all others (Windows only) and @code{--command} is the command to start +GHCi on your project (defaults to @code{ghci} if you have a @file{.ghci} file, or else +to @code{cabal repl}).") + (license license:bsd-3))) + (define-public git-annex (package (name "git-annex") - (version "7.20200219") + (version "8.20210330") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "git-annex/git-annex-" version ".tar.gz")) (sha256 - (base32 "0pzwjh98jpirgssbd7pqfk7mzraibrk277dn34s2mrah8zy75b58")))) + (base32 "07dhxlmnj48drgndcplafc7xhby0w3rks68fz9wsppxan929240p")))) (build-system haskell-build-system) (arguments `(#:configure-flags - '("--flags=-Android -Assistant -Pairing -Webapp -WebDAV") + '("--flags=-Android -Webapp") #:phases (modify-phases %standard-phases (add-before 'configure 'patch-shell-for-tests @@ -299,8 +371,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. ;; Factor out necessary build logic from the provided ;; `Setup.hs' script. The script as-is does not work because ;; it cannot find its dependencies, and there is no obvious way - ;; to tell it where to look. Note that we do not preserve the - ;; code that installs man pages here. + ;; to tell it where to look. (call-with-output-file "PreConf.hs" (lambda (out) (format out "import qualified Build.Configure as Configure~%") @@ -314,6 +385,18 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. (lambda _ (invoke "runhaskell" "PreConf.hs") #t)) + (add-after 'build 'build-manpages + (lambda _ + ;; The Setup.hs rewrite above removed custom code for building + ;; the man pages. In addition to that code, git-annex's source + ;; tree has a file that's not included in the tarball but is used + ;; by the Makefile to build man pages. Copy the core bits here. + (call-with-output-file "Build/MakeMans.hs" + (lambda (out) + (format out "module Main where~%") + (format out "import Build.Mans~%") + (format out "main = buildMansOrWarn~%"))) + (invoke "runhaskell" "Build/MakeMans.hs"))) (replace 'check (lambda _ ;; We need to set the path so that Git recognizes @@ -329,6 +412,14 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. ;; Undo `patch-shell-for-tests'. (copy-file "/tmp/Shell.hs" "Utility/Shell.hs") (apply (assoc-ref %standard-phases 'build) args))) + (add-after 'install 'install-manpages + (lambda* (#:key outputs #:allow-other-keys) + (let ((man (string-append (assoc-ref outputs "out") + "/man/man1/"))) + (mkdir-p man) + (for-each (lambda (file) (install-file file man)) + (find-files "man"))) + #t)) (add-after 'install 'install-symlinks (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -337,7 +428,17 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. (string-append bin "/git-annex-shell")) (symlink (string-append bin "/git-annex") (string-append bin "/git-remote-tor-annex")) - #t)))))) + #t))) + (add-after 'install 'touch-static-output + (lambda* (#:key outputs #:allow-other-keys) + ;; The Haskell build system adds a "static" output by + ;; default, and there is no way to override this until + ;; is fixed. Without + ;; this phase, the daemon complains because we do not + ;; create the "static" output. + (with-output-to-file (assoc-ref outputs "static") + (lambda () + (display "static output not used\n")))))))) (inputs `(("curl" ,curl) ("ghc-aeson" ,ghc-aeson) @@ -350,6 +451,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. ("ghc-crypto-api" ,ghc-crypto-api) ("ghc-cryptonite" ,ghc-cryptonite) ("ghc-data-default" ,ghc-data-default) + ("ghc-dav" ,ghc-dav) ("ghc-disk-free-space" ,ghc-disk-free-space) ("ghc-dlist" ,ghc-dlist) ("ghc-edit-distance" ,ghc-edit-distance) @@ -358,6 +460,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. ("ghc-feed" ,ghc-feed) ("ghc-filepath-bytestring" ,ghc-filepath-bytestring) ("ghc-free" ,ghc-free) + ("ghc-hinotify" ,ghc-hinotify) ("ghc-hslogger" ,ghc-hslogger) ("ghc-http-client" ,ghc-http-client) ("ghc-http-conduit" ,ghc-http-conduit) @@ -367,7 +470,10 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. ("ghc-memory" ,ghc-memory) ("ghc-monad-control" ,ghc-monad-control) ("ghc-monad-logger" ,ghc-monad-logger) + ("ghc-mountpoints" ,ghc-mountpoints) ("ghc-network" ,ghc-network) + ("ghc-network-info" ,ghc-network-info) + ("ghc-network-multicast" ,ghc-network-multicast) ("ghc-old-locale" ,ghc-old-locale) ("ghc-optparse-applicative" ,ghc-optparse-applicative) ("ghc-persistent" ,ghc-persistent) @@ -384,6 +490,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. ("ghc-split" ,ghc-split) ("ghc-stm-chans" ,ghc-stm-chans) ("ghc-tagsoup" ,ghc-tagsoup) + ("ghc-torrent" ,ghc-torrent) ("ghc-unix-compat" ,ghc-unix-compat) ("ghc-unordered-containers" ,ghc-unordered-containers) ("ghc-utf8-string" ,ghc-utf8-string) @@ -394,7 +501,8 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. `(("ghc-tasty" ,ghc-tasty) ("ghc-tasty-hunit" ,ghc-tasty-hunit) ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) - ("ghc-tasty-rerun" ,ghc-tasty-rerun))) + ("ghc-tasty-rerun" ,ghc-tasty-rerun) + ("perl" ,perl))) (home-page "https://git-annex.branchable.com/") (synopsis "Manage files with Git, without checking in their contents") (description "This package allows managing files with Git, without @@ -528,16 +636,16 @@ and mIRC chat codes.") (define-public kmonad (package (name "kmonad") - (version "0.3.0") + (version "0.4.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/david-janssen/kmonad.git") + (url "https://github.com/david-janssen/kmonad") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1g40nkpldih6h1rlxjx5yf9iavr3qs1f2b6j0gd8135p5hkg8d8n")))) + (base32 "1rp880zxvrznx0y1k464wjrds441dpsz94syhrkaw5dnmxf74yjd")))) (build-system haskell-build-system) (arguments `(#:phases @@ -562,7 +670,7 @@ and mIRC chat codes.") (doc (string-append out "/share/doc/kmonad-" ,version))) (install-file "README.md" doc) (copy-recursively "doc" doc) - (copy-recursively "example" (string-append doc "/example")) + (copy-recursively "keymap" (string-append doc "/keymap")) #t)))))) (inputs `(("ghc-cereal" ,ghc-cereal) @@ -571,6 +679,8 @@ and mIRC chat codes.") ("ghc-lens" ,ghc-lens) ("ghc-megaparsec" ,ghc-megaparsec) ("ghc-optparse-applicative" ,ghc-optparse-applicative) + ("ghc-resourcet" ,ghc-resourcet) + ("ghc-rio" ,ghc-rio) ("ghc-unagi-chan" ,ghc-unagi-chan) ("ghc-unliftio" ,ghc-unliftio) ("ghc-unordered-containers" ,ghc-unordered-containers))) @@ -583,6 +693,69 @@ By operating at a lower level than most similar tools, it supports X11, Wayland, and Linux console environments alike.") (license license:expat))) +(define-public nixfmt + (package + (name "nixfmt") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/nixfmt/nixfmt-" + version + ".tar.gz")) + (sha256 + (base32 "1ispgl8rc2scr6v8bb6sks7px856jf61x74zj2iyddrn5qamkb3n")))) + (build-system haskell-build-system) + (inputs + `(("ghc-megaparsec" ,ghc-megaparsec) + ("ghc-parser-combinators" ,ghc-parser-combinators) + ("ghc-cmdargs" ,ghc-cmdargs) + ("ghc-safe-exceptions" ,ghc-safe-exceptions))) + (arguments + `(#:cabal-revision + ("1" "1hsj0jh6siph3afd9c2wii09sffl48rzqv653n4clpd8qy0rn48d"))) + (home-page "https://github.com/serokell/nixfmt") + (synopsis "Opinionated formatter for Nix") + (description + "Nixfmt is a formatter for Nix that ensures consistent and clear +formatting by forgetting all existing formatting during parsing.") + (license license:mpl2.0))) + +(define-public greenclip + (package + (name "greenclip") + (version "3.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/erebe/greenclip") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1baw360dcnyavacf7a8v6wq4m5g6bcmyybkckv4cz7r4xl5p3qws")))) + (build-system haskell-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libx11" ,libx11) + ("libxext" ,libxext) + ("libxscrnsaver" ,libxscrnsaver) + ("ghc-x11" ,ghc-x11) + ("ghc-exceptions" ,ghc-exceptions) + ("ghc-hashable" ,ghc-hashable) + ("ghc-microlens" ,ghc-microlens) + ("ghc-microlens-mtl" ,ghc-microlens-mtl) + ("ghc-protolude" ,ghc-protolude-0.3) + ("ghc-vector" ,ghc-vector) + ("ghc-wordexp" ,ghc-wordexp))) + (home-page "https://github.com/erebe/greenclip") + (synopsis "Simple Clipboard manager") + (description "@code{greenclip} is a clipboard manager written in +Haskell.") + (license license:bsd-3))) + (define-public raincat (package (name "raincat") @@ -616,7 +789,7 @@ Wayland, and Linux console environments alike.") ("ghc-sdl2" ,ghc-sdl2) ("ghc-sdl2-image" ,ghc-sdl2-image) ("ghc-sdl2-mixer" ,ghc-sdl2-mixer))) - (home-page "http://www.bysusanlin.com/raincat/") + (home-page "https://www.gamecreation.org/games/raincat") (synopsis "Puzzle game with a cat in lead role") (description "Project Raincat is a game developed by Carnegie Mellon students through GCS during the Fall 2008 semester. Raincat features game @@ -639,6 +812,20 @@ is programmed in Haskell.") (base32 "0apzrvf99rskj4dbmn57jjxrsf19j436s8a09m950df5aws3a0wj")))) (build-system haskell-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'install 'touch-static-output + (lambda* (#:key outputs #:allow-other-keys) + ;; The Haskell build system adds a "static" output by + ;; default, and there is no way to override this until + ;; is fixed. Without + ;; this phase, the daemon complains because we do not + ;; create the "static" output. + (with-output-to-file (assoc-ref outputs "static") + (lambda () + (display "static output not used\n"))) + #t))))) (inputs `(("ghc-case-insensitive" ,ghc-case-insensitive) ("ghc-data-default" ,ghc-data-default) @@ -659,7 +846,7 @@ too slow and you'll get wound up in the scroll and crushed.") (define-public shellcheck (package (name "shellcheck") - (version "0.7.0") + (version "0.7.1") (source (origin (method url-fetch) @@ -667,7 +854,7 @@ too slow and you'll get wound up in the scroll and crushed.") "https://hackage.haskell.org/package/ShellCheck/ShellCheck-" version ".tar.gz")) (sha256 - (base32 "1vx895cp5k5h0680xfwj74lk97m9y627n965x6srds0gfnbkzy9s")) + (base32 "06m4wh891nah3y0br4wh3adpsb16zawkb2ijgf1vcz61fznj6ps1")) (file-name (string-append name "-" version ".tar.gz")))) (build-system haskell-build-system) (inputs @@ -675,7 +862,7 @@ too slow and you'll get wound up in the scroll and crushed.") ("ghc-diff" ,ghc-diff) ("ghc-quickcheck" ,ghc-quickcheck) ("ghc-regex-tdfa" ,ghc-regex-tdfa))) - (home-page "https://github.com/koalaman/shellcheck") + (home-page "https://www.shellcheck.net/") (synopsis "Static analysis for shell scripts") (description "@code{shellcheck} provides static analysis for @command{bash} and @command{sh} shell scripts. @@ -691,6 +878,58 @@ advanced user's otherwise working script to fail under future circumstances. @end enumerate") (license license:gpl3+))) +(define-public shelltestrunner + (package + (name "shelltestrunner") + (version "1.9") + (source (origin + (method url-fetch) + (uri (string-append "mirror://hackage/package/shelltestrunner-" + version "/shelltestrunner-" version ".tar.gz")) + (sha256 + (base32 + "1a5kzqbwg6990249ypw0cx6cqj6663as1kbj8nzblcky8j6kbi6b")))) + (build-system haskell-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'check) + (add-after 'install 'check + (lambda* (#:key outputs tests? parallel-tests? #:allow-other-keys) + ;; This test is inspired by the Makefile in the upstream + ;; repository, which is missing in the Hackage release tarball + ;; along with some of the tests. The Makefile would not work + ;; anyway as it ties into the 'stack' build tool. + (let* ((out (assoc-ref outputs "out")) + (shelltest (string-append out "/bin/shelltest")) + (numjobs (if parallel-tests? + (number->string (parallel-job-count)) + "1"))) + (if tests? + (invoke shelltest (string-append "-j" numjobs) + "tests/examples") + (format #t "test suite not run~%")) + #t)))))) + (inputs + `(("ghc-diff" ,ghc-diff) + ("ghc-cmdargs" ,ghc-cmdargs) + ("ghc-filemanip" ,ghc-filemanip) + ("ghc-hunit" ,ghc-hunit) + ("ghc-pretty-show" ,ghc-pretty-show) + ("ghc-regex-tdfa" ,ghc-regex-tdfa) + ("ghc-safe" ,ghc-safe) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit))) + (home-page "https://github.com/simonmichael/shelltestrunner") + (synopsis "Test CLI programs") + (description + "shelltestrunner (executable: @command{shelltest}) is a command-line tool +for testing command-line programs, or general shell commands. It reads simple +test specifications defining a command to run, some input, and the expected +output, stderr, and exit status.") + (license license:gpl3+))) + (define-public stylish-haskell (package (name "stylish-haskell") @@ -720,8 +959,29 @@ advanced user's otherwise working script to fail under future circumstances. ("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.") + (description "Stylish-haskell is a Haskell code prettifier. The goal is +not to format all of the code in a file, to avoid \"getting in the way\". +However, this tool can e.g. clean up import statements and help doing various +tasks that get tedious very quickly. It can +@itemize +@item +Align and sort @code{import} statements +@item +Group and wrap @code{{-# LANGUAGE #-}} pragmas, remove (some) redundant +pragmas +@item +Remove trailing whitespaces +@item +Align branches in @code{case} and fields in records +@item +Convert line endings (customisable) +@item +Replace tabs by four spaces (turned off by default) +@item +Replace some ASCII sequences by their Unicode equivalent (turned off by +default) +@end itemize") (license license:bsd-3))) + +(define-public ghc-stylish-haskell + (deprecated-package "ghc-stylish-haskell" stylish-haskell))