on master help sign in
Merge pull request #65 from replit/gui/add-nix-builds

Add nix build files

commitb399165c8c5f98cc7eee89f7eea6a9efd8491a70 authorGuillaume St-Pierre <gstpierre01@gmail.com> dateWed 16 Jun 2021, 16:58 (5 years ago) parent98148ff965495c
2 files changed+72
build-prybar.nix+32 default.nix+40
build-prybar.nixnew file+32
@@ -0,0 +1,32 @@
1+{ language, buildInputs ? [] }:
2+
3+{ lib, buildGoModule, fetchFromGitHub, bash, pkg-config, runCommand, git, copyPathToStore }:
4+
5+let
6+ src = copyPathToStore ./.;
7+ revision = runCommand "get-rev" {
8+ nativeBuildInputs = [ git ];
9+ dummy = builtins.currentTime;
10+ } "GIT_DIR=${src}/.git git rev-parse --short HEAD | tr -d '\n' > $out";
11+in buildGoModule {
12+ pname = "prybar-${language}";
13+ version = builtins.readFile revision;
14+
15+ inherit src;
16+
17+ inherit buildInputs;
18+ nativeBuildInputs = [ pkg-config ];
19+
20+ subPackages = [ "languages/${language}" ];
21+
22+ vendorSha256 = null;
23+
24+ preBuild = ''
25+ ${bash}/bin/bash ./scripts/inject.sh ${language}
26+ go generate ./languages/${language}/main.go
27+ '';
28+
29+ postInstall = ''
30+ mv $out/bin/${language} $out/bin/prybar-${language}
31+ '';
32+}
default.nixnew file+40
@@ -0,0 +1,40 @@
1+{ pkgs ? import <nixpkgs>{} } :
2+let
3+ buildPrybar = attrs: pkgs.callPackage(import ./build-prybar.nix attrs) {};
4+in
5+{
6+ # TODO: These don't quite work yet
7+
8+ # Won't build
9+ # prybar-R = buildPrybar { language = "R"; buildInputs = [ pkgs.R ]; };
10+
11+ # Julia 1.1 doesn't seem to be on nix
12+ # prybar-julia = buildPrybar { language = "julia"; buildInputs = [ julia_13 ]; };
13+
14+ # Has problem reading from prybar_assets. Seems like a bug with the impl.
15+ # prybar-nodejs = buildPrybar { language = "nodejs"; buildInputs = [ ]; };
16+
17+ # Ruby 2.5 is deprecated!
18+ # prybar-ruby = buildPrybar { language = "ruby"; buildInputs = [ ruby_2_5 ]; };
19+
20+ # Untested, spidermonkey not supported on darwin. Feel free to test on linux.
21+ # prybar-spidermonkey = buildPrybar { language = "spidermonkey"; buildInputs = [ spidermonkey ]; };
22+
23+ prybar-python2 = buildPrybar { language = "python2"; buildInputs = [ pkgs.python2 ]; };
24+
25+ prybar-python3 = buildPrybar { language = "python3"; buildInputs = [ pkgs.python3 ]; };
26+
27+ prybar-lua = buildPrybar { language = "lua"; buildInputs = [ pkgs.lua5_1 pkgs.readline ]; };
28+
29+ prybar-clojure = buildPrybar { language = "clojure"; buildInputs = [ pkgs.clojure ]; };
30+
31+ prybar-elisp = buildPrybar { language = "elisp"; };
32+
33+ prybar-ocaml = buildPrybar { language = "ocaml"; };
34+
35+ prybar-scala = buildPrybar { language = "scala"; };
36+
37+ prybar-sqlite = buildPrybar { language = "sqlite"; };
38+
39+ prybar-tcl = buildPrybar { language = "tcl"; buildInputs = [ pkgs.tcl ]; };
40+}