Skip to content

Commit 9837de0

Browse files
committed
elm-land: Rewrite and migrate from elmPackages to pkgs/by-name
Signed-off-by: Ilan Joselevich <personal@ilanjoselevich.com>
1 parent e34669c commit 9837de0

File tree

8 files changed

+2219
-2517
lines changed

8 files changed

+2219
-2517
lines changed

.editorconfig

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ indent_style = unset
9090
insert_final_newline = unset
9191
trim_trailing_whitespace = unset
9292

93-
[pkgs/development/compilers/elm/registry.dat]
93+
[registry.dat]
9494
end_of_line = unset
9595
insert_final_newline = unset
9696

pkgs/by-name/el/elm-land/elm-srcs.nix

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
3+
"elm/browser" = {
4+
sha256 = "0nagb9ajacxbbg985r4k9h0jadqpp0gp84nm94kcgbr5sf8i9x13";
5+
version = "1.0.2";
6+
};
7+
8+
"elm/core" = {
9+
sha256 = "19w0iisdd66ywjayyga4kv2p1v9rxzqjaxhckp8ni6n8i0fb2dvf";
10+
version = "1.0.5";
11+
};
12+
13+
"elm/html" = {
14+
sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
15+
version = "1.0.0";
16+
};
17+
18+
"elm/json" = {
19+
sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
20+
version = "1.1.3";
21+
};
22+
23+
"stil4m/elm-syntax" = {
24+
sha256 = "1dlk7gslh9la6y7y3d56a37lsymmz32rlspbywcfmq40mq9hiify";
25+
version = "7.2.9";
26+
};
27+
28+
"elm-community/list-extra" = {
29+
sha256 = "043iwpdwyrfb1jndxh7kf7xlkgq1v6pjczv1r1b19p2wky6nmy8z";
30+
version = "8.5.2";
31+
};
32+
33+
"elm/parser" = {
34+
sha256 = "0a3cxrvbm7mwg9ykynhp7vjid58zsw03r63qxipxp3z09qks7512";
35+
version = "1.1.0";
36+
};
37+
38+
"elm/time" = {
39+
sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1";
40+
version = "1.0.0";
41+
};
42+
43+
"elm/url" = {
44+
sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
45+
version = "1.0.0";
46+
};
47+
48+
"elm/virtual-dom" = {
49+
sha256 = "1yvb8px2z62xd578ag2q0r5hd1vkz9y7dfkx05355iiy1d7jwq4v";
50+
version = "1.0.3";
51+
};
52+
53+
"miniBill/elm-unicode" = {
54+
sha256 = "18w246bvra93amvqq3r2kqdv5ad8iavnhvcsbfdxw6747pi6pg2f";
55+
version = "1.0.2";
56+
};
57+
58+
"rtfeldman/elm-hex" = {
59+
sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
60+
version = "1.0.0";
61+
};
62+
63+
"stil4m/structured-writer" = {
64+
sha256 = "02k32yaw275bivab90wy8qkbys3gg4fw53f798dzf1j9wharhg12";
65+
version = "1.0.3";
66+
};
67+
}

