feat: prepend socket interface to nix build output

This commit is contained in:
Conroy Cheers
2025-11-11 00:15:03 +11:00
parent 48c686194f
commit e05dab3ed6
4 changed files with 38 additions and 18 deletions
+1 -1
View File
@@ -41,7 +41,7 @@
...
}:
let
colorshell = pkgs.callPackage ./nix/package.nix { inherit inputs'; };
colorshell = pkgs.callPackage ./nix/colorshell.nix { inherit inputs'; };
in
{
packages = {
+23 -4
View File
@@ -3,6 +3,7 @@
lib,
stdenv,
stdenvNoCC,
moreutils,
pnpm_10,
buildNpmPackage,
wrapGAppsHook4,
@@ -10,6 +11,7 @@
glib,
gjs,
libadwaita,
socat,
}:
let
packageJSON = lib.importJSON ../package.json;
@@ -106,6 +108,7 @@ buildNpmPackage (finalAttrs: {
wrapGAppsHook4
gobject-introspection
inputs'.ags.packages.default
moreutils
];
buildInputs = [
@@ -129,25 +132,41 @@ buildNpmPackage (finalAttrs: {
buildPhase = ''
runHook preBuild
mkdir -p $out/bin
ags bundle ./src/app.ts $out/bin/${packageJSON.name} \
mkdir build
outPath=./build/${packageJSON.name}
ags bundle ./src/app.ts $outPath \
--gtk 4 \
--root ./src \
--define "DEVEL=false" \
--define "COLORSHELL_VERSION='${finalAttrs.version}'" \
--define "GRESOURCES_FILE='${colorshellResources}'"
# add socket-communication support on executable
{
head -n1 $outPath
sed '1{/^#!.*$/d}' ${../scripts/colorshell-socket-interface.sh}
cat "$outPath" | sed '/^#!.*$/d'
} | sponge $outPath
runHook postBuild
'';
# the above buildPhase installs for us
dontInstall = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp -rp build/${packageJSON.name} $out/bin/
runHook postInstall
'';
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : ${
lib.makeBinPath [
# runtime executables
socat
glib
]
}
)
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
if gdbus introspect --session \
--dest io.github.retrozinndev.colorshell \
--object-path /io/github/retrozinndev/colorshell > /dev/null 2>&1; then
if command -v socat > /dev/null 2>&1; then
echo "$@" | socat - "${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/colorshell.sock"
exit 0
else
echo "[warn] \`socat\` not installed, falling back to remote instance communication"
fi
fi
+1 -13
View File
@@ -43,19 +43,7 @@ sh ./scripts/build.sh -o "${outdir:-./build/release}" -b -r "${gresource_file:-\
if [[ $socket_support ]]; then
echo "[info] adding socket communication support"
script="\
#!/usr/bin/bash
if gdbus introspect --session \\
--dest io.github.retrozinndev.colorshell \\
--object-path /io/github/retrozinndev/colorshell > /dev/null 2>&1; then
if command -v socat > /dev/null 2>&1; then
echo \"\$@\" | socat - \"\${XDG_RUNTIME_DIR:-/run/user/\$(id -u)}/colorshell.sock\"
exit 0
else
echo \"[warn] \`socat\` not installed, falling back to remote instance communication\"
fi
fi
`cat ./scripts/colorshell-socket-interface.sh`
`cat "${outdir:-./build/release}/colorshell" | sed -e 's/^#.*//'`" # remove shebang
echo -en "$script" > "${outdir:-./build/release}/colorshell"