firefoxpwa: init at 2.11.1
firefoxpwa: move to pkgs/by-name
This commit is contained in:
parent
5c73f7a5bd
commit
c3a1620624
4 changed files with 3009 additions and 0 deletions
|
@ -306,6 +306,7 @@ in {
|
|||
firefox-devedition = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-devedition; };
|
||||
firefox-esr = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-esr; }; # used in `tested` job
|
||||
firefox-esr-115 = handleTest ./firefox.nix { firefoxPackage = pkgs.firefox-esr-115; };
|
||||
firefoxpwa = handleTest ./firefoxpwa.nix {};
|
||||
firejail = handleTest ./firejail.nix {};
|
||||
firewall = handleTest ./firewall.nix { nftables = false; };
|
||||
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 a new issue