From ec1d3aef1df65ee001ace35d830c306982f565a2 Mon Sep 17 00:00:00 2001 From: Victor Engmark Date: Thu, 21 Mar 2024 13:16:34 +1300 Subject: [PATCH] feat: Add Nix support --- .github/workflows/ci.yml | 14 ++++++-------- .gitignore | 1 + .pre-commit-config.yaml | 24 ++++++++++++++++++++++++ shell.nix | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 shell.nix diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6cbb7ea..d40163b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,16 +13,14 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 0 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: cachix/install-nix-action@8887e596b4ee1134dae06b98d573bd674693f47c # v26 + - uses: cachix/cachix-action@18cf96c7c98e048e10a83abd92116114cd8504be # v14 with: - python-version: "3.12.3" - - name: Install - run: | - pip install poetry - poetry install --no-root + name: linz + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Lint & format run: | - poetry run pre-commit run --all-files + nix-shell --pure --run 'pre-commit run --all-files' - name: Test run: | - poetry run pytest + nix-shell --pure --run pytest diff --git a/.gitignore b/.gitignore index de40c11..471b7dd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ *.pyc __pycache__ /.pytest_cache/ +/python Thumbs.db /.vscode/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 965adaf..1dbaed9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,6 +11,14 @@ repos: stages: [commit] types: [python] + - id: deadnix + name: deadnix + entry: deadnix + args: [--edit, --fail] + files: \.nix$ + language: system + stages: [commit] + - id: isort name: isort entry: isort @@ -18,6 +26,13 @@ repos: stages: [commit] types: [python] + - id: nixfmt + name: nixfmt + entry: nixfmt + files: \.nix$ + language: system + stages: [commit] + - id: pylint name: pylint entry: pylint @@ -25,3 +40,12 @@ repos: stages: [commit] types: [python] require_serial: true + + - id: statix + name: statix + entry: statix + args: [check] + files: \.nix$ + pass_filenames: false + language: system + stages: [commit] diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..e39de30 --- /dev/null +++ b/shell.nix @@ -0,0 +1,33 @@ +let + pkgs = import (builtins.fetchTarball { + name = "nixos-unstable-2024-09-17"; + url = "https://github.com/nixos/nixpkgs/archive/345c263f2f53a3710abe117f28a5cb86d0ba4059.tar.gz"; + sha256 = "1llzyzw7a0jqdn7p3px0sqa35jg24v5pklwxdybwbmbyr2q8cf5j"; + }) { overlays = [ (_final: prev: { geos = prev.geos_3_11; }) ]; }; + poetry2nix = import (builtins.fetchTarball { + url = "https://github.com/nix-community/poetry2nix/archive/2024.9.1542864.tar.gz"; + sha256 = "06vz5hwylvjvx4ywbv4y3kadq8zxmvpf5h7pjy6w1yhkwpjd6k25"; + }) { inherit pkgs; }; + poetryPackages = poetry2nix.mkPoetryPackages { + projectDir = builtins.path { + path = ./.; + name = "python-linz-logger"; + }; + }; +in +pkgs.mkShell { + packages = [ + pkgs.bashInteractive + pkgs.poetry + pkgs.deadnix + pkgs.gitFull + pkgs.nixfmt-rfc-style + pkgs.statix + poetryPackages.poetryPackages + poetryPackages.python.pkgs.pip # For IDEA package resolution + poetryPackages.python.pkgs.setuptools # For IDEA package resolution + ]; + shellHook = '' + ln --force --no-target-directory --symbolic "${poetryPackages.python}/bin/python" python + ''; +}