diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index f4d6da1..03f63cb 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -14,6 +14,7 @@ jobs: strategy: matrix: os: [ubuntu, macos] + eigen: ["", "-eigen_5"] steps: - uses: actions/checkout@v6 - uses: cachix/install-nix-action@v31 @@ -21,7 +22,7 @@ jobs: with: name: gepetto authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - run: nix build -L + - run: nix build -L ".#nanoeigenpy${{ matrix.eigen }}" check: if: always() diff --git a/flake.lock b/flake.lock index 25475b1..af6b400 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1754487366, - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "lastModified": 1765835352, + "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "rev": "a34fae9c08a15ad73f295041fec82323541400a9", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1766131741, + "narHash": "sha256-Rj6PPGGhYdlKWqYyqZmFHgUs5i2KEVq/zpHHwp4kR9A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "cd81579bbcc2d6885fa0c5cf8416e3bf8bf3e27e", "type": "github" }, "original": { @@ -36,11 +36,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1753579242, - "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", + "lastModified": 1765674936, + "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", + "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 94a6735..406fb82 100644 --- a/flake.nix +++ b/flake.nix @@ -8,26 +8,65 @@ outputs = inputs: - inputs.flake-parts.lib.mkFlake { inherit inputs; } { - systems = inputs.nixpkgs.lib.systems.flakeExposed; - perSystem = - { pkgs, self', ... }: - { - packages = { - default = self'.packages.nanoeigenpy; - nanoeigenpy = pkgs.python3Packages.nanoeigenpy.overrideAttrs (_: { - src = pkgs.lib.fileset.toSource { - root = ./.; - fileset = pkgs.lib.fileset.unions [ - ./CMakeLists.txt - ./include - ./package.xml - ./src - ./tests + inputs.flake-parts.lib.mkFlake { inherit inputs; } ( + { self, lib, ... }: + { + systems = inputs.nixpkgs.lib.systems.flakeExposed; + flake.overlays = { + default = final: prev: { + pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ + (python-final: python-prev: { + eigenpy = python-prev.eigenpy.overrideAttrs { + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.unions [ + ./CMakeLists.txt + ./include + ./package.xml + ./src + ./tests + ]; + }; + }; + }) + ]; + }; + eigen_5 = final: _prev: { + eigen = final.eigen_5; + }; + }; + perSystem = + { + pkgs, + pkgs-eigen_5, + self', + system, + ... + }: + { + _module.args = { + pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ self.overlays.default ]; + }; + pkgs-eigen_5 = import inputs.nixpkgs { + inherit system; + overlays = [ + self.overlays.eigen_5 + self.overlays.default ]; }; - }); + }; + apps.default = { + type = "app"; + program = pkgs.python3.withPackages (_: [ self'.packages.default ]); + }; + packages = { + default = self'.packages.nanoeigenpy; + nanoeigenpy = pkgs.python3Packages.nanoeigenpy; + nanoeigenpy-eigen_5 = pkgs-eigen_5.python3Packages.nanoeigenpy; + }; }; - }; - }; + } + ); }