;;; 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 © 2016, 2017, 2018 Nikita <nikita@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 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 © 2019, 2020 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2015 John Soo <jsoo1@asu.edu>
-;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
+;;; Copyright © 2020 Brian Leung <bkleung89@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages rsync)
#:use-module (gnu packages version-control))
+(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
;; provided by GHC 8.6.5 at version 2.4.0.1. Hence, we use an older
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/jameysharp/corrode.git")
+ (url "https://github.com/jameysharp/corrode")
(commit "b6699fb2fa552a07c6091276285a44133e5c9789")))
(file-name (git-file-name name version))
(sha256
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.
@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.20201127")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"git-annex/git-annex-" version ".tar.gz"))
(sha256
- (base32 "0pzwjh98jpirgssbd7pqfk7mzraibrk277dn34s2mrah8zy75b58"))))
+ (base32 "0n9m5ffgbzms0nh9dskrc7vjgwwwi9f9gxyh498wnspf96729zz7"))))
(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
;; 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~%")
(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
;; 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"))
(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
+ ;; <https://issues.guix.gnu.org/41569> 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)
("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)
("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)
("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)
("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)
`(("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
(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
(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)
("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)))
("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
(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
+ ;; <https://issues.guix.gnu.org/41569> 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)
(define-public shellcheck
(package
(name "shellcheck")
- (version "0.7.0")
+ (version "0.7.1")
(source
(origin
(method url-fetch)
"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
("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.
@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")
("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))