-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
109 lines (90 loc) · 2.83 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
nix-filter.url = "github:numtide/nix-filter";
};
outputs = { self, nixpkgs, flake-utils, nix-filter, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs' = import nixpkgs { inherit system; };
nixpkgs-patched = pkgs'.applyPatches {
name = "nixpkgs-patched-293296";
src = nixpkgs;
patches = [
(pkgs'.fetchpatch {
url = "https://github.com/NixOS/nixpkgs/pull/293296.patch";
hash = "sha256-znciaMn0w52mS0t2TAKkm+D8rsGNIdHtsF968jiL+gQ=";
})
];
};
pkgs = import nixpkgs-patched {
inherit system;
overlays = [
(final: prev: {
imgui = prev.callPackage ./nix/pkgs/imgui { };
})
];
};
mkChatNotifier = { targetPkgs }:
let
stdenv = targetPkgs.llvmPackages_17.libcxxStdenv;
in
targetPkgs.llvmPackages_17.libcxxStdenv.mkDerivation {
pname = "chatnotifier";
version = "1.0.0";
# Would complain about miniaudio otherwise (warnings as errors)
hardeningDisable = [ "all" ];
src = nix-filter {
root = self;
include = with nix-filter.lib; [
"CMakeLists.txt"
(inDirectory "Assets")
(inDirectory "Source")
];
};
nativeBuildInputs = with pkgs; [
cmake
ninja
pkgconf
clang-tools_17
];
buildInputs = with targetPkgs; [
curl
glfw
gl3w
libogg
libopus
nghttp2
openssl
opusfile
(glbinding.override { inherit stdenv; })
(libhv.override { inherit stdenv; })
];
IMGUI_DIR = targetPkgs.imgui;
MINIAUDIO_DIR = targetPkgs.miniaudio;
};
mkChatNotifierShell = { target }:
pkgs.mkShell.override { stdenv = target.stdenv; } {
inputsFrom = [
target
];
NIX_HARDENING_ENABLE = target.NIX_HARDENING_ENABLE;
IMGUI_DIR = target.IMGUI_DIR;
MINIAUDIO_DIR = target.MINIAUDIO_DIR;
};
chatnotifier = mkChatNotifier { targetPkgs = pkgs; };
chatnotifier-shell = mkChatNotifierShell { target = chatnotifier; };
in
{
formatter = pkgs.nixpkgs-fmt;
devShells = {
inherit chatnotifier-shell;
default = chatnotifier-shell;
};
packages = {
inherit chatnotifier;
default = chatnotifier;
};
});
}