summaryrefslogtreecommitdiff
path: root/gnu/packages/elm.scm
diff options
context:
space:
mode:
authorRobert Vollmert <rob@vllmrt.net>2019-07-15 15:47:14 +0200
committerLudovic Courtès <ludo@gnu.org>2019-08-17 16:23:06 +0200
commitc902458863d1d341ffd74970b75e69c2bb848183 (patch)
tree3e1be743977b793ab705a1b38ab3cd3ed2fa5ad9 /gnu/packages/elm.scm
parent198f560fcdf4f05b83b565acfd632153fb09bbf0 (diff)
gnu: Add elm-compiler 0.19.0
This adds the elm compiler, version 0.19.0. This provides the `elm` command, with the exception of the `elm reactor` subcommand. Named `elm-compiler`, to leave space for `elm` as the full elm including reactor. * gnu/packages/elm.scm: New module. (elm-compiler): New package. * gnu/packages/patches/elm-disable-reactor.patch: New patch. * gnu/packages/patches/elm-fix-map-key.patch: New patch. * gnu/packages/patches/elm-relax-glsl-bound.patch: New patch. * gnu/local.mk: Add new files. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/packages/elm.scm')
-rw-r--r--gnu/packages/elm.scm81
1 files changed, 81 insertions, 0 deletions
diff --git a/gnu/packages/elm.scm b/gnu/packages/elm.scm
new file mode 100644
index 0000000000..8b5ec36621
--- /dev/null
+++ b/gnu/packages/elm.scm
@@ -0,0 +1,81 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages elm)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages haskell)
+ #:use-module (gnu packages haskell-check)
+ #:use-module (gnu packages haskell-crypto)
+ #:use-module (gnu packages haskell-xyz)
+ #:use-module (gnu packages haskell-web)
+ #:use-module (guix build-system haskell)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages))
+
+;; The full elm build calls out to itself via Template Haskell to
+;; compile the elm reactor web app. elm reactor isn't required to
+;; compile elm applications, so we take this part out of this
+;; bootstrap package.
+(define-public elm-compiler
+ (package
+ (name "elm-compiler")
+ (version "0.19.0")
+ (source
+ (origin
+ (method git-fetch)
+ (file-name (git-file-name name version))
+ (uri (git-reference
+ (url "https://github.com/elm/compiler/")
+ (commit version)))
+ (sha256
+ (base32 "0s93z9vr0vp5w894ghc5s34nsq09sg1msf59zfiba87sid5vgjqy"))
+ (patches
+ (search-patches "elm-compiler-disable-reactor.patch"
+ "elm-compiler-relax-glsl-bound.patch"
+ "elm-compiler-fix-map-key.patch"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-ansi-terminal" ,ghc-ansi-terminal)
+ ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+ ("ghc-edit-distance" ,ghc-edit-distance)
+ ("ghc-file-embed" ,ghc-file-embed)
+ ("ghc-http" ,ghc-http)
+ ("ghc-http-client" ,ghc-http-client)
+ ("ghc-http-client-tls" ,ghc-http-client-tls)
+ ("ghc-http-types" ,ghc-http-types)
+ ("ghc-language-glsl" ,ghc-language-glsl)
+ ("ghc-logict" ,ghc-logict)
+ ("ghc-network" ,ghc-network)
+ ("ghc-raw-strings-qq" ,ghc-raw-strings-qq)
+ ("ghc-scientific" ,ghc-scientific)
+ ("ghc-sha" ,ghc-sha)
+ ("ghc-snap-core" ,ghc-snap-core)
+ ("ghc-snap-server" ,ghc-snap-server)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-utf8-string" ,ghc-utf8-string)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-zip-archive" ,ghc-zip-archive)))
+ (home-page "https://elm-lang.org")
+ (synopsis "Programming language for Web applications")
+ (description
+ "This package provides Elm, a statically-typed functional programming
+language for the browser. It includes commands for developers such as
+@command{elm make} and @command{elm repl}.")
+ (license license:bsd-3)))