{ lib, config, ... }: let inherit (lib) mkEnableOption mkIf types mkOption tf; cfg = config.bagel.hydra; in { options.bagel.hydra = { enable = mkEnableOption "the Hydra jobsets"; }; config = mkIf cfg.enable { terraform.required_providers.hydra = { version = "~> 0.1"; source = "DeterminateSystems/hydra"; }; resource.secret_resource.hydra_password.lifecycle.prevent_destroy = true; provider.hydra = { host = "https://hydra.forkos.org"; username = "terraform"; password = tf.ref "resource.secret_resource.hydra_password.value"; }; resource.hydra_project.forkos = { name = "forkos"; display_name = "ForkOS"; description = "ForkOS packages collection"; homepage = "https://cl.forkos.org"; owner = "terraform"; enabled = true; visible = true; }; resource.hydra_jobset.raito-nixos-rolling-small = { project = config.resource.hydra_project.forkos.name; state = "enabled"; visible = true; name = "raito-nixos-rolling-small"; type = "legacy"; description = "master branch for raito-nixos"; nix_expression = { file = "pkgs/top-level/release.nix"; input = "nixpkgs"; }; check_interval = 0; scheduling_shares = 3000; keep_evaluations = 3; email_notifications = false; input = [ { name = "nixpkgs"; type = "git"; value = "https://cl.forkos.org/nixpkgs"; notify_committers = false; } { name = "officialRelease"; type = "boolean"; value = "false"; notify_committers = false; } { name = "supportedSystems"; type = "nix"; value = ''[ "x86_64-linux" ]''; } ]; }; resource.hydra_jobset.delroth-nixpkgs-staging-small = { project = config.resource.hydra_project.forkos.name; state = "enabled"; visible = true; name = "delroth-nixpkgs-staging-small"; type = "legacy"; description = "small eval of nixpkgs staging for testing"; nix_expression = { file = "pkgs/top-level/release-small.nix"; input = "nixpkgs"; }; check_interval = 0; scheduling_shares = 3000; keep_evaluations = 3; email_notifications = false; input = [ { name = "nixpkgs"; type = "git"; value = "https://github.com/nixos/nixpkgs staging"; notify_committers = false; } { name = "officialRelease"; type = "boolean"; value = "false"; notify_committers = false; } { name = "supportedSystems"; type = "nix"; value = ''[ "x86_64-linux" ]''; } ]; }; resource.hydra_project.infra = { name = "infra"; display_name = "ForkOS Infra"; description = "ForkOS infra repository"; homepage = "https://git.lix.system/the-distro/infra"; owner = "terraform"; enabled = true; visible = true; }; resource.hydra_jobset.infra_main = { project = config.resource.hydra_project.infra.name; state = "enabled"; visible = true; name = "main"; type = "flake"; description = "main branch for the infra repo"; flake_uri = "git+https://git.lix.systems/the-distro/infra"; check_interval = 600; scheduling_shares = 3000; keep_evaluations = 5; email_notifications = false; }; resource.hydra_project.hydra = { name = "hydra"; display_name = "ForkOS Hydra"; description = "ForkOS hydra fork"; homepage = "https://git.lix.system/lix-project/hydra"; owner = "terraform"; enabled = true; visible = true; }; resource.hydra_jobset.hydra_main = { project = config.resource.hydra_project.hydra.name; state = "enabled"; visible = true; name = "main"; type = "flake"; description = "main branch for the hydra repo"; flake_uri = "git+https://git.lix.systems/lix-project/hydra"; check_interval = 600; scheduling_shares = 3000; keep_evaluations = 5; email_notifications = false; }; resource.hydra_jobset.yureka-staging-test = { project = config.resource.hydra_project.forkos.name; state = "enabled"; visible = true; name = "yureka-staging-test"; type = "legacy"; description = "staging branch for yureka-nixos"; nix_expression = { file = "pkgs/top-level/release.nix"; input = "nixpkgs"; }; check_interval = 0; scheduling_shares = 3000; keep_evaluations = 3; email_notifications = false; input = [ { name = "nixpkgs"; type = "git"; value = "https://cl.forkos.org/nixpkgs sandbox/yureka/staging-test"; notify_committers = false; } { name = "officialRelease"; type = "boolean"; value = "false"; notify_committers = false; } { name = "supportedSystems"; type = "nix"; value = ''[ "x86_64-linux" ]''; } ]; }; }; }