Files
authelia/authelia.nix
2021-11-14 17:53:58 +01:00

71 lines
1.7 KiB
Nix

# nix-build --expr 'with import <nixpkgs> {}; callPackage ./authelia.nix {}'
{
pkgs ? import <nixpkgs> {},
packageVersion ? "4.32.2",
packageSha256 ? "1y3hf5hcnj5jx4zb2pdpdfkg4dhrmf0fib4w2m49cw6zms3qyjvb",
packageArch ? "arm64",
nginxEnableACME ? true,
nginxForceSSL ? true,
nginxIsDefault ? true,
config
}:
let
package = pkgs.stdenv.mkDerivation rec {
name = "authelia";
version = "${packageVersion}";
src = pkgs.fetchzip {
url = "https://github.com/authelia/authelia/releases/download/v${packageVersion}/authelia-v${packageVersion}-linux-${packageArch}.tar.gz";
sha256 = "${packageSha256}";
stripRoot=false;
};
installPhase = ''
mkdir -p $out/bin
install -Dm755 authelia-linux-arm64 $out/bin/authelia
'';
};
configFile = pkgs.writeText "config.yml" (builtins.toJSON config);
runAuthelia = pkgs.writeShellScriptBin "runAuthelia" ''
${package}/bin/authelia --config ${configFile}
'';
in
{
package = package;
configFile = configFile;
runAuthelia = runAuthelia;
systemd = {
services = {
authelia = {
serviceConfig.Type = "oneshot";
wantedBy = ["multi-user.target"];
after = [ "network.target"];
script = ''
${runAuthelia}/bin/runAuthelia
'';
};
};
};
nginx = {
virtualHosts = {
authelia = {
enableACME = nginxEnableACME;
forceSSL = nginxForceSSL;
default = nginxIsDefault;
locations."/".proxyPass = "http://localhost:9091";
};
};
};
meta = {
description = "The Cloud ready multi-factor authentication portal for your Apps.";
homepage = https://www.authelia.com/;
maintainers = "stubbfel";
license = pkgs.lib.licenses.apache20;
platforms = pkgs.lib.platforms.unix;
};
}