{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; outputs = { self, nixpkgs }: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; }; serverPkg = pkgs.rustPlatform.buildRustPackage { pname = "lightscale-server"; version = "0.1.0"; src = ./lightscale-server; cargoLock.lockFile = ./lightscale-server/Cargo.lock; }; clientPkg = pkgs.rustPlatform.buildRustPackage { pname = "lightscale-client"; version = "0.1.0"; src = ./lightscale-client; cargoLock.lockFile = ./lightscale-client/Cargo.lock; nativeBuildInputs = [ pkgs.pkg-config ]; buildInputs = [ pkgs.libmnl pkgs.libnftnl ]; }; testConfigFast = import ./lab/test-fast.nix { inherit pkgs serverPkg clientPkg; }; testConfigFull = import ./lab/test.nix { inherit pkgs serverPkg clientPkg; }; testConfigFirewall = import ./lab/test-firewall.nix { inherit pkgs serverPkg clientPkg; }; testConfigNat = import ./lab/test-nat.nix { inherit pkgs serverPkg clientPkg; }; testConfigMulti = import ./lab/test-multi.nix { inherit pkgs serverPkg clientPkg; }; testConfigScale = import ./lab/test-scale.nix { inherit pkgs serverPkg clientPkg; }; testConfigNegative = import ./lab/test-negative.nix { inherit pkgs serverPkg clientPkg; }; testConfigKeys = import ./lab/test-keys.nix { inherit pkgs serverPkg clientPkg; }; testConfigRestart = import ./lab/test-restart.nix { inherit pkgs serverPkg clientPkg; }; testConfigControlplaneRestart = import ./lab/test-controlplane-restart.nix { inherit pkgs serverPkg clientPkg; }; testConfigControlplaneHa = import ./lab/test-controlplane-ha.nix { inherit pkgs serverPkg clientPkg; }; testConfigDns = import ./lab/test-dns.nix { inherit pkgs serverPkg clientPkg; }; testConfigIpv6 = import ./lab/test-ipv6.nix { inherit pkgs serverPkg clientPkg; }; testConfigUserspace = import ./lab/test-userspace.nix { inherit pkgs serverPkg clientPkg; }; testConfigRelayFailover = import ./lab/test-relay-failover.nix { inherit pkgs serverPkg clientPkg; }; labTestFast = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigFast) { inherit system pkgs; }; labTestFull = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigFull) { inherit system pkgs; }; labTestFirewall = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigFirewall) { inherit system pkgs; }; labTestNat = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigNat) { inherit system pkgs; }; labTestMulti = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigMulti) { inherit system pkgs; }; labTestScale = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigScale) { inherit system pkgs; }; labTestNegative = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigNegative) { inherit system pkgs; }; labTestKeys = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigKeys) { inherit system pkgs; }; labTestRestart = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigRestart) { inherit system pkgs; }; labTestControlplaneRestart = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigControlplaneRestart) { inherit system pkgs; }; labTestControlplaneHa = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigControlplaneHa) { inherit system pkgs; }; labTestDns = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigDns) { inherit system pkgs; }; labTestIpv6 = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigIpv6) { inherit system pkgs; }; labTestUserspace = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigUserspace) { inherit system pkgs; }; labTestRelayFailover = (import (nixpkgs + "/nixos/tests/make-test-python.nix") testConfigRelayFailover) { inherit system pkgs; }; in { packages.${system} = { lightscale-server = serverPkg; lightscale-client = clientPkg; }; nixosTests.lightscale-lab = labTestFast; nixosTests.lightscale-lab-5 = labTestFull; nixosTests.lightscale-lab-firewall = labTestFirewall; nixosTests.lightscale-lab-nat = labTestNat; nixosTests.lightscale-lab-multi = labTestMulti; nixosTests.lightscale-lab-scale = labTestScale; nixosTests.lightscale-lab-negative = labTestNegative; nixosTests.lightscale-lab-keys = labTestKeys; nixosTests.lightscale-lab-restart = labTestRestart; nixosTests.lightscale-lab-controlplane-restart = labTestControlplaneRestart; nixosTests.lightscale-lab-controlplane-ha = labTestControlplaneHa; nixosTests.lightscale-lab-dns = labTestDns; nixosTests.lightscale-lab-ipv6 = labTestIpv6; nixosTests.lightscale-lab-userspace = labTestUserspace; nixosTests.lightscale-lab-relay-failover = labTestRelayFailover; devShells.${system}.default = pkgs.mkShell { buildInputs = [ pkgs.nix pkgs.qemu pkgs.curl ]; }; }; }