This commit is contained in:
itamar 2026-04-10 00:25:40 +02:00
commit ef7ff34b3e
Signed by: itamar
SSH key fingerprint: SHA256:Dv6UzB9hN8q8FUgMR/7X3DTFpE/vSB2m05+KNnxM4B0
4 changed files with 181 additions and 0 deletions

51
flake.nix Normal file
View file

@ -0,0 +1,51 @@
{
description = "idris2 brainfuck interpreter";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
brainfuck = pkgs.stdenv.mkDerivation {
pname = "brainfuck";
version = "0.1.0";
src = ./.;
nativeBuildInputs = [ pkgs.idris2 ];
buildPhase = ''
idris2 --build brainfuck.ipkg
'';
installPhase = ''
mkdir -p $out/bin
cp -r build/exec/brainfuck_app $out/bin/brainfuck_app
cp build/exec/brainfuck $out/bin/brainfuck
'';
meta = with pkgs.lib; {
description = "A Brainfuck interpreter in Idris2";
license = licenses.mit;
platforms = platforms.unix;
};
};
in {
packages.default = brainfuck;
packages.brainfuck = brainfuck;
apps.default = {
type = "app";
program = "${brainfuck}/bin/brainfuck";
};
devShells.default = pkgs.mkShell {
packages = [
pkgs.idris2
pkgs.rlwrap
pkgs.nodePackages.nodemon
];
shellHook = ''
echo "Idris2 brainfuck dev shell"
echo " Build : idris2 --build brainfuck.ipkg"
echo " Run : ./build/exec/brainfuck <file.bf>"
'';
};
}
);
}