From 6aa1b0acaf5f79cedb9b607c8fa79727559fc44e Mon Sep 17 00:00:00 2001
From: Emily <vcs@emily.moe>
Date: Mon, 12 Aug 2019 04:24:05 -0700
Subject: [PATCH] tinyprog: init at 1.0.24.dev99+ga77f828

---
 .../tools/misc/tinyprog/default.nix           | 42 +++++++++++++++++++
 pkgs/top-level/all-packages.nix               |  2 +
 2 files changed, 44 insertions(+)
 create mode 100644 pkgs/development/tools/misc/tinyprog/default.nix

diff --git a/pkgs/development/tools/misc/tinyprog/default.nix b/pkgs/development/tools/misc/tinyprog/default.nix
new file mode 100644
index 00000000000..10d067e2c61
--- /dev/null
+++ b/pkgs/development/tools/misc/tinyprog/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, python3Packages
+, fetchFromGitHub
+}:
+
+with python3Packages; buildPythonApplication rec {
+  pname = "tinyprog";
+  # `python setup.py --version` from repo checkout
+  version = "1.0.24.dev99+ga77f828";
+
+  src = fetchFromGitHub {
+    owner = "tinyfpga";
+    repo = "TinyFPGA-Bootloader";
+    rev = "a77f828d3d6ae077e323ec96fc3925efab5aa9d7";
+    sha256 = "0jg47q0n1qkdrzri2q6n9a7czicj0qk58asz0xhzkajx1k9z3g5q";
+  };
+
+  sourceRoot = "source/programmer";
+
+  propagatedBuildInputs = [
+    pyserial
+    jsonmerge
+    intelhex
+    tqdm
+    six
+    packaging
+    pyusb
+  ];
+
+  nativeBuildInputs = [ setuptools_scm ];
+
+  preBuild = ''
+    export SETUPTOOLS_SCM_PRETEND_VERSION="${version}"
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/tinyfpga/TinyFPGA-Bootloader/tree/master/programmer;
+    description = "Programmer for FPGA boards using the TinyFPGA USB Bootloader";
+    maintainers = with maintainers; [ emily ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 2f5a3bfc97e..308931dc83f 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6386,6 +6386,8 @@ in
 
   tinyemu = callPackage ../applications/virtualization/tinyemu { };
 
+  tinyprog = callPackage ../development/tools/misc/tinyprog { };
+
   tinyproxy = callPackage ../tools/networking/tinyproxy {};
 
   tio = callPackage ../tools/misc/tio { };