Add support for building via nix.

This commit is contained in:
Tom Alexander
2026-07-08 21:13:56 -04:00
parent 6db3dc65fa
commit 66147616db
5 changed files with 2501 additions and 1738 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
/node_modules/
/dist/
/result

70
flake.lock generated Normal file
View File

@@ -0,0 +1,70 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1780749050,
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a799d3e3886da994fa307f817a6bc705ae538eeb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"organic": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1783734912,
"narHash": "sha256-tXPapMwegdfP0jcr3BPQXxv1Aauo6yZwS4q2sIKOF9o=",
"ref": "refs/heads/main",
"rev": "842a77fb2bc684a545fb102e16790fa902aec11c",
"revCount": 2008,
"type": "git",
"url": "https://code.fizz.buzz/talexander/organic.git"
},
"original": {
"type": "git",
"url": "https://code.fizz.buzz/talexander/organic.git"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs",
"organic": "organic"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"organic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1781407245,
"narHash": "sha256-VzJq4MmD0uyNDAceudSe1hHqcQMe9Tau0U4S+5iRGh0=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "d5f483210eb016d66102eef22baa128b3b3233fc",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

85
flake.nix Normal file
View File

@@ -0,0 +1,85 @@
{
description = "Web demo of Organic Org Parser";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
organic = {
url = "git+https://code.fizz.buzz/talexander/organic.git";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
self,
nixpkgs,
organic,
}:
let
forAllSystems =
func:
builtins.listToAttrs (
map (system: {
name = system;
value = func system;
}) nixpkgs.lib.systems.flakeExposed
);
overlays = [ organic.overlays.default ];
in
{
devShells = forAllSystems (
system:
let
pkgs = import nixpkgs {
inherit system overlays;
};
in
{
default = pkgs.mkShell {
nativeBuildInputs = [
# rustToolchain
];
buildInputs = with pkgs; [
nodejs
];
};
}
);
packages = forAllSystems (
system:
let
pkgs = import nixpkgs {
inherit system overlays;
};
appliedOverlay = self.overlays.default pkgs pkgs;
in
rec {
inherit (appliedOverlay.organic_ast_explorer)
release
;
default = release;
}
);
overlays.default = final: prev: {
organic_ast_explorer = final.lib.makeScope final.newScope (organic_ast_explorer_scope: {
release = final.buildNpmPackage {
pname = "organic_ast_explorer";
version = "0.0.0";
src = final.lib.cleanSource ./.;
npmDepsHash = "sha256-cIL9HRZIg8djOgFEuH7jwem7Eia7V5tPogONma+TO9U=";
npmBuildScript = "release";
preConfigure = ''
substituteInPlace src/Explorer.tsx --replace-fail '../../organic/target/wasm32-unknown-unknown/js/wasm' '${final.organic.wasm_bundler}/share/bundler/wasm'
'';
installPhase = ''
mkdir $out
runHook preInstall
cp -r dist/* "$out"
runHook postInstall
'';
};
});
};
};
}

4075
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -30,9 +30,9 @@
"style-loader": "^3.3.4",
"ts-loader": "^9.5.1",
"typescript": "^5.3.3",
"webpack": "^5.89.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1",
"webpack-merge": "^5.10.0"
"webpack": "^5.108.4",
"webpack-cli": "^7.2.1",
"webpack-dev-server": "^6.0.0",
"webpack-merge": "^6.0.1"
}
}