{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small"; crane = { url = "github:ipetkov/crane"; inputs = { }; }; }; outputs = { self, nixpkgs, crane, ... }: let system = "x86_64-linux"; pkgs = nixpkgs.outputs.legacyPackages.${system}; turtle = pkgs.callPackage ./nix/package.nix {inherit craneLib;}; craneLib = crane.mkLib pkgs; tests = let test-turtle = turtle.overrideAttrs { cargoBuildType = "debug"; }; in pkgs.testers.runNixOSTest { imports = [./tests/basic.nix]; defaults = { imports = [ module ]; services.turtle.package = test-turtle; environment.systemPackages = [ test-turtle ]; }; }; module = import ./nix/module.nix {extraPackages = {inherit turtle;};}; in { packages."${system}" = { inherit turtle; default = self.outputs.packages.${system}.turtle; }; nixosModules.default = module; checks."${system}".default = tests; devShells."${system}".default = self.packages.${system}.default.overrideAttrs (super: { nativeBuildInputs = super.nativeBuildInputs ++ [ # rust stuff pkgs.cargo pkgs.clippy pkgs.rustc pkgs.rustfmt pkgs.mold pkgs.cargo-edit pkgs.cargo-expand pkgs.cargo-flamegraph ]; RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}"; }); }; }