From 9dab1a840cced57bd86c9f006dc44b21699d6660 Mon Sep 17 00:00:00 2001 From: Simon Vandel Sillesen Date: Sat, 20 Jun 2015 20:33:57 +0000 Subject: tvheadend: init at 4.0.4 --- lib/maintainers.nix | 1 + nixos/doc/manual/release-notes/rl-unstable.xml | 1 + nixos/modules/misc/ids.nix | 2 + nixos/modules/module-list.nix | 1 + nixos/modules/services/networking/tvheadend.nix | 61 +++++++++++++++++++++++++ pkgs/servers/tvheadend/default.nix | 31 +++++++++++++ pkgs/top-level/all-packages.nix | 2 + 7 files changed, 99 insertions(+) create mode 100644 nixos/modules/services/networking/tvheadend.nix create mode 100644 pkgs/servers/tvheadend/default.nix diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 9af84929aa0..eb5dcbf4313 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -212,6 +212,7 @@ shell = "Shell Turner "; shlevy = "Shea Levy "; simons = "Peter Simons "; + simonvandel = "Simon Vandel Sillesen "; sjagoe = "Simon Jagoe "; sjmackenzie = "Stewart Mackenzie "; skeidel = "Sven Keidel "; diff --git a/nixos/doc/manual/release-notes/rl-unstable.xml b/nixos/doc/manual/release-notes/rl-unstable.xml index 063663d9bbc..0af85374566 100644 --- a/nixos/doc/manual/release-notes/rl-unstable.xml +++ b/nixos/doc/manual/release-notes/rl-unstable.xml @@ -41,6 +41,7 @@ brltty marathon +Tvheadend diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index ce935915abf..0b0be87347d 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -221,6 +221,7 @@ skydns = 197; ripple-rest = 198; nix-serve = 199; + tvheadend = 200; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -420,6 +421,7 @@ #skydns = 197; #unused #ripple-rest = 198; #unused #nix-serve = 199; #unused + #tvheadend = 200; #unused # When adding a gid, make sure it doesn't match an existing # uid. Users and groups with the same name should have equal diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index d33d3ca91d4..12a6a9374ff 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -333,6 +333,7 @@ ./services/networking/tftpd.nix ./services/networking/tlsdated.nix ./services/networking/tox-bootstrapd.nix + ./services/networking/tvheadend.nix ./services/networking/unbound.nix ./services/networking/unifi.nix ./services/networking/vsftpd.nix diff --git a/nixos/modules/services/networking/tvheadend.nix b/nixos/modules/services/networking/tvheadend.nix new file mode 100644 index 00000000000..cdd8747ba89 --- /dev/null +++ b/nixos/modules/services/networking/tvheadend.nix @@ -0,0 +1,61 @@ +{ config, coreutils, lib, pkgs, ... }: + +with lib; + +let cfg = config.services.tvheadend; + pidFile = "${config.users.extraUsers.tvheadend.home}/tvheadend.pid"; +in + +{ + options = { + services.tvheadend = { + enable = mkEnableOption "Tvheadend"; + httpPort = mkOption { + type = types.int; + default = 9981; + description = "Port to bind HTTP to."; + }; + + htspPort = mkOption { + type = types.int; + default = 9982; + description = "Port to bind HTSP to."; + }; + }; + }; + + config = mkIf cfg.enable { + users.extraUsers.tvheadend = { + description = "Tvheadend Service user"; + home = "/var/lib/tvheadend"; + createHome = true; + uid = config.ids.uids.tvheadend; + }; + + systemd.services.tvheadend = { + description = "Tvheadend TV streaming server"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + serviceConfig = { + Type = "forking"; + PIDFile = pidFile; + Restart = "always"; + RestartSec = 5; + User = "tvheadend"; + Group = "video"; + ExecStart = '' + ${pkgs.tvheadend}/bin/tvheadend \ + --http_port ${toString cfg.httpPort} \ + --htsp_port ${toString cfg.htspPort} \ + -f \ + -C \ + -p ${pidFile} \ + -u tvheadend \ + -g video + ''; + ExecStop = "${pkgs.coreutils}/bin/rm ${pidFile}"; + }; + }; + }; +} diff --git a/pkgs/servers/tvheadend/default.nix b/pkgs/servers/tvheadend/default.nix new file mode 100644 index 00000000000..7eb2c527406 --- /dev/null +++ b/pkgs/servers/tvheadend/default.nix @@ -0,0 +1,31 @@ +{avahi, dbus, fetchurl, git, gzip, libav, libiconv, openssl, pkgconfig, python, stdenv, which, zlib}: + +let version = "4.0.4"; + pkgName = "tvheadend"; in + +stdenv.mkDerivation rec { + name = "${pkgName}-${version}"; + + src = fetchurl { + url = "https://github.com/tvheadend/tvheadend/archive/v${version}.tar.gz"; + sha256 = "acc5c852bccb32d6a281f523e78a1cceb4d41987fe015aba3f66e1898b02c168"; + }; + + enableParallelBuilding = true; + + buildInputs = [ avahi dbus git gzip libav libiconv openssl pkgconfig python which zlib]; + + preConfigure = "patchShebangs ./configure"; + + meta = { + description = "TV steaming server"; + longDescription = '' + Tvheadend is a TV streaming server and recorder for Linux, FreeBSD and Android + supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, SAT>IP and HDHomeRun as input sources. + Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming.''; + homepage = "https://tvheadend.org"; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.simonvandel ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 09769abd259..54e9f416b64 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14775,6 +14775,8 @@ let tup = callPackage ../development/tools/build-managers/tup { }; + tvheadend = callPackage ../servers/tvheadend { }; + utf8proc = callPackage ../development/libraries/utf8proc { }; vbam = callPackage ../misc/emulators/vbam { -- cgit 1.4.1