From e70a02b01eaa53cf851e8689e79b564715558953 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 | 16 ++++++---------- .gitignore | 1 + .pre-commit-config.yaml | 24 ++++++++++++++++++++++++ shell.nix | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 shell.nix diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6cbb7ea..024991e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,16 +13,12 @@ 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 + run: nix-shell --pure --run 'pre-commit run --all-files' - name: Test - run: | - poetry run pytest + run: 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..eb7c21b --- /dev/null +++ b/shell.nix @@ -0,0 +1,33 @@ +let + pkgs = import (builtins.fetchTarball { + name = "nixos-unstable-2024-10-11"; + url = "https://github.com/nixos/nixpkgs/archive/5633bcff0c6162b9e4b5f1264264611e950c8ec7.tar.gz"; + sha256 = "0p3ry8x72cl572fs1c47h9y3s045p4aq71wpblzdi4dfqx3z2i7m"; + }) { }; + poetry2nix = import (builtins.fetchTarball { + url = "https://github.com/nix-community/poetry2nix/archive/2024.10.1046757.tar.gz"; + sha256 = "10a23a7nja7s4r146dxy7s0a7siww4pampxa8hq81bflkhrjlh86"; + }) { 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 + ''; +}