Enhanced the configuration files to support multi-user management by introducing user options for multiple applications, including art, gaming, multimedia, and development tools. Updated existing modules to utilize these new user options, improving flexibility and maintainability in user package installations.
67 lines
1.8 KiB
Nix
67 lines
1.8 KiB
Nix
{
|
|
config,
|
|
inputs,
|
|
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";
|
|
users = lib.mkOption {
|
|
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
|
default = config.my.toggleUsers.dev;
|
|
description = "Users to install Python packages for";
|
|
};
|
|
};
|
|
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 = inputs.self.lib.mkUserAttrs lib config.my.dev.python.users { inherit packages; };
|
|
})
|
|
{
|
|
home-manager.users = inputs.self.lib.mkHomeManagerUsers lib config.my.dev.python.users (_user: {
|
|
xdg.configFile."python/pythonrc".source = ../../dotfiles/pythonrc;
|
|
});
|
|
environment.variables.PYTHONSTARTUP = "\${XDG_CONFIG_HOME}/python/pythonrc";
|
|
}
|
|
];
|
|
}
|