98 lines
2.6 KiB
Nix
98 lines
2.6 KiB
Nix
{
|
|
description = "Confetti packaged for Nix/NixOS";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
# optional: pin a Rust toolchain via rust-overlay if you need nightly
|
|
# rust-overlay.url = "github:oxalica/rust-overlay";
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs, # , rust-overlay
|
|
}:
|
|
let
|
|
systems = [
|
|
"x86_64-linux"
|
|
"aarch64-linux"
|
|
];
|
|
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f (import nixpkgs { inherit system; }));
|
|
in
|
|
{
|
|
packages = forAllSystems (
|
|
pkgs:
|
|
let
|
|
lib = pkgs.lib;
|
|
in
|
|
{
|
|
# name it default (and alias to confetti if you like)
|
|
default = pkgs.rustPlatform.buildRustPackage {
|
|
pname = "confetti";
|
|
version = "unstable";
|
|
src = ./.;
|
|
cargoHash = "sha256-6lwp5gky+NKhE2IKVI2Qxqe5HT9a8xqWfrJ2e9CK6IE="; # run once to get the real hash
|
|
|
|
# NOTE: makeWrapper is needed for wrapProgram
|
|
nativeBuildInputs = with pkgs; [
|
|
pkg-config
|
|
wayland-protocols
|
|
makeWrapper
|
|
];
|
|
|
|
# These are *runtime* libraries the app needs to load
|
|
buildInputs = with pkgs; [
|
|
wayland
|
|
libxkbcommon
|
|
vulkan-loader
|
|
mesa
|
|
];
|
|
|
|
# Ensure the Wayland/Vulkan/libxkbcommon libs are found at runtime
|
|
postInstall =
|
|
let
|
|
libPath = lib.makeLibraryPath [
|
|
pkgs.wayland
|
|
pkgs.libxkbcommon
|
|
pkgs.vulkan-loader
|
|
pkgs.mesa
|
|
];
|
|
in
|
|
''
|
|
wrapProgram "$out/bin/confetti" \
|
|
--prefix LD_LIBRARY_PATH : ${libPath}
|
|
'';
|
|
};
|
|
|
|
confetti = self.packages.${pkgs.system}.default;
|
|
}
|
|
);
|
|
|
|
# Expose a runnable `nix run`
|
|
apps = forAllSystems (pkgs: {
|
|
default = {
|
|
type = "app";
|
|
program = "${self.packages.${pkgs.system}.default}/bin/confetti";
|
|
};
|
|
});
|
|
|
|
# Nice dev shell for hacking locally (cargo, rustc, system libs)
|
|
devShells = forAllSystems (pkgs: {
|
|
default = pkgs.mkShell {
|
|
nativeBuildInputs = with pkgs; [
|
|
pkg-config
|
|
rustc
|
|
cargo
|
|
# or: (rust-bin.stable.latest.default) if using rust-overlay
|
|
wayland-protocols
|
|
];
|
|
buildInputs = with pkgs; [
|
|
wayland
|
|
libxkbcommon
|
|
vulkan-loader
|
|
mesa
|
|
];
|
|
};
|
|
});
|
|
};
|
|
}
|