From af32e7a267a1e3ec30a58dedf87ef3b92e9ec4db Mon Sep 17 00:00:00 2001 From: Daniel Winkler Date: Mon, 1 Sep 2025 12:19:25 +1000 Subject: [PATCH] devenv options --- templates/rde/.envrc | 2 ++ templates/rde/.gitignore | 10 ++++++++ templates/rde/flake.lock | 12 +++++----- templates/rde/flake.nix | 50 ++++++++++++++++++++++++++++++++++++++-- 4 files changed, 66 insertions(+), 8 deletions(-) diff --git a/templates/rde/.envrc b/templates/rde/.envrc index 3550a30..e66fd99 100644 --- a/templates/rde/.envrc +++ b/templates/rde/.envrc @@ -1 +1,3 @@ +export DIRENV_WARN_TIMEOUT=20s + use flake diff --git a/templates/rde/.gitignore b/templates/rde/.gitignore index 4d058db..257b14e 100644 --- a/templates/rde/.gitignore +++ b/templates/rde/.gitignore @@ -7,3 +7,13 @@ devenv.local.nix # pre-commit .pre-commit-config.yaml + +# Devenv +.devenv* +devenv.local.nix + +# direnv +.direnv + +# pre-commit +.pre-commit-config.yaml diff --git a/templates/rde/flake.lock b/templates/rde/flake.lock index 574efc3..b2a828e 100644 --- a/templates/rde/flake.lock +++ b/templates/rde/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1756653911, - "narHash": "sha256-3mtwO3Dh3zD/1ubNQHgJuhoLAbxq0BMCS02hMqmJKrk=", + "lastModified": 1756689834, + "narHash": "sha256-U0+MEMsvR4DNv7zKi/3kPt4NvSvYcUCMwfMTblqNIec=", "owner": "dwinkler1", "repo": "nixCatsConfig", - "rev": "f83b5dd42bcfbcca40a6f905d7abd9eaaca09e3a", + "rev": "fb459451e290fa0a31d7fb096209993a8b18b765", "type": "github" }, "original": { @@ -50,11 +50,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756536218, - "narHash": "sha256-ynQxPVN2FIPheUgTFhv01gYLbaiSOS7NgWJPm9LF9D0=", + "lastModified": 1756636162, + "narHash": "sha256-mBecwgUTWRgClJYqcF+y4O1bY8PQHqeDpB+zsAn+/zA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a918bb3594dd243c2f8534b3be01b3cb4ed35fd1", + "rev": "37ff64b7108517f8b6ba5705ee5085eac636a249", "type": "github" }, "original": { diff --git a/templates/rde/flake.nix b/templates/rde/flake.nix index 69c5f94..45669ac 100644 --- a/templates/rde/flake.nix +++ b/templates/rde/flake.nix @@ -26,6 +26,8 @@ ### Always enable when R is enabled ### You can use your own R installation and just enable the plugin gitPlugins = enabledLanguages.r; + ## Create additional dev shells in the project + devenv = false; }; theme = rec { ## set colortheme and background here @@ -217,6 +219,16 @@ # OS .DS_Store Thumbs.db + + # Devenv + .devenv* + devenv.local.nix + + # direnv + .direnv + + # pre-commit + .pre-commit-config.yaml EOF fi @@ -244,12 +256,31 @@ echo "✅ Julia dependencies updated" fi + if [[ -f "devenv.nix" ]]; then + devenv update + echo "✅ Devenv dependencies updated" + fi + echo "🎉 All dependencies updated!" ''; + + activateDevenv = '' + #!/usr/bin/env bash + set -euo pipefail + if [[ -f "devenv.nix" ]]; then + echo "🚀 Activating devenv environment..." + exec ${config.defaultPackageName}-devenv shell + else + echo "❌ No devenv.nix file found in the current directory." + echo "To create one, run '${config.defaultPackageName}-initDevenv'" + exit 1 + fi + ''; in { initPython = prev.writeShellScriptBin "initPython" initPython; initProject = prev.writeShellScriptBin "initProject" initProjectScript; updateDeps = prev.writeShellScriptBin "updateDeps" updateDepsScript; + activateDevenv = prev.writeShellScriptBin "activateDevenv" activateDevenv; }; forSystems = nixpkgs.lib.genAttrs nixpkgs.lib.platforms.all; projectConfig = forSystems ( @@ -509,12 +540,24 @@ }; }; initDevenv = { - enable = true; + enable = config.enabledPackages.devenv; path = { value = "${pkgs.devenv}/bin/devenv"; args = ["--add-flags" "init"]; }; }; + activateDevenv = { + enable = config.enabledPackages.devenv; + path = { + value = "${pkgs.activateDevenv}/bin/activateDevenv"; + }; + }; + devenv = { + enable = config.enabledPackages.devenv; + path = { + value = "${pkgs.devenv}/bin/devenv"; + }; + }; updateDeps = { enable = true; path = { @@ -556,6 +599,8 @@ (pkgs.lib.optionalString config.enabledLanguages.python " - ${config.defaultPackageName}-marimo: Launch Marimo notebook") (pkgs.lib.optionalString config.enabledLanguages.python " - ${config.defaultPackageName}-py: Launch IPython REPL") (pkgs.lib.optionalString config.enabledLanguages.python " - ${config.defaultPackageName}-initPython: Init python project") + (pkgs.lib.optionalString config.enabledPackages.devenv " - ${config.defaultPackageName}-initDevenv: Init devenv project") + (pkgs.lib.optionalString config.enabledPackages.devenv " - ${config.defaultPackageName}-devenv: Run devenv") " " "To adjust options run: ${config.defaultPackageName} flake.nix" ]); @@ -563,7 +608,6 @@ pkgs.mkShell { name = config.defaultPackageName; packages = [projectConfig.${system}.default]; - nativeBuildInputs = with pkgs; [devenv]; inputsFrom = []; shellHook = '' echo "" @@ -579,6 +623,8 @@ echo "${shellCmds}" echo "==========================================================================" echo "" + ${pkgs.lib.optionalString config.enabledPackages.devenv "${config.defaultPackageName}-activateDevenv"} + echo "" ''; }; });