1{2 description = "NixOS configuration management";34 inputs = {5 nixpkgs.url = "github:nixos/nixpkgs/master";6 nixpkgs-stable-for-tests.url = "github:nixos/nixpkgs/nixos-24.05";7 rust-overlay = {8 url = "github:oxalica/rust-overlay";9 inputs = {10 nixpkgs.follows = "nixpkgs";11 };12 };13 flake-parts.url = "github:hercules-ci/flake-parts";14 crane = {15 url = "github:ipetkov/crane";16 inputs.nixpkgs.follows = "nixpkgs";17 };18 };19 outputs = {20 self,21 rust-overlay,22 flake-parts,23 nixpkgs,24 nixpkgs-stable-for-tests,25 crane,26 }:27 flake-parts.lib.mkFlake {28 29 inputs = {};30 } {31 flake = {32 lib = import ./lib {33 fleetPkgsForPkgs = pkgs:34 import ./pkgs {35 inherit (pkgs) callPackage;36 craneLib = crane.mkLib pkgs;37 };38 };39 };40 41 systems = ["x86_64-linux" "aarch64-linux" "armv7l-linux" "armv6l-linux"];42 perSystem = {43 config,44 system,45 ...46 }: let47 48 49 50 51 deployerSystems = ["aarch64-linux" "x86_64-linux"];52 deployerSystem = builtins.elem system deployerSystems;53 pkgs = import nixpkgs {54 inherit system;55 overlays = [(rust-overlay.overlays.default)];56 };57 lib = pkgs.lib;58 rust = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;59 craneLib = (crane.mkLib pkgs).overrideToolchain rust;60 in {61 62 packages = lib.mkIf deployerSystem (let63 packages = import ./pkgs {64 inherit (pkgs) callPackage;65 inherit craneLib;66 };67 in68 packages // {default = packages.fleet;});69 70 71 devShells = lib.mkIf deployerSystem {72 default = craneLib.devShell {73 packages = with pkgs; [74 rust75 alejandra76 cargo-edit77 cargo-udeps78 cargo-fuzz79 cargo-watch80 cargo-outdated8182 pkg-config83 openssl84 bacon85 ];86 };87 };88 89 90 checks = let91 packages = import ./pkgs {92 inherit (pkgs) callPackage;93 craneLib = crane.mkLib (import nixpkgs {inherit system;});94 };95 packages-with-nixpkgs-stable = import ./pkgs {96 inherit (pkgs) callPackage;97 craneLib = crane.mkLib (import nixpkgs-stable-for-tests {inherit system;});98 };99 prefixAttrs = prefix: attrs:100 nixpkgs.lib.attrsets.mapAttrs' (name: value: {101 name = "${prefix}${name}";102 value = value.overrideAttrs (prev: {103 pname = "${prefix}${prev.pname}";104 });105 })106 attrs;107 in108 109 (prefixAttrs "nixpkgs-" (removeAttrs packages ["fleet"]))110 // (prefixAttrs "nixpkgs-stable-" (removeAttrs packages-with-nixpkgs-stable ["fleet"]));111 };112 };113}