forked from M-Labs/it-infra
62 lines
1.4 KiB
Nix
62 lines
1.4 KiB
Nix
|
{ config, pkgs, ... }:
|
||
|
let
|
||
|
flarumPackage = with pkgs; stdenv.mkDerivation {
|
||
|
name = "flarum-package";
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "flarum";
|
||
|
repo = "flarum";
|
||
|
rev = "v0.1.0-beta.13";
|
||
|
sha256 = "0mj6w7nibdqmi7lx2r5d9yiif6lb584l93551i115a9ly3s4yinn";
|
||
|
};
|
||
|
buildPhase =
|
||
|
''
|
||
|
cp ${./flarum}/* .
|
||
|
'';
|
||
|
installPhase =
|
||
|
''
|
||
|
cp -ar . $out
|
||
|
'';
|
||
|
};
|
||
|
flarum = import "${flarumPackage}" {
|
||
|
inherit pkgs;
|
||
|
noDev = true;
|
||
|
};
|
||
|
cfg = config.services.flarum;
|
||
|
in
|
||
|
{
|
||
|
options.services.flarum = with pkgs.lib; {
|
||
|
user = mkOption {
|
||
|
type = types.str;
|
||
|
default = "nobody";
|
||
|
};
|
||
|
group = mkOption {
|
||
|
type = types.str;
|
||
|
default = "nogroup";
|
||
|
};
|
||
|
installPath = mkOption {
|
||
|
type = types.str;
|
||
|
default = "/var/www/flarum";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config.systemd.services.flarum-install = {
|
||
|
description = "Flarum installation";
|
||
|
before = [ "nginx.service" "phpfm-flarum.service" ];
|
||
|
wantedBy = [ "multi-user.target" ];
|
||
|
serviceConfig = {
|
||
|
Type = "oneshot";
|
||
|
};
|
||
|
path = [ pkgs.rsync ];
|
||
|
script = with cfg; ''
|
||
|
mkdir -p ${installPath}
|
||
|
rsync --links --recursive ${flarum}/ ${installPath}
|
||
|
for d in ${installPath} ${installPath}/public/assets \
|
||
|
${installPath}/storage ${installPath}/storage/*
|
||
|
do
|
||
|
chown ${user}:${group} $d
|
||
|
chmod 0775 $d
|
||
|
done
|
||
|
'';
|
||
|
};
|
||
|
}
|