/ flake.nix
flake.nix
1 { 2 description = "The Cull monorepository."; 3 4 nixConfig = { 5 builders-use-substitutes = true; 6 flake-registry = ""; 7 show-trace = true; 8 9 experimental-features = [ 10 "flakes" 11 "nix-command" 12 "pipe-operators" 13 ]; 14 15 extra-substituters = [ 16 "https://cache.garnix.io/" 17 "https://nix-community.cachix.org/" 18 ]; 19 20 extra-trusted-public-keys = [ 21 "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" 22 "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" 23 ]; 24 }; 25 26 inputs = { 27 systems.url = "github:nix-systems/default"; 28 29 nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 30 31 flake-parts = { 32 url = "github:hercules-ci/flake-parts"; 33 34 inputs.nixpkgs-lib.follows = "nixpkgs"; 35 }; 36 37 # RUST 38 crane.url = "github:ipetkov/crane"; 39 fenix = { url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; }; 40 advisory-db = { url = "github:rustsec/advisory-db"; flake = false; }; 41 }; 42 43 outputs = inputs @ { systems, flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } ({ lib, ... }: { 44 systems = import systems; 45 46 imports = let 47 localModules = lib.filesystem.listFilesRecursive ./. 48 |> lib.filter (pathAbsolute: let 49 pathBase = baseNameOf pathAbsolute; 50 pathStem = lib.removeSuffix ".nix" pathBase; 51 in pathStem != pathBase 52 && lib.hasPrefix "__" pathStem 53 && lib.hasSuffix "__" pathStem); 54 55 outerModules = lib.removeAttrs inputs [ "self" ] 56 |> lib.attrValues 57 |> lib.catAttrs "flakeModule"; 58 in localModules ++ outerModules; 59 }); 60 }