From 244992f35bef5b53338bdc422d60924c7d7980c5 Mon Sep 17 00:00:00 2001 From: Daylin Morgan Date: Mon, 17 Feb 2025 12:33:15 -0600 Subject: [PATCH] add --system to `oizys output` --- pkgs/oizys/src/oizys.nim | 13 +++++++++---- pkgs/oizys/src/oizys/nix.nim | 6 ++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pkgs/oizys/src/oizys.nim b/pkgs/oizys/src/oizys.nim index 86940b3..083182b 100644 --- a/pkgs/oizys/src/oizys.nim +++ b/pkgs/oizys/src/oizys.nim @@ -138,12 +138,17 @@ hwylCli: ... "nixos config attr" flags: ^minimal + system: + ? "show system path" run: - if not minimal: - echo nixosConfigAttrs().join(" ") - else: + if minimal and system: + echo "--minimal and --system are mutually exclusive" + elif minimal: showOizysDerivations() - + elif system: + echo getSystemPaths().mapIt(it & "^*").join(" ") + else: + echo nixosConfigAttrs().join(" ") [update] ... "update and run nixos-rebuild" flags: diff --git a/pkgs/oizys/src/oizys/nix.nim b/pkgs/oizys/src/oizys/nix.nim index 7fba440..2a4fdb7 100644 --- a/pkgs/oizys/src/oizys/nix.nim +++ b/pkgs/oizys/src/oizys/nix.nim @@ -198,6 +198,7 @@ proc nixDerivationShow*(drvs: openArray[string]): Table[string, NixDerivation] = runCmdCaptWithSpinner(cmd, "evaluating " & drvs.join(" ")) fromJson(output, Table[string, NixDerivation]) + # TODO: replace asserts in this proc, would be easier with results type proc findSystemPaths(drvs: Table[string, NixDerivation]): seq[string] = let hosts = getHosts() @@ -214,6 +215,10 @@ proc findSystemPaths(drvs: Table[string, NixDerivation]): seq[string] = assert len(hosts) == len(result) +# NOTE: is find system paths always called after a nixDerivationShow? +proc getSystemPaths*(): seq[string] = + let systemDrvs = nixDerivationShow(nixosConfigAttrs()) + result = findSystemPaths(systemDrvs) proc filterSeq( drvs: seq[string], @@ -240,6 +245,7 @@ func isIgnored(drv: string): bool = proc getSystemPathDrvs*(): seq[string] = let systemDrvs = nixDerivationShow(nixosConfigAttrs()) let systemPathDrvs = findSystemPaths(systemDrvs) + result = collect: for k, drv in nixDerivationShow(systemPathDrvs):