-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
flake.nix
55 lines (49 loc) · 1.75 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
{
inputs = {
compat.url = "github:edolstra/flake-compat";
compat.flake = false;
utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
};
outputs = { self, nixpkgs, utils, ... }:
utils.lib.eachDefaultSystem (system:
let
attrs = with builtins; fromJSON (readFile ./package.json);
pkgs = import nixpkgs { inherit system; };
in {
defaultPackage = self.packages.${system}.vsix;
packages.vsix = pkgs.mkYarnPackage {
src = ./.;
name = with attrs; "${name}-${version}.vsix";
# Not sure how it happened that vscode-direnv symlink gets through .vscodeignore.
# But it completely destroys vsce with mystic symlink message, which actually mean that it's gets broken.
# Took a long time to solve
buildPhase = with attrs; ''
rm deps/${name}/${name}
yarn vsce package --yarn
'';
# Nothing needed out there.
distPhase = ":";
# Just move vsix to result, without any smartness.
installPhase = with attrs; ''
mv deps/${name}/${name}-${version}.vsix $out
'';
passthru = {
extId = with attrs; "${publisher}.${name}";
};
};
packages.extension = let
vsix = self.packages.${system}.defaultPackage;
in
pkgs.vscode-utils.buildVscodeExtension {
name = attrs.name;
vscodeExtUniqueId = vsix.extId;
src = vsix;
unpackPhase = "unzip $src; cd extension";
};
devShell = with pkgs; mkShell {
nativeBuildInputs = [ yarn ];
};
}
);
}