about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/system/plan9port/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/system/plan9port/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/system/plan9port/default.nix95
1 files changed, 95 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/system/plan9port/default.nix b/nixpkgs/pkgs/tools/system/plan9port/default.nix
new file mode 100644
index 000000000000..2b0df3c893ea
--- /dev/null
+++ b/nixpkgs/pkgs/tools/system/plan9port/default.nix
@@ -0,0 +1,95 @@
+{ lib, stdenv, fetchFromGitHub, which
+, darwin ? null
+, xorgproto ? null
+, libX11
+, libXext ? null
+, libXt ? null
+, fontconfig ? null
+, freetype ? null
+, perl ? null  # For building web manuals
+}:
+
+stdenv.mkDerivation {
+  pname = "plan9port";
+  version = "2020-01-08";
+
+  src =  fetchFromGitHub {
+    owner = "9fans";
+    repo = "plan9port";
+    rev = "cc3d97d52a72d7eaceb5b636bcdf81c3e19f7a2e";
+    sha256 = "0gb55kj0gzx1kdhiwcrbr7xcgz1im21dyxgxhfhh6d0q9rw0c17g";
+  };
+
+  patches = [
+    ./darwin-sw_vers.patch
+    ./darwin-cfframework.patch
+  ];
+
+  postPatch = ''
+    #hardcoded path
+    substituteInPlace src/cmd/acme/acme.c \
+      --replace /lib/font/bit $out/plan9/font
+
+    #deprecated flags
+    find . -type f \
+      -exec sed -i -e 's/_SVID_SOURCE/_DEFAULT_SOURCE/g' {} \; \
+      -exec sed -i -e 's/_BSD_SOURCE/_DEFAULT_SOURCE/g' {} \;
+
+    substituteInPlace bin/9c \
+      --replace 'which uniq' '${which}/bin/which uniq'
+  '' + lib.optionalString (!stdenv.isDarwin) ''
+    #add missing ctrl+c\z\x\v keybind for non-Darwin
+    substituteInPlace src/cmd/acme/text.c \
+      --replace "case Kcmd+'c':" "case 0x03: case Kcmd+'c':" \
+      --replace "case Kcmd+'z':" "case 0x1a: case Kcmd+'z':" \
+      --replace "case Kcmd+'x':" "case 0x18: case Kcmd+'x':" \
+      --replace "case Kcmd+'v':" "case 0x16: case Kcmd+'v':"
+  '';
+
+  buildInputs = [
+    perl
+  ] ++ lib.optionals (!stdenv.isDarwin) [
+    xorgproto libX11 libXext libXt fontconfig
+    freetype # fontsrv wants ft2build.h provides system fonts for acme and sam.
+  ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
+    Carbon Cocoa IOKit Metal QuartzCore
+  ]);
+
+  builder = ./builder.sh;
+  libXt_dev = libXt.dev;
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/9 rc -c 'echo rc is working.'
+
+    # 9l can find and use its libs
+    cd $TMP
+    cat >test.c <<EOF
+    #include <u.h>
+    #include <libc.h>
+    #include <thread.h>
+    void
+    threadmain(int argc, char **argv)
+    {
+        threadexitsall(nil);
+    }
+    EOF
+    $out/bin/9 9c -o test.o test.c
+    $out/bin/9 9l -o test test.o
+    ./test
+  '';
+
+  meta = with lib; {
+    homepage = "https://9fans.github.io/plan9port/";
+    description = "Plan 9 from User Space";
+    longDescription = ''
+      Plan 9 from User Space (aka plan9port) is a port of many Plan 9 programs
+      from their native Plan 9 environment to Unix-like operating systems.
+    '';
+    license = licenses.lpl-102;
+    maintainers = with maintainers; [ AndersonTorres bbarker
+                                      ftrvxmtrx kovirobi ];
+    platforms = platforms.unix;
+  };
+}
+# TODO: investigate the mouse chording support patch