| 1 | { |
| 2 | lib, |
| 3 | python312, |
| 4 | fetchFromGitHub, |
| 5 | }: |
| 6 | |
| 7 | let |
| 8 | python = python312; |
| 9 | pythonPackages = python.pkgs; |
| 10 | in |
| 11 | pythonPackages.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 | } |