summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2020-01-12 13:23:58 +0100
committerMinijackson <minijackson@riseup.net>2020-01-12 13:23:58 +0100
commit19a0d9c2724695c9e05fe0b85bbbdf03ebeeec5b (patch)
treef030067e06c4565f7110011acc823ef25a6f89bf
parenta2776c015b6069e2795cc896bdb918be811296a7 (diff)
downloadposeidoc-19a0d9c2724695c9e05fe0b85bbbdf03ebeeec5b.tar.gz
poseidoc-19a0d9c2724695c9e05fe0b85bbbdf03ebeeec5b.zip
nix: add proper derivation
-rw-r--r--default.nix10
-rw-r--r--derivation.nix27
-rw-r--r--nix-wrapper.sh8
-rw-r--r--overlay.nix5
4 files changed, 50 insertions, 0 deletions
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..20ee7ac
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,10 @@
1{ nixpkgs ? import <nixpkgs>, ... }:
2
3let
4 pkgs = nixpkgs {
5 config = {};
6 overlays = [
7 (import ./overlay.nix)
8 ];
9 };
10in pkgs.poseidoc
diff --git a/derivation.nix b/derivation.nix
new file mode 100644
index 0000000..e877c04
--- /dev/null
+++ b/derivation.nix
@@ -0,0 +1,27 @@
1{ stdenv, rustPlatform, llvm, libclang, clang, runtimeShell }:
2
3rustPlatform.buildRustPackage {
4 pname = "poseidoc";
5 version = "0.1";
6
7 src = ./.;
8
9 buildInputs = [ llvm libclang ];
10 LIBCLANG_PATH = "${libclang}/lib";
11
12 cargoSha256 = "0hrqzfzirq8xx32l969367xznlr6wf606xnwkqzknxdc2lxs7k40";
13
14 postFixup = ''
15 shell=${runtimeShell}
16 wrapped='.poseidoc-wrapped'
17 libc_includes='-idirafter "${clang.libc_dev}/include"'
18 cxx_stdlib_flags='$(echo -n "${clang.default_cxx_stdlib_compile}")'
19 resource_dir_flags='-resource-dir=${clang}/resource-root'
20
21 export shell wrapped libc_includes cxx_stdlib_flags resource_dir_flags
22
23 mv $out/bin/poseidoc $out/bin/$wrapped
24 substituteAll ${./nix-wrapper.sh} $out/bin/poseidoc
25 chmod --reference=$out/bin/$wrapped $out/bin/poseidoc
26 '';
27}
diff --git a/nix-wrapper.sh b/nix-wrapper.sh
new file mode 100644
index 0000000..451bdbb
--- /dev/null
+++ b/nix-wrapper.sh
@@ -0,0 +1,8 @@
1#! @shell@ -eu
2
3exec -a "$0" @out@/bin/@wrapped@ \
4 --clang-extra-args="@libc_includes@" \
5 --clang-extra-args="@cxx_stdlib_flags@" \
6 --clang-extra-args="@resource_dir_flags@" \
7 --clang-extra-args="${NIX_CFLAGS_COMPILE-}" \
8 "$@"
diff --git a/overlay.nix b/overlay.nix
new file mode 100644
index 0000000..20b3313
--- /dev/null
+++ b/overlay.nix
@@ -0,0 +1,5 @@
1self: super: {
2 poseidoc = self.callPackage ./derivation.nix {
3 inherit (self.llvmPackages) llvm libclang clang;
4 };
5}