dotfiles/packages/firefox-webserial/default.nix
2024-11-07 16:25:41 -07:00

69 lines
1.6 KiB
Nix

#
# Webserial for firefox.
#
{ lib
, stdenv
, fetchFromGitHub
, ws-server
, cjson
, libserialport
, linuxHeaders
, glibc
}:
stdenv.mkDerivation rec {
pname = "firefox-webserial";
version = "0.3.2";
src = fetchFromGitHub {
owner = "kuba2k2";
repo = "firefox-webserial";
rev = "v${version}";
hash = "sha256-ML5AtkR2GGZ99wuE+GiZA5Vb9pZG62AjRwV5sL5dK/U=";
};
# Things that need to be copied into our build.
extra_src= ./extra_src;
buildInputs = [
linuxHeaders
libserialport
ws-server
cjson
glibc
];
# Build it ourselves, since its build system is _wonk_.
buildPhase = ''
cp -r $src/native/src/* .
cp ${extra_src}/* .
gcc -o ${meta.mainProgram} *.c -pthread \
${ws-server}/lib/libws.a \
${cjson}/lib/libcjson.so \
-DSP_PRIV="" \
-I${cjson}/include/cjson \
-I${ws-server}/include/wsserver \
-I. \
'';
installPhase = ''
mkdir -p $out/bin
# Copy our main program...
cp ${meta.mainProgram} $out/bin/
# ... and the config for it.
mkdir -p "$out/lib/mozilla/native-messaging-hosts"
sed -i -e "s|REPLACE_ME_WITH_SED|$out/bin/${meta.mainProgram}|" "webserial.json"
cp webserial.json "$out/lib/mozilla/native-messaging-hosts/io.github.kuba2k2.webserial.json"
'';
meta = with lib; {
description = "WebSerial API Polyfill for Mozilla Firefox browser";
homepage = "https://github.com/kuba2k2/firefox-webserial/releases/download/v0.3.2/firefox-webserial-linux-x86-64";
license = licenses.mit;
maintainers = with maintainers; [ ];
mainProgram = pname;
platforms = platforms.all;
};
}