-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
96 lines (87 loc) · 2.71 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
{
description = "";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
nathanscully.url = "github:nathanscully/nixpkgs";
fetchPnpmDeps.url = "github:scrumplex/nixpkgs/pkgs/build-support/fetchPnpmDeps";
};
outputs =
{
self,
nixpkgs,
flake-utils,
nathanscully,
fetchPnpmDeps,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
overlay = final: prev: {
# Inherit the changes into the overlay
inherit (nathanscully.legacyPackages.${system}) nodePackages;
inherit (fetchPnpmDeps.legacyPackages.${system}) fetchPnpmDeps2;
};
pkgs = import nixpkgs {
inherit system;
overlays = [ overlay ];
};
server = pkgs.stdenv.mkDerivation (finalAttrs: {
pname = "server";
name = "server";
src = ./.;
version = "1.0.0";
pnpmDeps = pkgs.fetchPnpmDeps2 {
inherit (finalAttrs) pname version src;
hash = "sha256-Gr69KbhDSFCfTZnb7Cyjv3rs2ZAnu8M1foTbRr+sMzI=";
};
nativeBuildInputs = [ pkgs.fetchPnpmDeps2.pnpmConfigHook ];
doCheck = false;
postBuild = ''
pnpm run --filter server... build
pnpm --offline --frozen-lockfile --ignore-script --filter server --prod deploy server-deploy
'';
installPhase = ''
cp -r server-deploy $out
'';
});
frontend = pkgs.stdenv.mkDerivation (finalAttrs: {
pname = "frontend";
name = "frontend";
src = ./.;
version = "1.0.0";
pnpmDeps = pkgs.fetchPnpmDeps2 {
inherit (finalAttrs) pname version src;
hash = "sha256-Gr69KbhDSFCfTZnb7Cyjv3rs2ZAnu8M1foTbRr+sMzI=";
};
nativeBuildInputs = [ pkgs.fetchPnpmDeps2.pnpmConfigHook ];
doCheck = false;
postBuild = ''
pnpm run --filter frontend... build
pnpm --offline --frozen-lockfile --ignore-script --filter frontend --prod deploy frontend-deploy
'';
# pnpm --offline --frozen-lockfile --ignore-script --filter frontend --prod deploy frontend-deploy
installPhase = ''
cp -r frontend-deploy $out
'';
});
in
with pkgs;
rec {
packages = {
inherit server frontend;
};
# Development environment
devShell = mkShell {
name = "pnpm-monorepo-test";
nativeBuildInputs = [
nodejs
typescript
nodePackages.pnpm
turbo
nixpacks
];
};
}
);
}