{ 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 " ''; }; } ); }