diff --git a/doc/package-notes.xml b/doc/package-notes.xml index 266a8092216..9d8217d60bc 100644 --- a/doc/package-notes.xml +++ b/doc/package-notes.xml @@ -346,4 +346,24 @@ packageOverrides = pkgs: { +
+ +Elm + + +The Nix expressions for Elm reside in +pkgs/development/compilers/elm. They are generated +automatically by update-elm.rb script. One should +specify versions of Elm packages inside the script, clear the +packages directory and run the script from inside it. +elm-reactor is special because it also has Elm package +dependencies. The process is not automated very much for now -- you should +get the elm-reactor source tree (e.g. with +nix-shell) and run elm2nix.rb inside +it. Place the resulting package.nix file into +packages/elm-reactor-elm.nix. + + +
+ diff --git a/nixos/doc/manual/release-notes/rl-unstable.xml b/nixos/doc/manual/release-notes/rl-unstable.xml index 30da98faa33..8fbac05e968 100644 --- a/nixos/doc/manual/release-notes/rl-unstable.xml +++ b/nixos/doc/manual/release-notes/rl-unstable.xml @@ -80,6 +80,9 @@ was accordingly renamed to bomi was accordingly renamed to electron +Elm is not released on Hackage anymore. You should now use elmPackages.elm +which contains the latest Elm platform. + The CUPS printing service has been updated to version 2.0.2. diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix new file mode 100644 index 00000000000..4a056e61de9 --- /dev/null +++ b/pkgs/development/compilers/elm/default.nix @@ -0,0 +1,81 @@ +{ lib, stdenv, buildEnv, haskell, nodejs, fetchurl, fetchpatch, makeWrapper }: + +let + makeElmStuff = deps: + let json = builtins.toJSON (lib.mapAttrs (name: info: info.version) deps); + cmds = lib.mapAttrsToList (name: info: let + pkg = stdenv.mkDerivation { + + name = lib.replaceChars ["/"] ["-"] name + "-${info.version}"; + + src = fetchurl { + url = "https://github.com/${name}/archive/${info.version}.tar.gz"; + meta.homepage = "https://github.com/${name}/"; + inherit (info) sha256; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + installPhase = '' + mkdir -p $out + cp -r * $out + ''; + + }; + in '' + mkdir -p elm-stuff/packages/${name} + ln -s ${pkg} elm-stuff/packages/${name}/${info.version} + '') deps; + in '' + export HOME=/tmp + mkdir elm-stuff + cat > elm-stuff/exact-dependencies.json < "0.15.1", + "elm-package" => "0.5.1", + "elm-make" => "0.2", + "elm-reactor" => "0.3.2", + "elm-repl" => "0.4.2" + } + +for pkg, ver in $elm_packages + system "cabal2nix https://github.com/elm-lang/#{pkg} --revision refs/tags/#{ver} --jailbreak > #{pkg}.nix" +end + +File.open("release.nix", 'w') do |file| + file.puts "{" + file.puts " version = \"#{$elm_version}\";" + file.puts " packages = {" + for pkg, ver in $elm_packages + file.puts " #{pkg} = callPackage ./#{pkg}.nix { };" + end + file.puts " };" + file.puts "}" +end diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 56b257669aa..ecb009152e8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3729,6 +3729,8 @@ let eql = callPackage ../development/compilers/eql {}; + elmPackages = callPackage ../development/compilers/elm { }; + adobe_flex_sdk = callPackage ../development/compilers/adobe-flex-sdk { }; fpc = callPackage ../development/compilers/fpc { };