aboutsummaryrefslogblamecommitdiff
path: root/flakes/private/buildbot/flake.nix
blob: 8b3c704c07e5d3153bc803fea91f735fe2aa4583 (plain) (tree)









































































                                                                                                                                                                 
{
  description = "The continuous integration framework";
  inputs.flake-utils.url = "github:numtide/flake-utils";
  inputs.nixpkgs = {
    url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
    flake = false;
  };
  inputs.buildslist = {
    url = "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist";
    type = "git";
    flake = false;
  };
  outputs = { self, nixpkgs, flake-utils, buildslist }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
    let
      pkgs = import nixpkgs { inherit system; overlays = []; };
      python = pkgs.python38;
      wokkel = python.pkgs.buildPythonPackage rec {
        pname = "wokkel";
        version = "18.0.0";
        src = python.pkgs.fetchPypi {
          inherit pname version;
          sha256 = "1spq44gg8gsviqx1dvlmjpgfc0wk0jpyx4ap01y2pad1ai9cw016";
        };
        propagatedBuildInputs = with python.pkgs; [ twisted.extras.tls twisted incremental dateutil ];
        doCheck = false;
      };
      buildbot_common = python.pkgs.buildPythonPackage {
        name = "buildbot_common";
        src = ./common;
        format = "other";
        installPhase = ''
          mkdir -p $out/${python.sitePackages}
          cp -a $src $out/${python.sitePackages}/buildbot_common
        '';
      };
      buildbot-full = python.pkgs.buildbot-full.withPlugins [ buildslist-plugin ] // {
        inherit buildbot_common;
        buildbot_config = project: python.pkgs.buildPythonPackage (rec {
          name = "buildbot_config-${project.name}";
          src = if project.name == "test" then ./test_project else project.src;
          format = "other";
          installPhase = ''
            mkdir -p $out/${python.sitePackages}
            cp -a $src $out/${python.sitePackages}/buildbot_config
            '';
        });
        common_packages = pkgs: [
          (pkgs.apprise.overridePythonAttrs(old: { propagatedBuildInputs = old.propagatedBuildInputs ++ [ pkgs.sleekxmpp ]; })) pkgs.libvirt pkgs.treq pkgs.ldap3
          buildbot-full pkgs.buildbot-worker pkgs.pip buildbot_common
          wokkel
        ];
      };
      buildslist-plugin = pkgs.callPackage ./buildslist {
        pythonPackages = python.pkgs;
        buildslist_src = buildslist;
      };
    in rec {
      packages = {
        buildslist = buildslist-plugin;
        buildbot-full = buildbot-full;
        buildbot_common = buildbot_common;
      };
      defaultPackage = packages.buildbot-full;
      legacyPackages = packages;
      checks = packages;
    }) // rec {
      overlays = {
        immae-buildbot = final: prev: {
          immae-buildbot = self.defaultPackage."${final.system}";
        };
      };
      overlay = overlays.immae-buildbot;
    };
}