{ description = "RadiantWave"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, }: nixpkgs.lib.recursiveUpdate (flake-utils.lib.eachDefaultSystem ( system: let pkgs = import nixpkgs { inherit system; config.allowUnfreePredicate = pkg: (nixpkgs.lib.getName pkg) == "radiantwave"; }; buildInputs = with pkgs; [ SDL2 SDL2_ttf SDL2_image SDL2_mixer sqlite ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ dbus libGL wayland wayland-protocols libxkbcommon libdecor libx11 libxext ]; # Darwin: system SDK provides OpenGL, AppKit, etc. automatically nativeBuildInputs = with pkgs; [ go pkg-config ]; in { packages.default = pkgs.buildGoModule { pname = "radiantwave"; version = "v1.0.0"; src = ./.; vendorHash = null; inherit buildInputs nativeBuildInputs; env.CGO_ENABLED = "1"; preBuild = '' export CGO_CFLAGS="$(pkg-config --cflags SDL2_mixer SDL2_ttf SDL2_image) $CGO_CFLAGS" export CGO_LDFLAGS="$(pkg-config --libs SDL2_mixer SDL2_ttf SDL2_image) $CGO_LDFLAGS" ''; ldflags = [ "-s" "-w" ]; postInstall = '' mkdir -p $out/share/radiantwave cp -r share/radiantwave/* $out/share/radiantwave/ mv $out/bin/rhemawave $out/bin/radiantwave ''; meta = with pkgs.lib; { description = "RhemaWave kiosk application"; license = licenses.unfree; platforms = platforms.linux ++ platforms.darwin; }; }; devShells.default = pkgs.mkShell { inherit buildInputs nativeBuildInputs; shellHook = '' export OLD_PS1="$PS1" export PS1="[nix-env] $OLD_PS1" export CGO_CFLAGS="$(pkg-config --cflags SDL2_mixer SDL2_ttf SDL2_image) $CGO_CFLAGS" export CGO_LDFLAGS="$(pkg-config --libs SDL2_mixer SDL2_ttf SDL2_image) $CGO_LDFLAGS" echo "RhemaWave dev shell" echo " go version: $(go version)" echo " CGO_ENABLED=1" echo "" echo "Build: go build -o bin/radiantwave radiantwave.go" echo "Run: ./bin/radiantwave" ''; }; } )) { nixosModules.default = import ./nixos/module.nix self; nixosConfigurations.test-vm = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ "${nixpkgs}/nixos/modules/virtualisation/qemu-vm.nix" self.nixosModules.default ./nixos/vm.nix ]; }; packages.x86_64-linux.test-vm = self.nixosConfigurations.test-vm.config.system.build.vm; }; }