ALPHA: wire is a tool to deploy nixos systems
wire.althaea.zone/
1{
2 lib,
3 nixosOptionsDoc,
4 runCommand,
5 wire-small-dev,
6 wire-diagnostics-md,
7 nix,
8 nodejs,
9 pnpm,
10 stdenv,
11 mode ? "unstable",
12 ...
13}:
14let
15 eval = lib.evalModules {
16 modules = [
17 ../runtime/module/options.nix
18 {
19 options._module.args = lib.mkOption {
20 internal = true;
21 };
22 }
23 ];
24 specialArgs = {
25 name = "‹node name›";
26 nodes = { };
27 };
28 };
29
30 optionsMd =
31 (nixosOptionsDoc {
32 inherit (eval) options;
33 }).optionsCommonMark;
34
35 optionsDoc = runCommand "options-doc.md" { } ''
36 cat ${optionsMd} > $out
37 sed -i -e '/\*Declared by:\*/,+1d' $out
38 '';
39
40 pkg = builtins.fromJSON (builtins.readFile ./package.json);
41in
42stdenv.mkDerivation (finalAttrs: {
43 inherit (pkg) version;
44 pname = pkg.name;
45 nativeBuildInputs = [
46 wire-small-dev
47 nodejs
48 pnpm.configHook
49 nix
50 ];
51 src = ./.;
52 pnpmDeps = pnpm.fetchDeps {
53 inherit (finalAttrs) pname version src;
54 fetcherVersion = 1;
55 hash = "sha256-S2DCxkBeQ4qz4af53k8mqU223PCSGSVFh0l0qoo7uVw=";
56 };
57 patchPhase = ''
58 cat ${optionsDoc} >> ./reference/module.md
59 cat ${wire-diagnostics-md} >> ./reference/errors.md
60 wire inspect --markdown-help > ./reference/cli.md
61 '';
62 buildPhase = "pnpm run build > build.log 2>&1";
63 installPhase = "cp .vitepress/dist -r $out";
64 doCheck = true;
65 checkPhase = ''
66 nix-instantiate --eval --strict ./snippets > /dev/null
67 '';
68 DEBUG = "*";
69 MODE = mode;
70})