mirror of
https://github.com/ItsDrike/nixdots
synced 2024-11-10 05:29:42 +00:00
Compare commits
4 commits
5580328f0a
...
8a4d6ba1cb
Author | SHA1 | Date | |
---|---|---|---|
ItsDrike | 8a4d6ba1cb | ||
ItsDrike | 7c3098c74f | ||
ItsDrike | 507f364e5b | ||
ItsDrike | 4a10a3536a |
|
@ -25,5 +25,18 @@ in {
|
||||||
# Docker, etc. Requires NixOS configuration programs.fuse.userAllowOther = true;
|
# Docker, etc. Requires NixOS configuration programs.fuse.userAllowOther = true;
|
||||||
allowOther = true;
|
allowOther = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.persistence."${cfg.persistentDataMountPoint}" = {
|
||||||
|
directories = [
|
||||||
|
|
||||||
|
] ++ cfg.extraDataDirectories;
|
||||||
|
|
||||||
|
files = [
|
||||||
|
|
||||||
|
] ++ cfg.extraDataFiles;
|
||||||
|
|
||||||
|
# See comment for this above
|
||||||
|
allowOther = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,9 +40,10 @@
|
||||||
"float, class:^(com.github.wwmm.easyeffects)"
|
"float, class:^(com.github.wwmm.easyeffects)"
|
||||||
"float, class:^(opensnitch_ui)$"
|
"float, class:^(opensnitch_ui)$"
|
||||||
"float, class:^(Brave-browser)$,title:^(_crx_.+)$"
|
"float, class:^(Brave-browser)$,title:^(_crx_.+)$"
|
||||||
"float, class:^(hyprland-share-picker)$"
|
"float, class:^(floating)$"
|
||||||
"float,class:^(floating)$"
|
|
||||||
|
|
||||||
|
# Float hyprland-share-picker & some extra actions
|
||||||
|
"float, class:^(hyprland-share-picker)$"
|
||||||
"center, class:^(hyprland-share-picker)$"
|
"center, class:^(hyprland-share-picker)$"
|
||||||
"animation slide, class:^(hyprland-share-picker)$"
|
"animation slide, class:^(hyprland-share-picker)$"
|
||||||
|
|
||||||
|
@ -77,6 +78,9 @@
|
||||||
"float, class:^(splash)$"
|
"float, class:^(splash)$"
|
||||||
"float, class:^(confirmreset)$"
|
"float, class:^(confirmreset)$"
|
||||||
|
|
||||||
|
# Float all windows that don't have a title nor a class
|
||||||
|
"float, class:^$,title:^$"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Fixes
|
# Fixes
|
||||||
#
|
#
|
||||||
|
|
5
home/programs/terminal/coding/default.nix
Normal file
5
home/programs/terminal/coding/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./python
|
||||||
|
];
|
||||||
|
}
|
11
home/programs/terminal/coding/python/default.nix
Normal file
11
home/programs/terminal/coding/python/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./python.nix
|
||||||
|
./ipython.nix
|
||||||
|
./poetry.nix
|
||||||
|
./rye.nix
|
||||||
|
./pyright.nix
|
||||||
|
./mypy.nix
|
||||||
|
./ruff.nix
|
||||||
|
];
|
||||||
|
}
|
14
home/programs/terminal/coding/python/ipython.nix
Normal file
14
home/programs/terminal/coding/python/ipython.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
14
home/programs/terminal/coding/python/mypy.nix
Normal file
14
home/programs/terminal/coding/python/mypy.nix
Normal 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.mypy ];
|
||||||
|
};
|
||||||
|
}
|
27
home/programs/terminal/coding/python/poetry.nix
Normal file
27
home/programs/terminal/coding/python/poetry.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
|
||||||
|
# use python the version of python that's globally installed on the system
|
||||||
|
# and exists in PATH, instead of the python version poetry was installed
|
||||||
|
# with. Annoyingly, there's no good way to override the python version at
|
||||||
|
# which NixOS will built poetry here, so this is the next best thing.
|
||||||
|
prefer-active-python = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
14
home/programs/terminal/coding/python/pyright.nix
Normal file
14
home/programs/terminal/coding/python/pyright.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
14
home/programs/terminal/coding/python/python.nix
Normal file
14
home/programs/terminal/coding/python/python.nix
Normal 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; [ python312 ];
|
||||||
|
};
|
||||||
|
}
|
164
home/programs/terminal/coding/python/ruff.nix
Normal file
164
home/programs/terminal/coding/python/ruff.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
14
home/programs/terminal/coding/python/rye.nix
Normal file
14
home/programs/terminal/coding/python/rye.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -5,5 +5,6 @@ _: {
|
||||||
./editors
|
./editors
|
||||||
./file-managers
|
./file-managers
|
||||||
./emulators
|
./emulators
|
||||||
|
./coding
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,14 +53,6 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
persistentMountPoint = "/persist/home";
|
persistentMountPoint = "/persist/home";
|
||||||
extraDirectories = [
|
extraDirectories = [
|
||||||
# Nixos flake
|
|
||||||
"dots"
|
|
||||||
|
|
||||||
# Personal data
|
|
||||||
"Downloads"
|
|
||||||
"Personal"
|
|
||||||
"Media"
|
|
||||||
|
|
||||||
# Browsers
|
# Browsers
|
||||||
".mozilla"
|
".mozilla"
|
||||||
".mullvad"
|
".mullvad"
|
||||||
|
@ -95,6 +87,20 @@
|
||||||
".config/pcmanfm-qt/default/recent-files.conf"
|
".config/pcmanfm-qt/default/recent-files.conf"
|
||||||
".config/qalculate/qalculate-gtk.cfg"
|
".config/qalculate/qalculate-gtk.cfg"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
persistentDataMountPoint = "/data/Data";
|
||||||
|
extraDataDirectories = [
|
||||||
|
# Nixos flake
|
||||||
|
"dots"
|
||||||
|
|
||||||
|
# XDG user dirs
|
||||||
|
"Downloads"
|
||||||
|
"Media"
|
||||||
|
|
||||||
|
# Other personal data
|
||||||
|
"Personal"
|
||||||
|
];
|
||||||
|
extraDataFiles = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure automatic root subvolume wiping on boot from initrd
|
# Configure automatic root subvolume wiping on boot from initrd
|
||||||
|
@ -201,6 +207,9 @@
|
||||||
file-managers = {
|
file-managers = {
|
||||||
pcmanfm-qt.enable = true;
|
pcmanfm-qt.enable = true;
|
||||||
};
|
};
|
||||||
|
coding = {
|
||||||
|
python.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
|
|
@ -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";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ in
|
||||||
extraDirectories = mkOption {
|
extraDirectories = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
example = literalExpression ''["Downloads"]'';
|
example = literalExpression ''[".config/chromium"]'';
|
||||||
description = ''
|
description = ''
|
||||||
Additional directories in home to link to persistent storage.
|
Additional directories in home to link to persistent storage.
|
||||||
'';
|
'';
|
||||||
|
@ -70,13 +70,46 @@ in
|
||||||
default = "/persist/home";
|
default = "/persist/home";
|
||||||
description = ''
|
description = ''
|
||||||
Path to a persistent directory (usually a mount point to a
|
Path to a persistent directory (usually a mount point to a
|
||||||
standalone partition / subvolume), which will hold the persistent
|
standalone partition or subvolume), which will hold the persistent
|
||||||
system state files.
|
system state files.
|
||||||
|
|
||||||
This does not expect any subdirectories, all of the persistent home files
|
This does not create any subdirectories, all of the persistent home files
|
||||||
will be put directly in here. The user should be the owner of this direcotry.
|
will be put directly in here. The user should be the owner of this direcotry.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
persistentDataMountPoint = mkOption {
|
||||||
|
default = "/persist/home";
|
||||||
|
description = ''
|
||||||
|
Path to a persistent directory (usually a mount point to a
|
||||||
|
standalone partition or subvolume), which will hold the persistent
|
||||||
|
data files.
|
||||||
|
|
||||||
|
This does not create any subdirectories, all of the persistent home files
|
||||||
|
fill be put directly in here. The user should be the owner of this directory.
|
||||||
|
|
||||||
|
If you don't wish to distinguish between data and system / configuration files,
|
||||||
|
you can point this to the same location.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraDataFiles = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf types.str;
|
||||||
|
example = literalExpression ''["notes.txt"]'';
|
||||||
|
description = ''
|
||||||
|
Additional files in home to link to persistent data storage.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraDataDirectories = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf types.str;
|
||||||
|
example = literalExpression ''["Downloads"]'';
|
||||||
|
description = ''
|
||||||
|
Additional directories in home to link to persistent data storage.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
autoWipeBtrfs = let
|
autoWipeBtrfs = let
|
||||||
|
|
Loading…
Reference in a new issue