firefoxpwa: init at 2.11.1
firefoxpwa: move to pkgs/by-name
This commit is contained in:
parent
5c73f7a5bd
commit
c3a1620624
|
@ -306,6 +306,7 @@ in {
|
||||||
firefox-devedition = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-devedition; };
|
firefox-devedition = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-devedition; };
|
||||||
firefox-esr = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-esr; }; # used in `tested` job
|
firefox-esr = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-esr; }; # used in `tested` job
|
||||||
firefox-esr-115 = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-esr-115; };
|
firefox-esr-115 = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-esr-115; };
|
||||||
|
firefoxpwa = handleTest ./firefoxpwa.nix {};
|
||||||
firejail = handleTest ./firejail.nix {};
|
firejail = handleTest ./firejail.nix {};
|
||||||
firewall = handleTest ./firewall.nix { nftables = false; };
|
firewall = handleTest ./firewall.nix { nftables = false; };
|
||||||
firewall-nftables = handleTest ./firewall.nix { nftables = true; };
|
firewall-nftables = handleTest ./firewall.nix { nftables = true; };
|
||||||
|
|
36
nixos/tests/firefoxpwa.nix
Normal file
36
nixos/tests/firefoxpwa.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
import ./make-test-python.nix ({ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "firefoxpwa";
|
||||||
|
meta.maintainers = with lib.maintainers; [ camillemndn ];
|
||||||
|
|
||||||
|
nodes.machine =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [ ./common/x11.nix ];
|
||||||
|
environment.systemPackages = with pkgs; [ firefoxpwa jq ];
|
||||||
|
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
nativeMessagingHosts.packages = [ pkgs.firefoxpwa ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.jellyfin.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
enableOCR = true;
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
machine.start()
|
||||||
|
|
||||||
|
with subtest("Install a progressive web app"):
|
||||||
|
machine.wait_for_unit("jellyfin.service")
|
||||||
|
machine.wait_for_open_port(8096)
|
||||||
|
machine.succeed("firefoxpwa site install http://localhost:8096/web/manifest.json >&2")
|
||||||
|
|
||||||
|
with subtest("Launch the progressive web app"):
|
||||||
|
machine.succeed("firefoxpwa site launch $(jq -r < ~/.local/share/firefoxpwa/config.json '.sites | keys[0]') >&2")
|
||||||
|
machine.wait_for_window("Jellyfin")
|
||||||
|
machine.wait_for_text("Jellyfin")
|
||||||
|
'';
|
||||||
|
})
|
2839
pkgs/by-name/fi/firefoxpwa/Cargo.lock
generated
Normal file
2839
pkgs/by-name/fi/firefoxpwa/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
133
pkgs/by-name/fi/firefoxpwa/package.nix
Normal file
133
pkgs/by-name/fi/firefoxpwa/package.nix
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
{ lib
|
||||||
|
, rustPlatform
|
||||||
|
, fetchFromGitHub
|
||||||
|
, makeWrapper
|
||||||
|
, pkg-config
|
||||||
|
, installShellFiles
|
||||||
|
, firefox-unwrapped
|
||||||
|
, openssl
|
||||||
|
, stdenv
|
||||||
|
, udev
|
||||||
|
, libva
|
||||||
|
, mesa
|
||||||
|
, libnotify
|
||||||
|
, xorg
|
||||||
|
, cups
|
||||||
|
, pciutils
|
||||||
|
, libcanberra-gtk3
|
||||||
|
, extraLibs ? [ ]
|
||||||
|
, nixosTests
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "firefoxpwa";
|
||||||
|
version = "2.11.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "filips123";
|
||||||
|
repo = "PWAsForFirefox";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-ZD/bTziVmHtQVKejzj+fUXVazCm2PaulS2NZjTribSk=";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceRoot = "${src.name}/native";
|
||||||
|
buildFeatures = [ "immutable-runtime" ];
|
||||||
|
|
||||||
|
cargoLock = {
|
||||||
|
lockFile = ./Cargo.lock;
|
||||||
|
outputHashes = {
|
||||||
|
"mime-0.4.0-a.0" = "sha256-LjM7LH6rL3moCKxVsA+RUL9lfnvY31IrqHa9pDIAZNE=";
|
||||||
|
"web_app_manifest-0.0.0" = "sha256-G+kRN8AEmAY1TxykhLmgoX8TG8y2lrv7SCRJlNy0QzA=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
sed -i 's;version = "0.0.0";version = "${version}";' Cargo.toml
|
||||||
|
sed -zi 's;name = "firefoxpwa"\nversion = "0.0.0";name = "firefoxpwa"\nversion = "${version}";' Cargo.lock
|
||||||
|
sed -i $'s;DISTRIBUTION_VERSION = \'0.0.0\';DISTRIBUTION_VERSION = \'${version}\';' userchrome/profile/chrome/pwa/chrome.jsm
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper pkg-config installShellFiles ];
|
||||||
|
buildInputs = [ openssl ];
|
||||||
|
|
||||||
|
FFPWA_EXECUTABLES = ""; # .desktop entries generated without any store path references
|
||||||
|
FFPWA_SYSDATA = "${placeholder "out"}/share/firefoxpwa";
|
||||||
|
completions = "target/${stdenv.targetPlatform.config}/release/completions";
|
||||||
|
|
||||||
|
gtk_modules = map (x: x + x.gtkModule) [ libcanberra-gtk3 ];
|
||||||
|
libs = let libs = lib.optionals stdenv.isLinux [ udev libva mesa libnotify xorg.libXScrnSaver cups pciutils ] ++ gtk_modules ++ extraLibs; in lib.makeLibraryPath libs + ":" + lib.makeSearchPathOutput "lib" "lib64" libs;
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
# Runtime
|
||||||
|
mkdir -p $out/share/firefoxpwa
|
||||||
|
cp -Lr ${firefox-unwrapped}/lib/firefox $out/share/firefoxpwa/runtime
|
||||||
|
chmod -R +w $out/share/firefoxpwa
|
||||||
|
|
||||||
|
# UserChrome
|
||||||
|
cp -r userchrome $out/share/firefoxpwa
|
||||||
|
|
||||||
|
# Runtime patching
|
||||||
|
FFPWA_USERDATA=$out/share/firefoxpwa $out/bin/firefoxpwa runtime patch
|
||||||
|
|
||||||
|
# Manifest
|
||||||
|
sed -i "s!/usr/libexec!$out/bin!" manifests/linux.json
|
||||||
|
install -Dm644 manifests/linux.json $out/lib/mozilla/native-messaging-hosts/firefoxpwa.json
|
||||||
|
|
||||||
|
installShellCompletion --cmd firefoxpwa \
|
||||||
|
--bash $completions/firefoxpwa.bash \
|
||||||
|
--fish $completions/firefoxpwa.fish \
|
||||||
|
--zsh $completions/_firefoxpwa
|
||||||
|
|
||||||
|
# AppStream Metadata
|
||||||
|
install -Dm644 packages/appstream/si.filips.FirefoxPWA.metainfo.xml $out/share/metainfo/si.filips.FirefoxPWA.metainfo.xml
|
||||||
|
install -Dm644 packages/appstream/si.filips.FirefoxPWA.svg $out/share/icons/hicolor/scalable/apps/si.filips.FirefoxPWA.svg
|
||||||
|
|
||||||
|
wrapProgram $out/bin/firefoxpwa \
|
||||||
|
--prefix FFPWA_SYSDATA : "$out/share/firefoxpwa" \
|
||||||
|
--prefix LD_LIBRARY_PATH : "$libs" \
|
||||||
|
--suffix-each GTK_PATH : "$gtk_modules"
|
||||||
|
|
||||||
|
wrapProgram $out/bin/firefoxpwa-connector \
|
||||||
|
--prefix FFPWA_SYSDATA : "$out/share/firefoxpwa" \
|
||||||
|
--prefix LD_LIBRARY_PATH : "$libs" \
|
||||||
|
--suffix-each GTK_PATH : "$gtk_modules"
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.tests.firefoxpwa = nixosTests.firefoxpwa;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A tool to install, manage and use Progressive Web Apps (PWAs) in Mozilla Firefox (native component)";
|
||||||
|
longDescription = ''
|
||||||
|
Progressive Web Apps (PWAs) are web apps that use web APIs and features along
|
||||||
|
with progressive enhancement strategy to bring a native app-like user experience
|
||||||
|
to cross-platform web applications. Although Firefox supports many of Progressive
|
||||||
|
Web App APIs, it does not support functionality to install them as a standalone
|
||||||
|
system app with an app-like experience.
|
||||||
|
|
||||||
|
This project creates a custom modified Firefox runtime to allow websites to be
|
||||||
|
installed as standalone apps and provides a console tool and browser extension
|
||||||
|
to install, manage and use them.
|
||||||
|
|
||||||
|
This package contains only the native part of the PWAsForFirefox project. You
|
||||||
|
should also install the browser extension if you haven't already. You can download
|
||||||
|
it from the [Firefox Add-ons](https://addons.mozilla.org/firefox/addon/pwas-for-firefox/)
|
||||||
|
website.
|
||||||
|
|
||||||
|
To install the package on NixOS, you need to add the following options:
|
||||||
|
|
||||||
|
```
|
||||||
|
programs.firefox.nativeMessagingHosts.packages = [ pkgs.firefoxpwa ];
|
||||||
|
environment.systemPackages = [ pkgs.firefoxpwa ];
|
||||||
|
```
|
||||||
|
|
||||||
|
As it needs to be both in the `PATH` and in the `nativeMessagingHosts` to make it
|
||||||
|
possible for the extension to detect and use it.
|
||||||
|
'';
|
||||||
|
homepage = "https://pwasforfirefox.filips.si/";
|
||||||
|
changelog = "https://github.com/filips123/PWAsForFirefox/releases/tag/v${version}";
|
||||||
|
license = licenses.mpl20;
|
||||||
|
platforms = platforms.unix;
|
||||||
|
maintainers = with maintainers; [ camillemndn pasqui23 ];
|
||||||
|
mainProgram = "firefoxpwa";
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user