diff options
Diffstat (limited to 'pkgs/servers/slimserver/default.nix')
-rw-r--r-- | pkgs/servers/slimserver/default.nix | 112 |
1 files changed, 107 insertions, 5 deletions
diff --git a/pkgs/servers/slimserver/default.nix b/pkgs/servers/slimserver/default.nix index f561eec0bac..08d9dbe97e6 100644 --- a/pkgs/servers/slimserver/default.nix +++ b/pkgs/servers/slimserver/default.nix @@ -5,13 +5,18 @@ , lib , makeWrapper , monkeysAudio -, perlPackages +, nixosTests +, perl538Packages , sox , stdenv , wavpack , zlib +, enableUnfreeFirmware ? false }: +let + perlPackages = perl538Packages; +in perlPackages.buildPerlPackage rec { pname = "slimserver"; version = "8.3.1"; @@ -25,10 +30,99 @@ perlPackages.buildPerlPackage rec { nativeBuildInputs = [ makeWrapper ]; - buildInputs = [ perlPackages.CryptOpenSSLRSA perlPackages.IOSocketSSL ]; + buildInputs = with perlPackages; [ + AnyEvent + ArchiveZip + AsyncUtil + AudioScan + CarpClan + CGI + ClassAccessor + ClassAccessorChained + ClassC3 + # ClassC3Componentised # Error: DBIx::Class::Row::throw_exception(): DBIx::Class::Relationship::BelongsTo::belongs_to(): Can't infer join condition for track + ClassDataInheritable + ClassInspector + ClassISA + ClassMember + ClassSingleton + ClassVirtual + ClassXSAccessor + CompressRawZlib + CryptOpenSSLRSA + DataDump + DataPage + DataURIEncode + DBDSQLite + DBI + # DBIxClass # https://github.com/Logitech/slimserver/issues/138 + DigestSHA1 + EncodeDetect + EV + ExporterLite + FileBOM + FileCopyRecursive + FileNext + FileReadBackwards + FileSlurp + FileWhich + HTMLParser + HTTPCookies + HTTPDaemon + HTTPMessage + ImageScale + IOAIO + IOInterface + IOSocketSSL + IOString + JSONXS + JSONXSVersionOneAndTwo + # LogLog4perl # Internal error: Root Logger not initialized. + LWP + LWPProtocolHttps + MP3CutGapless + NetHTTP + NetHTTPSNB + PathClass + ProcBackground + # SQLAbstract # DBI Exception: DBD::SQLite::db prepare_cached failed: no such function: ARRAY + SQLAbstractLimit + SubName + TemplateToolkit + TextUnidecode + TieCacheLRU + TieCacheLRUExpires + TieRegexpHash + TimeDate + URI + URIFind + UUIDTiny + XMLParser + XMLSimple + YAMLLibYAML + ] + # ++ (lib.optional stdenv.isDarwin perlPackages.MacFSEvents) + ++ (lib.optional stdenv.isLinux perlPackages.LinuxInotify2); prePatch = '' + # remove vendored binaries rm -rf Bin + + # remove most vendored modules, keeping necessary ones + mkdir -p CPAN_used/Class/C3/ CPAN_used/SQL + rm -r CPAN/SQL/Abstract/Limit.pm + cp -rv CPAN/Class/C3/Componentised.pm CPAN_used/Class/C3/ + cp -rv CPAN/DBIx CPAN_used/ + cp -rv CPAN/Log CPAN_used/ + cp -rv CPAN/SQL/* CPAN_used/SQL/ + rm -r CPAN + mv CPAN_used CPAN + + ${lib.optionalString (!enableUnfreeFirmware) '' + # remove unfree firmware + rm -rf Firmware + ''} + touch Makefile.PL ''; @@ -38,18 +132,26 @@ perlPackages.buildPerlPackage rec { cp -r . $out wrapProgram $out/slimserver.pl \ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ zlib stdenv.cc.cc.lib ]}" \ - --prefix PATH : "${lib.makeBinPath [ lame flac faad2 sox monkeysAudio wavpack ]}" + --prefix PATH : "${lib.makeBinPath ([ lame flac faad2 sox wavpack ] ++ (lib.optional stdenv.isLinux monkeysAudio))}" + mkdir $out/bin + ln -s $out/slimserver.pl $out/bin/slimserver ''; outputs = [ "out" ]; + passthru.tests = { + inherit (nixosTests) slimserver; + }; + meta = with lib; { homepage = "https://github.com/Logitech/slimserver"; description = "Server for Logitech Squeezebox players. This server is also called Logitech Media Server"; - # the firmware is not under a free license! + # the firmware is not under a free license, but not included in the default package # https://github.com/Logitech/slimserver/blob/public/8.3/License.txt - license = licenses.unfree; + license = if enableUnfreeFirmware then licenses.unfree else licenses.gpl2Only; + mainProgram = "slimserver"; maintainers = with maintainers; [ adamcstephens jecaro ]; platforms = platforms.unix; + broken = stdenv.isDarwin; }; } |