2025-01-14 23:50:24 -05:00
|
|
|
{
|
|
|
|
|
config,
|
|
|
|
|
lib,
|
|
|
|
|
pkgs,
|
|
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
imports = [ ];
|
|
|
|
|
|
2025-01-23 21:39:57 -05:00
|
|
|
options.me = {
|
|
|
|
|
vscode.enable = lib.mkOption {
|
|
|
|
|
type = lib.types.bool;
|
|
|
|
|
default = false;
|
|
|
|
|
example = true;
|
|
|
|
|
description = "Whether we want to install vscode.";
|
|
|
|
|
};
|
2025-11-24 21:24:40 -05:00
|
|
|
|
|
|
|
|
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.";
|
|
|
|
|
};
|
2025-01-23 21:39:57 -05:00
|
|
|
};
|
2025-01-14 23:50:24 -05:00
|
|
|
|
2025-10-11 00:08:02 -04:00
|
|
|
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"
|
|
|
|
|
];
|
2025-01-14 23:50:24 -05:00
|
|
|
|
2025-10-11 00:08:02 -04:00
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
|
(vscode-with-extensions.override {
|
2025-11-24 21:24:40 -05:00
|
|
|
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=";
|
|
|
|
|
}
|
|
|
|
|
))
|
|
|
|
|
);
|
2025-01-23 21:39:57 -05:00
|
|
|
})
|
2025-10-11 00:08:02 -04:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
me.install.user.talexander.file = {
|
|
|
|
|
".config/Code/User/settings.json" = {
|
|
|
|
|
source = ./files/settings.json;
|
|
|
|
|
};
|
|
|
|
|
".config/Code/User/keybindings.json" = {
|
|
|
|
|
source = ./files/keybindings.json;
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-11-24 21:24:40 -05:00
|
|
|
|
|
|
|
|
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";
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-10-11 00:08:02 -04:00
|
|
|
};
|
2025-01-14 23:50:24 -05:00
|
|
|
}
|