;;; 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, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 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.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/ghcid/"
+ "ghcid-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0wpm4ikrm1krz1ckzwk0srng091yh2skjal4fh95iz1hq3dw6qlw"))))
+ (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 "8.20200226")
+ (version "8.20200617")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"git-annex/git-annex-" version ".tar.gz"))
(sha256
- (base32 "09v80ni1w9z1im79lzrnpz7xlivwna44zqpwq4axwyd17cffqi9m"))))
+ (base32 "1vgpqbscvxm03ibxy6cjnp9vd1wpsr3gkajp4z3m9nnkmjz5r4q4"))))
(build-system haskell-build-system)
(arguments
`(#:configure-flags
;; 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"))
`(("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
(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
("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
("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))