diff options
Diffstat (limited to 'pkgs/dev')
-rw-r--r-- | pkgs/dev/default.nix | 29 | ||||
-rwxr-xr-x | pkgs/dev/dev.sh | 15 |
2 files changed, 44 insertions, 0 deletions
diff --git a/pkgs/dev/default.nix b/pkgs/dev/default.nix new file mode 100644 index 0000000..9238f4d --- /dev/null +++ b/pkgs/dev/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenvNoCC +, makeShellWrapper, bash, nix +, devShells +}: + +with lib; + +let + + shells = concatStringsSep ":" (mapAttrsToList (n: v: "${n}=${v}") devShells); + +in stdenvNoCC.mkDerivation rec { + name = "personal-devshells"; + src = ./.; + + nativeBuildInputs = [ makeShellWrapper ]; + installPhase = '' + makeShellWrapper ${./dev.sh} $out/bin/dev \ + --prefix PATH : ${lib.makeBinPath [ bash nix ]} \ + --set DEV_SHELLS "${shells}" \ + --set DEV_FLAKE "${../..}" + ''; + + meta = with lib; { + description = "Console version of Stardict program"; + homepage = "https://dushistov.github.io/sdcv/"; + license = licenses.gpl2; + }; +} diff --git a/pkgs/dev/dev.sh b/pkgs/dev/dev.sh new file mode 100755 index 0000000..f88224a --- /dev/null +++ b/pkgs/dev/dev.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -eu + +target="$1" +shift + +known_shells="$(tr ':' '\n' <<<"${DEV_SHELLS:-}")" +while IFS='=' read name val; do + if [ "$target" == "$name" ]; then + target="$DEV_FLAKE#$name" + break + fi +done <<<"$known_shells" + +exec nix develop "$target" -c zsh "$@" |