summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
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..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}