summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Munksgaard <philip@munksgaard.me>2023-01-13 12:32:09 +0100
committerPhilip Munksgaard <philip@munksgaard.me>2023-01-13 12:32:09 +0100
commit04bbb6fb78fbb5d69bb51fb4e9029ee11c74972f (patch)
tree596944db940ecbfb362e00846338ef0fb46e3380
parentd912468885f9d61d5ebf4fb3546f88e9b5bd0567 (diff)
smlfmt: init at 1.0.0
-rw-r--r--pkgs/development/tools/smlfmt/default.nix37
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 39 insertions, 0 deletions
diff --git a/pkgs/development/tools/smlfmt/default.nix b/pkgs/development/tools/smlfmt/default.nix
new file mode 100644
index 000000000000..1475de94193d
--- /dev/null
+++ b/pkgs/development/tools/smlfmt/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, mlton }:
+
+stdenv.mkDerivation rec {
+ pname = "smlfmt";
+ version = "1.0.0";
+
+ src = fetchFromGitHub {
+ owner = "shwestrick";
+ repo = pname;
+ rev = "v${version}";
+ hash = "sha256-7CTfMiEvuOena5SOE0qKpFPq6ARxmkE6d+loznZNbC0=";
+ };
+
+ nativeBuildInputs = [ mlton ];
+
+ installPhase = ''
+ runHook preInstall
+ install -Dm755 -t $out/bin smlfmt
+ runHook postInstall
+ '';
+
+ meta = {
+ description = "A custom parser/auto-formatter for Standard ML";
+ longDescription = ''
+ A custom parser and code formatter for Standard ML, with helpful error messages.
+
+ Supports SML source files (.sml, .sig, .fun, etc.) as well as MLBasis
+ compilation files (.mlb) using MLton conventions, including MLBasis path
+ maps.
+ '';
+
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ munksgaard ];
+ platforms = mlton.meta.platforms;
+ homepage = "https://github.com/shwestrick/smlfmt";
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 967dcde1c9a5..6a8d3c1a90c8 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -15591,6 +15591,8 @@ with pkgs;
shmig = callPackage ../development/tools/database/shmig { };
+ smlfmt = callPackage ../development/tools/smlfmt { };
+
# smlnjBootstrap should be redundant, now that smlnj works on Darwin natively
smlnjBootstrap = callPackage ../development/compilers/smlnj/bootstrap.nix { };
smlnj = callPackage ../development/compilers/smlnj {