snix/users/sterni/acme/plan9port/default.nix
sterni 473d3c3761 fix(sterni/acme/mkbqnkeyboard.bqn): allow multiple flags in one arg
Change-Id: I203cc50997f9292cef7a3383dadb96fc97108ca6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/13099
Tested-by: BuildkiteCI
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: sterni <sternenseemann@systemli.org>
2025-02-05 15:16:11 +00:00

70 lines
1.7 KiB
Nix

{ depot, pkgs, lib, ... }:
let
patchesFromDir = dir:
lib.filter
(lib.hasSuffix ".patch")
(lib.mapAttrsToList
(name: _: dir + "/${name}")
(builtins.readDir dir));
mkbqnkeyboard' = pkgs.writeShellScript "mkbqnkeyboard'" ''
exec ${pkgs.cbqn}/bin/BQN ${../mkbqnkeyboard.bqn} -si \
"${pkgs.srcOnly pkgs.mbqn}/editors/inputrc" "$1"
'';
inherit (depot.users.sterni.acme) plan9port;
in
pkgs.plan9port.overrideAttrs (old: {
patches = old.patches or [ ] ++ patchesFromDir ./.;
postPatch = old.postPatch or "" + ''
${mkbqnkeyboard'} lib/keyboard
cp --reflink=auto ${./../plumb}/* plumb/
mv plumb/sterni.plumbing plumb/initial.plumbing
'';
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"
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 "" + ''
export NAMESPACE="$(mktemp -d)"
"$out/bin/9" plumber -f &
pid="$!"
until [[ -e "$NAMESPACE/plumb" ]]; do
sleep 0.1
done
"$out/bin/9" 9p write plumb/rules < ${./../plumb}/sterni.plumbing
kill "$pid"
'';
meta = old.meta or { } // {
ci.targets = [ "wrapper" ];
};
})