From 975b9603cc3e520160204f841763aa279c331427 Mon Sep 17 00:00:00 2001 From: sterni Date: Wed, 22 Jan 2025 19:06:51 +0100 Subject: [PATCH] refactor(sterni/plan9port): move custom install logic into wrapper The wrapper allows me to pick and choose what to install and also to set some extra environment variables if necessary. A separate wrapper derivation prevents the hefty rebuild of the entire plan9port derivation when making changes. Change-Id: I3f96cc3e31baf3bd37ae419578c5789aa093e578 Reviewed-on: https://cl.tvl.fyi/c/depot/+/13038 Reviewed-by: sterni Tested-by: BuildkiteCI Autosubmit: sterni --- users/sterni/acme/plan9port/default.nix | 43 ++++++++++++++++++------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/users/sterni/acme/plan9port/default.nix b/users/sterni/acme/plan9port/default.nix index e13b19716..a57b0e60b 100644 --- a/users/sterni/acme/plan9port/default.nix +++ b/users/sterni/acme/plan9port/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ depot, pkgs, lib, ... }: let patchesFromDir = dir: @@ -12,6 +12,8 @@ let exec ${pkgs.cbqn}/bin/BQN ${../mkbqnkeyboard.bqn} -s -i \ "${pkgs.srcOnly pkgs.mbqn}/editors/inputrc" "$1" ''; + + inherit (depot.users.sterni.acme) plan9port; in pkgs.plan9port.overrideAttrs (old: { @@ -23,17 +25,32 @@ pkgs.plan9port.overrideAttrs (old: { mv plumb/sterni.plumbing plumb/initial.plumbing ''; - nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ - pkgs.buildPackages.makeWrapper - ]; + passthru = old.passthru or { } // { + wrapper = + let + PLAN9 = "${plan9port}/plan9"; + globalBins = [ + "9p" + "9pfuse" + ]; + in + pkgs.runCommandNoCC "${old.pname}-wrapper-${old.version}" + { + nativeBuildInputs = [ + pkgs.buildPackages.makeWrapper + ]; + } + '' + mkdir -p "$out/bin" - # Make some tools (that don't clash) available in PATH directly - postInstall = old.postInstall or "" + '' - for cmd in 9p 9pfuse; do - makeWrapper "$out/plan9/bin/$cmd" "$out/bin/$cmd" \ - --set PLAN9 "$out/plan9" - done - ''; + ln -s "${plan9port}/bin/9" "$out/bin/" + for cmd in ${lib.escapeShellArgs globalBins}; do + makeWrapper "${PLAN9}/bin/$cmd" "$out/bin/$cmd" \ + --set PLAN9 "${PLAN9}" + done + + ''; + }; doInstallCheck = true; installCheckPhase = old.installCheckPhase or "" + '' @@ -46,4 +63,8 @@ pkgs.plan9port.overrideAttrs (old: { "$out/bin/9" 9p write plumb/rules < ${./../plumb}/sterni.plumbing kill "$pid" ''; + + meta = old.meta or { } // { + ci.targets = [ "wrapper" ]; + }; })