✨ feat: add socket communication support for nix builds
includes socket interface support in colorshell nix builds! thanks to @conroy-cheers in #28 :D
This commit is contained in:
@@ -41,7 +41,7 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
colorshell = pkgs.callPackage ./nix/package.nix { inherit inputs'; };
|
||||
colorshell = pkgs.callPackage ./nix/colorshell.nix { inherit inputs'; };
|
||||
in
|
||||
{
|
||||
packages = {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
lib,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
moreutils,
|
||||
pnpm_10,
|
||||
buildNpmPackage,
|
||||
wrapGAppsHook4,
|
||||
@@ -10,6 +11,8 @@
|
||||
glib,
|
||||
gjs,
|
||||
libadwaita,
|
||||
dart-sass,
|
||||
socat,
|
||||
}:
|
||||
let
|
||||
packageJSON = lib.importJSON ../package.json;
|
||||
@@ -106,6 +109,7 @@ buildNpmPackage (finalAttrs: {
|
||||
wrapGAppsHook4
|
||||
gobject-introspection
|
||||
inputs'.ags.packages.default
|
||||
moreutils
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -129,25 +133,42 @@ 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
|
||||
dart-sass
|
||||
glib
|
||||
socat
|
||||
]
|
||||
}
|
||||
)
|
||||
@@ -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
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user