diff --git a/firmware/default.nix b/firmware/default.nix new file mode 100644 index 0000000..0737821 --- /dev/null +++ b/firmware/default.nix @@ -0,0 +1,35 @@ +{ + lib, + stdenvNoCC, + version, + system, + ... +}: + +stdenvNoCC.mkDerivation { + pname = "intel-npu-firmware"; + version = version; + + src = with lib.fileset; toSource { + root = ../.; + fileset = unions [ + ./bin + ../LICENSE.md + ]; + }; + + meta = { + homepage = "https://github.com/intel/linux-npu-driver"; + description = "Intel NPU (Neural Processing Unit) firmware"; + platforms = [ system ]; + license = lib.licenses.mit; + }; + + installPhase = '' + mkdir -p $out/lib/firmware/intel/vpu + cp -P firmware/bin/*.bin $out/lib/firmware/intel/vpu + + mkdir -p $out/share/doc/intel-npu-driver + cp LICENSE.md $out/share/doc/intel-npu-driver/LICENSE + ''; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..ccf2a34 --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1739866667, + "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..e5a4d31 --- /dev/null +++ b/flake.nix @@ -0,0 +1,29 @@ +{ + description = "IntelĀ® NPU driver"; + + inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + outputs = { + self, + nixpkgs, + ... + } @ inputs: let + system = "x86_64-linux"; + lib = nixpkgs.lib; + pkgs = import nixpkgs { system = system; }; + + version = with builtins; let + lines = lib.splitString "\n" (readFile ./CMakeLists.txt); + extract = match "set\\(STACK_VERSION ([\\.0-9]+) .+\\)"; + in elemAt ( + lib.findFirst isList null (map extract lines) + ) 0; + in { + packages.${system} = rec { + firmware = pkgs.callPackage ./firmware/default.nix { + inherit system version; + }; + default = firmware; + }; + }; +}