Skip to content

Instantly share code, notes, and snippets.

@rummik
Last active December 30, 2025 14:04
Show Gist options
  • Select an option

  • Save rummik/6aac9ebde62a82d9ba9675566bfb5779 to your computer and use it in GitHub Desktop.

Select an option

Save rummik/6aac9ebde62a82d9ba9675566bfb5779 to your computer and use it in GitHub Desktop.
Picotron Nix package
{
lib,
stdenv,
requireFile,
makeDesktopItem,
makeWrapper,
copyDesktopItems,
autoPatchelfHook,
unzip,
xorg,
libGL,
SDL2,
alsa-lib,
udev,
curl,
}:
let
appName = "Picotron";
pname = "picotron";
version = "0.2.1e";
hashes = import ./picotron_hashes.nix;
fileName = archSuffix: "${pname}_${version}_${archSuffix}.zip";
platforms = rec {
x86_64-linux = rec {
name = fileName "amd64";
hash = if hashes ? ${name} then hashes.${name} else lib.fakeHash;
};
x86_64-windows = rec {
name = fileName "windows";
hash = if hashes ? ${name} then hashes.${name} else lib.fakeHash;
};
aarch64-darwin = x86_64-darwin;
x86_64-darwin = rec {
name = fileName "osx";
hash = if hashes ? ${name} then hashes.${name} else lib.fakeHash;
};
};
inherit (stdenv.hostPlatform) isLinux isDarwin isWindows;
in
stdenv.mkDerivation (finalAttrs: rec {
inherit pname version;
src = requireFile {
inherit (platforms.${stdenv.hostPlatform.system}) name hash;
url = meta.homepage;
};
desktopItems = [
(makeDesktopItem {
desktopName = appName;
categories = [ "Development" "Game" ];
comment = meta.description;
name = pname;
exec = pname;
icon = pname;
})
];
nativeBuildInputs =
[
unzip
]
++ lib.optionals isLinux [
makeWrapper
autoPatchelfHook
copyDesktopItems
];
# libcurl doesn't get picked up otherwise
appendRunpaths = lib.optionals isLinux (lib.makeLibraryPath [
curl
]);
autoPatchelfLibs = lib.makeLibraryPath [
SDL2
];
runtimeDependencies = lib.optionals isLinux [
xorg.libXrandr
libGL
SDL2
alsa-lib
udev
curl # required after 0.1.1f
# wget # required prior to 0.1.1f
];
installPhase = lib.optionalString isLinux /* sh */ ''
runHook preInstall
install -Dm444 ./lexaloffle-picotron.png $out/share/icons/picotron.png
install -Dm555 -t $out/share/picotron ./picotron ./picotron_dyn ./picotron.dat
install -Dm444 -t $out/share/picotron ./*.txt
mkdir -p $out/bin
ln -s $out/share/picotron/picotron $out/bin/picotron
runHook postInstall
'';
meta = {
description = "A fantasy workstation";
longDescription = ''
Picotron is a Fantasy Workstation: a self-contained creative
environment built for imaginary hardware. Create cute Lua apps that can
be run inside Picotron as windowed userland processes, shared as
cartridge files, or exported to stand-alone HTML apps.
'';
homepage = "https://www.lexaloffle.com/picotron.php";
license = lib.licenses.unfree;
platforms = lib.attrNames platforms;
maintainers = [];
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
broken = isDarwin || isWindows;
};
})
{
"picotron_0.1.0_amd64.zip" = "sha256-/MhcxUSOQFxv/+JB59bEOaRqTtgQAbxpW7dlqtof7dg=";
"picotron_0.1.0b_amd64.zip" = "sha256-5x1b6Jedavnw1ZlBMwRs48PCH8g3g2UI4tsDUf19zAU=";
"picotron_0.1.0c_amd64.zip" = "sha256-1HvNPiItGvJ6h6B4sIF0eZcw4FCnXxoybZ89eeb2rJc=";
"picotron_0.1.0d_amd64.zip" = "sha256-Wrx9FnhnqrJS5M7mTjD88NwLWvjuXNlLUlDLon+TZU8=";
"picotron_0.1.0e_amd64.zip" = "sha256-1Jzc81Liin6kkruLIDXYjXaEaU/WkkBH2uaUnLmsTso=";
"picotron_0.1.0f_amd64.zip" = "sha256-A36TuH4OYRPGqNz5vALfxB6t34QQg4M6fku57rMYR+M=";
"picotron_0.1.0g_amd64.zip" = "sha256-s83x09TlMem6w9ii/hmkOSEQNywXgTi1m48kG3s3T5k=";
"picotron_0.1.0h_amd64.zip" = "sha256-x3OWpffLCdOzZLqRobTpdFy/O3DAmTJjcOvASE1GcVI=";
"picotron_0.1.1_amd64.zip" = "sha256-HjC6gwOHApW3oq5dLTaQY4W/o65QgJ4kCWA7wMEQ5FU=";
"picotron_0.1.1b_amd64.zip" = "sha256-5akflBJzD08DYFxPiZNtxfAep87QqSPknPxquYdpGtg=";
"picotron_0.1.1c_amd64.zip" = "sha256-+N2YvKf/cNpJ7zeKA6OC5cTrCa3hXGUhhkoT+7+aRA0=";
"picotron_0.1.1d_amd64.zip" = "sha256-9Hl3m48s5NOvdBdqWDlRhnrpvCsy5JbAR0CWjvMxZ4U=";
"picotron_0.1.1e_amd64.zip" = "sha256-AR9xrM9ocO8z29HVQRzzvHt+9OZ192a2tFVw+ByaDo8=";
"picotron_0.1.1f_amd64.zip" = "sha256-GHhJQQ/p+/pH+5695d/V1CUQ2dTPFc3/qIudv5IGQOo=";
"picotron_0.2.0_amd64.zip" = "sha256-Lq/JYb7XwC2p1F2TPDGteO4+cpM9onM39TlBPueBsBw=";
"picotron_0.2.0b_amd64.zip" = "sha256-4/lpj6WM/ia2u8uRdNkFiLAe9Zq+HCDmll8MEviU7kc=";
"picotron_0.2.0c_amd64.zip" = "sha256-bWyeW74xwZx6AwXziG6ITGa4B5K/x4CWuHoH1HkqtKU=";
"picotron_0.2.0d_amd64.zip" = "sha256-sJmu+HrY+kI8jlytex0HLE+I0ULzSg3a8gcTkH945ds=";
"picotron_0.2.0e_amd64.zip" = "sha256-rfhL3tBWF4SSDG4osg56jQjnPaSUnlD8aLCCkVq9aFA=";
"picotron_0.2.0f_amd64.zip" = "sha256-LLWd0Q1rOIovpmNVzZ7XflHgMq0qwxG2F1XdM4zkNZ0=";
"picotron_0.2.0g_amd64.zip" = "sha256-L0rHL9YB3GbccEL0lhpaSGX9aYH2I6dInrB6wFZepBA=";
"picotron_0.2.0h_amd64.zip" = "sha256-9OqWUg9csuqxkEpwaUCGFmo1RydfbsDYivwGHmMbkyw=";
"picotron_0.2.0h3_amd64.zip" = "sha256-TxGrLJJyVZZWS5Ox0xq0swtafT2FrZsnrpGWAv68ttk=";
"picotron_0.2.1_amd64.zip" = "sha256-tEgcgQygqov4tuiVjVqowXmtIc78siVlVVmDQGUFTg4=";
"picotron_0.2.1b_amd64.zip" = "sha256-fSg7KN+AX9v2u7/tOTvE29evF0dKPzS5aluHBlF0dpU=";
"picotron_0.2.1c_amd64.zip" = "sha256-z+0wFolB49OpnZuFXN4eVs2qmN+43LUnJhuJYAvRD64=";
"picotron_0.2.1d_amd64.zip" = "sha256-JmRNYVG6aWTS7c10gOVY0OBK26ybti5d8tgnadAO+oY=";
"picotron_0.2.1e_amd64.zip" = "sha256-JpDGwVWOLvvSwJK6LMGCsxp60hjcWMcHb2aQdeenqpk=";
"picotron_0.1.0_osx.zip" = "sha256-pyMeGpb0GzPe+DDu7oO6z+/+unh8VMC76RgMvfxy23k=";
"picotron_0.1.0b_osx.zip" = "sha256-OgT222jjfPh3NuqXIzDhR3e6ef7flUgcJo0AZqXXnY8=";
"picotron_0.1.0c_osx.zip" = "sha256-CKGpYC43D5PhuKUkBAlWqLcBLwcFVWovwA39gg0xSz0=";
"picotron_0.1.0d_osx.zip" = "sha256-HT2ZaZDx1qlpV8jDlgavOfL1GYCt8MjtukNJv1y/NLo=";
"picotron_0.1.0e_osx.zip" = "sha256-53H0zys3KofAEBnBAK6h/ZrZBsYf8dRdOeeI+V55C60=";
"picotron_0.1.0f_osx.zip" = "sha256-rkACpDMdYpg2EBuU5TVgFxMEB2PnvdvbtRSWBDD+0u4=";
"picotron_0.1.0g_osx.zip" = "sha256-GTbzR1nCNms+PBZdTWHoWJVrYqAbwMIMEg3eUiu3RRs=";
"picotron_0.1.0h_osx.zip" = "sha256-uzqtQkTW9vvsNtr5V+i/ME0JLUErO+SfqMUBpuLs5Q0=";
"picotron_0.1.1_osx.zip" = "sha256-imD21wX3GSROAvUUVMSsOrXqq3pmliafyFJRc4yK3aI=";
"picotron_0.1.1b_osx.zip" = "sha256-YbX1AnHVAJ0+MmbVqZ3S2FcjgnUFByQ4Y2pUX6eM26o=";
"picotron_0.1.1c_osx.zip" = "sha256-yuoWhnkbR8BPe97FI5kRDA4nXKnQ08r96IOtZybYBlk=";
"picotron_0.1.1d_osx.zip" = "sha256-wzA9eWTGeZzI7vH2zirlpOsbQAPaT1GLvbptcJ1fDOQ=";
"picotron_0.1.1e_osx.zip" = "sha256-iLNLAuWQTrJoDqR4TtlI1ab5MAAidyHrmcGtG2AyyHo=";
"picotron_0.1.1f_osx.zip" = "sha256-td/bOKjrCXV+JLcavegmLe6xf+bnJB1JauejgeTM4KE=";
"picotron_0.2.0_osx.zip" = "sha256-GpmO+Dj17rWzjg6FfnzQ6VVATO6zOHNT4EFVFavaNG0=";
"picotron_0.2.0b_osx.zip" = "sha256-yMVbORN7sRlCwSXi4jQKzcPU98AR8PhxWlaLUiHBRrI=";
"picotron_0.2.0c_osx.zip" = "sha256-3+xntRZVWmAjdWG/4E1R+HjX3jmDvOnG0bm5yy9LJG4=";
"picotron_0.2.0d_osx.zip" = "sha256-wDItp3IDHlQuJRDOMu8EF/IknuWmONvlXmERQbM6z1c=";
"picotron_0.2.0e_osx.zip" = "sha256-NYcxPKCvrKS0FYGmYdl49j6GdAONlzLe1BWiWBo23q8=";
"picotron_0.2.0f_osx.zip" = "sha256-UO6FStHELNEYh0TVXNu9EN1S3AZ7xsHexWPVt5r6UFo=";
"picotron_0.2.0g_osx.zip" = "sha256-F73Qv6srW6aIsU/p6L8J+KF2XZnBwlQEF0QMD/QArpw=";
"picotron_0.2.0h_osx.zip" = "sha256-JuVW+snIJ+13VjkDGA/gNYcSZKz6VNtGDCZwvgT6p0o=";
"picotron_0.2.0h3_osx.zip" = "sha256-cxzrKe9zv4rjI6M6XrH4/2YkKK+4kjgXFUBDpT7WTlc=";
"picotron_0.2.1_osx.zip" = "sha256-F1ACaXnMdueOYshMU3rR79hNxQpVJa9w5orhJk6K3Q4=";
"picotron_0.2.1b_osx.zip" = "sha256-PZMJOfI+MTKfu0suzvW1Tsn69FYVLuSTwzdbCd1RR6o=";
"picotron_0.2.1c_osx.zip" = "sha256-f5tPNHaCfp10DOnc3NsA0kw1/8AuhBmjDjvyx4ysoCQ=";
"picotron_0.2.1d_osx.zip" = "sha256-GTD3SbMicns6i5Ikv8qgNonpu4yg1Kypj4LdcLscqUs=";
"picotron_0.2.1e_osx.zip" = "sha256-mS3uQl7J0Jh8QvNQBRLPp6a6jGKgVhJXjSoPnTt5yFQ=";
"picotron_0.1.0_windows.zip" = "sha256-PyuneEQIMRhbskay87OnCjGtG+XC3SF6dFjiGQva1F8=";
"picotron_0.1.0b_windows.zip" = "sha256-ofry5ftHQCFT6tk7fVU8RKuxboy5RJa+2DQjXd+uvw0=";
"picotron_0.1.0c_windows.zip" = "sha256-bzhtz3X/2XUnNwPFXQSZw4B1ncpqDDZZ8CgOSy+Uy+k=";
"picotron_0.1.0d_windows.zip" = "sha256-orQtVIka5j7WfQ4Dpsg8n8v1SF4tpanXlNUOZnKh5uk=";
"picotron_0.1.0e_windows.zip" = "sha256-RcpeU/x8b1BjUiU//TIlq66yO5sxbSkmg75VTpvjZgI=";
"picotron_0.1.0f_windows.zip" = "sha256-RnRR3uWoK6FLrl9S/OBEH1/n1jp/PD/Mm8RzIHgmmK8=";
"picotron_0.1.0g_windows.zip" = "sha256-5OE2C1MJBaCnkgxnGPNB4k/AC4gx4d9r9/FfSM62Qi0=";
"picotron_0.1.0h_windows.zip" = "sha256-NZ5C5A74WDSsQDFECIw9uwx5E3a8IgSFjgM3egJkdaA=";
"picotron_0.1.1_windows.zip" = "sha256-uoycXolFkw02L0xYhh8SZ3IVMs7fJOpdJEsXfIynQYY=";
"picotron_0.1.1b_windows.zip" = "sha256-NU54idPNE1VLv8CIOnIr5b7N+aj0sLa8FU98jRRQVNA=";
"picotron_0.1.1c_windows.zip" = "sha256-HqlAhFe7nPmVzasmfqAWmLoo91vpZwM+VMHS841s6OU=";
"picotron_0.1.1d_windows.zip" = "sha256-Rp1F6iaM9f1hY3szY93QH3U1mWYEmJFs6wgodDi+7Tg=";
"picotron_0.1.1e_windows.zip" = "sha256-5gmTZET9tZ+gk/Nl6fQtcDXN6Uqu2WGU374ywXW9qXA=";
"picotron_0.1.1f_windows.zip" = "sha256-sDM+s2SYI0dyczf8VXLV8dBXYqGtQYn7n4zus1FCgxc=";
"picotron_0.2.0_windows.zip" = "sha256-s/lEi+6//wZ88yt2dE1GkUI11G74iokuIuFBITQDMN0=";
"picotron_0.2.0b_windows.zip" = "sha256-LG62PTY6nw2W5rzSZLqXv8LdB0nXqqobTPzuyFiZLSQ=";
"picotron_0.2.0c_windows.zip" = "sha256-b/xb403CxUr8Sixcxmmzmnxd5n/Mq6Wbt0pfn7z009c=";
"picotron_0.2.0d_windows.zip" = "sha256-gFXE2y/ter9YJ7Vruafea3z/FCUiMMqP75iw5TWYgTg=";
"picotron_0.2.0e_windows.zip" = "sha256-ZQfXetN2W7yVag+wbuTW9pR8XH6xDVFTIF1zK4u2Yx8=";
"picotron_0.2.0f_windows.zip" = "sha256-3p8xCp5qSga5MirhtSH9yJD3AYV4jKD7OAdXzh19FJI=";
"picotron_0.2.0g_windows.zip" = "sha256-fCBzIqc42siu7p83x8xKfhX+SGe1X0CSmSiqlWxcpz0=";
"picotron_0.2.0h_windows.zip" = "sha256-6f8cmewQlghm3kVAeZ9J3TnYNZXX3VCvCOi7cxqo6VM=";
"picotron_0.2.0h3_windows.zip" = "sha256-fnfDglMXFrL93vNECTpxxrcfiEleU42zjub7AB9qa4k=";
"picotron_0.2.1_windows.zip" = "sha256-7+GKMk/HlW3Arub9YflwAoDDn3NhdXxt+DCEMd7TQ6s=";
"picotron_0.2.1b_windows.zip" = "sha256-m4ya/BUKG7lGy40yNkceV2iA2+Mwhzr8xwE/FOh8lwo=";
"picotron_0.2.1c_windows.zip" = "sha256-5olfj+F98Eya/oSk9H5lLa4EKK2udRqaxCjqwANIlgs=";
"picotron_0.2.1d_windows.zip" = "sha256-8Nl/bDsTIaTX97wULbcdpkj4HjpE2cdcmnW+R4XU9Ek=";
"picotron_0.2.1e_windows.zip" = "sha256-4IlLX5j9pig1IHUZTWOfN/L6ot4fUpil3N3+8GVvaMY=";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment