Add Nix flake for building KeSp_controller

This commit is contained in:
Mae PUGIN 2026-04-10 11:50:12 +02:00
parent 9c6f069bf1
commit 35950661ff

56
flake.nix Normal file
View file

@ -0,0 +1,56 @@
{
description = "KeSp split keyboard configurator Slint UI";
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 = nixpkgs.legacyPackages.${system};
nativeBuildInputs = with pkgs; [
pkg-config
cmake
];
buildInputs = with pkgs; [
fontconfig
libxkbcommon
wayland
udev
] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [
xorg.libX11
xorg.libXcursor
xorg.libXrandr
xorg.libXi
];
in
{
packages.default = pkgs.rustPlatform.buildRustPackage {
pname = "kesp-controller";
version = "1.0.0";
src = ./.;
cargoLock.lockFile = ./Cargo.lock;
inherit nativeBuildInputs buildInputs;
# Slint needs to find fontconfig at runtime
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs;
meta = with pkgs.lib; {
description = "Cross-platform configurator for the KeSp split ergonomic keyboard";
license = licenses.gpl3Only;
mainProgram = "KeSp_controller";
};
};
devShells.default = pkgs.mkShell {
inherit nativeBuildInputs buildInputs;
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs;
packages = with pkgs; [ cargo rustc rust-analyzer clippy ];
};
});
}