|
| 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