{ description = "RhemaWave"; 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 = import nixpkgs { inherit system; config.allowUnfreePredicate = pkg: (nixpkgs.lib.getName pkg) == "rhemawave"; }; buildInputs = with pkgs; [ SDL2 SDL2_ttf SDL2_image SDL2_mixer libGL sqlite dbus wayland wayland-protocols libxkbcommon libdecor libx11 libxext ]; nativeBuildInputs = with pkgs; [ go pkg-config ]; audioFile = pkgs.fetchurl { url = "https://files.rhemawavetech.com/audio.wav"; sha256 = "sha256-5Dikxx9RKOoPfY1ukIgMoVQ7tzpMirp+XPj6OphfEW0="; }; in { packages.default = pkgs.buildGoModule { pname = "rhemawave"; version = "v1.1.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 = '' # Create the destination mkdir -p $out/share/rhemawave # Copy everything from your local share/rhemawave/* into the store cp -r share/rhemawave/* $out/share/rhemawave/ # Add the fetched audio file specifically mkdir -p $out/share/rhemawave/audio cp ${audioFile} $out/share/rhemawave/audio/audio.wav ''; meta = with pkgs.lib; { description = "RhemaWave kiosk application"; license = licenses.unfree; platforms = platforms.linux; }; }; 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/rhemawave rhemawave.go" echo "Run: ./bin/rhemawave" echo "Reset: ./dev_scripts/reset.sh" ''; }; } )) // { nixosModules.default = import ./nixos/module.nix self; }; }