{ description = "NextCompanion — a minimal GTK4 Nextbike client for Linux"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; rust-overlay.url = "github:oxalica/rust-overlay"; }; outputs = { self, nixpkgs, rust-overlay, ... }: let system = "x86_64-linux"; overlays = [ (import rust-overlay) ]; pkgs = import nixpkgs { inherit system overlays; }; runtimeDeps = with pkgs; [ gtk4 libadwaita glib webkitgtk_6_0 ]; buildDeps = with pkgs; [ pkg-config rust-bin.stable.latest.default ]; in { devShells.${system}.default = pkgs.mkShell { buildInputs = buildDeps ++ runtimeDeps; shellHook = '' export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath runtimeDeps}:$LD_LIBRARY_PATH" ''; }; packages.${system}.default = pkgs.rustPlatform.buildRustPackage { pname = "next-companion"; version = "0.1.0"; src = ./.; cargoLock.lockFile = ./Cargo.lock; nativeBuildInputs = buildDeps; buildInputs = runtimeDeps; postInstall = '' install -Dm644 data/icons/org.nextbike.NextCompanion.png \ $out/share/icons/hicolor/512x512/apps/org.nextbike.NextCompanion.png install -Dm644 data/org.nextbike.NextCompanion.desktop \ $out/share/applications/org.nextbike.NextCompanion.desktop ''; }; apps.${system}.default = { type = "app"; program = "${self.packages.${system}.default}/bin/next-companion"; }; }; }