{ config, pkgs, ... }:

let
  my-python-packages = python-self: with python-self; [
    numpy pandas matplotlib scipy scikit-learn
    # Удалены tensorflowWithCuda и pytorchWithCuda
    jupyterlab ipython
    seaborn plotly
    transformers
    pillow
    opencv4
    pytest
    black flake8 mypy
  ];
in
{
  imports =
    [ # Включаем результаты сканирования оборудования.
      ./hardware-configuration.nix
    ];

  # Загрузчик.
  boot.loader.grub.enable = true;
  boot.loader.grub.device = "/dev/sdb";
  boot.loader.grub.useOSProber = true;

  networking.hostName = "nixos"; # Определяем имя хоста.
  networking.networkmanager.enable = true;

  # Включаем брандмауэр.
  networking.firewall.enable = true;

  # Устанавливаем часовой пояс.
  time.timeZone = "Europe/Moscow";

  # Настройки локализации.
  i18n.defaultLocale = "en_US.UTF-8";

  i18n.extraLocaleSettings = {
    LC_ADDRESS = "ru_RU.UTF-8";
    LC_IDENTIFICATION = "ru_RU.UTF-8";
    LC_MEASUREMENT = "ru_RU.UTF-8";
    LC_MONETARY = "ru_RU.UTF-8";
    LC_NAME = "ru_RU.UTF-8";
    LC_NUMERIC = "ru_RU.UTF-8";
    LC_PAPER = "ru_RU.UTF-8";
    LC_TELEPHONE = "ru_RU.UTF-8";
    LC_TIME = "ru_RU.UTF-8";
  };

  # Включаем систему окон X11.
  services.xserver.enable = true;

  # Включаем рабочее окружение GNOME.
  services.xserver.displayManager.gdm.enable = true;
  services.xserver.desktopManager.gnome.enable = true;

  # Настраиваем раскладку клавиатуры в X11.
  services.xserver.xkb = {
    layout = "us,ru";
    variant = "";
    options = "grp:alt_shift_toggle";
  };

  # Включаем поддержку печати через CUPS.
  services.printing.enable = true;

  # Включаем звук с использованием PipeWire.
  sound.enable = true;
  hardware.pulseaudio.enable = false;
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = false; # Отключаем поддержку 32-бит, если не требуется
    pulse.enable = true;
  };

  # Определяем учетную запись пользователя.
  users.users.m = {
    isNormalUser = true;
    description = "m";
    extraGroups = [ "wheel" "docker" ];
    # Можно удалить пустой список packages, так как он не используется
    shell = pkgs.zsh; # Задаем zsh как оболочку по умолчанию
  };

  # Включаем и настраиваем zsh и Oh My Zsh
  programs.zsh = {
    enable = true;
    ohMyZsh = {
      enable = true;
      theme = "agnoster"; # Выберите тему по вашему вкусу
      plugins = [ "git" "python" "pip" ]; # Добавьте нужные плагины
    };
  };

  # Включаем автоматический вход для пользователя.
  services.displayManager.autoLogin.enable = true;
  services.displayManager.autoLogin.user = "m";

  # Разрешаем использование несвободных пакетов и включаем поддержку CUDA.
  nixpkgs.config = {
    allowUnfree = true;
    cudaSupport = true;
  };

  # Список пакетов, устанавливаемых в системный профиль.
  environment.systemPackages = with pkgs; [
    # Базовые утилиты
    vim neovim
    wget curl
    git
    htop
    zsh

    # Веб-браузеры
    firefox
    google-chrome

    # Инструменты Python и Data Science
    (python3.withPackages my-python-packages)

    # Инструменты разработки
    vscode
    jetbrains.pycharm-community
    cmake
    gnumake
    gcc
    gdb

    # Системы контроля версий
    gitAndTools.gitflow
    gh

    # Офисный пакет
    libreoffice

    # Медиа-плеер
    vlc

    # Мессенджеры
    tdesktop  # Клиент Telegram Desktop
    # slack # Slack можно установить через Flatpak

    # Дополнительные полезные инструменты
    gnome.gnome-tweaks
    gnome.dconf-editor

    # Инструменты AI/ML
    # Удален cudatoolkit, так как он будет установлен через hardware.nvidia

    # Визуализация данных
    graphviz
    gnuplot

    # Терминальные утилиты
    tmux
    screen
    terminator

    # Сетевые утилиты
    wireshark
    nmap

    # Управление файлами
    ranger
    mc

    # Текстовая обработка
    pandoc
    texlive.combined.scheme-medium

    # Инструменты для работы с базами данных
    postgresql
    mysql
    mongodb

    # Инструменты для облачных сервисов
    awscli2
    google-cloud-sdk
    azure-cli

    # Контейнеризация и виртуализация
    docker-compose
    vagrant
  ];

  # Включаем Flatpak
  services.flatpak.enable = true;

  # Включаем Docker
  virtualisation.docker.enable = true;

  # Включаем драйверы NVIDIA
  services.xserver.videoDrivers = [ "nvidia" ];
  hardware.nvidia = {
    modesetting.enable = true;
    package = pkgs.linuxPackages.nvidiaPackages.stable; # Исправлено
  };

  # Включаем поддержку OpenCL
  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      ocl-icd
      pkgs.linuxPackages.nvidia_x11 # Исправлено
    ];
    driSupport32Bit = false; # Отключаем поддержку 32-бит, если не требуется
    extraPackages32 = [];
  };

  # Оптимизируем систему для высокопроизводительных вычислений
  boot.kernel.sysctl = {
    "vm.swappiness" = 10;
    "vm.dirty_ratio" = 60;
    "vm.dirty_background_ratio" = 2;
    "fs.inotify.max_user_watches" = 524288; # Увеличиваем максимальное количество наблюдателей файлов
  };

  # Эта опция определяет версию NixOS
  system.stateVersion = "24.05"; # Прочитайте комментарий!
} предложи улучшения сам подумай инновационно улучши