Separate global and OS-specific config
This commit is contained in:
parent
4fe88bba12
commit
d0b055140e
15 changed files with 101 additions and 61 deletions
|
@ -9,8 +9,8 @@ begin
|
|||
|
||||
function configureSW -V dir
|
||||
source "$dir/../../../Common/Scripts/config.fish"
|
||||
set -l label (getConfig valhalla.boot.label)
|
||||
set -l efiDir (getConfig valhalla.boot.efiMountPoint)
|
||||
set -l label (getOSConfig boot.label)
|
||||
set -l efiDir (getOSConfig boot.efiMountPoint)
|
||||
set -l bootNums (efibootmgr | sed "/$label/{ s/^.*Boot\([[:digit:]]\+\)\*.*\$/\1/; p; }; d")
|
||||
|
||||
for bootNum in $bootNums
|
||||
|
|
|
@ -4,7 +4,7 @@ begin
|
|||
source "$dir/../../Common/OS/setup.fish"
|
||||
source "$dir/../../Common/Scripts/config.fish"
|
||||
|
||||
set -l mountDir (getConfig valhalla.partition.rootDir)
|
||||
set -l mountDir (getOSConfig partition.rootDir)
|
||||
|
||||
function runChroot -S
|
||||
arch-chroot $argv
|
||||
|
@ -15,7 +15,7 @@ begin
|
|||
end
|
||||
|
||||
function installDrivers -V mountDir
|
||||
if isEnabled valhalla.linux.hardware.surfaceBook
|
||||
if isOSEnabled hardware.surfaceBook
|
||||
pacstrap -K "$mountDir" linux-firmware-marvell;
|
||||
end
|
||||
end
|
||||
|
@ -33,11 +33,11 @@ begin
|
|||
set -l relativeDir (realpath --relative-to "$dir/../../.." "$dir")
|
||||
set -l tempDir "$PROJECT_CLONE_ROOT/$relativeDir"
|
||||
|
||||
if set -l keyMap (getConfig valhalla.keyMap)
|
||||
if set -l keyMap (getOSConfig keyMap)
|
||||
loadkeys "$keyMap"
|
||||
end
|
||||
|
||||
and if set -l timezone (getConfig valhalla.timeZone)
|
||||
and if set -l timezone (getOSConfig timeZone)
|
||||
timedatectl set-timezone "$timezone"
|
||||
end
|
||||
|
||||
|
@ -63,7 +63,7 @@ begin
|
|||
and arch-chroot "$mountDir" hwclock --systohc
|
||||
|
||||
and begin
|
||||
getConfig valhalla.i18n.localeSettings --json | \
|
||||
getOSConfig i18n.localeSettings --json | \
|
||||
jq --raw-output '[.[] | split(".") | .[0]] | unique | join("\\\\|")'
|
||||
end | begin
|
||||
read LOCALES
|
||||
|
@ -72,7 +72,7 @@ begin
|
|||
end
|
||||
|
||||
and begin
|
||||
getConfig valhalla.i18n.localeSettings --json | \
|
||||
getOSConfig i18n.localeSettings --json | \
|
||||
jq --raw-output '[keys[] as $key | "\($key)=\(.[$key])"] | join("\n")'
|
||||
end | arch-chroot "$mountDir" tee /etc/locale.conf > /dev/null
|
||||
|
||||
|
@ -80,13 +80,13 @@ begin
|
|||
echo "KEYMAP=$keyMap" | arch-chroot "$mountDir" tee /etc/vconsole.conf > /dev/null
|
||||
end
|
||||
|
||||
and echo (getConfig valhalla.hostname) | arch-chroot "$mountDir" tee /etc/hostname > /dev/null
|
||||
and echo (getOSConfig hostname) | arch-chroot "$mountDir" tee /etc/hostname > /dev/null
|
||||
|
||||
and arch-chroot "$mountDir" mkinitcpio -P
|
||||
and runHook installDrivers "Installing drivers..." || true
|
||||
and runInOS fish "$tempDir/../Software/GRUB/main.fish"
|
||||
|
||||
and if set -l keyLayout (getConfig valhalla.keyboardLayout)
|
||||
and if set -l keyLayout (getOSConfig keyboardLayout)
|
||||
set -l serviceName set-keymap.service
|
||||
and set -l serviceFile "$mountDir/etc/systemd/system/$serviceName"
|
||||
and cp "$dir/$serviceName" "$serviceFile"
|
||||
|
|
|
@ -14,23 +14,23 @@ function deploySoftware -d "Deploys a the specified software action" -a action
|
|||
end
|
||||
)
|
||||
|
||||
if isEnabled valhalla.linux.secureBoot
|
||||
if isOSEnabled secureBoot
|
||||
source "$dir/../Config/SecureBoot/main.fish" $argv
|
||||
end
|
||||
|
||||
and if isEnabled valhalla.linux.hardware.surfaceBook
|
||||
and if isOSEnabled hardware.surfaceBook
|
||||
source "$dir/../Drivers/SurfaceBook2/main.fish" $argv
|
||||
end
|
||||
|
||||
and if isEnabled valhalla.linux.hardware.nvidiaGPU
|
||||
and if isOSEnabled hardware.nvidiaGPU
|
||||
source "$dir/../Software/nvidia-dkms/main.fish" $argv
|
||||
end
|
||||
|
||||
and if isEnabled valhalla.linux.hardware.xoneReceiver
|
||||
and if isOSEnabled hardware.xoneReceiver
|
||||
source "$dir/../Software/xone/main.fish" $argv
|
||||
end
|
||||
|
||||
and for component in (getConfig valhalla.linux.hardware.components --json | jq '.[]' --raw-output0 | string split0)
|
||||
and for component in (getOSConfig hardware.components --json | jq '.[]' --raw-output0 | string split0)
|
||||
if [ "$component" = "Logitech G903" ]
|
||||
source "$dir/../../Common/Drivers/Logitech G903/main.fish" $argv
|
||||
end
|
||||
|
|
|
@ -11,7 +11,7 @@ begin
|
|||
function configureSW -V dir
|
||||
. "$dir/../../../Common/Scripts/config.fish"
|
||||
|
||||
if isEnabled valhalla.hidpi
|
||||
if isOSEnabled hidpi
|
||||
begin
|
||||
printf %s\n \
|
||||
"#!/bin/bash" \
|
||||
|
|
|
@ -4,7 +4,7 @@ source "$dir/../Scripts/config.fish"
|
|||
source "$dir/../Scripts/hooks.fish"
|
||||
|
||||
if [ (id -u) -eq 0 ]
|
||||
set -l name (getConfig valhalla.setupUser.name)
|
||||
set -l name (getOSConfig setupUser.name)
|
||||
set -l sudoConfig "/etc/sudoers.d/PortValhalla"
|
||||
rm ~/.bash_profile
|
||||
|
||||
|
@ -16,7 +16,7 @@ if [ (id -u) -eq 0 ]
|
|||
--no-user-group \
|
||||
--groups nix-users \
|
||||
--create-home \
|
||||
--uid (getConfig valhalla.setupUser.id --json) \
|
||||
--uid (getOSConfig setupUser.id --json) \
|
||||
"$name"
|
||||
end
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ function runSetup
|
|||
set -l dir (status dirname)
|
||||
source "$dir/../Scripts/config.fish"
|
||||
source "$dir/../Scripts/hooks.fish"
|
||||
set -l mountDir (getConfig valhalla.partition.rootDir)
|
||||
set -l mountDir (getOSConfig partition.rootDir)
|
||||
set -l projectRoot (realpath "$dir/../../..")
|
||||
set -l projectName (basename "$projectRoot")
|
||||
set -l PROJECT_CLONE_ROOT "/opt/$(basename "$projectName")"
|
||||
|
@ -43,7 +43,7 @@ function runSetup
|
|||
"$argv"
|
||||
end
|
||||
|
||||
getConfig valhalla.partition.script > "$script"
|
||||
getOSConfig partition.script > "$script"
|
||||
and "$script"
|
||||
and rm "$script"
|
||||
|
||||
|
|
|
@ -5,13 +5,13 @@ set -l users (getUsers)
|
|||
|
||||
|
||||
for name in (echo "$users" | jq '.[]' --raw-output0 | string split0)
|
||||
function getUserConfig -V name -a config
|
||||
getConfig "valhalla.linux.users.$name.$config" $argv[2..]
|
||||
function getUserInfo -V name -a config
|
||||
getUserConfig "$name" "$config" $argv[2..]
|
||||
end
|
||||
|
||||
set -l groups (getUserConfig groups --apply 'builtins.concatStringsSep ","');
|
||||
set -l displayName (getUserConfig displayName --json)
|
||||
set -l shell (getUserConfig defaultShell --json)
|
||||
set -l groups (getUserInfo groups --apply 'builtins.concatStringsSep ","');
|
||||
set -l displayName (getUserInfo displayName --json)
|
||||
set -l shell (getUserInfo defaultShell --json)
|
||||
|
||||
sudo useradd --create-home (
|
||||
if echo "$displayName" | jq --exit-status > /dev/null
|
||||
|
|
|
@ -226,7 +226,10 @@ $null = New-Module {
|
|||
Gets a configuration option.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the option to get.
|
||||
The name of the configuration value to get.
|
||||
|
||||
.PARAMETER ArgumentList
|
||||
The arguments to send to the configuration script.
|
||||
#>
|
||||
function Get-Config {
|
||||
param(
|
||||
|
@ -242,16 +245,36 @@ $null = New-Module {
|
|||
.SYNOPSIS
|
||||
Gets the name of the config root.
|
||||
#>
|
||||
function Get-ConfigRootName {
|
||||
function Get-OSConfigRoot {
|
||||
return "valhalla.$($IsWindows ? "windows" : "linux")";
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the configuration value for the current operating system.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the configuration value to get.
|
||||
|
||||
.PARAMETER ArgumentList
|
||||
The arguments to send to the configuration script.
|
||||
#>
|
||||
function Get-OSConfig {
|
||||
param(
|
||||
[string] $Name,
|
||||
[Parameter(ValueFromRemainingArguments)]
|
||||
[string[]] $ArgumentList
|
||||
)
|
||||
|
||||
return Get-Config -Name "$(Get-OSConfigRoot).$Name" @PSBoundParameters;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the user root.
|
||||
#>
|
||||
function Get-UserRootName {
|
||||
return "$(Get-ConfigRootName).$($IsWindows ? "winUsers" : "users")";
|
||||
function Get-UserConfigRoot {
|
||||
return "$(Get-OSConfigRoot).$($IsWindows ? "winUsers" : "users")";
|
||||
}
|
||||
|
||||
<#
|
||||
|
@ -272,7 +295,7 @@ $null = New-Module {
|
|||
)
|
||||
|
||||
if ((Get-Users) -contains $UserName) {
|
||||
Get-Config "$(Get-UserRootName).$UserName.$Name";
|
||||
Get-Config "$(Get-UserConfigRoot).$UserName.$Name";
|
||||
} else {
|
||||
return $null;
|
||||
}
|
||||
|
@ -300,7 +323,7 @@ $null = New-Module {
|
|||
function Get-Users {
|
||||
[OutputType([string[]])]
|
||||
param()
|
||||
Get-Attributes "$(Get-UserRootName)";
|
||||
Get-Attributes "$(Get-UserConfigRoot)";
|
||||
}
|
||||
|
||||
<#
|
||||
|
@ -310,7 +333,7 @@ $null = New-Module {
|
|||
function Get-SetupUser {
|
||||
[OutputType([string])]
|
||||
param()
|
||||
Get-Config "$(Get-ConfigRootName).setupUser.name";
|
||||
Get-OSConfig "setupUser.name";
|
||||
}
|
||||
|
||||
<#
|
||||
|
|
|
@ -13,22 +13,46 @@ function getConfig -S -a property
|
|||
evalFlake "$CONFIG_NAME" "$property" $argv[2..]
|
||||
end
|
||||
|
||||
function getOSConfigRoot
|
||||
echo "valhalla.linux"
|
||||
end
|
||||
|
||||
function getOSConfig -S -a property
|
||||
getConfig "$(getOSConfigRoot).$property" $argv[2..]
|
||||
end
|
||||
|
||||
function getAttributes -S -a property
|
||||
getConfig "$property" --apply "builtins.attrNames" --json
|
||||
end
|
||||
|
||||
function getUsers -S
|
||||
getAttributes "valhalla.users"
|
||||
getAttributes "$(getOSConfigRoot).users"
|
||||
end
|
||||
|
||||
function getUserConfig -S -a name property
|
||||
getOSConfig "users.$name.$property" $argv[3..]
|
||||
end
|
||||
|
||||
function isSet -S -a property
|
||||
not test "$(getConfig "$property" --json)" = "null"
|
||||
end
|
||||
|
||||
function isOSSet -S -a property
|
||||
isSet "$(getOSConfigRoot).$property"
|
||||
end
|
||||
|
||||
function isUserSet -S -a name property
|
||||
isOSSet "users.$name.$property"
|
||||
end
|
||||
|
||||
function isEnabled -S -a property
|
||||
getConfig "$property" --json | jq --exit-status > /dev/null
|
||||
end
|
||||
|
||||
function collectionActive -S -a name
|
||||
[ "$(getConfig "valhalla.software.$name" --json)" = "true" ]
|
||||
function isOSEnabled -S -a property
|
||||
isEnabled "$(getOSConfigRoot).$property"
|
||||
end
|
||||
|
||||
function collectionActive -S -a name
|
||||
[ "$(getOSConfig "software.$name" --json)" = "true" ]
|
||||
end
|
||||
|
|
|
@ -5,13 +5,13 @@ begin
|
|||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function configureSW
|
||||
set -l efiDir (getConfig valhalla.boot.efiMountPoint)
|
||||
set -l efiDir (getOSConfig boot.efiMountPoint)
|
||||
|
||||
sudo sed -i \
|
||||
-e "s/#\(GRUB_DISABLE_OS_PROBER\)/\1/" \
|
||||
/etc/default/grub
|
||||
|
||||
sudo grub-install --target=x86_64-efi --efi-directory="$efiDir" --bootloader-id="$(getConfig valhalla.boot.label)"
|
||||
sudo grub-install --target=x86_64-efi --efi-directory="$efiDir" --bootloader-id="$(getOSConfig boot.label)"
|
||||
sudo grub-mkconfig -o "$efiDir/grub/grub.cfg"
|
||||
end
|
||||
|
||||
|
|
|
@ -17,18 +17,19 @@ param (
|
|||
[string] $User
|
||||
)
|
||||
|
||||
$root = "valhalla";
|
||||
$getConfig = $null;
|
||||
|
||||
if ($User) {
|
||||
$root = "$root$($IsWindows ? ".windows" : '').users.$User";
|
||||
$getConfig = { Get-UserConfig -UserName $User @args };
|
||||
$sudoArgs = @("-u", $User);
|
||||
$configArgs = @("--global");
|
||||
} else {
|
||||
$getConfig = { Get-OSConfig @args };
|
||||
$sudoArgs = @();
|
||||
$configArgs = @("--system");
|
||||
}
|
||||
|
||||
$config = Get-Config "$root.git";
|
||||
$config = & $getConfig "git";
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
|
|
@ -9,8 +9,8 @@ begin
|
|||
|
||||
function userConfig -V dir -a name
|
||||
source "$dir/../../Scripts/config.fish"
|
||||
set -l key "valhalla.linux.users.$name.rclone.configurations"
|
||||
set -l configs (getConfig "$key" --apply "builtins.attrNames" --json)
|
||||
set -l key "rclone.configurations"
|
||||
set -l configs (getUserConfig "$name" "$key" --apply "builtins.attrNames" --json)
|
||||
|
||||
if [ (echo "$configs" | jq "length") -gt 0 ]
|
||||
if [ "$XDG_SESSION_TYPE" = "tty" ]
|
||||
|
@ -89,10 +89,10 @@ begin
|
|||
set -l configKey "$key.$config"
|
||||
set -l duration "$configKey.cacheDuration"
|
||||
|
||||
set -l serviceName "rclone@$config:$(getConfig "$configKey.dirName")"
|
||||
set -l serviceName "rclone@$config:$(getUserConfig "$name" "$configKey.dirName")"
|
||||
|
||||
if isSet "$duration"
|
||||
set serviceName "$serviceName:$(getConfig "$duration")"
|
||||
if isUserSet "$name" "$duration"
|
||||
set serviceName "$serviceName:$(getUserConfig "$name" "$duration")"
|
||||
end
|
||||
|
||||
echo "Please create a remote called `$config`."
|
||||
|
|
|
@ -25,8 +25,8 @@ function Deploy-SoftwareAction {
|
|||
$install = $true;
|
||||
}
|
||||
|
||||
$hardware = Get-Config "valhalla.hardware";
|
||||
$collections = Get-Config "valhalla.windows.software";
|
||||
$hardware = Get-OSConfig "hardware";
|
||||
$collections = Get-OSConfig "software";
|
||||
|
||||
# Drivers
|
||||
& {
|
||||
|
@ -108,7 +108,7 @@ function Deploy-SoftwareAction {
|
|||
& "$commonSoftware/Terminal-Icons/Manage.ps1" @arguments;
|
||||
& "$softwarePath/Oh My Posh/Manage.ps1" @arguments;
|
||||
|
||||
if (Get-Config "valhalla.windows.dualboot") {
|
||||
if (Get-OSConfig "dualboot") {
|
||||
& "$softwarePath/Ext4Fsd/Main.ps1" @arguments;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,19 +44,11 @@ param(
|
|||
$dir = New-TemporaryDirectory;
|
||||
Push-Location $dir;
|
||||
|
||||
function Get-WinConfig {
|
||||
param(
|
||||
[string] $Name
|
||||
)
|
||||
|
||||
Get-Config "valhalla.windows.$Name";
|
||||
}
|
||||
|
||||
# Copy keyboard layout
|
||||
# ToDo: Why not NewUser? Investiagte!
|
||||
Copy-UserInternationalSettingsToSystem -WelcomeScreen $True -NewUser $False;
|
||||
|
||||
if (Get-WinConfig "legacyIconSpacing") {
|
||||
if (Get-OSConfig "legacyIconSpacing") {
|
||||
Write-Host "Setting up old-school Desktop Icon spacing";
|
||||
|
||||
Edit-DefaultUserKey {
|
||||
|
@ -73,7 +65,7 @@ param(
|
|||
};
|
||||
}
|
||||
|
||||
if (-not (Get-WinConfig "dynamicLighting")) {
|
||||
if (-not (Get-OSConfig "dynamicLighting")) {
|
||||
Write-Host "Disabling Dynamic Lighting";
|
||||
|
||||
Edit-DefaultUserKey {
|
||||
|
@ -87,7 +79,7 @@ param(
|
|||
};
|
||||
}
|
||||
|
||||
if (-not (Get-WinConfig "adware")) {
|
||||
if (-not (Get-OSConfig "adware")) {
|
||||
$startLayoutFile = "start.json";
|
||||
Write-Host "Removing adware";
|
||||
|
||||
|
@ -151,7 +143,7 @@ param(
|
|||
$startLayout | ConvertTo-Json -Compress | Set-Content "$env:SystemDrive\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.json";
|
||||
}
|
||||
|
||||
if (Get-WinConfig "showFileExt") {
|
||||
if (Get-OSConfig "showFileExt") {
|
||||
Edit-DefaultUserKey {
|
||||
param (
|
||||
[RegistryKey] $Key
|
||||
|
|
|
@ -18,7 +18,7 @@ param (
|
|||
Start-SoftwareInstaller @Parameters `
|
||||
-Installer {
|
||||
$params = "/WindowsTerminalProfile";
|
||||
$defaultBranch = Get-Config "valhalla.git.defaultBranch";
|
||||
$defaultBranch = Get-OSConfig "git.defaultBranch";
|
||||
|
||||
if ($defaultBranch) {
|
||||
$params += " /DefaultBranchName:`"$defaultBranch`"";
|
||||
|
|
Loading…
Reference in a new issue