feat: mailserver
This commit is contained in:
parent
0ebf0d7a29
commit
b8a31b6264
28 changed files with 2446 additions and 1350 deletions
|
|
@ -1,4 +1,4 @@
|
|||
[
|
||||
# (import ./ferium.nix)
|
||||
(import ./vesktop.nix)
|
||||
(import ./powerdns-admin.nix)
|
||||
]
|
||||
|
|
|
|||
34
pkgs/overlays/dovecot.nix
Normal file
34
pkgs/overlays/dovecot.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
final: prev: {
|
||||
dovecot = prev.dovecot.overrideAttrs (oldAttrs: rec {
|
||||
version = "2.4.0";
|
||||
|
||||
src = prev.fetchurl {
|
||||
url = "https://dovecot.org/releases/${prev.lib.versions.majorMinor version}/${oldAttrs.pname}-${version}.tar.gz";
|
||||
hash = "sha256-6Q5J+MMbCaUIJJpP7oYF+qZf4yCBm/ytryUkEmJT1a4=";
|
||||
};
|
||||
|
||||
# Dovecot 2.4 Not need this patch anymore
|
||||
patches = builtins.filter (
|
||||
patch: (!(prev.lib.hasInfix "Support-openssl-3.0.patch" (toString patch)))
|
||||
) oldAttrs.patches;
|
||||
|
||||
# Dovecot 2.4 Not need this patch anymore
|
||||
postPatch =
|
||||
prev.lib.replaceStrings
|
||||
[
|
||||
# bash
|
||||
''
|
||||
# DES-encrypted passwords are not supported by NixPkgs anymore
|
||||
sed '/test_password_scheme("CRYPT"/d' -i src/auth/test-libpassword.c
|
||||
''
|
||||
]
|
||||
[
|
||||
# bash
|
||||
''
|
||||
# DES-encrypted passwords are not supported by NixPkgs anymore
|
||||
sed '/test_password_scheme("CRYPT"/d' -i src/lib-auth/test-password-scheme.c
|
||||
''
|
||||
]
|
||||
oldAttrs.postPatch;
|
||||
});
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
final: prev: {
|
||||
ferium = prev.ferium.overrideAttrs (
|
||||
final: prev: rec {
|
||||
cargoHash = "sha256-yedl4KQCpT7Ai1EPvwD5kzhkHesIjGVAcxKjp5k2jmI=";
|
||||
version = "4.7.0";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "gorilla-devs";
|
||||
repo = prev.pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-jj3BdaxH7ofhHNF2eu+burn6+/0bPQQZ8JfjXAFyN4A=";
|
||||
};
|
||||
|
||||
cargoDeps = prev.rustPlatform.fetchCargoVendor {
|
||||
inherit (final) pname src version;
|
||||
useFetchCargoVendor = true;
|
||||
hash = final.cargoHash;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
150
pkgs/overlays/powerdns-admin.nix
Normal file
150
pkgs/overlays/powerdns-admin.nix
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
final: prev: {
|
||||
powerdns-admin = prev.powerdns-admin.overrideAttrs (
|
||||
oldAttrs:
|
||||
let
|
||||
pname = "powerdns-admin";
|
||||
version = "0.4.2";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "PowerDNS-Admin";
|
||||
repo = "PowerDNS-Admin";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-q9mt8wjSNFb452Xsg+qhNOWa03KJkYVGAeCWVSzZCyk=";
|
||||
};
|
||||
|
||||
python = prev.python3;
|
||||
|
||||
pythonDeps = with python.pkgs; [
|
||||
distutils
|
||||
flask
|
||||
flask-assets
|
||||
flask-login
|
||||
flask-sqlalchemy
|
||||
flask-migrate
|
||||
flask-seasurf
|
||||
flask-mail
|
||||
flask-session
|
||||
flask-session-captcha
|
||||
flask-sslify
|
||||
mysqlclient
|
||||
psycopg2
|
||||
sqlalchemy
|
||||
certifi
|
||||
cffi
|
||||
configobj
|
||||
cryptography
|
||||
bcrypt
|
||||
requests
|
||||
python-ldap
|
||||
pyotp
|
||||
qrcode
|
||||
dnspython
|
||||
gunicorn
|
||||
itsdangerous
|
||||
python3-saml
|
||||
pytz
|
||||
rcssmin
|
||||
rjsmin
|
||||
authlib
|
||||
bravado-core
|
||||
lima
|
||||
lxml
|
||||
passlib
|
||||
pyasn1
|
||||
pytimeparse
|
||||
pyyaml
|
||||
jinja2
|
||||
itsdangerous
|
||||
webcolors
|
||||
werkzeug
|
||||
zipp
|
||||
zxcvbn
|
||||
|
||||
standard-imghdr # Add extra dep
|
||||
];
|
||||
|
||||
all_patches = [
|
||||
(prev.pkgs.fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/NixOS/nixpkgs/refs/heads/nixos-unstable/pkgs/by-name/po/powerdns-admin/0001-Fix-flask-2.3-issue.patch";
|
||||
sha256 = "sha256-EcyHbS9NJorEG0/7JlWdbaHFFZrq9Dy9F0IMxDKLMzw=";
|
||||
})
|
||||
];
|
||||
|
||||
assets = prev.stdenv.mkDerivation {
|
||||
pname = "${pname}-assets";
|
||||
inherit version src;
|
||||
|
||||
offlineCache = prev.fetchYarnDeps {
|
||||
yarnLock = "${src}/yarn.lock";
|
||||
hash = "sha256-rXIts+dgOuZQGyiSke1NIG7b4lFlR/Gfu3J6T3wP3aY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
prev.yarnConfigHook
|
||||
]
|
||||
++ pythonDeps;
|
||||
|
||||
patches = all_patches ++ [
|
||||
(prev.pkgs.fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/NixOS/nixpkgs/refs/heads/nixos-unstable/pkgs/by-name/po/powerdns-admin/0002-Remove-cssrewrite-filter.patch";
|
||||
sha256 = "sha256-/5oRyD6T7PtofG1U26wiSigDVj2F+U6VLDMO5YH926o=";
|
||||
})
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
SESSION_TYPE=filesystem FLASK_APP=./powerdnsadmin/__init__.py flask assets build
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
# https://github.com/PowerDNS-Admin/PowerDNS-Admin/blob/54b257768f600c5548a1c7e50eac49c40df49f92/docker/Dockerfile#L43
|
||||
mkdir $out
|
||||
cp -r powerdnsadmin/static/{generated,assets,img} $out
|
||||
find powerdnsadmin/static/node_modules -name webfonts -exec cp -r {} $out \; -printf "Copying %P\n"
|
||||
find powerdnsadmin/static/node_modules -name fonts -exec cp -r {} $out \; -printf "Copying %P\n"
|
||||
find powerdnsadmin/static/node_modules/icheck/skins/square -name '*.png' -exec cp {} $out/generated \;
|
||||
'';
|
||||
};
|
||||
|
||||
assetsPy = prev.writeText "assets.py" ''
|
||||
from flask_assets import Environment
|
||||
assets = Environment()
|
||||
assets.register('js_login', 'generated/login.js')
|
||||
assets.register('js_validation', 'generated/validation.js')
|
||||
assets.register('css_login', 'generated/login.css')
|
||||
assets.register('js_main', 'generated/main.js')
|
||||
assets.register('css_main', 'generated/main.css')
|
||||
'';
|
||||
in
|
||||
{
|
||||
pythonPath = pythonDeps;
|
||||
|
||||
nativeBuildInputs = [ python.pkgs.wrapPython ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
# Nasty hack: call wrapPythonPrograms to set program_PYTHONPATH (see tribler)
|
||||
wrapPythonPrograms
|
||||
|
||||
mkdir -p $out/share $out/bin
|
||||
cp -r migrations powerdnsadmin $out/share/
|
||||
|
||||
ln -s ${assets} $out/share/powerdnsadmin/static
|
||||
ln -s ${assetsPy} $out/share/powerdnsadmin/assets.py
|
||||
|
||||
echo "$gunicornScript" > $out/bin/powerdns-admin
|
||||
chmod +x $out/bin/powerdns-admin
|
||||
wrapProgram $out/bin/powerdns-admin \
|
||||
--set PATH ${python.pkgs.python}/bin \
|
||||
--set PYTHONPATH $out/share:$program_PYTHONPATH
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
# PYTHONPATH of all dependencies used by the package
|
||||
pythonPath = prev.python3.pkgs.makePythonPath pythonDeps;
|
||||
tests = prev.nixosTests.powerdns-admin;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue