diff options
Diffstat (limited to 'pkgs/by-name/od/odin/package.nix')
-rw-r--r-- | pkgs/by-name/od/odin/package.nix | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/pkgs/by-name/od/odin/package.nix b/pkgs/by-name/od/odin/package.nix new file mode 100644 index 0000000000000..305b9d329d02f --- /dev/null +++ b/pkgs/by-name/od/odin/package.nix @@ -0,0 +1,96 @@ +{ + fetchFromGitHub, + lib, + libiconv, + llvmPackages, + MacOSX-SDK, + makeBinaryWrapper, + nix-update-script, + Security, + which, +}: + +let + inherit (llvmPackages) stdenv; +in +stdenv.mkDerivation { + pname = "odin"; + version = "0-unstable-2024-08-05"; + + src = fetchFromGitHub { + owner = "odin-lang"; + repo = "Odin"; + rev = "a1c3c38f0453dcf94ba13d572fa392cb5331a878"; + hash = "sha256-LYUy/llW3BFnRx6sdTF/8QdvK/v+5/ShKJR+ZXocC+4="; + }; + + postPatch = + lib.optionalString stdenv.isDarwin '' + substituteInPlace src/linker.cpp \ + --replace-fail '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk' ${MacOSX-SDK} + '' + + '' + substituteInPlace build_odin.sh \ + --replace-fail '-framework System' '-lSystem' + patchShebangs build_odin.sh + ''; + + LLVM_CONFIG = "${llvmPackages.llvm.dev}/bin/llvm-config"; + + dontConfigure = true; + + buildFlags = [ "release" ]; + + nativeBuildInputs = [ + makeBinaryWrapper + which + ]; + + buildInputs = lib.optionals stdenv.isDarwin [ + libiconv + Security + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp odin $out/bin/odin + + mkdir -p $out/share + cp -r {base,core,vendor,shared} $out/share + + wrapProgram $out/bin/odin \ + --prefix PATH : ${ + lib.makeBinPath ( + with llvmPackages; + [ + bintools + llvm + clang + lld + ] + ) + } \ + --set-default ODIN_ROOT $out/share + + runHook postInstall + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Fast, concise, readable, pragmatic and open sourced programming language"; + downloadPage = "https://github.com/odin-lang/Odin"; + homepage = "https://odin-lang.org/"; + license = lib.licenses.bsd3; + mainProgram = "odin"; + maintainers = with lib.maintainers; [ + astavie + luc65r + znaniye + ]; + platforms = lib.platforms.unix; + broken = stdenv.hostPlatform.isMusl; + }; +} |