Merge pull request #1419 from NixOS/refactor-flake
make nixos module hydra from this repository by default
This commit is contained in:
commit
d3966d3e4c
115
flake.lock
generated
115
flake.lock
generated
@ -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"
|
||||||
}
|
}
|
||||||
|
45
flake.nix
45
flake.nix
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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, ... }: {
|
||||||
|
@ -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.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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 ]; }
|
||||||
''
|
''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user