From 83aa7b8e668be4155de6ecb83f1fad292e2c0442 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Fri, 21 Jan 2022 15:12:40 +0100 Subject: [PATCH 01/18] empty zig + raylib in nix --- .gitmodules | 3 +++ 3rdparty/raylib | 1 + build.zig | 34 ++++++++++++++++++++++++++++++++++ shell.nix | 16 ++++++++++++++++ src/main.zig | 9 +++++++++ 5 files changed, 63 insertions(+) create mode 100644 .gitmodules create mode 160000 3rdparty/raylib create mode 100644 build.zig create mode 100644 shell.nix create mode 100644 src/main.zig diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..4ad7339 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "3rdparty/raylib"] + path = 3rdparty/raylib + url = https://github.com/raysan5/raylib diff --git a/3rdparty/raylib b/3rdparty/raylib new file mode 160000 index 0000000..3c359ff --- /dev/null +++ b/3rdparty/raylib @@ -0,0 +1 @@ +Subproject commit 3c359ff4bcecfc02d415448fcdd137154645823a diff --git a/build.zig b/build.zig new file mode 100644 index 0000000..72f9d8e --- /dev/null +++ b/build.zig @@ -0,0 +1,34 @@ +const std = @import("std"); + +pub fn build(b: *std.build.Builder) void { + // Standard target options allows the person running `zig build` to choose + // what target to build for. Here we do not override the defaults, which + // means any target is allowed, and the default is native. Other options + // for restricting supported target set are available. + const target = b.standardTargetOptions(.{}); + + // Standard release options allow the person running `zig build` to select + // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. + const mode = b.standardReleaseOptions(); + + const exe = b.addExecutable("doggo", "src/main.zig"); + exe.setTarget(target); + exe.setBuildMode(mode); + exe.install(); + + const run_cmd = exe.run(); + run_cmd.step.dependOn(b.getInstallStep()); + if (b.args) |args| { + run_cmd.addArgs(args); + } + + const run_step = b.step("run", "Run the app"); + run_step.dependOn(&run_cmd.step); + + const exe_tests = b.addTest("src/main.zig"); + exe_tests.setTarget(target); + exe_tests.setBuildMode(mode); + + const test_step = b.step("test", "Run unit tests"); + test_step.dependOn(&exe_tests.step); +} diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..ec522b7 --- /dev/null +++ b/shell.nix @@ -0,0 +1,16 @@ +{ pkgs ? import {} }: + +pkgs.mkShell { + buildInputs = with pkgs; [ + zig + + xorg.libX11 + xorg.libXcursor + xorg.libXi + xorg.libXext + xorg.libXrandr + xorg.libXinerama + libGL + libGLU + ]; +} diff --git a/src/main.zig b/src/main.zig new file mode 100644 index 0000000..a7a7c95 --- /dev/null +++ b/src/main.zig @@ -0,0 +1,9 @@ +const std = @import("std"); + +pub fn main() anyerror!void { + std.log.info("All your codebase are belong to us.", .{}); +} + +test "basic test" { + try std.testing.expectEqual(10, 3 + 7); +} From dfa42ab7db1a37b6709ef5853f54d6b11f4cbd24 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Sat, 22 Jan 2022 14:42:40 +0100 Subject: [PATCH 02/18] use raylib in zig --- .gitignore | 1 + build.zig | 6 ++++++ src/main.zig | 16 ++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03d24c5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +libraylib.a diff --git a/build.zig b/build.zig index 72f9d8e..82edbfb 100644 --- a/build.zig +++ b/build.zig @@ -1,4 +1,5 @@ const std = @import("std"); +const raylib = @import("./3rdparty/raylib/src/build.zig"); pub fn build(b: *std.build.Builder) void { // Standard target options allows the person running `zig build` to choose @@ -13,6 +14,11 @@ pub fn build(b: *std.build.Builder) void { const exe = b.addExecutable("doggo", "src/main.zig"); exe.setTarget(target); + + const ray = raylib.Pkg("./3rdparty/raylib/src").addRaylib(b, exe.target); + exe.linkLibrary(ray); + exe.addIncludeDir("./3rdparty/raylib/src"); + exe.setBuildMode(mode); exe.install(); diff --git a/src/main.zig b/src/main.zig index a7a7c95..47404c4 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,7 +1,23 @@ const std = @import("std"); +const ray = @cImport({ + @cInclude("raylib.h"); +}); pub fn main() anyerror!void { std.log.info("All your codebase are belong to us.", .{}); + + ray.InitWindow(800, 450, "ray [core] example - basic window"); + defer ray.CloseWindow(); + + while (!ray.WindowShouldClose()) + { + ray.BeginDrawing(); + defer ray.EndDrawing(); + + ray.ClearBackground(ray.RAYWHITE); + ray.DrawText("Congrats! You created your first window!", 190, 200, 20, ray.LIGHTGRAY); + } + } test "basic test" { From f327df5c978930ceec1107b7197e0d1e57faf912 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Sat, 22 Jan 2022 15:22:06 +0100 Subject: [PATCH 03/18] add justfile --- justfile | 2 ++ shell.nix | 1 + 2 files changed, 3 insertions(+) create mode 100644 justfile diff --git a/justfile b/justfile new file mode 100644 index 0000000..acbc9ed --- /dev/null +++ b/justfile @@ -0,0 +1,2 @@ +run: + nixGL zig build run diff --git a/shell.nix b/shell.nix index ec522b7..9f0dece 100644 --- a/shell.nix +++ b/shell.nix @@ -2,6 +2,7 @@ pkgs.mkShell { buildInputs = with pkgs; [ + just zig xorg.libX11 From 82b49f65c20bc5da583c7ac5e7a9f9eddcf081e0 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Sat, 22 Jan 2022 15:28:24 +0100 Subject: [PATCH 04/18] update raylib to 4.0.0 --- 3rdparty/raylib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/raylib b/3rdparty/raylib index 3c359ff..0851960 160000 --- a/3rdparty/raylib +++ b/3rdparty/raylib @@ -1 +1 @@ -Subproject commit 3c359ff4bcecfc02d415448fcdd137154645823a +Subproject commit 0851960397f02a477d80eda2239f90fae14dec64 From f5f6cf81b44892f9e24ff7f0a578033d0228bf75 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Thu, 24 Mar 2022 13:25:40 +0100 Subject: [PATCH 05/18] use raygui --- 3rdparty/raylib | 2 +- build.zig | 4 ++-- src/main.zig | 12 +++++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/3rdparty/raylib b/3rdparty/raylib index 0851960..ca12ef4 160000 --- a/3rdparty/raylib +++ b/3rdparty/raylib @@ -1 +1 @@ -Subproject commit 0851960397f02a477d80eda2239f90fae14dec64 +Subproject commit ca12ef48e9e9f4eae03b1ca43ec3eb0a78d63dd3 diff --git a/build.zig b/build.zig index 82edbfb..60371b4 100644 --- a/build.zig +++ b/build.zig @@ -14,8 +14,8 @@ pub fn build(b: *std.build.Builder) void { const exe = b.addExecutable("doggo", "src/main.zig"); exe.setTarget(target); - - const ray = raylib.Pkg("./3rdparty/raylib/src").addRaylib(b, exe.target); + + const ray = raylib.addRaylib(b, exe.target); exe.linkLibrary(ray); exe.addIncludeDir("./3rdparty/raylib/src"); diff --git a/src/main.zig b/src/main.zig index 47404c4..b5d8b92 100644 --- a/src/main.zig +++ b/src/main.zig @@ -2,6 +2,10 @@ const std = @import("std"); const ray = @cImport({ @cInclude("raylib.h"); }); +const raygui = @cImport({ + @cDefine("RAYGUI_IMPLEMENTATION", {}); + @cInclude("extras/raygui.h"); +}); pub fn main() anyerror!void { std.log.info("All your codebase are belong to us.", .{}); @@ -9,15 +13,17 @@ pub fn main() anyerror!void { ray.InitWindow(800, 450, "ray [core] example - basic window"); defer ray.CloseWindow(); - while (!ray.WindowShouldClose()) - { + while (!ray.WindowShouldClose()) { ray.BeginDrawing(); defer ray.EndDrawing(); ray.ClearBackground(ray.RAYWHITE); ray.DrawText("Congrats! You created your first window!", 190, 200, 20, ray.LIGHTGRAY); - } + if (raygui.GuiButton(raygui.Rectangle{ .x = 190, .y = 250, .width = 150, .height = 30 }, "Button")) { + std.log.info("Button pressed", .{}); + } + } } test "basic test" { From 7891da6d40991dc36f5429423fa28db7b2edee49 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Mon, 28 Mar 2022 13:48:40 +0200 Subject: [PATCH 06/18] use newer version of raygui --- .gitmodules | 3 +++ 3rdparty/raygui | 1 + build.zig | 1 + src/main.zig | 2 +- 4 files changed, 6 insertions(+), 1 deletion(-) create mode 160000 3rdparty/raygui diff --git a/.gitmodules b/.gitmodules index 4ad7339..4219e8c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "3rdparty/raylib"] path = 3rdparty/raylib url = https://github.com/raysan5/raylib +[submodule "3rdparty/raygui"] + path = 3rdparty/raygui + url = https://github.com/raysan5/raygui.git diff --git a/3rdparty/raygui b/3rdparty/raygui new file mode 160000 index 0000000..f08ec1d --- /dev/null +++ b/3rdparty/raygui @@ -0,0 +1 @@ +Subproject commit f08ec1d08a65fd5ab607c93f413e1742219a582e diff --git a/build.zig b/build.zig index 60371b4..6611e99 100644 --- a/build.zig +++ b/build.zig @@ -18,6 +18,7 @@ pub fn build(b: *std.build.Builder) void { const ray = raylib.addRaylib(b, exe.target); exe.linkLibrary(ray); exe.addIncludeDir("./3rdparty/raylib/src"); + exe.addIncludeDir("./3rdparty/raygui/src"); exe.setBuildMode(mode); exe.install(); diff --git a/src/main.zig b/src/main.zig index b5d8b92..10f9d25 100644 --- a/src/main.zig +++ b/src/main.zig @@ -4,7 +4,7 @@ const ray = @cImport({ }); const raygui = @cImport({ @cDefine("RAYGUI_IMPLEMENTATION", {}); - @cInclude("extras/raygui.h"); + @cInclude("raygui.h"); }); pub fn main() anyerror!void { From 749661ec3694e9bbcb7f086aaf8d997a7031c855 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Tue, 29 Mar 2022 13:57:23 +0200 Subject: [PATCH 07/18] use custom fork of raygui --- 3rdparty/raygui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/raygui b/3rdparty/raygui index f08ec1d..fd0d50b 160000 --- a/3rdparty/raygui +++ b/3rdparty/raygui @@ -1 +1 @@ -Subproject commit f08ec1d08a65fd5ab607c93f413e1742219a582e +Subproject commit fd0d50bdb01e43f21b5ca33b9ef0f7f43f55e3f1 From 68df481b8a1a3834c311ec682124efedbe4d35c5 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Thu, 7 Apr 2022 14:12:23 +0200 Subject: [PATCH 08/18] add small wrapper for raylib --- 3rdparty/raygui | 2 +- build.zig | 5 +++-- src/main.zig | 24 +++++++++--------------- src/raylib.c | 2 ++ src/raylib.zig | 4 ++++ 5 files changed, 19 insertions(+), 18 deletions(-) create mode 100644 src/raylib.c create mode 100644 src/raylib.zig diff --git a/3rdparty/raygui b/3rdparty/raygui index fd0d50b..865bb29 160000 --- a/3rdparty/raygui +++ b/3rdparty/raygui @@ -1 +1 @@ -Subproject commit fd0d50bdb01e43f21b5ca33b9ef0f7f43f55e3f1 +Subproject commit 865bb293764073c01e74314ef647464f1f10fd96 diff --git a/build.zig b/build.zig index 6611e99..ee83c73 100644 --- a/build.zig +++ b/build.zig @@ -17,8 +17,9 @@ pub fn build(b: *std.build.Builder) void { const ray = raylib.addRaylib(b, exe.target); exe.linkLibrary(ray); - exe.addIncludeDir("./3rdparty/raylib/src"); - exe.addIncludeDir("./3rdparty/raygui/src"); + exe.addIncludeDir("3rdparty/raylib/src"); + exe.addIncludeDir("3rdparty/raygui/src"); + exe.addCSourceFile("src/raylib.c", &[_][]u8{}); exe.setBuildMode(mode); exe.install(); diff --git a/src/main.zig b/src/main.zig index 10f9d25..ae9d2d2 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,26 +1,20 @@ const std = @import("std"); -const ray = @cImport({ - @cInclude("raylib.h"); -}); -const raygui = @cImport({ - @cDefine("RAYGUI_IMPLEMENTATION", {}); - @cInclude("raygui.h"); -}); +const r = @import("raylib.zig"); pub fn main() anyerror!void { std.log.info("All your codebase are belong to us.", .{}); - ray.InitWindow(800, 450, "ray [core] example - basic window"); - defer ray.CloseWindow(); + r.InitWindow(800, 450, "ray [core] example - basic window"); + defer r.CloseWindow(); - while (!ray.WindowShouldClose()) { - ray.BeginDrawing(); - defer ray.EndDrawing(); + while (!r.WindowShouldClose()) { + r.BeginDrawing(); + defer r.EndDrawing(); - ray.ClearBackground(ray.RAYWHITE); - ray.DrawText("Congrats! You created your first window!", 190, 200, 20, ray.LIGHTGRAY); + r.ClearBackground(r.RAYWHITE); + r.DrawText("Congrats! You created your first window!", 190, 200, 20, r.LIGHTGRAY); - if (raygui.GuiButton(raygui.Rectangle{ .x = 190, .y = 250, .width = 150, .height = 30 }, "Button")) { + if (r.GuiButton(r.Rectangle{ .x = 190, .y = 250, .width = 150, .height = 30 }, "Button")) { std.log.info("Button pressed", .{}); } } diff --git a/src/raylib.c b/src/raylib.c new file mode 100644 index 0000000..bec96f3 --- /dev/null +++ b/src/raylib.c @@ -0,0 +1,2 @@ +#define RAYGUI_IMPLEMENTATION +#include diff --git a/src/raylib.zig b/src/raylib.zig new file mode 100644 index 0000000..c737a91 --- /dev/null +++ b/src/raylib.zig @@ -0,0 +1,4 @@ +pub usingnamespace @cImport({ + @cInclude("raylib.h"); + @cInclude("raygui.h"); +}); From af6d9551efa2937ea5287b436900b0d6785543a1 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Thu, 14 Apr 2022 14:05:54 +0200 Subject: [PATCH 09/18] try to display file dialog --- build.zig | 1 + src/main.zig | 21 ++++++++++++++++++--- src/raylib.c | 4 ++++ src/raylib.zig | 1 + 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/build.zig b/build.zig index ee83c73..76f7a6a 100644 --- a/build.zig +++ b/build.zig @@ -19,6 +19,7 @@ pub fn build(b: *std.build.Builder) void { exe.linkLibrary(ray); exe.addIncludeDir("3rdparty/raylib/src"); exe.addIncludeDir("3rdparty/raygui/src"); + exe.addIncludeDir("3rdparty/raygui/examples"); exe.addCSourceFile("src/raylib.c", &[_][]u8{}); exe.setBuildMode(mode); diff --git a/src/main.zig b/src/main.zig index ae9d2d2..9b4a4bc 100644 --- a/src/main.zig +++ b/src/main.zig @@ -2,21 +2,36 @@ const std = @import("std"); const r = @import("raylib.zig"); pub fn main() anyerror!void { - std.log.info("All your codebase are belong to us.", .{}); - - r.InitWindow(800, 450, "ray [core] example - basic window"); + r.InitWindow(800, 450, "doggo"); defer r.CloseWindow(); + // var selected_filename: [512]u8 = undefined; + var file_dialog_state = r.InitGuiFileDialog(420, 310, r.GetWorkingDirectory(), false); + while (!r.WindowShouldClose()) { + // Update + if (file_dialog_state.SelectFilePressed) { + std.log.info("{s} / {s}", .{ file_dialog_state.dirPathText, file_dialog_state.fileNameText }); + } + + // Draw r.BeginDrawing(); defer r.EndDrawing(); r.ClearBackground(r.RAYWHITE); r.DrawText("Congrats! You created your first window!", 190, 200, 20, r.LIGHTGRAY); + if (file_dialog_state.fileDialogActive) { + r.GuiLock(); + } + if (r.GuiButton(r.Rectangle{ .x = 190, .y = 250, .width = 150, .height = 30 }, "Button")) { std.log.info("Button pressed", .{}); + file_dialog_state.fileDialogActive = true; } + r.GuiUnlock(); + + r.GuiFileDialog(&file_dialog_state); } } diff --git a/src/raylib.c b/src/raylib.c index bec96f3..0dec298 100644 --- a/src/raylib.c +++ b/src/raylib.c @@ -1,2 +1,6 @@ #define RAYGUI_IMPLEMENTATION #include +#undef RAYGUI_IMPLEMENTATION // Avoid including raygui implementation again + +#define GUI_FILE_DIALOG_IMPLEMENTATION +#include diff --git a/src/raylib.zig b/src/raylib.zig index c737a91..78660e4 100644 --- a/src/raylib.zig +++ b/src/raylib.zig @@ -1,4 +1,5 @@ pub usingnamespace @cImport({ @cInclude("raylib.h"); @cInclude("raygui.h"); + @cInclude("custom_file_dialog/gui_file_dialog.h"); }); From cc8498feba1a5fa39179ac10d276af75492eff5d Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Tue, 3 May 2022 13:53:14 +0200 Subject: [PATCH 10/18] add test file for message box --- src/test_box.zig | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/test_box.zig diff --git a/src/test_box.zig b/src/test_box.zig new file mode 100644 index 0000000..8bc5202 --- /dev/null +++ b/src/test_box.zig @@ -0,0 +1,23 @@ +const std = @import("std"); +const r = @import("raylib.zig"); + +pub fn main() anyerror!void { + r.InitWindow(800, 450, "doggo"); + defer r.CloseWindow(); + + while (!r.WindowShouldClose()) { + + // Draw + r.BeginDrawing(); + defer r.EndDrawing(); + + r.ClearBackground(r.RAYWHITE); + + _ = r.GuiMessageBox( + r.Rectangle{ .x = 0, .y = 0, .width = 200, .height = 200 }, + "Message Box Title", + "Message content", + null, + ); + } +} From d2d6e5512ee29b360f70c72f9e36eb2fd408caba Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Tue, 3 May 2022 16:42:11 +0200 Subject: [PATCH 11/18] add C-flags from raylib --- build.zig | 8 +++++++- src/test_box.zig | 23 ----------------------- 2 files changed, 7 insertions(+), 24 deletions(-) delete mode 100644 src/test_box.zig diff --git a/build.zig b/build.zig index 76f7a6a..bf46761 100644 --- a/build.zig +++ b/build.zig @@ -20,7 +20,13 @@ pub fn build(b: *std.build.Builder) void { exe.addIncludeDir("3rdparty/raylib/src"); exe.addIncludeDir("3rdparty/raygui/src"); exe.addIncludeDir("3rdparty/raygui/examples"); - exe.addCSourceFile("src/raylib.c", &[_][]u8{}); + const raylib_flags = &[_][]const u8{ + "-std=gnu99", + "-DPLATFORM_DESKTOP", + "-DGL_SILENCE_DEPRECATION=199309L", + "-fno-sanitize=undefined", + }; + exe.addCSourceFile("src/raylib.c", raylib_flags); exe.setBuildMode(mode); exe.install(); diff --git a/src/test_box.zig b/src/test_box.zig deleted file mode 100644 index 8bc5202..0000000 --- a/src/test_box.zig +++ /dev/null @@ -1,23 +0,0 @@ -const std = @import("std"); -const r = @import("raylib.zig"); - -pub fn main() anyerror!void { - r.InitWindow(800, 450, "doggo"); - defer r.CloseWindow(); - - while (!r.WindowShouldClose()) { - - // Draw - r.BeginDrawing(); - defer r.EndDrawing(); - - r.ClearBackground(r.RAYWHITE); - - _ = r.GuiMessageBox( - r.Rectangle{ .x = 0, .y = 0, .width = 200, .height = 200 }, - "Message Box Title", - "Message content", - null, - ); - } -} From 1fbb2b87a2f9fbfa9b33a81b63d2c5c183acbac3 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Tue, 3 May 2022 22:01:21 +0200 Subject: [PATCH 12/18] add flake --- flake.lock | 25 +++++++++++++++++++++++++ flake.nix | 28 ++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..79a3116 --- /dev/null +++ b/flake.lock @@ -0,0 +1,25 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1651369430, + "narHash": "sha256-d86uUm0s11exU9zLo2K1AwtJQJDKubFpoF0Iw767uT4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b283b64580d1872333a99af2b4cef91bb84580cf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..4196042 --- /dev/null +++ b/flake.nix @@ -0,0 +1,28 @@ +{ + description = "Doggo flake"; + + outputs = { self, nixpkgs }: + let pkgs = nixpkgs.legacyPackages.x86_64-linux; + in { + # packages.x86_64-linux.hello = pkgs.hello; + # packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello; + # defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello; + + devShell.x86_64-linux = with pkgs; + mkShell { + buildInputs = [ + just + zig + + xorg.libX11 + xorg.libXcursor + xorg.libXi + xorg.libXext + xorg.libXrandr + xorg.libXinerama + libGL + libGLU + ]; + }; + }; +} From 3c2fba5a1e66cd267c50437f4283ee6ca85a0fec Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Tue, 3 May 2022 22:13:10 +0200 Subject: [PATCH 13/18] remove shell.nix --- shell.nix | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 shell.nix diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 9f0dece..0000000 --- a/shell.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs ? import {} }: - -pkgs.mkShell { - buildInputs = with pkgs; [ - just - zig - - xorg.libX11 - xorg.libXcursor - xorg.libXi - xorg.libXext - xorg.libXrandr - xorg.libXinerama - libGL - libGLU - ]; -} From db3848454d733ab630d24331afcefcdf7d63f598 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Fri, 6 May 2022 17:38:06 +0200 Subject: [PATCH 14/18] add godot --- flake.nix | 1 + godot-impl/default_env.tres | 7 +++++++ godot-impl/icon.png | Bin 0 -> 3305 bytes godot-impl/icon.png.import | 35 +++++++++++++++++++++++++++++++++++ godot-impl/project.godot | 22 ++++++++++++++++++++++ justfile | 5 +++++ 6 files changed, 70 insertions(+) create mode 100644 godot-impl/default_env.tres create mode 100644 godot-impl/icon.png create mode 100644 godot-impl/icon.png.import create mode 100644 godot-impl/project.godot diff --git a/flake.nix b/flake.nix index 4196042..c97329b 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,7 @@ buildInputs = [ just zig + godot xorg.libX11 xorg.libXcursor diff --git a/godot-impl/default_env.tres b/godot-impl/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/godot-impl/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/godot-impl/icon.png b/godot-impl/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c98fbb601c83c81ec8c22b1dba7d1d57c62b323c GIT binary patch literal 3305 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 A2mk;8 literal 0 HcmV?d00001 diff --git a/godot-impl/icon.png.import b/godot-impl/icon.png.import new file mode 100644 index 0000000..a4c02e6 --- /dev/null +++ b/godot-impl/icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/godot-impl/project.godot b/godot-impl/project.godot new file mode 100644 index 0000000..0580194 --- /dev/null +++ b/godot-impl/project.godot @@ -0,0 +1,22 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +[application] + +config/name="Doggo" +config/icon="res://icon.png" + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +environment/default_environment="res://default_env.tres" diff --git a/justfile b/justfile index acbc9ed..b315d48 100644 --- a/justfile +++ b/justfile @@ -1,2 +1,7 @@ +godot_project := "./godot-impl/project.godot" + run: nixGL zig build run + +edit: + nixGL godot {{godot_project}} From 62c5adc26736f0689cfc5702a9088f4b8e5a7eee Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Thu, 19 May 2022 14:23:51 +0200 Subject: [PATCH 15/18] switch to godot 4 (alpha) --- flake.nix | 56 ++++++++++++++++++++++-------------- godot-impl/default_env.tres | 7 ----- godot-impl/icon.png | Bin 3305 -> 3523 bytes godot-impl/icon.png.import | 29 +++++++++---------- godot-impl/project.godot | 11 ++----- justfile | 22 +++++++++++--- 6 files changed, 68 insertions(+), 57 deletions(-) delete mode 100644 godot-impl/default_env.tres diff --git a/flake.nix b/flake.nix index c97329b..bd43ca3 100644 --- a/flake.nix +++ b/flake.nix @@ -2,28 +2,40 @@ description = "Doggo flake"; outputs = { self, nixpkgs }: - let pkgs = nixpkgs.legacyPackages.x86_64-linux; - in { - # packages.x86_64-linux.hello = pkgs.hello; - # packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello; - # defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello; + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; - devShell.x86_64-linux = with pkgs; - mkShell { - buildInputs = [ - just - zig - godot - - xorg.libX11 - xorg.libXcursor - xorg.libXi - xorg.libXext - xorg.libXrandr - xorg.libXinerama - libGL - libGLU - ]; - }; + # godot-alpha = (with pkgs; stdenv.mkDerivation { + # pname = "godot-alpha"; + # version = "4.0.0-a8"; + # src = fetchzip { + # url = "https://downloads.tuxfamily.org/godotengine/4.0/alpha8/Godot_v4.0-alpha8_linux.64.zip"; + # hash = "sha512-qkUpt1reFgVDt5u9zLHYLoJAzC0D/YdtNpQhWLarpTW0e+Vzlqy7kna2plIeddybNsn+tS+QqTmYJExA7aT3zw=="; + # }; + # installPhase = '' + # mkdir -p $out/bin + # mv Godot_v4.0-alpha8_linux.64 $out/bin/godot-v4-alpha + # ''; + # }); + in { + + devShell.x86_64-linux = with pkgs; + mkShell { + buildInputs = [ + just + # zig + # godot + # godot-alpha + # + # xorg.libX11 + # xorg.libXcursor + # xorg.libXi + # xorg.libXext + # xorg.libXrandr + # xorg.libXinerama + # libGL + # libGLU + ]; + }; }; } diff --git a/godot-impl/default_env.tres b/godot-impl/default_env.tres deleted file mode 100644 index 20207a4..0000000 --- a/godot-impl/default_env.tres +++ /dev/null @@ -1,7 +0,0 @@ -[gd_resource type="Environment" load_steps=2 format=2] - -[sub_resource type="ProceduralSky" id=1] - -[resource] -background_mode = 2 -background_sky = SubResource( 1 ) diff --git a/godot-impl/icon.png b/godot-impl/icon.png index c98fbb601c83c81ec8c22b1dba7d1d57c62b323c..836bc8bc1cc3ececdb6210c09f114a836fc81412 100644 GIT binary patch delta 3509 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 Date: Fri, 20 May 2022 17:52:59 +0200 Subject: [PATCH 16/18] add button to dl lldb --- godot-impl/Main.gd | 26 ++++++++++++++++++++++++++ godot-impl/Main.tscn | 27 +++++++++++++++++++++++++++ godot-impl/project.godot | 1 + 3 files changed, 54 insertions(+) create mode 100644 godot-impl/Main.gd create mode 100644 godot-impl/Main.tscn diff --git a/godot-impl/Main.gd b/godot-impl/Main.gd new file mode 100644 index 0000000..fa44d4d --- /dev/null +++ b/godot-impl/Main.gd @@ -0,0 +1,26 @@ +extends Control + + +# Called when the node enters the scene tree for the first time. +func _ready(): + $HTTPRequest.connect("request_completed", self._on_request_completed) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + var bodySize = $HTTPRequest.get_body_size() + var downloadedBytes = $HTTPRequest.get_downloaded_bytes() + + var percent = downloadedBytes * 100 / bodySize + $Label.text = "Progress: %d %%" % percent + pass + +func download_cpp_dap(): + var url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz" + $HTTPRequest.download_file = "user://lldb.tar.xz" + $HTTPRequest.request(url) + + +func _on_request_completed(result, response_code, headers, body): +# TODO: decompress archive +# OS.execute("") + pass diff --git a/godot-impl/Main.tscn b/godot-impl/Main.tscn new file mode 100644 index 0000000..d2c0b76 --- /dev/null +++ b/godot-impl/Main.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=3 uid="uid://cirquj62osi4v"] + +[ext_resource type="Script" path="res://Main.gd" id="1_6lnje"] + +[node name="Control" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( "1_6lnje" ) + +[node name="Button" type="Button" parent="."] +offset_left = 148.0 +offset_top = 70.0 +offset_right = 296.0 +offset_bottom = 162.0 +text = "Download C++ DAP (lldb)" + +[node name="HTTPRequest" type="HTTPRequest" parent="."] +use_threads = true + +[node name="Label" type="Label" parent="."] +offset_left = 359.0 +offset_top = 90.0 +offset_right = 598.0 +offset_bottom = 136.0 +text = "Progress: 0%" + +[connection signal="pressed" from="Button" to="." method="download_cpp_dap"] diff --git a/godot-impl/project.godot b/godot-impl/project.godot index 7d6483a..1852a43 100644 --- a/godot-impl/project.godot +++ b/godot-impl/project.godot @@ -11,5 +11,6 @@ config_version=5 [application] config/name="Doggo" +run/main_scene="res://Main.tscn" config/icon="res://icon.png" config/features=PackedStringArray("4.0", "Vulkan Clustered") From cace6f44687dab499a886c901166f412c0d68e5f Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Fri, 5 Apr 2024 00:19:18 +0200 Subject: [PATCH 17/18] setup rust toolchain --- flake.lock | 65 +++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 32 ++++++++++++++++++++++ rust-toolchain.toml | 3 +++ 3 files changed, 100 insertions(+) create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 rust-toolchain.toml diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..7112d9a --- /dev/null +++ b/flake.lock @@ -0,0 +1,65 @@ +{ + "nodes": { + "fenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1712211755, + "narHash": "sha256-KIJA4OvXFDXEeu7wstFDCxqZEfjaPQIowpzNww48TUw=", + "owner": "nix-community", + "repo": "fenix", + "rev": "39763c6e23a8423af316b85a74bad0cc5bc88d86", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1712163089, + "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "root": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1712156296, + "narHash": "sha256-St7ZQrkrr5lmQX9wC1ZJAFxL8W7alswnyZk9d1se3Us=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "8e581ac348e223488622f4d3003cb2bd412bf27e", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..b458c0f --- /dev/null +++ b/flake.nix @@ -0,0 +1,32 @@ +{ + description = "Doggo flake"; + + inputs = { + fenix = { + url = "github:nix-community/fenix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixpkgs.url = "nixpkgs/nixos-unstable"; + }; + + outputs = { self, fenix, nixpkgs }: + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + in { + devShell.x86_64-linux = with pkgs; + mkShell { + nativeBuildInputs = [ + just + (fenix.packages.x86_64-linux.fromToolchainFile { + dir = ./.; + sha256 = "sha256-3St/9/UKo/6lz2Kfq2VmlzHyufduALpiIKaaKX4Pq0g="; + }) + ]; + + buildInputs = [ + ]; + }; + + formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt; + }; +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..02cb8fc --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "stable" +profile = "default" From 603dc124dd7872ac62dffc08470bea1bd51cf9d1 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Fri, 5 Apr 2024 15:23:54 +0200 Subject: [PATCH 18/18] add minimal rust skeleton --- .gitignore | 1 + Cargo.lock | 7 +++++++ Cargo.toml | 8 ++++++++ justfile | 7 +++++++ src/main.rs | 3 +++ 5 files changed, 26 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 justfile create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..da7da67 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "doggo" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..0eb72ca --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "doggo" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/justfile b/justfile new file mode 100644 index 0000000..c2d78d2 --- /dev/null +++ b/justfile @@ -0,0 +1,7 @@ +alias b := build +build: + cargo build + +alias r := run +run: + cargo run diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}