public/Backup-NixOSConfiguration.ps1
function Backup-NixOSConfiguration { <# .SYNOPSIS Creates a backup of the NixOS configuration. .DESCRIPTION This function creates a backup copy of the NixOS configuration file. .PARAMETER Destination An option string containing the destination filesystem path for the backed up configuration file. .EXAMPLE # Back up the NixOS configuration file to the default location # The default configuration location is `/etc/nixos/` Backup-NixOsConfiguration .EXAMPLE # Back up the NixOS configuration file to a custom location # The provided value must begin and end with `/` ; this will be checked at runtime. Backup-NixOsConfiguration -Destination /home/Documents/ .NOTES Requirements: - Operating System: "NixOS" - Packages: - "powershell" - "nixos-rebuild" - Permissions: +rw at /etc/nixos #> [CmdletBinding(SupportsShouldProcess = $true, DefaultParameterSetName = 'None')] param ( [Parameter(Mandatory = $true)] [ValidatePattern('^/.*/$')] [string]$Destination ) if ($Destination) { Write-Information "Creating backup copy of configuration.nix in default location." $fullBackupPath = ( @( "$Destination", "configuration_", "$(Get-Date -Format 'yyyyMMdd_hhmmss')", ".nix.bak" ) -join '' ).ToString() Write-Information "Creating backup copy of configuration.nix in $fullBackupPath." Copy-Item -Path '/etc/nixos/configuration.nix' -Destination "$fullBackupPath" } else { Write-Information "Creating backup copy of configuration.nix in $Destination." Copy-Item -Path '/etc/nixos/configuration.nix' -Destination "/etc/nixos/configuration_$(Get-Date -Format 'yyyyMMdd_hhmmss').nix.bak" } } |