diff options
author | Minijackson <minijackson@riseup.net> | 2020-01-12 13:23:58 +0100 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2020-01-12 13:23:58 +0100 |
commit | 19a0d9c2724695c9e05fe0b85bbbdf03ebeeec5b (patch) | |
tree | f030067e06c4565f7110011acc823ef25a6f89bf | |
parent | a2776c015b6069e2795cc896bdb918be811296a7 (diff) | |
download | poseidoc-19a0d9c2724695c9e05fe0b85bbbdf03ebeeec5b.tar.gz poseidoc-19a0d9c2724695c9e05fe0b85bbbdf03ebeeec5b.zip |
nix: add proper derivation
-rw-r--r-- | default.nix | 10 | ||||
-rw-r--r-- | derivation.nix | 27 | ||||
-rw-r--r-- | nix-wrapper.sh | 8 | ||||
-rw-r--r-- | overlay.nix | 5 |
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 | |||
3 | let | ||
4 | pkgs = nixpkgs { | ||
5 | config = {}; | ||
6 | overlays = [ | ||
7 | (import ./overlay.nix) | ||
8 | ]; | ||
9 | }; | ||
10 | in 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 | |||
3 | rustPlatform.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 | |||
3 | exec -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 @@ | |||
1 | self: super: { | ||
2 | poseidoc = self.callPackage ./derivation.nix { | ||
3 | inherit (self.llvmPackages) llvm libclang clang; | ||
4 | }; | ||
5 | } | ||