1{
2 lib,
3 python312,
4 fetchFromGitHub,
5}:
6
7let
8 python = python312;
9 pythonPackages = python.pkgs;
10in
11pythonPackages.buildPythonApplication {
12 pname = "mtga-draft-17lands";
13 version = "0.4.15";
14
15 src = fetchFromGitHub {
16 owner = "unrealities";
17 repo = "MTGA_Draft_17Lands";
18 rev = "6f37b0208fcbf14b6b470084cb54ebaec272af55";
19 hash = "sha256-qP9AFuSCyW0Id6iIvPgnOihcbleoNfZgwiNFmAsiruQ=";
20 };
21
22 propagatedBuildInputs = with pythonPackages; [
23 numpy
24 pillow
25 pydantic
26 pynput
27 requests
28 ttkbootstrap
29 tkinter
30 numba
31 scipy
32 pytest
33 ];
34
35 format = "other";
36
37 installPhase = ''
38 runHook preInstall
39
40 dst=$out/lib/${python.libPrefix}/site-packages/mtga_draft_17lands
41 mkdir -p $dst
42 cp -r . $dst/
43
44 mkdir -p $out/bin
45 cat > $out/bin/mtga-draft-17lands <<EOF
46 #!${python.interpreter}
47 import sys, os
48
49 data_dir = os.path.join(
50 os.environ.get("XDG_DATA_HOME", os.path.expanduser("~/.local/share")),
51 "mtga-draft-17lands",
52 )
53 os.makedirs(data_dir, exist_ok=True)
54 os.chdir(data_dir)
55
56 sys.path.insert(0, "$dst")
57 import runpy
58 runpy.run_path("$dst/main.py", run_name="__main__")
59 EOF
60 chmod +x $out/bin/mtga-draft-17lands
61
62 runHook postInstall
63 '';
64
65 doCheck = false;
66
67 meta = with lib; {
68 description = "Magic: The Gathering Arena draft tool that uses 17Lands data";
69 homepage = "https://github.com/unrealities/MTGA_Draft_17Lands";
70 license = licenses.mit;
71 mainProgram = "mtga-draft-17lands";
72 platforms = platforms.linux;
73 };
74}