Merge pull request #283513 from YMSTNT/init-fcast

fcast-receiver: init at 1.0.14; nixos/fcast-receiver: init module

Sandro dd1ddc55 418cc441

Changed files
+98
nixos
doc
manual
release-notes
modules
pkgs
by-name
fc
fcast-receiver
+2
nixos/doc/manual/release-notes/rl-2405.section.md
···
- [transfer-sh](https://github.com/dutchcoders/transfer.sh), a tool that supports easy and fast file sharing from the command-line. Available as [services.transfer-sh](#opt-services.transfer-sh.enable).
+
- [FCast Receiver](https://fcast.org), an open-source alternative to Chromecast and AirPlay. Available as [programs.fcast-receiver](#opt-programs.fcast-receiver.enable).
+
- [MollySocket](https://github.com/mollyim/mollysocket) which allows getting Signal notifications via UnifiedPush.
- [Suwayomi Server](https://github.com/Suwayomi/Suwayomi-Server), a free and open source manga reader server that runs extensions built for [Tachiyomi](https://tachiyomi.org). Available as [services.suwayomi-server](#opt-services.suwayomi-server.enable).
+1
nixos/modules/module-list.nix
···
./programs/environment.nix
./programs/evince.nix
./programs/extra-container.nix
+
./programs/fcast-receiver.nix
./programs/feedbackd.nix
./programs/file-roller.nix
./programs/firefox.nix
+31
nixos/modules/programs/fcast-receiver.nix
···
+
{ config, lib, pkgs, ... }:
+
+
with lib;
+
+
let
+
cfg = config.programs.fcast-receiver;
+
in
+
{
+
meta = {
+
maintainers = pkgs.fcast-receiver.meta.maintainers;
+
};
+
+
options.programs.fcast-receiver = {
+
enable = mkEnableOption (lib.mdDoc "FCast Receiver");
+
openFirewall = mkOption {
+
type = types.bool;
+
default = false;
+
description = lib.mdDoc ''
+
Open ports needed for the functionality of the program.
+
'';
+
};
+
package = mkPackageOption pkgs "fcast-receiver" { };
+
};
+
+
config = mkIf cfg.enable {
+
environment.systemPackages = [ cfg.package ];
+
networking.firewall = mkIf cfg.openFirewall {
+
allowedTCPPorts = [ 46899 ];
+
};
+
};
+
}
+64
pkgs/by-name/fc/fcast-receiver/package.nix
···
+
{ lib
+
, buildNpmPackage
+
, fetchFromGitLab
+
, makeDesktopItem
+
, copyDesktopItems
+
, makeWrapper
+
, electron
+
}:
+
+
buildNpmPackage rec {
+
pname = "fcast-receiver";
+
version = "1.0.14";
+
+
src = fetchFromGitLab {
+
domain = "gitlab.futo.org";
+
owner = "videostreaming";
+
repo = "fcast";
+
rev = "c7a1cb27c470870df50dbf0de00a133061298d46";
+
hash = "sha256-9xF1DZ2wt6zMoUQywmvnNN3Z8m4GhOFJElENhozF9c8=";
+
};
+
+
sourceRoot = "${src.name}/receivers/electron";
+
+
makeCacheWritable = true;
+
+
npmDepsHash = "sha256-gpbFZ8rKYR/GUY1l4eH5io/lz6FpJLUTl5h8q3haxvw=";
+
+
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
+
+
desktopItems = [
+
(makeDesktopItem {
+
name = pname;
+
desktopName = "FCast Receiver";
+
genericName = "Media Streaming Receiver";
+
exec = "fcast-receiver";
+
icon = "fcast-receiver";
+
comment = "FCast Receiver, an open-source media streaming receiver";
+
})
+
];
+
+
nativeBuildInputs = [
+
copyDesktopItems
+
makeWrapper
+
];
+
+
postInstall = ''
+
install -Dm644 $out/lib/node_modules/fcast-receiver/app.png $out/share/pixmaps/fcast-receiver.png
+
+
makeWrapper ${electron}/bin/electron $out/bin/fcast-receiver \
+
--add-flags $out/lib/node_modules/fcast-receiver/dist/bundle.js
+
'';
+
+
meta = with lib; {
+
description = "FCast Receiver, an open-source media streaming receiver";
+
longDescription = ''
+
FCast Receiver is a receiver for an open-source media streaming protocol, FCast, an alternative to Chromecast and AirPlay.
+
'';
+
homepage = "https://fcast.org/";
+
license = licenses.gpl3;
+
maintainers = with maintainers; [ ymstnt ];
+
mainProgram = "fcast-receiver";
+
platforms = platforms.linux;
+
};
+
}