Unverified Commit a266f38a authored by Franz Pletz's avatar Franz Pletz Committed by GitHub
Browse files

Merge pull request #336584 from mweinelt/engelsystem-cache-migration

parents 2d1ea93e 760b2b55
Loading
Loading
Loading
Loading
+49 −30
Original line number Diff line number Diff line
{ config, lib, pkgs, utils, ... }:
{
  config,
  lib,
  pkgs,
  utils,
  ...
}:

let
  inherit (lib) mkDefault mkEnableOption mkIf mkOption types mkPackageOption;
  inherit (lib)
    mkDefault
    mkEnableOption
    mkIf
    mkOption
    mkPackageOption
    mkRenamedOptionModule
    types
  ;

  cfg = config.services.engelsystem;
in {
  options = {
    services.engelsystem = {
      enable = mkOption {
        default = false;
        example = true;
        description = ''
          Whether to enable engelsystem, an online tool for coordinating volunteers
          and shifts on large events.
        '';
        type = lib.types.bool;
      };
  imports = [
    (mkRenamedOptionModule [ "services" "engelsystem" "config" ] [ "services" "engelsystem" "settings" ])
  ];

  options.services.engelsystem = {
    enable = mkEnableOption "engelsystem, an online tool for coordinating volunteers and shifts on large events";

    package = mkPackageOption pkgs "engelsystem" { };

    domain = mkOption {
      type = types.str;
@@ -22,8 +34,6 @@ in {
      description = "Domain to serve on.";
    };

      package = mkPackageOption pkgs "engelsystem" { };

    createDatabase = mkOption {
      type = types.bool;
      default = true;
@@ -32,9 +42,8 @@ in {
        This will override every database setting in {option}`services.engelsystem.config`.
      '';
    };
    };

    services.engelsystem.config = mkOption {
    settings = mkOption {
      type = types.attrs;
      default = {
        database = {
@@ -144,7 +153,7 @@ in {
      script =
        let
          genConfigScript = pkgs.writeScript "engelsystem-gen-config.sh"
            (utils.genJqSecretsReplacementSnippet cfg.config "config.json");
            (utils.genJqSecretsReplacementSnippet cfg.settings "config.json");
        in ''
          umask 077
          mkdir -p /var/lib/engelsystem/storage/app
@@ -163,7 +172,17 @@ in {
        Group = "engelsystem";
      };
      script = ''
        versionFile="/var/lib/engelsystem/.version"
        version=$(cat "$versionFile" 2>/dev/null || echo 0)

        if [[ $version != ${cfg.package.version} ]]; then
          # prune template cache between releases
          rm -rfv /var/lib/engelsystem/storage/cache/*

          ${cfg.package}/bin/migrate

          echo ${cfg.package.version} > "$versionFile"
        fi
      '';
      after = [ "engelsystem-init.service" "mysql.service" ];
    };