aboutsummaryrefslogtreecommitdiff
path: root/pkgs/dev
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/dev')
-rw-r--r--pkgs/dev/default.nix29
-rwxr-xr-xpkgs/dev/dev.sh15
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 "$@"