Настройка vscode в Nixos

Вопрос или проблема

Мой Nixos использует tmpfs в качестве корневой файловой системы, и я хочу настроить VSCode в Home Manager. Я хочу спросить вас, какие файлы или папки должен сохранять VSCode?

vscode.nix:

{ pkgs
, ...
} @ args:

{
  programs.vscode = {
    enable = true;
    package = pkgs.vscode;
    userSettings = {

      ##### Параметры VsCode #####
      ## Обычно используемое
      "files.autoSave" = "onFocusChange";
      "editor.fontSize" = 14;
      "editor.fontFamily" = "'Droid Sans Mono', 'monospace', monospace";
      "editor.tabSize" = 4;
      "editor.renderWhitespace" = "selection";
      "editor.cursorStyle" = "line";
      "editor.multiCursorModifier" = "alt";
      "editor.insertSpaces" = true;
      "editor.wordWrap" = "off";
      "files.exclude" = {
        "**/.git" = true;
        "**/.svn" = true;
        "**/.hg" = true;
        "**/CVS" = true;
        "**/.DS_Store" = true;
        "**/Thumbs.db" = true;
      };
      "files.associations" = { };
      "workbench.editor.enablePreview" = true;

      ## Текстовый редактор

      ## Рабочая область
      "workbench.colorTheme" = "Default Dark+";
      "workbench.startupEditor" = "none";

      ## Окно
      "window.autoDetectColorScheme" = false;

      ## Функции
      #### Обозреватель
      "explorer.confirmDelete" = false;
      "explorer.confirmDragAndDrop" = false;
      "explorer.enableDragAndDrop" = false;

      ## Приложение
      #### Обновление
      "update.mode" = "none";
      "update.showReleaseNotes" = false;

      ## Безопасность
      #### Рабочая область
      "security.workspace.trust.enabled" = false;
      "security.workspace.trust.startupPrompt" = "never";
      "security.workspace.trust.emptyWindow" = false;
      "security.workspace.trust.untrustedFiles" = "open";
      "security.workspace.trust.banner" = "never";

      ## Расширения
      #### Copilot
      "github.copilot.advanced" = { };
      "github.copilot.editor.enableAutoCompletions" = true;
      "github.copilot.enable" = {
        "*" = true;
        "plaintext" = false;
        "markdown" = false;
        "scminput" = false;
        "yaml" = false;
        "python" = true;
        "javascript" = true;
      };
      #### NixIDE
      "nix.enableLanguageServer" = true;
      "nix.formatterPath" = "nixpkgs-fmt";
      "nix.serverPath" = "nixd";
      "nix.serverSettings" = {
        "nixd" = {
          "eval" = { };
          "formatting" = {
            "command" = "nixpkgs-fmt";
          };
          "options" = {
            "enable" = true;
            "target" = {
              "args" = [ ];
              ## Опции NixOS
              # "installable" = "<flakeref>#nixosConfigurations.<name>.options";
              ## Опции Flake-партий
              # "installable" = "<flakeref>#debug.options";
              ## Опции Home-manager
              # "installable" = "<flakeref>#homeConfigurations.<name>.options";
            };
          };
        };
      };

    };
    extensions = with pkgs.vscode-extensions; [
      # Github Copilot
      github.copilot
      # Язык Nix
      jnoortheen.nix-ide
    ];
  };

  home.packages = with pkgs;[
    # Язык Nix
    nixd
    nixpkgs-fmt
  ];

  # Временная персистентность для VsCode
  home.persistence."/nix/persistent${config.home.homeDirectory}" = {
    directories = [
      ".config/Code/User"
    ];
    files = [

    ];
    allowOther = false;
    removePrefixDirectory = false;
  };

}

Что касается файлов, в которых сохраняется статус входа плагина, такого как github.copilot, текущая конфигурация станет недействительной после перезагрузки, и мне нужно будет войти снова. Что мне нужно сделать? Как поддерживать эти состояния?

Извините, что возвращаюсь к этому вопросу, так как он немного старый, но для всех, кто столкнется с проблемами сохранения входа copilot, я хотел бы поделиться тем, что решило эту проблему для меня:

  • включите keyring и сохраните “~/.local/share/keyrings”
  • сохраните “~/.config/Code”

Для последнего, вероятно, можно ограничить только целевую папку copilot, но я пока не знаю, как это сделать. Но теперь это должно сохраняться после перезагрузки 🙂

Ответ или решение

Настройка VSCode в NixOS с использованием Home Manager

Введение

Виртуальная машина NixOS, использующая tmpfs в качестве корневой файловой системы, требует особого подхода для настройки приложений, таких как Visual Studio Code (VSCode). С помощью Home Manager возможно управлять конфигурациями и пользовательскими данными, чтобы они сохранялись между перезагрузками. В данном руководстве будет объяснено, как правильно настроить VSCode и обеспечить сохранение состояния плагинов, включая GitHub Copilot.

Настройка VSCode в Home Manager

Ваш файл конфигурации vscode.nix представлен ниже. Он включает настройки пользовательской среды и список расширений, которые вы хотите установить.

{ pkgs, ... } @ args:

{
  programs.vscode = {
    enable = true;
    package = pkgs.vscode;
    userSettings = {
      # Общие настройки VSCode
      "files.autoSave" = "onFocusChange";
      "editor.fontSize" = 14;
      ... # другие настройки
    };
    extensions = with pkgs.vscode-extensions; [
      github.copilot
      jnoortheen.nix-ide
    ];
  };

  home.persistence."/nix/persistent${config.home.homeDirectory}" = {
    directories = [
      ".config/Code/User"
    ];
    allowOther = false;
    removePrefixDirectory = false;
  };
}

Пункты для постоянного хранения данных

Чтобы ваше окружение VSCode сохраняло необходимые данные между перезагрузками, убедитесь, что следующие каталоги и файлы занесены в home.persistence:

  1. Постоянное хранилище конфигурации VSCode:

    • .config/Code/User – это основное место хранения пользовательских настроек и других файлов конфигурации.
  2. Хранение состояния плагинов:
    Чтобы избежать повторных входов в аккаунты после перезагрузки, необходимо добавить:

    • ~/.config/Code – это каталог, где хранятся данные и настройки плагинов, включая GitHub Copilot.
    • ~/.local/share/keyrings – этот каталог содержит ключи для аутентификации, что особенно важно для тех плагинов, которые требуют вход (например, GitHub Copilot).
home.persistence."/nix/persistent${config.home.homeDirectory}" = {
  directories = [
    ".config/Code/User"
    ".config/Code"  # добавьте этот каталог для сохранения любых данных плагинов
  ];
  files = [ # добавьте сюда конкретные файлы, если это необходимо ];
  allowOther = false;
  removePrefixDirectory = false;
};

Заключение

Убедившись, что все необходимые каталоги и файлы добавлены в конфигурацию Home Manager, вы создадите надёжную среду для работы с VSCode, где все ваши настройки и состояния плагинов, такие как GitHub Copilot, будут сохраняться между перезагрузками. Это даст вам возможность сосредоточиться на кодировании, не отвлекаясь на переработку аутентификации и конфигураций.

Оцените материал
Добавить комментарий

Капча загружается...