|
4 | 4 | inputs = { |
5 | 5 | nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; |
6 | 6 | fenix.url = "github:nix-community/fenix/monthly"; |
| 7 | + crane.url = "github:ipetkov/crane"; |
7 | 8 | }; |
8 | 9 |
|
9 | 10 | outputs = |
10 | 11 | { |
11 | 12 | self, |
12 | 13 | nixpkgs, |
13 | 14 | fenix, |
| 15 | + crane, |
14 | 16 | }: |
15 | 17 | let |
16 | 18 | systems = nixpkgs.lib.systems.flakeExposed; |
|
20 | 22 | system: |
21 | 23 | let |
22 | 24 | pkgs = nixpkgs.legacyPackages.${system}; |
23 | | - rustfmt_nightly = fenix.packages.${system}.default.rustfmt; |
| 25 | + rustfmt-nightly = fenix.packages.${system}.default.rustfmt; |
| 26 | + craneLib = crane.mkLib pkgs; |
| 27 | + rpath-libs = [ |
| 28 | + pkgs.libGL |
| 29 | + pkgs.libxkbcommon |
| 30 | + pkgs.wayland |
| 31 | + pkgs.luajit |
| 32 | + ]; |
| 33 | + craneCommonArgs = { |
| 34 | + pname = "entrace"; |
| 35 | + version = "0.1.1"; |
| 36 | + src = pkgs.lib.fileset.toSource { |
| 37 | + root = ./.; |
| 38 | + fileset = pkgs.lib.fileset.unions [ |
| 39 | + (craneLib.fileset.commonCargoSources ./.) |
| 40 | + (pkgs.lib.fileset.fileFilter (file: file.hasExt "md") ./.) |
| 41 | + (pkgs.lib.fileset.maybeMissing ./gui/vendor) |
| 42 | + (pkgs.lib.fileset.maybeMissing ./docs) |
| 43 | + ]; |
| 44 | + }; |
| 45 | + buildInputs = [ ] ++ rpath-libs; |
| 46 | + nativeBuildInputs = [ |
| 47 | + pkgs.breakpointHook |
| 48 | + pkgs.mold-wrapped |
| 49 | + pkgs.patchelf |
| 50 | + pkgs.pkg-config |
| 51 | + ]; |
| 52 | + }; |
| 53 | + cargoArtifacts = craneLib.buildDepsOnly craneCommonArgs; |
| 54 | + craneWithCommonArgs = |
| 55 | + x: craneLib.buildPackage (craneCommonArgs // { inherit cargoArtifacts; } // x); |
| 56 | + entraceApp = craneWithCommonArgs { |
| 57 | + pname = "entrace"; |
| 58 | + cargoExtraArgs = "-p entrace"; |
| 59 | + postFixup = '' |
| 60 | + ENTRACE_BIN="$out/bin/entrace" |
| 61 | + patchelf --add-rpath ${pkgs.lib.makeLibraryPath rpath-libs} "$ENTRACE_BIN" |
| 62 | + patchelf \ |
| 63 | + --add-needed libwayland-client.so \ |
| 64 | + --add-needed libxkbcommon.so \ |
| 65 | + --add-needed libEGL.so \ |
| 66 | + --add-needed libluajit-5.1.so "$ENTRACE_BIN" |
| 67 | + ''; |
| 68 | + }; |
24 | 69 | in |
25 | 70 | { |
26 | | - devShells.${system}.default = |
27 | | - let |
28 | | - libPathPackages = [ |
29 | | - pkgs.wayland |
30 | | - pkgs.libxkbcommon |
31 | | - pkgs.libGL |
32 | | - ]; |
33 | | - _libPathPackagesStr = builtins.toString (pkgs.lib.makeLibraryPath libPathPackages); |
34 | | - in |
35 | | - pkgs.mkShell { |
36 | | - packages = libPathPackages ++ [ |
37 | | - pkgs.sqlite |
38 | | - pkgs.mold-wrapped |
39 | | - pkgs.pkg-config |
40 | | - pkgs.luajit |
41 | | - pkgs.zenity |
42 | | - rustfmt_nightly |
43 | | - pkgs.cargo-about |
44 | | - ]; |
45 | | - env.RUSTFLAGS = "-C link-arg=-fuse-ld=mold"; |
46 | | - shellHook = '' |
47 | | - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${_libPathPackagesStr}" |
48 | | - ''; |
| 71 | + devShells.${system}.default = import ./shell.nix { inherit pkgs rustfmt-nightly; }; |
| 72 | + packages.${system} = { |
| 73 | + default = entraceApp; |
| 74 | + entrace = entraceApp; |
| 75 | + entrace_core = craneWithCommonArgs { |
| 76 | + pname = "entrace_core"; |
| 77 | + cargoExtraArgs = "-p entrace_core"; |
| 78 | + }; |
| 79 | + entrace_core_lite = craneCommonArgs { |
| 80 | + pname = "entrace_core_lite"; |
| 81 | + cargoExtraArgs = "-p entrace_core --no-default-features"; |
49 | 82 | }; |
50 | | - packages.${system}.default = pkgs.callPackage ./package.nix { }; |
| 83 | + }; |
51 | 84 | } |
52 | 85 | ); |
53 | 86 | } |
0 commit comments