Flake lock file updates:
• Updated input 'lix':
'git+https://git.lix.systems/lix-project/lix?ref=refs/heads/main&rev=ed9b7f4f84fd60ad8618645cc1bae2d686ff0db6' (2024-10-05)
→ 'git+https://git.lix.systems/lix-project/lix?ref=refs/heads/main&rev=66f6dbda32959dd5cf3a9aaba15af72d037ab7ff' (2024-11-20)
• Updated input 'lix/nix2container':
'github:nlewo/nix2container/3853e5caf9ad24103b13aa6e0e8bcebb47649fe4' (2024-07-10)
→ 'github:nlewo/nix2container/fa6bb0a1159f55d071ba99331355955ae30b3401' (2024-08-30)
• Updated input 'lix/pre-commit-hooks':
'github:cachix/git-hooks.nix/f451c19376071a90d8c58ab1a953c6e9840527fd' (2024-07-15)
→ 'github:cachix/git-hooks.nix/4e743a6920eab45e8ba0fbe49dc459f1423a4b74' (2024-09-19)
• Updated input 'nix-eval-jobs':
'git+https://git.lix.systems/lix-project/nix-eval-jobs?ref=refs/heads/main&rev=42a160bce2fd9ffebc3809746bc80cc7208f9b08' (2024-08-13)
→ 'git+https://git.lix.systems/lix-project/nix-eval-jobs?ref=refs/heads/main&rev=912a9d63319e71ca131e16eea3348145a255db2e' (2024-11-18)
• Updated input 'nix-eval-jobs/flake-parts':
'github:hercules-ci/flake-parts/8471fe90ad337a8074e957b69ca4d0089218391d' (2024-08-01)
→ 'github:hercules-ci/flake-parts/506278e768c2a08bec68eb62932193e341f55c90' (2024-11-01)
• Updated input 'nix-eval-jobs/nix-github-actions':
'github:nix-community/nix-github-actions/622f829f5fe69310a866c8a6cd07e747c44ef820' (2024-07-04)
→ 'github:nix-community/nix-github-actions/e04df33f62cdcf93d73e9a04142464753a16db67' (2024-10-24)
• Updated input 'nix-eval-jobs/treefmt-nix':
'github:numtide/treefmt-nix/349de7bc435bdff37785c2466f054ed1766173be' (2024-08-12)
→ 'github:numtide/treefmt-nix/746901bb8dba96d154b66492a29f5db0693dbfcc' (2024-10-30)
• Updated input 'nixpkgs':
'github:NixOS/nixpkgs/ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6' (2024-10-06)
→ 'github:NixOS/nixpkgs/e8c38b73aeb218e27163376a2d617e61a2ad9b59' (2024-11-16)
118 lines
3.6 KiB
Nix
118 lines
3.6 KiB
Nix
{
|
|
description = "A Nix-based continuous build system";
|
|
|
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
|
|
|
|
inputs.lix.url = "git+https://git.lix.systems/lix-project/lix";
|
|
inputs.lix.inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
inputs.nix-eval-jobs.url = "git+https://git.lix.systems/ma27/nix-eval-jobs?ref=update-lix";
|
|
inputs.nix-eval-jobs.inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.nix-eval-jobs.inputs.lix.follows = "lix";
|
|
|
|
outputs = { self, nix-eval-jobs, nixpkgs, lix }:
|
|
let
|
|
systems = [ "x86_64-linux" "aarch64-linux" ];
|
|
forEachSystem = nixpkgs.lib.genAttrs systems;
|
|
|
|
overlayList = [ self.overlays.default lix.overlays.default ];
|
|
|
|
pkgsBySystem = forEachSystem (system: import nixpkgs {
|
|
inherit system;
|
|
overlays = overlayList;
|
|
});
|
|
|
|
in
|
|
rec {
|
|
|
|
# A Nixpkgs overlay that provides a 'hydra' package.
|
|
overlays.default = final: prev: {
|
|
hydra = final.callPackage ./package.nix {
|
|
inherit (final.lib) fileset;
|
|
nix-eval-jobs = nix-eval-jobs.packages.${final.system}.default;
|
|
rawSrc = self;
|
|
};
|
|
};
|
|
|
|
hydraJobs = {
|
|
|
|
build = forEachSystem (system: packages.${system}.hydra);
|
|
|
|
buildNoTests = forEachSystem (system:
|
|
packages.${system}.hydra.overrideAttrs (_: {
|
|
doCheck = false;
|
|
})
|
|
);
|
|
|
|
manual = forEachSystem (system:
|
|
let pkgs = pkgsBySystem.${system}; in
|
|
pkgs.runCommand "hydra-manual-${pkgs.hydra.version}" { }
|
|
''
|
|
mkdir -p $out/share
|
|
cp -prvd ${pkgs.hydra}/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 pkgsBySystem 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: {
|
|
hydra = pkgsBySystem.${system}.hydra;
|
|
default = pkgsBySystem.${system}.hydra;
|
|
});
|
|
|
|
devShells = forEachSystem (system: let
|
|
pkgs = pkgsBySystem.${system};
|
|
lib = pkgs.lib;
|
|
|
|
mkDevShell = stdenv: (pkgs.mkShell.override { inherit stdenv; }) {
|
|
inputsFrom = [ (self.packages.${system}.default.override { inherit stdenv; }) ];
|
|
|
|
packages =
|
|
lib.optional (stdenv.cc.isClang && stdenv.hostPlatform == stdenv.buildPlatform) pkgs.clang-tools;
|
|
};
|
|
in {
|
|
default = mkDevShell pkgs.stdenv;
|
|
clang = mkDevShell pkgs.clangStdenv;
|
|
});
|
|
|
|
nixosModules = import ./nixos-modules {
|
|
overlays = overlayList;
|
|
};
|
|
|
|
nixosConfigurations.container = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules =
|
|
[
|
|
self.nixosModules.hydra
|
|
self.nixosModules.overlayNixpkgsForThisHydra
|
|
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;
|
|
}
|
|
];
|
|
};
|
|
|
|
};
|
|
}
|