From 35950661fff385dc324bcf3108fc3942f85691ed Mon Sep 17 00:00:00 2001 From: Mae PUGIN <48982737+mornepousse@users.noreply.github.com> Date: Fri, 10 Apr 2026 11:50:12 +0200 Subject: [PATCH] Add Nix flake for building KeSp_controller --- flake.nix | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 flake.nix diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..020a4aa --- /dev/null +++ b/flake.nix @@ -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 ]; + }; + }); +}