about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/science/electronics/simulide/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/science/electronics/simulide/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/science/electronics/simulide/default.nix131
1 files changed, 131 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/science/electronics/simulide/default.nix b/nixpkgs/pkgs/applications/science/electronics/simulide/default.nix
new file mode 100644
index 000000000000..7a95b68f11f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/electronics/simulide/default.nix
@@ -0,0 +1,131 @@
+{ lib
+, fetchbzr
+, mkDerivation
+, qmake
+, qtserialport
+, qtmultimedia
+, qttools
+, qtscript
+}:
+
+let
+  generic =
+    { version
+    , release
+    , branch
+    , rev
+    , sha256
+    , extraPostPatch ? ""
+    , extraBuildInputs ? [ ]
+    , iconPath ? "resources/icons/simulide.png"
+    , installFiles ? ''
+        cp -r data examples $out/share/simulide
+        cp simulide $out/bin/simulide
+      ''
+    }:
+    mkDerivation {
+      pname = "simulide";
+      version = "${version}-${release}";
+
+      src = fetchbzr {
+        url = "https://code.launchpad.net/~arcachofo/simulide/${branch}";
+        inherit rev sha256;
+      };
+
+      postPatch = ''
+        sed -i resources/simulide.desktop \
+          -e "s|^Exec=.*$|Exec=simulide|" \
+          -e "s|^Icon=.*$|Icon=simulide|"
+
+        # Note: older versions don't have REV_NO
+        sed -i SimulIDE.pro \
+          -e "s|^VERSION = .*$|VERSION = ${version}|" \
+          -e "s|^RELEASE = .*$|RELEASE = -${release}|" \
+          -e "s|^REV_NO = .*$|REV_NO = ${rev}|" \
+          -e "s|^BUILD_DATE = .*$|BUILD_DATE = ??-??-??|"
+
+        ${extraPostPatch}
+      '';
+
+      preConfigure = ''
+        cd build_XX
+      '';
+
+      nativeBuildInputs = [
+        qmake
+      ];
+
+      buildInputs = [
+        qtserialport
+        qtmultimedia
+        qttools
+      ] ++ extraBuildInputs;
+
+      installPhase = ''
+        runHook preInstall
+
+        install -Dm644 ../resources/simulide.desktop $out/share/applications/simulide.desktop
+        install -Dm644 ../${iconPath} $out/share/icons/hicolor/256x256/apps/simulide.png
+
+        mkdir -p $out/share/simulide $out/bin
+        pushd executables/SimulIDE_*
+        ${installFiles}
+        popd
+
+        runHook postInstall
+      '';
+
+      meta = {
+        description = "A simple real time electronic circuit simulator";
+        longDescription = ''
+          SimulIDE is a simple real time electronic circuit simulator, intended for hobbyist or students
+          to learn and experiment with analog and digital electronic circuits and microcontrollers.
+          It supports PIC, AVR, Arduino and other MCUs and MPUs.
+        '';
+        homepage = "https://simulide.com/";
+        license = lib.licenses.gpl3Only;
+        mainProgram = "simulide";
+        maintainers = with lib.maintainers; [ carloscraveiro tomasajt ];
+        platforms = [ "x86_64-linux" ];
+      };
+    };
+in
+{
+  simulide_0_4_15 = generic {
+    version = "0.4.15";
+    release = "SR10";
+    branch = "simulide_0.4.14"; # the branch name does not mach the version for some reason
+    rev = "291";
+    sha256 = "sha256-BBoZr/S2pif0Jft5wrem8y00dXl08jq3kFiIUtOr3LM=";
+    extraPostPatch = ''
+      # GCC 13 needs the <cstdint> header explicitly included
+      sed -i src/gpsim/value.h -e '1i #include <cstdint>'
+      sed -i src/gpsim/modules/watchdog.h -e '1i #include <cstdint>'
+    '';
+    extraBuildInputs = [ qtscript ];
+    iconPath = "resources/icons/hicolor/256x256/simulide.png"; # upstream had a messed up icon path in this release
+    installFiles = ''
+      cp -r share/simulide/* $out/share/simulide
+      cp bin/simulide $out/bin/simulide
+    '';
+  };
+
+  simulide_1_0_0 = generic {
+    version = "1.0.0";
+    release = "SR2";
+    branch = "1.0.0";
+    rev = "1449";
+    sha256 = "sha256-rJWZvnjVzaKXU2ktbde1w8LSNvu0jWkDIk4dq2l7t5g=";
+    extraBuildInputs = [ qtscript ];
+  };
+
+  simulide_1_1_0 = generic {
+    version = "1.1.0";
+    release = "RC1";
+    # The 1.1.0 branch didn't get merged correctly from trunk
+    # See: https://simulide.com/p/forum/topic/new-files-missing-from-1-1-0-rc1-after-merge
+    branch = "trunk";
+    rev = "2162";
+    sha256 = "sha256-bgRAqt7h2LtU2Ze6Jiz8APhyPcV15v4ofxIilIeZV9E=";
+  };
+}