nixos-option: rewrite as a nix script, 2nd try (#369151)
[NixPkgs.git] / pkgs / by-name / ki / kid3 / package.nix
blobca7416a60167aa6ffbe76dd17bca3583fbb84193
2   lib,
3   chromaprint,
4   cmake,
5   docbook_xml_dtd_45,
6   docbook_xsl,
7   fetchurl,
8   ffmpeg,
9   flac,
10   id3lib,
11   kdePackages,
12   libogg,
13   libvorbis,
14   libxslt,
15   mp4v2,
16   pkg-config,
17   python3,
18   qt6,
19   readline,
20   stdenv,
21   taglib,
22   zlib,
23   # Boolean flags
24   withCLI ? true,
25   withKDE ? true,
26   withQt ? false,
29 let
30   inherit (qt6)
31     qtbase
32     qtdeclarative
33     qtmultimedia
34     qttools
35     wrapQtAppsHook
36     ;
38   apps = lib.concatStringsSep ";" (
39     lib.optionals withCLI [ "CLI" ] ++ lib.optionals withKDE [ "KDE" ] ++ lib.optionals withQt [ "Qt" ]
40   );
43 stdenv.mkDerivation (finalAttrs: {
44   pname = "kid3";
45   version = "3.9.6";
47   src = fetchurl {
48     url = "mirror://kde/stable/kid3/${finalAttrs.version}/kid3-${finalAttrs.version}.tar.xz";
49     hash = "sha256-zyf/zENpyZQNp7/BL9EN+9pSa4GH5bYmYqvoBp/CbCc=";
50   };
52   nativeBuildInputs = [
53     cmake
54     docbook_xml_dtd_45
55     docbook_xsl
56     pkg-config
57     python3
58     qttools
59     wrapQtAppsHook
60   ];
62   buildInputs =
63     [
64       chromaprint
65       ffmpeg
66       flac
67       id3lib
68       libogg
69       libvorbis
70       libxslt
71       mp4v2
72       qtbase
73       qtdeclarative
74       qtmultimedia
75       readline
76       taglib
77       zlib
78     ]
79     ++ lib.optionals withKDE (
80       with kdePackages;
81       [
82         kconfig
83         kconfigwidgets
84         kcoreaddons
85         kio
86         kxmlgui
87         phonon
88       ]
89     );
91   cmakeFlags = [ (lib.cmakeFeature "WITH_APPS" apps) ];
93   env = {
94     DOCBOOKDIR = "${docbook_xsl}/xml/xsl/docbook/";
95     LANG = "C.UTF-8";
96     NIX_LDFLAGS = "-lm -lpthread";
97   };
99   meta = {
100     homepage = "https://kid3.kde.org/";
101     description = "Simple and powerful audio tag editor";
102     longDescription = ''
103       If you want to easily tag multiple MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC,
104       MP2, Opus, Speex, TrueAudio, WavPack, WMA, WAV and AIFF files (e.g. full
105       albums) without typing the same information again and again and have
106       control over both ID3v1 and ID3v2 tags, then Kid3 is the program you are
107       looking for.
109       With Kid3 you can:
110       - Edit ID3v1.1 tags;
111       - Edit all ID3v2.3 and ID3v2.4 frames;
112       - Convert between ID3v1.1, ID3v2.3 and ID3v2.4 tags
113       - Edit tags in MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Opus, Speex,
114         TrueAudio, WavPack, WMA, WAV, AIFF files and tracker modules (MOD, S3M,
115         IT, XM);
116       - Edit tags of multiple files, e.g. the artist, album, year and genre of
117         all files of an album typically have the same values and can be set
118         together;
119       - Generate tags from filenames;
120       - Generate tags from the contents of tag fields;
121       - Generate filenames from tags;
122       - Rename and create directories from tags;
123       - Generate playlist files;
124       - Automatically convert upper and lower case and replace strings;
125       - Import from gnudb.org, TrackType.org, MusicBrainz, Discogs, Amazon and
126         other sources of album data;
127       - Export tags as CSV, HTML, playlists, Kover XML and in other formats;
128       - Edit synchronized lyrics and event timing codes, import and export
129         LRC files.
130     '';
131     license = lib.licenses.lgpl2Plus;
132     mainProgram =
133       if withQt then
134         "kid3-qt"
135       else if withKDE then
136         "kid3"
137       else
138         "kid3-cli";
139     maintainers = with lib.maintainers; [ ];
140     platforms = lib.platforms.linux;
141   };