From 19a0d9c2724695c9e05fe0b85bbbdf03ebeeec5b Mon Sep 17 00:00:00 2001 From: Minijackson Date: Sun, 12 Jan 2020 13:23:58 +0100 Subject: nix: add proper derivation --- default.nix | 10 ++++++++++ derivation.nix | 27 +++++++++++++++++++++++++++ nix-wrapper.sh | 8 ++++++++ overlay.nix | 5 +++++ 4 files changed, 50 insertions(+) create mode 100644 default.nix create mode 100644 derivation.nix create mode 100644 nix-wrapper.sh create mode 100644 overlay.nix diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..20ee7ac --- /dev/null +++ b/default.nix @@ -0,0 +1,10 @@ +{ nixpkgs ? import , ... }: + +let + pkgs = nixpkgs { + config = {}; + overlays = [ + (import ./overlay.nix) + ]; + }; +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 @@ +{ stdenv, rustPlatform, llvm, libclang, clang, runtimeShell }: + +rustPlatform.buildRustPackage { + pname = "poseidoc"; + version = "0.1"; + + src = ./.; + + buildInputs = [ llvm libclang ]; + LIBCLANG_PATH = "${libclang}/lib"; + + cargoSha256 = "0hrqzfzirq8xx32l969367xznlr6wf606xnwkqzknxdc2lxs7k40"; + + postFixup = '' + shell=${runtimeShell} + wrapped='.poseidoc-wrapped' + libc_includes='-idirafter "${clang.libc_dev}/include"' + cxx_stdlib_flags='$(echo -n "${clang.default_cxx_stdlib_compile}")' + resource_dir_flags='-resource-dir=${clang}/resource-root' + + export shell wrapped libc_includes cxx_stdlib_flags resource_dir_flags + + mv $out/bin/poseidoc $out/bin/$wrapped + substituteAll ${./nix-wrapper.sh} $out/bin/poseidoc + chmod --reference=$out/bin/$wrapped $out/bin/poseidoc + ''; +} 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 @@ +#! @shell@ -eu + +exec -a "$0" @out@/bin/@wrapped@ \ + --clang-extra-args="@libc_includes@" \ + --clang-extra-args="@cxx_stdlib_flags@" \ + --clang-extra-args="@resource_dir_flags@" \ + --clang-extra-args="${NIX_CFLAGS_COMPILE-}" \ + "$@" diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..20b3313 --- /dev/null +++ b/overlay.nix @@ -0,0 +1,5 @@ +self: super: { + poseidoc = self.callPackage ./derivation.nix { + inherit (self.llvmPackages) llvm libclang clang; + }; +} -- cgit v1.2.3