lol

elm: refactor file structure

PedroHLC ae5eab1b a5b7a0ff

+421 -371
+31 -286
pkgs/development/compilers/elm/default.nix
··· 5 5 }: 6 6 7 7 let 8 - fetchElmDeps = pkgs.callPackage ./fetchElmDeps.nix { }; 8 + fetchElmDeps = pkgs.callPackage ./lib/fetchElmDeps.nix { }; 9 9 10 10 # Haskell packages that require ghc 9.6 11 - hs96Pkgs = self: pkgs.haskell.packages.ghc96.override { 12 - overrides = self: super: with pkgs.haskell.lib.compose; with lib; 13 - let elmPkgs = rec { 14 - elm = overrideCabal (drv: { 15 - # sadly with parallelism most of the time breaks compilation 16 - enableParallelBuilding = false; 17 - preConfigure = fetchElmDeps { 18 - elmPackages = (import ./packages/elm-srcs.nix); 19 - elmVersion = drv.version; 20 - registryDat = ./registry.dat; 21 - }; 22 - buildTools = drv.buildTools or [] ++ [ makeWrapper ]; 23 - postInstall = '' 24 - wrapProgram $out/bin/elm \ 25 - --prefix PATH ':' ${lib.makeBinPath [ nodejs ]} 26 - ''; 27 - 28 - description = "A delightful language for reliable webapps"; 29 - homepage = "https://elm-lang.org/"; 30 - license = licenses.bsd3; 31 - maintainers = with maintainers; [ domenkozar turbomack ]; 32 - }) (self.callPackage ./packages/elm.nix { }); 33 - 34 - inherit fetchElmDeps; 35 - elmVersion = elmPkgs.elm.version; 36 - }; 37 - in elmPkgs // { 38 - inherit elmPkgs; 39 - 40 - ansi-wl-pprint = overrideCabal (drv: { 41 - jailbreak = true; 42 - }) (self.callPackage ./packages/ansi-wl-pprint.nix {}); 43 - }; 44 - }; 11 + hs96Pkgs = import ./packages/ghc9_6 { inherit pkgs lib makeWrapper nodejs fetchElmDeps; }; 45 12 46 13 # Haskell packages that require ghc 8.10 47 - hs810Pkgs = self: pkgs.haskell.packages.ghc810.override { 48 - overrides = self: super: with pkgs.haskell.lib.compose; with lib; 49 - let elmPkgs = rec { 50 - elmi-to-json = justStaticExecutables (overrideCabal (drv: { 51 - prePatch = '' 52 - substituteInPlace package.yaml --replace "- -Werror" "" 53 - hpack 54 - ''; 55 - jailbreak = true; 14 + hs810Pkgs = import ./packages/ghc8_10 { inherit pkgs lib; }; 56 15 57 - description = "Tool that reads .elmi files (Elm interface file) generated by the elm compiler"; 58 - homepage = "https://github.com/stoeffel/elmi-to-json"; 59 - license = licenses.bsd3; 60 - maintainers = [ maintainers.turbomack ]; 61 - }) (self.callPackage ./packages/elmi-to-json.nix {})); 16 + # Haskell packages that require ghc 9.2 17 + hs92Pkgs = import ./packages/ghc9_2 { inherit pkgs lib; }; 62 18 63 - elm-instrument = justStaticExecutables (overrideCabal (drv: { 64 - prePatch = '' 65 - sed "s/desc <-.*/let desc = \"${drv.version}\"/g" Setup.hs --in-place 66 - ''; 67 - jailbreak = true; 68 - # Tests are failing because of missing instances for Eq and Show type classes 69 - doCheck = false; 19 + # Patched, originally npm-downloaded, packages 20 + patchedNodePkgs = import ./packages/node { inherit pkgs lib nodejs makeWrapper; }; 70 21 71 - description = "Instrument Elm code as a preprocessing step for elm-coverage"; 72 - homepage = "https://github.com/zwilias/elm-instrument"; 73 - license = licenses.bsd3; 74 - maintainers = [ maintainers.turbomack ]; 75 - }) (self.callPackage ./packages/elm-instrument.nix {})); 76 - }; 77 - in elmPkgs // { 78 - inherit elmPkgs; 22 + assembleScope = self: basics: 23 + (hs96Pkgs self).elmPkgs // (hs92Pkgs self).elmPkgs // (hs810Pkgs self).elmPkgs // (patchedNodePkgs self) // basics; 24 + in 25 + lib.makeScope pkgs.newScope 26 + (self: assembleScope self 27 + (with self; { 28 + inherit fetchElmDeps nodejs; 79 29 80 - # We need attoparsec < 0.14 to build elm for now 81 - attoparsec = self.attoparsec_0_13_2_5; 30 + /* Node/NPM based dependencies can be upgraded using script `packages/generate-node-packages.sh`. 82 31 83 - # aeson 2.0.3.0 does not build with attoparsec_0_13_2_5 84 - aeson = doJailbreak self.aeson_1_5_6_0; 85 - 86 - # elm-instrument needs this 87 - indents = self.callPackage ./packages/indents.nix {}; 88 - 89 - # elm-instrument's tests depend on an old version of elm-format, but we set doCheck to false for other reasons above 90 - elm-format = null; 91 - }; 92 - }; 32 + * Packages which rely on `bin-wrap` will fail by default 33 + and can be patched using `patchBinwrap` function defined in `packages/lib.nix`. 93 34 94 - # Haskell packages that require ghc 9.2 95 - hs92Pkgs = self: pkgs.haskell.packages.ghc92.override { 96 - overrides = self: super: with pkgs.haskell.lib.compose; with lib; 97 - let elmPkgs = rec { 98 - /* 99 - The elm-format expression is updated via a script in the https://github.com/avh4/elm-format repo: 100 - `package/nix/build.sh` 35 + * Packages which depend on npm installation of elm can be patched using 36 + `patchNpmElm` function also defined in `packages/lib.nix`. 101 37 */ 102 - elm-format = justStaticExecutables (overrideCabal (drv: { 103 - jailbreak = true; 104 - 105 - description = "Formats Elm source code according to a standard set of rules based on the official Elm Style Guide"; 106 - homepage = "https://github.com/avh4/elm-format"; 107 - license = licenses.bsd3; 108 - maintainers = with maintainers; [ avh4 turbomack ]; 109 - }) (self.callPackage ./packages/elm-format.nix {})); 110 - }; 111 - in elmPkgs // { 112 - inherit elmPkgs; 113 - 114 - # Needed for elm-format 115 - avh4-lib = doJailbreak (self.callPackage ./packages/avh4-lib.nix {}); 116 - elm-format-lib = doJailbreak (self.callPackage ./packages/elm-format-lib.nix {}); 117 - elm-format-test-lib = self.callPackage ./packages/elm-format-test-lib.nix {}; 118 - elm-format-markdown = self.callPackage ./packages/elm-format-markdown.nix {}; 119 - 120 - # elm-format requires text >= 2.0 121 - text = self.text_2_0_2; 122 - # unorderd-container's tests indirectly depend on text < 2.0 123 - unordered-containers = overrideCabal (drv: { doCheck = false; }) super.unordered-containers; 124 - # relude-1.1.0.0's tests depend on hedgehog < 1.2, which indirectly depends on text < 2.0 125 - relude = overrideCabal (drv: { doCheck = false; }) super.relude; 126 - }; 127 - }; 128 - 129 - nodePkgs = pkgs.callPackage ./packages/node-composition.nix { 130 - inherit pkgs nodejs; 131 - inherit (pkgs.stdenv.hostPlatform) system; 132 - }; 133 - 134 - in lib.makeScope pkgs.newScope (self: with self; { 135 - inherit fetchElmDeps nodejs; 136 - 137 - /* Node/NPM based dependencies can be upgraded using script `packages/generate-node-packages.sh`. 138 - 139 - * Packages which rely on `bin-wrap` will fail by default 140 - and can be patched using `patchBinwrap` function defined in `packages/lib.nix`. 141 - 142 - * Packages which depend on npm installation of elm can be patched using 143 - `patchNpmElm` function also defined in `packages/lib.nix`. 144 - */ 145 - elmLib = let 146 - hsElmPkgs = (hs810Pkgs self) // (hs96Pkgs self); 147 - in import ./packages/lib.nix { 148 - inherit lib; 149 - inherit (pkgs) writeScriptBin stdenv; 150 - inherit (hsElmPkgs.elmPkgs) elm; 151 - }; 152 - 153 - elm-json = callPackage ./packages/elm-json.nix { }; 154 - 155 - elm-test-rs = callPackage ./packages/elm-test-rs.nix { }; 156 - 157 - elm-test = callPackage ./packages/elm-test.nix { }; 158 - } // (hs96Pkgs self).elmPkgs // (hs92Pkgs self).elmPkgs // (hs810Pkgs self).elmPkgs // (with elmLib; with (hs96Pkgs self).elmPkgs; { 159 - elm-verify-examples = let 160 - patched = patchBinwrap [elmi-to-json] nodePkgs.elm-verify-examples // { 161 - meta = with lib; nodePkgs.elm-verify-examples.meta // { 162 - description = "Verify examples in your docs"; 163 - homepage = "https://github.com/stoeffel/elm-verify-examples"; 164 - license = licenses.bsd3; 165 - maintainers = [ maintainers.turbomack ]; 166 - }; 167 - }; 168 - in patched.override (old: { 169 - preRebuild = (old.preRebuild or "") + '' 170 - # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done 171 - # in case of just this package 172 - # TODO: investigate, same as for elm-coverage below 173 - sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json 174 - ''; 175 - }); 176 - 177 - elm-coverage = let 178 - patched = patchNpmElm (patchBinwrap [elmi-to-json] nodePkgs.elm-coverage); 179 - in patched.override (old: { 180 - # Symlink Elm instrument binary 181 - preRebuild = (old.preRebuild or "") + '' 182 - # Noop custom installation script 183 - sed 's/\"install\".*/\"install\":\"echo no-op\"/g' --in-place package.json 184 - 185 - # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done 186 - # in case of just this package 187 - # TODO: investigate 188 - sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json 189 - ''; 190 - postInstall = (old.postInstall or "") + '' 191 - mkdir -p unpacked_bin 192 - ln -sf ${elm-instrument}/bin/elm-instrument unpacked_bin/elm-instrument 193 - ''; 194 - meta = with lib; nodePkgs.elm-coverage.meta // { 195 - description = "Work in progress - Code coverage tooling for Elm"; 196 - homepage = "https://github.com/zwilias/elm-coverage"; 197 - license = licenses.bsd3; 198 - maintainers = [ maintainers.turbomack ]; 199 - }; 200 - }); 201 - 202 - create-elm-app = patchNpmElm 203 - nodePkgs.create-elm-app // { 204 - meta = with lib; nodePkgs.create-elm-app.meta // { 205 - description = "Create Elm apps with no build configuration"; 206 - homepage = "https://github.com/halfzebra/create-elm-app"; 207 - license = licenses.mit; 208 - maintainers = [ maintainers.turbomack ]; 209 - }; 210 - }; 211 - 212 - elm-graphql = 213 - nodePkgs."@dillonkearns/elm-graphql" // { 214 - meta = with lib; nodePkgs."@dillonkearns/elm-graphql".meta // { 215 - description = " Autogenerate type-safe GraphQL queries in Elm."; 216 - license = licenses.bsd3; 217 - maintainers = [ maintainers.pedrohlc ]; 38 + elmLib = 39 + let 40 + hsElmPkgs = (hs810Pkgs self) // (hs96Pkgs self); 41 + in 42 + import ./lib { 43 + inherit lib; 44 + inherit (pkgs) writeScriptBin stdenv; 45 + inherit (self) elm; 218 46 }; 219 - }; 220 47 221 - elm-review = 222 - nodePkgs.elm-review // { 223 - meta = with lib; nodePkgs.elm-review.meta // { 224 - description = "Analyzes Elm projects, to help find mistakes before your users find them"; 225 - homepage = "https://package.elm-lang.org/packages/jfmengels/elm-review/${nodePkgs.elm-review.version}"; 226 - license = licenses.bsd3; 227 - maintainers = [ maintainers.turbomack ]; 228 - }; 229 - }; 230 - 231 - elm-language-server = nodePkgs."@elm-tooling/elm-language-server" // { 232 - meta = with lib; nodePkgs."@elm-tooling/elm-language-server".meta // { 233 - description = "Language server implementation for Elm"; 234 - homepage = "https://github.com/elm-tooling/elm-language-server"; 235 - license = licenses.mit; 236 - maintainers = [ maintainers.turbomack ]; 237 - }; 238 - }; 239 - 240 - elm-spa = nodePkgs."elm-spa".overrideAttrs ( 241 - old: { 242 - nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ]; 243 - 244 - meta = with lib; nodePkgs."elm-spa".meta // { 245 - description = "A tool for building single page apps in Elm"; 246 - homepage = "https://www.elm-spa.dev/"; 247 - license = licenses.bsd3; 248 - maintainers = [ maintainers.ilyakooo0 ]; 249 - }; 250 - } 251 - ); 48 + elm-json = callPackage ./packages/elm-json { }; 252 49 253 - elm-optimize-level-2 = nodePkgs."elm-optimize-level-2" // { 254 - meta = with lib; nodePkgs."elm-optimize-level-2".meta // { 255 - description = "A second level of optimization for the Javascript that the Elm Compiler produces"; 256 - homepage = "https://github.com/mdgriffith/elm-optimize-level-2"; 257 - license = licenses.bsd3; 258 - maintainers = [ maintainers.turbomack ]; 259 - }; 260 - }; 50 + elm-test-rs = callPackage ./packages/elm-test-rs { }; 261 51 262 - elm-pages = nodePkgs."elm-pages".overrideAttrs ( 263 - old: { 264 - nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ]; 52 + elm-test = callPackage ./packages/elm-test { }; 265 53 266 - # can't use `patches = [ <patch_file> ]` with a nodePkgs derivation; 267 - # need to patch in one of the build phases instead. 268 - # see upstream issue https://github.com/dillonkearns/elm-pages/issues/305 for dealing with the read-only problem 269 - preFixup = '' 270 - patch $out/lib/node_modules/elm-pages/generator/src/codegen.js ${./packages/elm-pages-fix-read-only.patch} 271 - patch $out/lib/node_modules/elm-pages/generator/src/init.js ${./packages/elm-pages-fix-init-read-only.patch} 272 - ''; 273 - 274 - postFixup = '' 275 - wrapProgram $out/bin/elm-pages --prefix PATH : ${ 276 - with pkgs.elmPackages; lib.makeBinPath [ elm elm-review elm-optimize-level-2 ] 277 - } 278 - ''; 279 - 280 - meta = with lib; nodePkgs."elm-pages".meta // { 281 - description = "A statically typed site generator for Elm."; 282 - homepage = "https://github.com/dillonkearns/elm-pages"; 283 - license = licenses.bsd3; 284 - maintainers = [ maintainers.turbomack maintainers.jali-clarke ]; 285 - }; 286 - } 287 - ); 288 - 289 - elm-land = 290 - let 291 - patched = patchNpmElm nodePkgs.elm-land; 292 - in 293 - patched.override (old: { 294 - meta = with lib; nodePkgs."elm-land".meta // { 295 - description = "A production-ready framework for building Elm applications."; 296 - homepage = "https://elm.land/"; 297 - license = licenses.bsd3; 298 - maintainers = [ maintainers.zupo ]; 299 - }; 300 - } 301 - ); 302 - 303 - lamdera = callPackage ./packages/lamdera.nix {}; 304 - 305 - elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: { 306 - nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ old.nodejs.pkgs.node-gyp-build ]; 307 - }); 308 - 309 - inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install; 54 + lamdera = callPackage ./packages/lamdera { }; 310 55 }) 311 56 )
pkgs/development/compilers/elm/fetchElmDeps.nix pkgs/development/compilers/elm/lib/fetchElmDeps.nix
+41
pkgs/development/compilers/elm/lib/makeDotElm.nix
··· 1 + { stdenv, lib, fetchurl, registryDat }: 2 + 3 + ver: deps: 4 + let 5 + cmds = lib.mapAttrsToList 6 + (name: info: 7 + let 8 + pkg = stdenv.mkDerivation { 9 + name = lib.replaceStrings [ "/" ] [ "-" ] name + "-${info.version}"; 10 + 11 + src = fetchurl { 12 + url = "https://github.com/${name}/archive/${info.version}.tar.gz"; 13 + meta.homepage = "https://github.com/${name}/"; 14 + inherit (info) sha256; 15 + }; 16 + 17 + configurePhase = '' 18 + true 19 + ''; 20 + 21 + buildPhase = '' 22 + true 23 + ''; 24 + 25 + installPhase = '' 26 + mkdir -p $out 27 + cp -r * $out 28 + ''; 29 + }; 30 + in 31 + '' 32 + mkdir -p .elm/${ver}/packages/${name} 33 + cp -R ${pkg} .elm/${ver}/packages/${name}/${info.version} 34 + '') 35 + deps; 36 + in 37 + (lib.concatStrings cmds) + '' 38 + mkdir -p .elm/${ver}/packages; 39 + cp ${registryDat} .elm/${ver}/packages/registry.dat; 40 + chmod -R +w .elm 41 + ''
-35
pkgs/development/compilers/elm/makeDotElm.nix
··· 1 - {stdenv, lib, fetchurl, registryDat}: 2 - 3 - ver: deps: 4 - let cmds = lib.mapAttrsToList (name: info: let 5 - pkg = stdenv.mkDerivation { 6 - name = lib.replaceStrings ["/"] ["-"] name + "-${info.version}"; 7 - 8 - src = fetchurl { 9 - url = "https://github.com/${name}/archive/${info.version}.tar.gz"; 10 - meta.homepage = "https://github.com/${name}/"; 11 - inherit (info) sha256; 12 - }; 13 - 14 - configurePhase = '' 15 - true 16 - ''; 17 - 18 - buildPhase = '' 19 - true 20 - ''; 21 - 22 - installPhase = '' 23 - mkdir -p $out 24 - cp -r * $out 25 - ''; 26 - }; 27 - in '' 28 - mkdir -p .elm/${ver}/packages/${name} 29 - cp -R ${pkg} .elm/${ver}/packages/${name}/${info.version} 30 - '') deps; 31 - in (lib.concatStrings cmds) + '' 32 - mkdir -p .elm/${ver}/packages; 33 - cp ${registryDat} .elm/${ver}/packages/registry.dat; 34 - chmod -R +w .elm 35 - ''
pkgs/development/compilers/elm/packages/ansi-wl-pprint.nix pkgs/development/compilers/elm/packages/ghc9_6/ansi-wl-pprint/default.nix
+4 -2
pkgs/development/compilers/elm/packages/avh4-lib.nix pkgs/development/compilers/elm/packages/ghc9_2/elm-format/avh4-lib.nix
··· 12 12 fetchSubmodules = true; 13 13 }; 14 14 postUnpack = "sourceRoot+=/avh4-lib; echo source root reset to $sourceRoot"; 15 - configureFlags = [ "--ghc-option=-Wno-error=unused-packages" ]; 16 15 libraryHaskellDepends = [ 17 16 array base bytestring directory filepath mtl pooled-io process 18 17 relude text ··· 22 21 relude tasty tasty-hspec tasty-hunit text 23 22 ]; 24 23 testToolDepends = [ tasty-discover ]; 25 - doHaddock = false; 26 24 description = "Common code for haskell projects"; 27 25 license = lib.licenses.bsd3; 26 + 27 + # Added manually 28 + configureFlags = [ "--ghc-option=-Wno-error=unused-packages" ]; 29 + doHaddock = false; 28 30 }
-15
pkgs/development/compilers/elm/packages/bimap.nix
··· 1 - { mkDerivation, base, containers, exceptions, lib, QuickCheck 2 - , template-haskell 3 - }: 4 - mkDerivation { 5 - pname = "bimap"; 6 - version = "0.3.3"; 7 - sha256 = "73829355c7bcbd3eedba22a382a04a3ab641702b00828790ec082ec2db3a8ad1"; 8 - libraryHaskellDepends = [ base containers exceptions ]; 9 - testHaskellDepends = [ 10 - base containers exceptions QuickCheck template-haskell 11 - ]; 12 - homepage = "https://github.com/joelwilliamson/bimap"; 13 - description = "Bidirectional mapping between two key types"; 14 - license = lib.licenses.bsd3; 15 - }
+3 -1
pkgs/development/compilers/elm/packages/elm-format-lib.nix pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-lib.nix
··· 24 24 text 25 25 ]; 26 26 testToolDepends = [ tasty-discover ]; 27 - doHaddock = false; 28 27 description = "Common code used by elm-format and elm-refactor"; 29 28 license = lib.licenses.bsd3; 29 + 30 + # Added manually 31 + doHaddock = false; 30 32 }
+3 -1
pkgs/development/compilers/elm/packages/elm-format-markdown.nix pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-markdown.nix
··· 10 10 }; 11 11 postUnpack = "sourceRoot+=/elm-format-markdown; echo source root reset to $sourceRoot"; 12 12 libraryHaskellDepends = [ base containers mtl text ]; 13 - doHaddock = false; 14 13 description = "Markdown parsing for Elm documentation comments"; 15 14 license = lib.licenses.bsd3; 15 + 16 + # Added manually 17 + doHaddock = false; 16 18 }
+3 -1
pkgs/development/compilers/elm/packages/elm-format-test-lib.nix pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format-test-lib.nix
··· 21 21 split tasty tasty-hspec tasty-hunit text 22 22 ]; 23 23 testToolDepends = [ tasty-discover ]; 24 - doHaddock = false; 25 24 description = "Test helpers used by elm-format-tests and elm-refactor-tests"; 26 25 license = lib.licenses.bsd3; 26 + 27 + # Added manually 28 + doHaddock = false; 27 29 }
+3 -2
pkgs/development/compilers/elm/packages/elm-format.nix pkgs/development/compilers/elm/packages/ghc9_2/elm-format/elm-format.nix
··· 24 24 quickcheck-io relude tasty tasty-hspec tasty-hunit tasty-quickcheck 25 25 text 26 26 ]; 27 - doHaddock = false; 28 27 homepage = "https://elm-lang.org"; 29 28 description = "A source code formatter for Elm"; 30 29 license = lib.licenses.bsd3; 31 30 mainProgram = "elm-format"; 31 + 32 + # Added manually (and "rec" above) 33 + doHaddock = false; 32 34 postPatch = '' 33 35 mkdir -p ./generated 34 36 cat <<EOHS > ./generated/Build_elm_format.hs 35 37 module Build_elm_format where 36 - 37 38 gitDescribe :: String 38 39 gitDescribe = "${version}" 39 40 EOHS
+5 -5
pkgs/development/compilers/elm/packages/elm-instrument.nix pkgs/development/compilers/elm/packages/ghc8_10/elm-instrument/default.nix
··· 1 - { mkDerivation, fetchpatch, ansi-terminal, ansi-wl-pprint, base, binary 1 + { mkDerivation, ansi-terminal, ansi-wl-pprint, base, binary 2 2 , bytestring, Cabal, cmark, containers, directory, elm-format 3 - , fetchgit, filepath, free, HUnit, indents, json, mtl 3 + , fetchgit, filepath, free, HUnit, indents, json, lib, mtl 4 4 , optparse-applicative, parsec, process, QuickCheck, quickcheck-io 5 - , split, lib, tasty, tasty-golden, tasty-hunit, tasty-quickcheck 6 - , text 5 + , split, tasty, tasty-golden, tasty-hunit, tasty-quickcheck, text 6 + , fetchpatch 7 7 }: 8 8 mkDerivation { 9 9 pname = "elm-instrument"; 10 - version = "0.0.7"; 10 + version = "unstable-2020-03-16"; 11 11 src = fetchgit { 12 12 url = "https://github.com/zwilias/elm-instrument"; 13 13 sha256 = "167d7l2547zxdj7i60r6vazznd9ichwc0bqckh3vrh46glkz06jv";
+3 -2
pkgs/development/compilers/elm/packages/elm-json.nix pkgs/development/compilers/elm/packages/elm-json/default.nix
··· 17 17 sha256 = "sha256:nlpxlPzWk3wwDgczuMI9T6DFY1YtQpQ1R4BhdPbzZBs="; 18 18 }; 19 19 20 - cargoPatches = [ ./elm-json.patch ]; 20 + cargoPatches = [ ./use-system-ssl.patch ]; 21 21 22 22 nativeBuildInputs = [ pkg-config ]; 23 23 24 24 buildInputs = [ 25 - curl openssl 25 + curl 26 + openssl 26 27 ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]; 27 28 28 29 cargoSha256 = "sha256:8SOpL8nfhYen9vza0LYpB/5fgVmBwG7vGMmFOaJskIc=";
pkgs/development/compilers/elm/packages/elm-json.patch pkgs/development/compilers/elm/packages/elm-json/use-system-ssl.patch
pkgs/development/compilers/elm/packages/elm-pages-fix-init-read-only.patch pkgs/development/compilers/elm/packages/node/elm-pages/fix-init-read-only.patch
pkgs/development/compilers/elm/packages/elm-pages-fix-read-only.patch pkgs/development/compilers/elm/packages/node/elm-pages/fix-read-only.patch
pkgs/development/compilers/elm/packages/elm-test-rs.nix pkgs/development/compilers/elm/packages/elm-test-rs/default.nix
pkgs/development/compilers/elm/packages/elm-test.nix pkgs/development/compilers/elm/packages/elm-test/default.nix
pkgs/development/compilers/elm/packages/elm.nix pkgs/development/compilers/elm/packages/ghc9_6/elm/default.nix
+6 -5
pkgs/development/compilers/elm/packages/elmi-to-json.nix pkgs/development/compilers/elm/packages/ghc8_10/elmi-to-json/default.nix
··· 1 1 { mkDerivation, aeson, base, binary, bytestring, containers 2 - , directory, fetchgit, filepath, ghc-prim, hpack 3 - , optparse-applicative, lib, text, unliftio 4 - , unordered-containers 2 + , directory, fetchgit, filepath, ghc-prim, hpack, lib 3 + , optparse-applicative, text, unliftio, unordered-containers 5 4 }: 6 5 mkDerivation { 7 6 pname = "elmi-to-json"; 8 - version = "1.3.0"; 7 + version = "unstable-2021-07-19"; 9 8 src = fetchgit { 10 9 url = "https://github.com/stoeffel/elmi-to-json"; 10 + hash = "sha256-9fScXRSyTkqzeXwh/Jjza6mnENCThlU6KI366CLFcgY="; 11 11 rev = "bd18efb59d247439b362272b480e67a16a4e424e"; 12 - sha256 = "sha256-9fScXRSyTkqzeXwh/Jjza6mnENCThlU6KI366CLFcgY="; 12 + fetchSubmodules = true; 13 13 }; 14 14 isLibrary = true; 15 15 isExecutable = true; ··· 23 23 prePatch = "hpack"; 24 24 homepage = "https://github.com/stoeffel/elmi-to-json#readme"; 25 25 license = lib.licenses.bsd3; 26 + mainProgram = "elmi-to-json"; 26 27 }
-12
pkgs/development/compilers/elm/packages/generate-node-packages.sh
··· 1 - #!/usr/bin/env bash 2 - 3 - ROOT="$(realpath "$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")"/../../../../..)" 4 - 5 - set -eu -o pipefail 6 - 7 - $(nix-build $ROOT -A nodePackages.node2nix --no-out-link)/bin/node2nix \ 8 - --nodejs-18 \ 9 - -i node-packages.json \ 10 - -o node-packages.nix \ 11 - -c node-composition.nix \ 12 - --no-copy-node-env -e ../../../node-packages/node-env.nix
+54
pkgs/development/compilers/elm/packages/ghc8_10/default.nix
··· 1 + { pkgs, lib }: 2 + 3 + self: pkgs.haskell.packages.ghc810.override { 4 + overrides = self: super: with pkgs.haskell.lib.compose; with lib; 5 + let 6 + elmPkgs = rec { 7 + elmi-to-json = justStaticExecutables (overrideCabal 8 + (drv: { 9 + prePatch = '' 10 + substituteInPlace package.yaml --replace "- -Werror" "" 11 + hpack 12 + ''; 13 + jailbreak = true; 14 + 15 + description = "Tool that reads .elmi files (Elm interface file) generated by the elm compiler"; 16 + homepage = "https://github.com/stoeffel/elmi-to-json"; 17 + license = licenses.bsd3; 18 + maintainers = [ maintainers.turbomack ]; 19 + }) 20 + (self.callPackage ./elmi-to-json { })); 21 + 22 + elm-instrument = justStaticExecutables (overrideCabal 23 + (drv: { 24 + prePatch = '' 25 + sed "s/desc <-.*/let desc = \"${drv.version}\"/g" Setup.hs --in-place 26 + ''; 27 + jailbreak = true; 28 + # Tests are failing because of missing instances for Eq and Show type classes 29 + doCheck = false; 30 + 31 + description = "Instrument Elm code as a preprocessing step for elm-coverage"; 32 + homepage = "https://github.com/zwilias/elm-instrument"; 33 + license = licenses.bsd3; 34 + maintainers = [ maintainers.turbomack ]; 35 + }) 36 + (self.callPackage ./elm-instrument { })); 37 + }; 38 + in 39 + elmPkgs // { 40 + inherit elmPkgs; 41 + 42 + # We need attoparsec < 0.14 to build elm for now 43 + attoparsec = self.attoparsec_0_13_2_5; 44 + 45 + # aeson 2.0.3.0 does not build with attoparsec_0_13_2_5 46 + aeson = doJailbreak self.aeson_1_5_6_0; 47 + 48 + # elm-instrument needs this 49 + indents = self.callPackage ./indents { }; 50 + 51 + # elm-instrument's tests depend on an old version of elm-format, but we set doCheck to false for other reasons above 52 + elm-format = null; 53 + }; 54 + }
+39
pkgs/development/compilers/elm/packages/ghc9_2/default.nix
··· 1 + { pkgs, lib }: 2 + 3 + self: pkgs.haskell.packages.ghc92.override { 4 + overrides = self: super: with pkgs.haskell.lib.compose; with lib; 5 + let 6 + elmPkgs = rec { 7 + /* 8 + The elm-format expression is updated via a script in the https://github.com/avh4/elm-format repo: 9 + `package/nix/build.sh` 10 + */ 11 + elm-format = justStaticExecutables (overrideCabal 12 + (drv: { 13 + jailbreak = true; 14 + 15 + description = "Formats Elm source code according to a standard set of rules based on the official Elm Style Guide"; 16 + homepage = "https://github.com/avh4/elm-format"; 17 + license = licenses.bsd3; 18 + maintainers = with maintainers; [ avh4 turbomack ]; 19 + }) 20 + (self.callPackage ./elm-format/elm-format.nix { })); 21 + }; 22 + in 23 + elmPkgs // { 24 + inherit elmPkgs; 25 + 26 + # Needed for elm-format 27 + avh4-lib = doJailbreak (self.callPackage ./elm-format/avh4-lib.nix { }); 28 + elm-format-lib = doJailbreak (self.callPackage ./elm-format/elm-format-lib.nix { }); 29 + elm-format-test-lib = self.callPackage ./elm-format/elm-format-test-lib.nix { }; 30 + elm-format-markdown = self.callPackage ./elm-format/elm-format-markdown.nix { }; 31 + 32 + # elm-format requires text >= 2.0 33 + text = self.text_2_0_2; 34 + # unorderd-container's tests indirectly depend on text < 2.0 35 + unordered-containers = overrideCabal (drv: { doCheck = false; }) super.unordered-containers; 36 + # relude-1.1.0.0's tests depend on hedgehog < 1.2, which indirectly depends on text < 2.0 37 + relude = overrideCabal (drv: { doCheck = false; }) super.relude; 38 + }; 39 + }
+42
pkgs/development/compilers/elm/packages/ghc9_6/default.nix
··· 1 + { pkgs, lib, makeWrapper, nodejs, fetchElmDeps }: 2 + 3 + self: pkgs.haskell.packages.ghc96.override { 4 + overrides = self: super: with pkgs.haskell.lib.compose; with lib; 5 + let 6 + elmPkgs = rec { 7 + elm = overrideCabal 8 + (drv: { 9 + # sadly with parallelism most of the time breaks compilation 10 + enableParallelBuilding = false; 11 + preConfigure = fetchElmDeps { 12 + elmPackages = (import ../elm-srcs.nix); 13 + elmVersion = drv.version; 14 + registryDat = ../../registry.dat; 15 + }; 16 + buildTools = drv.buildTools or [ ] ++ [ makeWrapper ]; 17 + postInstall = '' 18 + wrapProgram $out/bin/elm \ 19 + --prefix PATH ':' ${lib.makeBinPath [ nodejs ]} 20 + ''; 21 + 22 + description = "A delightful language for reliable webapps"; 23 + homepage = "https://elm-lang.org/"; 24 + license = licenses.bsd3; 25 + maintainers = with maintainers; [ domenkozar turbomack ]; 26 + }) 27 + (self.callPackage ./elm { }); 28 + 29 + inherit fetchElmDeps; 30 + elmVersion = elmPkgs.elm.version; 31 + }; 32 + in 33 + elmPkgs // { 34 + inherit elmPkgs; 35 + 36 + ansi-wl-pprint = overrideCabal 37 + (drv: { 38 + jailbreak = true; 39 + }) 40 + (self.callPackage ./ansi-wl-pprint { }); 41 + }; 42 + }
pkgs/development/compilers/elm/packages/indents.nix pkgs/development/compilers/elm/packages/ghc8_10/indents/default.nix
+2 -1
pkgs/development/compilers/elm/packages/lamdera.nix pkgs/development/compilers/elm/packages/lamdera/default.nix
··· 1 - { stdenv, lib 1 + { stdenv 2 + , lib 2 3 , fetchurl 3 4 }: 4 5
pkgs/development/compilers/elm/packages/lib.nix pkgs/development/compilers/elm/lib/default.nix
+1 -1
pkgs/development/compilers/elm/packages/node-composition.nix pkgs/development/compilers/elm/packages/node/node-composition.nix
··· 5 5 }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs_18"}: 6 6 7 7 let 8 - nodeEnv = import ../../../node-packages/node-env.nix { 8 + nodeEnv = import ../../../../node-packages/node-env.nix { 9 9 inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript; 10 10 inherit pkgs nodejs; 11 11 libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
pkgs/development/compilers/elm/packages/node-packages.json pkgs/development/compilers/elm/packages/node/node-packages.json
pkgs/development/compilers/elm/packages/node-packages.nix pkgs/development/compilers/elm/packages/node/node-packages.nix
+139
pkgs/development/compilers/elm/packages/node/default.nix
··· 1 + { pkgs, lib, nodejs, makeWrapper }: self: 2 + 3 + let 4 + # Untouched npm-downloaded packages 5 + nodePkgs = pkgs.callPackage ./node-composition.nix { 6 + inherit pkgs nodejs; 7 + inherit (pkgs.stdenv.hostPlatform) system; 8 + }; 9 + in 10 + with self; with elmLib; { 11 + inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install; 12 + 13 + elm-verify-examples = 14 + let 15 + patched = patchBinwrap [ elmi-to-json ] nodePkgs.elm-verify-examples // { 16 + meta = with lib; nodePkgs.elm-verify-examples.meta // { 17 + description = "Verify examples in your docs"; 18 + homepage = "https://github.com/stoeffel/elm-verify-examples"; 19 + license = licenses.bsd3; 20 + maintainers = [ maintainers.turbomack ]; 21 + }; 22 + }; 23 + in 24 + patched.override (old: { 25 + preRebuild = (old.preRebuild or "") + '' 26 + # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done 27 + # in case of just this package 28 + # TODO: investigate, same as for elm-coverage below 29 + sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json 30 + ''; 31 + }); 32 + 33 + elm-coverage = 34 + let 35 + patched = patchNpmElm (patchBinwrap [ elmi-to-json ] nodePkgs.elm-coverage); 36 + in 37 + patched.override (old: { 38 + # Symlink Elm instrument binary 39 + preRebuild = (old.preRebuild or "") + '' 40 + # Noop custom installation script 41 + sed 's/\"install\".*/\"install\":\"echo no-op\"/g' --in-place package.json 42 + 43 + # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done 44 + # in case of just this package 45 + # TODO: investigate 46 + sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json 47 + ''; 48 + postInstall = (old.postInstall or "") + '' 49 + mkdir -p unpacked_bin 50 + ln -sf ${elm-instrument}/bin/elm-instrument unpacked_bin/elm-instrument 51 + ''; 52 + meta = with lib; nodePkgs.elm-coverage.meta // { 53 + description = "Work in progress - Code coverage tooling for Elm"; 54 + homepage = "https://github.com/zwilias/elm-coverage"; 55 + license = licenses.bsd3; 56 + maintainers = [ maintainers.turbomack ]; 57 + }; 58 + }); 59 + 60 + create-elm-app = patchNpmElm 61 + nodePkgs.create-elm-app // { 62 + meta = with lib; nodePkgs.create-elm-app.meta // { 63 + description = "Create Elm apps with no build configuration"; 64 + homepage = "https://github.com/halfzebra/create-elm-app"; 65 + license = licenses.mit; 66 + maintainers = [ maintainers.turbomack ]; 67 + }; 68 + }; 69 + 70 + elm-graphql = 71 + nodePkgs."@dillonkearns/elm-graphql" // { 72 + meta = with lib; nodePkgs."@dillonkearns/elm-graphql".meta // { 73 + description = " Autogenerate type-safe GraphQL queries in Elm."; 74 + license = licenses.bsd3; 75 + maintainers = [ maintainers.pedrohlc ]; 76 + }; 77 + }; 78 + 79 + elm-review = 80 + nodePkgs.elm-review // { 81 + meta = with lib; nodePkgs.elm-review.meta // { 82 + description = "Analyzes Elm projects, to help find mistakes before your users find them"; 83 + homepage = "https://package.elm-lang.org/packages/jfmengels/elm-review/${nodePkgs.elm-review.version}"; 84 + license = licenses.bsd3; 85 + maintainers = [ maintainers.turbomack ]; 86 + }; 87 + }; 88 + 89 + elm-language-server = nodePkgs."@elm-tooling/elm-language-server" // { 90 + meta = with lib; nodePkgs."@elm-tooling/elm-language-server".meta // { 91 + description = "Language server implementation for Elm"; 92 + homepage = "https://github.com/elm-tooling/elm-language-server"; 93 + license = licenses.mit; 94 + maintainers = [ maintainers.turbomack ]; 95 + }; 96 + }; 97 + 98 + elm-spa = nodePkgs."elm-spa".overrideAttrs ( 99 + old: { 100 + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ]; 101 + 102 + meta = with lib; nodePkgs."elm-spa".meta // { 103 + description = "A tool for building single page apps in Elm"; 104 + homepage = "https://www.elm-spa.dev/"; 105 + license = licenses.bsd3; 106 + maintainers = [ maintainers.ilyakooo0 ]; 107 + }; 108 + } 109 + ); 110 + 111 + elm-optimize-level-2 = nodePkgs."elm-optimize-level-2" // { 112 + meta = with lib; nodePkgs."elm-optimize-level-2".meta // { 113 + description = "A second level of optimization for the Javascript that the Elm Compiler produces"; 114 + homepage = "https://github.com/mdgriffith/elm-optimize-level-2"; 115 + license = licenses.bsd3; 116 + maintainers = [ maintainers.turbomack ]; 117 + }; 118 + }; 119 + 120 + elm-pages = import ./elm-pages { inherit nodePkgs pkgs lib makeWrapper; }; 121 + 122 + elm-land = 123 + let 124 + patched = patchNpmElm nodePkgs.elm-land; 125 + in 126 + patched.override (old: { 127 + meta = with lib; nodePkgs."elm-land".meta // { 128 + description = "A production-ready framework for building Elm applications."; 129 + homepage = "https://elm.land/"; 130 + license = licenses.bsd3; 131 + maintainers = [ maintainers.zupo ]; 132 + }; 133 + } 134 + ); 135 + 136 + elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: { 137 + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ old.nodejs.pkgs.node-gyp-build ]; 138 + }); 139 + }
+28
pkgs/development/compilers/elm/packages/node/elm-pages/default.nix
··· 1 + { nodePkgs, pkgs, lib, makeWrapper }: 2 + 3 + nodePkgs."elm-pages".overrideAttrs ( 4 + old: { 5 + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ]; 6 + 7 + # can't use `patches = [ <patch_file> ]` with a nodePkgs derivation; 8 + # need to patch in one of the build phases instead. 9 + # see upstream issue https://github.com/dillonkearns/elm-pages/issues/305 for dealing with the read-only problem 10 + preFixup = '' 11 + patch $out/lib/node_modules/elm-pages/generator/src/codegen.js ${./fix-read-only.patch} 12 + patch $out/lib/node_modules/elm-pages/generator/src/init.js ${./fix-init-read-only.patch} 13 + ''; 14 + 15 + postFixup = '' 16 + wrapProgram $out/bin/elm-pages --prefix PATH : ${ 17 + with pkgs.elmPackages; lib.makeBinPath [ elm elm-review elm-optimize-level-2 ] 18 + } 19 + ''; 20 + 21 + meta = with lib; nodePkgs."elm-pages".meta // { 22 + description = "A statically typed site generator for Elm."; 23 + homepage = "https://github.com/dillonkearns/elm-pages"; 24 + license = licenses.bsd3; 25 + maintainers = [ maintainers.turbomack maintainers.jali-clarke ]; 26 + }; 27 + } 28 + )
+12
pkgs/development/compilers/elm/packages/node/generate-node-packages.sh
··· 1 + #!/usr/bin/env bash 2 + 3 + ROOT="$(realpath "$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")"/../../../../../..)" 4 + 5 + set -eu -o pipefail 6 + 7 + $(nix-build $ROOT -A nodePackages.node2nix --no-out-link)/bin/node2nix \ 8 + --nodejs-18 \ 9 + -i node-packages.json \ 10 + -o node-packages.nix \ 11 + -c node-composition.nix \ 12 + --no-copy-node-env -e ../../../../node-packages/node-env.nix
+2 -2
pkgs/development/compilers/elm/update.sh
··· 1 1 #!/usr/bin/env nix-shell 2 2 #!nix-shell -p cabal2nix elm2nix -i bash ../../.. 3 3 4 - cabal2nix https://github.com/ekmett/ansi-wl-pprint --revision d16e2f6896d76b87b72af7220c2e93ba15c53280 > packages/ansi-wl-pprint.nix 4 + cabal2nix https://github.com/ekmett/ansi-wl-pprint --revision d16e2f6896d76b87b72af7220c2e93ba15c53280 > packages/ghc9_6/ansi-wl-pprint/default.nix 5 5 6 6 # We're building binaries from commit that npm installer is using since 7 7 # November 1st release called 0.19.1-6 in npm registry. 8 8 # These binaries are built with newer ghc version and also support Aarch64 for Linux and Darwin. 9 9 # Upstream git tag for 0.19.1 is still pointing to original commit from 2019. 10 - cabal2nix https://github.com/elm/compiler --revision 2f6dd29258e880dbb7effd57a829a0470d8da48b > packages/elm.nix 10 + cabal2nix https://github.com/elm/compiler --revision 2f6dd29258e880dbb7effd57a829a0470d8da48b > packages/ghc9_6/elm/default.nix 11 11 12 12 echo "need to manually copy registry.dat from an existing elm project" 13 13 #elm2nix snapshot > registry.dat