Migrate to poetry, update nixpkgs

This commit is contained in:
Andrey Golovizin 2021-07-08 21:22:52 +02:00
parent c0020fe276
commit 58d3aef568
14 changed files with 1384 additions and 1517 deletions

6
.envrc
View file

@ -1,9 +1,9 @@
use flake use flake
VIRTUAL_ENV="$PWD/venv" VIRTUAL_ENV="$PWD/.venv"
if [ ! -e venv ] if [ ! -e .venv ]
then then
python -m venv --system-site-packages "${VIRTUAL_ENV}" poetry install
fi fi
export VIRTUAL_ENV export VIRTUAL_ENV
PATH_add "$VIRTUAL_ENV/bin" PATH_add "$VIRTUAL_ENV/bin"

31
flake.lock generated
View file

@ -2,49 +2,32 @@
"nodes": { "nodes": {
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1612433293, "lastModified": 1625692408,
"narHash": "sha256-p9vbZBJE8BqLr4uOC+RP12Kg6v6u/gpi8jJ2v1iBAk4=", "narHash": "sha256-e9L3TLLDVIJpMnHtiNHJE62oOh6emRtSZ244bgYJUZs=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2b9daa020d40aac9d6ff3d1941d22acf4a3e9229", "rev": "c06613c25df3fe1dd26243847a3c105cf6770627",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
"ref": "nixos-20.09", "ref": "nixos-21.05",
"type": "indirect" "type": "indirect"
} }
}, },
"pypi2nix": {
"flake": false,
"locked": {
"lastModified": 1590927832,
"narHash": "sha256-NOvfnrXVigRAAw5JzL/2rN3AAgDdVthpgCYCbv/wr/8=",
"owner": "nix-community",
"repo": "pypi2nix",
"rev": "0dbd119465ff2ccbe43cb83431eba792b536a640",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "pypi2nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"pypi2nix": "pypi2nix",
"utils": "utils" "utils": "utils"
} }
}, },
"utils": { "utils": {
"locked": { "locked": {
"lastModified": 1610051610, "lastModified": 1623875721,
"narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -2,15 +2,11 @@
description = "A very basic flake"; description = "A very basic flake";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-20.09"; nixpkgs.url = "nixpkgs/nixos-21.05";
utils.url = "github:numtide/flake-utils"; utils.url = "github:numtide/flake-utils";
pypi2nix = {
url = "github:nix-community/pypi2nix";
flake = false;
};
}; };
outputs = { self, nixpkgs, utils, pypi2nix }: outputs = { self, nixpkgs, utils }:
{ {
overlay = final: prev: { overlay = final: prev: {
strojnadzor = self.packages.${final.system}.strojnadzor; strojnadzor = self.packages.${final.system}.strojnadzor;
@ -36,49 +32,19 @@
} // utils.lib.eachSystem [ "x86_64-linux" ] ( } // utils.lib.eachSystem [ "x86_64-linux" ] (
system: let system: let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
python = import ./requirements.nix { inherit pkgs; };
pypi2nix' = import pypi2nix;
in in
rec { rec {
devShell = pkgs.mkShell { devShell = pkgs.mkShell {
name = "strojnadzor-env"; name = "strojnadzor-env";
buildInputs = [ buildInputs = [
pkgs.nodejs pkgs.nodejs
pypi2nix pkgs.python38Packages.poetry
python.interpreter
]; ];
}; };
packages.strojnadzor = python.mkDerivation { packages.strojnadzor = pkgs.poetry2nix.mkPoetryApplication {
pname = "strojnadzor"; projectDir = ./.;
version = "0.0.1"; python = pkgs.python38;
src = pkgs.nix-gitignore.gitignoreSource [] ./.;
buildInputs = [];
propagatedBuildInputs = with python.packages; [
aldryn-forms
django-absolute
django-cms
django-emailit
django-filer
django-sekizai
django-simple-captcha
django-treebeard
djangocms-bootstrap4
djangocms-file
djangocms-googlemap
djangocms-icon
djangocms-link
djangocms-picture
djangocms-snippet
djangocms-style
djangocms-text-ckeditor
djangocms-video
easy-thumbnails
gunicorn
python-dotenv
setuptools
];
passthru.exePath = "/bin/strojnadzor-admin";
}; };
defaultPackage = packages.strojnadzor; defaultPackage = packages.strojnadzor;

View file

@ -12,7 +12,7 @@ let
static = pkgs.runCommand "static" {} '' static = pkgs.runCommand "static" {} ''
export STROJNADZOR_STATIC_ROOT="$out" export STROJNADZOR_STATIC_ROOT="$out"
${cfg.package}/bin/strojnadzor-admin collectstatic ${cfg.package}/bin/strojnadzor collectstatic
''; '';
in in
@ -99,8 +99,8 @@ in
Type = "notify"; Type = "notify";
User = "strojnadzor"; User = "strojnadzor";
Group = "strojnadzor"; Group = "strojnadzor";
ExecStartPre = "${cfg.package}/bin/strojnadzor-admin migrate"; ExecStartPre = "${cfg.package}/bin/strojnadzor migrate";
ExecStart = "${cfg.package}/bin/strojnadzor-admin runserver-gunicorn"; ExecStart = "${cfg.package}/bin/strojnadzor runserver-gunicorn";
StateDirectory = "strojnadzor"; StateDirectory = "strojnadzor";
CapabilityBoundingSet = ""; CapabilityBoundingSet = "";
LockPersonality = true; LockPersonality = true;

1317
poetry.lock generated Normal file

File diff suppressed because it is too large Load diff

2
poetry.toml Normal file
View file

@ -0,0 +1,2 @@
[virtualenvs]
in-project = true

46
pyproject.toml Normal file
View file

@ -0,0 +1,46 @@
[tool.poetry]
name = "strojnadzor"
version = "0.1.0"
description = "Strojnadzor site"
authors = ["Andrey Golovizin <ag@sologoc.com>"]
license = "AGPLv3"
[tool.poetry.dependencies]
python = "^3.8"
aldryn-forms = "~4.0.1"
Django = "~2.1"
django-classy-tags = "~=0.9"
django-cms = "3.7.1"
django-filer = "~1.7"
django-mptt = "~0.11"
django-sekizai = "~1.1"
django-treebeard = "~4.3"
djangocms-admin-style = "~1.4"
djangocms-bootstrap4 = "~1.5"
djangocms-file = "~2.4"
djangocms-googlemap = "~1.3"
djangocms-link = "~2.5"
djangocms-picture = "~2.3"
djangocms-snippet = "~2.2"
djangocms-style = "~2.2"
djangocms-text-ckeditor = "~3.8"
djangocms-video = "~2.2"
easy-thumbnails = "~2.7.1"
gunicorn = "^20.1.0"
python-dotenv = "^0.18.0"
[tool.poetry.dev-dependencies]
black = "^21.6b0"
flake8 = "^3.9.2"
isort = "^5.9.2"
pyls-isort = "^0.2.2"
python-lsp-black = "^1.0.0"
python-lsp-server = "^1.1.0"
[tool.poetry.scripts]
strojnadzor = "strojnadzor.__main__:main"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

View file

@ -1,6 +0,0 @@
black
flake8
pip-tools
pyls-black
pyls-isort
python-language-server[rope]

View file

@ -1,33 +0,0 @@
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile --output-file=requirements-dev.txt requirements-dev.in
#
appdirs==1.4.3 # via black
attrs==19.3.0 # via black
black==19.10b0 # via -r requirements-dev.in, pyls-black
click==7.1.1 # via black, pip-tools
entrypoints==0.3 # via flake8
flake8==3.7.9 # via -r requirements-dev.in
importlib-metadata==1.5.0 # via pluggy
isort==4.3.21 # via pyls-isort
jedi==0.15.2 # via python-language-server
mccabe==0.6.1 # via flake8
parso==0.6.2 # via jedi
pathspec==0.7.0 # via black
pip-tools==4.5.1 # via -r requirements-dev.in
pluggy==0.13.1 # via python-language-server
pycodestyle==2.5.0 # via flake8
pyflakes==2.1.1 # via flake8
pyls-black==0.4.4 # via -r requirements-dev.in
pyls-isort==0.1.1 # via -r requirements-dev.in
python-jsonrpc-server==0.3.4 # via python-language-server
python-language-server[rope]==0.31.8 # via -r requirements-dev.in, pyls-black, pyls-isort
regex==2020.2.20 # via black
rope==0.16.0 # via python-language-server
six==1.14.0 # via pip-tools
toml==0.10.0 # via black, pyls-black
typed-ast==1.4.1 # via black
ujson==1.35 # via python-jsonrpc-server, python-language-server
zipp==3.1.0 # via importlib-metadata

File diff suppressed because it is too large Load diff

View file

@ -1,64 +0,0 @@
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile --output-file=requirements.txt setup.py
#
aldryn-boilerplates==0.8.0 # via aldryn-forms
aldryn-forms==4.0.1 # via strojnadzor (setup.py)
cachetools==4.0.0 # via premailer
certifi==2019.11.28 # via requests
chardet==3.0.4 # via requests
cssselect==1.1.0 # via premailer
cssutils==1.0.2 # via premailer
django-absolute==0.3 # via django-emailit
django-appconf==1.0.3 # via aldryn-boilerplates
django-classy-tags==1.0.0 # via django-cms, django-sekizai, strojnadzor (setup.py)
django-cms==3.7.1 # via aldryn-forms, djangocms-attributes-field, djangocms-bootstrap4, djangocms-file, djangocms-googlemap, djangocms-icon, djangocms-link, djangocms-picture, djangocms-snippet, djangocms-style, djangocms-text-ckeditor, djangocms-video, strojnadzor (setup.py)
django-emailit==0.2.4 # via aldryn-forms
django-filer==1.7.0 # via aldryn-forms, djangocms-bootstrap4, djangocms-file, djangocms-googlemap, djangocms-link, djangocms-picture, djangocms-video, strojnadzor (setup.py)
django-formtools==2.2 # via django-cms
django-js-asset==1.2.2 # via django-mptt
django-mptt==0.11.0 # via django-filer, strojnadzor (setup.py)
django-polymorphic==2.1.2 # via django-filer
django-ranged-response==0.2.0 # via django-simple-captcha
django-sekizai==1.1.0 # via django-cms, strojnadzor (setup.py)
django-simple-captcha==0.5.12 # via aldryn-forms
django-sizefield==1.0.0 # via aldryn-forms
django-tablib==3.2 # via aldryn-forms
django-treebeard==4.3.1 # via django-cms, strojnadzor (setup.py)
django==2.1.15 # via aldryn-boilerplates, django-absolute, django-appconf, django-classy-tags, django-cms, django-emailit, django-filer, django-formtools, django-mptt, django-polymorphic, django-ranged-response, django-sekizai, django-simple-captcha, django-sizefield, django-treebeard, easy-thumbnails, strojnadzor (setup.py)
djangocms-admin-style==1.4.0 # via django-cms, strojnadzor (setup.py)
djangocms-attributes-field==1.2.0 # via aldryn-forms, djangocms-bootstrap4, djangocms-file, djangocms-icon, djangocms-link, djangocms-picture, djangocms-style, djangocms-video
djangocms-bootstrap4==1.5.0 # via strojnadzor (setup.py)
djangocms-file==2.4.0 # via strojnadzor (setup.py)
djangocms-googlemap==1.3.0 # via strojnadzor (setup.py)
djangocms-icon==1.5.0 # via djangocms-bootstrap4
djangocms-link==2.5.0 # via djangocms-bootstrap4, strojnadzor (setup.py)
djangocms-picture==2.3.0 # via djangocms-bootstrap4, strojnadzor (setup.py)
djangocms-snippet==2.2.0 # via strojnadzor (setup.py)
djangocms-style==2.2.0 # via strojnadzor (setup.py)
djangocms-text-ckeditor==3.8.0 # via aldryn-forms, djangocms-bootstrap4, strojnadzor (setup.py)
djangocms-video==2.2.0 # via strojnadzor (setup.py)
easy-thumbnails==2.7 # via django-filer, djangocms-picture, strojnadzor (setup.py)
et-xmlfile==1.0.1 # via openpyxl
gunicorn==20.0.4 # via strojnadzor (setup.py)
html5lib==1.0.1 # via djangocms-text-ckeditor
idna==2.9 # via requests
jdcal==1.4.1 # via openpyxl
lxml==4.5.0 # via premailer
openpyxl==2.4.9 # via aldryn-forms
pillow==7.0.0 # via aldryn-forms, django-simple-captcha, djangocms-text-ckeditor, easy-thumbnails
premailer==3.6.1 # via django-emailit
python-dotenv==0.12.0 # via strojnadzor (setup.py)
pytz==2019.3 # via django
requests==2.23.0 # via premailer
six==1.14.0 # via aldryn-forms, django-appconf, django-classy-tags, django-filer, django-sekizai, django-simple-captcha, django-tablib, html5lib
tablib==1.1.0 # via aldryn-forms, django-tablib
unidecode==1.1.1 # via django-filer
urllib3==1.25.8 # via requests
webencodings==0.5.1 # via html5lib
yurl==1.0.0 # via aldryn-boilerplates
# The following packages are considered to be unsafe in a requirements file:
# setuptools

View file

@ -1,56 +0,0 @@
aldryn-boilerplates==0.8.0
aldryn-forms==4.0.1
cachetools==4.0.0
certifi==2019.11.28
chardet==3.0.4
cssselect==1.1.0
cssutils==1.0.2
Django==2.1.15
django-absolute==0.3
django-appconf==1.0.3
django-classy-tags==1.0.0
django-cms==3.7.1
django-emailit==0.2.4
django-filer==1.7.0
django-formtools==2.2
django-js-asset==1.2.2
django-mptt==0.11.0
django-polymorphic==2.1.2
django-ranged-response==0.2.0
django-sekizai==1.1.0
django-simple-captcha==0.5.12
django-sizefield==1.0.0
django-tablib==3.2
django-treebeard==4.3.1
djangocms-admin-style==1.4.0
djangocms-attributes-field==1.2.0
djangocms-bootstrap4==1.5.0
djangocms-file==2.4.0
djangocms-googlemap==1.3.0
djangocms-icon==1.5.0
djangocms-link==2.5.0
djangocms-picture==2.3.0
djangocms-snippet==2.2.0
djangocms-style==2.2.0
djangocms-text-ckeditor==3.8.0
djangocms-video==2.2.0
easy-thumbnails==2.7
et-xmlfile==1.0.1
gunicorn==20.0.4
html5lib==1.0.1
idna==2.9
jdcal==1.4.1
lxml==4.5.0
openpyxl==2.4.9
Pillow==7.0.0
premailer==3.6.1
python-dotenv==0.12.0
pytz==2019.3
requests==2.23.0
setuptools-scm==3.5.0
six==1.14.0
tablib==1.1.0
Unidecode==1.1.1
urllib3==1.25.8
webencodings==0.5.1
YURL==1.0.0

View file

@ -1,12 +0,0 @@
{ pkgs, python }:
self: super: {
"tablib" = python.overrideDerivation super."tablib" (old: {
buildInputs = old.buildInputs ++ [ self."setuptools-scm" ];
});
# https://github.com/nix-community/pypi2nix-overrides/pull/17/files
"wheel" = super."wheel".overrideDerivation
(old: { pipInstallFlags = [ "--ignore-installed" ]; });
}

View file

@ -1,53 +0,0 @@
#!/usr/bin/env python
from setuptools import find_packages, setup
setup(
name="strojnadzor",
version="0.0.1",
description="Strojnadzor site",
author="Andrey Golovizin",
author_email="ag@sologoc.com",
url="https://golovizin.ru/",
license="AGPLv3",
platforms=["platform-independent"],
packages=find_packages("src"),
package_dir={"": "src"},
package_data={
"strojnadzor": [
"DejaVuSans.ttf",
"construction.txt",
"static/*.css",
"templates/*.html",
]
},
# install_requires=install_requires,
install_requires=[
"aldryn-forms",
"django-classy-tags>=0.9",
"django-cms>=3.7,<3.8",
"django-filer>=1.3",
"django-mptt>0.9",
"django-sekizai>=1.0",
"django-treebeard>=4.0,<5.0",
"Django<2.2",
"djangocms-admin-style>=1.4,<1.5",
"djangocms-bootstrap4>=1.5,<1.6",
"djangocms-file>=2.3,<3.0",
"djangocms-googlemap>=1.3,<1.4",
"djangocms-link>=2.5,<2.6",
"djangocms-picture>=2.3,<2.4",
"djangocms-snippet>=2.2,<2.3",
"djangocms-style>=2.2,<2.3",
"djangocms-text-ckeditor>=3.7,<3.9",
"djangocms-video>=2.1,<2.3",
"easy_thumbnails",
"gunicorn",
"python-dotenv",
],
# extras_require=extras_require,
include_package_data=True,
entry_points={
"console_scripts": ["strojnadzor-admin = strojnadzor.__main__:main"],
},
)