Вопрос или проблема
Мой 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
:
-
Постоянное хранилище конфигурации VSCode:
.config/Code/User
– это основное место хранения пользовательских настроек и других файлов конфигурации.
-
Хранение состояния плагинов:
Чтобы избежать повторных входов в аккаунты после перезагрузки, необходимо добавить:~/.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, будут сохраняться между перезагрузками. Это даст вам возможность сосредоточиться на кодировании, не отвлекаясь на переработку аутентификации и конфигураций.