elm-land: Rewrite and migrate from elmPackages to pkgs/by-name

Signed-off-by: Ilan Joselevich <personal@ilanjoselevich.com>
This commit is contained in:
Ilan Joselevich 2025-02-16 00:43:26 +07:00
parent e34669ce4c
commit 9837de0da7
No known key found for this signature in database
8 changed files with 2164 additions and 2462 deletions

View file

@ -90,7 +90,7 @@ indent_style = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
[pkgs/development/compilers/elm/registry.dat]
[registry.dat]
end_of_line = unset
insert_final_newline = unset

View file

@ -0,0 +1,67 @@
{
"elm/browser" = {
sha256 = "0nagb9ajacxbbg985r4k9h0jadqpp0gp84nm94kcgbr5sf8i9x13";
version = "1.0.2";
};
"elm/core" = {
sha256 = "19w0iisdd66ywjayyga4kv2p1v9rxzqjaxhckp8ni6n8i0fb2dvf";
version = "1.0.5";
};
"elm/html" = {
sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
version = "1.0.0";
};
"elm/json" = {
sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
version = "1.1.3";
};
"stil4m/elm-syntax" = {
sha256 = "1dlk7gslh9la6y7y3d56a37lsymmz32rlspbywcfmq40mq9hiify";
version = "7.2.9";
};
"elm-community/list-extra" = {
sha256 = "043iwpdwyrfb1jndxh7kf7xlkgq1v6pjczv1r1b19p2wky6nmy8z";
version = "8.5.2";
};
"elm/parser" = {
sha256 = "0a3cxrvbm7mwg9ykynhp7vjid58zsw03r63qxipxp3z09qks7512";
version = "1.1.0";
};
"elm/time" = {
sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1";
version = "1.0.0";
};
"elm/url" = {
sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
version = "1.0.0";
};
"elm/virtual-dom" = {
sha256 = "1yvb8px2z62xd578ag2q0r5hd1vkz9y7dfkx05355iiy1d7jwq4v";
version = "1.0.3";
};
"miniBill/elm-unicode" = {
sha256 = "18w246bvra93amvqq3r2kqdv5ad8iavnhvcsbfdxw6747pi6pg2f";
version = "1.0.2";
};
"rtfeldman/elm-hex" = {
sha256 = "1y0aa16asvwdqmgbskh5iba6psp43lkcjjw9mgzj3gsrg33lp00d";
version = "1.0.0";
};
"stil4m/structured-writer" = {
sha256 = "02k32yaw275bivab90wy8qkbys3gg4fw53f798dzf1j9wharhg12";
version = "1.0.3";
};
}

View file

@ -0,0 +1,71 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
elmPackages,
versionCheckHook,
writeShellScript,
nix-update,
elm2nix,
nixfmt-rfc-style,
}:
buildNpmPackage rec {
pname = "elm-land";
version = "0.20.1";
src = fetchFromGitHub {
owner = "elm-land";
repo = "elm-land";
rev = "v${version}";
hash = "sha256-PFyiVTH2Cek377YZwaCmvDToQCaxWQvJrQkRhyNI2Wg=";
};
sourceRoot = "${src.name}/projects/cli";
npmDepsHash = "sha256-Bg16s0tqEaUT+BbFMKuEtx32rmbZLIILp8Ra/dQGmUg=";
npmRebuildFlags = [ "--ignore-scripts" ];
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
'';
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = [ "--version" ];
doInstallCheck = true;
passthru.updateScript = writeShellScript "update-elm-land" ''
set -eu -o pipefail
# Update version, src and npm deps
${lib.getExe nix-update} "$UPDATE_NIX_ATTR_PATH"
# Update elm deps
cp "$(nix-build -A "$UPDATE_NIX_ATTR_PATH".src)/projects/cli/src/codegen/elm.json" elm.json
trap 'rm -rf elm.json registry.dat &> /dev/null' EXIT
${lib.getExe elm2nix} convert > pkgs/by-name/el/elm-land/elm-srcs.nix
${lib.getExe nixfmt-rfc-style} pkgs/by-name/el/elm-land/elm-srcs.nix
${lib.getExe elm2nix} snapshot
cp registry.dat pkgs/by-name/el/elm-land/registry.dat
'';
meta = {
description = "A production-ready framework for building Elm applications";
homepage = "https://github.com/elm-land/elm-land";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [
domenkozar
zupo
];
mainProgram = "elm-land";
};
}

Binary file not shown.

View file

@ -7,19 +7,19 @@ let
inherit (pkgs.stdenv.hostPlatform) system;
};
ESBUILD_BINARY_PATH = lib.getExe (
pkgs.esbuild.override {
buildGoModule = args: pkgs.buildGoModule (args // rec {
version = "0.20.2";
src = pkgs.fetchFromGitHub {
owner = "evanw";
repo = "esbuild";
rev = "v${version}";
hash = "sha256-h/Vqwax4B4nehRP9TaYbdixAZdb1hx373dNxNHvDrtY=";
};
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
});
}
);
pkgs.esbuild.override {
buildGoModule = args: pkgs.buildGoModule (args // rec {
version = "0.20.2";
src = pkgs.fetchFromGitHub {
owner = "evanw";
repo = "esbuild";
rev = "v${version}";
hash = "sha256-h/Vqwax4B4nehRP9TaYbdixAZdb1hx373dNxNHvDrtY=";
};
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
});
}
);
in
with self; with elmLib; {
inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install;
@ -124,20 +124,7 @@ with self; with elmLib; {
elm-pages = import ./elm-pages { inherit nodePkgs pkgs lib makeWrapper; };
elm-land =
let
patched = patchNpmElm nodePkgs.elm-land;
in
patched.override (old: {
inherit ESBUILD_BINARY_PATH;
meta = with lib; nodePkgs."elm-land".meta // {
description = "Production-ready framework for building Elm applications";
homepage = "https://elm.land/";
license = licenses.bsd3;
maintainers = [ maintainers.zupo ];
};
}
);
elm-land = pkgs.elm-land; # Alias
elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ old.nodejs.pkgs.node-gyp-build ];

View file

@ -19,7 +19,7 @@ let
writeShellScript
;
inherit pkgs nodejs;
libtool = if pkgs.stdenv.hostPlatform.isDarwin then pkgs.cctools or pkgs.darwin.cctools else null;
libtool = if pkgs.stdenv.isDarwin then pkgs.cctools or pkgs.darwin.cctools else null;
};
in
import ./node-packages.nix {

View file

@ -3,7 +3,6 @@
"elm-coverage",
"elm-doc-preview",
"@elm-tooling/elm-language-server",
"elm-land",
"elm-live",
"elm-spa",
"elm-test",

File diff suppressed because it is too large Load diff