devenv options

This commit is contained in:
Daniel Winkler 2025-09-01 12:19:25 +10:00
commit af32e7a267
4 changed files with 66 additions and 8 deletions

View file

@ -1 +1,3 @@
export DIRENV_WARN_TIMEOUT=20s
use flake

View file

@ -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

View file

@ -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": {

View file

@ -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 ""
'';
};
});