Ryan Lahfa
4fabadccb4
All checks were successful
Check meta / check_dns (pull_request) Successful in 20s
Check meta / check_meta (pull_request) Successful in 21s
Check workflows / check_workflows (pull_request) Successful in 27s
Build all the nodes / geo02 (pull_request) Successful in 3m44s
Build all the nodes / geo01 (pull_request) Successful in 3m50s
Build all the nodes / bridge01 (pull_request) Successful in 4m12s
Build all the nodes / rescue01 (pull_request) Successful in 4m5s
Build all the nodes / storage01 (pull_request) Successful in 4m2s
Build all the nodes / compute01 (pull_request) Successful in 4m45s
Run pre-commit on all files / check (pull_request) Successful in 32s
Build all the nodes / vault01 (pull_request) Successful in 1m24s
Build all the nodes / web02 (pull_request) Successful in 1m18s
Build all the nodes / web03 (pull_request) Successful in 1m18s
Build all the nodes / web01 (pull_request) Successful in 1m54s
Check meta / check_meta (push) Successful in 26s
Check meta / check_dns (push) Successful in 26s
Build all the nodes / geo01 (push) Successful in 1m21s
Build all the nodes / bridge01 (push) Successful in 1m21s
Build all the nodes / geo02 (push) Successful in 1m4s
Build all the nodes / compute01 (push) Successful in 1m48s
Build all the nodes / storage01 (push) Successful in 1m42s
Build all the nodes / rescue01 (push) Successful in 1m44s
Build all the nodes / vault01 (push) Successful in 1m36s
Run pre-commit on all files / check (push) Successful in 24s
Build all the nodes / web01 (push) Successful in 1m53s
Build all the nodes / web02 (push) Successful in 1m19s
Build all the nodes / web03 (push) Successful in 1m20s
In the future, we should not have to do this. Signed-off-by: Ryan Lahfa <ryan@dgnum.eu>
137 lines
4 KiB
Nix
137 lines
4 KiB
Nix
/*
|
|
Copyright :
|
|
- Maurice Debray <maurice.debray@dgnum.eu> 2023
|
|
- Tom Hubrecht <tom.hubrecht@dgnum.eu> 2023
|
|
|
|
Ce logiciel est un programme informatique servant à déployer des
|
|
configurations de serveurs via NixOS.
|
|
|
|
Ce logiciel est régi par la licence CeCILL soumise au droit français et
|
|
respectant les principes de diffusion des logiciels libres. Vous pouvez
|
|
utiliser, modifier et/ou redistribuer ce programme sous les conditions
|
|
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
|
|
sur le site "http://www.cecill.info".
|
|
|
|
En contrepartie de l'accessibilité au code source et des droits de copie,
|
|
de modification et de redistribution accordés par cette licence, il n'est
|
|
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
|
|
seule une responsabilité restreinte pèse sur l'auteur du programme, le
|
|
titulaire des droits patrimoniaux et les concédants successifs.
|
|
|
|
A cet égard l'attention de l'utilisateur est attirée sur les risques
|
|
associés au chargement, à l'utilisation, à la modification et/ou au
|
|
développement et à la reproduction du logiciel par l'utilisateur étant
|
|
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
|
|
manipuler et qui le réserve donc à des développeurs et des professionnels
|
|
avertis possédant des connaissances informatiques approfondies. Les
|
|
utilisateurs sont donc invités à charger et tester l'adéquation du
|
|
logiciel à leurs besoins dans des conditions permettant d'assurer la
|
|
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
|
|
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
|
|
|
|
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
|
|
pris connaissance de la licence CeCILL, et que vous en avez accepté les
|
|
termes.
|
|
*/
|
|
|
|
{
|
|
sources ? import ./npins,
|
|
pkgs ? import sources.nixpkgs { },
|
|
}:
|
|
|
|
let
|
|
inherit (pkgs.lib)
|
|
isFunction
|
|
mapAttrs
|
|
mapAttrs'
|
|
nameValuePair
|
|
removeSuffix
|
|
;
|
|
|
|
git-checks = (import sources.git-hooks).run {
|
|
src = ./.;
|
|
|
|
hooks = {
|
|
statix = {
|
|
enable = true;
|
|
stages = [ "pre-push" ];
|
|
settings.ignore = [
|
|
"**/lon.nix"
|
|
"**/npins"
|
|
];
|
|
};
|
|
|
|
deadnix = {
|
|
enable = true;
|
|
stages = [ "pre-push" ];
|
|
};
|
|
|
|
nixfmt-rfc-style = {
|
|
enable = true;
|
|
stages = [ "pre-push" ];
|
|
};
|
|
|
|
commitizen.enable = true;
|
|
};
|
|
};
|
|
|
|
workflows = (import sources.nix-actions { inherit pkgs; }).install {
|
|
src = ./.;
|
|
|
|
workflows = mapAttrs' (
|
|
name: _:
|
|
nameValuePair (removeSuffix ".nix" name) (
|
|
let
|
|
w = import ./workflows/${name};
|
|
in
|
|
if isFunction w then w { inherit (pkgs) lib; } else w
|
|
)
|
|
) (builtins.readDir ./workflows);
|
|
};
|
|
|
|
scripts = import ./scripts { inherit pkgs sources; };
|
|
in
|
|
|
|
{
|
|
nodes = builtins.mapAttrs (
|
|
host: { site, ... }: "${host}.${site}.infra.dgnum.eu"
|
|
) (import ./meta/nodes.nix);
|
|
|
|
dns = import ./meta/dns.nix;
|
|
|
|
mkCacheSettings = import ./machines/storage01/tvix-cache/cache-settings.nix;
|
|
|
|
devShell = pkgs.mkShell {
|
|
name = "dgnum-infra";
|
|
|
|
packages = [
|
|
(pkgs.nixos-generators.overrideAttrs (_: {
|
|
version = "1.8.0-unstable";
|
|
src = sources.nixos-generators;
|
|
}))
|
|
pkgs.npins
|
|
|
|
(pkgs.callPackage ./lib/colmena {
|
|
colmena = pkgs.callPackage "${sources.colmena}/package.nix" { };
|
|
})
|
|
(pkgs.callPackage "${sources.agenix}/pkgs/agenix.nix" { })
|
|
(pkgs.callPackage "${sources.lon}/nix/packages/lon.nix" { })
|
|
] ++ (builtins.attrValues scripts);
|
|
|
|
shellHook = ''
|
|
${git-checks.shellHook}
|
|
${workflows.shellHook}
|
|
'';
|
|
|
|
preferLocalBuild = true;
|
|
|
|
###
|
|
# Alternative shells
|
|
|
|
passthru = mapAttrs (name: value: pkgs.mkShell (value // { inherit name; })) {
|
|
pre-commit.shellHook = git-checks.shellHook;
|
|
check-workflows.shellHook = workflows.shellHook;
|
|
eval-nodes.packages = [ scripts.cache-node ];
|
|
};
|
|
};
|
|
}
|