forked from prisma/language-tools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
77 lines (66 loc) 路 2.87 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
{
description = "An optional nix-based development setup";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem
(system:
let
pkgs = nixpkgs.legacyPackages.${system};
formatProject = pkgs.writeShellScriptBin "formatProject" ''
PATH=${pkgs.nodejs}/bin:${pkgs.jq}/bin:$PATH
PRETTIER_VERSION=`jq -r .devDependencies.prettier ${./package.json}`
npx prettier@$PRETTIER_VERSION -w ./packages/**/*.ts ./**/*.json ./**/*.js
'';
in
{
packages = {
# Build the vscode extension with pinned dependencies and the local
# language server build. It will not package the vscode extension
# into a .vsix you can install directly, because this is proving
# extremely challenging to do locally.
buildVscodeExtension = pkgs.writeShellScriptBin "buildVscodeExtension" ''
PATH=${pkgs.nodejs}/bin:${pkgs.jq}/bin:$PATH
set -euo pipefail
echo -n 'npm --version: '
npm --version
echo -n 'node --version: '
node --version
echo 'Deleting node modules...'
nix run .#deleteNodeModules
echo 'Building language-server...'
pushd ./packages/language-server
npm install
npm run build
npm prune --production
popd
echo 'Building VSCode extension...'
pushd ./packages/vscode
npm install
npm run build
popd
echo 'ok'
'';
# Start a VSCode instance with completely default configuration.
# Follow the instructions from CONTRIBUTING.md to manually start
# another instance of VSCode with the local build of the extension
# (unpackaged) locally.
code = pkgs.writeShellScriptBin "code" ''
TMPDIR=`mktemp -d`
USER_DIR=$TMPDIR/user_dir
EXTENSIONS_DIR=$TMPDIR/extensions_dir
CODE="${pkgs.vscodium}/bin/codium --user-data-dir $USER_DIR --extensions-dir=$EXTENSIONS_DIR"
mkdir $USER_DIR $EXTENSIONS_DIR
$CODE . --goto ./packages/vscode/src/__test__/testDb.prisma:10
'';
deleteNodeModules = pkgs.writeShellScriptBin "deleteNodeModules" ''
find . -name 'node_modules' -prune
find . -name 'node_modules' -prune | xargs rm -rf
'';
inherit formatProject;
};
devShell = pkgs.mkShell {
packages = [ formatProject pkgs.nodejs self.packages."${system}".buildVscodeExtension self.packages."${system}".deleteNodeModules self.packages."${system}".code ];
};
}
);
}