kergoth / dotfiles

Primary dotfiles & scripts repository
Other
20 stars 1 forks source link

Adopt 'winget configure' / DSCv3 #23

Open kergoth opened 8 months ago

kergoth commented 8 months ago

Example:

# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
properties:

  assertions:
    - resource: Microsoft.Windows.Developer/OsVersion
      directives:
        description: Verify min OS version requirement
        allowPrerelease: true
      settings:
        MinVersion: '10.0.22000'
  resources:
  # Enable Developer Mode
    - resource: Microsoft.Windows.Developer/DeveloperMode
      directives:
        description: Enable Developer Mode
        allowPrerelease: true
      settings:
        Ensure: Present
  # Show file extensions
    - resource: Microsoft.Windows.Developer/HideFileExtensions
      directives:
        description: Show file extensionss
        allowPrerelease: true
      settings:
        Ensure: Absent
  # Show hidden files
    - resource: Microsoft.Windows.Developer/ShowHiddenFiles
      directives:
        description: Show hidden files
        allowPrerelease: true
      settings:
        Ensure: Present
  # Set taskbar alignment to middle
    - resource: Microsoft.Windows.Developer/TaskBarAlignment
      directives:
        description: Set taskbar alignment to middle
        allowPrerelease: true
      settings:
        Alignment: Middle
  # Install Visual Studio 2022 Community
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      id: vsPackage
      directives:
        description: Install Visual Studio 2022 Community
        allowPrerelease: true
      settings:
        id: Microsoft.VisualStudio.2022.Community
        source: winget
    # - resource: Microsoft.VisualStudio.DSC/VSComponents
    #   dependsOn:
    #     - vsPackage
    #   directives:
    #     description: Install required VS workloads for DevHome
    #     allowPrerelease: true
    #   settings:
    #     productId: Microsoft.VisualStudio.Product.Community
    #     channelId: VisualStudio.17.Release
    #     vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig'
    #     includeRecommended: true
  # # Enable WSL
  #   - resource: PsDscResources/WindowsOptionalFeature
  #     directives:
  #       description: Enable WSL
  #     settings:
  #       Name: Microsoft-Windows-Subsystem-Linux
  # # Enable Virtual Machine Platform for WSL 2
  #   - resource: PsDscResources/WindowsOptionalFeature
  #     directives:
  #       description: Enable Virtual Machine Platform for WSL 2
  #     settings:
  #       Name: VirtualMachinePlatform
  # # Enable Windows Sandbox
  #   - resource: PsDscResources/WindowsOptionalFeature
  #     directives:
  #       description: Enable Windows Sandbox
  #     settings:
  #       Name: Containers-DisposableClientVM
  # Install PowerShell 7
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install PowerShell 7
        # allowPrerelease: true
      settings:
        id: Microsoft.PowerShell
        source: winget
  # Install Git
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      id: git
      directives:
        description: Install GIT
        # allowPrerelease: true
      settings:
        id: git.git
        source: winget
  # Install Visual Studio Code
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      id: Visual Studio Code
      directives:
        description: Install Visual Studio Code
        # allowPrerelease: true
      settings:
        id: Microsoft.VisualStudioCode
        source: winget
  # Enable and Start SSH Agent service
    - resource: PsDscResources/Service
      directives:
        description: Enable and Start SSH Agent service
      settings:
        Name: ssh-agent
        Ensure: Present
        StartupType: Automatic
        State: Running
    - resource: WindowsDefender/WindowsDefender
      directives:
        description: Configure Windows Defender Settings
      settings:
        IsSingleInstance: "Yes"
        DisableBehaviorMonitoring: false        
        DisableIntrusionPreventionSystem: false

  configurationVersion: 0.2.0