Merge pull request #1419 from NixOS/refactor-flake

make nixos module hydra from this repository by default
This commit is contained in:
Jörg Thalheim 2024-10-20 15:06:48 +02:00 committed by GitHub
commit d3966d3e4c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 46 additions and 141 deletions

View file

@ -1,73 +1,5 @@
{ {
"nodes": { "nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712014858,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"git-hooks-nix": {
"inputs": {
"flake-compat": [
"nix"
],
"gitignore": [
"nix"
],
"nixpkgs": [
"nix",
"nixpkgs"
],
"nixpkgs-stable": [
"nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1726745158,
"narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"libgit2": { "libgit2": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -87,15 +19,17 @@
}, },
"nix": { "nix": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": [],
"flake-parts": "flake-parts", "flake-parts": [],
"git-hooks-nix": "git-hooks-nix", "git-hooks-nix": [],
"libgit2": "libgit2", "libgit2": [
"libgit2"
],
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-23-11": "nixpkgs-23-11", "nixpkgs-23-11": [],
"nixpkgs-regression": "nixpkgs-regression" "nixpkgs-regression": []
}, },
"locked": { "locked": {
"lastModified": 1726787955, "lastModified": 1726787955,
@ -128,40 +62,9 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-23-11": {
"locked": {
"lastModified": 1717159533,
"narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
"type": "github"
}
},
"nixpkgs-regression": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"libgit2": "libgit2",
"nix": "nix", "nix": "nix",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }

View file

@ -2,21 +2,23 @@
description = "A Nix-based continuous build system"; description = "A Nix-based continuous build system";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05-small"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05-small";
inputs.libgit2 = { url = "github:libgit2/libgit2/v1.8.1"; flake = false; };
inputs.nix.url = "github:NixOS/nix/2.24-maintenance"; inputs.nix.url = "github:NixOS/nix/2.24-maintenance";
inputs.nix.inputs.nixpkgs.follows = "nixpkgs"; inputs.nix.inputs.nixpkgs.follows = "nixpkgs";
inputs.nix.inputs.libgit2.follows = "libgit2";
outputs = { self, nixpkgs, nix }: # hide nix dev tooling from our lock file
inputs.nix.inputs.flake-parts.follows = "";
inputs.nix.inputs.git-hooks-nix.follows = "";
inputs.nix.inputs.nixpkgs-regression.follows = "";
inputs.nix.inputs.nixpkgs-23-11.follows = "";
inputs.nix.inputs.flake-compat.follows = "";
outputs = { self, nixpkgs, nix, ... }:
let let
systems = [ "x86_64-linux" "aarch64-linux" ]; systems = [ "x86_64-linux" "aarch64-linux" ];
forEachSystem = nixpkgs.lib.genAttrs systems; forEachSystem = nixpkgs.lib.genAttrs systems;
overlayList = [ self.overlays.default nix.overlays.default ];
pkgsBySystem = forEachSystem (system: import nixpkgs {
inherit system;
overlays = overlayList;
});
in in
rec { rec {
@ -30,7 +32,6 @@
}; };
hydraJobs = { hydraJobs = {
build = forEachSystem (system: packages.${system}.hydra); build = forEachSystem (system: packages.${system}.hydra);
buildNoTests = forEachSystem (system: buildNoTests = forEachSystem (system:
@ -39,19 +40,21 @@
}) })
); );
manual = forEachSystem (system: manual = forEachSystem (system: let
let pkgs = pkgsBySystem.${system}; in pkgs = nixpkgs.legacyPackages.${system};
pkgs.runCommand "hydra-manual-${pkgs.hydra.version}" { } hydra = self.packages.${pkgs.hostPlatform.system}.hydra;
in
pkgs.runCommand "hydra-manual-${hydra.version}" { }
'' ''
mkdir -p $out/share mkdir -p $out/share
cp -prvd ${pkgs.hydra}/share/doc $out/share/ cp -prvd ${hydra}/share/doc $out/share/
mkdir $out/nix-support mkdir $out/nix-support
echo "doc manual $out/share/doc/hydra" >> $out/nix-support/hydra-build-products echo "doc manual $out/share/doc/hydra" >> $out/nix-support/hydra-build-products
''); '');
tests = import ./nixos-tests.nix { tests = import ./nixos-tests.nix {
inherit forEachSystem nixpkgs pkgsBySystem nixosModules; inherit forEachSystem nixpkgs nixosModules;
}; };
container = nixosConfigurations.container.config.system.build.toplevel; container = nixosConfigurations.container.config.system.build.toplevel;
@ -64,12 +67,17 @@
}); });
packages = forEachSystem (system: { packages = forEachSystem (system: {
hydra = pkgsBySystem.${system}.hydra; hydra = nixpkgs.legacyPackages.${system}.callPackage ./package.nix {
default = pkgsBySystem.${system}.hydra; inherit (nixpkgs.lib) fileset;
rawSrc = self;
nix = nix.packages.${system}.nix;
nix-perl-bindings = nix.hydraJobs.perlBindings.${system};
};
default = self.packages.${system}.hydra;
}); });
nixosModules = import ./nixos-modules { nixosModules = import ./nixos-modules {
overlays = overlayList; inherit self;
}; };
nixosConfigurations.container = nixpkgs.lib.nixosSystem { nixosConfigurations.container = nixpkgs.lib.nixosSystem {
@ -77,7 +85,6 @@
modules = modules =
[ [
self.nixosModules.hydra self.nixosModules.hydra
self.nixosModules.overlayNixpkgsForThisHydra
self.nixosModules.hydraTest self.nixosModules.hydraTest
self.nixosModules.hydraProxy self.nixosModules.hydraProxy
{ {

View file

@ -1,11 +1,10 @@
{ overlays }: { self }:
{ {
hydra = import ./hydra.nix; hydra = { pkgs, lib,... }: {
_file = ./default.nix;
overlayNixpkgsForThisHydra = { pkgs, ... }: { imports = [ ./hydra.nix ];
nixpkgs = { inherit overlays; }; services.hydra-dev.package = lib.mkDefault self.packages.${pkgs.hostPlatform.system}.hydra;
services.hydra.package = pkgs.hydra;
}; };
hydraTest = { pkgs, ... }: { hydraTest = { pkgs, ... }: {

View file

@ -68,8 +68,6 @@ in
package = mkOption { package = mkOption {
type = types.path; type = types.path;
default = pkgs.hydra;
defaultText = literalExpression "pkgs.hydra";
description = "The Hydra package."; description = "The Hydra package.";
}; };

View file

@ -1,13 +1,12 @@
{ forEachSystem, nixpkgs, pkgsBySystem, nixosModules }: { forEachSystem, nixpkgs, nixosModules }:
let let
# NixOS configuration used for VM tests. # NixOS configuration used for VM tests.
hydraServer = hydraServer =
{ config, pkgs, ... }: { pkgs, ... }:
{ {
imports = [ imports = [
nixosModules.hydra nixosModules.hydra
nixosModules.overlayNixpkgsForThisHydra
nixosModules.hydraTest nixosModules.hydraTest
]; ];
@ -44,11 +43,10 @@ in
}); });
notifications = forEachSystem (system: notifications = forEachSystem (system:
let pkgs = pkgsBySystem.${system}; in
with import (nixpkgs + "/nixos/lib/testing-python.nix") { inherit system; }; with import (nixpkgs + "/nixos/lib/testing-python.nix") { inherit system; };
simpleTest { simpleTest {
name = "hydra-notifications"; name = "hydra-notifications";
nodes.machine = { pkgs, ... }: { nodes.machine = {
imports = [ hydraServer ]; imports = [ hydraServer ];
services.hydra-dev.extraConfig = '' services.hydra-dev.extraConfig = ''
<influxdb> <influxdb>
@ -89,7 +87,7 @@ in
# Setup the project and jobset # Setup the project and jobset
machine.succeed( machine.succeed(
"su - hydra -c 'perl -I ${pkgs.hydra.perlDeps}/lib/perl5/site_perl ${./t/setup-notifications-jobset.pl}' >&2" "su - hydra -c 'perl -I ${config.services.hydra-dev.package.perlDeps}/lib/perl5/site_perl ${./t/setup-notifications-jobset.pl}' >&2"
) )
# Wait until hydra has build the job and # Wait until hydra has build the job and
@ -103,7 +101,7 @@ in
}); });
gitea = forEachSystem (system: gitea = forEachSystem (system:
let pkgs = pkgsBySystem.${system}; in let pkgs = nixpkgs.legacyPackages.${system}; in
with import (nixpkgs + "/nixos/lib/testing-python.nix") { inherit system; }; with import (nixpkgs + "/nixos/lib/testing-python.nix") { inherit system; };
makeTest { makeTest {
name = "hydra-gitea"; name = "hydra-gitea";
@ -298,7 +296,7 @@ in
}); });
validate-openapi = forEachSystem (system: validate-openapi = forEachSystem (system:
let pkgs = pkgsBySystem.${system}; in let pkgs = nixpkgs.legacyPackages.${system}; in
pkgs.runCommand "validate-openapi" pkgs.runCommand "validate-openapi"
{ buildInputs = [ pkgs.openapi-generator-cli ]; } { buildInputs = [ pkgs.openapi-generator-cli ]; }
'' ''