split flake.nix, shell per package, generate pkg-config
This commit is contained in:
		
							parent
							
								
									d205ed44b7
								
							
						
					
					
						commit
						7b6b4f7e5b
					
				
					 5 changed files with 167 additions and 44 deletions
				
			
		
							
								
								
									
										51
									
								
								devShells.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								devShells.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | |||
| { | ||||
|   pkgs, | ||||
|   fenix, | ||||
|   selfPkgs, | ||||
|   ... | ||||
| }: | ||||
| (builtins.mapAttrs ( | ||||
|   packageName: package: | ||||
|   pkgs.mkShell { | ||||
|     inputsFrom = [ package ]; | ||||
|     packages = with pkgs; [ | ||||
|       rustfmt | ||||
|       clippy | ||||
|       cargo-expand | ||||
|       cargo-tarpaulin | ||||
|       gdb | ||||
|     ]; | ||||
| 
 | ||||
|     RUST_BACKTRACE = 1; | ||||
|     RUST_LOG = "all"; | ||||
|   } | ||||
| ) selfPkgs) | ||||
| // { | ||||
|   test = pkgs.mkShell { | ||||
|     packages = with pkgs; [ | ||||
|       (pkgs.symlinkJoin { | ||||
|         name = "rust-toolchain"; | ||||
|         paths = with pkgs; [ | ||||
|           rustc | ||||
|           cargo | ||||
|           rustPlatform.rustcSrc | ||||
|           rustPlatform.rustLibSrc | ||||
|           rustfmt | ||||
|           clippy | ||||
|           cargo-expand | ||||
|           cargo-tarpaulin | ||||
|         ]; | ||||
|       }) | ||||
|       gcc | ||||
|       gnumake | ||||
|       xe | ||||
|       libgcc | ||||
|       libunwind | ||||
|       pkgsStatic.gcc | ||||
|       pkgsStatic.libgcc | ||||
|       pkgsStatic.musl | ||||
|     ]; | ||||
| 
 | ||||
|     RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}"; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										39
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										39
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -1,5 +1,26 @@ | |||
| { | ||||
|   "nodes": { | ||||
|     "fenix": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": [ | ||||
|           "nixpkgs" | ||||
|         ], | ||||
|         "rust-analyzer-src": "rust-analyzer-src" | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1748759782, | ||||
|         "narHash": "sha256-MJNhEBsAbxRp/53qsXv6/eaWkGS8zMGX9LuCz1BLeck=", | ||||
|         "owner": "nix-community", | ||||
|         "repo": "fenix", | ||||
|         "rev": "9be40ad995bac282160ff374a47eed67c74f9c2a", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nix-community", | ||||
|         "repo": "fenix", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 1748302896, | ||||
|  | @ -18,8 +39,26 @@ | |||
|     }, | ||||
|     "root": { | ||||
|       "inputs": { | ||||
|         "fenix": "fenix", | ||||
|         "nixpkgs": "nixpkgs" | ||||
|       } | ||||
|     }, | ||||
|     "rust-analyzer-src": { | ||||
|       "flake": false, | ||||
|       "locked": { | ||||
|         "lastModified": 1748695646, | ||||
|         "narHash": "sha256-VwSuuRF4NvAoeHZJRRlX8zAFZ+nZyuiIvmVqBAX0Bcg=", | ||||
|         "owner": "rust-lang", | ||||
|         "repo": "rust-analyzer", | ||||
|         "rev": "2a388d1103450d814a84eda98efe89c01b158343", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "rust-lang", | ||||
|         "ref": "nightly", | ||||
|         "repo": "rust-analyzer", | ||||
|         "type": "github" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "root": "root", | ||||
|  |  | |||
							
								
								
									
										56
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										56
									
								
								flake.nix
									
										
									
									
									
								
							|  | @ -3,15 +3,19 @@ | |||
| 
 | ||||
|   inputs = { | ||||
|     nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; | ||||
|     fenix = { | ||||
|       url = "github:nix-community/fenix"; | ||||
|       inputs.nixpkgs.follows = "nixpkgs"; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   outputs = | ||||
|     inputs@{ | ||||
|       self, | ||||
|       nixpkgs, | ||||
|       fenix, | ||||
|     }: | ||||
|     let | ||||
|       lib = nixpkgs.lib; | ||||
|       supported-systems = [ | ||||
|         "x86_64-linux" | ||||
|         "aarch64-linux" | ||||
|  | @ -20,56 +24,20 @@ | |||
|       ]; | ||||
|       forAllSystems = | ||||
|         f: | ||||
|         lib.genAttrs supported-systems ( | ||||
|         nixpkgs.lib.genAttrs supported-systems ( | ||||
|           system: | ||||
|           f rec { | ||||
|             inherit system self; | ||||
|             pkgs = nixpkgs.legacyPackages.${system}; | ||||
|             inherit system; | ||||
|             lib = pkgs.lib; | ||||
|             fenix = inputs.fenix.packages.${system}; | ||||
|             selfPkgs = self.packages.${system}; | ||||
|           } | ||||
|         ); | ||||
|     in | ||||
|     { | ||||
|       devShells = forAllSystems ( | ||||
|         { pkgs, system }: | ||||
|         let | ||||
|           toolchain = pkgs.symlinkJoin { | ||||
|             name = "rust-toolchain"; | ||||
|             paths = with pkgs; [ | ||||
|               rustc | ||||
|               cargo | ||||
|               rustPlatform.rustcSrc | ||||
|               rustPlatform.rustLibSrc | ||||
|               rustfmt | ||||
|               clippy | ||||
|               cargo-expand | ||||
|               cargo-tarpaulin | ||||
|             ]; | ||||
|           }; | ||||
|         in | ||||
|         { | ||||
|           default = pkgs.mkShell rec { | ||||
|             packages = with pkgs; [ | ||||
|               toolchain | ||||
|               gcc | ||||
|               gdb | ||||
|               gnumake | ||||
|               pkg-config | ||||
|               xe | ||||
|               xz | ||||
|               libgcc | ||||
|               libunwind | ||||
|               pkgsStatic.gcc | ||||
|               pkgsStatic.libgcc | ||||
|               pkgsStatic.musl | ||||
|             ]; | ||||
| 
 | ||||
|             RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}"; | ||||
|             RUST_BACKTRACE = 1; | ||||
|             RUST_LOG = "all"; | ||||
|           }; | ||||
|         } | ||||
|       ); | ||||
| 
 | ||||
|       packages = forAllSystems (import ./packages.nix); | ||||
|       devShells = forAllSystems (import ./devShells.nix); | ||||
|       formatter = forAllSystems ({ pkgs, ... }: pkgs.nixfmt-rfc-style); | ||||
|     }; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										59
									
								
								packages.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								packages.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| { | ||||
|   pkgs, | ||||
|   lib, | ||||
|   fenix, | ||||
|   ... | ||||
| }: | ||||
| let | ||||
|   mkServicepointBindingC = | ||||
|     { | ||||
|       rustPlatform, | ||||
|       buildType, | ||||
|     }: | ||||
|     rustPlatform.buildRustPackage (finalAttrs: { | ||||
|       inherit buildType; | ||||
| 
 | ||||
|       pname = "servicepoint-binding-c"; | ||||
|       version = "0.15.0"; | ||||
|       src = ./.; | ||||
|       cargoLock.lockFile = ./Cargo.lock; | ||||
|       meta = { | ||||
|         description = "C bindings for the servicepoint crate."; | ||||
|         homepage = "https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c"; | ||||
|         license = lib.licenses.gpl3Plus; | ||||
|         pkgConfigModules = [ "servicepoint" ]; | ||||
|       }; | ||||
|       nativeBuildInputs = with pkgs; [ pkg-config ]; | ||||
|       buildInputs = with pkgs; [ xz ]; | ||||
| 
 | ||||
|       preBuild = '' | ||||
|         mkdir -p include | ||||
|         export SERVICEPOINT_HEADER_OUT=$(realpath "include") | ||||
| 
 | ||||
|         echo "Rust version: $(rustc --version)" | ||||
|         echo "preBuild hook: set SERVICEPOINT_HEADER_OUT to $SERVICEPOINT_HEADER_OUT" | ||||
|       ''; | ||||
|       postInstall = '' | ||||
|         cp -r include $out | ||||
| 
 | ||||
|         mkdir -p $out/lib/pkgconfig | ||||
|         sed "s:\$out:$out:g" ${./servicepoint.pc.in} | sed "s:\$version:$version:g" > $out/lib/pkgconfig/servicepoint.pc | ||||
|       ''; | ||||
|     }); | ||||
|   rustPlatform-stable = pkgs.rustPlatform; | ||||
|   rustPlatform-unstable = pkgs.makeRustPlatform { | ||||
|     cargo = fenix.minimal.cargo; | ||||
|     rustc = fenix.minimal.rustc; | ||||
|   }; | ||||
| in | ||||
| rec { | ||||
|   servicepoint-binding-c-release = mkServicepointBindingC { | ||||
|     buildType = "release"; | ||||
|     rustPlatform = rustPlatform-stable; | ||||
|   }; | ||||
|   servicepoint-binding-c-size-optimized = mkServicepointBindingC { | ||||
|     buildType = "size_optimized"; | ||||
|     rustPlatform = rustPlatform-unstable; | ||||
|   }; | ||||
|   servicepoint-binding-c = servicepoint-binding-c-release; | ||||
| } | ||||
							
								
								
									
										6
									
								
								servicepoint.pc.in
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								servicepoint.pc.in
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| Name: servicepoint | ||||
| Description: C bindings for the servicepoint library | ||||
| Version: $version | ||||
| URL: https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c | ||||
| Libs: -L$out/lib -lservicepoint_binding_c | ||||
| Cflags: -I$out/include | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vinzenz Schroeter
						Vinzenz Schroeter