Unverified Commit 11a273b9 authored by jopejoe1's avatar jopejoe1 Committed by GitHub
Browse files

elmPackages: migrate easily doable packages from internal nodePackages (#461751)

parents e8da23b8 07f776a2
Loading
Loading
Loading
Loading
+28 −19
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
  lib,
  makeWrapper,
  nodejs ? pkgs.nodejs_20,
  config,
}:

let
@@ -22,19 +23,7 @@ let
      ;
  };

  # Patched, originally npm-downloaded, packages
  patchedNodePkgs = import ./packages/node {
    inherit
      pkgs
      lib
      nodejs
      makeWrapper
      ;
  };

  assembleScope =
    self: basics:
    (hs98Pkgs self).elmPkgs // (hs96Pkgs self).elmPkgs // (patchedNodePkgs self) // basics;
  assembleScope = self: basics: (hs98Pkgs self).elmPkgs // (hs96Pkgs self).elmPkgs // basics;
in
lib.makeScope pkgs.newScope (
  self:
@@ -43,27 +32,47 @@ lib.makeScope pkgs.newScope (
    {
      inherit fetchElmDeps nodejs;

      /*
        Node/NPM based dependencies can be upgraded using script `packages/generate-node-packages.sh`.

        * Packages which depend on npm installation of elm can be patched using
          `patchNpmElm` function defined in `packages/lib.nix`.
      */
      elmLib = import ./lib {
        inherit lib;
        inherit (pkgs) writeScriptBin stdenv;
        inherit (self) elm;
      };

      elm-analyse = callPackage ./packages/elm-analyse { };

      elm-doc-preview = callPackage ./packages/elm-doc-preview { };

      elm-git-install = callPackage ./packages/elm-git-install { };

      elm-graphql = callPackage ./packages/elm-graphql { };

      elm-json = callPackage ./packages/elm-json { };

      elm-language-server = callPackage ./packages/elm-language-server { };

      elm-live = callPackage ./packages/elm-live { };

      elm-optimize-level-2 = callPackage ./packages/elm-optimize-level-2 { };

      elm-review = callPackage ./packages/elm-review { };

      elm-spa = callPackage ./packages/elm-spa { };

      elm-test-rs = callPackage ./packages/elm-test-rs { };

      elm-test = callPackage ./packages/elm-test { };

      elm-upgrade = callPackage ./packages/elm-upgrade { };

      elm-verify-examples = callPackage ./packages/elm-verify-examples { };

      elm-xref = callPackage ./packages/elm-xref { };

      lamdera = callPackage ./packages/lamdera { };
    }
    // lib.optionalAttrs config.allowAliases {
      create-elm-app = throw "'elmPackages.create-elm-app' has not had a release since December 2020, so it was removed."; # Added 2025-11-15
      elm-pages = throw "'elmPackages.elm-pages' has been removed, as it was broken in nixpkgs and was not maintained."; # Added 2025-11-15
    }
  )
)
+1 −3
Original line number Diff line number Diff line
@@ -9,6 +9,4 @@ Please refer to [nix documentation](https://nixos.org/nixpkgs/manual/#how-to-cre
and [cabal2nix readme](https://github.com/NixOS/cabal2nix#readme) for more information. Elm-format [update scripts](https://github.com/avh4/elm-format/tree/master/package/nix)
is part of its repository.

Node dependencies are defined in [node-packages.json](node/node-packages.json).
[Node2nix](https://github.com/svanderburg/node2nix) is used for generating nix expression
from this file. Use [generate-node-packages.sh](node/generate-node-packages.sh) for updates of nix expressions.
Node dependencies are defined with [`buildNpmPackage`](https://nixos.org/manual/nixpkgs/stable/#javascript-buildNpmPackage).
+58 −0
Original line number Diff line number Diff line
{
  lib,
  buildNpmPackage,
  fetchFromGitHub,
  elmPackages,
}:

buildNpmPackage (finalAttrs: {
  pname = "elm-analyse";
  version = "0.16.5";

  src = fetchFromGitHub {
    owner = "stil4m";
    repo = "elm-analyse";
    tag = finalAttrs.version;
    hash = "sha256-GFHhHf+JOXGcm0CZEDGMuuTR3CXBdSkYDGRHZ63pE64=";
  };

  npmDepsHash = "sha256-B/PzGOaxdKSt82ax0izeadsMsz+I0v4wkye3zgNxMF8=";

  npmFlags = [ "--ignore-scripts" ];

  nativeBuildInputs = [
    elmPackages.elm
  ];

  postConfigure =
    (elmPackages.fetchElmDeps {
      elmPackages = import ./elm-srcs.nix;
      elmVersion = elmPackages.elm.version;
      registryDat = ./registry.dat;
    })
    + ''
      ln -sf ${lib.getExe elmPackages.elm} node_modules/.bin/elm
    '';

  buildPhase = ''
    runHook preBuild

    make

    runHook postBuild
  '';

  postInstall = ''
    rm -rf $out/lib/node_modules/elm-analyse/node_modules/.bin/
  '';

  passthru.updateScript = ./update.sh;

  meta = {
    description = "Analyse your Elm code, identify deficiencies and apply best practices";
    homepage = "https://stil4m.github.io/elm-analyse/";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ pyrox0 ];
    mainProgram = "elm-analyse";
  };
})
+152 −0
Original line number Diff line number Diff line
{

  "alex-tan/elm-dialog" = {
    sha256 = "13dfpzrdi69jaj0hj2cnwg3g6wafhszg0grjw4z3imd0b9avz1hk";
    version = "1.0.0";
  };

  "elm-community/dict-extra" = {
    sha256 = "05ll04wf03m8ic109dz2dbq6pah23m70c4wwyr35026dhmws35n0";
    version = "2.4.0";
  };

  "elm-community/graph" = {
    sha256 = "1rwsq2126q0rb4vmy95ajxfm3m063d6lw0p90d510nzcrbm9bxbc";
    version = "6.0.0";
  };

  "elm-community/intdict" = {
    sha256 = "09i1fk63gp6sr6kc6ccs8g0kxvqhw5czghi9cl8flizanrgcmva1";
    version = "3.0.0";
  };

  "elm-community/list-extra" = {
    sha256 = "06ddwrc0ai0pn5mw99a1d9xnihkliyvq0qvzn32z1l88msflrib7";
    version = "8.2.2";
  };

  "elm-community/maybe-extra" = {
    sha256 = "10jykkdmqpvhbcm50867a894272j4z6jc9r5jy35cz8jfi9j8xv9";
    version = "5.0.0";
  };

  "elm-explorations/markdown" = {
    sha256 = "0k3110ixa4wwf3vkkdplagwah9ypr965qxr1y147rnsc1xsxmr6y";
    version = "1.0.0";
  };

  "elm/browser" = {
    sha256 = "1zlmx672glg7fdgkvh5jm47y85pv7pdfr5mkhg6x7ar6k000vyka";
    version = "1.0.1";
  };

  "elm/core" = {
    sha256 = "1l0qdbczw91kzz8sx5d5zwz9x662bspy7p21dsr3f2rigxiix2as";
    version = "1.0.2";
  };

  "elm/html" = {
    sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
    version = "1.0.0";
  };

  "elm/http" = {
    sha256 = "1igmm89ialzrjib1j8xagkxalq1x2gj4l0hfxcd66mpwmvg7psl8";
    version = "1.0.0";
  };

  "elm/json" = {
    sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
    version = "1.1.3";
  };

  "elm/parser" = {
    sha256 = "0a3cxrvbm7mwg9ykynhp7vjid58zsw03r63qxipxp3z09qks7512";
    version = "1.1.0";
  };

  "elm/project-metadata-utils" = {
    sha256 = "1d4rd4grrnbdvj9gf00h7dr6hbkjzawgkzpizfrkp1z1pyr3mvq9";
    version = "1.0.0";
  };

  "elm/regex" = {
    sha256 = "0lijsp50w7n1n57mjg6clpn9phly8vvs07h0qh2rqcs0f1jqvsa2";
    version = "1.0.0";
  };

  "elm/time" = {
    sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1";
    version = "1.0.0";
  };

  "elm/url" = {
    sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
    version = "1.0.0";
  };

  "krisajenkins/remotedata" = {
    sha256 = "0sjrgpsy4aci0h6qndqx70cnfd065hlkh1rxk0lc93z22sdj4knl";
    version = "5.0.0";
  };

  "rundis/elm-bootstrap" = {
    sha256 = "155rqa2hh9h5s0ryqv4pn40vwl2klk3zg8b2xf48z5ky8fdrr31c";
    version = "5.2.0";
  };

  "stil4m/elm-syntax" = {
    sha256 = "182fz12a115j3wz3fkc209mq8rbbqmvl237pmrvygmvbxwv4ix37";
    version = "7.1.1";
  };

  "avh4/elm-color" = {
    sha256 = "0n16wnvp87x9az3m5qjrl6smsg7051m719xn5d244painx8xmpzq";
    version = "1.0.0";
  };

  "avh4/elm-fifo" = {
    sha256 = "1ka0iz2psr75h4qz7hh5z1prclah1nais9aaycaxapfd7inqmrrc";
    version = "1.0.4";
  };

  "elm-community/json-extra" = {
    sha256 = "0hwlhdlvd5xi866m9bpnabcg2qrgcvfj34p1x1mhx85ymr3gv9mv";
    version = "4.2.0";
  };

  "elm/virtual-dom" = {
    sha256 = "0q1v5gi4g336bzz1lgwpn5b1639lrn63d8y6k6pimcyismp2i1yg";
    version = "1.0.2";
  };

  "etaque/elm-response" = {
    sha256 = "0vydmczvlxkvbjsjpfwad5m77y3155dp8wx648xf1ya3vsy4m5kf";
    version = "3.1.0";
  };

  "rtfeldman/elm-hex" = {
    sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
    version = "1.0.0";
  };

  "rtfeldman/elm-iso8601-date-strings" = {
    sha256 = "1fa5sslklldy0dq8bm0zdkb9ni50yxhb09xb6lgk00x55bmza9ik";
    version = "1.1.3";
  };

  "stil4m/structured-writer" = {
    sha256 = "0xr95m8k42vwyff91vfd4q59fhnmhywyj20nzxqhl7blk82hnwj0";
    version = "1.0.2";
  };

  "elm-explorations/test" = {
    sha256 = "1fsd7bajm7qa93r5pn3mdafqh3blpzya601jbs9l238p0hmvh576";
    version = "1.2.2";
  };

  "elm/random" = {
    sha256 = "138n2455wdjwa657w6sjq18wx2r0k60ibpc4frhbqr50sncxrfdl";
    version = "1.0.0";
  };
}
+887 B

File added.

No diff preview for this file type.

Loading