summaryrefslogtreecommitdiffstats
path: root/flake.nix
diff options
context:
space:
mode:
authorRutger Broekhoff2026-08-28 18:03:05 +0200
committerRutger Broekhoff2026-08-28 18:03:05 +0200
commit973aec43ea54bbf95b64fbcb636403401d1ca60e (patch)
tree41b7911c420766a9b463245b9296f44c5bf35258 /flake.nix
downloadroutemon-973aec43ea54bbf95b64fbcb636403401d1ca60e.tar.gz
routemon-973aec43ea54bbf95b64fbcb636403401d1ca60e.zip
Import from e4b104792206ee7ea64bf39c6b7d2c0c230f9d14
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix57
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