From 1650358036fbc936d0c155b2f3a68077a4d9be2a Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Tue, 28 Nov 2023 17:44:38 +0200 Subject: [PATCH] Synit: inline preserves-tools package --- nixproc/backends/synit/build-synit-env.nix | 17 ++++++++++++++++- .../backends/synit/create-synit-daemon.nix | 19 ++++++++++++------- nixproc/backends/synit/default.nix | 4 ++-- .../backends/synit/generate-synit-service.nix | 2 +- .../create-managed-process-universal.nix | 2 +- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/nixproc/backends/synit/build-synit-env.nix b/nixproc/backends/synit/build-synit-env.nix index 77d711a..87d70dc 100644 --- a/nixproc/backends/synit/build-synit-env.nix +++ b/nixproc/backends/synit/build-synit-env.nix @@ -14,9 +14,24 @@ let processesArgs = builtins.intersectAttrs processesFormalArgs (args // { processManager = "synit"; } // extraParams); + preserves-tools = if builtins.hasAttr "preserves-tools" pkgs then + builtins.trace + "not using inlined preserves-tools package because it is already in nixpkgs" + pkgs.preserves-tools + else + pkgs.rustPlatform.buildRustPackage rec { + pname = "preserves-tools"; + version = "4.992.2"; + src = pkgs.fetchCrate { + inherit pname version; + hash = "sha256-1IX6jTAH6qWE8X7YtIka5Z4y70obiVotOXzRnu+Z6a0="; + }; + cargoHash = "sha256-D/ZCKRqZtPoCJ9t+5+q1Zm79z3K6Rew4eyuyDiGVGUs="; + }; + processes = if exprFile == null then { } else processesFun processesArgs; in pkgs.runCommand "synit-processes.pr" { - nativeBuildInputs = [ pkgs.preserves-tools ]; + nativeBuildInputs = [ preserves-tools ]; env.config_inputs = pkgs.lib.strings.concatMapStringsSep " " (builtins.getAttr "pkg") (builtins.attrValues processes); diff --git a/nixproc/backends/synit/create-synit-daemon.nix b/nixproc/backends/synit/create-synit-daemon.nix index e60fcd6..8f8b98f 100644 --- a/nixproc/backends/synit/create-synit-daemon.nix +++ b/nixproc/backends/synit/create-synit-daemon.nix @@ -1,6 +1,6 @@ -{ lib, runtimeShell, toPreserves, writeScript, writeTextFile }: +{ lib, busybox, runtimeShell, toPreserves, writeScript, writeTextFile }: -{ name, description, argv, environment, directory +{ name, description, argv, environment, directory, path # Shell instructions that specify how the state of the process should be initialized. , initialize ? "" # List of services that this configuration depends on. @@ -12,12 +12,12 @@ , require-service ? true }: let - #quoteArgs = - # map (arg: ''"${lib.replaceStrings [ ''"'' ] [ ''\"'' ] (toString arg)}"''); + env = environment // { + PATH = lib.strings.makeBinPath (path ++ [ busybox ]); + }; processSpec = { - inherit argv; - env = environment; + inherit argv env; } // (lib.attrsets.optionalAttrs (directory != null) { dir = directory; }); serviceName = ""; @@ -50,7 +50,12 @@ in writeTextFile { ''; in '' complete>> - > + '')) + '' diff --git a/nixproc/backends/synit/default.nix b/nixproc/backends/synit/default.nix index 06a582b..bdef58e 100644 --- a/nixproc/backends/synit/default.nix +++ b/nixproc/backends/synit/default.nix @@ -1,4 +1,4 @@ -{ lib, runtimeShell, writeScript, writeTextFile, undaemonize }: +{ lib, busybox, runtimeShell, writeScript, writeTextFile, undaemonize }: rec { util = import ./util.nix { inherit lib; }; @@ -6,7 +6,7 @@ rec { toPreserves = util.toPreserves { }; createSynitDaemon = import ../../backends/synit/create-synit-daemon.nix { - inherit lib runtimeShell writeScript writeTextFile; + inherit lib busybox runtimeShell writeScript writeTextFile; inherit toPreserves; }; diff --git a/nixproc/backends/synit/generate-synit-service.nix b/nixproc/backends/synit/generate-synit-service.nix index deffe03..a251dd8 100644 --- a/nixproc/backends/synit/generate-synit-service.nix +++ b/nixproc/backends/synit/generate-synit-service.nix @@ -6,7 +6,7 @@ let generatedTargetSpecificArgs = { - inherit name description environment directory dependencies initialize; + inherit name description environment directory path dependencies initialize; argv = map toString (if foregroundProcess != null then [ foregroundProcess ] ++ foregroundProcessArgs diff --git a/nixproc/create-managed-process/universal/create-managed-process-universal.nix b/nixproc/create-managed-process/universal/create-managed-process-universal.nix index 5f032d6..d130465 100644 --- a/nixproc/create-managed-process/universal/create-managed-process-universal.nix +++ b/nixproc/create-managed-process/universal/create-managed-process-universal.nix @@ -115,7 +115,7 @@ let }; synit = import ../../backends/synit { - inherit (pkgs) lib runtimeShell undaemonize writeScript writeTextFile; + inherit (pkgs) lib busybox runtimeShell undaemonize writeScript writeTextFile; }; in