| 1 | { |
| 2 | inputs.nixpkgs.url = "github:NixOS/nixpkgs/2c423e03bbafcff28bfadc6781a4a8257f205cb5"; |
| 3 | outputs = { self, nixpkgs }: let |
| 4 | systems = [ "x86_64-linux" "aarch64-linux" ]; |
| 5 | forAllSystems = nixpkgs.lib.genAttrs systems; |
| 6 | packageFor = system: let |
| 7 | pkgs = nixpkgs.legacyPackages.${system}; |
| 8 | in pkgs.rustPlatform.buildRustPackage { |
| 9 | pname = "vineyard"; |
| 10 | version = "0.1.0"; |
| 11 | src = pkgs.lib.cleanSourceWith { |
| 12 | src = ./.; |
| 13 | filter = path: type: |
| 14 | pkgs.lib.cleanSourceFilter path type |
| 15 | && !(type == "directory" && builtins.elem (builtins.baseNameOf path) [ "target" ".jj" ".git" ]); |
| 16 | }; |
| 17 | cargoLock.lockFile = ./Cargo.lock; |
| 18 | doCheck = true; |
| 19 | }; |
| 20 | in { |
| 21 | nixosModules.default = import ./nix/module.nix self; |
| 22 | nixosModules.vineyard = self.nixosModules.default; |
| 23 | packages = forAllSystems (system: { |
| 24 | default = packageFor system; |
| 25 | vineyard = packageFor system; |
| 26 | }); |
| 27 | checks = forAllSystems (system: { |
| 28 | vineyard = packageFor system; |
| 29 | }); |
| 30 | devShells = forAllSystems (system: let |
| 31 | pkgs = nixpkgs.legacyPackages.${system}; |
| 32 | in { |
| 33 | default = pkgs.mkShell { |
| 34 | packages = with pkgs; [ cargo rustc rustfmt clippy pkg-config ]; |
| 35 | }; |
| 36 | }); |
| 37 | }; |
| 38 | } |