pkgs/by-name/el/elm-land/package.nix

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
lib,
3+
buildNpmPackage,
4+
fetchFromGitHub,
5+
elmPackages,
6+
versionCheckHook,
7+
writeShellScript,
8+
nix-update,
9+
elm2nix,
10+
nixfmt-rfc-style,
11+
}:
12+
13+
buildNpmPackage rec {
14+
pname = "elm-land";
15+
version = "0.20.1";
16+
17+
src = fetchFromGitHub {
18+
owner = "elm-land";
19+
repo = "elm-land";
20+
rev = "v${version}";
21+
hash = "sha256-PFyiVTH2Cek377YZwaCmvDToQCaxWQvJrQkRhyNI2Wg=";
22+
};
23+
24+
sourceRoot = "${src.name}/projects/cli";
25+
26+
npmDepsHash = "sha256-Bg16s0tqEaUT+BbFMKuEtx32rmbZLIILp8Ra/dQGmUg=";
27+
28+
npmRebuildFlags = [ "--ignore-scripts" ];
29+
30+
postConfigure =
31+
(elmPackages.fetchElmDeps {
32+
elmPackages = import ./elm-srcs.nix;
33+
elmVersion = elmPackages.elm.version;
34+
registryDat = ./registry.dat;
35+
})
36+
+ ''
37+
ln -sf ${lib.getExe elmPackages.elm} node_modules/.bin/elm
38+
'';
39+
40+
nativeInstallCheckInputs = [
41+
versionCheckHook
42+
];
43+
versionCheckProgramArg = [ "--version" ];
44+
doInstallCheck = true;
45+
46+
passthru.updateScript = writeShellScript "update-elm-land" ''
47+
set -eu -o pipefail
48+
49+
# Update version, src and npm deps
50+
${lib.getExe nix-update} "$UPDATE_NIX_ATTR_PATH"
51+
52+
# Update elm deps
53+
cp "$(nix-build -A "$UPDATE_NIX_ATTR_PATH".src)/projects/cli/src/codegen/elm.json" elm.json
54+
trap 'rm -rf elm.json registry.dat &> /dev/null' EXIT
55+
${lib.getExe elm2nix} convert > pkgs/by-name/el/elm-land/elm-srcs.nix
56+
${lib.getExe nixfmt-rfc-style} pkgs/by-name/el/elm-land/elm-srcs.nix
57+
${lib.getExe elm2nix} snapshot
58+
cp registry.dat pkgs/by-name/el/elm-land/registry.dat
59+
'';
60+
61+
meta = {
62+
description = "A production-ready framework for building Elm applications";
63+
homepage = "https://github.com/elm-land/elm-land";
64+
license = lib.licenses.bsd3;
65+
maintainers = with lib.maintainers; [
66+
domenkozar
67+
zupo
68+
];
69+
mainProgram = "elm-land";
70+
};
71+
}

pkgs/by-name/el/elm-land/registry.dat

349 Bytes
Binary file not shown.

pkgs/development/compilers/elm/packages/node/default.nix

+14-27
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ let
77
inherit (pkgs.stdenv.hostPlatform) system;
88
};
99
ESBUILD_BINARY_PATH = lib.getExe (
10-
pkgs.esbuild.override {
11-
buildGoModule = args: pkgs.buildGoModule (args // rec {
12-
version = "0.20.2";
13-
src = pkgs.fetchFromGitHub {
14-
owner = "evanw";
15-
repo = "esbuild";
16-
rev = "v${version}";
17-
hash = "sha256-h/Vqwax4B4nehRP9TaYbdixAZdb1hx373dNxNHvDrtY=";
18-
};
19-
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
20-
});
21-
}
22-
);
10+
pkgs.esbuild.override {
11+
buildGoModule = args: pkgs.buildGoModule (args // rec {
12+
version = "0.20.2";
13+
src = pkgs.fetchFromGitHub {
14+
owner = "evanw";
15+
repo = "esbuild";
16+
rev = "v${version}";
17+
hash = "sha256-h/Vqwax4B4nehRP9TaYbdixAZdb1hx373dNxNHvDrtY=";
18+
};
19+
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
20+
});
21+
}
22+
);
2323
in
2424
with self; with elmLib; {
2525
inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install;
@@ -124,20 +124,7 @@ with self; with elmLib; {
124124

125125
elm-pages = import ./elm-pages { inherit nodePkgs pkgs lib makeWrapper; };
126126

127-
elm-land =
128-
let
129-
patched = patchNpmElm nodePkgs.elm-land;
130-
in
131-
patched.override (old: {
132-
inherit ESBUILD_BINARY_PATH;
133-
meta = with lib; nodePkgs."elm-land".meta // {
134-
description = "Production-ready framework for building Elm applications";
135-
homepage = "https://elm.land/";
136-
license = licenses.bsd3;
137-
maintainers = [ maintainers.zupo ];
138-
};
139-
}
140-
);
127+
elm-land = pkgs.elm-land; # Alias
141128

142129
elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: {
143130
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ old.nodejs.pkgs.node-gyp-build ];

pkgs/development/compilers/elm/packages/node/node-composition.nix

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ let
1919
writeShellScript
2020
;
2121
inherit pkgs nodejs;
22-
libtool = if pkgs.stdenv.hostPlatform.isDarwin then pkgs.cctools or pkgs.darwin.cctools else null;
22+
libtool = if pkgs.stdenv.isDarwin then pkgs.cctools or pkgs.darwin.cctools else null;
2323
};
2424
in
2525
import ./node-packages.nix {

pkgs/development/compilers/elm/packages/node/node-packages.json

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"elm-coverage",
44
"elm-doc-preview",
55
"@elm-tooling/elm-language-server",
6-
"elm-land",
76
"elm-live",
87
"elm-spa",
98
"elm-test",

0 commit comments

Comments
 (0)