@highstate/nixos 0.9.18 → 0.9.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/highstate.manifest.json +3 -3
- package/dist/inline-flake/index.js +8 -22
- package/dist/inline-flake/index.js.map +1 -1
- package/dist/inline-module/index.js +2 -2
- package/dist/inline-module/index.js.map +1 -1
- package/dist/system/index.js +14 -16
- package/dist/system/index.js.map +1 -1
- package/package.json +8 -8
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"sourceHashes": {
|
3
|
-
"./dist/inline-flake/index.js":
|
4
|
-
"./dist/inline-module/index.js":
|
5
|
-
"./dist/system/index.js":
|
3
|
+
"./dist/inline-flake/index.js": 3416232143,
|
4
|
+
"./dist/inline-module/index.js": 1287701510,
|
5
|
+
"./dist/system/index.js": 2636547559
|
6
6
|
}
|
7
7
|
}
|
@@ -7,7 +7,7 @@ import { forUnit, toPromise } from '@highstate/pulumi';
|
|
7
7
|
|
8
8
|
// src/inline-flake/index.ts
|
9
9
|
var { name, args, inputs, outputs } = forUnit(nixos.inlineFlake);
|
10
|
-
var {
|
10
|
+
var { folders } = await toPromise(inputs);
|
11
11
|
var flakeRepo = await MaterializedRepository.create(args.flakeName ?? name);
|
12
12
|
var firstOpenBrace = args.code.indexOf("{\n");
|
13
13
|
if (firstOpenBrace === -1) {
|
@@ -25,35 +25,21 @@ var hasFlake = async (folder) => {
|
|
25
25
|
return false;
|
26
26
|
}
|
27
27
|
};
|
28
|
-
for (const
|
29
|
-
const repo = await MaterializedRepository.open(inputRepo, flakeRepo);
|
30
|
-
if (await hasFlake(repo.folder)) {
|
31
|
-
codeParts.push(
|
32
|
-
`inputs.${inputRepo.folder.meta.name}.url = "git+file:./${repo.entity.folder.meta.name}";`
|
33
|
-
);
|
34
|
-
}
|
35
|
-
}
|
36
|
-
for (const inputFolder of folders) {
|
28
|
+
for (const inputFolder of folders ?? []) {
|
37
29
|
const folder = await MaterializedFolder.open(inputFolder, flakeRepo.folder);
|
38
30
|
if (await hasFlake(folder)) {
|
39
31
|
codeParts.push(`inputs.${inputFolder.meta.name}.url = "path:./${folder.entity.meta.name}";`);
|
40
32
|
}
|
41
|
-
await flakeRepo.git.add(folder.entity.meta.name);
|
42
33
|
}
|
43
34
|
codeParts.push("", args.code.slice(firstOpenBrace + 1).trim(), "");
|
44
35
|
await writeFile(join(flakeRepo.path, "flake.nix"), codeParts.join("\n"));
|
45
|
-
await
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
cwd: flakeRepo.path
|
51
|
-
}).stdout
|
52
|
-
);
|
53
|
-
await flakeRepo.git.add("flake.lock");
|
54
|
-
await flakeRepo.git.commit("Update flake.nix");
|
36
|
+
await new Command("update-flake", {
|
37
|
+
host: "local",
|
38
|
+
create: "nix flake update",
|
39
|
+
cwd: flakeRepo.path
|
40
|
+
}).wait();
|
55
41
|
var inline_flake_default = outputs({
|
56
|
-
|
42
|
+
folder: flakeRepo.pack()
|
57
43
|
});
|
58
44
|
|
59
45
|
export { inline_flake_default as default };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/inline-flake/index.ts"],"names":[],"mappings":";;;;;;;;AAOA,IAAM,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,MAAM,WAAW,CAAA;AAEjE,IAAM,EAAE,
|
1
|
+
{"version":3,"sources":["../../src/inline-flake/index.ts"],"names":[],"mappings":";;;;;;;;AAOA,IAAM,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,MAAM,WAAW,CAAA;AAEjE,IAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,UAAU,MAAM,CAAA;AAE1C,IAAM,YAAY,MAAM,sBAAA,CAAuB,MAAA,CAAO,IAAA,CAAK,aAAa,IAAI,CAAA;AAE5E,IAAI,cAAA,GAAiB,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA;AAC5C,IAAI,mBAAmB,EAAA,EAAI;AACzB,EAAA,cAAA,GAAiB,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AACxC;AAEA,IAAI,mBAAmB,EAAA,EAAI;AACzB,EAAA,MAAM,IAAI,MAAM,iEAAiE,CAAA;AACnF;AAEA,IAAM,SAAA,GAAY,CAAC,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,cAAA,GAAiB,CAAC,CAAA,CAAE,IAAA,EAAK,EAAG,EAAE,CAAA;AAEpE,IAAM,QAAA,GAAW,OAAO,MAAA,KAA+B;AACrD,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM,WAAW,CAAC,CAAA;AAC3C,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF,CAAA;AAEA,KAAA,MAAW,WAAA,IAAe,OAAA,IAAW,EAAC,EAAG;AACvC,EAAA,MAAM,SAAS,MAAM,kBAAA,CAAmB,IAAA,CAAK,WAAA,EAAa,UAAU,MAAM,CAAA;AAE1E,EAAA,IAAI,MAAM,QAAA,CAAS,MAAM,CAAA,EAAG;AAC1B,IAAA,SAAA,CAAU,IAAA,CAAK,CAAA,OAAA,EAAU,WAAA,CAAY,IAAA,CAAK,IAAI,kBAAkB,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAA,CAAI,CAAA;AAAA,EAC7F;AACF;AAEA,SAAA,CAAU,IAAA,CAAK,EAAA,EAAI,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,iBAAiB,CAAC,CAAA,CAAE,IAAA,EAAK,EAAG,EAAE,CAAA;AAEjE,MAAM,SAAA,CAAU,KAAK,SAAA,CAAU,IAAA,EAAM,WAAW,CAAA,EAAG,SAAA,CAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AAEvE,MAAM,IAAI,QAAQ,cAAA,EAAgB;AAAA,EAChC,IAAA,EAAM,OAAA;AAAA,EACN,MAAA,EAAQ,kBAAA;AAAA,EACR,KAAK,SAAA,CAAU;AACjB,CAAC,EAAE,IAAA,EAAK;AAER,IAAO,uBAAQ,OAAA,CAAQ;AAAA,EACrB,MAAA,EAAQ,UAAU,IAAA;AACpB,CAAC","file":"index.js","sourcesContent":["import { join } from \"node:path\"\nimport { writeFile, access } from \"node:fs/promises\"\nimport { Command, MaterializedFolder } from \"@highstate/common\"\nimport { MaterializedRepository } from \"@highstate/git\"\nimport { nixos } from \"@highstate/library\"\nimport { forUnit, toPromise } from \"@highstate/pulumi\"\n\nconst { name, args, inputs, outputs } = forUnit(nixos.inlineFlake)\n\nconst { folders } = await toPromise(inputs)\n\nconst flakeRepo = await MaterializedRepository.create(args.flakeName ?? name)\n\nlet firstOpenBrace = args.code.indexOf(\"{\\n\")\nif (firstOpenBrace === -1) {\n firstOpenBrace = args.code.indexOf(\"{\")\n}\n\nif (firstOpenBrace === -1) {\n throw new Error(\"The provided code does not contain a valid flake.nix structure.\")\n}\n\nconst codeParts = [args.code.slice(0, firstOpenBrace + 1).trim(), \"\"]\n\nconst hasFlake = async (folder: MaterializedFolder) => {\n try {\n await access(join(folder.path, \"flake.nix\"))\n return true\n } catch {\n return false\n }\n}\n\nfor (const inputFolder of folders ?? []) {\n const folder = await MaterializedFolder.open(inputFolder, flakeRepo.folder)\n\n if (await hasFlake(folder)) {\n codeParts.push(`inputs.${inputFolder.meta.name}.url = \"path:./${folder.entity.meta.name}\";`)\n }\n}\n\ncodeParts.push(\"\", args.code.slice(firstOpenBrace + 1).trim(), \"\")\n\nawait writeFile(join(flakeRepo.path, \"flake.nix\"), codeParts.join(\"\\n\"))\n\nawait new Command(\"update-flake\", {\n host: \"local\",\n create: \"nix flake update\",\n cwd: flakeRepo.path,\n}).wait()\n\nexport default outputs({\n folder: flakeRepo.pack(),\n})\n"]}
|
@@ -13,7 +13,7 @@ var inline_module_default = outputs({
|
|
13
13
|
content: {
|
14
14
|
type: "embedded",
|
15
15
|
files: [
|
16
|
-
...files,
|
16
|
+
...files ?? [],
|
17
17
|
{
|
18
18
|
meta: {
|
19
19
|
name: "default.nix"
|
@@ -24,7 +24,7 @@ var inline_module_default = outputs({
|
|
24
24
|
}
|
25
25
|
}
|
26
26
|
],
|
27
|
-
folders
|
27
|
+
folders: folders ?? []
|
28
28
|
}
|
29
29
|
}
|
30
30
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/inline-module/index.ts"],"names":[],"mappings":";;;;AAGA,IAAM,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,MAAM,YAAY,CAAA;AAElE,IAAM,UAAA,GAAa,KAAK,UAAA,IAAc,IAAA;AACtC,IAAM,EAAE,KAAA,EAAO,OAAA,EAAQ,GAAI,MAAM,UAAU,MAAM,CAAA;AAEjD,IAAO,wBAAQ,OAAA,CAAQ;AAAA,EACrB,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM;AAAA,KACR;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,
|
1
|
+
{"version":3,"sources":["../../src/inline-module/index.ts"],"names":[],"mappings":";;;;AAGA,IAAM,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,MAAM,YAAY,CAAA;AAElE,IAAM,UAAA,GAAa,KAAK,UAAA,IAAc,IAAA;AACtC,IAAM,EAAE,KAAA,EAAO,OAAA,EAAQ,GAAI,MAAM,UAAU,MAAM,CAAA;AAEjD,IAAO,wBAAQ,OAAA,CAAQ;AAAA,EACrB,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM;AAAA,KACR;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,GAAI,SAAS,EAAC;AAAA,QACd;AAAA,UACE,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM;AAAA,WACR;AAAA,UACA,OAAA,EAAS;AAAA,YACP,IAAA,EAAM,UAAA;AAAA,YACN,OAAO,IAAA,CAAK;AAAA;AACd;AACF,OACF;AAAA,MACA,OAAA,EAAS,WAAW;AAAC;AACvB;AAEJ,CAAC","file":"index.js","sourcesContent":["import { nixos } from \"@highstate/library\"\nimport { forUnit, toPromise } from \"@highstate/pulumi\"\n\nconst { name, args, inputs, outputs } = forUnit(nixos.inlineModule)\n\nconst moduleName = args.moduleName ?? name\nconst { files, folders } = await toPromise(inputs)\n\nexport default outputs({\n folder: {\n meta: {\n name: moduleName,\n },\n content: {\n type: \"embedded\",\n files: [\n ...(files ?? []),\n {\n meta: {\n name: \"default.nix\",\n },\n content: {\n type: \"embedded\",\n value: args.code,\n },\n },\n ],\n folders: folders ?? [],\n },\n },\n})\n"]}
|
package/dist/system/index.js
CHANGED
@@ -5,30 +5,28 @@ import { MaterializedRepository } from '@highstate/git';
|
|
5
5
|
|
6
6
|
// src/system/index.ts
|
7
7
|
var { name, args, inputs, outputs } = forUnit(nixos.system);
|
8
|
-
var {
|
8
|
+
var { flake, server } = await toPromise(inputs);
|
9
9
|
if (!server.ssh) {
|
10
10
|
throw new Error("Server must have an SSH endpoint defined");
|
11
11
|
}
|
12
|
-
var repo = await MaterializedRepository.open(
|
12
|
+
var repo = await MaterializedRepository.open(flake);
|
13
13
|
var privateKey = await MaterializedFile.create(
|
14
14
|
"private-key",
|
15
|
-
server.ssh.keyPair
|
15
|
+
server.ssh.keyPair?.privateKey,
|
16
16
|
384
|
17
17
|
);
|
18
18
|
var system = args.system ?? server.hostname;
|
19
|
-
await
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
}).stdout
|
31
|
-
);
|
19
|
+
await new Command(name, {
|
20
|
+
host: "local",
|
21
|
+
create: [
|
22
|
+
"nixos-anywhere",
|
23
|
+
`--flake ${repo.path}#${system}`,
|
24
|
+
`-i ${privateKey.path}`,
|
25
|
+
`--target-host ${server.ssh.user}@${l3EndpointToString(server.ssh.endpoints[0])}`,
|
26
|
+
`--ssh-port ${server.ssh.endpoints[0].port}`,
|
27
|
+
"--copy-host-keys"
|
28
|
+
]
|
29
|
+
}).wait();
|
32
30
|
var system_default = outputs({
|
33
31
|
server: inputs.server,
|
34
32
|
$terminals: [createSshTerminal(server.ssh)]
|
package/dist/system/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/system/index.ts"],"names":[],"mappings":";;;;;;AAKA,IAAM,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,MAAM,MAAM,CAAA;AAE5D,IAAM,EAAE,
|
1
|
+
{"version":3,"sources":["../../src/system/index.ts"],"names":[],"mappings":";;;;;;AAKA,IAAM,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,MAAM,MAAM,CAAA;AAE5D,IAAM,EAAE,KAAA,EAAO,MAAA,EAAO,GAAI,MAAM,UAAU,MAAM,CAAA;AAEhD,IAAI,CAAC,OAAO,GAAA,EAAK;AACf,EAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAC5D;AAEA,IAAM,IAAA,GAAO,MAAM,sBAAA,CAAuB,IAAA,CAAK,KAAK,CAAA;AAEpD,IAAM,UAAA,GAAa,MAAM,gBAAA,CAAiB,MAAA;AAAA,EACxC,aAAA;AAAA,EACA,MAAA,CAAO,IAAI,OAAA,EAAS,UAAA;AAAA,EACpB;AACF,CAAA;AAEA,IAAM,MAAA,GAAS,IAAA,CAAK,MAAA,IAAU,MAAA,CAAO,QAAA;AAErC,MAAM,IAAI,QAAQ,IAAA,EAAM;AAAA,EACtB,IAAA,EAAM,OAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,gBAAA;AAAA,IACA,CAAA,QAAA,EAAW,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,IAC9B,CAAA,GAAA,EAAM,WAAW,IAAI,CAAA,CAAA;AAAA,IACrB,CAAA,cAAA,EAAiB,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA,CAAA,EAAI,kBAAA,CAAmB,MAAA,CAAO,GAAA,CAAI,SAAA,CAAU,CAAC,CAAC,CAAC,CAAA,CAAA;AAAA,IAC/E,cAAc,MAAA,CAAO,GAAA,CAAI,SAAA,CAAU,CAAC,EAAE,IAAI,CAAA,CAAA;AAAA,IAC1C;AAAA;AAEJ,CAAC,EAAE,IAAA,EAAK;AAER,IAAO,iBAAQ,OAAA,CAAQ;AAAA,EACrB,QAAQ,MAAA,CAAO,MAAA;AAAA,EAEf,UAAA,EAAY,CAAC,iBAAA,CAAkB,MAAA,CAAO,GAAG,CAAC;AAC5C,CAAC","file":"index.js","sourcesContent":["import { Command, createSshTerminal, l3EndpointToString, MaterializedFile } from \"@highstate/common\"\nimport { nixos } from \"@highstate/library\"\nimport { forUnit, toPromise } from \"@highstate/pulumi\"\nimport { MaterializedRepository } from \"@highstate/git\"\n\nconst { name, args, inputs, outputs } = forUnit(nixos.system)\n\nconst { flake, server } = await toPromise(inputs)\n\nif (!server.ssh) {\n throw new Error(\"Server must have an SSH endpoint defined\")\n}\n\nconst repo = await MaterializedRepository.open(flake)\n\nconst privateKey = await MaterializedFile.create(\n \"private-key\",\n server.ssh.keyPair?.privateKey,\n 0o600,\n)\n\nconst system = args.system ?? server.hostname\n\nawait new Command(name, {\n host: \"local\",\n create: [\n \"nixos-anywhere\",\n `--flake ${repo.path}#${system}`,\n `-i ${privateKey.path}`,\n `--target-host ${server.ssh.user}@${l3EndpointToString(server.ssh.endpoints[0])}`,\n `--ssh-port ${server.ssh.endpoints[0].port}`,\n \"--copy-host-keys\",\n ],\n}).wait()\n\nexport default outputs({\n server: inputs.server,\n\n $terminals: [createSshTerminal(server.ssh)],\n})\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@highstate/nixos",
|
3
|
-
"version": "0.9.
|
3
|
+
"version": "0.9.20",
|
4
4
|
"type": "module",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
@@ -17,17 +17,17 @@
|
|
17
17
|
"build": "highstate build"
|
18
18
|
},
|
19
19
|
"dependencies": {
|
20
|
-
"@highstate/common": "^0.9.
|
21
|
-
"@highstate/contract": "^0.9.
|
22
|
-
"@highstate/git": "^0.9.
|
23
|
-
"@highstate/library": "^0.9.
|
24
|
-
"@highstate/pulumi": "^0.9.
|
20
|
+
"@highstate/common": "^0.9.20",
|
21
|
+
"@highstate/contract": "^0.9.20",
|
22
|
+
"@highstate/git": "^0.9.20",
|
23
|
+
"@highstate/library": "^0.9.20",
|
24
|
+
"@highstate/pulumi": "^0.9.20",
|
25
25
|
"@pulumi/kubernetes": "^4.18.0",
|
26
26
|
"@pulumi/pulumi": "^3.184.0",
|
27
27
|
"remeda": "^2.21.3"
|
28
28
|
},
|
29
29
|
"devDependencies": {
|
30
|
-
"@highstate/cli": "^0.9.
|
30
|
+
"@highstate/cli": "^0.9.20"
|
31
31
|
},
|
32
|
-
"gitHead": "
|
32
|
+
"gitHead": "4bf9183450c2c6f51d6a99d77efc379ff5c7b7ef"
|
33
33
|
}
|