{ config, lib, pkgs, ... }: { imports = [ ]; options.me = { vscode.enable = lib.mkOption { type = lib.types.bool; default = false; example = true; description = "Whether we want to install vscode."; }; vscode.enable_remote_tunnels = lib.mkOption { type = lib.types.bool; default = false; example = true; description = "Whether we want to install the remote tunnels vscode extension."; }; }; config = lib.mkIf (config.me.vscode.enable && config.me.graphical) { allowedUnfree = [ "vscode" "vscode-x86_64-unknown-linux-gnu-with-extensions" "vscode-with-extensions" "vscode-extension-ms-vscode-remote-remote-ssh" ]; environment.systemPackages = with pkgs; [ (vscode-with-extensions.override { vscodeExtensions = with vscode-extensions; ( [ bbenoist.nix ms-python.python ms-azuretools.vscode-docker ms-vscode-remote.remote-ssh esbenp.prettier-vscode ] ++ (pkgs.vscode-utils.extensionsFromVscodeMarketplace ( lib.lists.optional config.me.vscode.enable_remote_tunnels { name = "remote-server"; publisher = "ms-vscode"; version = "1.5.3"; sha256 = "MSayIBwvSgIHg6gTrtUotHznvo5kTiveN8iSrehllW0="; } )) ); }) ]; me.install.user.talexander.file = { ".config/Code/User/settings.json" = { source = ./files/settings.json; }; ".config/Code/User/keybindings.json" = { source = ./files/keybindings.json; }; }; environment.persistence."/persist" = lib.mkIf (config.me.mountPersistence) { hideMounts = true; users.talexander = { directories = [ { directory = ".config/Code/User/globalStorage"; user = "talexander"; group = "talexander"; mode = "0755"; } { directory = ".config/Code/User/workspaceStorage"; user = "talexander"; group = "talexander"; mode = "0755"; } ]; }; }; environment.persistence."/state" = lib.mkIf (config.me.mountPersistence) { hideMounts = true; users.talexander = { directories = [ { directory = ".config/Code/CachedProfilesData"; user = "talexander"; group = "talexander"; mode = "0755"; } { directory = ".config/Code/CachedConfigurations"; user = "talexander"; group = "talexander"; mode = "0755"; } { directory = ".config/Code/Cache"; user = "talexander"; group = "talexander"; mode = "0755"; } { directory = ".config/Code/CachedData"; user = "talexander"; group = "talexander"; mode = "0755"; } ]; }; }; }; }