Flake lock file updates: • Removed input 'libgit2' • Updated input 'nix': 'github:NixOS/nix/d652513e4519ed4eb48c92f8670e5a71c7793fc3?narHash=sha256-mIpJgIwPS4o4xYhN1B%2B/fHESEXoxpu6nVoZTzZ0MfTg%3D' (2025-02-12) → 'github:NixOS/nix/970942f45836172fda410a638853382952189eb9?narHash=sha256-jGFuyYKJjJZsBRoi7ZcaVKt1OYxusz/ld1HA7VD2w/0%3D' (2025-02-12) • Removed input 'nix/libgit2' • Updated input 'nix-eval-jobs': 'github:nix-community/nix-eval-jobs/6d4fd5a93d7bc953ffa4dcd6d53ad7056a71eff7?narHash=sha256-1dZLPw%2BnlFQzzswfyTxW%2B8VF1AJ4ZvoYvLTjlHiz1SA%3D' (2025-02-13) → 'github:nix-community/nix-eval-jobs/4b392b284877d203ae262e16af269f702df036bc?narHash=sha256-3wIReAqdTALv39gkWXLMZQvHyBOc3yPkWT2ZsItxedY%3D' (2025-02-14) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/dbebdd67a6006bb145d98c8debf9140ac7e651d0?narHash=sha256-Xc9lEtentPCEtxc/F1e6jIZsd4MPDYv4Kugl9WtXlz0%3D' (2024-09-18) → 'github:NixOS/nixpkgs/97a719c9f0a07923c957cf51b20b329f9fb9d43f?narHash=sha256-1o1qR0KYozYGRrnqytSpAhVBYLNBHX%2BLv6I39zGRzKM%3D' (2025-02-13)
116 lines
3.5 KiB
Nix
116 lines
3.5 KiB
Nix
{
|
|
description = "A Nix-based continuous build system";
|
|
|
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11-small";
|
|
|
|
inputs.nix = {
|
|
url = "github:NixOS/nix/2.26-maintenance";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
# hide nix dev tooling from our lock file
|
|
inputs.flake-parts.follows = "";
|
|
inputs.git-hooks-nix.follows = "";
|
|
inputs.nixpkgs-regression.follows = "";
|
|
inputs.nixpkgs-23-11.follows = "";
|
|
inputs.flake-compat.follows = "";
|
|
};
|
|
|
|
inputs.nix-eval-jobs = {
|
|
url = "github:nix-community/nix-eval-jobs";
|
|
# We want to control the deps precisely
|
|
flake = false;
|
|
};
|
|
|
|
outputs = { self, nixpkgs, nix, nix-eval-jobs, ... }:
|
|
let
|
|
systems = [ "x86_64-linux" "aarch64-linux" ];
|
|
forEachSystem = nixpkgs.lib.genAttrs systems;
|
|
in
|
|
rec {
|
|
|
|
# A Nixpkgs overlay that provides a 'hydra' package.
|
|
overlays.default = final: prev: {
|
|
nix-eval-jobs = final.callPackage nix-eval-jobs {};
|
|
hydra = final.callPackage ./package.nix {
|
|
inherit (nixpkgs.lib) fileset;
|
|
rawSrc = self;
|
|
nix-perl-bindings = final.nixComponents.nix-perl-bindings;
|
|
};
|
|
};
|
|
|
|
hydraJobs = {
|
|
build = forEachSystem (system: packages.${system}.hydra);
|
|
|
|
buildNoTests = forEachSystem (system:
|
|
packages.${system}.hydra.overrideAttrs (_: {
|
|
doCheck = false;
|
|
})
|
|
);
|
|
|
|
manual = forEachSystem (system: let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
hydra = self.packages.${pkgs.hostPlatform.system}.hydra;
|
|
in
|
|
pkgs.runCommand "hydra-manual-${hydra.version}" { }
|
|
''
|
|
mkdir -p $out/share
|
|
cp -prvd ${hydra.doc}/share/doc $out/share/
|
|
|
|
mkdir $out/nix-support
|
|
echo "doc manual $out/share/doc/hydra" >> $out/nix-support/hydra-build-products
|
|
'');
|
|
|
|
tests = import ./nixos-tests.nix {
|
|
inherit forEachSystem nixpkgs nixosModules;
|
|
};
|
|
|
|
container = nixosConfigurations.container.config.system.build.toplevel;
|
|
};
|
|
|
|
checks = forEachSystem (system: {
|
|
build = hydraJobs.build.${system};
|
|
install = hydraJobs.tests.install.${system};
|
|
validate-openapi = hydraJobs.tests.validate-openapi.${system};
|
|
});
|
|
|
|
packages = forEachSystem (system: {
|
|
nix-eval-jobs = nixpkgs.legacyPackages.${system}.callPackage nix-eval-jobs {
|
|
nix = nix.packages.${system}.nix;
|
|
};
|
|
hydra = nixpkgs.legacyPackages.${system}.callPackage ./package.nix {
|
|
inherit (nixpkgs.lib) fileset;
|
|
inherit (self.packages.${system}) nix-eval-jobs;
|
|
rawSrc = self;
|
|
nix = nix.packages.${system}.nix;
|
|
nix-perl-bindings = nix.hydraJobs.perlBindings.${system};
|
|
};
|
|
default = self.packages.${system}.hydra;
|
|
});
|
|
|
|
nixosModules = import ./nixos-modules {
|
|
inherit self;
|
|
};
|
|
|
|
nixosConfigurations.container = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules =
|
|
[
|
|
self.nixosModules.hydra
|
|
self.nixosModules.hydraTest
|
|
self.nixosModules.hydraProxy
|
|
{
|
|
system.configurationRevision = self.lastModifiedDate;
|
|
|
|
boot.isContainer = true;
|
|
networking.useDHCP = false;
|
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
|
networking.hostName = "hydra";
|
|
|
|
services.hydra-dev.useSubstitutes = true;
|
|
}
|
|
];
|
|
};
|
|
|
|
};
|
|
}
|