-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
77 lines (73 loc) · 2.1 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
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
systems.url = "github:nix-systems/default";
};
outputs = {
self,
systems,
nixpkgs,
...
}: let
eachSystem = f:
nixpkgs.lib.genAttrs (import systems) (system:
f {
pkgs = nixpkgs.legacyPackages.${system};
inherit system;
});
in rec {
formatter = eachSystem ({pkgs, ...}: pkgs.alejandra);
packages = eachSystem ({pkgs, ...}: {
default = pkgs.buildNpmPackage {
name = "build-event-protocol-viewer";
version = "0.1.0";
src = pkgs.nix-gitignore.gitignoreSource [] ./.;
env = {
NIX_GIT_REVISION = self.rev or self.dirtyRev or "dirty";
};
# Let's try importNpmLock so we do't have to manually update a hash
# so that dependabot can do its job
# https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/javascript.section.md#importnpmlock-javascript-buildnpmpackage-importnpmlock
npmDeps = pkgs.importNpmLock {
npmRoot = ./.;
};
npmConfigHook = pkgs.importNpmLock.npmConfigHook;
npmBuild = "npm run build";
# nix-gitignore doesn't seem to keep the generated directory
preBuild = "mkdir -p ./src/lib/generated && npm run genprotobuf";
installPhase = ''
mkdir $out
cp -r build/* $out
'';
doCheck = true;
checkPhase = ''
npm run lint
npm run check
npm run test
'';
};
});
apps = eachSystem ({
system,
pkgs,
}: let
server = pkgs.writeShellScriptBin "server" ''
${pkgs.python3}/bin/python -m http.server 8080 -b 127.0.0.1 -d ${packages.${system}.default}
'';
in {
default = {
type = "app";
program = "${server}/bin/server";
};
});
devShells = eachSystem ({pkgs, ...}: {
default = pkgs.mkShell {
buildInputs = [
pkgs.nodejs
pkgs.nodePackages.typescript
pkgs.nodePackages.typescript-language-server
];
};
});
};
}