diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index d8a3f8b..80a4cb8 100755 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -1,27 +1,21 @@ { lib, pkgs, ... }: let shellAliases = { - ll = "ls -alh"; update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.18"; update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.18"; update-flake = "nix flake update desktop-nixpkgs desktop-chaotic desktop-home-manager desktop-impermanence desktop-lanzaboote desktop-nixos-hardware desktop-sops-nix desktop-steam-rom-manager --flake /etc/nixos"; update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host admin@10.0.1.18 --flake ~/nix-config#jallen-nas"; - nas-ssh = "kitten ssh admin@10.0.1.18"; - ducks = "du -cksh * | sort -hr | head -n 15"; - }; - - gitAliases = { - co = "checkout"; - ci = "commit"; - cia = "commit --amend"; - s = "status"; - st = "status"; - b = "branch"; - p = "pull --rebase"; - pu = "push"; }; in { + imports = [ + ../../share/home/git.nix + ../../share/home/gnome.nix + ../../share/home/librewolf.nix + ../../share/home/office.nix + ../../share/home/shell.nix + ../../share/home/vscode.nix + ]; home.username = "matt"; home.homeDirectory = "/home/matt"; @@ -55,136 +49,24 @@ in java.enable = true; home-manager.enable = true; password-store.enable = true; - onlyoffice = { - enable = true; - settings = { - UITheme = "theme-contrast-dark"; - forcedRtl = false; - maximized = true; - }; - }; - zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - - shellAliases = shellAliases; - - oh-my-zsh = { - enable = true; - plugins = [ "git" ]; - theme = "fishy"; - }; - }; - - librewolf = { - enable = true; - settings = { - "identity.fxaccounts.enabled" = true; # Enable Firefox Accounts - "privacy.clearOnShutdown.history" = false; # Disable clearing history on shutdown - "privacy.clearOnShutdown.downloads" = false; # Disable clearing downloads on shutdown - "privacy.clearOnShutdown.cache" = false; # Disable clearing cache on shutdown - "privacy.clearOnShutdown.cookiesAndStorage" = false; # Disable clearing cookies and storage on shutdown - "privacy.clearOnShutdown.cookies" = false; # Disable clearing cookies on shutdown - "privacy.clearOnShutdown_v2.cache" = false; # Disable clearing cache on shutdown - "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; # Disable clearing cookies and storage on shutdown - "privacy.clearOnShutdown.formdata" = false; # Disable clearing form data on shutdown - "privacy.clearOnShutdown.offlineApps" = false; # Disable clearing offline apps on shutdown - "privacy.clearHistory.cache" = false; # Disable clearing cache on history clear - "privacy.clearHistory.cookiesAndStorage" = false; # Disable clearing cookies on history clear - "privacy.clearHistory.historyFormDataAndDownloads" = false; # Disable clearing history, form data, and downloads on history clear - "privacy.clearHistory.browsingHistoryAndDownloads" = false; # Disable clearing browsing history and downloads on history clear - "privacy.clearSiteData.cache" = false; # Disable clearing cache on site data clear - "privacy.clearSiteData.cookiesAndStorage" = false; # Disable clearing cookies on site data clear - "services.sync.prefs.sync.privacy.clearOnShutdown.cache" = true; # Enable syncing cache clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.cookies" = true; # Enable syncing cookies clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.downloads" = true; # Enable syncing downloads clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.formdata" = true; # Enable syncing form data clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.history" = true; # Enable syncing history clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.offlineApps" = true; # Enable syncing offline apps clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.sessions" = true; # Enable syncing sessions clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings" = true; # Enable syncing site settings clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.cache" = true; # Enable syncing cache clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.cookiesAndStorage" = true; # Enable syncing cookies clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.downloads" = true; # Enable syncing downloads clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = true; # Enable syncing form data clear on shutdown - "services.sync.prefs.sync.privacy.clearOnShutdown_v2.siteSettings" = true; # Enable syncing site settings clear on shutdown - "browser.newtabpage.activity-stream.feeds.topsites" = true; # Enable top sites on new tab page - "browser.newtabpage.activity-stream.topSitesRows" = 3; # Set number of rows for top sites on new tab page - "layout.css.light-dark.enabled" = true; # Enable light/dark theme support - "extensions.activeThemeID" = "default-theme@mozilla.org"; # Set active theme - "extensions.webextensions.uuids" = "{\"formautofill@mozilla.org\":\"851c83b7-26d5-449c-8cc9-d8951a0ce78d\",\"pictureinpicture@mozilla.org\":\"42fa2650-5134-4bef-bafa-b73f9ae51bad\",\"screenshots@mozilla.org\":\"efd2b692-43c4-433a-aea5-0cb79f8312d4\",\"webcompat-reporter@mozilla.org\":\"c43a6be2-fb56-4253-b384-ce8e09a89999\",\"webcompat@mozilla.org\":\"e25fd1bb-7c53-413f-9528-bb922c322a56\",\"default-theme@mozilla.org\":\"610b67c3-9145-46f7-814f-d8ee2cc8edff\",\"addons-search-detection@mozilla.com\:\"caedb3ca-5cf5-4e23-a251-d742f23e6fc8\",\"uBlock0@raymondhill.net\":\"7e7d9fd9-12bf-42d3-9c7c-9ffd05420ec7\",\"78272b6fa58f4a1abaac99321d503a20@proton.me\":\"7242a067-06d8-430b-94a3-00d264cdd57b\",\"addon@darkreader.org\":\"2f02b112-6acd-4bdc-af2c-1432eb527339\",\"jid1-xUfzOsOFlzSOXg@jetpack\":\"d0c72046-9903-4118-8160-a028840bf928\",\"chrome-gnome-shell@gnome.org\":\"a1ab53e6-b765-4f25-8349-383cc04682a0\",\"user-agent-switcher@ninetailed.ninja\":\"259d07cc-bb32-4ed5-b90f-6d73abdeb7bb\",\"firefoxdav@icloud.com\":\"110e6e2c-18f8-461d-9f26-b8f04482b6f1\",\"ciscowebexstart1@cisco.com\":\"a4062240-e73a-4353-bddb-d608d84881f7\",\"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}\":\"9164e437-812b-4a07-8dfd-2fd73b39329b\",\"{036a55b4-5e72-4d05-a06c-cba2dfcc134a}\":\"648fc678-a6fb-47cd-9792-fb9520678c17\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\":\"f0b43422-070e-466e-85c9-6543f209f075\",\"jid1-MnnxcxisBPnSXQ@jetpack\":\"4c448202-c843-4cae-b5c3-d11f2da58fa3\",\"soundfixer@unrelenting.technology\":\"59b35eb8-1c85-4919-a905-80d120993ddc\",\"floccus@handmadeideas.org\":\"8ad2956c-8091-41af-a689-7d2108f5958d\",\"{79b9dbcf-cc5a-4cda-89ef-c4ab097eb074}\":\"c2a223a7-32e0-4726-9f20-17236702b1f5\",\"linkgopher@oooninja.com\":\"a257858c-0dce-415b-b123-6222876cf843\"}"; - }; - }; - - git = { - enable = true; - package = pkgs.git.override { withLibsecret = true; }; - userName = "mjallen18"; - userEmail = "matt.l.jallen@gmail.com"; - aliases = gitAliases; - extraConfig = { - credential.helper = "libsecret"; - }; - }; - - steam-rom-manager = { - enable = true; - steamUsername = "matt"; - - environmentVariables = { - romsDirectory = "/home/matt/Games/roms"; - steamDirectory = "/home/matt/.local/share/Steam"; - }; - - emulators = { - ryujinx = { - enable = true; - }; - pcsx2 = { - enable = true; - }; - "Non-SRM Shortcuts" = { - enable = true; - parserType = "Non-SRM Shortcuts"; - extraArgs = ""; - }; - # Add other emulators as needed - }; - }; + zsh.shellAliases = shellAliases; }; home.packages = with pkgs; [ age - apple-cursor bottles chromium - colloid-icon-theme - colloid-gtk-theme unstable.compose2nix coolercontrol.coolercontrol-gui deadnix discord fastfetch + cpufetch firefox freerdp gamescope gamescope-wsi - gnome-tweaks - gnomeExtensions.allow-locked-remote-desktop - gnomeExtensions.appindicator - gnomeExtensions.arcmenu - gnomeExtensions.bing-wallpaper-changer - gnomeExtensions.dash-to-dock - gnomeExtensions.dash-to-panel - gnomeExtensions.gsconnect - gnomeExtensions.random-wallpaper - gnomeExtensions.tiling-assistant - gnomeExtensions.user-themes - gnomeExtensions.wikiart-wallpaper - google-chrome goverlay heroic home-manager @@ -197,9 +79,7 @@ in nextcloud-client nixfmt-rfc-style orca-slicer - papirus-icon-theme piper - pop-gtk-theme prismlauncher protonup protontricks @@ -216,46 +96,5 @@ in virt-manager vmware-horizon-client vorta - vscode ]; - - dconf = { - enable = true; - settings = { - "org/gnome/desktop/interface".clock-format = "12h"; - "org/gnome/desktop/interface".color-scheme = "prefer-dark"; - "org/gnome/desktop/interface".cursor-theme = lib.mkDefault "macOS"; - "org/gnome/desktop/interface".enable-hot-corners = false; - "org/gnome/desktop/interface".font-antialiasing = "grayscale"; - "org/gnome/desktop/interface".font-hinting = "slight"; - "org/gnome/desktop/interface".gtk-theme = lib.mkDefault "Colloid-Dark"; - "org/gnome/desktop/interface".icon-theme = lib.mkDefault "Colloid-Dark"; - "org/gnome/desktop/peripherals/mouse".accel-profile = "flat"; - "org/gnome/desktop/peripherals/touchpad".two-finger-scrolling-enabled = true; - "org/gnome/desktop/peripherals/touchpad".tap-to-click = true; - "org/gnome/mutter".experimental-features = [ - "scale-monitor-framebuffer" - "variable-refresh-rate" - ]; - "org/gnome/tweaks".show-extensions-notice = false; - "org/gnome/shell".enabled-extensions = [ - "allowlockedremotedesktop@kamens.us" - "appindicatorsupport@rgcjonas.gmail.com" - "user-theme@gnome-shell-extensions.gcampax.github.com" - "tiling-assistant@leleat-on-github" - "dash-to-dock@micxgx.gmail.com" - "BingWallpaper@ineffable-gmail.com" - "gsconnect@andyholmes.github.io" - ]; - "org/gnome/shell/extensions/bingwallpaper".override-lockscreen-blur = true; - "org/gnome/shell/extensions/bingwallpaper".random-mode-enabled = true; - "org/gnome/shell/extensions/bingwallpaper".revert-to-current-image = false; - "org/gnome/shell/extensions/dash-to-panel".primary-monitor = 1; - "org/gnome/shell/extensions/dash-to-panel".multi-monitors = false; - "org/gnome/shell/extensions/gsconnect".id = "4db35bd2-0dcd-42a3-9f77-ef3e8bb83182"; - "org/gnome/shell/extensions/gsconnect".name = "matt-nixos"; - "org/gnome/shell/extensions/user-theme".name = lib.mkDefault "Colloid-Dark"; - "org/gtk/settings/file-chooser".clock-format = "12h"; - }; - }; } diff --git a/share/home/git.nix b/share/home/git.nix new file mode 100644 index 0000000..d5bee7d --- /dev/null +++ b/share/home/git.nix @@ -0,0 +1,25 @@ +{ pkgs, ... }: +let + gitAliases = { + co = "checkout"; + ci = "commit"; + cia = "commit --amend"; + s = "status"; + st = "status"; + b = "branch"; + p = "pull --rebase"; + pu = "push"; + }; +in +{ + programs.git = { + enable = true; + package = pkgs.git.override { withLibsecret = true; }; + userName = "mjallen18"; + userEmail = "matt.l.jallen@gmail.com"; + aliases = gitAliases; + extraConfig = { + credential.helper = "libsecret"; + }; + }; +} \ No newline at end of file diff --git a/share/home/gnome.nix b/share/home/gnome.nix new file mode 100644 index 0000000..607fd64 --- /dev/null +++ b/share/home/gnome.nix @@ -0,0 +1,62 @@ +{ lib, pkgs, ... }: +{ + home.packages = with pkgs; [ + apple-cursor + colloid-icon-theme + colloid-gtk-theme + gnome-tweaks + gnomeExtensions.allow-locked-remote-desktop + gnomeExtensions.appindicator + gnomeExtensions.arcmenu + gnomeExtensions.bing-wallpaper-changer + gnomeExtensions.dash-to-dock + gnomeExtensions.dash-to-panel + gnomeExtensions.gsconnect + gnomeExtensions.random-wallpaper + gnomeExtensions.tiling-assistant + gnomeExtensions.user-themes + gnomeExtensions.wikiart-wallpaper + papirus-icon-theme + pop-gtk-theme + ]; + + dconf = { + enable = true; + settings = { + "org/gnome/desktop/interface".clock-format = "12h"; + "org/gnome/desktop/interface".color-scheme = "prefer-dark"; + "org/gnome/desktop/interface".cursor-theme = lib.mkDefault "macOS"; + "org/gnome/desktop/interface".enable-hot-corners = false; + "org/gnome/desktop/interface".font-antialiasing = "grayscale"; + "org/gnome/desktop/interface".font-hinting = "slight"; + "org/gnome/desktop/interface".gtk-theme = lib.mkDefault "Colloid-Dark"; + "org/gnome/desktop/interface".icon-theme = lib.mkDefault "Colloid-Dark"; + "org/gnome/desktop/peripherals/mouse".accel-profile = "flat"; + "org/gnome/desktop/peripherals/touchpad".two-finger-scrolling-enabled = true; + "org/gnome/desktop/peripherals/touchpad".tap-to-click = true; + "org/gnome/mutter".experimental-features = [ + "scale-monitor-framebuffer" + "variable-refresh-rate" + ]; + "org/gnome/tweaks".show-extensions-notice = false; + "org/gnome/shell".enabled-extensions = [ + "allowlockedremotedesktop@kamens.us" + "appindicatorsupport@rgcjonas.gmail.com" + "user-theme@gnome-shell-extensions.gcampax.github.com" + "tiling-assistant@leleat-on-github" + "dash-to-dock@micxgx.gmail.com" + "BingWallpaper@ineffable-gmail.com" + "gsconnect@andyholmes.github.io" + ]; + "org/gnome/shell/extensions/bingwallpaper".override-lockscreen-blur = true; + "org/gnome/shell/extensions/bingwallpaper".random-mode-enabled = true; + "org/gnome/shell/extensions/bingwallpaper".revert-to-current-image = false; + "org/gnome/shell/extensions/dash-to-panel".primary-monitor = 1; + "org/gnome/shell/extensions/dash-to-panel".multi-monitors = false; + "org/gnome/shell/extensions/gsconnect".id = "4db35bd2-0dcd-42a3-9f77-ef3e8bb83182"; + "org/gnome/shell/extensions/gsconnect".name = "matt-nixos"; + "org/gnome/shell/extensions/user-theme".name = lib.mkDefault "Colloid-Dark"; + "org/gtk/settings/file-chooser".clock-format = "12h"; + }; + }; +} \ No newline at end of file diff --git a/share/home/librewolf.nix b/share/home/librewolf.nix new file mode 100644 index 0000000..7fb6cbf --- /dev/null +++ b/share/home/librewolf.nix @@ -0,0 +1,42 @@ +{ ... }: +{ + programs.librewolf = { + enable = true; + settings = { + "identity.fxaccounts.enabled" = true; # Enable Firefox Accounts + "privacy.clearOnShutdown.history" = false; # Disable clearing history on shutdown + "privacy.clearOnShutdown.downloads" = false; # Disable clearing downloads on shutdown + "privacy.clearOnShutdown.cache" = false; # Disable clearing cache on shutdown + "privacy.clearOnShutdown.cookiesAndStorage" = false; # Disable clearing cookies and storage on shutdown + "privacy.clearOnShutdown.cookies" = false; # Disable clearing cookies on shutdown + "privacy.clearOnShutdown_v2.cache" = false; # Disable clearing cache on shutdown + "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; # Disable clearing cookies and storage on shutdown + "privacy.clearOnShutdown.formdata" = false; # Disable clearing form data on shutdown + "privacy.clearOnShutdown.offlineApps" = false; # Disable clearing offline apps on shutdown + "privacy.clearHistory.cache" = false; # Disable clearing cache on history clear + "privacy.clearHistory.cookiesAndStorage" = false; # Disable clearing cookies on history clear + "privacy.clearHistory.historyFormDataAndDownloads" = false; # Disable clearing history, form data, and downloads on history clear + "privacy.clearHistory.browsingHistoryAndDownloads" = false; # Disable clearing browsing history and downloads on history clear + "privacy.clearSiteData.cache" = false; # Disable clearing cache on site data clear + "privacy.clearSiteData.cookiesAndStorage" = false; # Disable clearing cookies on site data clear + "services.sync.prefs.sync.privacy.clearOnShutdown.cache" = true; # Enable syncing cache clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown.cookies" = true; # Enable syncing cookies clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown.downloads" = true; # Enable syncing downloads clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown.formdata" = true; # Enable syncing form data clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown.history" = true; # Enable syncing history clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown.offlineApps" = true; # Enable syncing offline apps clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown.sessions" = true; # Enable syncing sessions clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings" = true; # Enable syncing site settings clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.cache" = true; # Enable syncing cache clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.cookiesAndStorage" = true; # Enable syncing cookies clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.downloads" = true; # Enable syncing downloads clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = true; # Enable syncing form data clear on shutdown + "services.sync.prefs.sync.privacy.clearOnShutdown_v2.siteSettings" = true; # Enable syncing site settings clear on shutdown + "browser.newtabpage.activity-stream.feeds.topsites" = true; # Enable top sites on new tab page + "browser.newtabpage.activity-stream.topSitesRows" = 3; # Set number of rows for top sites on new tab page + "layout.css.light-dark.enabled" = true; # Enable light/dark theme support + "extensions.activeThemeID" = "default-theme@mozilla.org"; # Set active theme + "extensions.webextensions.uuids" = "{\"formautofill@mozilla.org\" =\"851c83b7-26d5-449c-8cc9-d8951a0ce78d\",\"pictureinpicture@mozilla.org\" =\"42fa2650-5134-4bef-bafa-b73f9ae51bad\",\"screenshots@mozilla.org\" =\"efd2b692-43c4-433a-aea5-0cb79f8312d4\",\"webcompat-reporter@mozilla.org\" =\"c43a6be2-fb56-4253-b384-ce8e09a89999\",\"webcompat@mozilla.org\" =\"e25fd1bb-7c53-413f-9528-bb922c322a56\",\"default-theme@mozilla.org\" =\"610b67c3-9145-46f7-814f-d8ee2cc8edff\",\"addons-search-detection@mozilla.com\:\"caedb3ca-5cf5-4e23-a251-d742f23e6fc8\",\"uBlock0@raymondhill.net\" =\"7e7d9fd9-12bf-42d3-9c7c-9ffd05420ec7\",\"78272b6fa58f4a1abaac99321d503a20@proton.me\" =\"7242a067-06d8-430b-94a3-00d264cdd57b\",\"addon@darkreader.org\" =\"2f02b112-6acd-4bdc-af2c-1432eb527339\",\"jid1-xUfzOsOFlzSOXg@jetpack\" =\"d0c72046-9903-4118-8160-a028840bf928\",\"chrome-gnome-shell@gnome.org\" =\"a1ab53e6-b765-4f25-8349-383cc04682a0\",\"user-agent-switcher@ninetailed.ninja\" =\"259d07cc-bb32-4ed5-b90f-6d73abdeb7bb\",\"firefoxdav@icloud.com\" =\"110e6e2c-18f8-461d-9f26-b8f04482b6f1\",\"ciscowebexstart1@cisco.com\" =\"a4062240-e73a-4353-bddb-d608d84881f7\",\"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}\" =\"9164e437-812b-4a07-8dfd-2fd73b39329b\",\"{036a55b4-5e72-4d05-a06c-cba2dfcc134a}\" =\"648fc678-a6fb-47cd-9792-fb9520678c17\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\" =\"f0b43422-070e-466e-85c9-6543f209f075\",\"jid1-MnnxcxisBPnSXQ@jetpack\" =\"4c448202-c843-4cae-b5c3-d11f2da58fa3\",\"soundfixer@unrelenting.technology\" =\"59b35eb8-1c85-4919-a905-80d120993ddc\",\"floccus@handmadeideas.org\" =\"8ad2956c-8091-41af-a689-7d2108f5958d\",\"{79b9dbcf-cc5a-4cda-89ef-c4ab097eb074}\" =\"c2a223a7-32e0-4726-9f20-17236702b1f5\",\"linkgopher@oooninja.com\" =\"a257858c-0dce-415b-b123-6222876cf843\"}"; + }; + }; +} \ No newline at end of file diff --git a/share/home/office.nix b/share/home/office.nix new file mode 100644 index 0000000..72bfe0a --- /dev/null +++ b/share/home/office.nix @@ -0,0 +1,11 @@ +{ ... }: +{ + programs.onlyoffice = { + enable = true; + settings = { + UITheme = "theme-contrast-dark"; + forcedRtl = false; + maximized = true; + }; + }; +} \ No newline at end of file diff --git a/share/home/shell.nix b/share/home/shell.nix new file mode 100644 index 0000000..00e29a7 --- /dev/null +++ b/share/home/shell.nix @@ -0,0 +1,23 @@ +{ ... }: +let + defaultShellAliases = { + l = "ls -alh"; + ducks = "du -cksh * | sort -hr | head -n 15"; + }; +in +{ + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + shellAliases = defaultShellAliases; + + oh-my-zsh = { + enable = true; + plugins = [ "git" ]; + theme = "fishy"; + }; + }; +} \ No newline at end of file diff --git a/share/home/vscode.nix b/share/home/vscode.nix new file mode 100644 index 0000000..824bfdf --- /dev/null +++ b/share/home/vscode.nix @@ -0,0 +1,105 @@ +{ config, pkgs, ... }: +{ + programs.vscode = { + enable = true; + package = pkgs.vscodium; + mutableExtensionsDir = false; + profiles = { + default = { + enableUpdateCheck = false; + enableExtensionUpdateCheck = false; + extensions = with pkgs.vscode-extensions; [ + bbenoist.nix + brettm12345.nixfmt-vscode + dendron.dendron-markdown-preview-enhanced + github.copilot + github.copilot-chat + jnoortheen.nix-ide + ms-python.debugpy + ms-python.pylint + ms-python.python + ms-python.vscode-pylance + ms-vscode-remote.remote-ssh + ms-vscode-remote.remote-ssh-edit + redhat.vscode-xml + redhat.vscode-yaml + yy0931.vscode-sqlite3-editor + ]; + userSettings = { + + "editor" = { + "defaultFormatter" = "brettm12345.nixfmt-vscode"; + "fontFamily" = "fira-code-nerd, FiraCode Nerd Font, Consolas, 'Courier New', monospace"; + "fontLigatures" = true; + "renderWhitespace" = "all"; + }; + + "explorer" = { + "confirmDelete" = false; + "confirmDragAndDrop" = false; + }; + + "git" = { + "confirmSync" = false; + "enableSmartCommit" = true; + }; + + "github" = { + "copilot.nextEditSuggestions.enabled" = true; + "copilot.enable" = { + "nix" = true; + }; + }; + + "[json]" = { + "editor.defaultFormatter" = "vscode.json-language-features"; + }; + + "nix" = { + "enableLanguageServer" = true; + "formatterPath" = "nixpkgs-fmt"; + "serverPath" = "nixd"; + "serverSettings" = { + "nixd" = { + "formatting" = { + "command" = [ "nixpkgs-fmt" ]; + }; + "options" = { + # By default, this entriy will be read from `import { }`. + # You can write arbitary Nix expressions here, to produce valid "options" declaration result. + # Tip: for flake-based configuration, utilize `builtins.getFlake` + "nixos" = { + "expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").nixosConfigurations..options"; + }; + "home-manager" = { + "expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").homeConfigurations..options"; + }; + # # Tip: use ${workspaceFolder} variable to define path + # "nix-darwin" = { + # "expr" = "(builtins.getFlake \"${workspaceFolder}/path/to/flake\").darwinConfigurations..options" + # } + }; + }; + }; + }; + + "[nix]" = { + "editor" = { + "defaultFormatter" = "brettm12345.nixfmt-vscode"; + "tabSize" = 2; + }; + }; + + "security.workspace.trust.untrustedFiles" = "open"; + + "workbench" = { + "colorCustomizations" = null; + "editorAssociations" = { + "*.db" = "default"; + }; + }; + }; + }; + }; + }; +} \ No newline at end of file