about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/web-apps/discourse/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/web-apps/discourse/plugins')
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/README4
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/all-plugins.nix27
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-bbcode-color/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile6
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock25
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix18
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix66
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile7
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock27
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix19
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix76
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile9
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock28
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix18
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/gemset.nix74
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/Gemfile10
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/Gemfile.lock26
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/default.nix18
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/gemset.nix64
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/Gemfile7
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/Gemfile.lock37
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/default.nix18
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/gemset.nix127
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/Gemfile7
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/Gemfile.lock37
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix19
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/gemset.nix127
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile7
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock16
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix26
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/gemset.nix23
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/no-git-version.patch34
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/prometheus_exporter_version1
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/spec-import-fix-abi-version.patch16
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-reactions/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix17
-rw-r--r--nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix17
47 files changed, 1262 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/README b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/README
new file mode 100644
index 000000000000..e0a88211dae8
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/README
@@ -0,0 +1,4 @@
+Run the nixpkgs/pkgs/servers/web-apps/discourse/update.py script to
+update plugins! See the Plugins section of the Discourse chapter in
+the NixOS manual (https://nixos.org/manual/nixos/unstable/index.html#module-services-discourse)
+for more info.
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/all-plugins.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/all-plugins.nix
new file mode 100644
index 000000000000..4ddb8995b622
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/all-plugins.nix
@@ -0,0 +1,27 @@
+{ mkDiscoursePlugin, newScope, fetchFromGitHub, ... }@args:
+let
+  callPackage = newScope args;
+in
+{
+  discourse-assign = callPackage ./discourse-assign {};
+  discourse-bbcode-color = callPackage ./discourse-bbcode-color {};
+  discourse-calendar = callPackage ./discourse-calendar {};
+  discourse-canned-replies = callPackage ./discourse-canned-replies {};
+  discourse-chat-integration = callPackage ./discourse-chat-integration {};
+  discourse-checklist = callPackage ./discourse-checklist {};
+  discourse-data-explorer = callPackage ./discourse-data-explorer {};
+  discourse-docs = callPackage ./discourse-docs {};
+  discourse-github = callPackage ./discourse-github {};
+  discourse-ldap-auth = callPackage ./discourse-ldap-auth {};
+  discourse-math = callPackage ./discourse-math {};
+  discourse-migratepassword = callPackage ./discourse-migratepassword {};
+  discourse-oauth2-basic = callPackage ./discourse-oauth2-basic {};
+  discourse-openid-connect = callPackage ./discourse-openid-connect {};
+  discourse-prometheus = callPackage ./discourse-prometheus {};
+  discourse-reactions = callPackage ./discourse-reactions {};
+  discourse-saved-searches = callPackage ./discourse-saved-searches {};
+  discourse-solved = callPackage ./discourse-solved {};
+  discourse-spoiler-alert = callPackage ./discourse-spoiler-alert {};
+  discourse-voting = callPackage ./discourse-voting {};
+  discourse-yearly-review = callPackage ./discourse-yearly-review {};
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix
new file mode 100644
index 000000000000..9e859795298e
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-assign";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-assign";
+    rev = "a655a009fade4671e4a2d38f0a0f7ce89d201d80";
+    sha256 = "sha256-HCwId3/7NRuToLFyJrOVaAiSxysB7XNZp9BUndSJzlY=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-docs";
+    maintainers = with maintainers; [ dpausp ];
+    license = licenses.mit;
+    description = "Discourse Plugin for assigning users to a topic";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-bbcode-color/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-bbcode-color/default.nix
new file mode 100644
index 000000000000..4e5ea7be8e65
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-bbcode-color/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-bbcode-color";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-bbcode-color";
+    rev = "f9ebbf016c8c5c763473ff36cc30fdcdf8fcf480";
+    sha256 = "sha256-7iCKhMdVlFdHMXxU8mQMU1vFiAbr1qKvG29VdAki+14=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-bbcode-color";
+    maintainers = with maintainers; [ ryantm ];
+    license = licenses.mit;
+    description = "Support BBCode color tags.";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile
new file mode 100644
index 000000000000..76faf85df5e2
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+# gem "rails"
+gem "rrule", "0.4.4", require: false
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock
new file mode 100644
index 000000000000..5c69ae645aa5
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock
@@ -0,0 +1,25 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    activesupport (7.0.4.3)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 1.6, < 2)
+      minitest (>= 5.1)
+      tzinfo (~> 2.0)
+    concurrent-ruby (1.2.2)
+    i18n (1.13.0)
+      concurrent-ruby (~> 1.0)
+    minitest (5.18.0)
+    rrule (0.4.4)
+      activesupport (>= 2.3)
+    tzinfo (2.0.6)
+      concurrent-ruby (~> 1.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  rrule (= 0.4.4)
+
+BUNDLED WITH
+   2.4.10
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix
new file mode 100644
index 000000000000..1ec357e301cc
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-calendar";
+  bundlerEnvArgs.gemdir = ./.;
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-calendar";
+    rev = "d85e8e288d69788e0c3202bb3dab9c3450a98914";
+    sha256 = "sha256-mSn2gGidH4iSZ0fhf3UPh9pwMQurK0YGW2OAtdEWFBQ=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-calendar";
+    maintainers = with maintainers; [ ryantm ];
+    license = licenses.mit;
+    description = "Adds the ability to create a dynamic calendar in the first post of a topic";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix
new file mode 100644
index 000000000000..8c06a78e3733
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix
@@ -0,0 +1,66 @@
+{
+  activesupport = {
+    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15m0b1im6i401ab51vzr7f8nk8kys1qa0snnl741y3sir3xd07jp";
+      type = "gem";
+    };
+    version = "7.0.4.3";
+  };
+  concurrent-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q";
+      type = "gem";
+    };
+    version = "1.2.2";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x";
+      type = "gem";
+    };
+    version = "1.13.0";
+  };
+  minitest = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ic7i5z88zcaqnpzprf7saimq2f6sad57g5mkkqsrqrcd6h3mx06";
+      type = "gem";
+    };
+    version = "5.18.0";
+  };
+  rrule = {
+    dependencies = ["activesupport"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04h3q0ws0wswqj3mwjyv44yx59d9ima9a820ay9w5bwnlb73syj2";
+      type = "gem";
+    };
+    version = "0.4.4";
+  };
+  tzinfo = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd";
+      type = "gem";
+    };
+    version = "2.0.6";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix
new file mode 100644
index 000000000000..8fb400507d05
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-canned-replies";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-canned-replies";
+    rev = "5a2d9a11ef3f07fc781acd83770bafc14eca2c1b";
+    sha256 = "sha256-R6CmL1hqqybc/I3oAzr3xZ4WThPWQirMjlXkF82xmIk=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-canned-replies";
+    maintainers = with maintainers; [ talyz ];
+    license = licenses.gpl2Only;
+    description = "Adds support for inserting a canned reply into the composer window via a UI";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix
new file mode 100644
index 000000000000..40475dbcfa94
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-chat-integration";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-chat-integration";
+    rev = "9647c7afc0df42b8e2b5ae585afaf51f107fa195";
+    sha256 = "sha256-lP404OJvEEQVKIQTBMca7zb/YxQ6HXcPG1jMKpEB3iA=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-chat-integration";
+    maintainers = with maintainers; [ dpausp ];
+    license = licenses.mit;
+    description = "This plugin integrates Discourse with a number of external chatroom systems";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix
new file mode 100644
index 000000000000..7c402028d660
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-checklist";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-checklist";
+    rev = "4a7f3df360a8e4ff3bbebfed33ea545b1c72506e";
+    sha256 = "sha256-lu8Ry3sUsKnr1nMfR29hbhsfJXLaN5NPuz8iGfsfHTc=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-checklist";
+    maintainers = with maintainers; [ ryantm ];
+    license = licenses.gpl2Only;
+    description = "A simple checklist rendering plugin for discourse ";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix
new file mode 100644
index 000000000000..b824a2dec2fb
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-data-explorer";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-data-explorer";
+    rev = "f99b3af7ed4a21474f35223e83013ee3e8ad7002";
+    sha256 = "sha256-3bBKBSc/+yF9ogNj3J6HXM3ynoAoUZeHhZOOhTfbxDw=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-data-explorer";
+    maintainers = with maintainers; [ ryantm ];
+    license = licenses.mit;
+    description = "SQL Queries for admins in Discourse";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix
new file mode 100644
index 000000000000..a60ad45e298f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-docs";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-docs";
+    rev = "0b4d2f3691048b6e0e257a1ac9ed01f66f662ba8";
+    sha256 = "sha256-HeIUCTbMNpuo6zeaDClsGrUOz4m0L+4UK7AwPsrKIHY=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-docs";
+    maintainers = with maintainers; [ dpausp ];
+    license = licenses.mit;
+    description = "Find and filter knowledge base topics";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile
new file mode 100644
index 000000000000..c24a3e860d7c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+# gem "rails"
+gem "sawyer", "0.9.2"
+gem "octokit", "5.6.1"
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock
new file mode 100644
index 000000000000..e63a9486d30f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock
@@ -0,0 +1,27 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.8.4)
+      public_suffix (>= 2.0.2, < 6.0)
+    faraday (2.7.4)
+      faraday-net_http (>= 2.0, < 3.1)
+      ruby2_keywords (>= 0.0.4)
+    faraday-net_http (3.0.2)
+    octokit (5.6.1)
+      faraday (>= 1, < 3)
+      sawyer (~> 0.9)
+    public_suffix (5.0.1)
+    ruby2_keywords (0.0.5)
+    sawyer (0.9.2)
+      addressable (>= 2.3.5)
+      faraday (>= 0.17.3, < 3)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  octokit (= 5.6.1)
+  sawyer (= 0.9.2)
+
+BUNDLED WITH
+   2.4.10
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix
new file mode 100644
index 000000000000..e0868aad42ed
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix
@@ -0,0 +1,19 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-github";
+  bundlerEnvArgs.gemdir = ./.;
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-github";
+    rev = "77e336a1b4ea08e2bb8a010d30146e4844afb3f3";
+    sha256 = "sha256-VHuf4ymT+W676RAuA3WPQl9QXLdQz4s8vP9EC8XAwW0=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-github";
+    maintainers = with maintainers; [ talyz ];
+    license = licenses.mit;
+    description = "Adds GitHub badges and linkback functionality";
+  };
+
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix
new file mode 100644
index 000000000000..b25a91671cbd
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix
@@ -0,0 +1,76 @@
+{
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15s8van7r2ad3dq6i03l3z4hqnvxcq75a3h72kxvf9an53sqma20";
+      type = "gem";
+    };
+    version = "2.8.4";
+  };
+  faraday = {
+    dependencies = ["faraday-net_http" "ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f20vjx0ywx0zdb4dfx4cpa7kd51z6vg7dw5hs35laa45dy9g9pj";
+      type = "gem";
+    };
+    version = "2.7.4";
+  };
+  faraday-net_http = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8";
+      type = "gem";
+    };
+    version = "3.0.2";
+  };
+  octokit = {
+    dependencies = ["faraday" "sawyer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15g4kyag6gmxxq6d03472h7srm3imlsks1wg6nac7hl3mb1b5vs8";
+      type = "gem";
+    };
+    version = "5.6.1";
+  };
+  public_suffix = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hz0bx2qs2pwb0bwazzsah03ilpf3aai8b7lk7s35jsfzwbkjq35";
+      type = "gem";
+    };
+    version = "5.0.1";
+  };
+  ruby2_keywords = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
+      type = "gem";
+    };
+    version = "0.0.5";
+  };
+  sawyer = {
+    dependencies = ["addressable" "faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps";
+      type = "gem";
+    };
+    version = "0.9.2";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile
new file mode 100644
index 000000000000..e140770e4e6a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+# gem "rails"
+gem 'pyu-ruby-sasl', '0.0.3.3', require: false
+gem 'rubyntlm', '0.3.4', require: false
+gem 'net-ldap', '0.17.1'
+gem 'omniauth-ldap', '1.0.5'
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock
new file mode 100644
index 000000000000..f131626f7c45
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock
@@ -0,0 +1,28 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    hashie (5.0.0)
+    net-ldap (0.17.1)
+    omniauth (1.9.2)
+      hashie (>= 3.4.6)
+      rack (>= 1.6.2, < 3)
+    omniauth-ldap (1.0.5)
+      net-ldap (~> 0.12)
+      omniauth (~> 1.0)
+      pyu-ruby-sasl (~> 0.0.3.2)
+      rubyntlm (~> 0.3.4)
+    pyu-ruby-sasl (0.0.3.3)
+    rack (2.2.7)
+    rubyntlm (0.3.4)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  net-ldap (= 0.17.1)
+  omniauth-ldap (= 1.0.5)
+  pyu-ruby-sasl (= 0.0.3.3)
+  rubyntlm (= 0.3.4)
+
+BUNDLED WITH
+   2.4.10
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix
new file mode 100644
index 000000000000..82f13f0d0d8a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-ldap-auth";
+  bundlerEnvArgs.gemdir = ./.;
+  src = fetchFromGitHub {
+    owner = "jonmbake";
+    repo = "discourse-ldap-auth";
+    rev = "edcf06957090e8d978a89fe7b07a6ba56fe35214";
+    sha256 = "sha256-VxBBip8QEXDQGDOsU5cXjUZe2HThJn20BPsNr33KhKI=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/jonmbake/discourse-ldap-auth";
+    maintainers = with maintainers; [ ryantm ];
+    license = licenses.mit;
+    description = "Discourse plugin to enable LDAP/Active Directory authentication.";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/gemset.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/gemset.nix
new file mode 100644
index 000000000000..9df3292f7b82
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/gemset.nix
@@ -0,0 +1,74 @@
+{
+  hashie = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x";
+      type = "gem";
+    };
+    version = "5.0.0";
+  };
+  net-ldap = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ycw0qsw3hap8svakl0i30jkj0ffd4lpyrn17a1j0w8mz5ainmsj";
+      type = "gem";
+    };
+    version = "0.17.1";
+  };
+  omniauth = {
+    dependencies = ["hashie" "rack"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jn9j54l5h7xcba2vjq74l1dk0xrwvsjxam4qhylpi52nw0h5502";
+      type = "gem";
+    };
+    version = "1.9.2";
+  };
+  omniauth-ldap = {
+    dependencies = ["net-ldap" "omniauth" "pyu-ruby-sasl" "rubyntlm"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ld3mx46xa1qhc0cpnck1n06xcxs0ag4n41zgabxri27a772f9wz";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  pyu-ruby-sasl = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rcpjiz9lrvyb3rd8k8qni0v4ps08psympffyldmmnrqayyad0sn";
+      type = "gem";
+    };
+    version = "0.0.3.3";
+  };
+  rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16w217k9z02c4hqizym8dkj6bqmmzx4qdvqpnskgzf174a5pwdxk";
+      type = "gem";
+    };
+    version = "2.2.7";
+  };
+  rubyntlm = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18d1lxhx62swggf4cqg76h7hp04f5801c8h07w08cm9xng2niqby";
+      type = "gem";
+    };
+    version = "0.3.4";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix
new file mode 100644
index 000000000000..d15a962c19d8
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-math";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-math";
+    rev = "69494ca5a4d708e16e35f1daebeaa53e3edbca2c";
+    sha256 = "sha256-C0iVUwj+Lbe6TGfkbu6WxdCeMWVjBaejUh6fXVTqq08=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-math";
+    maintainers = with maintainers; [ talyz ];
+    license = licenses.mit;
+    description = "Official MathJax support for Discourse";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/Gemfile b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/Gemfile
new file mode 100644
index 000000000000..59c64586dc17
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/Gemfile
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+# gem "rails"
+gem 'bcrypt', '3.1.13'
+gem 'unix-crypt', '1.3.0'
+gem 'ffi', '1.15.5', require: false
+gem 'ffi-compiler', '1.0.1', require: false
+gem 'argon2', '2.2.0'
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/Gemfile.lock b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/Gemfile.lock
new file mode 100644
index 000000000000..4c6c3bab9987
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/Gemfile.lock
@@ -0,0 +1,26 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    argon2 (2.2.0)
+      ffi (~> 1.15)
+      ffi-compiler (~> 1.0)
+    bcrypt (3.1.13)
+    ffi (1.15.5)
+    ffi-compiler (1.0.1)
+      ffi (>= 1.0.0)
+      rake
+    rake (13.0.6)
+    unix-crypt (1.3.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  argon2 (= 2.2.0)
+  bcrypt (= 3.1.13)
+  ffi (= 1.15.5)
+  ffi-compiler (= 1.0.1)
+  unix-crypt (= 1.3.0)
+
+BUNDLED WITH
+   2.4.6
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/default.nix
new file mode 100644
index 000000000000..c0c89d98be2c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-migratepassword";
+  bundlerEnvArgs.gemdir = ./.;
+  src = fetchFromGitHub {
+    owner = "communiteq";
+    repo = "discourse-migratepassword";
+    rev = "f78774242eb9bf49a72d2800a39a24eeaa3b401a";
+    sha256 = "sha256-QJO+ei9/l7ye+kWE9VmiIuNCiOH66kd3vds49qlIztY=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/communiteq/discourse-migratepassword";
+    maintainers = with maintainers; [ ryantm ];
+    license = licenses.gpl2Only;
+    description = "Support migrated password hashes";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/gemset.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/gemset.nix
new file mode 100644
index 000000000000..97aa9bfc7048
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-migratepassword/gemset.nix
@@ -0,0 +1,64 @@
+{
+  argon2 = {
+    dependencies = ["ffi" "ffi-compiler"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1wdllcqlr81nzyf485ldv1p660xsi476p79ghbj7zsf3n9n86gwd";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
+  bcrypt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ai0m15jg3n0b22mimk09ppnga316dc7dyvz06w8rrqh5gy1lslp";
+      type = "gem";
+    };
+    version = "3.1.13";
+  };
+  ffi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
+      type = "gem";
+    };
+    version = "1.15.5";
+  };
+  ffi-compiler = {
+    dependencies = ["ffi" "rake"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c2caqm9wqnbidcb8dj4wd3s902z15qmgxplwyfyqbwa0ydki7q1";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  rake = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
+      type = "gem";
+    };
+    version = "13.0.6";
+  };
+  unix-crypt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1wflipsmmicmgvqilp9pml4x19b337kh6p6jgrzqrzpkq2z52gdq";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/Gemfile b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/Gemfile
new file mode 100644
index 000000000000..7da32ec03949
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/Gemfile
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+source 'https://rubygems.org'
+
+group :development do
+  gem 'rubocop-discourse'
+end
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/Gemfile.lock b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/Gemfile.lock
new file mode 100644
index 000000000000..6a91a08c0e86
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/Gemfile.lock
@@ -0,0 +1,37 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    ast (2.4.2)
+    parallel (1.22.1)
+    parser (3.1.1.0)
+      ast (~> 2.4.1)
+    rainbow (3.1.1)
+    regexp_parser (2.2.1)
+    rexml (3.2.5)
+    rubocop (1.26.1)
+      parallel (~> 1.10)
+      parser (>= 3.1.0.0)
+      rainbow (>= 2.2.2, < 4.0)
+      regexp_parser (>= 1.8, < 3.0)
+      rexml
+      rubocop-ast (>= 1.16.0, < 2.0)
+      ruby-progressbar (~> 1.7)
+      unicode-display_width (>= 1.4.0, < 3.0)
+    rubocop-ast (1.16.0)
+      parser (>= 3.1.1.0)
+    rubocop-discourse (2.5.0)
+      rubocop (>= 1.1.0)
+      rubocop-rspec (>= 2.0.0)
+    rubocop-rspec (2.9.0)
+      rubocop (~> 1.19)
+    ruby-progressbar (1.11.0)
+    unicode-display_width (2.1.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  rubocop-discourse
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/default.nix
new file mode 100644
index 000000000000..a013383d1a2f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin rec {
+  name = "discourse-oauth2-basic";
+  bundlerEnvArgs.gemdir = ./.;
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = name;
+    rev = "06ba5daa9aabd0487f2f30b944b6500f1f481308";
+    sha256 = "sha256-T08Q36k2hb9wVimKIa4O5mWcrr6VBTfHvhRJiLBiRPY=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/${name}";
+    maintainers = with maintainers; [ ehmry ];
+    license = licenses.mit;
+    description = "A basic OAuth2 plugin for use with Discourse";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/gemset.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/gemset.nix
new file mode 100644
index 000000000000..bbb35327787b
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-oauth2-basic/gemset.nix
@@ -0,0 +1,127 @@
+{
+  ast = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y";
+      type = "gem";
+    };
+    version = "2.4.2";
+  };
+  parallel = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07vnk6bb54k4yc06xnwck7php50l09vvlw1ga8wdz0pia461zpzb";
+      type = "gem";
+    };
+    version = "1.22.1";
+  };
+  parser = {
+    dependencies = ["ast"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zaghgvva2q4jqbachg8jvpwgbg3w1jqr0d00m8rqciqznjgsw3c";
+      type = "gem";
+    };
+    version = "3.1.1.0";
+  };
+  rainbow = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  regexp_parser = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "155f6cr4rrfw5bs5xd3m5kfw32qhc5fsi4nk82rhif56rc6cs0wm";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  rexml = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
+      type = "gem";
+    };
+    version = "3.2.5";
+  };
+  rubocop = {
+    dependencies = ["parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06105yrqajpm5l07fng1nbk55y9490hny542zclnan8hg841pjgl";
+      type = "gem";
+    };
+    version = "1.26.1";
+  };
+  rubocop-ast = {
+    dependencies = ["parser"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bd2z82ly7fix8415gvfiwzb6bjialz5rs3sr72kv1lk68rd23wv";
+      type = "gem";
+    };
+    version = "1.16.0";
+  };
+  rubocop-discourse = {
+    dependencies = ["rubocop" "rubocop-rspec"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01f4y7am9cq276zl8vsgv64w8wfmhpbzg7vzsifhgnnh92g6s04g";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  rubocop-rspec = {
+    dependencies = ["rubocop"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "051gq9pz49iv4gq34d3n089iaa6cb418n2fhin6gd6fpysbi3nf6";
+      type = "gem";
+    };
+    version = "2.9.0";
+  };
+  ruby-progressbar = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02nmaw7yx9kl7rbaan5pl8x5nn0y4j5954mzrkzi9i3dhsrps4nc";
+      type = "gem";
+    };
+    version = "1.11.0";
+  };
+  unicode-display_width = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0csjm9shhfik0ci9mgimb7hf3xgh7nx45rkd9rzgdz6vkwr8rzxn";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/Gemfile b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/Gemfile
new file mode 100644
index 000000000000..7da32ec03949
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/Gemfile
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+source 'https://rubygems.org'
+
+group :development do
+  gem 'rubocop-discourse'
+end
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/Gemfile.lock b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/Gemfile.lock
new file mode 100644
index 000000000000..0987b206fa66
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/Gemfile.lock
@@ -0,0 +1,37 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    ast (2.4.1)
+    parallel (1.19.2)
+    parser (2.7.2.0)
+      ast (~> 2.4.1)
+    rainbow (3.0.0)
+    regexp_parser (1.8.1)
+    rexml (3.2.5)
+    rubocop (0.93.0)
+      parallel (~> 1.10)
+      parser (>= 2.7.1.5)
+      rainbow (>= 2.2.2, < 4.0)
+      regexp_parser (>= 1.8)
+      rexml
+      rubocop-ast (>= 0.6.0)
+      ruby-progressbar (~> 1.7)
+      unicode-display_width (>= 1.4.0, < 2.0)
+    rubocop-ast (0.7.1)
+      parser (>= 2.7.1.5)
+    rubocop-discourse (2.3.2)
+      rubocop (>= 0.69.0)
+      rubocop-rspec (>= 1.39.0)
+    rubocop-rspec (1.43.2)
+      rubocop (~> 0.87)
+    ruby-progressbar (1.10.1)
+    unicode-display_width (1.7.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  rubocop-discourse
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix
new file mode 100644
index 000000000000..372899afd8e0
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix
@@ -0,0 +1,19 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-openid-connect";
+  bundlerEnvArgs.gemdir = ./.;
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-openid-connect";
+    rev = "a16d5edd386f4099064753a4eed72ecb9c1bb1a8";
+    sha256 = "sha256-9Fuu/UFmU4Gpkm5cRKOgDK0bt7nD545X18wtue+IrN8=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-openid-connect";
+    maintainers = with maintainers; [ mkg20001 ];
+    license = licenses.mit;
+    description = "Discourse plugin to integrate Discourse with an openid-connect login provider.";
+  };
+}
+
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/gemset.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/gemset.nix
new file mode 100644
index 000000000000..2a546e7a1c87
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/gemset.nix
@@ -0,0 +1,127 @@
+{
+  ast = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l3468czzjmxl93ap40hp7z94yxp4nbag0bxqs789bm30md90m2a";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  parallel = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17b127xxmm2yqdz146qwbs57046kn0js1h8synv01dwqz2z1kp2l";
+      type = "gem";
+    };
+    version = "1.19.2";
+  };
+  parser = {
+    dependencies = ["ast"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f7gmm60yla325wlnd3qkxs59qm2y0aan8ljpg6k18rwzrrfil6z";
+      type = "gem";
+    };
+    version = "2.7.2.0";
+  };
+  rainbow = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  regexp_parser = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0n9d14ppshnx71i3mi1pnm3hwhcbb6m6vsc0b0dqgsab8r2rs96n";
+      type = "gem";
+    };
+    version = "1.8.1";
+  };
+  rexml = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
+      type = "gem";
+    };
+    version = "3.2.5";
+  };
+  rubocop = {
+    dependencies = ["parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nrv7i81549addig09grw17qkab3l4319dcsf9y7psl7aa76ng3a";
+      type = "gem";
+    };
+    version = "0.93.0";
+  };
+  rubocop-ast = {
+    dependencies = ["parser"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "129hgz4swc8n0g01715v7y00k0h4mlzkxh63q7z27q7mjp54rl74";
+      type = "gem";
+    };
+    version = "0.7.1";
+  };
+  rubocop-discourse = {
+    dependencies = ["rubocop" "rubocop-rspec"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10l2wwnvd4xccgqsyhxrhc5bw10b7an4awl0v90fw5xf2qdjiflw";
+      type = "gem";
+    };
+    version = "2.3.2";
+  };
+  rubocop-rspec = {
+    dependencies = ["rubocop"];
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sc0bwdxzfr8byxzwvfyf22lwzqcaa6ca7wzxx31mk7vvy7r7dhl";
+      type = "gem";
+    };
+    version = "1.43.2";
+  };
+  ruby-progressbar = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf";
+      type = "gem";
+    };
+    version = "1.10.1";
+  };
+  unicode-display_width = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06i3id27s60141x6fdnjn5rar1cywdwy64ilc59cz937303q3mna";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile
new file mode 100644
index 000000000000..9753a02ce094
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+# gem "rails"
+gem "webrick", "1.7.0"
+gem "prometheus_exporter",     File.read(File.expand_path("../prometheus_exporter_version", __FILE__)).strip
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock
new file mode 100644
index 000000000000..25e4e031c01f
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock
@@ -0,0 +1,16 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    prometheus_exporter (2.0.6)
+      webrick
+    webrick (1.7.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  prometheus_exporter (= 2.0.6)
+  webrick (= 1.7.0)
+
+BUNDLED WITH
+   2.4.10
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix
new file mode 100644
index 000000000000..b5c2ef7c6e84
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, mkDiscoursePlugin, fetchFromGitHub }:
+
+ mkDiscoursePlugin {
+  bundlerEnvArgs.gemdir = ./.;
+  name = "discourse-prometheus";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-prometheus";
+    rev = "802cb5aa89838ecb3078dbe21b70d87b1675d89e";
+    sha256 = "sha256-tgujK/k/7l/9dAFna5sfUpgP0PVfjk+aGRbqZ70lmRw=";
+  };
+
+  patches = [
+    # The metrics collector tries to run git to get the commit id but fails
+    # because we don't run Discourse from a Git repository.
+    ./no-git-version.patch
+    ./spec-import-fix-abi-version.patch
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-prometheus";
+    maintainers = with maintainers; [ dpausp ];
+    license = licenses.mit;
+    description = "Official Discourse Plugin for Prometheus Monitoring";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/gemset.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/gemset.nix
new file mode 100644
index 000000000000..b6f3158174c1
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/gemset.nix
@@ -0,0 +1,23 @@
+{
+  prometheus_exporter = {
+    dependencies = ["webrick"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pb4k6px8b36bvnw3d14j31s33ns60dcwxixbcgvhpzavd7fparb";
+      type = "gem";
+    };
+    version = "2.0.6";
+  };
+  webrick = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/no-git-version.patch b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/no-git-version.patch
new file mode 100644
index 000000000000..9aebfd8aa794
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/no-git-version.patch
@@ -0,0 +1,34 @@
+diff --git a/lib/internal_metric/global.rb b/lib/internal_metric/global.rb
+index 682571b..7bdd431 100644
+--- a/lib/internal_metric/global.rb
++++ b/lib/internal_metric/global.rb
+@@ -30,28 +30,7 @@ module DiscoursePrometheus::InternalMetric
+       @active_app_reqs = 0
+       @queued_app_reqs = 0
+       @fault_logged = {}
+-
+-      begin
+-        @@version = nil
+-
+-        out, error, status = Open3.capture3("git rev-parse HEAD")
+-
+-        if status.success?
+-          @@version ||= out.chomp
+-        else
+-          raise error
+-        end
+-      rescue => e
+-        if defined?(::Discourse)
+-          Discourse.warn_exception(e, message: "Failed to calculate discourse_version_info metric")
+-        else
+-          STDERR.puts "Failed to calculate discourse_version_info metric: #{e}\n#{e.backtrace.join("\n")}"
+-        end
+-
+-        @@retries ||= 10
+-        @@retries -= 1
+-        @@version = -1 if @@retries < 0
+-      end
++      @@version = -1
+     end
+ 
+     def collect
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/prometheus_exporter_version b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/prometheus_exporter_version
new file mode 100644
index 000000000000..157e54f3e4d5
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/prometheus_exporter_version
@@ -0,0 +1 @@
+2.0.6
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/spec-import-fix-abi-version.patch b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/spec-import-fix-abi-version.patch
new file mode 100644
index 000000000000..7b1159d0a800
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/spec-import-fix-abi-version.patch
@@ -0,0 +1,16 @@
+diff --git a/bin/collector b/bin/collector
+index 4fec65e..e59eac7 100755
+--- a/bin/collector
++++ b/bin/collector
+@@ -3,8 +3,10 @@
+ 
+ Process.setproctitle("discourse prometheus-collector")
+ 
++# We need the ABI version {MAJOR}.{MINOR}.0 here.
++abi_version = ENV['GEM_PATH'].split("/")[-1]
+ version = File.read(File.expand_path("../../prometheus_exporter_version", __FILE__)).strip
+-spec_file = File.expand_path("../../gems/#{RUBY_VERSION}/specifications/prometheus_exporter-#{version}.gemspec", __FILE__)
++spec_file = File.expand_path("../../gems/#{abi_version}/specifications/prometheus_exporter-#{version}.gemspec", __FILE__)
+ 
+ spec = Gem::Specification.load spec_file
+ spec.activate
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-reactions/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-reactions/default.nix
new file mode 100644
index 000000000000..28505b6f40b5
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-reactions/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-reactions";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-reactions";
+    rev = "01aca15b2774c088f3673118e92e9469f37d2fb6";
+    sha256 = "sha256-txQ1G2pBcl4bMBwv3vTs9dwBGKp2uEBvK7BuqQ1O8xg=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-reactions";
+    maintainers = with maintainers; [ bbenno ];
+    license = licenses.mit;
+    description = "Allows users to react to a post from a choice of emojis, rather than only the like heart";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix
new file mode 100644
index 000000000000..c92e54d4c43d
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-saved-searches";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-saved-searches";
+    rev = "5c6d1b6c186c5c96bb92bd6de62d3bc2da6a5b68";
+    sha256 = "sha256-Z9wWwf9gH/Iainxx089J4eT7MpQeHpFXgTU40p/IcYY=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-saved-searches";
+    maintainers = with maintainers; [ dpausp ];
+    license = licenses.mit;
+    description = "Allow users to save searches and be notified of new results";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix
new file mode 100644
index 000000000000..2e393f5c59c8
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-solved";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-solved";
+    rev = "29a991e60f3ca3bb44d382d675e4458794a683f3";
+    sha256 = "sha256-6flXuGA7SdIlGLYzyY5AXzQF/cEs39XfeptoBia8SHw=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-solved";
+    maintainers = with maintainers; [ talyz ];
+    license = licenses.mit;
+    description = "Allow accepted answers on topics";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix
new file mode 100644
index 000000000000..c5fa6f823951
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-spoiler-alert";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-spoiler-alert";
+    rev = "0ee68da1fe1d029685a373df7fc874fcd2e50991";
+    sha256 = "sha256-z+0RL7HAJ92TyI1z2DBpirYN7IWzV7iGejs8Howo2+s=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-spoiler-alert";
+    maintainers = with maintainers; [ talyz ];
+    license = licenses.mit;
+    description = "Hide spoilers behind the spoiler-alert jQuery plugin";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix
new file mode 100644
index 000000000000..6574cece9505
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-voting";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-voting";
+    rev = "d9cab9664263e75d46533fb83586ce88cb2b6cfe";
+    sha256 = "sha256-cKbsc2ZPXaU4CAzM+oqwbs93l3NMrOGw4IBZLVZIDyw=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-voting";
+    maintainers = with maintainers; [ dpausp ];
+    license = licenses.gpl2Only;
+    description = "Adds the ability for voting on a topic within a specified category in Discourse";
+  };
+}
diff --git a/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix
new file mode 100644
index 000000000000..fa9158395042
--- /dev/null
+++ b/nixpkgs/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkDiscoursePlugin, fetchFromGitHub }:
+
+mkDiscoursePlugin {
+  name = "discourse-yearly-review";
+  src = fetchFromGitHub {
+    owner = "discourse";
+    repo = "discourse-yearly-review";
+    rev = "af7e294d04ca7b0c64dd604d19a553500accee51";
+    sha256 = "sha256-ioUJqLe/sUDKKa106hGY4OhwOgC+96YFQ4Lqr/CFF7Y=";
+  };
+  meta = with lib; {
+    homepage = "https://github.com/discourse/discourse-yearly-review";
+    maintainers = with maintainers; [ talyz ];
+    license = licenses.mit;
+    description = "Publishes an automated Year in Review topic";
+  };
+}