Как я могу установить расширение vscode?

Это вопрос для начинающих. Так что есть пакет vscode-with-extensions, Пакет говорит:

Набор расширений vscode для установки вместе с редактором. Вот пример:

vscode-with-extensions.override {
  # When the extension is already available in the default extensions set.
  vscodeExtensions = with vscode-extensions; [
    bbenoist.Nix
  ]
  # Concise version from the vscode market place when not available in the default set.
  ++ vscode-utils.extensionsFromVscodeMarketplace [
    {
      name = "code-runner";
      publisher = "formulahendry";
      version = "0.6.33";
      sha256 = "166ia73vrcl5c9hm4q1a73qdn56m0jc7flfsk5p5q41na9f10lb0";
    }
  ];
}

В которой configuration.nix я должен поставить это выражение? у меня уже есть

  environment.systemPackages = with pkgs; [
     wget 
     vim 
     vscode-with-extensions
  ];

в нем.

3 ответа

Решение

Вы должны использовать его как непосредственно в файле configuration.nix, как, например,

  environment.systemPackages = with pkgs; [
     wget 
     vim 
     (vscode-with-extensions.override {
  # When the extension is already available in the default extensions set.
  vscodeExtensions = with vscode-extensions; [
    bbenoist.Nix
  ]
  # Concise version from the vscode market place when not available in the default set.
  ++ vscode-utils.extensionsFromVscodeMarketplace [
    {
      name = "code-runner";
      publisher = "formulahendry";
      version = "0.6.33";
      sha256 = "166ia73vrcl5c9hm4q1a73qdn56m0jc7flfsk5p5q41na9f10lb0";
    }
  ];
})
  ];

Или в более читаемой версии:

enviornment.systemPackages = with pkgs;
  let
    vcsodeWithExtension = vscode-with-extensions.override {
      # When the extension is already available in the default extensions set.
      vscodeExtensions = with vscode-extensions; [
        bbenoist.Nix
      ]
      # Concise version from the vscode market place when not available in the default set.
      ++ vscode-utils.extensionsFromVscodeMarketplace [
        {
          name = "code-runner";
          publisher = "formulahendry";
          version = "0.6.33";
          sha256 = "166ia73vrcl5c9hm4q1a73qdn56m0jc7flfsk5p5q41na9f10lb0";
        }
      ];
    })
  in
    [
      wget
      vim
      vcsodeWithExtension
    ];

Таким образом, по-видимому, это может идти прямо в environment.systemPackages, но требует скобок:

  environment.systemPackages = with pkgs; [
    wget 
    vim 
    (vscode-with-extensions.override {
      vscodeExtensions = with vscode-extensions; [
        bbenoist.Nix
      ];
    })
  ];

Я только начал использовать nix... установил nixos. Я также столкнулся с этой проблемой (пытаясь установить vscode с помощью этого механизма расширений, но с немного другим набором расширений и не желая загрязнять мою базовую машину установкой vscode). Решение, которое сработало для меня, с помощью команды через консоль терминала для создания воспроизводимой среды. После запускаnix-shellкомандаcode .успешно запущен vscode:

  • нужно создать файл config.nix в каталоге~/.config/nixpkgs/с содержимым:
      { allowUnfree = true; }

  • в консоли, в каталоге сshell.nixфайл со следующим кодом, который настраивает vscode с использованием этого механизма расширений:
      { pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/50c23cd4ff6c8344e0b4d438b027b3afabfe58dd.tar.gz") {} }:

let vscodeWithExtension = (pkgs.vscode-with-extensions.override {
        vscodeExtensions = with pkgs.vscode-extensions; [
              bbenoist.nix
              ms-python.python
              ms-azuretools.vscode-docker
              ms-vscode-remote.remote-ssh
            ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
              {
                name = "remote-ssh-edit";
                publisher = "ms-vscode-remote";
                version = "0.47.2";
                sha256 = "1hp6gjh4xp2m1xlm1jsdzxw9d8frkiidhph6nvl24d0h8z34w49g";
              }
            ];
          }
    );
in
pkgs.mkShell {
  buildInputs = [
    pkgs.git
    pkgs.ghc
    pkgs.ghcid
    vscodeWithExtension
  ];

  shellHook = ''
    echo hello ghc
  '';

  MY_ENVIRONMENT_VARIABLE = "world";
}
Другие вопросы по тегам