diff options
author | Litchi Pi <litchi.pi@proton.me> | 2024-02-01 08:30:12 +0100 |
---|---|---|
committer | Litchi Pi <litchi.pi@proton.me> | 2024-02-23 07:15:24 +0100 |
commit | 4ebf2b54b09589e35eccb1a565bfb124cb7d09ba (patch) | |
tree | 1fc4b61442a431f5cdc473f85655c01e04df24a8 /nixos/modules/services/web-apps | |
parent | c1373dd3abaa278382a45b35b9bd42d38e963707 (diff) | |
download | nixlib-4ebf2b54b09589e35eccb1a565bfb124cb7d09ba.tar nixlib-4ebf2b54b09589e35eccb1a565bfb124cb7d09ba.tar.gz nixlib-4ebf2b54b09589e35eccb1a565bfb124cb7d09ba.tar.bz2 nixlib-4ebf2b54b09589e35eccb1a565bfb124cb7d09ba.tar.lz nixlib-4ebf2b54b09589e35eccb1a565bfb124cb7d09ba.tar.xz nixlib-4ebf2b54b09589e35eccb1a565bfb124cb7d09ba.tar.zst nixlib-4ebf2b54b09589e35eccb1a565bfb124cb7d09ba.zip |
nixos/mealie: init module
Signed-off-by: Litchi Pi <litchi.pi@proton.me>
Diffstat (limited to 'nixos/modules/services/web-apps')
-rw-r--r-- | nixos/modules/services/web-apps/mealie.nix | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/nixos/modules/services/web-apps/mealie.nix b/nixos/modules/services/web-apps/mealie.nix new file mode 100644 index 000000000000..8bb7542c6b56 --- /dev/null +++ b/nixos/modules/services/web-apps/mealie.nix @@ -0,0 +1,79 @@ +{ config, lib, pkgs, ...}: +let + cfg = config.services.mealie; + pkg = cfg.package; +in +{ + options.services.mealie = { + enable = lib.mkEnableOption "Mealie, a recipe manager and meal planner"; + + package = lib.mkPackageOption pkgs "mealie" { }; + + listenAddress = lib.mkOption { + type = lib.types.str; + default = "0.0.0.0"; + description = "Address on which the service should listen."; + }; + + port = lib.mkOption { + type = lib.types.port; + default = 9000; + description = "Port on which to serve the Mealie service."; + }; + + settings = lib.mkOption { + type = with lib.types; attrsOf anything; + default = {}; + description = lib.mdDoc '' + Configuration of the Mealie service. + + See [the mealie documentation](https://nightly.mealie.io/documentation/getting-started/installation/backend-config/) for available options and default values. + + In addition to the official documentation, you can set {env}`MEALIE_LOG_FILE`. + ''; + example = { + ALLOW_SIGNUP = "false"; + }; + }; + + credentialsFile = lib.mkOption { + type = with lib.types; nullOr path; + default = null; + example = "/run/secrets/mealie-credentials.env"; + description = '' + File containing credentials used in mealie such as {env}`POSTGRES_PASSWORD` + or sensitive LDAP options. + + Expects the format of an `EnvironmentFile=`, as described by {manpage}`systemd.exec(5)`. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.services.mealie = { + description = "Mealie, a self hosted recipe manager and meal planner"; + + after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; + + environment = { + PRODUCTION = "true"; + ALEMBIC_CONFIG_FILE="${pkg}/config/alembic.ini"; + API_PORT = toString cfg.port; + DATA_DIR = "/var/lib/mealie"; + CRF_MODEL_PATH = "/var/lib/mealie/model.crfmodel"; + } // (builtins.mapAttrs (_: val: toString val) cfg.settings); + + serviceConfig = { + DynamicUser = true; + User = "mealie"; + ExecStartPre = "${pkg}/libexec/init_db"; + ExecStart = "${lib.getExe pkg} -b ${cfg.listenAddress}:${builtins.toString cfg.port}"; + EnvironmentFile = lib.mkIf (cfg.credentialsFile != null) cfg.credentialsFile; + StateDirectory = "mealie"; + StandardOutput="journal"; + }; + }; + }; +} |