From 642a1dd450a241a8a9a12c1740ee0aadb76c034e Mon Sep 17 00:00:00 2001 From: YMSTNT <21342713+YMSTNT@users.noreply.github.com> Date: Wed, 24 Jan 2024 15:11:43 +0100 Subject: [PATCH 1/2] fcast-receiver: init at 1.0.14 --- pkgs/by-name/fc/fcast-receiver/package.nix | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 pkgs/by-name/fc/fcast-receiver/package.nix diff --git a/pkgs/by-name/fc/fcast-receiver/package.nix b/pkgs/by-name/fc/fcast-receiver/package.nix new file mode 100644 index 000000000000..9aa649d34f8c --- /dev/null +++ b/pkgs/by-name/fc/fcast-receiver/package.nix @@ -0,0 +1,64 @@ +{ 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; + }; +} From 08ac037cacf685c43e7384ea4f6dce1a293e6834 Mon Sep 17 00:00:00 2001 From: YMSTNT <21342713+YMSTNT@users.noreply.github.com> Date: Wed, 24 Jan 2024 15:12:23 +0100 Subject: [PATCH 2/2] nixos/fcast-receiver: init module --- .../manual/release-notes/rl-2405.section.md | 2 ++ nixos/modules/module-list.nix | 1 + nixos/modules/programs/fcast-receiver.nix | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 nixos/modules/programs/fcast-receiver.nix diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index d9e066ffad61..1bd403948058 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -106,6 +106,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m - [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). diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 0a15360f6ea5..c0b29ce476e9 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -177,6 +177,7 @@ ./programs/environment.nix ./programs/evince.nix ./programs/extra-container.nix + ./programs/fcast-receiver.nix ./programs/feedbackd.nix ./programs/file-roller.nix ./programs/firefox.nix diff --git a/nixos/modules/programs/fcast-receiver.nix b/nixos/modules/programs/fcast-receiver.nix new file mode 100644 index 000000000000..8da07a66e222 --- /dev/null +++ b/nixos/modules/programs/fcast-receiver.nix @@ -0,0 +1,31 @@ +{ 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 ]; + }; + }; +}