From b94555e70354dc915c890df6aa6231231bc8d288 Mon Sep 17 00:00:00 2001 From: Malte Tammena Date: Thu, 25 Apr 2024 12:23:30 +0200 Subject: [PATCH] add python lsp --- .helix/languages.toml | 9 ++ flake.nix | 273 +++++++++++++++++++++--------------------- 2 files changed, 145 insertions(+), 137 deletions(-) create mode 100644 .helix/languages.toml diff --git a/.helix/languages.toml b/.helix/languages.toml new file mode 100644 index 0000000..e9f0896 --- /dev/null +++ b/.helix/languages.toml @@ -0,0 +1,9 @@ +[[language]] +name = "python" +language-servers = [ "pyright", "ruff" ] + +[language-server.ruff] +command = "ruff-lsp" + +[language-server.ruff.config.settings] +args = ["--ignore", "E501"] diff --git a/flake.nix b/flake.nix index 5f44a0c..89fce12 100644 --- a/flake.nix +++ b/flake.nix @@ -30,18 +30,17 @@ }; }; - outputs = - inputs @ { self - , nixpkgs - , flake-parts - , crane - , fenix - , flake-utils - , advisory-db - , rust-overlay - , - }: - flake-parts.lib.mkFlake { inherit inputs self; } { + outputs = inputs @ { + self, + nixpkgs, + flake-parts, + crane, + fenix, + flake-utils, + advisory-db, + rust-overlay, + }: + flake-parts.lib.mkFlake {inherit inputs self;} { imports = [ ]; @@ -53,160 +52,160 @@ flake.hydraJobs.devShells.x86_64-linux = self.devShells.x86_64-linux; flake.hydraJobs.checks.x86_64-linux = self.checks.x86_64-linux; - perSystem = - { self' - , pkgs - , lib - , config - , system - , ... - }: - let - # Load toolchain from file and extend with rust-src and rust-analyzer + clippy - rustToolchain = (pkgs.rust-bin.fromRustupToolchainFile (self + /rust-toolchain.toml)).override { - extensions = [ - "rust-src" - "rust-analyzer" - "clippy" + perSystem = { + self', + pkgs, + lib, + config, + system, + ... + }: let + # Load toolchain from file and extend with rust-src and rust-analyzer + clippy + rustToolchain = (pkgs.rust-bin.fromRustupToolchainFile (self + /rust-toolchain.toml)).override { + extensions = [ + "rust-src" + "rust-analyzer" + "clippy" + ]; + }; + + # NB: we don't need to overlay our custom toolchain for the *entire* + # pkgs (which would require rebuidling anything else which uses rust). + # Instead, we just want to update the scope that crane will use by appending + # our specific toolchain there. + craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain; + + src = craneLib.cleanCargoSource (craneLib.path ./.); + + # Common arguments can be set here to avoid repeating them later + commonArgs = { + inherit src; + strictDeps = true; + + buildInputs = + [ + # Add additional build inputs here + ] + ++ lib.optionals pkgs.stdenv.isDarwin [ + # Additional darwin specific inputs can be set here + pkgs.libiconv ]; - }; - # NB: we don't need to overlay our custom toolchain for the *entire* - # pkgs (which would require rebuidling anything else which uses rust). - # Instead, we just want to update the scope that crane will use by appending - # our specific toolchain there. - craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain; + # Additional environment variables can be set directly + # MY_CUSTOM_VAR = "some value"; + }; - src = craneLib.cleanCargoSource (craneLib.path ./.); + craneLibLLvmTools = + craneLib.overrideToolchain + (fenix.packages.${system}.complete.withComponents [ + "cargo" + "llvm-tools" + "rustc" + ]); - # Common arguments can be set here to avoid repeating them later - commonArgs = { - inherit src; - strictDeps = true; + # Build *just* the cargo dependencies, so we can reuse + # all of that work (e.g. via cachix) when running in CI + cargoArtifacts = craneLib.buildDepsOnly commonArgs; - buildInputs = - [ - # Add additional build inputs here - ] - ++ lib.optionals pkgs.stdenv.isDarwin [ - # Additional darwin specific inputs can be set here - pkgs.libiconv - ]; - - # Additional environment variables can be set directly - # MY_CUSTOM_VAR = "some value"; - }; - - craneLibLLvmTools = - craneLib.overrideToolchain - (fenix.packages.${system}.complete.withComponents [ - "cargo" - "llvm-tools" - "rustc" - ]); - - # Build *just* the cargo dependencies, so we can reuse - # all of that work (e.g. via cachix) when running in CI - cargoArtifacts = craneLib.buildDepsOnly commonArgs; - - # Build the actual crate itself, reusing the dependency - # artifacts from above. - aba2sat = craneLib.buildPackage (commonArgs - // { + # Build the actual crate itself, reusing the dependency + # artifacts from above. + aba2sat = craneLib.buildPackage (commonArgs + // { inherit cargoArtifacts; }); - in - { - _module.args.pkgs = import nixpkgs { - inherit system; - overlays = [ - (import rust-overlay) - ]; - }; + in { + _module.args.pkgs = import nixpkgs { + inherit system; + overlays = [ + (import rust-overlay) + ]; + }; - checks = { - # Build the crate as part of `nix flake check` for convenience - inherit aba2sat; + checks = { + # Build the crate as part of `nix flake check` for convenience + inherit aba2sat; - # Run clippy (and deny all warnings) on the crate source, - # again, reusing the dependency artifacts from above. - # - # Note that this is done as a separate derivation so that - # we can block the CI if there are issues here, but not - # prevent downstream consumers from building our crate by itself. - aba2sat-clippy = craneLib.cargoClippy (commonArgs - // { + # Run clippy (and deny all warnings) on the crate source, + # again, reusing the dependency artifacts from above. + # + # Note that this is done as a separate derivation so that + # we can block the CI if there are issues here, but not + # prevent downstream consumers from building our crate by itself. + aba2sat-clippy = craneLib.cargoClippy (commonArgs + // { inherit cargoArtifacts; cargoClippyExtraArgs = "--all-targets -- --deny warnings"; }); - aba2sat-doc = craneLib.cargoDoc (commonArgs - // { + aba2sat-doc = craneLib.cargoDoc (commonArgs + // { inherit cargoArtifacts; }); - # Check formatting - aba2sat-fmt = craneLib.cargoFmt { - inherit src; - }; + # Check formatting + aba2sat-fmt = craneLib.cargoFmt { + inherit src; + }; - # Audit dependencies - aba2sat-audit = craneLib.cargoAudit { - inherit src advisory-db; - }; + # Audit dependencies + aba2sat-audit = craneLib.cargoAudit { + inherit src advisory-db; + }; - # Audit licenses - aba2sat-deny = crane.lib.${system}.cargoDeny { - inherit src; - }; + # Audit licenses + aba2sat-deny = crane.lib.${system}.cargoDeny { + inherit src; + }; - # Run tests with cargo-nextest - # Consider setting `doCheck = false` on `aba2sat` if you do not want - # the tests to run twice - aba2sat-nextest = craneLib.cargoNextest (commonArgs - // { + # Run tests with cargo-nextest + # Consider setting `doCheck = false` on `aba2sat` if you do not want + # the tests to run twice + aba2sat-nextest = craneLib.cargoNextest (commonArgs + // { inherit cargoArtifacts; partitions = 1; partitionType = "count"; }); - }; + }; - packages = - { - default = aba2sat; - aspforaba = pkgs.callPackage ./nix/packages/aspforaba.nix { inherit (self'.packages) clingo; }; - clingo = pkgs.callPackage ./nix/packages/clingo.nix { }; - } - // lib.optionalAttrs (!pkgs.stdenv.isDarwin) { - aba2sat-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs + packages = + { + default = aba2sat; + aspforaba = pkgs.callPackage ./nix/packages/aspforaba.nix {inherit (self'.packages) clingo;}; + clingo = pkgs.callPackage ./nix/packages/clingo.nix {}; + } + // lib.optionalAttrs (!pkgs.stdenv.isDarwin) { + aba2sat-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // { inherit cargoArtifacts; }); - }; - - apps.default = flake-utils.lib.mkApp { - drv = aba2sat; }; - devShells.default = craneLib.devShell { - # Inherit inputs from checks. - checks = self.checks.${system}; - - RUST_LOG = "trace"; - - inputsFrom = [ ]; - - packages = [ - pkgs.hyperfine - pkgs.lldb - pkgs.nil - pkgs.nodejs - pkgs.pre-commit - pkgs.shellcheck - pkgs.shfmt - self'.packages.aspforaba - ]; - }; + apps.default = flake-utils.lib.mkApp { + drv = aba2sat; }; + + devShells.default = craneLib.devShell { + # Inherit inputs from checks. + checks = self.checks.${system}; + + RUST_LOG = "trace"; + + inputsFrom = []; + + packages = [ + pkgs.hyperfine + pkgs.lldb + pkgs.nil + pkgs.nodejs + pkgs.pre-commit + pkgs.pyright + pkgs.ruff-lsp + pkgs.shellcheck + pkgs.shfmt + self'.packages.aspforaba + ]; + }; + }; }; }