diff options
| author | liv <mokou@fastmail.com> | 2022-11-12 16:44:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-12 16:44:10 +0100 |
| commit | d3f81b6e4018952586c42e71d779d493a2d28862 (patch) | |
| tree | 86da442012facc2b836c88a33ce31219a1d51f2f /flake.nix | |
| parent | 2e1630c712892f83cb1cc3adfb034f9e358e7a5e (diff) | |
| parent | 8e0f5bf1256e1485ea9f1d2ed81ad1059c21f2e0 (diff) | |
Merge pull request #922 from MoritzBoehme/feat/add-nix-flake
feat: Add flake.nix for nix users
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..15c82b7 --- /dev/null +++ b/flake.nix @@ -0,0 +1,53 @@ +{ + description = "Small exercises to get you used to reading and writing Rust code"; + + inputs = { + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + }; + + outputs = { self, flake-utils, nixpkgs, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + rustlings = + pkgs.rustPlatform.buildRustPackage { + name = "rustlings"; + version = "5.2.1"; + + src = with pkgs.lib; cleanSourceWith { + src = self; + # a function that returns a bool determining if the path should be included in the cleaned source + filter = path: type: + let + # filename + baseName = builtins.baseNameOf (toString path); + # path from root directory + path' = builtins.replaceStrings [ "${self}/" ] [ "" ] path; + # checks if path is in the directory + inDirectory = directory: hasPrefix directory path'; + in + inDirectory "src" || + inDirectory "tests" || + hasPrefix "Cargo" baseName || + baseName == "info.toml"; + }; + + cargoLock.lockFile = ./Cargo.lock; + }; + in + { + devShell = pkgs.mkShell { + buildInputs = with pkgs; [ + cargo + rustc + rust-analyzer + rustlings + ]; + }; + }); +} |
