summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenaud <c0bw3b@users.noreply.github.com>2018-11-08 23:45:46 +0100
committerGitHub <noreply@github.com>2018-11-08 23:45:46 +0100
commit6399b103d84b1362cc0f69976d44c22f48de3419 (patch)
treecaee6c683ac97fa9e2dbe12cb46c792d05ed56f2
parent66b8fe5a0bfb5723e2e708747edb0eef597daa97 (diff)
parent0dde47a58acdd3cff855796bbd899c90c7fb25b5 (diff)
Merge pull request #49814 from aanderse/gitea
nixos/gitea: fix mysql issue, add mysql socket auth, and add a nixos test
-rw-r--r--nixos/modules/services/misc/gitea.nix12
-rw-r--r--nixos/release.nix1
-rw-r--r--nixos/tests/gitea.nix74
3 files changed, 85 insertions, 2 deletions
diff --git a/nixos/modules/services/misc/gitea.nix b/nixos/modules/services/misc/gitea.nix
index a222325579fe..7a10bd872994 100644
--- a/nixos/modules/services/misc/gitea.nix
+++ b/nixos/modules/services/misc/gitea.nix
@@ -6,6 +6,7 @@ let
cfg = config.services.gitea;
gitea = cfg.package;
pg = config.services.postgresql;
+ useMysql = cfg.database.type == "mysql";
usePostgresql = cfg.database.type == "postgres";
configFile = pkgs.writeText "app.ini" ''
APP_NAME = ${cfg.appName}
@@ -14,7 +15,7 @@ let
[database]
DB_TYPE = ${cfg.database.type}
- HOST = ${cfg.database.host}:${toString cfg.database.port}
+ HOST = ${if cfg.database.socket != null then cfg.database.socket else cfg.database.host + ":" + toString cfg.database.port}
NAME = ${cfg.database.name}
USER = ${cfg.database.user}
PASSWD = #dbpass#
@@ -148,6 +149,13 @@ in
'';
};
+ socket = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ example = "/run/mysqld/mysqld.sock";
+ description = "Path to the unix socket file to use for authentication.";
+ };
+
path = mkOption {
type = types.str;
default = "${cfg.stateDir}/data/gitea.db";
@@ -253,7 +261,7 @@ in
systemd.services.gitea = {
description = "gitea";
- after = [ "network.target" "postgresql.service" ];
+ after = [ "network.target" ] ++ lib.optional usePostgresql "postgresql.service" ++ lib.optional useMysql "mysql.service";
wantedBy = [ "multi-user.target" ];
path = [ gitea.bin ];
diff --git a/nixos/release.nix b/nixos/release.nix
index e18b6ad310fd..b7f8c01bb000 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -304,6 +304,7 @@ in rec {
tests.fsck = callTest tests/fsck.nix {};
tests.fwupd = callTest tests/fwupd.nix {};
tests.gdk-pixbuf = callTest tests/gdk-pixbuf.nix {};
+ tests.gitea = callSubTests tests/gitea.nix {};
tests.gitlab = callTest tests/gitlab.nix {};
tests.gitolite = callTest tests/gitolite.nix {};
tests.gjs = callTest tests/gjs.nix {};
diff --git a/nixos/tests/gitea.nix b/nixos/tests/gitea.nix
new file mode 100644
index 000000000000..7ffe05ef3f1f
--- /dev/null
+++ b/nixos/tests/gitea.nix
@@ -0,0 +1,74 @@
+{ system ? builtins.currentSystem }:
+
+with import ../lib/testing.nix { inherit system; };
+with pkgs.lib;
+
+{
+ mysql = makeTest {
+ name = "gitea-mysql";
+ meta.maintainers = [ maintainers.aanderse ];
+
+ machine =
+ { config, pkgs, ... }:
+ { services.mysql.enable = true;
+ services.mysql.package = pkgs.mariadb;
+ services.mysql.ensureDatabases = [ "gitea" ];
+ services.mysql.ensureUsers = [
+ { name = "gitea";
+ ensurePermissions = { "gitea.*" = "ALL PRIVILEGES"; };
+ }
+ ];
+
+ services.gitea.enable = true;
+ services.gitea.database.type = "mysql";
+ services.gitea.database.socket = "/run/mysqld/mysqld.sock";
+ };
+
+ testScript = ''
+ startAll;
+
+ $machine->waitForUnit('gitea.service');
+ $machine->waitForOpenPort('3000');
+ $machine->succeed("curl --fail http://localhost:3000/");
+ '';
+ };
+
+ postgres = makeTest {
+ name = "gitea-postgres";
+ meta.maintainers = [ maintainers.aanderse ];
+
+ machine =
+ { config, pkgs, ... }:
+ {
+ services.gitea.enable = true;
+ services.gitea.database.type = "postgres";
+ services.gitea.database.password = "secret";
+ };
+
+ testScript = ''
+ startAll;
+
+ $machine->waitForUnit('gitea.service');
+ $machine->waitForOpenPort('3000');
+ $machine->succeed("curl --fail http://localhost:3000/");
+ '';
+ };
+
+ sqlite = makeTest {
+ name = "gitea-sqlite";
+ meta.maintainers = [ maintainers.aanderse ];
+
+ machine =
+ { config, pkgs, ... }:
+ { services.gitea.enable = true;
+ };
+
+ testScript = ''
+ startAll;
+
+ $machine->waitForUnit('gitea.service');
+ $machine->waitForOpenPort('3000');
+ $machine->succeed("curl --fail http://localhost:3000/");
+ '';
+ };
+}