1
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-06-30 13:05:15 +03:00

ifm-web: init at 4.0.2

Signed-off-by: Litchi Pi <litchi.pi@proton.me>
This commit is contained in:
Litchi Pi 2024-08-14 09:33:16 +02:00
parent 2f6604d82a
commit ef03964b92
3 changed files with 67 additions and 20 deletions

View file

@ -1,21 +1,19 @@
{ config, lib, pkgs, ...}:
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.ifm;
version = "4.0.2";
src = pkgs.fetchurl {
url = "https://github.com/misterunknown/ifm/releases/download/v${version}/cdn.ifm.php";
hash = "sha256-37WbRM6D7JGmd//06zMhxMGIh8ioY8vRUmxX4OHgqBE=";
};
php = pkgs.php83;
in {
in
{
options.services.ifm = {
enable = lib.mkEnableOption ''
Improved file manager, a single-file web-based filemanager
Lightweight and minimal, served using PHP's built-in server
'';
'';
dataDir = lib.mkOption {
type = lib.types.str;
@ -37,7 +35,7 @@ in {
settings = lib.mkOption {
type = with lib.types; attrsOf anything;
default = {};
default = { };
description = ''
Configuration of the IFM service.
@ -58,21 +56,15 @@ in {
wantedBy = [ "multi-user.target" ];
environment = {
IFM_ROOT_DIR = "/data";
} // (builtins.mapAttrs (_: val: toString val) cfg.settings);
script = ''
mkdir -p /tmp/ifm
ln -s ${src} /tmp/ifm/index.php
${lib.getExe php} -S ${cfg.listenAddress}:${builtins.toString cfg.port} -t /tmp/ifm
'';
serviceConfig = {
DynamicUser = true;
User = "ifm";
StandardOutput = "journal";
BindPaths = "${cfg.dataDir}:/data";
PrivateTmp = true;
ExecStart = "${lib.getExe pkgs.ifm-web} ${lib.escapeShellArg cfg.listenAddress} ${builtins.toString cfg.port} /data";
};
};
};