ALPHA: wire is a tool to deploy nixos systems wire.althaea.zone/
at rollback-hacking 70 lines 1.5 kB view raw
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})