aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-agent/default.nix49
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-agent/generic.nix46
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-cli/default.nix28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/drone-cli/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/drone/default.nix23
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/fly/default.nix37
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix51
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gitlab-runner/fix-shell-path.patch28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gocd-agent/default.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gocd-server/default.nix28
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/hercules-ci-agent/default.nix21
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/jenkins/default.nix64
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/laminar/default.nix80
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/laminar/patches/no-network.patch26
14 files changed, 536 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-agent/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-agent/default.nix
new file mode 100644
index 000000000000..223b814708d3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-agent/default.nix
@@ -0,0 +1,49 @@
+{ fetchFromGitHub, stdenv, buildGoModule,
+ makeWrapper, coreutils, git, openssh, bash, gnused, gnugrep }:
+buildGoModule rec {
+ name = "buildkite-agent-${version}";
+ version = "3.26.0";
+
+ goPackagePath = "github.com/buildkite/agent";
+
+ src = fetchFromGitHub {
+ owner = "buildkite";
+ repo = "agent";
+ rev = "v${version}";
+ sha256 = "1z8hiamg3h1fnsmr8j5l9q6c8cd81lqmd00gcmz4spw73pqfxg3r";
+ };
+
+ vendorSha256 = "1kxnpn4py8a2rz1gwg0y3yiwcwphj38pkp2k9z1p85ccm2wblljz";
+
+ postPatch = ''
+ substituteInPlace bootstrap/shell/shell.go --replace /bin/bash ${bash}/bin/bash
+ '';
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ doCheck = false;
+
+ postInstall = ''
+ # Fix binary name
+ mv $out/bin/{agent,buildkite-agent}
+
+ # These are runtime dependencies
+ wrapProgram $out/bin/buildkite-agent \
+ --prefix PATH : '${stdenv.lib.makeBinPath [ openssh git coreutils gnused gnugrep ]}'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Build runner for buildkite.com";
+ longDescription = ''
+ The buildkite-agent is a small, reliable, and cross-platform build runner
+ that makes it easy to run automated builds on your own infrastructure.
+ It’s main responsibilities are polling buildkite.com for work, running
+ build jobs, reporting back the status code and output log of the job,
+ and uploading the job's artifacts.
+ '';
+ homepage = "https://buildkite.com/docs/agent";
+ license = licenses.mit;
+ maintainers = with maintainers; [ pawelpacana zimbatm rvl ];
+ platforms = with platforms; unix ++ darwin;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-agent/generic.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-agent/generic.nix
new file mode 100644
index 000000000000..391782014561
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-agent/generic.nix
@@ -0,0 +1,46 @@
+{ stdenv, buildGoPackage, makeWrapper, coreutils, git, openssh, bash, gnused, gnugrep
+, src, version, hasBootstrapScript, postPatch ? ""
+, ... }:
+let
+ goPackagePath = "github.com/buildkite/agent";
+in
+buildGoPackage {
+ pname = "buildkite-agent";
+ inherit version;
+
+ inherit goPackagePath src postPatch;
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ postInstall = ''
+ ${stdenv.lib.optionalString hasBootstrapScript ''
+ # Install bootstrap.sh
+ mkdir -p $out/libexec/buildkite-agent
+ cp $NIX_BUILD_TOP/go/src/${goPackagePath}/templates/bootstrap.sh $out/libexec/buildkite-agent
+ sed -e "s|#!/bin/bash|#!${bash}/bin/bash|g" -i $out/libexec/buildkite-agent/bootstrap.sh
+ ''}
+
+ # Fix binary name
+ mv $out/bin/{agent,buildkite-agent}
+
+ # These are runtime dependencies
+ wrapProgram $out/bin/buildkite-agent \
+ ${stdenv.lib.optionalString hasBootstrapScript "--set BUILDKITE_BOOTSTRAP_SCRIPT_PATH $out/libexec/buildkite-agent/bootstrap.sh"} \
+ --prefix PATH : '${stdenv.lib.makeBinPath [ openssh git coreutils gnused gnugrep ]}'
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Build runner for buildkite.com";
+ longDescription = ''
+ The buildkite-agent is a small, reliable, and cross-platform build runner
+ that makes it easy to run automated builds on your own infrastructure.
+ It’s main responsibilities are polling buildkite.com for work, running
+ build jobs, reporting back the status code and output log of the job,
+ and uploading the job's artifacts.
+ '';
+ homepage = "https://buildkite.com/docs/agent";
+ license = licenses.mit;
+ maintainers = with maintainers; [ pawelpacana zimbatm rvl ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-cli/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-cli/default.nix
new file mode 100644
index 000000000000..aee2a4e23416
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/buildkite-cli/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+ pname = "buildkite-cli";
+ version = "1.1.0";
+
+ src = fetchFromGitHub {
+ owner = "buildkite";
+ repo = "cli";
+ rev = "v${version}";
+ sha256 = "05hz59qzadkk4ji5icv5sxih31pnn0abnmiwcyfa2mr3l5jaqjnd";
+ };
+
+ vendorSha256 = "0jxh3yhh0sdvaykhinxngpipk369hw8z1y3g2z4c1115m5rjp2bb";
+
+ doCheck = false;
+
+ subPackages = [ "cmd/bk" ];
+
+ buildFlagsArray = [ "-ldflags=-s -w -X main.VERSION=${version}" ];
+
+ meta = with lib; {
+ description = "A command line interface for Buildkite";
+ homepage = "https://github.com/buildkite/cli";
+ license = licenses.mit;
+ maintainers = with maintainers; [ groodt ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/drone-cli/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/drone-cli/default.nix
new file mode 100644
index 000000000000..2a8e10008c2b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/drone-cli/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, buildGoModule }:
+
+let version = "1.2.4";
+in buildGoModule rec {
+ inherit version;
+ pname = "drone-cli";
+ revision = "v${version}";
+
+ vendorSha256 = "0v94rwxkbj85l3brbm792xf1rfs3vgnwpgjczwqip1gm159dpnd7";
+
+ doCheck = false;
+
+ preBuild = ''
+ buildFlagsArray+=("-ldflags" "-X main.version=${version}")
+ '';
+
+ src = fetchFromGitHub {
+ owner = "drone";
+ repo = "drone-cli";
+ rev = revision;
+ sha256 = "14sm5k2ifvr4g9369zqgb92vrr4rc0bxf5m52l3g8bd2s8fq8nx8";
+ };
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ bricewge ];
+ license = licenses.asl20;
+ description = "Command line client for the Drone continuous integration server";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/drone/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/drone/default.nix
new file mode 100644
index 000000000000..307dda4f993b
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/drone/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, buildGoModule }:
+
+buildGoModule rec {
+ name = "drone.io-${version}";
+ version = "1.9.0";
+
+ vendorSha256 = "0idf11sr417lxcjryplgb87affr6lgzxazzlyvk0y40hp8zbhwsx";
+
+ doCheck = false;
+
+ src = fetchFromGitHub {
+ owner = "drone";
+ repo = "drone";
+ rev = "v${version}";
+ sha256 = "1lsyd245fr1f74rpccvvw41h5g75b79afrb8g589bj13ggjav0xy";
+ };
+
+ meta = with stdenv.lib; {
+ maintainers = with maintainers; [ elohmeier vdemeester ];
+ license = licenses.asl20;
+ description = "Continuous Integration platform built on container technology";
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/fly/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/fly/default.nix
new file mode 100644
index 000000000000..f993faf544d7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/fly/default.nix
@@ -0,0 +1,37 @@
+{ buildGoModule, fetchFromGitHub, stdenv, lib, writeText }:
+
+buildGoModule rec {
+ pname = "fly";
+ version = "6.7.2";
+
+ src = fetchFromGitHub {
+ owner = "concourse";
+ repo = "concourse";
+ rev = "v${version}";
+ sha256 = "0c5alf2a0088i25mglla9dl4m3wr5y8pnl5cczgn06sz8qp9a0s0";
+ };
+
+ vendorSha256 = "1fxbxkg7disndlmb065abnfn7sn79qclkcbizmrq49f064w1ijr4";
+
+ doCheck = false;
+
+ subPackages = [ "fly" ];
+
+ buildFlagsArray = ''
+ -ldflags=
+ -X github.com/concourse/concourse.Version=${version}
+ '';
+
+ postInstall = lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
+ mkdir -p $out/share/{bash-completion/completions,zsh/site-functions}
+ $out/bin/fly completion --shell bash > $out/share/bash-completion/completions/fly
+ $out/bin/fly completion --shell zsh > $out/share/zsh/site-functions/_fly
+ '';
+
+ meta = with lib; {
+ description = "A command line interface to Concourse CI";
+ homepage = "https://concourse-ci.org";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ivanbrennan ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
new file mode 100644
index 000000000000..db2d228ce454
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
@@ -0,0 +1,51 @@
+{ lib, buildGoPackage, fetchFromGitLab, fetchurl }:
+
+let
+ version = "13.6.0";
+ # Gitlab runner embeds some docker images these are prebuilt for arm and x86_64
+ docker_x86_64 = fetchurl {
+ url = "https://gitlab-runner-downloads.s3.amazonaws.com/v${version}/helper-images/prebuilt-x86_64.tar.xz";
+ sha256 = "0q1f4dmdkqrdzs3mb5wk6k6x50li4c7js0blzfcz3f3n8gm925jw";
+ };
+
+ docker_arm = fetchurl {
+ url = "https://gitlab-runner-downloads.s3.amazonaws.com/v${version}/helper-images/prebuilt-arm.tar.xz";
+ sha256 = "1hxjqk4in1a2abcyxj7556fcscxq4cfy24cgcmh1qhvirnm5j6mc";
+ };
+in
+buildGoPackage rec {
+ inherit version;
+ pname = "gitlab-runner";
+ goPackagePath = "gitlab.com/gitlab-org/gitlab-runner";
+ subPackages = [ "." ];
+ commonPackagePath = "${goPackagePath}/common";
+ buildFlagsArray = ''
+ -ldflags=
+ -X ${commonPackagePath}.NAME=gitlab-runner
+ -X ${commonPackagePath}.VERSION=${version}
+ -X ${commonPackagePath}.REVISION=v${version}
+ '';
+
+ src = fetchFromGitLab {
+ owner = "gitlab-org";
+ repo = "gitlab-runner";
+ rev = "v${version}";
+ sha256 = "0vwky4hdkh1qvd61zdf2avbbnn3ya6pdicqggh2fx7k04pnp05mh";
+ };
+
+ patches = [ ./fix-shell-path.patch ];
+
+ postInstall = ''
+ install -d $out/bin/helper-images
+ ln -sf ${docker_x86_64} $out/bin/helper-images/prebuilt-x86_64.tar.xz
+ ln -sf ${docker_arm} $out/bin/helper-images/prebuilt-arm.tar.xz
+ '';
+
+ meta = with lib; {
+ description = "GitLab Runner the continuous integration executor of GitLab";
+ license = licenses.mit;
+ homepage = "https://about.gitlab.com/gitlab-ci/";
+ platforms = platforms.unix ++ platforms.darwin;
+ maintainers = with maintainers; [ bachp zimbatm globin ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gitlab-runner/fix-shell-path.patch b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gitlab-runner/fix-shell-path.patch
new file mode 100644
index 000000000000..8aa419ea5f94
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gitlab-runner/fix-shell-path.patch
@@ -0,0 +1,28 @@
+diff --git a/shells/bash.go b/shells/bash.go
+index 673f4765..a58cc5e2 100644
+--- a/shells/bash.go
++++ b/shells/bash.go
+@@ -5,6 +5,7 @@ import (
+ "bytes"
+ "fmt"
+ "io"
++ "os/exec"
+ "path"
+ "runtime"
+ "strconv"
+@@ -225,7 +226,11 @@ func (b *BashShell) GetConfiguration(info common.ShellScriptInfo) (script *commo
+ if info.User != "" {
+ script.Command = "su"
+ if runtime.GOOS == "linux" {
+- script.Arguments = append(script.Arguments, "-s", "/bin/"+b.Shell)
++ shellPath, err := exec.LookPath(b.Shell)
++ if err != nil {
++ shellPath = "/bin/"+b.Shell
++ }
++ script.Arguments = append(script.Arguments, "-s", shellPath)
+ }
+ script.Arguments = append(script.Arguments, info.User)
+ script.Arguments = append(script.Arguments, "-c", shellCommand)
+--
+2.18.0
+
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gocd-agent/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gocd-agent/default.nix
new file mode 100644
index 000000000000..7cefd896f481
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gocd-agent/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+ name = "gocd-agent-${version}-${rev}";
+ version = "19.3.0";
+ rev = "8959";
+
+ src = fetchurl {
+ url = "https://download.go.cd/binaries/${version}-${rev}/generic/go-agent-${version}-${rev}.zip";
+ sha256 = "1nirdv82i8x4s1dyb0rmxldh8avappd4g3mbbl6xp7r7s0drcprp";
+ };
+ meta = with stdenv.lib; {
+ description = "A continuous delivery server specializing in advanced workflow modeling and visualization";
+ homepage = "http://www.go.cd";
+ license = licenses.asl20;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ grahamc swarren83 ];
+ };
+
+ buildInputs = [ unzip ];
+
+ buildCommand = "
+ unzip $src -d $out
+ mv $out/go-agent-${version} $out/go-agent
+ ";
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gocd-server/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gocd-server/default.nix
new file mode 100644
index 000000000000..d23bc9d8d8e9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/gocd-server/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+ name = "gocd-server-${version}-${rev}";
+ version = "19.3.0";
+ rev = "8959";
+
+ src = fetchurl {
+ url = "https://download.go.cd/binaries/${version}-${rev}/generic/go-server-${version}-${rev}.zip";
+ sha256 = "0c30qzd6awlw0zx91rk6na0mmgykqkgrw9ychx18ivjwma0hr0sc";
+ };
+
+ meta = with stdenv.lib; {
+ description = "A continuous delivery server specializing in advanced workflow modeling and visualization";
+ homepage = "http://www.go.cd";
+ license = licenses.asl20;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ grahamc swarren83 ];
+ };
+
+ buildInputs = [ unzip ];
+
+ buildCommand = "
+ unzip $src -d $out
+ mv $out/go-server-${version} $out/go-server
+ mkdir -p $out/go-server/conf
+ ";
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/hercules-ci-agent/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/hercules-ci-agent/default.nix
new file mode 100644
index 000000000000..c8316f4bb571
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/hercules-ci-agent/default.nix
@@ -0,0 +1,21 @@
+{ gnutar, gzip, git, haskell, haskellPackages, lib, makeWrapper }:
+let
+ inherit (haskell.lib) overrideCabal addBuildDepends;
+ inherit (lib) makeBinPath;
+ pkg =
+ # justStaticExecutables is needed due to https://github.com/NixOS/nix/issues/2990
+ overrideCabal
+ (addBuildDepends (haskell.lib.justStaticExecutables haskellPackages.hercules-ci-agent) [ makeWrapper ])
+ (o: {
+ postInstall = ''
+ ${o.postInstall or ""}
+ mkdir -p $out/libexec
+ mv $out/bin/hercules-ci-agent $out/libexec
+ makeWrapper $out/libexec/hercules-ci-agent $out/bin/hercules-ci-agent --prefix PATH : ${makeBinPath [ gnutar gzip git ]}
+ '';
+ });
+in pkg // {
+ meta = pkg.meta // {
+ position = toString ./default.nix + ":1";
+ };
+ }
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/jenkins/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/jenkins/default.nix
new file mode 100644
index 000000000000..13a6d596599a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/jenkins/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchurl, common-updater-scripts, coreutils, git, gnused, nix, nixfmt
+, writeScript, nixosTests, jq, cacert, curl }:
+
+stdenv.mkDerivation rec {
+ pname = "jenkins";
+ version = "2.263.1";
+
+ src = fetchurl {
+ url = "http://mirrors.jenkins.io/war-stable/${version}/jenkins.war";
+ sha256 = "1wfn5r356fqy8ypqnw44ir0cy8qr5ck6xckxnnn2c9x324mypv8f";
+ };
+
+ buildCommand = ''
+ mkdir -p "$out/webapps"
+ cp "$src" "$out/webapps/jenkins.war"
+ '';
+
+ passthru = {
+ tests = { inherit (nixosTests) jenkins; };
+
+ updateScript = writeScript "update.sh" ''
+ #!${stdenv.shell}
+ set -o errexit
+ PATH=${
+ stdenv.lib.makeBinPath [
+ cacert
+ common-updater-scripts
+ coreutils
+ curl
+ git
+ gnused
+ jq
+ nix
+ nixfmt
+ ]
+ }
+
+ core_json="$(curl -s --fail --location https://updates.jenkins.io/stable/update-center.actual.json | jq .core)"
+ oldVersion=$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion jenkins" | tr -d '"')
+
+ version="$(jq -r .version <<<$core_json)"
+ sha256="$(jq -r .sha256 <<<$core_json)"
+ hash="$(nix-hash --type sha256 --to-base32 "$sha256")"
+ url="$(jq -r .url <<<$core_json)"
+
+ if [ ! "$oldVersion" = "$version" ]; then
+ update-source-version jenkins "$version" "$hash" "$url"
+ nixpkgs="$(git rev-parse --show-toplevel)"
+ default_nix="$nixpkgs/pkgs/development/tools/continuous-integration/jenkins/default.nix"
+ nixfmt "$default_nix"
+ else
+ echo "jenkins is already up-to-date"
+ fi
+ '';
+ };
+
+ meta = with stdenv.lib; {
+ description = "An extendable open source continuous integration server";
+ homepage = "https://jenkins-ci.org";
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ coconnor fpletz earldouglas nequissimus ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/laminar/default.nix b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/laminar/default.nix
new file mode 100644
index 000000000000..5a326e94a544
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/laminar/default.nix
@@ -0,0 +1,80 @@
+{ stdenv
+, lib
+, fetchurl
+, cmake
+, capnproto
+, sqlite
+, boost
+, zlib
+, rapidjson
+, pandoc
+, enableSystemd ? false
+, customConfig ? null
+}:
+let
+ js.vue = fetchurl {
+ url = "https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js";
+ sha256 = "01zklp5cyik65dfn64m8h2y2dxzgbyzgmbf99y7fwgnf0155r7pq";
+ };
+ js.vue-router = fetchurl {
+ url =
+ "https://cdnjs.cloudflare.com/ajax/libs/vue-router/2.7.0/vue-router.min.js";
+ sha256 = "07gx7znb30rk1z7w6ca7dlfjp44q12bbq6jghwfm27mf6psa80as";
+ };
+ js.ansi_up = fetchurl {
+ url = "https://raw.githubusercontent.com/drudru/ansi_up/v1.3.0/ansi_up.js";
+ sha256 = "1993dywxqi2ylnxybwk7m0s0bg2bq7kfllpyr0s8ck6chd0p8i6r";
+ };
+ js.Chart = fetchurl {
+ url = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js";
+ sha256 = "1jh4h12qchsba03dx03mrvs4r8g9qfjn56xm56jqzgqf7r209xq9";
+ };
+ css.bootstrap = fetchurl {
+ url =
+ "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css";
+ sha256 = "11vx860prsx7wsy8b0yrrk04ih8kvrxkk8l16snsc4n286bdkyri";
+ };
+in stdenv.mkDerivation rec {
+ name = "laminar";
+ version = "0.8";
+ src = fetchurl {
+ url = "https://github.com/ohwgiles/laminar/archive/${version}.tar.gz";
+ sha256 = "05g73j3vpib47kr7mackcazf7s6bc3xwz4h6k7sp7yb5ng7gj20g";
+ };
+ patches = [ ./patches/no-network.patch ];
+ nativeBuildInputs = [ cmake pandoc ];
+ buildInputs = [ capnproto sqlite boost zlib rapidjson ];
+ preBuild = ''
+ mkdir -p js css
+ cp ${js.vue} js/vue.min.js
+ cp ${js.vue-router} js/vue-router.min.js
+ cp ${js.ansi_up} js/ansi_up.js
+ cp ${js.Chart} js/Chart.min.js
+ cp ${css.bootstrap} css/bootstrap.min.css
+ '';
+ postInstall = ''
+ mv $out/usr/share $out
+ mkdir $out/bin
+ mv $out/usr/{bin,sbin}/* $out/bin
+ rmdir $out/usr/{bin,sbin}
+ rmdir $out/usr
+
+ mkdir -p $out/share/doc/laminar
+ pandoc -s ../UserManual.md -o $out/share/doc/laminar/UserManual.html
+ '' + lib.optionalString (customConfig != null) ''
+ cp ${customConfig} /etc/etc/laminar.conf
+ '' + (if enableSystemd then ''
+ sed -i "s,/etc/,$out/etc/," $out/lib/systemd/system/laminar.service
+ sed -i "s,/usr/sbin/,$out/bin/," $out/lib/systemd/system/laminar.service
+ '' else ''
+ rm -r $out/lib # it contains only systemd unit file
+ '');
+
+ meta = with stdenv.lib; {
+ description = "Lightweight and modular continuous integration service";
+ homepage = "https://laminar.ohwg.net";
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ kaction ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/laminar/patches/no-network.patch b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/laminar/patches/no-network.patch
new file mode 100644
index 000000000000..80e74de95aa2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/continuous-integration/laminar/patches/no-network.patch
@@ -0,0 +1,26 @@
+Build system that downloads stuff from network is bad. Build system that
+does so unconditionally is twice as bad.
+
+Required files are downloaded as separate fixed-output derivations and
+put into correct location before build phase starts.
+
+--- laminar-0.8/CMakeLists.txt
++++ laminar-0.8-new/CMakeLists.txt
+@@ -69,17 +69,6 @@
+ COMMAND sh -c '( echo -n "\\#define INDEX_HTML_UNCOMPRESSED_SIZE " && wc -c < "${CMAKE_SOURCE_DIR}/src/resources/index.html" ) > index_html_size.h'
+ DEPENDS src/resources/index.html)
+
+-# Download 3rd-party frontend JS libs...
+-file(DOWNLOAD https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js
+- js/vue.min.js EXPECTED_MD5 ae2fca1cfa0e31377819b1b0ffef704c)
+-file(DOWNLOAD https://cdnjs.cloudflare.com/ajax/libs/vue-router/2.7.0/vue-router.min.js
+- js/vue-router.min.js EXPECTED_MD5 5d3e35710dbe02de78c39e3e439b8d4e)
+-file(DOWNLOAD https://raw.githubusercontent.com/drudru/ansi_up/v1.3.0/ansi_up.js
+- js/ansi_up.js EXPECTED_MD5 158566dc1ff8f2804de972f7e841e2f6)
+-file(DOWNLOAD https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js
+- js/Chart.min.js EXPECTED_MD5 f6c8efa65711e0cbbc99ba72997ecd0e)
+-file(DOWNLOAD https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css
+- css/bootstrap.min.css EXPECTED_MD5 5d5357cb3704e1f43a1f5bfed2aebf42)
+ # ...and compile them
+ generate_compressed_bins(${CMAKE_BINARY_DIR} js/vue-router.min.js js/vue.min.js
+ js/ansi_up.js js/Chart.min.js css/bootstrap.min.css)