From e7e02a2cba4858e0b724bc2adb57a5cc36a8c68f Mon Sep 17 00:00:00 2001 From: Ahmed Khanzada Date: Sun, 2 Nov 2025 18:35:11 -0800 Subject: [PATCH 1/2] Add Nix to the GitHub build workflow --- .github/workflows/flake.nix | 60 ++++++++++++++++++++ .github/workflows/test-builds-on-distros.yml | 8 ++- 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/flake.nix diff --git a/.github/workflows/flake.nix b/.github/workflows/flake.nix new file mode 100644 index 00000000000..59300b490aa --- /dev/null +++ b/.github/workflows/flake.nix @@ -0,0 +1,60 @@ +{ + description = "Shipwright development environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + # Build tools + clang + git + cmake + ninja + lsb-release + pkg-config + + # SDL2 libraries + SDL2 + SDL2.dev + SDL2_net + + # Other libraries + libpng + libzip + nlohmann_json + tinyxml-2 + spdlog + libGL + libGL.dev + bzip2 + + # X11 libraries + xorg.libX11 + + # Audio libraries + libogg + libogg.dev + libvorbis + libvorbis.dev + libopus + libopus.dev + opusfile + opusfile.dev + ]; + + shellHook = '' + echo "Shipwright development environment loaded" + echo "Available tools: clang, git, cmake, ninja" + ''; + }; + }); +} diff --git a/.github/workflows/test-builds-on-distros.yml b/.github/workflows/test-builds-on-distros.yml index 8b6ded6d621..12190849196 100644 --- a/.github/workflows/test-builds-on-distros.yml +++ b/.github/workflows/test-builds-on-distros.yml @@ -8,8 +8,8 @@ jobs: build: strategy: matrix: - image: ["archlinux:base", "opensuse/tumbleweed:latest", "ubuntu:mantic", "debian:bookworm", "fedora:39"] - cc: ["gcc", "clang"] + image: ["archlinux:base", "opensuse/tumbleweed:latest", "ubuntu:mantic", "debian:bookworm", "fedora:39", "nixos/nix:latest"] + cc: ["gcc", "clang"] include: - cxx: g++ cc: gcc @@ -48,6 +48,10 @@ jobs: echo zypper in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel zypper --non-interactive dup zypper --non-interactive in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel + - name: Install dependencies (Nix) + if: ${{ matrix.image == 'nix/nixos:latest' }} + run: | + nix develop - name: Install latest nlohmann if: ${{ matrix.image == 'fedora:39' }} run: | From f1c681dcda3002f8b2190ec23a3948f3376847f1 Mon Sep 17 00:00:00 2001 From: Ahmed Khanzada Date: Sun, 2 Nov 2025 19:50:03 -0800 Subject: [PATCH 2/2] Path to flake.nix --- .github/workflows/test-builds-on-distros.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-builds-on-distros.yml b/.github/workflows/test-builds-on-distros.yml index 12190849196..d6fb8f01698 100644 --- a/.github/workflows/test-builds-on-distros.yml +++ b/.github/workflows/test-builds-on-distros.yml @@ -51,7 +51,7 @@ jobs: - name: Install dependencies (Nix) if: ${{ matrix.image == 'nix/nixos:latest' }} run: | - nix develop + nix develop .github/workflows/flake.nix - name: Install latest nlohmann if: ${{ matrix.image == 'fedora:39' }} run: |