Skip to content

Commit

Permalink
make nixos module hydra from this repository by default
Browse files Browse the repository at this point in the history
When people reach out to the git repository they probably want to use
hydra from the same source.
This also removes the need for an overlay with simpler and more
performant direct use of the nixpkgs passed in. Before it was
re-importing nixpkgs.
  • Loading branch information
Mic92 committed Oct 19, 2024
1 parent c69e301 commit 77e7480
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 32 deletions.
32 changes: 14 additions & 18 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,6 @@
let
systems = [ "x86_64-linux" "aarch64-linux" ];
forEachSystem = nixpkgs.lib.genAttrs systems;

overlayList = [ self.overlays.default nix.overlays.default ];

pkgsBySystem = forEachSystem (system: import nixpkgs {
inherit system;
overlays = overlayList;
});

in
rec {

Expand All @@ -30,7 +22,6 @@
};

hydraJobs = {

build = forEachSystem (system: packages.${system}.hydra);

buildNoTests = forEachSystem (system:
Expand All @@ -39,19 +30,21 @@
})
);

manual = forEachSystem (system:
let pkgs = pkgsBySystem.${system}; in
pkgs.runCommand "hydra-manual-${pkgs.hydra.version}" { }
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 ${pkgs.hydra}/share/doc $out/share/
cp -prvd ${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;
inherit forEachSystem nixpkgs nixosModules;
};

container = nixosConfigurations.container.config.system.build.toplevel;
Expand All @@ -64,20 +57,23 @@
});

packages = forEachSystem (system: {
hydra = pkgsBySystem.${system}.hydra;
default = pkgsBySystem.${system}.hydra;
hydra = nixpkgs.legacyPackages.${system}.callPackage ./package.nix {
inherit (nixpkgs.lib) fileset;
rawSrc = self;
nix-perl-bindings = nix.hydraJobs.perlBindings.${system};
};
default = self.packages.${system}.hydra;
});

nixosModules = import ./nixos-modules {
overlays = overlayList;
inherit self;
};

nixosConfigurations.container = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules =
[
self.nixosModules.hydra
self.nixosModules.overlayNixpkgsForThisHydra
self.nixosModules.hydraTest
self.nixosModules.hydraProxy
{
Expand Down
11 changes: 5 additions & 6 deletions nixos-modules/default.nix
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
{ overlays }:
{ self }:

{
hydra = import ./hydra.nix;

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

hydraTest = { pkgs, ... }: {
Expand Down
14 changes: 6 additions & 8 deletions nixos-tests.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
{ forEachSystem, nixpkgs, pkgsBySystem, nixosModules }:
{ forEachSystem, nixpkgs, nixosModules }:

let
# NixOS configuration used for VM tests.
hydraServer =
{ config, pkgs, ... }:
{ pkgs, ... }:
{
imports = [
nixosModules.hydra
nixosModules.overlayNixpkgsForThisHydra
nixosModules.hydraTest
];

Expand Down Expand Up @@ -44,11 +43,10 @@ in
});

notifications = forEachSystem (system:
let pkgs = pkgsBySystem.${system}; in
with import (nixpkgs + "/nixos/lib/testing-python.nix") { inherit system; };
simpleTest {
name = "hydra-notifications";
nodes.machine = { pkgs, ... }: {
nodes.machine = {
imports = [ hydraServer ];
services.hydra-dev.extraConfig = ''
<influxdb>
Expand Down Expand Up @@ -89,7 +87,7 @@ in
# Setup the project and jobset
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
Expand All @@ -103,7 +101,7 @@ in
});

gitea = forEachSystem (system:
let pkgs = pkgsBySystem.${system}; in
let pkgs = nixpkgs.legacyPackages.${system}; in
with import (nixpkgs + "/nixos/lib/testing-python.nix") { inherit system; };
makeTest {
name = "hydra-gitea";
Expand Down Expand Up @@ -298,7 +296,7 @@ in
});

validate-openapi = forEachSystem (system:
let pkgs = pkgsBySystem.${system}; in
let pkgs = nixpkgs.legacyPackages.${system}; in
pkgs.runCommand "validate-openapi"
{ buildInputs = [ pkgs.openapi-generator-cli ]; }
''
Expand Down

0 comments on commit 77e7480

Please sign in to comment.