File tree Expand file tree Collapse file tree 2 files changed +60
-0
lines changed
Expand file tree Collapse file tree 2 files changed +60
-0
lines changed Original file line number Diff line number Diff line change 11let nix = import "./nix-interop/nix.ncl" in
22let filegen = import "files.ncl" in
3+ let vscode = import "vscode.ncl" in
34{
45 OrganistShells = {
56 dev
@@ -64,4 +65,5 @@ let filegen = import "files.ncl" in
6465 = {},
6566 }
6667 & filegen . Schema
68+ & vscode . Schema
6769}
Original file line number Diff line number Diff line change 1+ let nix = import "./nix-interop/nix.ncl" in
2+ let ExtensionFromMarketplace = {
3+ publisher | String ,
4+ name | String ,
5+ version | String ,
6+ sha256 | String
7+ } in
8+ let VSCodeSchema = {
9+ extensions
10+ | doc "Extensions to install locally in the workspace"
11+ | { _ : ExtensionFromMarketplace }
12+ | default = {}
13+ } in
14+ let BuiltExtensionDetails = {
15+ name | String ,
16+ path | Dyn
17+ } in
18+ let buildExtension : String -> ExtensionFromMarketplace -> BuiltExtensionDetails = fun extName efm =>
19+ { name = extName ,
20+ path = nix . derivation . CallNix & { function = m%"
21+ vscode-utils.buildVscodeMarketplaceExtension
22+ { mktplcRef =
23+ { publisher = "{publisher}";
24+ name = "{name}";
25+ version = "{version}";
26+ sha256="{sha256}";
27+ };
28+ }
29+ "% ,
30+ args = {
31+ publisher = efm . publisher ,
32+ name = efm . name ,
33+ version = efm . version ,
34+ sha256 = efm . sha256
35+ }
36+ }} | BuiltExtensionDetails in
37+ let regenerate-vscode | { _ : ExtensionFromMarketplace } -> nix . derivation . Derivation = fun exts =>
38+ { name = "regenerate-vscode-exts" ,
39+ content . text = exts
40+ |> std . record . to_array
41+ |> std . array . map (fun {field = extName , value = ext } => buildExtension extName ext )
42+ |> std . array . fold_left
43+ ( fun acc elt =>
44+ nix-s %"
45+ %{acc }
46+ ln -s " . vscode / extensions / %{elt . name }" %{elt . path }
47+ " %)
48+ "" ,
49+ } | nix . builders . ShellApplication
50+ in {
51+ Schema = {
52+ vscode | doc m%"
53+ VSCode configuration
54+ "% | VSCodeSchema | default
55+ = {},
56+ flake . apps . regenerate-vscode . program = nix-s %"%{regenerate-vscode vscode . extensions }/bin/regenerate-vscode" %,
57+ },
58+ }
You can’t perform that action at this time.
0 commit comments