at 25.11-pre 3.7 kB view raw
1{ lib, ... }: 2 3let 4 db-pass = "Test2Test2"; 5 app-key = "TestTestTestTestTestTestTestTest"; 6in 7{ 8 name = "firefly-iii"; 9 meta.maintainers = [ lib.maintainers.savyajha ]; 10 11 nodes.fireflySqlite = 12 { config, ... }: 13 { 14 environment.etc = { 15 "firefly-iii-appkey".text = app-key; 16 }; 17 services.firefly-iii = { 18 enable = true; 19 enableNginx = true; 20 settings = { 21 APP_KEY_FILE = "/etc/firefly-iii-appkey"; 22 LOG_CHANNEL = "stdout"; 23 SITE_OWNER = "mail@example.com"; 24 }; 25 }; 26 }; 27 28 nodes.fireflyPostgresql = 29 { config, pkgs, ... }: 30 { 31 environment.etc = { 32 "firefly-iii-appkey".text = app-key; 33 "postgres-pass".text = db-pass; 34 }; 35 services.firefly-iii = { 36 enable = true; 37 enableNginx = true; 38 settings = { 39 APP_KEY_FILE = "/etc/firefly-iii-appkey"; 40 LOG_CHANNEL = "stdout"; 41 SITE_OWNER = "mail@example.com"; 42 DB_CONNECTION = "pgsql"; 43 DB_DATABASE = "firefly"; 44 DB_USERNAME = "firefly"; 45 DB_PASSWORD_FILE = "/etc/postgres-pass"; 46 PGSQL_SCHEMA = "firefly"; 47 }; 48 }; 49 50 services.postgresql = { 51 enable = true; 52 package = pkgs.postgresql_16; 53 authentication = '' 54 local all postgres peer 55 local firefly firefly password 56 ''; 57 initialScript = pkgs.writeText "firefly-init.sql" '' 58 CREATE USER "firefly" WITH LOGIN PASSWORD '${db-pass}'; 59 CREATE DATABASE "firefly" WITH OWNER "firefly"; 60 \c firefly 61 CREATE SCHEMA AUTHORIZATION firefly; 62 ''; 63 }; 64 }; 65 66 nodes.fireflyMysql = 67 { config, pkgs, ... }: 68 { 69 environment.etc = { 70 "firefly-iii-appkey".text = app-key; 71 "mysql-pass".text = db-pass; 72 }; 73 services.firefly-iii = { 74 enable = true; 75 enableNginx = true; 76 settings = { 77 APP_KEY_FILE = "/etc/firefly-iii-appkey"; 78 LOG_CHANNEL = "stdout"; 79 SITE_OWNER = "mail@example.com"; 80 DB_CONNECTION = "mysql"; 81 DB_DATABASE = "firefly"; 82 DB_USERNAME = "firefly"; 83 DB_PASSWORD_FILE = "/etc/mysql-pass"; 84 DB_SOCKET = "/run/mysqld/mysqld.sock"; 85 }; 86 }; 87 88 services.mysql = { 89 enable = true; 90 package = pkgs.mariadb; 91 initialScript = pkgs.writeText "firefly-init.sql" '' 92 create database firefly DEFAULT CHARACTER SET utf8mb4; 93 create user 'firefly'@'localhost' identified by '${db-pass}'; 94 grant all on firefly.* to 'firefly'@'localhost'; 95 ''; 96 settings.mysqld.character-set-server = "utf8mb4"; 97 }; 98 }; 99 100 testScript = '' 101 fireflySqlite.wait_for_unit("phpfpm-firefly-iii.service") 102 fireflySqlite.wait_for_unit("nginx.service") 103 fireflySqlite.succeed("curl -fvvv -Ls http://localhost/ | grep 'Firefly III'") 104 fireflySqlite.succeed("curl -fvvv -Ls http://localhost/v1/js/app.js") 105 fireflySqlite.succeed("systemctl start firefly-iii-cron.service") 106 fireflyPostgresql.wait_for_unit("phpfpm-firefly-iii.service") 107 fireflyPostgresql.wait_for_unit("nginx.service") 108 fireflyPostgresql.wait_for_unit("postgresql.service") 109 fireflyPostgresql.succeed("curl -fvvv -Ls http://localhost/ | grep 'Firefly III'") 110 fireflyPostgresql.succeed("systemctl start firefly-iii-cron.service") 111 fireflyMysql.wait_for_unit("phpfpm-firefly-iii.service") 112 fireflyMysql.wait_for_unit("nginx.service") 113 fireflyMysql.wait_for_unit("mysql.service") 114 fireflyMysql.succeed("curl -fvvv -Ls http://localhost/ | grep 'Firefly III'") 115 fireflyMysql.succeed("systemctl start firefly-iii-cron.service") 116 ''; 117}