Add poetry2nix

This commit is contained in:
Andreas Zweili 2023-08-28 20:36:32 +02:00
parent aab2affebc
commit 7b03bd7c68
4 changed files with 131 additions and 29 deletions

12
.envrc
View File

@ -5,7 +5,7 @@ layout_postgres() {
export PGHOST="$PGDATA" export PGHOST="$PGDATA"
if [[ ! -d "$PGDATA" ]]; then if [[ ! -d "$PGDATA" ]]; then
initdb initdb
echo -e "listen_addresses = 'localhost'\nunix_socket_directories = '$PGHOST'" >> "$PGDATA/postgresql.conf" echo -e "listen_addresses = 'localhost'\nunix_socket_directories = '$PGHOST'" >>"$PGDATA/postgresql.conf"
echo "CREATE DATABASE django;" | postgres --single -E postgres echo "CREATE DATABASE django;" | postgres --single -E postgres
fi fi
} }
@ -22,7 +22,10 @@ layout_poetry() {
VIRTUAL_ENV="$(pwd)/.venv" VIRTUAL_ENV="$(pwd)/.venv"
poetry install poetry install
else else
VIRTUAL_ENV=$(poetry env info --path 2>/dev/null ; true) VIRTUAL_ENV=$(
poetry env info --path 2>/dev/null
true
)
fi fi
if [[ -z $VIRTUAL_ENV || ! -d $VIRTUAL_ENV ]]; then if [[ -z $VIRTUAL_ENV || ! -d $VIRTUAL_ENV ]]; then
@ -35,11 +38,12 @@ layout_poetry() {
export POETRY_ACTIVE=1 export POETRY_ACTIVE=1
export VIRTUAL_ENV export VIRTUAL_ENV
} }
layout poetry if ! has nix; then
layout poetry
fi
export PROJECT_DIR=$(pwd) export PROJECT_DIR=$(pwd)
export WEBPORT=$(($RANDOM + 1100)) export WEBPORT=$(($RANDOM + 1100))
export PGPORT=$(($WEBPORT + 100)) export PGPORT=$(($WEBPORT + 100))
watch_file "$PGDATA/postgresql.conf" watch_file "$PGDATA/postgresql.conf"
watch_file ./dev.sh watch_file ./dev.sh
watch_file ./pyproject.toml watch_file ./pyproject.toml

View File

@ -18,6 +18,45 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"poetry2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1688870561,
"narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "165b1650b753316aa7f1787f3005a8d2da0f5301",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1690031011, "lastModified": 1690031011,
@ -34,10 +73,33 @@
"type": "github" "type": "github"
} }
}, },
"poetry2nix": {
"inputs": {
"flake-utils": "flake-utils_2",
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1693051011,
"narHash": "sha256-HNbuVCS/Fnl1YZOjBk9/MlIem+wM8fvIzTH0CVQrLSQ=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "5b3a5151cf212021ff8d424f215fb030e4ff2837",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs",
"poetry2nix": "poetry2nix"
} }
}, },
"systems": { "systems": {
@ -54,6 +116,21 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@ -3,29 +3,50 @@
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
poetry2nix = {
url = "github:nix-community/poetry2nix";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, flake-utils }: (flake-utils.lib.eachDefaultSystem (system: outputs = { self, nixpkgs, flake-utils, poetry2nix }:
let {
pkgs = import nixpkgs { overlays.default = nixpkgs.lib.composeManyExtensions [
inherit system; poetry2nix.overlay
}; (final: prev: rec {
in htmxDevEnv = prev.poetry2nix.mkPoetryEnv
rec { {
devShells.default = pkgs.mkShell { projectDir = ./.;
buildInputs = [ groups = [ "main" "dev" ];
pkgs.poetry };
pkgs.python311 htmxPackage = prev.poetry2nix.mkPoetryApplication {
pkgs.python311Packages.pip projectDir = ./.;
pkgs.overmind groups = [ "main" ];
pkgs.postgresql_15 };
(pkgs.writeScriptBin "dev" "${builtins.readFile ./dev.sh}") htmxEnv = htmxPackage.dependencyEnv;
]; })
PYTHON_KEYRING_BACKEND = "keyring.backends.fail.Keyring"; ];
LD_LIBRARY_PATH = "${pkgs.stdenv.cc.cc.lib}/lib"; } // (flake-utils.lib.eachDefaultSystem (system:
shellHook = '' let
export DJANGO_SETTINGS_MODULE=htmx_examples.settings pkgs = import nixpkgs {
''; inherit system;
}; overlays = [ self.overlays.default ];
})); };
in
rec {
devShells.default = pkgs.mkShell {
buildInputs = [
pkgs.htmxDevEnv
pkgs.poetry
pkgs.python311
pkgs.python311Packages.pip
pkgs.overmind
pkgs.postgresql_15
(pkgs.writeScriptBin "dev" "${builtins.readFile ./dev.sh}")
];
shellHook = ''
export DJANGO_SETTINGS_MODULE=htmx_examples.settings
'';
};
}));
} }

View File

@ -40,7 +40,7 @@ disallow_any_generics = true
[tool.django-stubs] [tool.django-stubs]
django_settings_module = "htmx_examples" django_settings_module = "htmx_examples"
[tool.poetry.dependencies] [tool.poetry.group.main.dependencies]
python = "^3.10" python = "^3.10"
django = "^4.2.3" django = "^4.2.3"
django-htmx = "^1.16.0" django-htmx = "^1.16.0"