nix: add support to build with GCC

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
2023-09-23 15:50:29 +05:30
parent 6c33c77ef3
commit da9c47f873
13 changed files with 206 additions and 82 deletions

23
nix/build.nix Normal file
View File

@@ -0,0 +1,23 @@
{ stdenv
, meson
, ninja
, pkg-config
, src ? "../."
, libraries ? [ ]
}:
stdenv.mkDerivation {
name = "matar";
version = "0.1";
inherit src;
outputs = [ "out" "dev" ];
nativeBuildInputs = [
meson
ninja
pkg-config
] ++ libraries;
enableParallelBuilding = true;
}

11
nix/default.nix Normal file
View File

@@ -0,0 +1,11 @@
{ ... }: {
imports = [
./matar.nix
./matar-clang.nix
];
perSystem = { self', pkgs, ... }: {
packages.default = self'.packages.matar-clang;
devShells.default = self'.devShells.matar-clang;
};
}

22
nix/matar-clang.nix Normal file
View File

@@ -0,0 +1,22 @@
{ ... }: {
perSystem = { pkgs, src, ... }:
let
llvm = pkgs.llvmPackages_16;
stdenv = llvm.libcxxStdenv;
libraries = with pkgs; [
((pkgs.fmt.override {
inherit stdenv;
enableShared = false;
}).overrideAttrs (oa: {
cmakeFlags = oa.cmakeFlags ++ [ "-DFMT_TEST=off" ];
})).dev
(catch2_3.override { inherit stdenv; }).out
];
in
{
packages.matar-clang = pkgs.callPackage ./build.nix { inherit src libraries stdenv; };
devShells.matar-clang = pkgs.callPackage ./shell.nix { inherit libraries stdenv; };
};
}

13
nix/matar.nix Normal file
View File

@@ -0,0 +1,13 @@
{ ... }: {
perSystem = { pkgs, src, ... }:
let
libraries = with pkgs; [
(pkgs.fmt.override { enableShared = false; }).dev
catch2_3.out
];
in
{
packages.matar = pkgs.callPackage ./build.nix { inherit src libraries; };
devShells.matar = pkgs.callPackage ./shell.nix {inherit libraries;};
};
}

19
nix/shell.nix Normal file
View File

@@ -0,0 +1,19 @@
{ stdenv
, mkShell
, meson
, ninja
, pkg-config
, libraries ? [ ]
}:
mkShell.override { inherit stdenv; } {
name = "matar";
packages = [
meson
ninja
pkg-config
] ++ libraries;
enableParallelBuilding = true;
}