nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 ply,
6 roman,
7 uqbar,
8 pythonAtLeast,
9 pytestCheckHook,
10 lilypond,
11 typing-extensions,
12}:
13
14buildPythonPackage rec {
15 pname = "abjad";
16 version = "3.31";
17 format = "setuptools";
18
19 # see issue upstream indicating Python 3.12 support will come
20 # with version 3.20: https://github.com/Abjad/abjad/issues/1574
21 disabled = pythonAtLeast "3.12";
22
23 src = fetchPypi {
24 inherit pname version;
25 hash = "sha256-JdbQL30q/EVLEgES0JDn09f+7aWxPZi4vDX1N50mmsg=";
26 };
27
28 propagatedBuildInputs = [
29 ply
30 roman
31 uqbar
32 typing-extensions
33 ];
34
35 buildInputs = [ lilypond ];
36
37 nativeCheckInputs = [ pytestCheckHook ];
38
39 postPatch = ''
40 substituteInPlace abjad/io.py \
41 --replace-fail 'lilypond_path = self.get_lilypond_path()' \
42 'lilypond_path = "${lilypond}/bin/lilypond"'
43 # general invocations of binary for IO purposes
44
45 substituteInPlace abjad/configuration.py \
46 --replace-fail '["lilypond"' '["${lilypond}/bin/lilypond"'
47 # get_lilypond_version_string
48 '';
49
50 pythonImportsCheck = [ "abjad" ];
51
52 meta = {
53 description = "GNU LilyPond wrapper for Python";
54 longDescription = ''
55 Abjad helps composers build up complex pieces of music notation in
56 iterative and incremental ways. Use Abjad to create a symbolic
57 representation of all the notes, rests, chords, tuplets, beams and slurs
58 in any score. Because Abjad extends the Python programming language, you
59 can use Abjad to make systematic changes to music as you work. Because
60 Abjad wraps the LilyPond music notation package, you can use Abjad to
61 control the typographic detail of symbols on the page.
62 '';
63 license = lib.licenses.mit;
64 homepage = "https://abjad.github.io/";
65 changelog = "https://abjad.github.io/appendices/changes.html";
66 maintainers = [ lib.maintainers.davisrichard437 ];
67 };
68}