67 lines
2.3 KiB
Nix
67 lines
2.3 KiB
Nix
{
|
|
description = "HortusFox — self-hosted plant manager, from source";
|
|
|
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
|
inputs.utils.url = "github:numtide/flake-utils";
|
|
inputs.systems.url = "github:nix-systems/default";
|
|
|
|
outputs =
|
|
{ self, nixpkgs, utils, systems, ... }:
|
|
utils.lib.eachSystem (import systems) (system:
|
|
let
|
|
pkgs = import nixpkgs { inherit system; };
|
|
in
|
|
{ packages = {
|
|
hortusfox-web = pkgs.callPackage ./package.nix { };
|
|
default = pkgs.callPackage ./package.nix { };
|
|
};
|
|
|
|
# Matches the PHP build used by services.hortusfox-web (see
|
|
# nixos-module/default.nix's phpPackage) plus composer, for working
|
|
# on package.nix itself (bumping version/hashes, testing the
|
|
# Composer install) or poking at the app's PHP directly -- `just`/
|
|
# `nom` are what the justfile recipes assume are on PATH.
|
|
devShells.default = pkgs.mkShell {
|
|
packages = [
|
|
pkgs.just
|
|
pkgs.nix-output-monitor
|
|
(pkgs.php83.buildEnv {
|
|
extensions = ({ enabled, all }:
|
|
enabled ++ (with all; [ pdo_mysql mysqli gd exif fileinfo mbstring curl zip openssl ]));
|
|
})
|
|
pkgs.php83Packages.composer
|
|
];
|
|
};
|
|
|
|
# `nix flake check` builds the package to catch breakage early.
|
|
checks = {
|
|
build = pkgs.callPackage ./package.nix { };
|
|
|
|
vm-test = import ./tests/vm-test.nix {
|
|
inherit pkgs;
|
|
nixosModule = self.nixosModules.default;
|
|
proxyServer = "nginx";
|
|
};
|
|
|
|
vm-test-caddy = import ./tests/vm-test.nix {
|
|
inherit pkgs;
|
|
nixosModule = self.nixosModules.default;
|
|
proxyServer = "caddy";
|
|
};
|
|
};
|
|
}) // {
|
|
# Not per-system: an overlay is keyed by name, not by system.
|
|
overlays.default = final: prev: { hortusfox-web = final.callPackage ./package.nix { }; };
|
|
|
|
# Not per-system: a module is keyed by name, not by system.
|
|
nixosModules.default = import ./nixos-module;
|
|
|
|
# Throwaway VM for manual testing (`just build-vm` / `just boot-vm`).
|
|
# Not per-system: nixosConfigurations is keyed by config name, not system.
|
|
nixosConfigurations.test = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules = [ ./tests ];
|
|
};
|
|
};
|
|
}
|