diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..6756eed --- /dev/null +++ b/flake.nix | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | { | ||
| 2 | inputs = { | ||
| 3 | nixpkgs.url = "nixpkgs/nixos-unstable"; | ||
| 4 | flake-utils.url = "github:numtide/flake-utils"; | ||
| 5 | }; | ||
| 6 | |||
| 7 | outputs = { self, nixpkgs, flake-utils, ... }@inputs: | ||
| 8 | flake-utils.lib.eachDefaultSystem | ||
| 9 | (system: | ||
| 10 | let | ||
| 11 | pkgs = import nixpkgs { inherit system; }; | ||
| 12 | boost = pkgs.boost191; | ||
| 13 | llvmVersion = "22"; | ||
| 14 | llvmPackages = pkgs."llvmPackages_${llvmVersion}"; | ||
| 15 | libstdcxxGcc = pkgs.gcc16.cc; | ||
| 16 | clang = llvmPackages.clang.override { | ||
| 17 | gccForLibs = libstdcxxGcc; | ||
| 18 | }; | ||
| 19 | inherit (clang) stdenv; | ||
| 20 | |||
| 21 | routemon = stdenv.mkDerivation { | ||
| 22 | name = "routemon"; | ||
| 23 | src = ./server; | ||
| 24 | |||
| 25 | buildInputs = with pkgs; [ boost pugixml expat icu openssl sqlite ]; | ||
| 26 | nativeBuildInputs = with pkgs; [ pkgs."llvmPackages_${llvmVersion}".clang-tools pkgs."clang_${llvmVersion}" boost cmake ninja gettext ]; | ||
| 27 | |||
| 28 | hardeningDisable = [ | ||
| 29 | # Disable here because this breaks C++ modules (I suspect because it sets -D_FORTIFY_SOURCE=3) | ||
| 30 | # We set plenty of hardening options in CMakeLists.txt anyway. | ||
| 31 | "all" | ||
| 32 | ]; | ||
| 33 | |||
| 34 | env.NIX_CFLAGS_COMPILE = toString [ | ||
| 35 | "-DLOCALEDIR=${builtins.placeholder "out"}/share/locale" | ||
| 36 | "-Wno-reserved-module-identifier" | ||
| 37 | "-isystem ${libstdcxxGcc}/include/c++/${libstdcxxGcc.version}/backward" | ||
| 38 | ]; | ||
| 39 | |||
| 40 | cmakeFlags = [ | ||
| 41 | "--preset=nix-derivation" | ||
| 42 | "-DCMAKE_CXX_STDLIB_MODULES_JSON=${libstdcxxGcc}/lib/libstdc++.modules.json" | ||
| 43 | ]; | ||
| 44 | }; | ||
| 45 | in | ||
| 46 | { | ||
| 47 | packages.routemon = routemon; | ||
| 48 | |||
| 49 | devShells.default = pkgs.mkShell.override { inherit stdenv; } { | ||
| 50 | buildInputs = [ pkgs.nix-index pkgs.nix-tree ]; | ||
| 51 | inputsFrom = [ routemon ]; | ||
| 52 | }; | ||
| 53 | |||
| 54 | formatter = pkgs.nixpkgs-fmt; | ||
| 55 | }); | ||
| 56 | } | ||
| 57 | |||