Merge pull request #325089 from feathecutie/inko

inko: init at 0.15.0 & ivm: init at 0.5.0

authored by Julien Malka and committed by GitHub fa4b81d8 6017bb20

+161
+68
pkgs/by-name/in/inko/package.nix
··· 1 + { lib 2 + , rustPlatform 3 + , fetchFromGitHub 4 + , llvm_16 5 + , libffi 6 + , libz 7 + , libxml2 8 + , ncurses 9 + , stdenv 10 + , makeWrapper 11 + , callPackage 12 + }: 13 + 14 + rustPlatform.buildRustPackage rec { 15 + pname = "inko"; 16 + version = "0.15.0"; 17 + 18 + src = fetchFromGitHub { 19 + owner = "inko-lang"; 20 + repo = "inko"; 21 + rev = "v${version}"; 22 + hash = "sha256-Iojv8pTyILYpLFnoTlgUGmlfWWH0DgsGBRxzd3oRNwA="; 23 + }; 24 + 25 + cargoHash = "sha256-PaZD7wwcami6EWvOHLislNkwQhCZItN9XZkPSExwo0U="; 26 + 27 + buildInputs = [ 28 + libffi 29 + libz 30 + libxml2 31 + ncurses 32 + stdenv.cc.cc.lib 33 + ]; 34 + 35 + nativeBuildInputs = [ 36 + llvm_16 37 + makeWrapper 38 + ]; 39 + 40 + env = { 41 + INKO_STD = "${placeholder "out"}/lib"; 42 + INKO_RT = "${placeholder "out"}/lib/runtime"; 43 + }; 44 + 45 + postFixup = '' 46 + wrapProgram $out/bin/inko \ 47 + --prefix PATH : ${lib.makeBinPath [ stdenv.cc ]} 48 + ''; 49 + 50 + postInstall = '' 51 + mkdir -p $out/lib/runtime 52 + mv $out/lib/*.a $out/lib/runtime/ 53 + cp -r std/src/* $out/lib/ 54 + ''; 55 + 56 + passthru.tests = { 57 + simple = callPackage ./test.nix { }; 58 + }; 59 + 60 + meta = { 61 + description = "Language for building concurrent software with confidence"; 62 + homepage = "https://inko-lang.org/"; 63 + license = lib.licenses.mpl20; 64 + maintainers = [ lib.maintainers.feathecutie ]; 65 + platforms = lib.platforms.unix; 66 + mainProgram = "inko"; 67 + }; 68 + }
+39
pkgs/by-name/in/inko/test.nix
··· 1 + { inko 2 + , writeText 3 + , runCommand 4 + , ... 5 + }: 6 + 7 + let 8 + source = writeText "hello.inko" /* inko */ '' 9 + import std.process (sleep) 10 + import std.stdio (STDOUT) 11 + import std.time (Duration) 12 + 13 + class async Printer { 14 + fn async print(message: String, channel: Channel[Nil]) { 15 + let _ = STDOUT.new.print(message) 16 + 17 + channel.send(nil) 18 + } 19 + } 20 + 21 + class async Main { 22 + fn async main { 23 + let channel = Channel.new(size: 2) 24 + 25 + Printer().print('Hello', channel) 26 + Printer().print('world', channel) 27 + 28 + channel.receive 29 + channel.receive 30 + } 31 + } 32 + ''; 33 + in 34 + 35 + runCommand "inko-test" { } '' 36 + ${inko}/bin/inko run ${source} > $out 37 + cat $out | grep -q Hello 38 + cat $out | grep -q world 39 + ''
+54
pkgs/by-name/iv/ivm/package.nix
··· 1 + { lib 2 + , rustPlatform 3 + , fetchFromGitHub 4 + , makeWrapper 5 + , cargo 6 + , llvm_16 7 + , stdenv 8 + , libffi 9 + , libz 10 + , libxml2 11 + , ncurses 12 + }: 13 + 14 + rustPlatform.buildRustPackage rec { 15 + pname = "ivm"; 16 + version = "0.5.0"; 17 + 18 + src = fetchFromGitHub { 19 + owner = "inko-lang"; 20 + repo = "ivm"; 21 + rev = "v${version}"; 22 + hash = "sha256-z0oo1JUZbX3iT8N9+14NcqUzalpARImcbtUiQYS4djA="; 23 + }; 24 + 25 + cargoHash = "sha256-EP3fS4lAGOaXJXAM22ZCn4+9Ah8TM1+wvNerKCKByo0="; 26 + 27 + buildInputs = [ 28 + stdenv.cc.cc.lib 29 + ]; 30 + 31 + nativeBuildInputs = [ 32 + makeWrapper 33 + ]; 34 + 35 + postFixup = '' 36 + wrapProgram $out/bin/ivm \ 37 + --prefix PATH : ${lib.makeBinPath [ cargo llvm_16.dev stdenv.cc ]} \ 38 + --prefix LIBRARY_PATH : ${lib.makeLibraryPath [ 39 + libffi 40 + libz 41 + libxml2 42 + ncurses 43 + ]} 44 + ''; 45 + 46 + meta = { 47 + description = "Cross-platform Inko version manager"; 48 + homepage = "https://github.com/inko-lang/ivm"; 49 + license = lib.licenses.mpl20; 50 + maintainers = [ lib.maintainers.feathecutie ]; 51 + platforms = lib.platforms.unix; 52 + mainProgram = "ivm"; 53 + }; 54 + }