Adds a pkgs.testers.nixosTest (checks.<system>.invoiceninja) that boots the module end-to-end and checks that mysql/redis/phpfpm/queue-worker/ nginx come up, the one-time migrate/seed/admin-create setup completed, the app shell and /login page are served, invoiceninja-manage works, and the seeded admin can log in via the API. Factors the shared services.invoiceninja config used by both the interactive VM and the new test into tests/common.nix, and satisfies NixOS's fileSystems/bootloader assertions in the interactive VM config so `nix flake check` evaluates nixosConfigurations.test cleanly (the qemu-vm module already overrides both when actually building config.system.build.vm, so this only affects the toplevel-eval path). Also adds a `just test` recipe, a CLAUDE.md codebase overview, and a .gitignore for the result/nixos.qcow2 build artifacts. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
42 lines
1.1 KiB
Nix
42 lines
1.1 KiB
Nix
{
|
|
description = "An Invoice Ninja package and module.";
|
|
|
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
|
|
|
|
outputs =
|
|
{ self, nixpkgs, nix, }:
|
|
let
|
|
systems = [ "x86_64-linux" ];
|
|
forEachSystem = nixpkgs.lib.genAttrs systems;
|
|
|
|
overlayList = [ self.overlays.default ];
|
|
|
|
pkgsBySystem = forEachSystem (
|
|
system:
|
|
import nixpkgs {
|
|
inherit system;
|
|
overlays = overlayList;
|
|
}
|
|
);
|
|
in
|
|
rec {
|
|
nixosConfigurations.test = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules = [ ./tests ];
|
|
};
|
|
|
|
overlays.default = final: prev: { invoiceninja = final.callPackage ./package.nix { }; };
|
|
|
|
packages = forEachSystem (system: {
|
|
invoiceninja = pkgsBySystem.${system}.invoiceninja;
|
|
default = pkgsBySystem.${system}.invoiceninja;
|
|
});
|
|
|
|
checks = forEachSystem (system: {
|
|
invoiceninja = import ./tests/nixos-test.nix { inherit system; nixpkgsPath = nixpkgs; };
|
|
});
|
|
|
|
nixosModules = import ./nixos-module { overlays = overlayList; };
|
|
};
|
|
}
|