{ description = "Appa peer-to-peer file sync"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; outputs = { self, nixpkgs }: let systems = [ "aarch64-darwin" "x86_64-linux" "aarch64-linux" ]; forEachSystem = nixpkgs.lib.genAttrs systems; in { packages = forEachSystem (system: let packages = import nixpkgs { inherit system; }; in { default = packages.rustPlatform.buildRustPackage { pname = "appa"; version = "0.1.0"; src = ./.; cargoLock = { lockFile = ./Cargo.lock; allowBuiltinFetchGit = true; }; }; appa-cosmic = packages.rustPlatform.buildRustPackage { pname = "appa-cosmic"; version = "0.1.0"; src = ./.; cargoLock = { lockFile = ./Cargo.lock; allowBuiltinFetchGit = true; }; cargoBuildFlags = [ "-p" "appa-cosmic" ]; cargoTestFlags = [ "-p" "appa-cosmic" ]; nativeBuildInputs = [ packages.pkg-config ]; buildInputs = [ packages.libxkbcommon packages.wayland ]; postInstall = '' install -Dm644 appa-cosmic/resources/io.github.appa.Appa.desktop \ "$out/share/applications/io.github.appa.Appa.desktop" install -Dm644 appa-cosmic/resources/icons/io.github.appa.Appa.svg \ "$out/share/icons/hicolor/scalable/apps/io.github.appa.Appa.svg" ''; }; }); devShells = forEachSystem (system: let packages = import nixpkgs { inherit system; }; in { default = packages.mkShell { packages = [ packages.cargo packages.rustc packages.rustfmt packages.clippy packages.pkg-config packages.libxkbcommon packages.wayland ]; # winit loads the Wayland client library at runtime rather than # linking it into the app binary. Make it visible when launching # the COSMIC companion through `nix develop`. shellHook = '' export LD_LIBRARY_PATH="${packages.lib.makeLibraryPath [ packages.wayland packages.libxkbcommon ]}:$LD_LIBRARY_PATH" ''; }; }); }; }