about summary refs log tree commit diff
path: root/pkgs/by-name/cb
diff options
context:
space:
mode:
authorChristina Sørensen <christina@cafkafk.com>2023-10-15 07:06:06 +0200
committerChristina Sørensen <christina@cafkafk.com>2023-10-16 06:17:35 +0200
commit721c07b7508237452aff16065995e5ae69d63e38 (patch)
tree2fe0e758f0f996a4c01795b3435843483f2ac984 /pkgs/by-name/cb
parent2b52388d1902fef2618ae0157c78660380d48e29 (diff)
downloadnixlib-721c07b7508237452aff16065995e5ae69d63e38.tar
nixlib-721c07b7508237452aff16065995e5ae69d63e38.tar.gz
nixlib-721c07b7508237452aff16065995e5ae69d63e38.tar.bz2
nixlib-721c07b7508237452aff16065995e5ae69d63e38.tar.lz
nixlib-721c07b7508237452aff16065995e5ae69d63e38.tar.xz
nixlib-721c07b7508237452aff16065995e5ae69d63e38.tar.zst
nixlib-721c07b7508237452aff16065995e5ae69d63e38.zip
cbmbasic: init at unstable-2022-12-18
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Diffstat (limited to 'pkgs/by-name/cb')
-rw-r--r--pkgs/by-name/cb/cbmbasic/package.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/pkgs/by-name/cb/cbmbasic/package.nix b/pkgs/by-name/cb/cbmbasic/package.nix
new file mode 100644
index 000000000000..a7d6d841012f
--- /dev/null
+++ b/pkgs/by-name/cb/cbmbasic/package.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, runCommand
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "cbmbasic";
+  version = "unstable-2022-12-18";
+
+  src = fetchFromGitHub {
+    owner = "mist64";
+    repo = "cbmbasic";
+    rev = "352a313313dd0a15a47288c8f8031b54ac8c92a2";
+    hash = "sha256-aA/ivRap+aDd2wi6KWXam9eP/21lOn6OWTeZ4i/S9Bs=";
+  };
+
+  installPhase = ''
+  runHook preInstall
+
+  mkdir -p $out/bin/
+  mv cbmbasic $out/bin/
+
+  runHook postInstall
+  '';
+
+  # NOTE: cbmbasic uses microsoft style linebreaks `\r\n`, and testing has to
+  # accommodate that, else you get very cryptic diffs
+  passthru = {
+    tests.run = runCommand "cbmbasic-test-run" {
+      nativeBuildInputs = [finalAttrs.finalPackage];
+    } ''
+      echo '#!${lib.getExe finalAttrs.finalPackage}' > helloI.bas;
+      echo 'PRINT"Hello, World!"' >> helloI.bas;
+      chmod +x helloI.bas
+
+      diff -U3 --color=auto <(./helloI.bas) <(echo -e "Hello, World!\r");
+
+      echo '#!/usr/bin/env cbmbasic' > hello.bas;
+      echo 'PRINT"Hello, World!"' >> hello.bas;
+      chmod +x hello.bas
+
+      diff -U3 --color=auto <(cbmbasic ./hello.bas) <(echo -e "Hello, World!\r");
+
+      touch $out;
+    '';
+  };
+
+  meta = with lib; {
+    description = "Portable version of Commodore's version of Microsoft BASIC 6502 as found on the Commodore 64";
+    longDescription = ''
+      "Commodore BASIC" (cbmbasic) is a 100% compatible version of Commodore's
+      version of Microsoft BASIC 6502 as found on the Commodore 64. You can use
+      it in interactive mode or pass a BASIC file as a command line parameter.
+
+      This source does not emulate 6502 code; all code is completely native. On
+      a 1 GHz CPU you get about 1000x speed compared to a 1 MHz 6502.
+    '';
+    homepage =  "https://github.com/mist64/cbmbasic";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.cafkafk ];
+    mainProgram = "cbmbasic";
+    platforms = platforms.all;
+  };
+})