diff options
Diffstat (limited to 'pkgs/by-name/oi/oils-for-unix/package.nix')
-rw-r--r-- | pkgs/by-name/oi/oils-for-unix/package.nix | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/pkgs/by-name/oi/oils-for-unix/package.nix b/pkgs/by-name/oi/oils-for-unix/package.nix new file mode 100644 index 0000000000000..f477d66d8a07c --- /dev/null +++ b/pkgs/by-name/oi/oils-for-unix/package.nix @@ -0,0 +1,71 @@ +{ stdenv, lib, fetchurl, symlinkJoin, withReadline ? true, readline }: + +let + readline-all = symlinkJoin { + name = "readline-all"; paths = [ readline readline.dev ]; + }; +in +stdenv.mkDerivation rec { + pname = "oils-for-unix"; + version = "0.21.0"; + + src = fetchurl { + url = "https://www.oilshell.org/download/oils-for-unix-${version}.tar.gz"; + hash = "sha256-g8uEK68J9BsCHEvJGDgsKUmsuR1MvChEC9A00Y2sZU4="; + }; + + postPatch = '' + patchShebangs _build + ''; + + preInstall = '' + mkdir -p $out/bin + ''; + + buildPhase = '' + runHook preBuild + + _build/oils.sh + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + ./install + + runHook postInstall + ''; + + strictDeps = true; + buildInputs = lib.optional withReadline readline; + # As of 0.19.0 the build generates an error on MacOS (using clang version 16.0.6 in the builder), + # whereas running it outside of Nix with clang version 15.0.0 generates just a warning. The shell seems to + # work just fine though, so we disable the error here. + env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=incompatible-function-pointer-types"; + configureFlags = [ + "--datarootdir=${placeholder "out"}" + ] ++ lib.optionals withReadline [ + "--with-readline" + "--readline=${readline-all}" + ]; + + # Stripping breaks the bundles by removing the zip file from the end. + dontStrip = true; + + meta = { + description = "A Unix shell with JSON-compatible structured data. It's our upgrade path from bash to a better language and runtime."; + homepage = "https://www.oilshell.org/"; + + license = lib.licenses.asl20; + + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ lheckemann alva mkg20001 melkor333 ]; + changelog = "https://www.oilshell.org/release/${version}/changelog.html"; + }; + + passthru = { + shellPath = "/bin/osh"; + }; +} |