{ inputs = { flake-utils = { type = "github"; owner = "numtide"; repo = "flake-utils"; ref = "master"; }; naersk = { type = "github"; owner = "nmattia"; repo = "naersk"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-utils, naersk }: let supportedSystems = ["aarch64-linux" "x86_64-linux"]; forAllSystems = f: flake-utils.lib.eachSystem supportedSystems f; in { nixosModules.default = import ./configuration.nix self; } // forAllSystems (system: let pkgs = nixpkgs.legacyPackages.${system}; in { packages = { kittybox = pkgs.callPackage ./kittybox.nix { naersk = naersk.lib.${system}; inherit (pkgs.nodePackages) typescript; }; default = self.packages.${system}.kittybox; }; checks = { kittybox = self.packages.${system}.kittybox; distributed-test = pkgs.nixosTest (import ./distributed-test.nix self); nixos-test = pkgs.nixosTest (import ./smoke-test.nix self); dockerContainer = pkgs.callPackage ./docker.nix { inherit (self.packages.${system}) kittybox; rev = self.rev or "development"; inherit (self) lastModifiedDate; }; }; devShells.default = pkgs.callPackage ./shell.nix { inherit (pkgs.nodePackages) typescript; }; }); }