aboutsummaryrefslogtreecommitdiffstats
path: root/modules/programs/devenv
diff options
context:
space:
mode:
Diffstat (limited to 'modules/programs/devenv')
-rw-r--r--modules/programs/devenv/alias.sh28
-rw-r--r--modules/programs/devenv/default.nix26
2 files changed, 54 insertions, 0 deletions
diff --git a/modules/programs/devenv/alias.sh b/modules/programs/devenv/alias.sh
new file mode 100644
index 0000000..e63dbd8
--- /dev/null
+++ b/modules/programs/devenv/alias.sh
@@ -0,0 +1,28 @@
+devenv() {
+ local has_reload=false
+ local is_shell=false
+
+ for arg in "$@"; do
+ if [[ "$arg" == "--reload" || "$arg" == "--no-reload" ]]; then
+ has_reload=true
+ fi
+ if [[ "$arg" == "shell" ]]; then
+ is_shell=true
+ fi
+ done
+
+ if [[ "$is_shell" == true ]]; then
+ if [[ "$has_reload" == true ]]; then
+ command devenv "$@" "$SHELL"
+ else
+ command devenv "$@" --no-reload "$SHELL"
+ fi
+ return
+ fi
+
+ if [[ "$has_reload" == true ]]; then
+ command devenv "$@"
+ else
+ command devenv "$@" --no-reload
+ fi
+}
diff --git a/modules/programs/devenv/default.nix b/modules/programs/devenv/default.nix
new file mode 100644
index 0000000..633fd0d
--- /dev/null
+++ b/modules/programs/devenv/default.nix
@@ -0,0 +1,26 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
+
+# Devenv - Developer environment tooling (Nix-based dev environments)
+{
+ options.programs.devenv = {
+ enable = lib.mkEnableOption "Enables devenv.";
+ };
+
+ config =
+ let
+ shellIntegration = builtins.readFile ./alias.sh;
+ in
+ lib.mkIf config.programs.devenv.enable {
+ home.packages = with pkgs; [
+ devenv
+ ];
+
+ programs.zsh.initContent = lib.mkIf config.programs.zsh.enable (lib.mkAfter shellIntegration);
+ programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter shellIntegration);
+ };
+}