diff options
Diffstat (limited to 'pkgs/applications/networking/powerdns-admin/default.nix')
-rw-r--r-- | pkgs/applications/networking/powerdns-admin/default.nix | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/pkgs/applications/networking/powerdns-admin/default.nix b/pkgs/applications/networking/powerdns-admin/default.nix index fe0112a4aaef0..33ba132b4daa5 100644 --- a/pkgs/applications/networking/powerdns-admin/default.nix +++ b/pkgs/applications/networking/powerdns-admin/default.nix @@ -1,53 +1,55 @@ { lib, stdenv, fetchFromGitHub, mkYarnPackage, nixosTests, writeText, python3 }: let - version = "0.3.0"; + version = "0.4.1"; src = fetchFromGitHub { - owner = "ngoduykhanh"; + owner = "PowerDNS-Admin"; repo = "PowerDNS-Admin"; rev = "v${version}"; - hash = "sha256-e11u0jdJr+2TDXvBAPlDfnuuDwSfBq+JtvnDUTNKp/c="; + hash = "sha256-AwqEcAPD1SF1Ma3wtH03mXlTywM0Q19hciCmTtlr3gk="; }; python = python3; pythonDeps = with python.pkgs; [ - flask flask_assets flask-login flask-sqlalchemy flask_migrate flask-seasurf flask_mail flask-session flask-sslify + flask flask_assets flask-login flask-sqlalchemy flask_migrate flask-seasurf flask_mail flask-session flask-session-captcha flask-sslify mysqlclient psycopg2 sqlalchemy - cffi configobj cryptography bcrypt requests python-ldap pyotp qrcode dnspython - gunicorn python3-saml pytz cssmin rjsmin authlib bravado-core - lima pytimeparse pyyaml jinja2 itsdangerous werkzeug + 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 ]; assets = mkYarnPackage { inherit src version; packageJSON = ./package.json; yarnNix = ./yarndeps.nix; + # Copied from package.json, see also + # https://github.com/NixOS/nixpkgs/pull/214952 + packageResolutions = { + "@fortawesome/fontawesome-free" = "6.3.0"; + }; nativeBuildInputs = pythonDeps; patchPhase = '' - sed -i -r -e "s|'cssmin',\s?'cssrewrite'|'cssmin'|g" powerdnsadmin/assets.py + sed -i -r -e "s|'rcssmin',\s?'cssrewrite'|'rcssmin'|g" powerdnsadmin/assets.py ''; buildPhase = '' # The build process expects the directory to be writable # with node_modules at a specific path - # https://github.com/ngoduykhanh/PowerDNS-Admin/blob/master/.yarnrc + # https://github.com/PowerDNS-Admin/PowerDNS-Admin/blob/master/.yarnrc approot=deps/powerdns-admin-assets ln -s $node_modules $approot/powerdnsadmin/static/node_modules - FLASK_APP=$approot/powerdnsadmin/__init__.py flask assets build + SESSION_TYPE=filesystem FLASK_APP=$approot/powerdnsadmin/__init__.py flask assets build ''; installPhase = '' - # https://github.com/ngoduykhanh/PowerDNS-Admin/blob/54b257768f600c5548a1c7e50eac49c40df49f92/docker/Dockerfile#L43 + # https://github.com/PowerDNS-Admin/PowerDNS-Admin/blob/54b257768f600c5548a1c7e50eac49c40df49f92/docker/Dockerfile#L43 mkdir $out cp -r $approot/powerdnsadmin/static/{generated,assets,img} $out + find $node_modules -name webfonts -exec cp -r {} $out \; + find $node_modules -name fonts -exec cp -r {} $out \; find $node_modules/icheck/skins/square -name '*.png' -exec cp {} $out/generated \; - - mkdir $out/fonts - cp $node_modules/ionicons/dist/fonts/* $out/fonts - cp $node_modules/bootstrap/dist/fonts/* $out/fonts - cp $node_modules/font-awesome/fonts/* $out/fonts ''; distPhase = "true"; }; @@ -61,7 +63,7 @@ let assets.register('js_main', 'generated/main.js') assets.register('css_main', 'generated/main.css') ''; -in stdenv.mkDerivation rec { +in stdenv.mkDerivation { pname = "powerdns-admin"; inherit src version; @@ -81,7 +83,13 @@ in stdenv.mkDerivation rec { postPatch = '' rm -r powerdnsadmin/static powerdnsadmin/assets.py - sed -i "s/id:/'id':/" migrations/versions/787bdba9e147_init_db.py + # flask-migrate 4.0 compatibility: https://github.com/PowerDNS-Admin/PowerDNS-Admin/issues/1376 + substituteInPlace migrations/env.py --replace "render_as_batch=config.get_main_option('sqlalchemy.url').startswith('sqlite:')," "" + # flask-session and powerdns-admin both try to add sqlalchemy to flask. + # Reuse the database for flask-session + substituteInPlace powerdnsadmin/__init__.py --replace "sess = Session(app)" "app.config['SESSION_SQLALCHEMY'] = models.base.db; sess = Session(app)" + # Routes creates session database tables, so it needs a context + substituteInPlace powerdnsadmin/__init__.py --replace "routes.init_app(app)" "with app.app_context(): routes.init_app(app)" ''; installPhase = '' @@ -113,7 +121,7 @@ in stdenv.mkDerivation rec { meta = with lib; { description = "A PowerDNS web interface with advanced features"; - homepage = "https://github.com/ngoduykhanh/PowerDNS-Admin"; + homepage = "https://github.com/PowerDNS-Admin/PowerDNS-Admin"; license = licenses.mit; maintainers = with maintainers; [ Flakebi zhaofengli ]; }; |