Configuration EnvironmentVariables { Import-DscResource -ModuleName PSDesiredStateConfiguration Node localhost { # === MINIFORGE PYTHON ENVIRONMENT (from 2_ConfigUpdate.ps1) === # Add Miniforge3 base directory to PATH Script AddMiniforgePath { SetScript = { $forgePath = "C:\ProgramData\miniforge3" $currentPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine") if (-not ($currentPath -split ";" | Where-Object { $_ -eq $forgePath })) { $newPath = $currentPath + ";" + $forgePath [System.Environment]::SetEnvironmentVariable("Path", $newPath, "Machine") Write-Verbose "Added $forgePath to system PATH" } } TestScript = { $forgePath = "C:\ProgramData\miniforge3" $currentPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine") return ($currentPath -split ";" | Where-Object { $_ -eq $forgePath }).Count -gt 0 } GetScript = { $forgePath = "C:\ProgramData\miniforge3" $currentPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine") $exists = ($currentPath -split ";" | Where-Object { $_ -eq $forgePath }).Count -gt 0 return @{Result = "Miniforge path exists: $exists"} } } # Add Miniforge3 Scripts directory to PATH Script AddMiniforgeScriptsPath { SetScript = { $forgeScriptsPath = "C:\ProgramData\miniforge3\Scripts" $currentPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine") if (-not ($currentPath -split ";" | Where-Object { $_ -eq $forgeScriptsPath })) { $newPath = $currentPath + ";" + $forgeScriptsPath [System.Environment]::SetEnvironmentVariable("Path", $newPath, "Machine") Write-Verbose "Added $forgeScriptsPath to system PATH" } } TestScript = { $forgeScriptsPath = "C:\ProgramData\miniforge3\Scripts" $currentPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine") return ($currentPath -split ";" | Where-Object { $_ -eq $forgeScriptsPath }).Count -gt 0 } GetScript = { $forgeScriptsPath = "C:\ProgramData\miniforge3\Scripts" $currentPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine") $exists = ($currentPath -split ";" | Where-Object { $_ -eq $forgeScriptsPath }).Count -gt 0 return @{Result = "Miniforge Scripts path exists: $exists"} } DependsOn = "[Script]AddMiniforgePath" } # Set Conda/Mamba environment variables Environment SetCondaDefault { Name = "CONDA_DEFAULT_ENV" Value = "base" Ensure = "Present" } Environment SetCondaEnvPrompt { Name = "CONDA_PROMPT_MODIFIER" Value = "(base) " Ensure = "Present" } # Python/Conda specific Environment SetPythonPath { Name = "PYTHONPATH" Value = "C:\ProgramData\miniforge3\Lib\site-packages" Ensure = "Present" } Environment SetDeveloperMode { Name = "DEVELOPER_MODE" Value = "1" Ensure = "Present" } } } # Generate the MOF file $outputPath = "$env:TEMP\DSC\EnvironmentVariables" EnvironmentVariables -OutputPath $outputPath # Apply the configuration Start-DscConfiguration -Path $outputPath -Wait -Verbose -Force