57 lines
1.4 KiB
Nix
57 lines
1.4 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
python = pkgs.python3.withPackages (
|
|
ps:
|
|
builtins.attrValues {
|
|
inherit (ps)
|
|
black # Python code formatter
|
|
editorconfig # follow rules of contributin
|
|
flake8 # wraper for pyflakes, pycodestyle and mccabe
|
|
isort # sort Python imports
|
|
pyflakes # checks source code for errors
|
|
pylint # bug and style checker for python
|
|
pytest # tests
|
|
speedtest-cli # check internet speed from the comand line
|
|
;
|
|
}
|
|
);
|
|
packages = builtins.attrValues {
|
|
inherit python;
|
|
inherit (pkgs)
|
|
pipenv # python development workflow for humans
|
|
pyright # LSP
|
|
;
|
|
};
|
|
in
|
|
{
|
|
options = {
|
|
my.dev.python.enable = lib.mkEnableOption "Install Python tools globally";
|
|
devShells.python = lib.mkOption {
|
|
type = lib.types.package;
|
|
default = pkgs.mkShell {
|
|
inherit packages;
|
|
name = "python-dev-shell";
|
|
shellHook = ''
|
|
echo "🐍 Python dev environment"
|
|
which python
|
|
'';
|
|
description = "Python development shell";
|
|
};
|
|
};
|
|
};
|
|
config = lib.mkMerge [
|
|
(lib.mkIf config.my.dev.python.enable {
|
|
users.users.jawz = { inherit packages; };
|
|
})
|
|
{
|
|
home-manager.users.jawz.xdg.configFile."python/pythonrc".source = ../../dotfiles/pythonrc;
|
|
environment.variables.PYTHONSTARTUP = "\${XDG_CONFIG_HOME}/python/pythonrc";
|
|
}
|
|
];
|
|
}
|