{ description = "SMTP forwarding relay daemon with signing and encryption"; inputs = { nixpkgs.url = "nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; }; outputs = { self, nixpkgs, flake-utils, pre-commit-hooks, }: let supportedSystems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; in { nixosModules.smtprd-ng = import ./module.nix; overlays.default = import ./overlay.nix { inherit self; }; } // flake-utils.lib.eachSystem supportedSystems ( system: let pkgs = import nixpkgs { inherit system; }; in { packages = { smtprd-ng = pkgs.callPackage ./. { }; }; packages.default = self.packages.${system}.smtprd-ng; checks = { pre-commit-check = pre-commit-hooks.lib.${system}.run rec { src = ./.; hooks = { nixfmt.enable = true; nixfmt.package = pkgs.nixfmt-rfc-style; autoflake.enable = true; black.enable = true; isort.enable = true; isort.settings.flags = "--profile black"; pylint.enable = false; # doesn't work correctly with module imports in flake detect-private-keys.enable = true; detect-private-keys.excludes = [ "tests/" ]; }; }; app = self.packages.${system}.smtprd-ng; }; apps.default = { type = "app"; program = "${self.packages.${system}.smtprd-ng}/bin/smtprd-ng"; }; } ); }