Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib
2, fetchFromGitHub
3, makeWrapper
4, perlPackages
5, flac
6, faad2
7, sox
8, lame
9, monkeysAudio
10, wavpack
11}:
12
13perlPackages.buildPerlPackage rec {
14 pname = "slimserver";
15 version = "7.9.2";
16
17 src = fetchFromGitHub {
18 owner = "Logitech";
19 repo = "slimserver";
20 rev = version;
21 hash = "sha256-P4CSu/ff6i48uWV5gXsJgayZ1S1s0RAqa5O5y3Y0g9Y=";
22 };
23
24 nativeBuildInputs = [ makeWrapper ];
25 buildInputs = [
26 perlPackages.perl
27 perlPackages.AnyEvent
28 perlPackages.ArchiveZip
29 perlPackages.AudioScan
30 perlPackages.CarpClan
31 perlPackages.CGI
32 perlPackages.ClassXSAccessor
33 perlPackages.DataDump
34 perlPackages.DataURIEncode
35 perlPackages.DBDSQLite
36 perlPackages.DBI
37 perlPackages.DBIxClass
38 perlPackages.DigestSHA1
39 perlPackages.EV
40 perlPackages.ExporterLite
41 perlPackages.FileBOM
42 perlPackages.FileCopyRecursive
43 perlPackages.FileNext
44 perlPackages.FileReadBackwards
45 perlPackages.FileSlurp
46 perlPackages.FileWhich
47 perlPackages.HTMLParser
48 perlPackages.HTTPCookies
49 perlPackages.HTTPDaemon
50 perlPackages.HTTPMessage
51 perlPackages.ImageScale
52 perlPackages.IOSocketSSL
53 perlPackages.IOString
54 perlPackages.JSONXSVersionOneAndTwo
55 perlPackages.LogLog4perl
56 perlPackages.LWP
57 perlPackages.NetHTTP
58 perlPackages.NetHTTPSNB
59 perlPackages.ProcBackground
60 perlPackages.SubName
61 perlPackages.TemplateToolkit
62 perlPackages.TextUnidecode
63 perlPackages.TieCacheLRU
64 perlPackages.TieCacheLRUExpires
65 perlPackages.TieRegexpHash
66 perlPackages.TimeDate
67 perlPackages.URI
68 perlPackages.URIFind
69 perlPackages.UUIDTiny
70 perlPackages.XMLParser
71 perlPackages.XMLSimple
72 perlPackages.YAMLLibYAML
73 ];
74
75
76 prePatch = ''
77 mkdir CPAN_used
78 # slimserver doesn't work with current DBIx/SQL versions, use bundled copies
79 mv CPAN/DBIx CPAN/SQL CPAN_used
80 rm -rf CPAN
81 rm -rf Bin
82 touch Makefile.PL
83
84 # relax audio scan version constraints
85 substituteInPlace lib/Audio/Scan.pm --replace "0.93" "1.01"
86 substituteInPlace modules.conf --replace "Audio::Scan 0.93 0.95" "Audio::Scan 0.93"
87 '';
88
89 preConfigurePhase = "";
90
91 buildPhase = ''
92 mv lib tmp
93 mkdir -p ${perlPackages.perl.libPrefix}
94 mv CPAN_used/* ${perlPackages.perl.libPrefix}
95 cp -rf tmp/* ${perlPackages.perl.libPrefix}
96 '';
97
98 doCheck = false;
99
100 installPhase = ''
101 cp -r . $out
102 wrapProgram $out/slimserver.pl \
103 --prefix PATH : "${lib.makeBinPath [ lame flac faad2 sox monkeysAudio wavpack ]}"
104 '';
105
106 outputs = [ "out" ];
107
108 meta = with lib; {
109 homepage = "https://github.com/Logitech/slimserver";
110 description = "Server for Logitech Squeezebox players. This server is also called Logitech Media Server";
111 # the firmware is not under a free license!
112 # https://github.com/Logitech/slimserver/blob/public/7.9/License.txt
113 license = licenses.unfree;
114 maintainers = [ ];
115 platforms = platforms.unix;
116 };
117}