Add python packages

This commit is contained in:
ItsDrike 2024-06-26 23:46:50 +02:00
parent 507f364e5b
commit 7c3098c74f
Signed by: ItsDrike
GPG key ID: FA2745890B7048C0
10 changed files with 272 additions and 0 deletions

View file

@ -0,0 +1,5 @@
{
imports = [
./python
];
}

View file

@ -0,0 +1,10 @@
{
imports = [
./python.nix
./ipython.nix
./poetry.nix
./rye.nix
./pyright.nix
./ruff.nix
];
}

View file

@ -0,0 +1,14 @@
{
lib,
pkgs,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = osConfig.myOptions.home-manager.programs.coding.python;
in {
config = mkIf cfg.enable {
home.packages = with pkgs; [ python312Packages.ipython ];
};
}

View file

@ -0,0 +1,22 @@
{
lib,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = osConfig.myOptions.home-manager.programs.coding.python;
in {
config = mkIf cfg.enable {
programs.poetry = {
enable = true;
settings = {
virtualenvs = {
in-project = true;
prefer-active-python = true;
};
};
};
};
}

View file

@ -0,0 +1,14 @@
{
lib,
pkgs,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = osConfig.myOptions.home-manager.programs.coding.python;
in {
config = mkIf cfg.enable {
home.packages = with pkgs; [ pyright ];
};
}

View file

@ -0,0 +1,22 @@
{
lib,
pkgs,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = osConfig.myOptions.home-manager.programs.coding.python;
in {
config = mkIf cfg.enable {
home.packages = with pkgs; [
python38
python39
python310
python311
python312
python313
];
};
}

View file

@ -0,0 +1,164 @@
{
lib,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = osConfig.myOptions.home-manager.programs.coding.python;
in {
config = mkIf cfg.enable {
programs.ruff = {
enable = true;
settings = {
line-length = 119;
lint = {
select = [
"F" # Pyflakes
"E" # Pycodestyle (errors)
"W" # Pycodestyle (warnigns)
"N" # pep8-naming
"D" # pydocstyle
"UP" # pyupgrade
"YTT" # flake8-2020
"ANN" # flake8-annotations
"ASYNC" # flake8-async
"S" # flake8-bandit
"BLE" # flake8-blind-except
"B" # flake8-bugbear
"A" # flake8-builtins
"COM" # flake8-commas
"C4" # flake8-comprehensions
"DTZ" # flake8-datetimez
"T10" # flake8-debugger
"EM" # flake8-errmsg
"EXE" # flake8-executable
"FA" # flake8-future-annotations
"ISC" # flake8-implicit-str-concat
"ICN" # flake8-import-conventions
"LOG" # flake8-logging
"G" # flake8-logging-format
"INP" # flake8-no-pep420
"PIE" # flake8-pie
"T20" # flake8-print
"PYI" # flake8-pyi
"PT" # flake8-pytest-style
"Q" # flake8-quotes
"RSE" # flake8-raise
"RET" # flake8-return
"SLOT" # flake8-slots
"SIM" # flake8-simplify
"TID" # flake8-tidy-imports
"TCH" # flake8-type-checking
"INT" # flake8-gettext
"PTH" # flake8-use-pathlib
"TD" # flake8-todos
"ERA" # flake8-eradicate
"PGH" # pygrep-hooks
"PL" # pylint
"TRY" # tryceratops
"FLY" # flynt
"PERF" # perflint
"RUF" # ruff-specific rules
];
ignore = [
"D100" # Missing docstring in public module
"D104" # Missing docstring in public package
"D105" # Missing docstring in magic method
"D107" # Missing docstring in __init__
"D203" # Blank line required before class docstring
"D213" # Multi-line summary should start at second line (incompatible with D212)
"D301" # Use r""" if any backslashes in a docstring
"D405" # Section name should be properly capitalized
"D406" # Section name should end with a newline
"D407" # Missing dashed underline after section
"D408" # Section underline should be in the line following the section's name
"D409" # Section underline should match the length of its name
"D410" # Missing blank line after section
"D411" # Missing blank line before section
"D412" # No blank lines allowed between a section header and its content
"D413" # Missing blank line after last section
"D414" # Section has no content
"D416" # Section name should end with a colon
"D417" # Missing argument descrition in the docstring
"ANN002" # Missing type annotation for *args
"ANN003" # Missing type annotation for **kwargs
"ANN101" # Missing type annotation for self in method
"ANN102" # Missing type annotation for cls in classmethod
"ANN204" # Missing return type annotation for special method
"ANN401" # Dynamically typed expressions (typing.Any) disallowed
"SIM102" # use a single if statement instead of nested if statements
"SIM108" # Use ternary operator {contents} instead of if-else-block
"TCH001" # Move application imports used only for annotations into a type-checking block
"TCH002" # Move 3rd-party imports used only for annotations into a type-checking block
"TCH003" # Move standard library imports used only for annotations into a type-checking block
"TD002" # Missing author in TODO
"TD003" # Missing issue link on the line following this TODO
"PT011" # pytest.raises without match parameter is too broad # TODO: Unignore this
"TRY003" # No f-strings in raise statements
"EM101" # No string literals in exception init
"EM102" # No f-strings in exception init
"UP024" # Using errors that alias OSError
"PLR2004" # Using unnamed numerical constants
"PGH003" # Using specific rule codes in type ignores
"E731" # Don't asign a lambda expression, use a def
# Redundant rules with ruff-format:
"E111" # Indentation of a non-multiple of 4 spaces
"E114" # Comment with indentation of a non-multiple of 4 spaces
"E117" # Cheks for over-indented code
"D206" # Checks for docstrings indented with tabs
"D300" # Checks for docstring that use ''' instead of """
"Q000" # Checks of inline strings that use wrong quotes (' instead of ")
"Q001" # Multiline string that use wrong quotes (''' instead of """)
"Q002" # Checks for docstrings that use wrong quotes (''' instead of """)
"Q003" # Checks for avoidable escaped quotes ("\"" -> '"')
"COM812" # Missing trailing comma (in multi-line lists/tuples/...)
"COM819" # Prohibited trailing comma (in single-line lists/tuples/...)
"ISC001" # Single line implicit string concatenation ("hi" "hey" -> "hihey")
"ISC002" # Multi line implicit string concatenation
];
extend-per-file-ignores = {
"tests/*" = [
"ANN" # flake8-annotations
"S101" # Use of assert
];
"docs/conf.py" = [
"INP" # allow implicit namespace (pep 420)
];
};
isort = {
order-by-type = false;
case-sensitive = true;
combine-as-imports = true;
# Redundant rules with ruff-format
force-single-line = false; # forces all imports to appear on their own line
force-wrap-aliases = false; # Split imports with multiple members and at least one alias
lines-after-imports = -1; # The number of blank lines to place after imports
lines-between-types = 0; # Number of lines to place between "direct" and import from imports
split-on-trailing-comma = false; # if last member of multiline import has a comma, don't fold it to single line
};
pylint = {
max-args = 20;
max-branches = 20;
max-returns = 20;
max-statements = 250;
};
flake8-tidy-imports = {
ban-relative-imports = "all";
};
};
format = {
line-ending = "lf";
};
};
};
};
}

View file

@ -0,0 +1,14 @@
{
lib,
pkgs,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = osConfig.myOptions.home-manager.programs.coding.python;
in {
config = mkIf cfg.enable {
home.packages = with pkgs; [ rye ];
};
}

View file

@ -207,6 +207,9 @@
file-managers = { file-managers = {
pcmanfm-qt.enable = true; pcmanfm-qt.enable = true;
}; };
coding = {
python.enable = true;
};
}; };
services = { services = {

View file

@ -57,5 +57,9 @@ in
fastfetch.enable = mkEnableOption "FastFetch (fast neofetch)"; fastfetch.enable = mkEnableOption "FastFetch (fast neofetch)";
hyfetch.enable = mkEnableOption "Neofetch with pride flags"; hyfetch.enable = mkEnableOption "Neofetch with pride flags";
}; };
coding = {
python.enable = mkEnableOption "Python coding utilities";
};
}; };
} }