From af285441028eb259cbe8e02a713f604e80c3a6c6 Mon Sep 17 00:00:00 2001 From: Daylin Morgan Date: Tue, 3 Sep 2024 12:17:01 -0500 Subject: [PATCH] implement cache --- pkgs/oizys-nim/src/oizys.nim | 8 ++++---- pkgs/oizys-nim/src/oizys/exec.nim | 2 +- pkgs/oizys-nim/src/oizys/nix.nim | 33 +++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/pkgs/oizys-nim/src/oizys.nim b/pkgs/oizys-nim/src/oizys.nim index 84e8c09..0be2d14 100644 --- a/pkgs/oizys-nim/src/oizys.nim +++ b/pkgs/oizys-nim/src/oizys.nim @@ -40,9 +40,9 @@ overlay: ## nix build nixBuild(minimal, rest) - proc cache(name: string = "daylin") = - ## *TBI* build and push to cachix - fatal "not implemented" + proc cache(minimal: bool = false, name: string = "daylin") = + ## build and push to cachix + nixBuildWithCache(minimal, name, rest) proc osCmd() = ## nixos-rebuild @@ -56,7 +56,7 @@ overlay: nixosRebuild(subcmd, rest[1..^1]) proc ci(`ref`: string = "main") = - ## *TBD* trigger GHA update flow + ## trigger GHA update flow if rest.len == 0: fatal "expected workflow file name"; quit QuitFailure createDispatch(rest[0], `ref`) diff --git a/pkgs/oizys-nim/src/oizys/exec.nim b/pkgs/oizys-nim/src/oizys/exec.nim index 1ca222a..2f48e70 100644 --- a/pkgs/oizys-nim/src/oizys/exec.nim +++ b/pkgs/oizys-nim/src/oizys/exec.nim @@ -6,7 +6,7 @@ import std/[ import ./spin -func addArgs*(cmd: var string, args: seq[string]) = +func addArgs*(cmd: var string, args: openArray[string]) = cmd &= " " & args.join(" ") func addArg*(cmd: var string, arg: string) = diff --git a/pkgs/oizys-nim/src/oizys/nix.nim b/pkgs/oizys-nim/src/oizys/nix.nim index 5b93933..129f464 100644 --- a/pkgs/oizys-nim/src/oizys/nix.nim +++ b/pkgs/oizys-nim/src/oizys/nix.nim @@ -203,10 +203,12 @@ proc nixBuildHostDry*(minimal: bool, rest: seq[string]) = quit "exiting...", QuitSuccess cmd.addArgs drvs cmd.addArg "--no-link" + if isCi(): writeDervationsToStepSummary drvs else: cmd.addArgs nixosConfigAttrs() + cmd.addArg "--dry-run" cmd.addArgs rest let (_, err) = @@ -214,4 +216,35 @@ proc nixBuildHostDry*(minimal: bool, rest: seq[string]) = let output = parseDryRunOutput err display output +# TODO: Add to bbansi +template `bbfmt`(pattern: static string): untyped = + bb(fmt(pattern)) + +proc nixBuildWithCache*(minimal: bool, name: string, rest:seq[string]) = + if findExe("cachix") == "": + fatal "is cachix installed?"; quit QuitFailure + info bbfmt"building and pushing to cache: [b]{name}" + var cmd = "cachix" + cmd.addArgs ["watch-exec","--"] + cmd.addArg "nix build" + if minimal: + debug "populating args with derivations not built/cached" + let drvs = systemPathDrvsToBuild() + if drvs.len == 0: + info "nothing to build" + quit "exiting...", QuitSuccess + cmd.addArgs drvs + cmd.addArg "--no-link" + else: + cmd.addArgs nixosConfigAttrs() + cmd.addArgs rest + debug cmd + quit QuitSuccess + let err = runCmd(cmd) + quit err + + + + +