Split shell.nix files per language
This allows to only download and build environment for the actual language one is playing with. Also do not use downloaded binary but provide a derivation for exercism binary.
This commit is contained in:
parent
8cd12c1122
commit
184bf48147
7 changed files with 83 additions and 28 deletions
11
c/shell.nix
Normal file
11
c/shell.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { }
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.mkShellNoCC {
|
||||||
|
name = "exercism";
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.coreutils
|
||||||
|
(pkgs.callPackage ../exercism.nix { })
|
||||||
|
];
|
||||||
|
}
|
25
exercism.nix
Normal file
25
exercism.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
buildGoModule
|
||||||
|
, fetchFromGitHub
|
||||||
|
, lib
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "exercism";
|
||||||
|
version = "3.3.0";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "exercism";
|
||||||
|
repo = "cli";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "Mtb5c1/k8kp7bETOSE0X969BV176jpoprr1/mQ3E4Vg=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-fnsSvbuVGRAndU88su2Ck7mV8QBDhxozdmwI3XGtxcA=";
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://github.com/exercism/cli";
|
||||||
|
description = "Command line interface for exercism website";
|
||||||
|
license = licenses.mit;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
11
go/shell.nix
Normal file
11
go/shell.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { }
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.mkShellNoCC {
|
||||||
|
name = "exercism";
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.go
|
||||||
|
(pkgs.callPackage ../exercism.nix { })
|
||||||
|
];
|
||||||
|
}
|
11
lua/shell.nix
Normal file
11
lua/shell.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { }
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.mkShellNoCC {
|
||||||
|
name = "exercism";
|
||||||
|
buildInputs = [
|
||||||
|
(pkgs.lua.withPackages(ps: with ps; [ busted]))
|
||||||
|
(pkgs.callPackage ../exercism.nix { })
|
||||||
|
];
|
||||||
|
}
|
11
python/shell.nix
Normal file
11
python/shell.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { }
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.mkShellNoCC {
|
||||||
|
name = "exercism";
|
||||||
|
buildInputs = [
|
||||||
|
(pkgs.python311.withPackages(ps: with ps; [ pytest ]))
|
||||||
|
(pkgs.callPackage ../exercism.nix { })
|
||||||
|
];
|
||||||
|
}
|
14
rust/shell.nix
Normal file
14
rust/shell.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { }
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.mkShellNoCC {
|
||||||
|
name = "exercism";
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.gcc
|
||||||
|
pkgs.rustc
|
||||||
|
pkgs.cargo
|
||||||
|
|
||||||
|
(pkgs.callPackage ../exercism.nix { })
|
||||||
|
];
|
||||||
|
}
|
28
shell.nix
28
shell.nix
|
@ -1,28 +0,0 @@
|
||||||
{
|
|
||||||
pkgs ? import <nixpkgs> { }
|
|
||||||
}:
|
|
||||||
|
|
||||||
pkgs.mkShellNoCC {
|
|
||||||
name = "exercism";
|
|
||||||
buildInputs = [
|
|
||||||
# coreutils provides "make" for c compiling
|
|
||||||
pkgs.coreutils
|
|
||||||
|
|
||||||
(pkgs.lua.withPackages(ps: with ps; [ busted]))
|
|
||||||
|
|
||||||
(pkgs.python311.withPackages(ps: with ps; [ pytest ]))
|
|
||||||
|
|
||||||
pkgs.go
|
|
||||||
|
|
||||||
# Rust (needs gcc compiler)
|
|
||||||
pkgs.gcc
|
|
||||||
pkgs.rustc
|
|
||||||
pkgs.cargo
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
shellHook = ''
|
|
||||||
# Expose exercism binary to PATH, see: https://exercism.org/cli-walkthrough
|
|
||||||
export PATH="$(pwd):$PATH"
|
|
||||||
'';
|
|
||||||
}
|
|
Loading…
Reference in a new issue