{ lib, pkgs, config, osConfig, ... }: { config = { nixpkgs.config = { allowUnfree = true; }; # Programs that need to be installed with some extra configuration programs = lib.mkMerge [ { # Let Home Manager install and manage itself. home-manager.enable = true; } (lib.mkIf (config.user.isDesktopUser || config.user.isTerminalUser) { # git = { # enable = true; # userName = "Ivy"; # userEmail = "ivy@example.com"; # Update this with actual email # extraConfig.init.defaultBranch = "main"; # }; openssh = { enable = true; hostKeys = [ { type = "ed25519"; path = "${config.home.username}_${osConfig.networking.hostName}_ed25519"; } ]; }; }) (lib.mkIf config.user.isDesktopUser { vscode = { enable = true; package = pkgs.vscodium; mutableExtensionsDir = false; profiles.default = { enableUpdateCheck = false; enableExtensionUpdateCheck = false; extraExtensions = { # Cline extension (Claude AI assistant) claudeDev.enable = true; # Auto Rename Tag autoRenameTag.enable = true; # Live Server liveServer.enable = true; }; extensions = let extension-pkgs = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version; in ( with extension-pkgs.open-vsx; [ streetsidesoftware.code-spell-checker ] ); }; }; firefox.enable = true; discord.enable = true; signal-desktop-bin.enable = true; claude-code.enable = true; }) ]; }; }