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..21b787c --- /dev/null +++ b/flake.nix | |||
@@ -0,0 +1,57 @@ | |||
1 | { | ||
2 | description = "A very basic flake"; | ||
3 | |||
4 | inputs = { | ||
5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.05"; | ||
6 | }; | ||
7 | |||
8 | outputs = | ||
9 | { self | ||
10 | , nixpkgs | ||
11 | }: | ||
12 | let | ||
13 | allPrograms = [ 1 ]; | ||
14 | supportedSystems = [ "x86_64-linux" ]; | ||
15 | forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); | ||
16 | nixpkgsFor = forAllSystems (system: | ||
17 | import nixpkgs { inherit system; } | ||
18 | ); | ||
19 | in | ||
20 | { | ||
21 | devShell = forAllSystems | ||
22 | (system: | ||
23 | let | ||
24 | pkgs = nixpkgsFor."${system}"; | ||
25 | in | ||
26 | with pkgs; | ||
27 | mkShell { | ||
28 | buildInputs = [ gcc glew glfw glm freeglut mesa_glu clang-tools ]; | ||
29 | }); | ||
30 | |||
31 | apps = forAllSystems | ||
32 | (system: | ||
33 | let | ||
34 | pkgs = nixpkgsFor."${system}"; | ||
35 | execs = with builtins; map toString allPrograms; | ||
36 | mkApp = name: with pkgs; stdenv.mkDerivation { | ||
37 | name = "${name}"; | ||
38 | src = ./src; | ||
39 | buildInputs = [ gcc glew glfw glm freeglut mesa_glu ]; | ||
40 | unpackPhase = '' | ||
41 | true | ||
42 | ''; | ||
43 | buildPhase = '' | ||
44 | gcc -o main $src/${name}/main.c -lglut -lGLU -lGL | ||
45 | ''; | ||
46 | installPhase = '' | ||
47 | install -Dm755 main $out/bin/main | ||
48 | ''; | ||
49 | }; | ||
50 | in | ||
51 | with pkgs; | ||
52 | lib.genAttrs execs (p: { | ||
53 | type = "app"; | ||
54 | program = "${mkApp p}/bin/main"; | ||
55 | })); | ||
56 | }; | ||
57 | } | ||