76 lines
2.2 KiB
Nix
76 lines
2.2 KiB
Nix
|
{ config, lib, libS, pkgs, ... }:
|
||
|
|
||
|
let
|
||
|
cfg = config.services.mastodon;
|
||
|
cfgl = cfg.ldap;
|
||
|
inherit (config.security) ldap;
|
||
|
in
|
||
|
{
|
||
|
options.services.mastodon = {
|
||
|
ldap = {
|
||
|
enable = lib.mkEnableOption (lib.mdDoc "login only via LDAP");
|
||
|
|
||
|
userGroup = libS.ldap.mkUserGroupOption;
|
||
|
};
|
||
|
|
||
|
enableBirdUITheme = lib.mkEnableOption (lib.mdDoc "Bird UI Theme");
|
||
|
};
|
||
|
|
||
|
config.services.mastodon = {
|
||
|
package = lib.mkIf cfg.enableBirdUITheme (pkgs.mastodon.overrideAttrs (_: with pkgs; let
|
||
|
src = pkgs.applyPatches {
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "mstdn";
|
||
|
repo = "Bird-UI-Theme-Admins";
|
||
|
rev = "2f9921db746593f393c13f9b79e5b4c2e19b03bd";
|
||
|
hash = "sha256-+7FUm5GNXRWyS9Oiow6kwX+pWh11wO3stm5iOTY3sYY=";
|
||
|
};
|
||
|
|
||
|
patches = [
|
||
|
# fix compose box background
|
||
|
(fetchpatch {
|
||
|
url = "https://github.com/mstdn/Bird-UI-Theme-Admins/commit/d5a07d653680fba0ad8dd941405e2d0272ff9cd1.patch";
|
||
|
hash = "sha256-1gnQNCSSuTE/pkPCf49lJQbmeLAbaiPD9u/q8KiFvlU=";
|
||
|
})
|
||
|
];
|
||
|
};
|
||
|
in {
|
||
|
mastodonModules = mastodon.mastodonModules.overrideAttrs (oldAttrs: {
|
||
|
pname = "mastodon-birdui-theme";
|
||
|
|
||
|
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [
|
||
|
rsync
|
||
|
xorg.lndir
|
||
|
];
|
||
|
|
||
|
postPatch = ''
|
||
|
rsync -r ${src}/mastodon/ .
|
||
|
'';
|
||
|
});
|
||
|
|
||
|
postBuild = ''
|
||
|
cp ${src}/mastodon/config/themes.yml config/themes.yml
|
||
|
'';
|
||
|
}));
|
||
|
|
||
|
extraConfig = lib.mkIf cfgl.enable {
|
||
|
LDAP_ENABLED = "true";
|
||
|
LDAP_BASE = ldap.userBaseDN;
|
||
|
LDAP_BIND_DN = ldap.bindDN;
|
||
|
LDAP_HOST = ldap.domainName;
|
||
|
LDAP_METHOD = "simple_tls";
|
||
|
LDAP_PORT = toString ldap.port;
|
||
|
LDAP_UID = ldap.userField;
|
||
|
# convert .,- (space) in LDAP usernames to underscore, otherwise those users cannot log in
|
||
|
LDAP_UID_CONVERSION_ENABLED = "true";
|
||
|
LDAP_SEARCH_FILTER = ldap.searchFilterWithGroupFilter cfgl.userGroup "(|(%{uid}=%{email})(%{mail}=%{email}))";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config.services.portunus.seedSettings.groups = lib.optional (cfgl.userGroup != null) {
|
||
|
long_name = "Mastodon Users";
|
||
|
name = cfgl.userGroup;
|
||
|
permissions = { };
|
||
|
};
|
||
|
}
|