{ description = "sway/i3bar command in Rust"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, utils }: let supportedSystems = [ "x86_64-linux" "aarch64-linux" ]; in (utils.lib.eachSystem supportedSystems (system: let pkgs = import nixpkgs { inherit system; }; inherit (pkgs) lib; dbusPaths = lib.makeSearchPathOutput "out" "share/dbus-1/interfaces" (with pkgs; [ systemd networkmanager upower ]); in rec { packages.rustybar = with pkgs; rustPlatform.buildRustPackage { name = "rustybar"; version = "0.1"; src = ./.; cargoLock.lockFile = ./Cargo.lock; doCheck = false; nativeBuildInputs = [ pkg-config ]; buildInputs = [ dbus ]; DBUS_XML_PATH = dbusPaths; meta = with lib; { homepage = "https://github.com/mildlyfunctionalgays/rustybar"; description = "swaybar/i3bar command in Rust"; maintainers = with maintainers; [ artemist ]; license = with licenses; [ mit ]; platforms = supportedSystems; }; }; defaultPackage = packages.rustybar; apps.rustybar = utils.lib.mkApp { drv = packages.rustybar; }; defaultApp = apps.rustybar; devShells.rustybar = with pkgs; mkShell { packages = [ pkg-config dbus libfaketime rustPackages.cargo rustPackages.rustc rustPackages.rustfmt rustPackages.clippy ]; DBUS_XML_PATH = dbusPaths; RUST_SRC_PATH = "${rustPackages.rustPlatform.rustLibSrc}"; }; devShell = devShells.rustybar; formatter = pkgs.nixfmt; })) // { overlays.default = final: prev: { inherit (self.packages.${prev.system}) rustybar; }; }; }