Skip to content

Commit d3a7d21

Browse files
authored
Merge pull request #110 from conneroisu/master
added development flake (same dependencies for all developers)
2 parents 4d41d96 + 991be60 commit d3a7d21

File tree

4 files changed

+280
-0
lines changed

4 files changed

+280
-0
lines changed

.envrc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
use flake
2+
3+
# Optional: Add custom environment variables here
4+
# export CAPY_DEBUG=1
5+
6+
# Optional: Source local environment overrides if they exist
7+
if [ -f .envrc.local ]; then
8+
source .envrc.local
9+
fi

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ kcov-output/
66
macos-sdk/
77
c_examples/libcapy.so.0
88
c_examples/c_template
9+
.direnv

flake.lock

Lines changed: 133 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{
2+
description = "capy - Cross-platform Zig GUI library";
3+
4+
inputs = {
5+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6+
flake-utils.url = "github:numtide/flake-utils";
7+
8+
zig-overlay = {
9+
url = "github:mitchellh/zig-overlay";
10+
inputs.nixpkgs.follows = "nixpkgs";
11+
};
12+
};
13+
14+
outputs = { nixpkgs, flake-utils, zig-overlay, ... }:
15+
flake-utils.lib.eachDefaultSystem (system:
16+
let
17+
pkgs = import nixpkgs {
18+
inherit system;
19+
overlays = [ zig-overlay.overlays.default ];
20+
};
21+
22+
# The project requires exactly this Zig version (2024.11.0-mach)
23+
zigPkg = pkgs.stdenv.mkDerivation rec {
24+
pname = "zig";
25+
version = "0.14.0-dev.2577+271452d22";
26+
27+
src = pkgs.fetchurl {
28+
url = "https://pkg.machengine.org/zig/zig-linux-x86_64-${version}.tar.xz";
29+
sha256 = "sha256-e+ar3r+pcMYTjRZbNI0EZOhPFvUx5xyyDA4FL64djI0=";
30+
};
31+
32+
installPhase = ''
33+
mkdir -p $out/bin
34+
cp zig $out/bin/
35+
chmod +x $out/bin/zig
36+
37+
mkdir -p $out/lib
38+
cp -r lib/* $out/lib/
39+
'';
40+
41+
dontFixup = true;
42+
};
43+
in
44+
{
45+
devShells.default = pkgs.mkShell {
46+
buildInputs = with pkgs; [
47+
# Core development tools
48+
zigPkg
49+
50+
# Build tools
51+
gnumake
52+
pkg-config
53+
54+
# GTK and related libraries for Linux backend
55+
gtk3
56+
gtk4
57+
glib
58+
cairo
59+
pango
60+
gdk-pixbuf
61+
62+
# Android development (optional)
63+
android-tools
64+
65+
# OpenGL/Graphics
66+
libGL
67+
libGLU
68+
mesa
69+
70+
# Audio libraries
71+
alsa-lib
72+
pipewire
73+
74+
# Development utilities
75+
gdb
76+
valgrind
77+
strace
78+
79+
# Code formatting and linting
80+
zls # Zig Language Server
81+
82+
# Version control
83+
git
84+
];
85+
86+
shellHook = ''
87+
echo "🎨 Capy Development Environment"
88+
echo "Zig version: $(zig version)"
89+
echo ""
90+
echo "Available commands:"
91+
echo " zig build - Build the project"
92+
echo " zig build test - Run tests"
93+
echo " zig build <example> - Build and run specific example"
94+
echo ""
95+
echo "Examples:"
96+
echo " zig build 300-buttons"
97+
echo " zig build abc"
98+
echo " zig build balls"
99+
echo " zig build border-layout"
100+
echo " zig build calculator"
101+
echo " zig build colors"
102+
echo " zig build demo"
103+
echo " zig build dev-tools"
104+
echo " zig build dummy-installer"
105+
echo " zig build entry"
106+
echo " zig build fade"
107+
echo " zig build foo_app"
108+
echo " zig build graph"
109+
echo " zig build hacker-news"
110+
echo " zig build many-counters"
111+
echo " zig build media-player"
112+
echo " zig build notepad"
113+
echo " zig build osm-viewer"
114+
echo " zig build slide-viewer"
115+
echo " zig build tabs"
116+
echo " zig build test-backend"
117+
echo " zig build time-feed"
118+
echo " zig build totp"
119+
echo " zig build transition"
120+
echo " zig build weather"
121+
echo ""
122+
123+
# Set up pkg-config paths for GTK
124+
export PKG_CONFIG_PATH="${pkgs.gtk3}/lib/pkgconfig:${pkgs.gtk4}/lib/pkgconfig:$PKG_CONFIG_PATH"
125+
126+
# Set up library paths
127+
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath [
128+
pkgs.gtk3
129+
pkgs.gtk4
130+
pkgs.libGL
131+
pkgs.mesa
132+
pkgs.alsa-lib
133+
]}:$LD_LIBRARY_PATH"
134+
'';
135+
};
136+
});
137+
}

0 commit comments

Comments
 (0)