|
1 | 1 | {
|
2 |
| - description = "Eliza Development Environment"; |
| 2 | + description = "Your project description"; |
3 | 3 |
|
4 | 4 | inputs = {
|
5 | 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
6 | 6 | pnpm2nix.url = "github:nzbr/pnpm2nix-nzbr";
|
| 7 | + flake-utils.url = "github:numtide/flake-utils"; |
7 | 8 | };
|
8 | 9 |
|
9 | 10 | outputs = {
|
10 | 11 | self,
|
11 | 12 | nixpkgs,
|
12 | 13 | pnpm2nix,
|
13 |
| - }: let |
14 |
| - systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; |
15 |
| - forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system); |
16 |
| - in { |
17 |
| - devShells = forAllSystems (system: let |
18 |
| - pkgs = import nixpkgs { |
19 |
| - inherit system; |
20 |
| - overlays = [pnpm2nix.overlays.default]; |
21 |
| - }; |
22 |
| - |
23 |
| - nodePackages = |
24 |
| - (import ./default.nix { |
25 |
| - inherit pkgs system; |
26 |
| - sha256 = null; |
27 |
| - }) |
28 |
| - .buildNodePackages |
29 |
| - pkgs; |
30 |
| - in { |
31 |
| - default = pkgs.mkShell { |
32 |
| - buildInputs = with pkgs; [ |
33 |
| - nodePackages.nodejs |
34 |
| - nodePackages.pnpm |
35 |
| - python3 |
36 |
| - pkg-config |
37 |
| - ]; |
38 |
| - }; |
39 |
| - }); |
40 |
| - |
41 |
| - lib = { |
42 |
| - getPlatformString = system: platform: |
43 |
| - if platform == "nodejs" |
44 |
| - then |
45 |
| - if builtins.match ".*darwin.*" system != null |
46 |
| - then |
47 |
| - if builtins.match ".*aarch64.*" system != null |
48 |
| - then "darwin-arm64" |
49 |
| - else "darwin-x64" |
50 |
| - else if builtins.match ".*aarch64.*" system != null |
51 |
| - then "linux-arm64" |
52 |
| - else "linux-x64" |
53 |
| - else if builtins.match ".*darwin.*" system != null |
54 |
| - then |
55 |
| - if builtins.match ".*aarch64.*" system != null |
56 |
| - then "macos-arm64" |
57 |
| - else "macos-x64" |
58 |
| - else if builtins.match ".*aarch64.*" system != null |
59 |
| - then "linux-arm64" |
60 |
| - else "linux-x64"; |
61 |
| - }; |
62 |
| - }; |
| 14 | + flake-utils, |
| 15 | + }: |
| 16 | + flake-utils.lib.eachDefaultSystem ( |
| 17 | + system: let |
| 18 | + pkgs = nixpkgs.legacyPackages.${system}; |
| 19 | + pnpm2nix-lib = pnpm2nix.packages.${system}; |
| 20 | + in { |
| 21 | + packages.default = pnpm2nix-lib.mkPnpmPackage { |
| 22 | + src = ./.; |
| 23 | + |
| 24 | + # Install dependencies in source directory for workspace support |
| 25 | + installInPlace = true; |
| 26 | + |
| 27 | + # Run recursive build across all workspace packages |
| 28 | + script = "-r build"; |
| 29 | + |
| 30 | + # Copy all build outputs |
| 31 | + distDir = "."; |
| 32 | + |
| 33 | + buildPhase = '' |
| 34 | + export HOME=$(mktemp -d) |
| 35 | + pnpm install --frozen-lockfile |
| 36 | + pnpm -r build |
| 37 | + ''; |
| 38 | + |
| 39 | + installPhase = '' |
| 40 | + mkdir -p $out |
| 41 | + cp -r . $out/ |
| 42 | + ''; |
| 43 | + }; |
| 44 | + |
| 45 | + devShells.default = pkgs.mkShell { |
| 46 | + packages = with pkgs; [ |
| 47 | + nodePackages.pnpm |
| 48 | + cairo |
| 49 | + pango |
| 50 | + libpng |
| 51 | + ]; |
| 52 | + |
| 53 | + shellHook = '' |
| 54 | + export PATH="$PWD/node_modules/.bin:$PATH" |
| 55 | + export PKG_CONFIG_PATH="${pkgs.cairo}/lib/pkgconfig:${pkgs.pango}/lib/pkgconfig:${pkgs.libpng}/lib/pkgconfig:$PKG_CONFIG_PATH" |
| 56 | +
|
| 57 | + echo "π€ Eliza development environment loaded π" |
| 58 | + echo "------------------------------------------" |
| 59 | + echo "Using:" |
| 60 | + echo " - Node.js $(node --version)" |
| 61 | + echo " - pnpm $(pnpm --version)" |
| 62 | +
|
| 63 | + echo """ |
| 64 | + ποΈ Quickstart Guide: |
| 65 | + ------------------------ |
| 66 | + ββ> 1. pnpm i (Install dependencies) |
| 67 | + β 2. pnpm build (Build project) |
| 68 | + ββ 3. pnpm clean (Clear Artifacts, for a fresh start) |
| 69 | + 4. pnpm test (Run tests) |
| 70 | +
|
| 71 | + For more commands, run: pnpm --help |
| 72 | + ------------------------ |
| 73 | + """ |
| 74 | + ''; |
| 75 | + }; |
| 76 | + } |
| 77 | + ); |
63 | 78 | }
|
0 commit comments