diff --git a/flake.lock b/flake.lock index 98cbb51..a7413e5 100644 --- a/flake.lock +++ b/flake.lock @@ -1,15 +1,49 @@ { "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", "type": "github" }, "original": { @@ -20,11 +54,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1720542800, - "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", + "lastModified": 1733581040, + "narHash": "sha256-Qn3nPMSopRQJgmvHzVqPcE3I03zJyl8cSbgnnltfFDY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "feb2849fdeb70028c70d73b848214b00d324a497", + "rev": "22c3f2cf41a0e70184334a958e6b124fb0ce3e01", "type": "github" }, "original": { @@ -33,10 +67,27 @@ "type": "indirect" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1708161998, + "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "84d981bae8b5e783b3b548de505b22880559515f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "zig": "zig" } }, "systems": { @@ -53,6 +104,41 @@ "repo": "default", "type": "github" } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "zig": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1733487143, + "narHash": "sha256-o4jsVKtInTA0CqwUUdcAxCYAgNLLNo30mLzz3qVc0eY=", + "owner": "mitchellh", + "repo": "zig-overlay", + "rev": "40e32dd7e083eab4340acd17de47f13d883f257f", + "type": "github" + }, + "original": { + "owner": "mitchellh", + "repo": "zig-overlay", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index e0cb1e6..6377288 100644 --- a/flake.nix +++ b/flake.nix @@ -5,6 +5,9 @@ nixpkgs = { url = "nixpkgs/nixos-unstable"; }; + zig = { + url = "github:mitchellh/zig-overlay"; + }; flake-utils = { url = "github:numtide/flake-utils"; }; @@ -13,8 +16,9 @@ outputs = { nixpkgs, flake-utils, + zig, ... - } @ inputs: let + }: let in flake-utils.lib.eachDefaultSystem ( system: let @@ -25,7 +29,7 @@ devShells.default = pkgs.mkShell { nativeBuildInputs = [ pkgs.hidapi - pkgs.zig_0_13 + zig.packages.${system}.master ]; buildInputs = [ pkgs.hidapi diff --git a/src/hidapi.zig b/src/hidapi.zig index 2998875..fb88546 100644 --- a/src/hidapi.zig +++ b/src/hidapi.zig @@ -4,6 +4,11 @@ const hidapi = @cImport({ @cInclude("hidapi/hidapi.h"); }); +const Errors = error{ + HidApiInitError, + HidApiExitError, +}; + const MAX_REPORT_DESCRIPTOR_SIZE = hidapi.HID_API_MAX_REPORT_DESCRIPTOR_SIZE; const HidBusType = enum(hidapi.hid_bus_type) { @@ -15,12 +20,12 @@ const HidBusType = enum(hidapi.hid_bus_type) { _, }; -pub fn init() !void { +pub fn init() error.HidApiInitError!void { const ret = hidapi.hid_init(); if (ret != 0) return error.HidApiInitError; } -pub fn exit() !void { +pub fn exit() error.HidApiExitError!void { const ret = hidapi.hid_exit(); if (ret != 0) return error.HidApiExitError; }