diff --git a/archiso/airootfs/root/.zlogin b/archiso/airootfs/root/.zlogin index 6c333e3d..0c263a93 100644 --- a/archiso/airootfs/root/.zlogin +++ b/archiso/airootfs/root/.zlogin @@ -5,10 +5,10 @@ fi ~/.automated_script.sh -if bash -c "ls /sys/class/backlight/*/max_brightness" > /dev/null 2>&1; +if bash -c "ls /sys/class/backlight/*/max_brightness" > /dev/null 2>&1 then cat /sys/class/backlight/*/max_brightness > /sys/class/backlight/*/brightness -fi; +fi cd "PortValhalla" diff --git a/archiso/scripts/show-diff.fish b/archiso/scripts/show-diff.fish index 867f2457..11a5920c 100755 --- a/archiso/scripts/show-diff.fish +++ b/archiso/scripts/show-diff.fish @@ -18,7 +18,7 @@ begin git -C "$projectDir" ls-files --exclude-standard --others end | \ rsync --files-from=/dev/stdin --exclude={.gitignore,README.md,scripts,LICENSE,valhalla.patch} "$dir/.." "$contextRoot" - end &> /dev/null; + end &> /dev/null and git -C "$contextRoot" diff end diff --git a/archiso/scripts/valhalla.patch b/archiso/scripts/valhalla.patch index 9c2fe3a4..48f00540 100644 --- a/archiso/scripts/valhalla.patch +++ b/archiso/scripts/valhalla.patch @@ -1,5 +1,5 @@ diff --git a/airootfs/root/.zlogin b/airootfs/root/.zlogin -index bf6bc8f..6c333e3 100644 +index bf6bc8f..0c263a9 100644 --- a/airootfs/root/.zlogin +++ b/airootfs/root/.zlogin @@ -4,3 +4,18 @@ if grep -Fqa 'accessibility=' /proc/cmdline &> /dev/null; then @@ -7,10 +7,10 @@ index bf6bc8f..6c333e3 100644 ~/.automated_script.sh + -+if bash -c "ls /sys/class/backlight/*/max_brightness" > /dev/null 2>&1; ++if bash -c "ls /sys/class/backlight/*/max_brightness" > /dev/null 2>&1 +then + cat /sys/class/backlight/*/max_brightness > /sys/class/backlight/*/brightness -+fi; ++fi + +cd "PortValhalla" + diff --git a/lib/eval-attribute.nix b/lib/eval-attribute.nix index 70674c73..5555bc83 100644 --- a/lib/eval-attribute.nix +++ b/lib/eval-attribute.nix @@ -1,15 +1,12 @@ let inherit (nixpkgs) lib; - nixpkgs = import { config = {}; overlay = []; }; + nixpkgs = import { + config = { }; + overlay = [ ]; + }; property = (builtins.getEnv "PROPERTY"); - processor = if (builtins.stringLength property > 0) - then - (_: lib.attrsets.getAttrFromPath (lib.strings.splitString "." property) _) - else - (_: _); -in - _: processor (lib.evalModules { - modules = [ - _ - ]; - }).config + processor = if (builtins.stringLength property > 0) then + (_: lib.attrsets.getAttrFromPath (lib.strings.splitString "." property) _) + else + (_: _); +in _: processor (lib.evalModules { modules = [ _ ]; }).config diff --git a/lib/modules/hardware.nix b/lib/modules/hardware.nix index d04ea602..c44dffa4 100644 --- a/lib/modules/hardware.nix +++ b/lib/modules/hardware.nix @@ -1,67 +1,63 @@ { lib, ... }: - let - inherit (lib) - mkOption - types - ; - in { - options = { - valhalla = { - hardware = { - components = mkOption { - type = types.listOf types.str; - description = "The names of the hardware components of the computer."; - default = []; - }; +let inherit (lib) mkOption types; +in { + options = { + valhalla = { + hardware = { + components = mkOption { + type = types.listOf types.str; + description = "The names of the hardware components of the computer."; + default = [ ]; + }; - surfaceBook = mkOption { - type = types.bool; - description = "A value indicating whether the system is a Surface Book 2."; - default = false; - }; + surfaceBook = mkOption { + type = types.bool; + description = "A value indicating whether the system is a Surface Book 2."; + default = false; + }; - xoneReceiver = mkOption { - type = types.bool; - description = "A value indicating whether an Xbox receiver is present."; - default = false; - }; + xoneReceiver = mkOption { + type = types.bool; + description = "A value indicating whether an Xbox receiver is present."; + default = false; + }; - eyeX = mkOption { - type = types.bool; - description = "A value indicating whether a Tobii EyeX device is present."; - default = false; - }; + eyeX = mkOption { + type = types.bool; + description = "A value indicating whether a Tobii EyeX device is present."; + default = false; + }; - amdCPU = mkOption { - type = types.bool; - description = "A value indicating whether an AMD CPU is present."; - default = false; - }; + amdCPU = mkOption { + type = types.bool; + description = "A value indicating whether an AMD CPU is present."; + default = false; + }; - nvidiaGPU = mkOption { - type = types.bool; - description = "A value indicating whether an NVIDIA GPU is present."; - default = false; - }; + nvidiaGPU = mkOption { + type = types.bool; + description = "A value indicating whether an NVIDIA GPU is present."; + default = false; + }; - corsairDevice = mkOption { - type = types.bool; - description = "A value indicating whether a Corsair device is present."; - default = false; - }; + corsairDevice = mkOption { + type = types.bool; + description = "A value indicating whether a Corsair device is present."; + default = false; + }; - elgatoWave = mkOption { - type = types.bool; - description = "A value indicating whether an Elgato Wave device is present."; - default = false; - }; + elgatoWave = mkOption { + type = types.bool; + description = "A value indicating whether an Elgato Wave device is present."; + default = false; + }; - logitechG = mkOption { - type = types.bool; - description = "A value indicating whether a Logitech G device is present."; - default = false; - }; + logitechG = mkOption { + type = types.bool; + description = "A value indicating whether a Logitech G device is present."; + default = false; }; }; }; - } + }; +} diff --git a/lib/modules/i18n.nix b/lib/modules/i18n.nix index 327fd18a..4692dfb2 100644 --- a/lib/modules/i18n.nix +++ b/lib/modules/i18n.nix @@ -1,19 +1,15 @@ { lib, ... }: - let - inherit (lib) - mkOption - types - ; - in { - options = { - valhalla = { - i18n = { - localeSettings = mkOption { - type = types.attrsOf types.str; - description = "The system wide locale settings"; - default = {}; - }; +let inherit (lib) mkOption types; +in { + options = { + valhalla = { + i18n = { + localeSettings = mkOption { + type = types.attrsOf types.str; + description = "The system wide locale settings"; + default = { }; }; }; }; - } + }; +} diff --git a/lib/modules/os.nix b/lib/modules/os.nix index ff661b02..e8fa71a6 100644 --- a/lib/modules/os.nix +++ b/lib/modules/os.nix @@ -1,65 +1,60 @@ { lib, ... }: - let - inherit (lib) - mkOption - types - ; - in { - options = { - valhalla = mkOption { - type = types.submodule ( - { extendModules, ... }: - let - osVariant = extendModules { - modules = [ - ({ config, ... }: { - options = { - config = mkOption { - type = types.attrs; - description = "The configuration of the Operating System."; - default = builtins.removeAttrs config ["_module" "config" "linux" "windows"]; - visible = false; - }; - }; - }) - ]; - }; - - linuxVariant = osVariant.extendModules { - modules = [ - ({ ... }: { - options = { - secureBoot = mkOption { - type = types.bool; - description = "A value indicating whether the system supports Secure Boot."; - default = false; - }; - }; - }) - ]; - }; - - windowsVariant = osVariant.extendModules { }; - in { - options = { - linux = mkOption { - inherit (linuxVariant) type; - description = "The options for setting up Linux."; - default = {}; - visible = "shallow"; +let inherit (lib) mkOption types; +in { + options = { + valhalla = mkOption { + type = types.submodule ( + { extendModules, ... }: let + osVariant = extendModules { + modules = [ + ({ config, ... }: { + options = { + config = mkOption { + type = types.attrs; + description = "The configuration of the Operating System."; + default = builtins.removeAttrs config [ "_module" "config" "linux" "windows" ]; + visible = false; + }; }; + }) + ]; + }; - windows = mkOption { - inherit (windowsVariant) type; - description = "The options for setting up Windows."; - default = {}; - visible = "shallow"; + linuxVariant = osVariant.extendModules { + modules = [ + ({ ... }: { + options = { + secureBoot = mkOption { + type = types.bool; + description = "A value indicating whether the system supports Secure Boot."; + default = false; + }; }; - }; - }); + }) + ]; + }; - description = "Configuration for PortValhalla."; - default = {}; - }; + windowsVariant = osVariant.extendModules { }; + in { + options = { + linux = mkOption { + inherit (linuxVariant) type; + description = "The options for setting up Linux."; + default = { }; + visible = "shallow"; + }; + + windows = mkOption { + inherit (windowsVariant) type; + description = "The options for setting up Windows."; + default = { }; + visible = "shallow"; + }; + }; + }); + + description = "Configuration for PortValhalla."; + default = { }; }; - } \ No newline at end of file + }; +} diff --git a/lib/modules/packages/git.nix b/lib/modules/packages/git.nix index 7d98b739..576fbece 100644 --- a/lib/modules/packages/git.nix +++ b/lib/modules/packages/git.nix @@ -1,59 +1,55 @@ { lib, ... }: - let - inherit (lib) - mkOption - types - ; +let + inherit (lib) mkOption types; - gitType = types.submodule ( - { ... }: { - options = { - defaultBranch = mkOption { - type = types.nullOr types.str; - description = "The name of the default branch in newly created repositories."; - default = null; - }; - - flow = { - mainBranch = mkOption { - type = types.nullOr types.str; - description = "The name of the stable branch in git flow."; - default = null; - }; - - devBranch = mkOption { - type = types.nullOr types.str; - description = "The name of the development branch in git flow."; - default = null; - }; - }; - - aliases = mkOption { - type = types.attrsOf types.str; - description = "The git command aliases to install."; - default = {}; - }; - }; - }); - - gitOption = mkOption { - type = gitType; - description = "The git related options."; - default = {}; - }; - in { + gitType = types.submodule ({ ... }: { options = { - valhalla = { - git = gitOption; + defaultBranch = mkOption { + type = types.nullOr types.str; + description = "The name of the default branch in newly created repositories."; + default = null; + }; - users = mkOption { - type = types.attrsOf (types.submodule ( - { ... }: { - options = { - git = gitOption; - }; - })); + flow = { + mainBranch = mkOption { + type = types.nullOr types.str; + description = "The name of the stable branch in git flow."; + default = null; + }; + + devBranch = mkOption { + type = types.nullOr types.str; + description = "The name of the development branch in git flow."; + default = null; }; }; + + aliases = mkOption { + type = types.attrsOf types.str; + description = "The git command aliases to install."; + default = { }; + }; }; - } + }); + + gitOption = mkOption { + type = gitType; + description = "The git related options."; + default = { }; + }; +in { + options = { + valhalla = { + git = gitOption; + + users = mkOption { + type = types.attrsOf (types.submodule ( + { ... }: { + options = { + git = gitOption; + }; + })); + }; + }; + }; +} diff --git a/lib/modules/packages/nextcloud.nix b/lib/modules/packages/nextcloud.nix index 34d35d9a..dce0e09f 100644 --- a/lib/modules/packages/nextcloud.nix +++ b/lib/modules/packages/nextcloud.nix @@ -1,44 +1,39 @@ { lib, ... }: - let - inherit (lib) - mkEnableOption - mkOption - types - ; +let + inherit (lib) mkEnableOption mkOption types; - syncType = types.submodule ( - { ... }: { - options = { - remotePath = mkOption { - type = types.str; - description = "The path to the folder on the cloud to sync."; - }; - - localPath = mkOption { - type = types.str; - description = "The path to sync the cloud content to."; - }; - - virtualFiles = (mkEnableOption "virtual file support") // { - default = true; - }; - }; - }); - in { + syncType = types.submodule ({ ... }: { options = { - valhalla.windows.users = mkOption { - type = types.attrsOf (types.submodule ( - { ... }: { - options = { - nextcloud = { - folderSyncs = mkOption { - type = types.listOf syncType; - description = "The folders to synchronize."; - default = []; - }; - }; - }; - })); + remotePath = mkOption { + type = types.str; + description = "The path to the folder on the cloud to sync."; + }; + + localPath = mkOption { + type = types.str; + description = "The path to sync the cloud content to."; + }; + + virtualFiles = (mkEnableOption "virtual file support") // { + default = true; }; }; - } \ No newline at end of file + }); +in { + options = { + valhalla.windows.users = mkOption { + type = types.attrsOf (types.submodule ( + { ... }: { + options = { + nextcloud = { + folderSyncs = mkOption { + type = types.listOf syncType; + description = "The folders to synchronize."; + default = [ ]; + }; + }; + }; + })); + }; + }; +} diff --git a/lib/modules/packages/oh-my-posh.nix b/lib/modules/packages/oh-my-posh.nix index 6495d5fa..eb9f7ab0 100644 --- a/lib/modules/packages/oh-my-posh.nix +++ b/lib/modules/packages/oh-my-posh.nix @@ -1,55 +1,52 @@ { lib, ... }: - let - inherit (lib) - mkOption - types - ; +let + inherit (lib) mkOption types; - themeType = types.submodule ( - { config, ... }: { - options = { - source = mkOption { - type = types.path; - description = "The path to the oh-my-posh theme to use."; - }; - - name = mkOption { - type = types.nullOr types.str; - description = "The name of the theme."; - default = lib.strings.removeSuffix ".omp" (lib.strings.removeSuffix ".json" (builtins.baseNameOf config.source)); - }; + themeType = types.submodule ( + { config, ... }: { + options = { + source = mkOption { + type = types.path; + description = "The path to the oh-my-posh theme to use."; }; - }); - ompType = types.submodule ( - { config, ... }: { - options = { - theme = mkOption { - type = types.nullOr (types.either types.str themeType); - description = "The default theme."; - default = null; - }; - - additionalThemes = mkOption { - type = types.listOf themeType; - description = "A set of additional themes to install."; - default = []; - }; + name = mkOption { + type = types.nullOr types.str; + description = "The name of the theme."; + default = lib.strings.removeSuffix ".omp" (lib.strings.removeSuffix ".json" (builtins.baseNameOf config.source)); }; - }); - in { - options = { - valhalla.users = mkOption { - type = types.attrsOf (types.submodule ( - { ... }: { - options = { - oh-my-posh = mkOption { - type = ompType; - description = "The Oh My Posh configuration to apply."; - default = {}; - }; - }; - })); }; + }); + + ompType = types.submodule ( + { config, ... }: { + options = { + theme = mkOption { + type = types.nullOr (types.either types.str themeType); + description = "The default theme."; + default = null; + }; + + additionalThemes = mkOption { + type = types.listOf themeType; + description = "A set of additional themes to install."; + default = [ ]; + }; + }; + }); +in { + options = { + valhalla.users = mkOption { + type = types.attrsOf (types.submodule ( + { ... }: { + options = { + oh-my-posh = mkOption { + type = ompType; + description = "The Oh My Posh configuration to apply."; + default = { }; + }; + }; + })); }; - } \ No newline at end of file + }; +} diff --git a/lib/modules/packages/rclone.nix b/lib/modules/packages/rclone.nix index 78a02a81..90c56d6a 100644 --- a/lib/modules/packages/rclone.nix +++ b/lib/modules/packages/rclone.nix @@ -1,40 +1,37 @@ { lib, ... }: - let - inherit (lib) - mkOption - types - ; +let + inherit (lib) mkOption types; - syncType = types.submodule ( - { ... }: { - options = { - dirName = mkOption { - type = types.str; - description = "The name of the directory to sync the remote files to."; - }; - - cacheDuration = mkOption { - type = types.nullOr types.str; - description = "The amount of time to keep cached files."; - default = null; - }; + syncType = types.submodule ( + { ... }: { + options = { + dirName = mkOption { + type = types.str; + description = "The name of the directory to sync the remote files to."; }; - }); - in { - options = { - valhalla.linux.users = mkOption { - type = types.attrsOf (types.submodule ( - { ... }: { - options = { - rclone = { - configurations = mkOption { - type = types.attrsOf syncType; - description = "The configurations of the rclone mounts."; - default = {}; - }; + + cacheDuration = mkOption { + type = types.nullOr types.str; + description = "The amount of time to keep cached files."; + default = null; + }; + }; + }); +in { + options = { + valhalla.linux.users = mkOption { + type = types.attrsOf (types.submodule ( + { ... }: { + options = { + rclone = { + configurations = mkOption { + type = types.attrsOf syncType; + description = "The configurations of the rclone mounts."; + default = { }; }; }; - })); - }; + }; + })); }; - } + }; +} diff --git a/lib/modules/partition/choose-disk.fish b/lib/modules/partition/choose-disk.fish index 17d9d6ac..09fa3216 100644 --- a/lib/modules/partition/choose-disk.fish +++ b/lib/modules/partition/choose-disk.fish @@ -16,16 +16,16 @@ function chooseDisk -a outFile message selectScript cat | while read disk set -l diskInfo (string split -n " " $disk) - if contains "$diskInfo[3]" "disk" + if contains "$diskInfo[3]" disk set -a disks "$disk" end end end - select "$header" "$outFile" "$message" "No valid disk found!" "$(string collect $disks)" "false" + select "$header" "$outFile" "$message" "No valid disk found!" "$(string collect $disks)" false and begin set -l disk (string split -n " " (cat "$outFile")) - echo "/dev/$disk[1]" > $outFile + echo "/dev/$disk[1]" >$outFile return end end diff --git a/lib/modules/partition/confirm.fish b/lib/modules/partition/confirm.fish index 077cbb84..c44e74e6 100644 --- a/lib/modules/partition/confirm.fish +++ b/lib/modules/partition/confirm.fish @@ -5,18 +5,19 @@ function confirm -a message default while true read -l value -P "$message $options " or exit 1 + set value (string lower "$value") if [ -z "$value" ] set value $default end - if contains "$value" "0" "false" "n" "no" + if contains "$value" 0 false n no false return end - if contains "$value" "1" "true" "y" "yes" + if contains "$value" 1 true y yes true return end diff --git a/lib/modules/partition/disks.nix b/lib/modules/partition/disks.nix index e5ea6993..e8764a2f 100644 --- a/lib/modules/partition/disks.nix +++ b/lib/modules/partition/disks.nix @@ -1,376 +1,353 @@ { lib, config, ... }: - let - inherit (lib) - types - mkOption - ; +let + inherit (lib) types mkOption; - fs = import ./fs.nix; + fs = import ./fs.nix; - diskListVarName = "myDisks"; - isSwap = partition: builtins.elem partition.type [fs.swap 19]; + diskListVarName = "myDisks"; + isSwap = partition: builtins.elem partition.type [ fs.swap 19 ]; - probeScript = builtins.concatStringsSep "\n" [ - "partprobe 2> /dev/null || true" - "udevadm trigger" - ]; + probeScript = builtins.concatStringsSep "\n" [ + "partprobe 2> /dev/null || true" + "udevadm trigger" + ]; - mkDiskType = osDisk: types.submodule ( - { config, name, ... }: { - options = { - id = mkOption { - type = types.str; - description = "The internal identifier of the disk."; - internal = true; - }; - - wipe = mkOption { - type = types.bool; - description = "A value indicating whether the disk should be wiped."; - default = !(lib.lists.any (_: _.keepExisting) (builtins.attrValues config.partitions)); - }; - - deviceName = mkOption { - type = types.nullOr types.str; - description = "The name of the device."; - default = if osDisk then null else name; - }; - - devicePath = mkOption { - type = - if osDisk - then types.nullOr types.str - else types.str; - description = "The path to the device."; - default = - if osDisk && config.deviceName == null - then null - else "/dev/${config.deviceName}"; - }; - - deviceScript = mkOption { - type = types.str; - description = "A command for loading the device path into the device variable"; - internal = true; - }; - - deviceVariable = mkOption { - type = types.str; - description = "The name of the variable holding the name of the disk"; - internal = true; - }; - - partitions = mkOption { - type = types.attrsOf (types.nullOr partitionType); - description = "The partitions of the disk."; - default = {}; - }; - - script = mkOption { - type = types.str; - description = "The script for formatting the disk."; - }; + mkDiskType = osDisk: types.submodule ( + { config, name, ... }: { + options = { + id = mkOption { + type = types.str; + description = "The internal identifier of the disk."; + internal = true; }; - config = - let - diskVarName = "${diskListVarName}[${config.id}]"; - diskVar = ''''${${diskVarName}}''; - - diskSelector = '' - result="$(mktemp)" - fish ${./choose-disk.fish} "$result" "Which disk do you wish to install the OS on?" ${./select.fish} - ${diskVarName}="$(cat "$result")" - ''; - - partitions = lib.lists.sortOn - (_: _.index) - (builtins.filter (_: _ != null) (builtins.attrValues config.partitions)); - - mkType = type: - lib.strings.escapeShellArg ( - if builtins.isInt type - then "${lib.trivial.toHexString type}" - else type); - - fdiskCommand = arguments: "sudo sfdisk ${arguments}"; - fdiskScript = script: append: "echo ${script} | ${fdiskCommand "${if append then "--append" else ""} ${diskVar}"}"; - wipeScript = script: fdiskScript script false; - appendScript = script: fdiskScript script true; - - cleanup = lib.strings.concatLines (builtins.map - (partition: "${fdiskCommand "--delete ${diskVar} ${toString partition.index}"} || true") - (builtins.filter (_: !_.keepExisting) partitions)); - - fdiskCommands = lib.strings.concatLines ( - lib.optionals config.wipe [ - cleanup - (wipeScript "label: gpt") - ] ++ - (builtins.concatMap ( - partition: - let - inherit (partition) - format - index - keepExisting - label - sizeScript - type - ; - - partVarName = "myPartition"; - partVar = ''''${${partVarName}}''; - - sizeOption = '' - ${sizeScript} | sed -e "s/.*[^[:space:]]/size=\0/" - ''; - - formatScripts = { - ${fs.ext4} = "mkfs.ext4 -F ${partVar}"; - ${fs.swap} = "mkswap ${partVar}"; - ${fs.ntfs} = "mkfs.ntfs -F ${partVar}"; - ${fs.fat32} = "mkfs.fat -F 32 ${partVar}"; - }; - - labelScripts = { - ${fs.ext4} = label: "e2label ${partVar} ${label}"; - ${fs.swap} = label: "swaplabel ${partVar} --label ${label}"; - ${fs.ntfs} = label: "ntfslabel ${partVar} ${label}"; - ${fs.fat32} = label: "fatlabel ${partVar} ${label}"; - }; - - create = lib.strings.concatLines [ - (appendScript "${toString index}: \"$(${sizeOption})\" type=${mkType type}") - probeScript - "sudo ${formatScripts.${format}}" - ]; - - fallback = '' - if ! { ls "${partVar}" 2>&1; } > /dev/null - then - ${create} - fi - ''; - in [ - ''local diskPath="$(find -L /dev/disk/by-diskseq -samefile ${diskVar})"'' - ''local ${partVarName}="$diskPath-part${toString index}"'' - (if keepExisting then fallback else create) - "sudo ${labelScripts.${format} label}" - ]) - partitions) - ); - - fixType = lib.strings.concatLines ( - builtins.concatMap - (partition: lib.optional - (partition.keepExisting && !(builtins.isNull partition.type)) - ''sudo sfdisk --part-type ${diskVar} ${toString partition.index} ${mkType partition.type}'') - partitions); - in { - id = if osDisk then "os" else "disk-${name}"; - deviceVariable = diskVar; - - deviceScript = if osDisk && config.devicePath == null then '' - ${diskSelector} - '' - else '' - ${diskVarName}=${config.devicePath} - ${if osDisk then '' - if [ ! -b ${diskVar} ]; then - function fallback() { - echo "Couldn't find the specified disk \"${diskVar}\"." - if fish ${./confirm.fish} "Do you want to install the OS on another disk?"; then - ${diskSelector} - else - exit 1 - fi - } - fallback; - fi - '' else ""} - ''; - - script = lib.mkDefault '' - function partition() { - ${if (!config.wipe) then cleanup else ""} - - ${fdiskCommands} - ${fixType} - } - - partition - ''; - }; - }); - partitionType = types.submodule ( - { name, config, ... }: { - options = { - index = mkOption { - type = types.int; - description = "The index of the partition."; - }; - - label = mkOption { - type = types.str; - description = "The label of the partition."; - default = name; - }; - - keepExisting = mkOption { - type = types.bool; - description = "A value indicating whether the partition should be left untouched if it already exists."; - default = false; - }; - - type = mkOption { - type = types.nullOr (types.either types.str types.int); - description = "The type of the partition."; - default = null; - }; - - format = mkOption { - type = types.enum (builtins.attrValues fs); - description = "The file system format of the partition."; - default = - if (isSwap config) - then fs.swap - else throw("Partition format not specified."); - }; - - size = mkOption { - type = types.nullOr types.str; - description = "The size of the partition."; - default = null; - }; - - sizeScript = mkOption { - type = types.str; - description = "A script for printing the size to the console."; - internal = true; - }; - - useSwap = mkOption { - type = types.bool; - description = "A value indicating whether this partition should be used as swap."; - default = isSwap config; - }; - - mountPoint = mkOption { - type = types.nullOr types.str; - description = "The mountpoint of the partition."; - default = null; - }; - - mountOptions = mkOption { - type = types.listOf types.str; - description = "The options to apply to the mount."; - default = []; - }; + wipe = mkOption { + type = types.bool; + description = "A value indicating whether the disk should be wiped."; + default = !(lib.lists.any (_: _.keepExisting) (builtins.attrValues config.partitions)); }; - config = { - sizeScript = ( - if isSwap config - then - ''echo "$(cat /proc/meminfo | awk -F " " '/^MemTotal/ { print $2 }' | awk '{ print int((($1 / 1024 / 1024) * 0.75) + 0.5)}')"G'' + deviceName = mkOption { + type = types.nullOr types.str; + description = "The name of the device."; + default = if osDisk then null else name; + }; + + devicePath = mkOption { + type = if osDisk then + types.nullOr types.str + else + types.str; + description = "The path to the device."; + default = if osDisk && config.deviceName == null then + null + else + "/dev/${config.deviceName}"; + }; + + deviceScript = mkOption { + type = types.str; + description = "A command for loading the device path into the device variable"; + internal = true; + }; + + deviceVariable = mkOption { + type = types.str; + description = "The name of the variable holding the name of the disk"; + internal = true; + }; + + partitions = mkOption { + type = types.attrsOf (types.nullOr partitionType); + description = "The partitions of the disk."; + default = { }; + }; + + script = mkOption { + type = types.str; + description = "The script for formatting the disk."; + }; + }; + + config = let + diskVarName = "${diskListVarName}[${config.id}]"; + diskVar = "\${${diskVarName}}"; + + diskSelector = '' + result="$(mktemp)" + fish ${./choose-disk.fish} "$result" "Which disk do you wish to install the OS on?" ${./select.fish} + ${diskVarName}="$(cat "$result")" + ''; + + partitions = lib.lists.sortOn (_: _.index) + (builtins.filter (_: _ != null) + (builtins.attrValues config.partitions)); + + mkType = type: + lib.strings.escapeShellArg ( + if builtins.isInt type then + "${lib.trivial.toHexString type}" else - "echo ${lib.strings.escapeShellArg (toString config.size)}" - ); - }; - } - ); - in { - options = { - valhalla = { - partition = { - rootDir = mkOption { - type = types.str; - description = "The root of the installation directory to mount disks into."; - default = "/mnt"; - }; + type); - os = mkOption { - type = mkDiskType true; - description = "The partition layout of the OS disk."; - }; + fdiskCommand = arguments: "sudo sfdisk ${arguments}"; + fdiskScript = script: append: "echo ${script} | ${fdiskCommand "${if append then "--append" else ""} ${diskVar}"}"; + wipeScript = script: fdiskScript script false; + appendScript = script: fdiskScript script true; - disks = mkOption { - type = types.attrsOf (mkDiskType false); - description = "The additional disks to format."; - default = {}; - }; + cleanup = lib.strings.concatLines (builtins.map + (partition: "${fdiskCommand "--delete ${diskVar} ${toString partition.index}"} || true") + (builtins.filter (_: !_.keepExisting) partitions)); - script = mkOption { - type = types.str; - description = "The script for partitioning the system's disks."; - }; - }; - }; - }; + fdiskCommands = lib.strings.concatLines + (lib.optionals config.wipe [ + cleanup + (wipeScript "label: gpt") + ] ++ (builtins.concatMap ( + partition: + let + inherit (partition) format index keepExisting label sizeScript type; - config = { - valhalla = { - partition = { - script = lib.mkDefault ( - let - cfg = config.valhalla.partition; - inherit (cfg) os rootDir; - inherit (lib.strings) normalizePath; + partVarName = "myPartition"; + partVar = "\${${partVarName}}"; - partPath = part: "/dev/disk/by-label/${part.label}"; - disks = ([os] ++ (builtins.attrValues cfg.disks)); - partitions = (builtins.concatMap (_: (builtins.attrValues _.partitions)) disks); + sizeOption = '' + ${sizeScript} | sed -e "s/.*[^[:space:]]/size=\0/" + ''; - mountScript = lib.strings.concatLines ( - builtins.concatMap - (_: [ - probeScript - (builtins.concatStringsSep " " ([ - "sudo" - "mount" - "--mkdir" - ] ++ (lib.optionals (_.format == "ntfs") [ - "-t" "ntfs3" - ]) ++ [ - (builtins.concatStringsSep " " (builtins.map (_: "-o ${_}") _.mountOptions)) - (partPath _) - (normalizePath "/${rootDir}/${_.mountPoint}") - ])) - ]) - (lib.lists.sortOn - (_: normalizePath "/${_.mountPoint}") - (builtins.filter (_: _.mountPoint != null) partitions))); + formatScripts = { + ${fs.ext4} = "mkfs.ext4 -F ${partVar}"; + ${fs.swap} = "mkswap ${partVar}"; + ${fs.ntfs} = "mkfs.ntfs -F ${partVar}"; + ${fs.fat32} = "mkfs.fat -F 32 ${partVar}"; + }; - swapScript = lib.strings.concatLines ( - builtins.map - (_: '' - ${probeScript} - sudo swapon ${partPath _} - '') - (builtins.filter (_: _.useSwap) partitions)); - in lib.strings.concatLines ([ - "#!/bin/bash" - "set -o errexit" - ] ++ - (builtins.map (_: _.deviceScript) disks) ++ - lib.optionals ((builtins.length disks) > 0) [ - ''echo "$(tput setaf 3)==== WARNING ====$(tput sgr0)"'' - (''echo "Continuing this script will alter the partitions of '' + ( - lib.strings.concatStringsSep ", " (builtins.map (_: "${_.deviceVariable}") (lib.lists.init disks)) - ) + (if (builtins.length disks) > 1 then " and " else "") + (lib.lists.last disks).deviceVariable + ''"'') - '' - if ! fish ${./confirm.fish} "Are you sure you want to continue?" "n"; then - exit 1 + labelScripts = { + ${fs.ext4} = label: "e2label ${partVar} ${label}"; + ${fs.swap} = label: "swaplabel ${partVar} --label ${label}"; + ${fs.ntfs} = label: "ntfslabel ${partVar} ${label}"; + ${fs.fat32} = label: "fatlabel ${partVar} ${label}"; + }; + + create = lib.strings.concatLines [ + (appendScript ''${toString index}: "$(${sizeOption})" type=${mkType type}'') + probeScript + "sudo ${formatScripts.${format}}" + ]; + + fallback = '' + if ! { ls "${partVar}" 2>&1; } > /dev/null + then + ${create} fi - '' - ] ++ - (builtins.map (_: _.script) disks) ++ [ - mountScript - swapScript - ] - )); + ''; + in [ + ''local diskPath="$(find -L /dev/disk/by-diskseq -samefile ${diskVar})"'' + ''local ${partVarName}="$diskPath-part${toString index}"'' + (if keepExisting then fallback else create) + "sudo ${labelScripts.${format} label}" + ]) partitions)); + + fixType = lib.strings.concatLines (builtins.concatMap ( + partition: + lib.optional + (partition.keepExisting && !(builtins.isNull partition.type)) + ''sudo sfdisk --part-type ${diskVar} ${toString partition.index} ${mkType partition.type}'') + partitions); + in { + id = if osDisk then "os" else "disk-${name}"; + deviceVariable = diskVar; + + deviceScript = if osDisk && config.devicePath == null then '' + ${diskSelector} + '' else '' + ${diskVarName}=${config.devicePath} + ${if osDisk then '' + if [ ! -b ${diskVar} ]; then + function fallback() { + echo "Couldn't find the specified disk \"${diskVar}\"." + if fish ${./confirm.fish} "Do you want to install the OS on another disk?"; then + ${diskSelector} + else + exit 1 + fi + } + + fallback + fi + '' else + ""} + ''; + + script = lib.mkDefault '' + function partition() { + ${if (!config.wipe) then cleanup else ""} + + ${fdiskCommands} + ${fixType} + } + + partition + ''; + }; + }); + + partitionType = types.submodule ( + { name, config, ... }: { + options = { + index = mkOption { + type = types.int; + description = "The index of the partition."; + }; + + label = mkOption { + type = types.str; + description = "The label of the partition."; + default = name; + }; + + keepExisting = mkOption { + type = types.bool; + description = "A value indicating whether the partition should be left untouched if it already exists."; + default = false; + }; + + type = mkOption { + type = types.nullOr (types.either types.str types.int); + description = "The type of the partition."; + default = null; + }; + + format = mkOption { + type = types.enum (builtins.attrValues fs); + description = "The file system format of the partition."; + default = if (isSwap config) then + fs.swap + else + throw ("Partition format not specified."); + }; + + size = mkOption { + type = types.nullOr types.str; + description = "The size of the partition."; + default = null; + }; + + sizeScript = mkOption { + type = types.str; + description = "A script for printing the size to the console."; + internal = true; + }; + + useSwap = mkOption { + type = types.bool; + description = "A value indicating whether this partition should be used as swap."; + default = isSwap config; + }; + + mountPoint = mkOption { + type = types.nullOr types.str; + description = "The mountpoint of the partition."; + default = null; + }; + + mountOptions = mkOption { + type = types.listOf types.str; + description = "The options to apply to the mount."; + default = [ ]; + }; + }; + + config = { + sizeScript = (if isSwap config then + ''echo "$(cat /proc/meminfo | awk -F " " '/^MemTotal/ { print $2 }' | awk '{ print int((($1 / 1024 / 1024) * 0.75) + 0.5)}')"G'' + else + "echo ${lib.strings.escapeShellArg (toString config.size)}"); + }; + }); +in { + options = { + valhalla = { + partition = { + rootDir = mkOption { + type = types.str; + description = "The root of the installation directory to mount disks into."; + default = "/mnt"; + }; + + os = mkOption { + type = mkDiskType true; + description = "The partition layout of the OS disk."; + }; + + disks = mkOption { + type = types.attrsOf (mkDiskType false); + description = "The additional disks to format."; + default = { }; + }; + + script = mkOption { + type = types.str; + description = "The script for partitioning the system's disks."; }; }; }; - } + }; + + config = { + valhalla = { + partition = { + script = lib.mkDefault (let + cfg = config.valhalla.partition; + inherit (cfg) os rootDir; + inherit (lib.strings) normalizePath; + partPath = part: "/dev/disk/by-label/${part.label}"; + disks = ([ os ] ++ (builtins.attrValues cfg.disks)); + partitions = (builtins.concatMap (_: (builtins.attrValues _.partitions)) disks); + + mountScript = lib.strings.concatLines (builtins.concatMap ( + _: [ + probeScript + (builtins.concatStringsSep " " ([ + "sudo" + "mount" + "--mkdir" + ] ++ (lib.optionals (_.format == "ntfs") [ + "-t" "ntfs3" + ]) ++ [ + (builtins.concatStringsSep " " (builtins.map (_: "-o ${_}") _.mountOptions)) + (partPath _) + (normalizePath "/${rootDir}/${_.mountPoint}") + ])) + ]) (lib.lists.sortOn + (_: normalizePath "/${_.mountPoint}") + (builtins.filter (_: _.mountPoint != null) partitions))); + + swapScript = lib.strings.concatLines (builtins.map ( + _: '' + ${probeScript} + sudo swapon ${partPath _} + '') (builtins.filter (_: _.useSwap) partitions)); + in lib.strings.concatLines ([ + "#!/bin/bash" + "set -o errexit" + ] + ++ (builtins.map (_: _.deviceScript) disks) + ++ lib.optionals ((builtins.length disks) > 0) [ + ''echo "$(tput setaf 3)==== WARNING ====$(tput sgr0)"'' + (''echo "Continuing this script will alter the partitions of '' + + (lib.strings.concatStringsSep ", " (builtins.map (_: "${_.deviceVariable}") (lib.lists.init disks))) + + (if (builtins.length disks) > 1 then " and " else "") + (lib.lists.last disks).deviceVariable + ''"'') + '' + if ! fish ${./confirm.fish} "Are you sure you want to continue?" "n"; then + exit 1 + fi + '' + ] ++ (builtins.map (_: _.script) disks) ++ [ + mountScript + swapScript + ])); + }; + }; + }; +} diff --git a/lib/modules/partition/select.fish b/lib/modules/partition/select.fish index 2c0f39e4..d19993fd 100644 --- a/lib/modules/partition/select.fish +++ b/lib/modules/partition/select.fish @@ -1,11 +1,11 @@ function select -a header outFile message error choices loop if [ -z "$loop" ] - set loop "true" + set loop true end while true set -l items - + echo "$choices" | while read choice set -a items "$choice" end @@ -24,9 +24,9 @@ function select -a header outFile message error choices loop read -lP "Your choice: " choice or exit 1 - if math "0+$choice" &> /dev/null + if math "0+$choice" &>/dev/null if [ "$choice" -ge 1 ] && [ "$choice" -le "$count" ] - echo "$items[$choice]" > $outFile + echo "$items[$choice]" >$outFile return end end diff --git a/lib/modules/software.nix b/lib/modules/software.nix index e326bdbf..6f65ae04 100644 --- a/lib/modules/software.nix +++ b/lib/modules/software.nix @@ -1,96 +1,85 @@ { lib, config, ... }: - let - inherit (lib) - mkOption - types - ; +let + inherit (lib) mkOption types; + cfg = config.valhalla; +in { + options = { + valhalla = { + software = let + inherit (cfg.software) coding common desktopExperience school server; + in { + essential = mkOption { + type = types.bool; + description = "A value indicating whether essentials should be installed."; + default = true; + }; - cfg = config.valhalla; - in { - options = { - valhalla = { - software = - let - inherit (cfg.software) - coding - common - desktopExperience - school - server - ; - in { - essential = mkOption { - type = types.bool; - description = "A value indicating whether essentials should be installed."; - default = true; - }; + common = mkOption { + type = types.bool; + description = "A value indicating whether common software should be installed."; + default = true; + }; - common = mkOption { - type = types.bool; - description = "A value indicating whether common software should be installed."; - default = true; - }; + server = mkOption { + type = types.bool; + description = "A value indicating whether server applications should be installed."; + default = false; + }; - server = mkOption { - type = types.bool; - description = "A value indicating whether server applications should be installed."; - default = false; - }; + desktopExperience = mkOption { + type = types.bool; + description = "A value indicating whether GUI apps should be installed."; + default = common && !server; + }; - desktopExperience = mkOption { - type = types.bool; - description = "A value indicating whether GUI apps should be installed."; - default = common && !server; - }; + fileSync = mkOption { + type = types.bool; + description = "A value indicating whether file syncs should be installed."; + default = common && !server; + }; - fileSync = mkOption { - type = types.bool; - description = "A value indicating whether file syncs should be installed."; - default = common && !server; - }; + school = mkOption { + type = types.bool; + description = "A value indicating whether software for studies should be installed."; + default = false; + }; - school = mkOption { - type = types.bool; - description = "A value indicating whether software for studies should be installed."; - default = false; - }; + productivity = mkOption { + type = types.bool; + description = "A value indicating whether productivity apps should be installed."; + default = common || school; + }; - productivity = mkOption { - type = types.bool; - description = "A value indicating whether productivity apps should be installed."; - default = common || school; - }; + socialMedia = mkOption { + type = types.bool; + description = "A value indicating whether social media apps should be installed."; + default = common && desktopExperience; + }; - socialMedia = mkOption { - type = types.bool; - description = "A value indicating whether social media apps should be installed."; - default = common && desktopExperience; - }; + media = mkOption { + type = types.bool; + description = "A value indicating whether media apps should be installed."; + default = common && desktopExperience; + }; - media = mkOption { - type = types.bool; - description = "A value indicating whether media apps should be installed."; - default = common && desktopExperience; - }; + gaming = mkOption { + type = types.bool; + description = "A value indicating whether gaming apps should be installed."; + default = common && desktopExperience; + }; - gaming = mkOption { - type = types.bool; - description = "A value indicating whether gaming apps should be installed."; - default = common && desktopExperience; - }; + coding = mkOption { + type = types.bool; + description = "A value indicating whether development apps should be installed."; + default = common; + }; - coding = mkOption { - type = types.bool; - description = "A value indicating whether development apps should be installed."; - default = common; - }; - - python = mkOption { - type = types.bool; - description = "A value indicating whether apps for coding python should be installed."; - default = coding; - }; - }; + python = mkOption { + type = types.bool; + description = "A value indicating whether apps for coding python should be installed."; + default = coding; + }; }; }; - } + }; +} diff --git a/lib/modules/users.nix b/lib/modules/users.nix index 1cea1341..d5c0edd3 100644 --- a/lib/modules/users.nix +++ b/lib/modules/users.nix @@ -1,90 +1,82 @@ { lib, ... }: - let - inherit (lib) - mkOption - types - ; +let + inherit (lib) mkOption types; - capitalize = (import ../text.nix { inherit lib; }).capitalize; + capitalize = (import ../text.nix { inherit lib; }).capitalize; - userType = types.submodule ( - { ... } : { - options = { - displayName = mkOption { - type = types.nullOr types.str; - description = "The human-readable name of the user."; - default = null; - }; - - mailAddress = mkOption { - type = types.nullOr types.str; - description = "The mail address of the user."; - default = null; - }; - - groups = mkOption { - type = types.listOf types.str; - description = "The additional groups of the user."; - default = []; - }; - }; - }); - - linuxUserType = types.submodule ( - { ... }: { - options = { - defaultShell = mkOption { - type = types.nullOr types.str; - description = "The default shell of the user."; - default = null; - }; - }; - }); - - winUserType = types.submodule ( - { ... }: { - options = { - microsoftAccount = mkOption { - type = types.bool; - description = "A value indicating whether this user is a Microsoft Account."; - default = false; - }; - }; - }); - in { - options = { - valhalla = { - users = mkOption { - type = types.attrsOf userType; - description = "The users to create on the machine."; - default = {}; + userType = types.submodule ( + { ... }: { + options = { + displayName = mkOption { + type = types.nullOr types.str; + description = "The human-readable name of the user."; + default = null; }; - linux.users = mkOption { - type = types.attrsOf linuxUserType; + mailAddress = mkOption { + type = types.nullOr types.str; + description = "The mail address of the user."; + default = null; }; - windows = mkOption { - type = types.submoduleWith { - modules = [ - ({ config, options, ... }: { - options = { - users = mkOption { - type = types.attrsOf winUserType; - }; + groups = mkOption { + type = types.listOf types.str; + description = "The additional groups of the user."; + default = [ ]; + }; + }; + }); - winUsers = mkOption { - type = options.users.type; - default = (lib.attrsets.concatMapAttrs ( - name: options: { - ${capitalize name} = options; - }) config.users); - }; + linuxUserType = types.submodule ( + { ... }: { + options = { + defaultShell = mkOption { + type = types.nullOr types.str; + description = "The default shell of the user."; + default = null; + }; + }; + }); + + winUserType = types.submodule ( + { ... }: { + options = { + microsoftAccount = mkOption { + type = types.bool; + description = "A value indicating whether this user is a Microsoft Account."; + default = false; + }; + }; + }); +in { + options = { + valhalla = { + users = mkOption { + type = types.attrsOf userType; + description = "The users to create on the machine."; + default = { }; + }; + + linux.users = mkOption { type = types.attrsOf linuxUserType; }; + + windows = mkOption { + type = types.submoduleWith { + modules = [ + ({ config, options, ... }: { + options = { + users = mkOption { type = types.attrsOf winUserType; }; + + winUsers = mkOption { + type = options.users.type; + default = (lib.attrsets.concatMapAttrs + (name: options: { ${capitalize name} = options; }) + config.users); }; - }) - ]; - }; + }; + }) + ]; }; }; }; - } + }; +} diff --git a/lib/modules/valhalla.nix b/lib/modules/valhalla.nix index 9870fa61..0d9c59c3 100644 --- a/lib/modules/valhalla.nix +++ b/lib/modules/valhalla.nix @@ -1,83 +1,79 @@ { lib, ... }: - let - inherit (lib) - mkOption - types - ; - in { - imports = [ - ./hardware.nix - ./i18n.nix - ./os.nix - ./packages/git.nix - ./packages/nextcloud.nix - ./packages/oh-my-posh.nix - ./packages/rclone.nix - ./partition.nix - ./software.nix - ./users.nix - ./windows.nix - ]; +let inherit (lib) mkOption types; +in { + imports = [ + ./hardware.nix + ./i18n.nix + ./os.nix + ./packages/git.nix + ./packages/nextcloud.nix + ./packages/oh-my-posh.nix + ./packages/rclone.nix + ./partition.nix + ./software.nix + ./users.nix + ./windows.nix + ]; - options = { - valhalla = { - boot = { - efiMountPoint = mkOption { - type = types.str; - description = "The mountpoint of the efi partition."; - default = "/boot"; - }; - - label = mkOption { - type = types.str; - description = "The label of the boot entry."; - default = "OS"; - }; - }; - - hostname = mkOption { + options = { + valhalla = { + boot = { + efiMountPoint = mkOption { type = types.str; - description = "The hostname of the system."; - default = "valhalla"; + description = "The mountpoint of the efi partition."; + default = "/boot"; }; - setupUser = { - name = mkOption { - type = types.str; - description = "The name of the user used to set up the system."; - default = "heimdall"; - }; - - id = mkOption { - type = types.int; - description = "The UID of the user used to set up the system."; - default = 420; - }; - }; - - timeZone = mkOption { - type = types.nullOr types.str; - description = "The time zone of the system."; - default = null; - }; - - keyMap = mkOption { - type = types.nullOr types.str; - description = "The console key map of the system."; - default = null; - }; - - keyboardLayout = mkOption { - type = types.nullOr types.str; - description = "The X11 keyboard layout of the system."; - default = null; - }; - - hidpi = mkOption { - type = types.bool; - description = "A value indicating whether the screen is hidpi."; - default = false; + label = mkOption { + type = types.str; + description = "The label of the boot entry."; + default = "OS"; }; }; + + hostname = mkOption { + type = types.str; + description = "The hostname of the system."; + default = "valhalla"; + }; + + setupUser = { + name = mkOption { + type = types.str; + description = "The name of the user used to set up the system."; + default = "heimdall"; + }; + + id = mkOption { + type = types.int; + description = "The UID of the user used to set up the system."; + default = 420; + }; + }; + + timeZone = mkOption { + type = types.nullOr types.str; + description = "The time zone of the system."; + default = null; + }; + + keyMap = mkOption { + type = types.nullOr types.str; + description = "The console key map of the system."; + default = null; + }; + + keyboardLayout = mkOption { + type = types.nullOr types.str; + description = "The X11 keyboard layout of the system."; + default = null; + }; + + hidpi = mkOption { + type = types.bool; + description = "A value indicating whether the screen is hidpi."; + default = false; + }; }; - } + }; +} diff --git a/lib/modules/windows.nix b/lib/modules/windows.nix index c6ff7c85..e0278f2c 100644 --- a/lib/modules/windows.nix +++ b/lib/modules/windows.nix @@ -1,47 +1,40 @@ { lib, config, ... }: - let - inherit (lib) - mkDefault - mkEnableOption - mkIf - mkOption - types - ; +let + inherit (lib) mkDefault mkEnableOption mkIf mkOption types; + capitalize = (import ../text.nix { inherit lib; }).capitalize; +in { + options = { + valhalla = { + windows = { + dualboot = { + enable = mkEnableOption "dual boot"; - capitalize = (import ../text.nix { inherit lib; }).capitalize; - in { - options = { - valhalla = { - windows = { - dualboot = { - enable = mkEnableOption "dual boot"; - - linuxPercentage = mkOption { - type = types.number; - description = "The percentage of the disk size reserved for Linux."; - }; + linuxPercentage = mkOption { + type = types.number; + description = "The percentage of the disk size reserved for Linux."; }; - - showFileExt = mkOption { - type = types.bool; - description = "A value indicating whether file extensions should be displayed in Windows Explorer."; - default = true; - }; - - legacyIconSpacing = mkEnableOption "legacy icon spacing" // { - default = true; - }; - - dynamicLighting = mkEnableOption "dynamic lighting"; - adware = mkEnableOption "adware"; # Fuck you for displaying ads on an OS I fricking paid for! }; - }; - }; - config = { - valhalla.windows = { - setupUser.name = mkDefault (capitalize config.valhalla.setupUser.name); - dualboot.linuxPercentage = mkIf (!config.valhalla.windows.dualboot.enable) (mkDefault 0); + showFileExt = mkOption { + type = types.bool; + description = "A value indicating whether file extensions should be displayed in Windows Explorer."; + default = true; + }; + + legacyIconSpacing = mkEnableOption "legacy icon spacing" // { + default = true; + }; + + dynamicLighting = mkEnableOption "dynamic lighting"; + adware = mkEnableOption "adware"; # Fuck you for displaying ads on an OS I fricking paid for! }; }; - } + }; + + config = { + valhalla.windows = { + setupUser.name = mkDefault (capitalize config.valhalla.setupUser.name); + dualboot.linuxPercentage = mkIf (!config.valhalla.windows.dualboot.enable) (mkDefault 0); + }; + }; +} diff --git a/lib/packages/archiso.nix b/lib/packages/archiso.nix index 7e5c75a7..9cbc0c2f 100644 --- a/lib/packages/archiso.nix +++ b/lib/packages/archiso.nix @@ -1,30 +1,30 @@ -{ pkgs, fetchFromGitLab, ... }: pkgs.stdenv.mkDerivation ( - rec { - pname = "archiso"; - version = "79"; +{ pkgs, fetchFromGitLab, ... }: +pkgs.stdenv.mkDerivation (rec { + pname = "archiso"; + version = "79"; - src = fetchFromGitLab { - domain = "gitlab.archlinux.org"; - owner = "archlinux"; - repo = pname; - rev = "v${version}"; - sha256 = "5YNzHz9QEK+0x7Qjd2ajyE6gV1gD1MyI0ojZnuafmaw="; - }; + src = fetchFromGitLab { + domain = "gitlab.archlinux.org"; + owner = "archlinux"; + repo = pname; + rev = "v${version}"; + sha256 = "5YNzHz9QEK+0x7Qjd2ajyE6gV1gD1MyI0ojZnuafmaw="; + }; - dontPatchShebangs = true; - preInstall = "export PREFIX=$out"; + dontPatchShebangs = true; + preInstall = "export PREFIX=$out"; - nativeBuildInputs = with pkgs; [ - docutils - git - ]; + nativeBuildInputs = with pkgs; [ + docutils + git + ]; - propagatedBuildInputs = with pkgs; [ - arch-install-scripts - dosfstools - libisoburn - mtools - pacman - squashfsTools - ]; - }) + propagatedBuildInputs = with pkgs; [ + arch-install-scripts + dosfstools + libisoburn + mtools + pacman + squashfsTools + ]; +}) diff --git a/lib/text.nix b/lib/text.nix index a203c3dc..60e4833c 100644 --- a/lib/text.nix +++ b/lib/text.nix @@ -1,9 +1,7 @@ { lib, ... }: { - capitalize = text: - let - chars = lib.strings.stringToCharacters text; - in lib.strings.concatStrings ( - [(lib.strings.toUpper (builtins.elemAt chars 0))] ++ - (lib.lists.drop 1 chars) - ); + capitalize = text: + let chars = lib.strings.stringToCharacters text; + in lib.strings.concatStrings + ([ (lib.strings.toUpper (builtins.elemAt chars 0)) ] + ++ (lib.lists.drop 1 chars)); } diff --git a/profiles/machines/manuel/DerGeret/config.nix b/profiles/machines/manuel/DerGeret/config.nix index 9b56ccbb..6186ab95 100644 --- a/profiles/machines/manuel/DerGeret/config.nix +++ b/profiles/machines/manuel/DerGeret/config.nix @@ -1,7 +1,5 @@ { lib, ... }: { - imports = [ - ../defaults.nix - ]; + imports = [ ../defaults.nix ]; config = { valhalla = { @@ -18,7 +16,7 @@ users.manuel = { microsoftAccount = true; - groups = ["Administrators"]; + groups = [ "Administrators" ]; }; }; @@ -31,7 +29,7 @@ label = "OS"; format = "ntfs"; mountPoint = "/win"; - mountOptions = ["force"]; + mountOptions = [ "force" ]; keepExisting = true; }; }; diff --git a/profiles/machines/manuel/Generic/Arch/config.nix b/profiles/machines/manuel/Generic/Arch/config.nix index 6d33cf8a..b423719b 100644 --- a/profiles/machines/manuel/Generic/Arch/config.nix +++ b/profiles/machines/manuel/Generic/Arch/config.nix @@ -1,7 +1,5 @@ { ... }: { - imports = [ - ../config.nix - ]; + imports = [ ../config.nix ]; config = { valhalla.boot.label = "Arch"; diff --git a/profiles/machines/manuel/Generic/config.nix b/profiles/machines/manuel/Generic/config.nix index 35e20838..54f3c882 100644 --- a/profiles/machines/manuel/Generic/config.nix +++ b/profiles/machines/manuel/Generic/config.nix @@ -1,95 +1,89 @@ { lib, config, ... }: - let - fs = import ../../../../lib/modules/partition/fs.nix; - in { - imports = [ - ../defaults.nix - ]; +let fs = import ../../../../lib/modules/partition/fs.nix; +in { + imports = [ ../defaults.nix ]; - config = { - valhalla = { - partition = { - os = { - partitions = { - Boot = { - index = 1; - type = "uefi"; - size = "+1G"; - format = fs.fat32; - mountPoint = config.valhalla.boot.efiMountPoint; - }; + config = { + valhalla = { + partition = { + os = { + partitions = { + Boot = { + index = 1; + type = "uefi"; + size = "+1G"; + format = fs.fat32; + mountPoint = config.valhalla.boot.efiMountPoint; + }; - Swap = { - index = 2; - type = "swap"; - }; + Swap = { + index = 2; + type = "swap"; + }; - OS = { - index = 3; - label = lib.mkDefault config.valhalla.boot.label; - type = "linux"; - format = fs.ext4; - mountPoint = "/"; - }; + OS = { + index = 3; + label = lib.mkDefault config.valhalla.boot.label; + type = "linux"; + format = fs.ext4; + mountPoint = "/"; }; }; }; + }; - timeZone = "Europe/Zurich"; - keyMap = "de_CH-latin1"; - keyboardLayout = "ch"; + timeZone = "Europe/Zurich"; + keyMap = "de_CH-latin1"; + keyboardLayout = "ch"; - i18n = { - localeSettings = - let defaultLocale = "en_US.UTF-8"; - in { - LANG = "de_CH.UTF-8"; - LANGUAGE = defaultLocale; - LC_MESSAGE = defaultLocale; - }; + i18n = { + localeSettings = let defaultLocale = "en_US.UTF-8"; + in { + LANG = "de_CH.UTF-8"; + LANGUAGE = defaultLocale; + LC_MESSAGE = defaultLocale; + }; + }; + + git = let defaultBranch = "main"; + in { + inherit defaultBranch; + + flow = { + mainBranch = defaultBranch; + devBranch = "dev"; }; - git = - let - defaultBranch = "main"; - in { - inherit defaultBranch; - - flow = { - mainBranch = defaultBranch; - devBranch = "dev"; - }; - - aliases = { - ahfange = "init"; - tuedezue = "add"; - beschuldig = "blame"; - zieh = "pull"; - druck = "push"; - machnah = "clone"; - hol = "fetch"; - zwiigab = "branch"; - buechiih = "commit"; - eich = "rebase"; - erd = "rebase"; - gahufwiifelde = "rebase"; - vergliich = "diff"; - tuezemme = "merge"; - versorg = "stash"; - markier = "tag"; - pflueckoepfel = "cherry-pick"; - pflueckhimbeeri = "cherry-pick"; - buechuus = "checkout"; - quaetsch = "merge --squash"; - pfudle = "push --force"; - beschuldigung = "blame"; - zwiigli = "branch"; - tagebuech = "log"; - versteck = "stash"; - zuestand = "status"; - markierig = "tag"; - }; - }; + aliases = { + ahfange = "init"; + tuedezue = "add"; + beschuldig = "blame"; + zieh = "pull"; + druck = "push"; + machnah = "clone"; + hol = "fetch"; + zwiigab = "branch"; + buechiih = "commit"; + eich = "rebase"; + erd = "rebase"; + gahufwiifelde = "rebase"; + vergliich = "diff"; + tuezemme = "merge"; + versorg = "stash"; + markier = "tag"; + pflueckoepfel = "cherry-pick"; + pflueckhimbeeri = "cherry-pick"; + buechuus = "checkout"; + quaetsch = "merge --squash"; + pfudle = "push --force"; + beschuldigung = "blame"; + zwiigli = "branch"; + tagebuech = "log"; + versteck = "stash"; + zuestand = "status"; + markierig = "tag"; + }; }; }; - } + }; +} diff --git a/profiles/machines/manuel/ManuSurface/Arch/config.nix b/profiles/machines/manuel/ManuSurface/Arch/config.nix index cc9c3e25..e16ebe53 100644 --- a/profiles/machines/manuel/ManuSurface/Arch/config.nix +++ b/profiles/machines/manuel/ManuSurface/Arch/config.nix @@ -1,5 +1,3 @@ { ... }: { - imports = [ - ../config.nix - ]; + imports = [ ../config.nix ]; } diff --git a/profiles/machines/manuel/ManuSurface/config.nix b/profiles/machines/manuel/ManuSurface/config.nix index d8691263..a80bc783 100644 --- a/profiles/machines/manuel/ManuSurface/config.nix +++ b/profiles/machines/manuel/ManuSurface/config.nix @@ -1,7 +1,5 @@ { ... }: { - imports = [ - ../Generic/Arch/config.nix - ]; + imports = [ ../Generic/Arch/config.nix ]; config = { valhalla = { @@ -13,9 +11,7 @@ surfaceBook = true; xoneReceiver = true; - components = [ - "Logitech G903" - ]; + components = [ "Logitech G903" ]; }; partition.os.deviceName = "nvme0n1"; diff --git a/profiles/users/manuel/config.nix b/profiles/users/manuel/config.nix index 79cdeebf..7388f443 100644 --- a/profiles/users/manuel/config.nix +++ b/profiles/users/manuel/config.nix @@ -1,7 +1,5 @@ { ... }: { - imports = [ - ../../../lib/modules/valhalla.nix - ]; + imports = [ ../../../lib/modules/valhalla.nix ]; config = { valhalla = { @@ -40,21 +38,20 @@ windows.users.manuel = { nextcloud = { - folderSyncs = - let - localPath = "C:/tools/RetroArch-Win64"; - remotePath = "/Saved Games/RetroArch"; - in [ - { - remotePath = "${remotePath}/Saves"; - localPath = "${localPath}/saves"; - virtualFiles = false; - } - { - remotePath = "${remotePath}/System"; - localPath = "${localPath}/system"; - } - ]; + folderSyncs = let + localPath = "C:/tools/RetroArch-Win64"; + remotePath = "/Saved Games/RetroArch"; + in [ + { + remotePath = "${remotePath}/Saves"; + localPath = "${localPath}/saves"; + virtualFiles = false; + } + { + remotePath = "${remotePath}/System"; + localPath = "${localPath}/system"; + } + ]; }; }; }; diff --git a/scripts/Arch/Drivers/Surface/main.fish b/scripts/Arch/Drivers/Surface/main.fish index 1e674f46..b185eb72 100755 --- a/scripts/Arch/Drivers/Surface/main.fish +++ b/scripts/Arch/Drivers/Surface/main.fish @@ -4,7 +4,7 @@ begin source "$dir/../../Scripts/software.fish" function installSW -V dir - set -l repo "linux-surface" + set -l repo linux-surface set -l file "/etc/pacman.conf" curl -s https://raw.githubusercontent.com/linux-surface/linux-surface/master/pkg/keys/surface.asc \ @@ -19,7 +19,7 @@ begin "" \ "[$repo]" \ "Server = https://pkg.surfacelinux.com/arch/" - end | sudo tee -a $file > /dev/null + end | sudo tee -a $file >/dev/null sudo pacinst diff --git a/scripts/Arch/Drivers/SurfaceBook2/main.fish b/scripts/Arch/Drivers/SurfaceBook2/main.fish index 8c11b875..64edee8d 100755 --- a/scripts/Arch/Drivers/SurfaceBook2/main.fish +++ b/scripts/Arch/Drivers/SurfaceBook2/main.fish @@ -14,7 +14,7 @@ begin printf %s\n \ "# vim:set ft=sh" \ "MODULES+=(pinctrl_sunrisepoint surface_dtx)" - end | sudo tee /etc/mkinitcpio.conf.d/surface-book-2.conf > /dev/null + end | sudo tee /etc/mkinitcpio.conf.d/surface-book-2.conf >/dev/null fish "$dir/../../../Common/Drivers/SurfaceBook2/main.fish" configure sudo systemctl enable surface-dtx-daemon.service diff --git a/scripts/Arch/OS/install.fish b/scripts/Arch/OS/install.fish index 573da249..4d20e40e 100755 --- a/scripts/Arch/OS/install.fish +++ b/scripts/Arch/OS/install.fish @@ -3,7 +3,7 @@ begin set -l dir (status dirname) function getDeploymentScript -V dir - echo "$dir/../Scripts/deploy.fish"; + echo "$dir/../Scripts/deploy.fish" end function initialize -V dir diff --git a/scripts/Arch/OS/setup.fish b/scripts/Arch/OS/setup.fish index 3f851f6a..4509dbd4 100755 --- a/scripts/Arch/OS/setup.fish +++ b/scripts/Arch/OS/setup.fish @@ -14,7 +14,7 @@ begin function installDrivers -S if isOSEnabled hardware.surfaceBook - pacstrap -K "$mountDir" linux-firmware-marvell; + pacstrap -K "$mountDir" linux-firmware-marvell end end @@ -51,7 +51,7 @@ begin man-pages \ texinfo - and genfstab -U "$mountDir" >> "$mountDir/etc/fstab" + and genfstab -U "$mountDir" >>"$mountDir/etc/fstab" and arch-chroot "$mountDir" systemctl enable NetworkManager and if set -q timezone @@ -72,13 +72,13 @@ begin and begin getOSConfig i18n.localeSettings --json | \ jq --raw-output '[keys[] as $key | "\($key)=\(.[$key])"] | join("\n")' - end | arch-chroot "$mountDir" tee /etc/locale.conf > /dev/null + end | arch-chroot "$mountDir" tee /etc/locale.conf >/dev/null and if set -q keyMap - echo "KEYMAP=$keyMap" | arch-chroot "$mountDir" tee /etc/vconsole.conf > /dev/null + echo "KEYMAP=$keyMap" | arch-chroot "$mountDir" tee /etc/vconsole.conf >/dev/null end - and echo (getOSConfig 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 @@ -105,7 +105,7 @@ begin "[Service]" \ "ExecStart=" \ "ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin root %I \$TERM" - end | arch-chroot "$mountDir" tee "$file" > /dev/null + end | arch-chroot "$mountDir" tee "$file" >/dev/null end if not type -q getInstallerScript diff --git a/scripts/Arch/Scripts/deploy.fish b/scripts/Arch/Scripts/deploy.fish index 7c4dd403..cf7034d2 100644 --- a/scripts/Arch/Scripts/deploy.fish +++ b/scripts/Arch/Scripts/deploy.fish @@ -3,7 +3,7 @@ function deploySoftware -d "Deploys a the specified software action" -a action . "$dir/software.fish" if [ -z "$action" ] - set action "install" + set action install end set -l isInstall ( diff --git a/scripts/Arch/Software/Pennywise/main.fish b/scripts/Arch/Software/Pennywise/main.fish index 88ce68f2..6fc017b3 100755 --- a/scripts/Arch/Software/Pennywise/main.fish +++ b/scripts/Arch/Software/Pennywise/main.fish @@ -14,7 +14,7 @@ begin set -l indicator "$pattern$patch" set -l file /usr/share/applications/pennywise.desktop - if ! grep "$indicator" "$file" > /dev/null + if ! grep "$indicator" "$file" >/dev/null sudo sed -i "/$pattern/s/$pattern/\0 --no-sandbox/" "$file" end end diff --git a/scripts/Arch/Software/base-devel/main.fish b/scripts/Arch/Software/base-devel/main.fish index df90859e..01243a66 100755 --- a/scripts/Arch/Software/base-devel/main.fish +++ b/scripts/Arch/Software/base-devel/main.fish @@ -16,7 +16,7 @@ begin printf %s\n \ "OPTIONS+=(!debug)" \ "MAKEFLAGS=\"-j\$(nproc)\"" - end | sudo tee "$customFile" > /dev/null + end | sudo tee "$customFile" >/dev/null end end diff --git a/scripts/Arch/Software/logo-ls/main.fish b/scripts/Arch/Software/logo-ls/main.fish index 1f4c5581..d2ac72ac 100755 --- a/scripts/Arch/Software/logo-ls/main.fish +++ b/scripts/Arch/Software/logo-ls/main.fish @@ -11,7 +11,7 @@ begin if not type -q logo-ls begin - pushd "$contextRoot" > /dev/null + pushd "$contextRoot" >/dev/null yay -G -f "$pkgName" cd "$pkgName" cp "$dirName/$patchName" . @@ -27,7 +27,7 @@ begin PKGBUILD makepkg --noconfirm -si --force - popd > /dev/null + popd >/dev/null end rm -rf "$contextRoot" diff --git a/scripts/Arch/Software/nvidia-dkms/main.fish b/scripts/Arch/Software/nvidia-dkms/main.fish index 2b587e86..0af2efc2 100755 --- a/scripts/Arch/Software/nvidia-dkms/main.fish +++ b/scripts/Arch/Software/nvidia-dkms/main.fish @@ -18,8 +18,8 @@ begin ' if [ "${HOOKS[i]}" = "kms" ]; then' \ ' unset "HOOKS[i]"' \ " fi" \ - "done" - end | sudo tee /etc/mkinitcpio.conf.d/nvidia.conf > /dev/null + done + end | sudo tee /etc/mkinitcpio.conf.d/nvidia.conf >/dev/null fish "$dir/../../../Common/Software/nvidia-dkms/main.fish" configure end diff --git a/scripts/Arch/Software/openssh/main.fish b/scripts/Arch/Software/openssh/main.fish index 493225a1..663b7c4b 100755 --- a/scripts/Arch/Software/openssh/main.fish +++ b/scripts/Arch/Software/openssh/main.fish @@ -16,7 +16,7 @@ begin printf %s\n \ "#!/bin/bash" \ 'export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"' - end | sudo tee "/etc/profile.d/openssh.sh" > /dev/null + end | sudo tee "/etc/profile.d/openssh.sh" >/dev/null end runInstaller $argv diff --git a/scripts/Arch/Software/steam/main.fish b/scripts/Arch/Software/steam/main.fish index 5195dba3..919eff97 100644 --- a/scripts/Arch/Software/steam/main.fish +++ b/scripts/Arch/Software/steam/main.fish @@ -16,7 +16,7 @@ begin printf %s\n \ "#!/bin/bash" \ "export STEAM_FORCE_DESKTOPUI_SCALING=2.0" - end | sudo tee /etc/profile.d/steam.sh > /dev/null + end | sudo tee /etc/profile.d/steam.sh >/dev/null end end diff --git a/scripts/Arch/Software/sudo/main.fish b/scripts/Arch/Software/sudo/main.fish index 0c012615..51f4c1f5 100755 --- a/scripts/Arch/Software/sudo/main.fish +++ b/scripts/Arch/Software/sudo/main.fish @@ -8,7 +8,7 @@ begin end function configureSW - echo "%wheel ALL=(ALL:ALL) ALL" | sudo tee /etc/sudoers.d/wheel > /dev/null + echo "%wheel ALL=(ALL:ALL) ALL" | sudo tee /etc/sudoers.d/wheel >/dev/null end runInstaller $argv diff --git a/scripts/Arch/Software/vscode/main.fish b/scripts/Arch/Software/vscode/main.fish index 6447314b..79655a1c 100755 --- a/scripts/Arch/Software/vscode/main.fish +++ b/scripts/Arch/Software/vscode/main.fish @@ -11,7 +11,7 @@ begin set homeDir ~"$user" set flags -u "$user" else - set homeDir "/etc/skel" + set homeDir /etc/skel end for bin in $bins @@ -19,7 +19,7 @@ begin begin set -l file "$homeDir/.config/$bin-flags.conf" sudo $flags mkdir -p (dirname "$file") - echo "--touch-events" | sudo $flags tee "$file" > /dev/null + echo --touch-events | sudo $flags tee "$file" >/dev/null end end end diff --git a/scripts/Arch/Software/waydroid/main.fish b/scripts/Arch/Software/waydroid/main.fish index 77922114..39d859ab 100755 --- a/scripts/Arch/Software/waydroid/main.fish +++ b/scripts/Arch/Software/waydroid/main.fish @@ -5,15 +5,15 @@ begin function installSW yayinst ( - # Waydroid prerequisite: https://wiki.archlinux.org/title/Waydroid#DKMS_modules - ) binder_linux-dkms \ - waydroid ( - # For installing ARM suppot on waydroid - ) waydroid-script-git ( - # Clipboard support: https://wiki.archlinux.org/title/Waydroid#Failed_to_start_Clipboard_manager_service - ) python-pyclip ( - # Wayland clipboard support: https://github.com/spyoungtech/pyclip?tab=readme-ov-file#linux - ) wl-clipboard + # Waydroid prerequisite: https://wiki.archlinux.org/title/Waydroid#DKMS_modules + ) binder_linux-dkms \ + waydroid ( + # For installing ARM suppot on waydroid + ) waydroid-script-git ( + # Clipboard support: https://wiki.archlinux.org/title/Waydroid#Failed_to_start_Clipboard_manager_service + ) python-pyclip ( + # Wayland clipboard support: https://github.com/spyoungtech/pyclip?tab=readme-ov-file#linux + ) wl-clipboard end runInstaller $argv diff --git a/scripts/Arch/Software/xone/main.fish b/scripts/Arch/Software/xone/main.fish index b3ef9ede..b3636541 100755 --- a/scripts/Arch/Software/xone/main.fish +++ b/scripts/Arch/Software/xone/main.fish @@ -8,14 +8,14 @@ begin set -l repo https://github.com/manuth/xone.git yayinst cabextract - if not dkms status --all | grep xone > /dev/null + if not dkms status --all | grep xone >/dev/null git clone "$repo" "$contextRoot" sudo env -C "$contextRoot" ./install.sh --release sudo chmod -R a+rx /usr/src/xone* yes "" | sudo xone-get-firmware.sh end - rm -rf "$contextRoot" > /dev/null + rm -rf "$contextRoot" >/dev/null end runInstaller $argv diff --git a/scripts/Arch/Software/yay/main.fish b/scripts/Arch/Software/yay/main.fish index 4a08ab75..a3c92bef 100755 --- a/scripts/Arch/Software/yay/main.fish +++ b/scripts/Arch/Software/yay/main.fish @@ -9,9 +9,9 @@ begin pacinst git git clone https://aur.archlinux.org/yay.git "$contextRoot" - pushd "$contextRoot" > /dev/null + pushd "$contextRoot" >/dev/null makepkg --noconfirm -si - popd > /dev/null + popd >/dev/null rm -rf "$contextRoot" end diff --git a/scripts/Common/OS/install.fish b/scripts/Common/OS/install.fish index 9414aeb7..9e3100f0 100755 --- a/scripts/Common/OS/install.fish +++ b/scripts/Common/OS/install.fish @@ -8,23 +8,22 @@ if [ (id -u) -eq 0 ] set -l sudoConfig "/etc/sudoers.d/PortValhalla" rm ~/.bash_profile - runHook createUser || \ - begin - echo "Creating setup user"; + runHook createUser || begin + echo "Creating setup user" - and useradd \ - --comment "PortValhalla Setup User" \ - --system \ - --no-user-group \ - --groups nix-users \ - --create-home \ - --uid (getOSConfig setupUser.id --json) \ - "$name" - end + and useradd \ + --comment "PortValhalla Setup User" \ + --system \ + --no-user-group \ + --groups nix-users \ + --create-home \ + --uid (getOSConfig setupUser.id --json) \ + "$name" + end and begin echo "$name ALL=(ALL:ALL) NOPASSWD: ALL" - end > "$sudoConfig" + end >"$sudoConfig" and sudo --preserve-env --set-home --user "$name" "$INSTALLER_SCRIPT" rm "$sudoConfig" diff --git a/scripts/Common/OS/setup.fish b/scripts/Common/OS/setup.fish index 4a34d1f4..fc6e8cf7 100755 --- a/scripts/Common/OS/setup.fish +++ b/scripts/Common/OS/setup.fish @@ -36,8 +36,8 @@ function runSetup end function runInOS -S - set -l script "/root/run_once" - wrapScript $argv | chroot "$mountDir" tee "$script" > /dev/null + set -l script /root/run_once + wrapScript $argv | chroot "$mountDir" tee "$script" >/dev/null and runChroot "$mountDir" chmod +x "$script" and runChroot "$mountDir" "$script" and runChroot "$mountDir" rm "$script" @@ -50,7 +50,7 @@ function runSetup end echo "Partitioning drives..." - and getOSConfig partition.script > "$script" + and getOSConfig partition.script >"$script" and "$script" and rm "$script" @@ -83,7 +83,7 @@ function runSetup "CONFIG_NAME=$(string escape "$CONFIG_NAME")" \ (string escape $script)) - end | runChroot "$mountDir" tee /root/.bash_profile > /dev/null + end | runChroot "$mountDir" tee /root/.bash_profile >/dev/null and echo "Setup finished!" and echo "This machine will reboot in 5 seconds..." diff --git a/scripts/Common/OS/users.fish b/scripts/Common/OS/users.fish index bc9a7e51..fb02284d 100755 --- a/scripts/Common/OS/users.fish +++ b/scripts/Common/OS/users.fish @@ -12,7 +12,7 @@ for name in (echo "$users" | jq '.[]' --raw-output0 | string split0) getUserConfig "$name" "$config" $argv[2..] end - set -l groups (getUserInfo groups --apply 'builtins.concatStringsSep ","'); + set -l groups (getUserInfo groups --apply 'builtins.concatStringsSep ","') set -l displayName (getUserInfo displayName --json) set -l shell (getUserInfo defaultShell --json) @@ -28,7 +28,7 @@ for name in (echo "$users" | jq '.[]' --raw-output0 | string split0) end ) "$name" - if echo "$shell" | jq --exit-status > /dev/null + if echo "$shell" | jq --exit-status >/dev/null sudo chsh "$name" --shell (which (echo "$shell" | jq --raw-output)) end diff --git a/scripts/Common/Scripts/BrowserAutomation.ps1 b/scripts/Common/Scripts/BrowserAutomation.ps1 index bdc09886..4b479396 100644 --- a/scripts/Common/Scripts/BrowserAutomation.ps1 +++ b/scripts/Common/Scripts/BrowserAutomation.ps1 @@ -82,7 +82,8 @@ $null = New-Module { } return $false; - } else { + } + else { return $true; } }; @@ -145,10 +146,11 @@ $null = New-Module { if ($ButtonSelector -is [string]) { $selector = [OpenQA.Selenium.By]::CssSelector($ButtonSelector); - } else { + } + else { $selector = $ButtonSelector; } - + [OpenQA.Selenium.IWebElement] $element = $null; for ($i = 0; $i -lt 5; $i++) { @@ -156,7 +158,8 @@ $null = New-Module { if ($element) { break; - } else { + } + else { Start-Sleep 1; } } @@ -167,7 +170,8 @@ $null = New-Module { if ($element) { $Browser.FindElement($selector).Click(); - } else { + } + else { Write-Error "Unable to find download button!"; } }; diff --git a/scripts/Common/Scripts/Config.ps1 b/scripts/Common/Scripts/Config.ps1 index 57a93f68..d0cb3034 100644 --- a/scripts/Common/Scripts/Config.ps1 +++ b/scripts/Common/Scripts/Config.ps1 @@ -16,7 +16,8 @@ $null = New-Module { $profiles = & { if (-not $IsWindows -or (Test-Command "wsl")) { return Invoke-ConfigScript "getProfiles"; - } else { + } + else { return Get-ChildItem "$PSScriptRoot/../../../.config" | ForEach-Object { Split-Path -LeafBase $_ }; } }; @@ -36,7 +37,8 @@ $null = New-Module { "Which profile do you wish to set up?"; } } - } else { + } + else { "Please select a profile:"; } }), @@ -51,7 +53,8 @@ $null = New-Module { if ($choice -eq $profiles.Count) { exit; - } else { + } + else { $env:CONFIG_NAME = $profiles[$choice]; } } @@ -75,7 +78,8 @@ $null = New-Module { if (-not $IsWindows) { $escapedPath = (fish -c 'string escape $argv' "$scriptPath"); fish -c ". $escapedPath; $Script"; - } else { + } + else { if (-not $env:VALHALLA_FLAKE_ROOT) { $cleanup = { }; $projectRoot = "$PSScriptRoot/../../.."; @@ -98,18 +102,21 @@ $null = New-Module { if (-not $?) { Write-Error "The configuration could not be retrieved!"; - } else { + } + else { $output; } } - } + }; if (-not ($output -and ($output | Test-Json))) { Write-Error "The value ``$output`` is not valid JSON."; - } else { + } + else { $output | ConvertFrom-Json; } - } else { + } + else { $null; } } @@ -189,7 +196,8 @@ $null = New-Module { if ((Get-Users) -contains $UserName) { Get-Config "$(Get-UserConfigRoot).$UserName.$Name"; - } else { + } + else { return $null; } } diff --git a/scripts/Common/Scripts/Operations.ps1 b/scripts/Common/Scripts/Operations.ps1 index 72cf2e75..1b803f20 100644 --- a/scripts/Common/Scripts/Operations.ps1 +++ b/scripts/Common/Scripts/Operations.ps1 @@ -21,17 +21,18 @@ $null = New-Module { $modules = @( @("PSScriptAnalyzer") ) + (& { - if (-not $IsWindows) { - @() - } else { - @( - @("KnownFolders"), - @("PSWindowsUpdate"), - @("LocalAccounts", $true), - @("NuGet") - ) - } - }); + if (-not $IsWindows) { + @(); + } + else { + @( + @("KnownFolders"), + @("PSWindowsUpdate"), + @("LocalAccounts", $true), + @("NuGet") + ); + } + }); for ($i = 0; $i -lt $modules.Count; $i++) { if ($modules[$i] -is [string]) { @@ -185,7 +186,7 @@ $null = New-Module { $command = $args[0]; $flags = ($args | Select-Object -Skip 1); & $command @flags; - } -args $ArgumentList + } -args $ArgumentList; } New-Alias -Force "sudo" -Scope Global Invoke-Sudo; @@ -284,12 +285,13 @@ $null = New-Module { $initialized = $true; } - } + }; } if ($taskPending) { Start-OneShot; - } else { + } + else { & $Action; } diff --git a/scripts/Common/Scripts/Scripting.ps1 b/scripts/Common/Scripts/Scripting.ps1 index 29ac0567..40de8b79 100644 --- a/scripts/Common/Scripts/Scripting.ps1 +++ b/scripts/Common/Scripts/Scripting.ps1 @@ -33,19 +33,19 @@ function ConvertTo-Injection { #> function Write-PSScript { param( - [Parameter(Mandatory=$true)] - [Parameter(ParameterSetName="Common")] - [Parameter(ParameterSetName="Replace")] - [Parameter(ParameterSetName="Append")] + [Parameter(Mandatory = $true)] + [Parameter(ParameterSetName = "Common")] + [Parameter(ParameterSetName = "Replace")] + [Parameter(ParameterSetName = "Append")] [string] $FileName, - [Parameter(Mandatory=$true)] - [Parameter(ParameterSetName="Common")] - [Parameter(ParameterSetName="Replace")] - [Parameter(ParameterSetName="Append")] + [Parameter(Mandatory = $true)] + [Parameter(ParameterSetName = "Common")] + [Parameter(ParameterSetName = "Replace")] + [Parameter(ParameterSetName = "Append")] [string] $Script, - [Parameter(ParameterSetName="Replace", Mandatory=$true)] + [Parameter(ParameterSetName = "Replace", Mandatory = $true)] [switch] $Replace, - [Parameter(ParameterSetName="Append", Mandatory=$true)] + [Parameter(ParameterSetName = "Append", Mandatory = $true)] [switch] $Append ) @@ -61,10 +61,12 @@ function Write-PSScript { if ($exists -and ($Append.IsPresent)) { Add-Content -Force $FileName "`n$content"; - } else { + } + else { if ((-not $exists) -or $Replace.IsPresent) { Set-Content -Force $FileName $content; - } else { + } + else { Write-Host "The file ``$FileName`` already exists!"; } } diff --git a/scripts/Common/Scripts/Software.ps1 b/scripts/Common/Scripts/Software.ps1 index 93adc004..223db6ea 100644 --- a/scripts/Common/Scripts/Software.ps1 +++ b/scripts/Common/Scripts/Software.ps1 @@ -25,7 +25,8 @@ $null = New-Module { [InstallerAction] $Action = & { if ($null -ne $Action) { $Action; - } else { + } + else { [InstallerAction]::Install; } }; @@ -47,7 +48,8 @@ $null = New-Module { if ($null -ne $Name) { $DisplayName = "``$Name``"; - } else { + } + else { $DisplayName = "unknown software"; } @@ -55,14 +57,14 @@ $null = New-Module { $Context ??= @{ }; $argumentList = @{ - name = $Name; + name = $Name; installer = $installHandler; arguments = $Arguments; - context = $Context; + context = $Context; }; switch ($Action) { - ([InstallerAction]::Backup) { + ([InstallerAction]::Backup) { if ($Backup) { Write-Host "Backing up $DisplayName…"; & $Backup @argumentList; diff --git a/scripts/Common/Scripts/config.fish b/scripts/Common/Scripts/config.fish index 41dfdd8e..afb0628d 100755 --- a/scripts/Common/Scripts/config.fish +++ b/scripts/Common/Scripts/config.fish @@ -6,7 +6,7 @@ end function selectProfile -S -a result source "$(status dirname)/../../../lib/modules/partition/select.fish" set -l file (mktemp) - set -l header "NAME" + set -l header NAME set -l profiles getProfiles | jq ".[]" --raw-output0 | string split0 | while read profile @@ -23,7 +23,7 @@ function selectProfile -S -a result end function getProfiles -S - source "$(status dirname)/eval-flake.fish"; + source "$(status dirname)/eval-flake.fish" evalFlake "" "" --apply "builtins.attrNames" --json end @@ -48,12 +48,12 @@ function getUsers -S getAttributes "$(getOSConfigRoot).users" end -function getUserConfig -S -a name property +function getUserConfig -S -a name property getOSConfig "users.$name.$property" $argv[3..] end function isSet -S -a property - not test "$(getConfig "$property" --json)" = "null" + not test "$(getConfig "$property" --json)" = null end function isOSSet -S -a property @@ -65,7 +65,7 @@ function isUserSet -S -a name property end function isEnabled -S -a property - getConfig "$property" --json | jq --exit-status > /dev/null + getConfig "$property" --json | jq --exit-status >/dev/null end function isOSEnabled -S -a property diff --git a/scripts/Common/Scripts/eval-flake.fish b/scripts/Common/Scripts/eval-flake.fish index 767c7caf..5ab352fd 100755 --- a/scripts/Common/Scripts/eval-flake.fish +++ b/scripts/Common/Scripts/eval-flake.fish @@ -1,8 +1,8 @@ #!/bin/env fish function evalFlake --argument-names config property set -l argv $argv[3..] - set -l flakePath "$(realpath (status dirname))/../../.."; - argparse --ignore-unknown "apply=" "json" -- $argv + set -l flakePath "$(realpath (status dirname))/../../.." + argparse --ignore-unknown "apply=" json -- $argv if [ -z "$_flag_json" ] set -a argv --raw @@ -24,7 +24,7 @@ function evalFlake --argument-names config property end PROPERTY="$property" \ - nix eval --impure --extra-experimental-features "nix-command flakes" \ + nix eval --impure --extra-experimental-features "nix-command flakes" \ --apply "$_flag_apply" \ "$flakePath#valhalla$config" \ $argv diff --git a/scripts/Common/Scripts/profile-base.fish b/scripts/Common/Scripts/profile-base.fish index 8a383eb1..3ae2d91a 100755 --- a/scripts/Common/Scripts/profile-base.fish +++ b/scripts/Common/Scripts/profile-base.fish @@ -20,7 +20,7 @@ begin "#!$shellBin" \ "# $title" \ (processContent "$content") - end > "$file" + end >"$file" sudo install -Dm755 "$file" "$profileRoot/$name.$extension" end diff --git a/scripts/Common/Scripts/software.fish b/scripts/Common/Scripts/software.fish index df473740..c56f840a 100755 --- a/scripts/Common/Scripts/software.fish +++ b/scripts/Common/Scripts/software.fish @@ -19,23 +19,23 @@ begin function runInstallerAction -V dir -a name action source "$dir/config.fish" - if [ -z "$action" ] || [ "$action" = "install" ] + if [ -z "$action" ] || [ "$action" = install ] if functions -q installSW echo "Installing `$name`..." installSW $argv[3..] end - runInstallerAction $name "configure" + runInstallerAction $name configure if not isConfigured || [ "$USER" != (getConfig "valhalla.setupUser.name") ] runInstallerAction $name userConfig end - else if [ "$action" = "configure" ] + else if [ "$action" = configure ] if functions -q configureSW echo "Configuring `$name`..." configureSW $argv[3..] end - else if [ "$action" = "userConfig" ] + else if [ "$action" = userConfig ] set -l user $argv[3] if [ -z "$user" ] diff --git a/scripts/Common/Scripts/wait-network.fish b/scripts/Common/Scripts/wait-network.fish index c5c9879a..79af57d1 100755 --- a/scripts/Common/Scripts/wait-network.fish +++ b/scripts/Common/Scripts/wait-network.fish @@ -6,7 +6,7 @@ function waitNetwork -a witness function testNetwork # Ping digitalcourage DNS server # https://digitalcourage.de/ - ping -q -c1 5.9.164.112 > /dev/null + ping -q -c1 5.9.164.112 >/dev/null end if [ -z "$witness" ] @@ -16,7 +16,7 @@ function waitNetwork -a witness set -l pid "$last_pid" function witnessHandler -V codeFile --on-process-exit "$pid" -a event pid code - echo "$code" > "$codeFile" + echo "$code" >"$codeFile" if [ "$code" -gt 0 ] echo "Unable to connect to the internet!" @@ -34,13 +34,13 @@ function waitNetwork -a witness set x (math $x + 1) if testNetwork - tmux kill-session &> /dev/null + tmux kill-session &>/dev/null break else - not tmux list-sessions &> /dev/null + not tmux list-sessions &>/dev/null or test "$x" -gt 10 and begin - tmux kill-session &> /dev/null + tmux kill-session &>/dev/null exit 1 end end diff --git a/scripts/Common/Software/Chromium/extensions.fish b/scripts/Common/Software/Chromium/extensions.fish index 7fcf6d50..f10f8ed6 100644 --- a/scripts/Common/Software/Chromium/extensions.fish +++ b/scripts/Common/Software/Chromium/extensions.fish @@ -1,23 +1,23 @@ function installExtension -d "Installs a Chromium extension for the browser with the specified information" -a name dir bin policyDir extensionDir [ -n "$bin" ] - or set -l bin "google-chrome-stable" + or set -l bin google-chrome-stable [ -n "$policyDir" ] - or set -l policyDir "/opt/google/chrome/extensions" + or set -l policyDir /opt/google/chrome/extensions [ -n "$extensionDir" ] - or set -l extensionDir "/usr/local/share/chromium-extensions" + or set -l extensionDir /usr/local/share/chromium-extensions set -l keyFile "$dir.pem" set -l extensionFile "$dir.crx" set -l manifestFile "$dir/manifest.json" set -l destination "$extensionDir/$name.crx" - rm "$keyFile" &> /dev/null + rm "$keyFile" &>/dev/null $bin --pack-extension="$dir" # Tamper manifest file begin set -l manifest (cat "$manifestFile" | KEY=(openssl rsa -in "$keyFile" -pubout -outform DER | openssl base64 -A) jq ". + { key: env.KEY }") - echo "$manifest" > "$manifestFile" + echo "$manifest" >"$manifestFile" $bin --pack-extension="$dir" --pack-extension-key="$keyFile" end @@ -26,7 +26,7 @@ function installExtension -d "Installs a Chromium extension for the browser with # Install and configure extension begin - set -l property "external_crx" + set -l property external_crx sudo mkdir -p "$extensionDir" sudo cp "$extensionFile" "$destination" sudo chmod -R a+rx "$extensionDir" @@ -40,10 +40,10 @@ function installExtension -d "Installs a Chromium extension for the browser with end begin - echo "null" | \ + echo null | \ FILE="$destination" \ VERSION="$extVersion" \ - jq '{ external_crx: env.FILE, external_version: env.VERSION }' - end | sudo tee "$policyDir/$id.json" > /dev/null + jq '{ external_crx: env.FILE, external_version: env.VERSION }' + end | sudo tee "$policyDir/$id.json" >/dev/null end end diff --git a/scripts/Common/Software/Firefox/firefox.sh b/scripts/Common/Software/Firefox/firefox.sh index e016af9f..d7b6a390 100755 --- a/scripts/Common/Software/Firefox/firefox.sh +++ b/scripts/Common/Software/Firefox/firefox.sh @@ -1,6 +1,5 @@ #!/bin/bash -if [ "$XDG_SESSION_TYPE" == "wayland" ] -then +if [ "$XDG_SESSION_TYPE" == "wayland" ]; then export MOZ_ENABLE_WAYLAND=1 else export MOZ_USE_XINPUT2=1 diff --git a/scripts/Common/Software/KDE/input.fish b/scripts/Common/Software/KDE/input.fish index 0c1771ae..2141059b 100644 --- a/scripts/Common/Software/KDE/input.fish +++ b/scripts/Common/Software/KDE/input.fish @@ -6,7 +6,7 @@ function addInputConfig -a vendorID productID name set statements (cat) end - if not cat $file | grep "\\[$name\\]" &> /dev/null + if not cat $file | grep "\\[$name\\]" &>/dev/null begin printf %s\n \ (if [ -f $file ] && [ -n (cat $file) ] @@ -14,6 +14,6 @@ function addInputConfig -a vendorID productID name end) \ "[Libinput][$vendorID][$productID][$name]" \ "$statements" - end | sudo tee $file > /dev/null + end | sudo tee $file >/dev/null end end diff --git a/scripts/Common/Software/Oh My Posh/Manage.ps1 b/scripts/Common/Software/Oh My Posh/Manage.ps1 index c4a54cad..143e4715 100644 --- a/scripts/Common/Software/Oh My Posh/Manage.ps1 +++ b/scripts/Common/Software/Oh My Posh/Manage.ps1 @@ -15,7 +15,7 @@ Start-SoftwareInstaller @args ` "# Oh My Posh!", (Get-ScriptInitializer "oh-my-posh init pwsh"), (Get-ScriptInitializer "oh-my-posh completion powershell") - ) -join [System.Environment]::NewLine) + ) -join [System.Environment]::NewLine); } ` -UserConfigurator { param( @@ -32,7 +32,7 @@ Start-SoftwareInstaller @args ` if ($IsWindows) { sudo -u "$user" pwsh -c 'Write-Host $env:AppData'; } else { - sudo -u "$user" bash -c 'realpath ~/.config' + sudo -u "$user" bash -c 'realpath ~/.config'; } })/oh-my-posh"; @@ -43,7 +43,8 @@ Start-SoftwareInstaller @args ` & { if ($IsWindows) { wsl cat $info.source | Out-String; - } else { + } + else { Get-Content -Raw $info.source; } })); @@ -52,7 +53,7 @@ Start-SoftwareInstaller @args ` } foreach ($additionalTheme in (Get-UserConfig -UserName "$user" "oh-my-posh.additionalThemes")) { - Write-Host "creating theme $additionalTheme" + Write-Host "creating theme $additionalTheme"; $null = New-Theme $additionalTheme; } @@ -65,7 +66,8 @@ Start-SoftwareInstaller @args ` if ($IsWindows) { [System.Environment]::SetEnvironmentVariable($varName, "%AppData%/$([System.IO.Path]::GetRelativePath($env:AppData, $theme))", "User"); - } else { + } + else { . "$PSScriptRoot/../aliae/Manage.ps1"; $value = $theme; $relativePath = sudo -u "$user" fish -c 'realpath --relative-base ~ $argv' $theme; diff --git a/scripts/Common/Software/Oh My Posh/main.fish b/scripts/Common/Software/Oh My Posh/main.fish index 4a4e7158..7e2fd41b 100644 --- a/scripts/Common/Software/Oh My Posh/main.fish +++ b/scripts/Common/Software/Oh My Posh/main.fish @@ -12,13 +12,13 @@ begin 'set -x POSH_THEME $POSH_THEME' \ "oh-my-posh init fish | source" \ "oh-my-posh completion fish | source" - end | installFishProfile "oh-my-posh" + end | installFishProfile oh-my-posh begin printf %s\n \ 'eval "$(oh-my-posh init bash)"' \ 'eval "$(oh-my-posh completion bash)"' - end | installBashProfile "oh-my-posh" + end | installBashProfile oh-my-posh sudo -HE pwsh "$dir/Manage.ps1" Configure end diff --git a/scripts/Common/Software/PowerShell/Manage.ps1 b/scripts/Common/Software/PowerShell/Manage.ps1 index 84d1c128..0e99fcbc 100644 --- a/scripts/Common/Software/PowerShell/Manage.ps1 +++ b/scripts/Common/Software/PowerShell/Manage.ps1 @@ -9,7 +9,8 @@ Start-SoftwareInstaller @args ` if (-not $IsWindows) { $globalDir = '"/etc/powershell/conf.d"'; - } else { + } + else { $globalDir = '"$env:ProgramData/PowerShell/conf.d"'; } @@ -17,22 +18,22 @@ Start-SoftwareInstaller @args ` Add-PowerShellProfileStatement ` -DefaultUser ` -Script (@( - $indicator, - "`$globalDir = $globalDir", - ({ - $profileRoot = Split-Path -Parent $PROFILE; + $indicator, + "`$globalDir = $globalDir", + ({ + $profileRoot = Split-Path -Parent $PROFILE; - $profilePaths = @( - "$profileRoot/conf.d/*.ps1", - "$globalDir/*.ps1" - ) + $profilePaths = @( + "$profileRoot/conf.d/*.ps1", + "$globalDir/*.ps1" + ) - foreach ($profilePath in $profilePaths) { - if (Test-Path $profilePath) { - Get-Item $profilePath | ForEach-Object { . $_; }; + foreach ($profilePath in $profilePaths) { + if (Test-Path $profilePath) { + Get-Item $profilePath | ForEach-Object { . $_; }; + } } - } - }).ToString()) -join "`n") ` - -Append; + }).ToString()) -join "`n") ` + -Append; } - }; +}; diff --git a/scripts/Common/Software/PowerShell/Module.ps1 b/scripts/Common/Software/PowerShell/Module.ps1 index bfec097f..3a0c4a68 100644 --- a/scripts/Common/Software/PowerShell/Module.ps1 +++ b/scripts/Common/Software/PowerShell/Module.ps1 @@ -24,11 +24,11 @@ $null = New-Module { ) @{ - context = @{ - name = $Name; + context = @{ + name = $Name; nativeOnly = $NativeOnly; }; - installer = { + installer = { param( [hashtable] $Context ) diff --git a/scripts/Common/Software/PowerShell/Profile.ps1 b/scripts/Common/Software/PowerShell/Profile.ps1 index e3544449..5ef75b7e 100644 --- a/scripts/Common/Software/PowerShell/Profile.ps1 +++ b/scripts/Common/Software/PowerShell/Profile.ps1 @@ -53,16 +53,19 @@ $null = New-Module { if ($IsWindows) { # ToDo Change to "PowerShell" $configRoot = "$env:ProgramData"; - } else { + } + else { $configRoot = "/etc"; } $profiles = @("$configRoot/powershell/."); - } else { + } + else { if ($DefaultUser) { if (-not $IsWindows) { $HomeDir = "/etc/skel"; - } else { + } + else { $HomeDir = "C:/Users/Default"; } } @@ -89,7 +92,7 @@ $null = New-Module { } $profiles | ForEach-Object { - $arguments = @{}; + $arguments = @{ }; if ($Replace.IsPresent) { $null = $arguments.Add("Replace", $Replace); @@ -114,7 +117,7 @@ $null = New-Module { #> function Get-ScriptInitializer { param ( - [Parameter(Position=0, Mandatory=$true)] + [Parameter(Position = 0, Mandatory = $true)] $Initializer ) diff --git a/scripts/Common/Software/Virtual Machine Manager/main.fish b/scripts/Common/Software/Virtual Machine Manager/main.fish index 981738bf..a7984ca1 100755 --- a/scripts/Common/Software/Virtual Machine Manager/main.fish +++ b/scripts/Common/Software/Virtual Machine Manager/main.fish @@ -5,7 +5,7 @@ begin function configureSW begin - sudo virsh net-info default | grep "^Active:\s*yes\$" > /dev/null + sudo virsh net-info default | grep "^Active:\s*yes\$" >/dev/null end || sudo virsh net-start default and sudo virsh net-autostart default diff --git a/scripts/Common/Software/aliae/Main.ps1 b/scripts/Common/Software/aliae/Main.ps1 index b824e124..a9c2bdf8 100644 --- a/scripts/Common/Software/aliae/Main.ps1 +++ b/scripts/Common/Software/aliae/Main.ps1 @@ -24,7 +24,8 @@ Start-SoftwareInstaller @args ` $userPath = & { if ($env:ALIAE_CONFIG) { $env:ALIAE_CONFIG; - } else { + } + else { "~/.aliae.yaml"; } }; diff --git a/scripts/Common/Software/aliae/Manage.ps1 b/scripts/Common/Software/aliae/Manage.ps1 index 9ce5d01e..fbdef356 100644 --- a/scripts/Common/Software/aliae/Manage.ps1 +++ b/scripts/Common/Software/aliae/Manage.ps1 @@ -23,11 +23,11 @@ $null = New-Module { Edit-Config ` -Variables @{ - Name = "$Name"; + Name = "$Name"; Value = "$Value"; } ` - ".alias |= [((. // [])[] | select(.name != env.Name))] + [{ name: env.Name, value: env.Value }]" ` - -User $User; + -User $User ` + ".alias |= [((. // [])[] | select(.name != env.Name))] + [{ name: env.Name, value: env.Value }]"; } <# @@ -49,11 +49,11 @@ $null = New-Module { Edit-Config ` -Variables @{ - Name = "$Name"; + Name = "$Name"; Value = "$Value"; } ` - ".env |= [((. // [])[] | select(.name != env.Name))] + [{ name: env.Name, value: env.Value }]" ` - -User $User; + -User $User ` + ".env |= [((. // [])[] | select(.name != env.Name))] + [{ name: env.Name, value: env.Value }]"; } <# @@ -78,7 +78,8 @@ $null = New-Module { if ($User) { $flags = @("-u", "$User") $path = "$($IsWindows ? "~" : "$(sudo @flags bash -c "realpath ~")")/.aliae.yaml"; - } else { + } + else { $path = Get-GlobalConfigPath; } @@ -97,5 +98,5 @@ $null = New-Module { } | Receive-Job -Wait; } - Export-ModuleMember -Function Add-Alias,Add-EnvironmentVariable; + Export-ModuleMember -Function Add-Alias, Add-EnvironmentVariable; }; diff --git a/scripts/Common/Software/aliae/main.fish b/scripts/Common/Software/aliae/main.fish index 0e2798fd..aae37cb6 100755 --- a/scripts/Common/Software/aliae/main.fish +++ b/scripts/Common/Software/aliae/main.fish @@ -6,37 +6,37 @@ begin function configureSW -V dir source "$dir/../bash/profile.fish" source "$dir/../fish/profile.fish" - set -l file (pwsh -CommandWithArgs '. $args[0]; Get-GlobalConfigPath' "$dir/Constants.ps1"); + set -l file (pwsh -CommandWithArgs '. $args[0]; Get-GlobalConfigPath' "$dir/Constants.ps1") sudo install -Dm644 "$dir/aliae.yml" "$file" begin printf %s\n \ "if [ -f $(string escape $file) ]" \ - 'then' \ + then \ " eval \"\$(aliae init bash --config $(string escape $file))\"" \ - 'fi' \ + fi \ '' \ 'if [ -n "$ALIAE_CONFIG" ] && [ -f "$ALIAE_CONFIG" ] || [ -f ~/.aliae.yaml ]' \ - 'then' \ + then \ ' eval "$(aliae init bash)"' \ - 'fi' \ + fi \ '' \ 'eval "$(aliae completion bash)"' - end | installBashProfile "aliae" "aliae" + end | installBashProfile aliae aliae if type -q fish begin printf %s\n \ "if [ -f $(string escape $file) ]" \ " eval \"\$(aliae init bash --config $(string escape $file))\"" \ - 'end' \ + end \ '' \ 'if [ -n "$ALIAE_CONFIG" ] && [ -f "$ALIAE_CONFIG" ] || [ -f ~/.aliae.yaml ]' \ ' aliae init fish | source' \ - 'end' \ + end \ '' \ "aliae completion fish | source" - end | installFishProfile "aliae" "aliae" + end | installFishProfile aliae aliae end sudo -HE pwsh "$dir/Main.ps1" Configure diff --git a/scripts/Common/Software/bash/main.fish b/scripts/Common/Software/bash/main.fish index 31b4fe82..aacc85fb 100755 --- a/scripts/Common/Software/bash/main.fish +++ b/scripts/Common/Software/bash/main.fish @@ -9,10 +9,10 @@ begin "" \ "# profile" \ "while IFS= read -r -d '' file;" \ - "do" \ + do \ ' source "$file";' \ 'done < <(find {/etc,~/.config}/bash/conf.d/* -print0 2> /dev/null);' - end | sudo tee -a /etc/bash.bashrc &> /dev/null + end | sudo tee -a /etc/bash.bashrc &>/dev/null end runInstaller $argv diff --git a/scripts/Common/Software/bash/profile.fish b/scripts/Common/Software/bash/profile.fish index 54c09588..c13ed857 100755 --- a/scripts/Common/Software/bash/profile.fish +++ b/scripts/Common/Software/bash/profile.fish @@ -14,13 +14,13 @@ begin printf %s\n \ "" \ 'if test "$BASH"' \ - "then" + then echo "$statements" | while read -l line echo " $line" end - echo "fi" + echo fi end end diff --git a/scripts/Common/Software/git/Manage.ps1 b/scripts/Common/Software/git/Manage.ps1 index 33e4d4d9..57bbce37 100644 --- a/scripts/Common/Software/git/Manage.ps1 +++ b/scripts/Common/Software/git/Manage.ps1 @@ -14,7 +14,8 @@ $getConfig = { Get-UserConfig -UserName $User @args }; $sudoArgs = @("-u", $User); $configArgs = @("--global"); - } else { + } + else { $getConfig = { Get-OSConfig @args }; $sudoArgs = @(); $configArgs = @("--system"); @@ -69,7 +70,7 @@ } | Out-Null; if ($mainBranch) { - git -C "$dir" branch $mainBranch | Out-Null;; + git -C "$dir" branch $mainBranch | Out-Null; sudo @sudoArgs git -C "$dir" flow config set @configArgs master $mainBranch; } diff --git a/scripts/Common/Software/logo-ls/main.fish b/scripts/Common/Software/logo-ls/main.fish index f3552f4f..1b6776fa 100755 --- a/scripts/Common/Software/logo-ls/main.fish +++ b/scripts/Common/Software/logo-ls/main.fish @@ -4,8 +4,8 @@ begin source "$dir/../../Scripts/software.fish" function configureSW -V dir - source "$dir/../bash/profile.fish"; - source "$dir/../fish/profile.fish"; + source "$dir/../bash/profile.fish" + source "$dir/../fish/profile.fish" set -l functionName _PortValhalla_ls_ function dump_header @@ -34,7 +34,7 @@ begin "" dump_aliases - end | installBashProfile "logo-ls" + end | installBashProfile logo-ls if type -q fish begin @@ -47,11 +47,11 @@ begin " else" \ ' command ls --color=auto $argv' \ " end" \ - "end" \ + end \ "" dump_aliases - end | installFishProfile "logo-ls" + end | installFishProfile logo-ls end end diff --git a/scripts/Common/Software/nuke-usb/nuke-usb.sh b/scripts/Common/Software/nuke-usb/nuke-usb.sh index 148e121f..15952335 100755 --- a/scripts/Common/Software/nuke-usb/nuke-usb.sh +++ b/scripts/Common/Software/nuke-usb/nuke-usb.sh @@ -11,18 +11,18 @@ sleep_secs="1" # * 'ehci-pci' - USB 2.0 # * 'xhci_hcd' - USB 3.0 echo "Looking for USB standards ..." -for usb_std in "$base/"?hci[-_]?c* -do +for usb_std in "$base/"?hci[-_]?c*; do echo "* USB standard '$usb_std' ..." - for dev_path in "$usb_std/"*:* - do + + for dev_path in "$usb_std/"*:*; do dev="$(basename "$dev_path")" echo " - Resetting device '$dev' ..." - printf '%s' "$dev" | sudo tee "$usb_std/unbind" > /dev/null + printf '%s' "$dev" | sudo tee "$usb_std/unbind" >/dev/null sleep "$sleep_secs" - printf '%s' "$dev" | sudo tee "$usb_std/bind" > /dev/null + printf '%s' "$dev" | sudo tee "$usb_std/bind" >/dev/null echo " done." done + echo " done." done echo "done." diff --git a/scripts/Common/Software/nvidia-dkms/main.fish b/scripts/Common/Software/nvidia-dkms/main.fish index 5eac86a2..f9be627f 100755 --- a/scripts/Common/Software/nvidia-dkms/main.fish +++ b/scripts/Common/Software/nvidia-dkms/main.fish @@ -12,14 +12,14 @@ begin printf %s\n \ "options nvidia NVreg_PreserveVideoMemoryAllocations=1" \ "options nvidia NVreg_TemporaryFilePath=/var/tmp" - end | sudo tee /etc/modprobe.d/nvidia-power-management.conf > /dev/null + end | sudo tee /etc/modprobe.d/nvidia-power-management.conf >/dev/null sudo systemctl enable \ nvidia-suspend.service \ nvidia-hibernate.service \ nvidia-resume.service - if ! cat /etc/default/grub | grep "$indicator.*$config" > /dev/null + if ! cat /etc/default/grub | grep "$indicator.*$config" >/dev/null sudo sed -i /etc/default/grub \ -e "/$indicator/{" \ -e "s/\($indicator.*[^ ]\)\(\"\)/\1 \2/" \ diff --git a/scripts/Common/Software/pyenv/main.fish b/scripts/Common/Software/pyenv/main.fish index 967f39c9..babd4747 100755 --- a/scripts/Common/Software/pyenv/main.fish +++ b/scripts/Common/Software/pyenv/main.fish @@ -17,10 +17,10 @@ begin 'export PYENV_ROOT="$HOME/.pyenv"' \ 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' \ 'eval "$(pyenv init -)"' - end | installBashProfile "pyenv" > /dev/null + end | installBashProfile pyenv >/dev/null if type -q fish - installFishProfile "pyenv" "pyenv" "pyenv init - | source" + installFishProfile pyenv pyenv "pyenv init - | source" end end diff --git a/scripts/Common/Software/rclone/main.fish b/scripts/Common/Software/rclone/main.fish index 837adf44..01a292d6 100755 --- a/scripts/Common/Software/rclone/main.fish +++ b/scripts/Common/Software/rclone/main.fish @@ -13,7 +13,7 @@ begin set -l configs (getUserConfig "$name" "$key" --apply "builtins.attrNames" --json) if [ (echo "$configs" | jq "length") -gt 0 ] - if [ "$XDG_SESSION_TYPE" = "tty" ] + if [ "$XDG_SESSION_TYPE" = tty ] set -l sessionPid set -l freeTty set -l service @@ -38,7 +38,7 @@ begin "[General]" \ "LastSeenVersion=1.0.0" \ "ShowUpdatePage=false" - end | sudo -u "$name" tee "$welcomeConfig" > /dev/null + end | sudo -u "$name" tee "$welcomeConfig" >/dev/null begin printf %s\n \ @@ -53,7 +53,7 @@ begin "CONFIG_NAME=$(echo "$CONFIG_NAME" | string escape)" \ "konsole -e fish $(realpath (status filename) | string escape) userConfig" ) - end | sudo -u "$name" tee "$entryPoint" > /dev/null + end | sudo -u "$name" tee "$entryPoint" >/dev/null sudo chmod +x "$entryPoint" @@ -62,7 +62,7 @@ begin "[Service]" \ "ExecStart=" \ "ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin $name %I \$TERM" - end | sudo tee "$sessionConfig" > /dev/null + end | sudo tee "$sessionConfig" >/dev/null sudo systemctl daemon-reload sudo systemctl restart $service diff --git a/scripts/Common/Software/udev/ct-board.fish b/scripts/Common/Software/udev/ct-board.fish index 7a1aaabc..52105520 100755 --- a/scripts/Common/Software/udev/ct-board.fish +++ b/scripts/Common/Software/udev/ct-board.fish @@ -1,4 +1,4 @@ #!/bin/env fish begin - echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0483", MODE="0666"'; -end | sudo tee /etc/udev/rules.d/50-ct-board.rules > /dev/null; + echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0483", MODE="0666"' +end | sudo tee /etc/udev/rules.d/50-ct-board.rules >/dev/null diff --git a/scripts/Common/Software/vim/main.fish b/scripts/Common/Software/vim/main.fish index e40bc0f9..87da27a2 100755 --- a/scripts/Common/Software/vim/main.fish +++ b/scripts/Common/Software/vim/main.fish @@ -7,9 +7,9 @@ begin set -l configFile /etc/vimrc set -l indicator "set clipboard" - if not grep "\b$indicator\b" "$configFile" > /dev/null + if not grep "\b$indicator\b" "$configFile" >/dev/null # As described in https://wiki.archlinux.org/title/Vim#Clipboard - echo "$indicator+=unnamed,unnamedplus" | sudo tee -a "$configFile" > /dev/null; + echo "$indicator+=unnamed,unnamedplus" | sudo tee -a "$configFile" >/dev/null end end diff --git a/scripts/Common/Software/zoxide/main.fish b/scripts/Common/Software/zoxide/main.fish index 210114cb..81722760 100755 --- a/scripts/Common/Software/zoxide/main.fish +++ b/scripts/Common/Software/zoxide/main.fish @@ -6,8 +6,8 @@ begin function configureSW -V dir source "$dir/../bash/profile.fish" source "$dir/../fish/profile.fish" - echo 'eval "$(zoxide init bash)"' | installBashProfile "zoxide" - echo "zoxide init fish | source" | installFishProfile "zoxide" + echo 'eval "$(zoxide init bash)"' | installBashProfile zoxide + echo "zoxide init fish | source" | installFishProfile zoxide sudo -HE pwsh -NoProfile "$dir/Main.ps1" Configure end diff --git a/scripts/Windows/OS/Manage.ps1 b/scripts/Windows/OS/Manage.ps1 index c9dce03d..600baa3f 100644 --- a/scripts/Windows/OS/Manage.ps1 +++ b/scripts/Windows/OS/Manage.ps1 @@ -63,10 +63,10 @@ $null = New-Module { & { switch ($Action) { ([WindowsInstallerAction]::Backup) { - "Please select the path you wish to store your backup at" + "Please select the path you wish to store your backup at"; } ([WindowsInstallerAction]::Install) { - "Please select an archive you wish to restore from, if you wish to restore from a backup" + "Please select an archive you wish to restore from, if you wish to restore from a backup"; } } })); @@ -183,7 +183,8 @@ $null = New-Module { Disable-Autologin; Restart-Intermediate; return; - } else { + } + else { Deploy-SoftwareAction -Action ([InstallerAction]::BackupUser); Remove-LocalGroupMember -Member "$user" @adminGroup; diff --git a/scripts/Windows/OS/Setup.ps1 b/scripts/Windows/OS/Setup.ps1 index 2d6da0be..d3580bc1 100644 --- a/scripts/Windows/OS/Setup.ps1 +++ b/scripts/Windows/OS/Setup.ps1 @@ -59,11 +59,11 @@ function Start-Setup { } function Get-PathInjection($path) { - "(Join-Path `$env:SystemDrive $(ConvertTo-Injection $path))" + "(Join-Path `$env:SystemDrive $(ConvertTo-Injection $path))"; } function Get-ScriptPathInjection($path) { - Get-PathInjection (Get-RemoteScriptPath $path) + Get-PathInjection (Get-RemoteScriptPath $path); } function Get-DiskConfig { @@ -76,21 +76,21 @@ function Start-Setup { $modifications = $node.SelectSingleNode("./ua:ModifyPartitions", $namespace); @{ - PartitionCreationContainer = $creations; - PartitionCreations = $creations.SelectNodes("./ua:CreatePartition", $namespace); + PartitionCreationContainer = $creations; + PartitionCreations = $creations.SelectNodes("./ua:CreatePartition", $namespace); PartitionModificationContainer = $modifications; - PartitionModifications = $modifications.SelectNodes("./ua:ModifyPartition", $namespace); + PartitionModifications = $modifications.SelectNodes("./ua:ModifyPartition", $namespace); }; } function Move-PartitionRange { param ( [int] $Disk = (Get-InstallDisk), - [Parameter(Position=0)] + [Parameter(Position = 0)] [int] $From = 0, - [Parameter(Position=1)] + [Parameter(Position = 1)] [System.Nullable[int]] $To = $null, - [Parameter(Position=2)] + [Parameter(Position = 2)] [int] $By = 1 ) @@ -104,8 +104,9 @@ function Start-Setup { } } - foreach ($config in @(@($diskInfo.PartitionCreations, @("Order")), - @($diskInfo.PartitionModifications, @("Order", "PartitionID")))) { + foreach ($config in @( + @($diskInfo.PartitionCreations, @("Order")), + @($diskInfo.PartitionModifications, @("Order", "PartitionID")))) { foreach ($partition in $config[0]) { foreach ($property in $config[1]) { $partitionNode = $partition.SelectSingleNode("./ua:$property", $namespace); @@ -127,11 +128,11 @@ function Start-Setup { function Add-Partition { param ( [int] $Disk = (Get-InstallDisk), - [Parameter(Position=0)] + [Parameter(Position = 0)] [int] $Index, - [Parameter(Position=1)] + [Parameter(Position = 1)] [int] $Size, - [Parameter(Position=2)] + [Parameter(Position = 2)] [string] $Type = "Primary" ) @@ -169,9 +170,9 @@ function Start-Setup { function Move-Partition { param ( [int] $Disk = (Get-InstallDisk), - [Parameter(Position=0)] + [Parameter(Position = 0)] [int] $From, - [Parameter(Position=1)] + [Parameter(Position = 1)] [int] $To ) @@ -210,7 +211,7 @@ function Start-Setup { $target = $setupConfig.SelectSingleNode("./ua:ImageInstall/ua:OSImage/ua:InstallTo", $namespace); @{ - Disk = $target.SelectSingleNode("./ua:DiskID", $namespace); + Disk = $target.SelectSingleNode("./ua:DiskID", $namespace); Partition = $target.SelectSingleNode("./ua:PartitionID", $namespace); }; }; @@ -223,21 +224,21 @@ function Start-Setup { $oobeSettings = (Get-Component (Get-PassSettings "oobeSystem") "Microsoft-Windows-Shell-Setup"); foreach ($xpath in @("./ua:AutoLogon/ua:Username", - "./ua:UserAccounts/ua:LocalAccounts/ua:LocalAccount/ua:Name", - "./ua:UserAccounts/ua:LocalAccounts/ua:LocalAccount/ua:DisplayName")) { + "./ua:UserAccounts/ua:LocalAccounts/ua:LocalAccount/ua:Name", + "./ua:UserAccounts/ua:LocalAccounts/ua:LocalAccount/ua:DisplayName")) { $oobeSettings.SelectSingleNode($xpath, $namespace).InnerText = $valhallaConfig.setupUser.name; } Add-StartupCommand ` - -Script ( - "powershell -Command " + - ($env:DEBUG ? "`$env:DEBUG = $([int]$env:DEBUG);" : "") + - "`$env:VALHALLA_ROOT = $(Get-PathInjection $env:REMOTE_PROJECT_PATH);" + - "`$env:PWSH_PATH = $(Get-PathInjection $env:PWSH_PATH);" + - "`$env:INSTALLER_SCRIPT = $(Get-ScriptPathInjection $env:SETUP_SCRIPT_NAME);" + - "`$env:CONFIG_NAME = $(ConvertTo-Injection $env:CONFIG_NAME);" + - "& (Join-Path `$env:PWSH_PATH pwsh) `$env:INSTALLER_SCRIPT;") ` - -Description "Install PowerShell Core and git and run setup script"; + -Script ( + "powershell -Command " + + ($env:DEBUG ? "`$env:DEBUG = $([int]$env:DEBUG);" : "") + + "`$env:VALHALLA_ROOT = $(Get-PathInjection $env:REMOTE_PROJECT_PATH);" + + "`$env:PWSH_PATH = $(Get-PathInjection $env:PWSH_PATH);" + + "`$env:INSTALLER_SCRIPT = $(Get-ScriptPathInjection $env:SETUP_SCRIPT_NAME);" + + "`$env:CONFIG_NAME = $(ConvertTo-Injection $env:CONFIG_NAME);" + + "& (Join-Path `$env:PWSH_PATH pwsh) `$env:INSTALLER_SCRIPT;") ` + -Description "Install PowerShell Core and git and run setup script"; if ($valhallaConfig.dualboot.enable) { $diskSize = [long](ConvertFrom-Csv (wmic diskdrive where "Index=$(Get-InstallDisk)" get Size | ForEach-Object { "$_".Trim(); })).Size; @@ -261,8 +262,8 @@ function Start-Setup { $unattendedConfig.PreserveWhitespace = $true; $unattendedConfig.Save($unattendedConfigFile); - Write-Warning "Attention: This program will completely wipe your current disk #1 and install Windows on it. Are you sure you want to do this?" - Read-Host -Prompt "Hit enter to continue or CTRL+C to abort" + Write-Warning "Attention: This program will completely wipe your current disk #1 and install Windows on it. Are you sure you want to do this?"; + Read-Host -Prompt "Hit enter to continue or CTRL+C to abort"; & "$SETUP_DRIVE\setup.exe" /Unattend:$unattendedConfigFile; } diff --git a/scripts/Windows/Scripts/AppAssociations.ps1 b/scripts/Windows/Scripts/AppAssociations.ps1 index b9242315..7b7256d1 100644 --- a/scripts/Windows/Scripts/AppAssociations.ps1 +++ b/scripts/Windows/Scripts/AppAssociations.ps1 @@ -24,7 +24,7 @@ $null = New-Module { } "$rootSelector/$associationSelector$filter"; - } + }; <# .SYNOPSIS @@ -64,7 +64,8 @@ $null = New-Module { if ($candidates.Count -eq 1) { $association = $candidates[0]; - } else { + } + else { $association = $document.SelectSingleNode($rootSelector).AppendChild($document.CreateElement($associationElementName)); foreach ($attributeName in @("Identifier", "ProgId", "ApplicationName")) { @@ -95,7 +96,7 @@ $null = New-Module { $associations = $root.SelectNodes((& $getSelector)); # Reorder associations by their Identifier - $null = $associations | ForEach-Object { $root.RemoveChild($_) } | Sort-Object -Property "Identifier" | ForEach-Object { $root.AppendChild($_); }; + $null = $associations | ForEach-Object { $root.RemoveChild($_) } | Sort-Object -Property "Identifier" | ForEach-Object { $root.AppendChild($_) }; $configFile = New-TemporaryFile; $writerSettings = [XmlWriterSettings]::new(); diff --git a/scripts/Windows/Scripts/Deployment.ps1 b/scripts/Windows/Scripts/Deployment.ps1 index 64794864..04416cd9 100644 --- a/scripts/Windows/Scripts/Deployment.ps1 +++ b/scripts/Windows/Scripts/Deployment.ps1 @@ -21,7 +21,8 @@ function Deploy-SoftwareAction { if ($null -ne $Action) { $install = ($Action -eq ([InstallerAction]::Install)); $null = $arguments.Add("action", $Action); - } else { + } + else { $install = $true; } @@ -138,7 +139,7 @@ function Deploy-SoftwareAction { keepass ` ; - Install-ChocoPackage bitwarden -ArgumentList '--install-arguments="/ALLUSERS=1"' + Install-ChocoPackage bitwarden -ArgumentList '--install-arguments="/ALLUSERS=1"'; Install-WingetPackage ` SomePythonThings.WingetUIStore ` @@ -233,7 +234,7 @@ function Deploy-SoftwareAction { Remove-DesktopIcon "VLC*"; # When installing Jellyfin Media Player after iCUE, Jellyfin will try to reboot automatically - Install-ChocoPackage jellyfin-media-player -ArgumentList "--install-args","/norestart"; + Install-ChocoPackage jellyfin-media-player -ArgumentList "--install-args", "/norestart"; Remove-DesktopIcon "Jellyfin Media Player*"; Install-WingetPackage Ytmdesktop.Ytmdesktop; Remove-DesktopIcon "Youtube Music*"; diff --git a/scripts/Windows/Scripts/Hooks.ps1 b/scripts/Windows/Scripts/Hooks.ps1 index fb2e2b5d..e4c9c95e 100644 --- a/scripts/Windows/Scripts/Hooks.ps1 +++ b/scripts/Windows/Scripts/Hooks.ps1 @@ -12,7 +12,7 @@ function Invoke-Hook() { if (Get-Command "$Name" -ErrorAction SilentlyContinue) { $parameters = { - fallback = $scriptBlock + fallback = $scriptBlock; }; Write-Host "Running Hook ``$Name``"; diff --git a/scripts/Windows/Scripts/PowerManagement.ps1 b/scripts/Windows/Scripts/PowerManagement.ps1 index e440578a..001b2e99 100644 --- a/scripts/Windows/Scripts/PowerManagement.ps1 +++ b/scripts/Windows/Scripts/PowerManagement.ps1 @@ -30,13 +30,15 @@ $null = New-Module { if ($UserKey) { $path = Join-Path ($UserKey.PSPath) $runOncePath; - } else { + } + else { $path = $systemRunOncePath; } if (-not (Test-Path $path)) { New-Item $path; - } else { + } + else { Get-Item $path; } } @@ -122,14 +124,14 @@ $null = New-Module { #> function Register-Setup { param( - [Parameter(ParameterSetName="System")] + [Parameter(ParameterSetName = "System")] [switch] $System, - [Parameter(ParameterSetName="DefaultUser", Mandatory)] + [Parameter(ParameterSetName = "DefaultUser", Mandatory)] [switch] $DefaultUser, - [Parameter(ParameterSetName="User", Mandatory)] + [Parameter(ParameterSetName = "User", Mandatory)] [switch] $User, - [Parameter(ParameterSetName="User")] - [Parameter(ParameterSetName="SpecificUser", Mandatory)] + [Parameter(ParameterSetName = "User")] + [Parameter(ParameterSetName = "SpecificUser", Mandatory)] [RegistryKey] $UserKey ) @@ -151,7 +153,8 @@ $null = New-Module { } $key = Get-RunOnceKey $UserKey; - } else { + } + else { $key = Get-RunOnceKey; } @@ -193,8 +196,8 @@ $null = New-Module { } $options = @{ - $domainOption = ""; - $userOption = $Name; + $domainOption = ""; + $userOption = $Name; $passwordOption = ""; }; @@ -221,20 +224,22 @@ $null = New-Module { #> function Restart-Intermediate { param( - [Parameter(ParameterSetName="None")] + [Parameter(ParameterSetName = "None")] [switch] $NoRegister, - [Parameter(ParameterSetName="Default", Mandatory)] + [Parameter(ParameterSetName = "Default", Mandatory)] [switch] $DefaultUser, - [Parameter(ParameterSetName="Current", Mandatory)] + [Parameter(ParameterSetName = "Current", Mandatory)] [switch] $CurrentUser ) if (-not $NoRegister.IsPresent) { if ($DefaultUser.IsPresent) { Register-Setup -DefaultUser; - } elseif ($CurrentUser.IsPresent) { + } + elseif ($CurrentUser.IsPresent) { Register-Setup -User; - } else { + } + else { Register-Setup; } } diff --git a/scripts/Windows/Scripts/Registry.ps1 b/scripts/Windows/Scripts/Registry.ps1 index bdd54eb3..78c386d3 100644 --- a/scripts/Windows/Scripts/Registry.ps1 +++ b/scripts/Windows/Scripts/Registry.ps1 @@ -53,7 +53,7 @@ $null = New-Module { ) $rootPath = "HKLM:\DefaultUser"; - $regRootPath = $rootPath -replace "^(\w+):([\\/]|$)","`$1`$2"; + $regRootPath = $rootPath -replace "^(\w+):([\\/]|$)", "`$1`$2"; $hivePath = "$env:SystemDrive\Users\Default\NTUSER.dat"; $null = & reg load $regRootPath $hivePath; [RegistryKey] $root = Get-Item $rootPath; @@ -81,7 +81,8 @@ $null = New-Module { [AccessControlType]::Allow)); Set-Acl $configRoot $acl; - } else { + } + else { $key = Get-Item $configRoot; } @@ -106,7 +107,7 @@ $null = New-Module { $options = @{ legalnoticecaption = $Caption; - legalnoticetext = $Message; + legalnoticetext = $Message; }; foreach ($key in $options.Keys) { @@ -141,7 +142,8 @@ $null = New-Module { if ($key.GetValueNames().Contains($Name)) { return $key.GetValue($Name); - } else { + } + else { return $null; } } @@ -166,7 +168,8 @@ $null = New-Module { if ($null -eq $Value) { Remove-ItemProperty $key -Name $Name; - } else { + } + else { $null = Set-ItemProperty $key -Name $Name -Value $Value; } } @@ -371,4 +374,4 @@ $null = New-Module { Set-SetupOption $finishedOption $true; } -} +}; diff --git a/scripts/Windows/Scripts/Restoration.ps1 b/scripts/Windows/Scripts/Restoration.ps1 index b915533c..82d59be7 100644 --- a/scripts/Windows/Scripts/Restoration.ps1 +++ b/scripts/Windows/Scripts/Restoration.ps1 @@ -12,7 +12,8 @@ $null = New-Module { if ($User) { $result = "Users/$User"; - } else { + } + else { $result = "System"; } @@ -89,7 +90,8 @@ $null = New-Module { if (Test-Path -PathType Container $Source) { $null = New-Item -ItemType Junction $fullPath -Target $Source; - } elseif (Test-Path -PathType Leaf $Source) { + } + elseif (Test-Path -PathType Leaf $Source) { Copy-Item $Source $fullPath; } diff --git a/scripts/Windows/Scripts/Security.ps1 b/scripts/Windows/Scripts/Security.ps1 index e1f62912..88b94fe9 100644 --- a/scripts/Windows/Scripts/Security.ps1 +++ b/scripts/Windows/Scripts/Security.ps1 @@ -11,7 +11,7 @@ $null = New-Module { ) Set-ItemProperty -Path $systemPolicyPath -Name $uacOption -Value ([int]$Value); - } + }; <# .SYNOPSIS @@ -58,7 +58,8 @@ $null = New-Module { (& { if (Test-Path -PathType Container $Path) { [InheritanceFlags]::ObjectInherit -bor [InheritanceFlags]::ContainerInherit - } else { + } + else { 0 } }), diff --git a/scripts/Windows/Scripts/SoftwareManagement.ps1 b/scripts/Windows/Scripts/SoftwareManagement.ps1 index 2fe3f6ef..e83cccea 100644 --- a/scripts/Windows/Scripts/SoftwareManagement.ps1 +++ b/scripts/Windows/Scripts/SoftwareManagement.ps1 @@ -48,10 +48,10 @@ $null = New-Module { $Names.AddRange($AdditionalNames); [string[]] $arguments = $ArgumentList + (& { - if ($Action -eq 'install') { - @("--accept-package-agreements") - }; - }); + if ($Action -eq 'install') { + @("--accept-package-agreements"); + }; + }); foreach ($name in $Names) { if ($Force.IsPresent -or (& $Guard $name $PSBoundParameters)) { @@ -59,7 +59,7 @@ $null = New-Module { --accept-source-agreements ` --source winget ` @arguments ` - --exact --id $name ; + --exact --id $name; } } }; @@ -74,8 +74,8 @@ $null = New-Module { $output = winget source update winget; $? -and -not ([System.Linq.Enumerable]::Any( - [string[]]($output), - [System.Func[string,bool]]{ param($line) $line -eq "Cancelled"; })); + [string[]]($output), + [System.Func[string, bool]] { param($line) $line -eq "Cancelled" })); }); } @@ -90,7 +90,7 @@ $null = New-Module { [OutputType([bool])] param( [string] $Name - ); + ) -not [string]::IsNullOrEmpty((choco list --limit-output --exact $name)); } @@ -123,7 +123,7 @@ $null = New-Module { param( [switch] $Force, [string[]] $ArgumentList, - [Parameter(Position=0)] + [Parameter(Position = 0)] [string] $Name, [Parameter(ValueFromRemainingArguments = $true)] [string[]] $AdditionalNames = @() @@ -132,9 +132,10 @@ $null = New-Module { & $chocoRunner @PSBoundParameters -Guard { param($Name) if (Test-ChocoPackage $Name) { - Write-Host "Package ``$Name`` is already installed" + Write-Host "Package ``$Name`` is already installed"; $false; - } else { + } + else { $true; } }; @@ -147,7 +148,7 @@ $null = New-Module { function Uninstall-ChocoPackage { param( [string[]] $ArgumentList, - [Parameter(Position=0)] + [Parameter(Position = 0)] [string] $Name, [Parameter(ValueFromRemainingArguments = $true)] [string[]] $AdditionalNames = @() @@ -157,7 +158,8 @@ $null = New-Module { param($Name) if (Test-ChocoPackage $Name) { $true; - } else { + } + else { Write-Host "Package ``$Name`` is not installed"; $false; } @@ -175,22 +177,22 @@ $null = New-Module { param( [switch] $Force, [string[]] $ArgumentList, - [Parameter(Position=0)] + [Parameter(Position = 0)] [string] $Name, [Parameter(ValueFromRemainingArguments = $true)] [string[]] $AdditionalNames = @() ) - & $wingetRunner @PSBoundParameters ` - -Guard { - param($Name, $Parameters) - if (Test-WingetPackage -Name $Name @Parameters) { - Write-Host "Package ``$Name`` is already installed" - $false; - } else { - $true; - } - }; + & $wingetRunner @PSBoundParameters -Guard { + param($Name, $Parameters) + if (Test-WingetPackage -Name $Name @Parameters) { + Write-Host "Package ``$Name`` is already installed"; + $false; + } + else { + $true; + } + }; } <# @@ -200,7 +202,7 @@ $null = New-Module { function Uninstall-WingetPackage { param( [string[]] $ArgumentList, - [Parameter(Position=0)] + [Parameter(Position = 0)] [string] $Name, [Parameter(ValueFromRemainingArguments = $true)] [string[]] $AdditionalNames = @() @@ -210,8 +212,9 @@ $null = New-Module { param($Name, $Parameters) if (Test-WingetPackage -Name $Name @Parameters) { $true; - } else { - Write-Host "Package ``$Name`` is not installed" + } + else { + Write-Host "Package ``$Name`` is not installed"; $false; } }; @@ -249,7 +252,8 @@ $null = New-Module { Write-Host "Downloading setup file from ``$Source``"; Invoke-WebRequest $Source -OutFile $filePath; - } else { + } + else { $filePath = $Source; } @@ -321,7 +325,8 @@ $null = New-Module { try { & $download; - } catch { + } + catch { $null = $Browser.ExecuteScript("document.querySelector('$cookieBannerSelector').remove()"); & $download; } diff --git a/scripts/Windows/Scripts/Tasks.ps1 b/scripts/Windows/Scripts/Tasks.ps1 index 0c912ed6..637206e3 100644 --- a/scripts/Windows/Scripts/Tasks.ps1 +++ b/scripts/Windows/Scripts/Tasks.ps1 @@ -30,7 +30,8 @@ $null = New-Module { if ($task) { return [OneShotTask]$task; - } else { + } + else { return $null; } } @@ -104,7 +105,7 @@ $null = New-Module { } } ` -MessageData @{ - Trigger = $oneShotTrigger; + Trigger = $oneShotTrigger; Identifier = $identifier; }; diff --git a/scripts/Windows/Scripts/Update.ps1 b/scripts/Windows/Scripts/Update.ps1 index 74cc8c4d..5d87ad8f 100644 --- a/scripts/Windows/Scripts/Update.ps1 +++ b/scripts/Windows/Scripts/Update.ps1 @@ -25,7 +25,8 @@ function Update-WindowsInstallation { Write-Host "A Reboot is Required!"; Write-Host "Windows will reboot now and the installation will be continued automatically."; return; - } else { + } + else { Write-Host "Updating Windows finished successfully!"; return; } diff --git a/scripts/Windows/Scripts/Users.ps1 b/scripts/Windows/Scripts/Users.ps1 index 0334e171..8c200338 100644 --- a/scripts/Windows/Scripts/Users.ps1 +++ b/scripts/Windows/Scripts/Users.ps1 @@ -36,7 +36,7 @@ $null = New-Module { ([UserStage]::Create) { if ($env:UserName -ne $name) { $userInfo = @{ - name = $name; + name = $name; msAccount = $msAccount; }; @@ -44,12 +44,14 @@ $null = New-Module { if ($msAccount) { logoff; - } else { + } + else { Restart-Intermediate; } exit; - } else { + } + else { if ($msAccount) { if (-not (Test-Admin)) { Invoke-OneShot DisableUAC; @@ -166,7 +168,8 @@ $null = New-Module { 0) -eq 1) { return $newUser; } - } else { + } + else { $result = $Host.UI.PromptForChoice( "Select your User", "Which one is your user?", @@ -184,7 +187,8 @@ $null = New-Module { return $newUsers[$result - 1]; } } - } else { + } + else { Write-Host ""; Write-Host "Unable to determine the new user"; Write-Host "Retrying…"; @@ -218,7 +222,8 @@ $null = New-Module { Add-MicrosoftAccount $Name; Set-SetupOption $loggedInUserOption $env:UserName; Invoke-OneShot ([OneShotTask]::InitializeMSAccount); - } else { + } + else { New-LocalUser -NoPassword $Name; Set-LocalUser $Name -PasswordNeverExpires $true; Set-LocalUser $Name -PasswordNeverExpires $false; @@ -246,7 +251,7 @@ $null = New-Module { if ($msAccount) { $accountName = Get-MSAccountName; - Write-Host "Renaming ``$accountName`` to ``$name``…" + Write-Host "Renaming ``$accountName`` to ``$name``…"; Rename-LocalUser $accountName $name; } @@ -254,7 +259,8 @@ $null = New-Module { if ($msAccount) { Disable-LocalUser (Get-SetupOption $loggedInUserOption); - } else { + } + else { Disable-LocalUser $env:UserName; } @@ -266,7 +272,8 @@ $null = New-Module { if ($msAccount) { Disable-Autologin; Set-BootMessage -Caption "Please Log In" -Message "Please log in using your new Microsoft Account ``$name``."; - } else { + } + else { Set-AutologinUser "$name"; } } diff --git a/scripts/Windows/Software/Firefox/Manage.ps1 b/scripts/Windows/Software/Firefox/Manage.ps1 index cfdcdb69..1fdf8171 100644 --- a/scripts/Windows/Software/Firefox/Manage.ps1 +++ b/scripts/Windows/Software/Firefox/Manage.ps1 @@ -3,7 +3,7 @@ . "$PSScriptRoot/../../../Common/Scripts/Software.ps1"; Start-SoftwareInstaller @args ` - -Installer { + -Installer { Install-ChocoPackage firefox; } ` -Configurator { diff --git a/scripts/Windows/Software/LGHub/Manage.ps1 b/scripts/Windows/Software/LGHub/Manage.ps1 index d07fcacd..ec6f453c 100644 --- a/scripts/Windows/Software/LGHub/Manage.ps1 +++ b/scripts/Windows/Software/LGHub/Manage.ps1 @@ -13,19 +13,19 @@ param() $hubName = "lghub_system_tray.exe"; - $candidates = Get-Process | Where-Object { $_.Path -and ((Split-Path -Leaf $_.Path) -eq $hubName) }; if ($candidates.Count -gt 0) { $lghubPath = $candidates[0].Path; - } else { + } + else { $lghubPath = $null; } $mainProcesses = Get-Process | Where-Object { $_.Path -and (@("lghub.exe", "lghub_agent.exe", "lghub_updater.exe", $hubName) -contains (Split-Path -Leaf $_.Path)) -and - (($_.Parent.ProcessName -eq "explorer") -or ($null -eq $_.Parent)) + (($_.Parent.ProcessName -eq "explorer") -or ($null -eq $_.Parent)); }; $null = $mainProcesses | ForEach-Object { $_.Kill($true) }; @@ -64,7 +64,7 @@ Edit-LGHubConfig { Add-BackupArtifacts -User $Arguments.Name -Source $configPath -Path "$Name" ` - -Include @("settings.db", "icon_cache") + -Include @("settings.db", "icon_cache"); }; } ` -UserConfigurator { diff --git a/scripts/Windows/Software/MSEdgeRedirect/Manage.ps1 b/scripts/Windows/Software/MSEdgeRedirect/Manage.ps1 index c2369c89..e8165a10 100644 --- a/scripts/Windows/Software/MSEdgeRedirect/Manage.ps1 +++ b/scripts/Windows/Software/MSEdgeRedirect/Manage.ps1 @@ -9,15 +9,15 @@ Start-SoftwareInstaller @args ` $configPath = "HKLM:\SOFTWARE\Robert Maehl Software\MSEdgeRedirect"; [hashtable] $options = @{ - NoBing = 1; - NoImgs = 1; - NoNews = 1; - NoPDFs = 1; - Search = "StartPage"; - Images = "Custom"; + NoBing = 1; + NoImgs = 1; + NoNews = 1; + NoPDFs = 1; + Search = "StartPage"; + Images = "Custom"; ImagePath = "https://startpage.com/sp/search?cat=images&query="; - News = "Google"; - PDFApp = "C:\Program Files\Mozilla Firefox\firefox.exe"; + News = "Google"; + PDFApp = "C:\Program Files\Mozilla Firefox\firefox.exe"; }; foreach ($key in $options.Keys) { diff --git a/scripts/Windows/Software/Nextcloud/Main.ps1 b/scripts/Windows/Software/Nextcloud/Main.ps1 index ce3a8ce9..8be965cf 100644 --- a/scripts/Windows/Software/Nextcloud/Main.ps1 +++ b/scripts/Windows/Software/Nextcloud/Main.ps1 @@ -34,7 +34,7 @@ $folderID = ( $oldContent | ` Where-Object { $_ -match "$pattern" } | ` - ForEach-Object { $_ -replace "$pattern.*$","`$1" } | ` + ForEach-Object { $_ -replace "$pattern.*$", "`$1" } | ` Sort-Object -Unique | ` Measure-Object -Maximum).Maximum + 1; @@ -80,7 +80,7 @@ Start-SoftwareInstaller @args ` -Installer { - Install-ChocoPackage nextcloud-client -ArgumentList "-y","--params='/KeepUpdateCheck'"; + Install-ChocoPackage nextcloud-client -ArgumentList "-y", "--params='/KeepUpdateCheck'"; } ` -UserConfigurator { param($Arguments) diff --git a/scripts/Windows/Software/Oh My Posh/Manage.ps1 b/scripts/Windows/Software/Oh My Posh/Manage.ps1 index cc9b8c12..5ca0dcc5 100644 --- a/scripts/Windows/Software/Oh My Posh/Manage.ps1 +++ b/scripts/Windows/Software/Oh My Posh/Manage.ps1 @@ -7,7 +7,7 @@ Start-SoftwareInstaller @args ` -Installer { - Install-WingetPackage JanDeDobbeleer.OhMyPosh -ArgumentList "--scope","machine"; + Install-WingetPackage JanDeDobbeleer.OhMyPosh -ArgumentList "--scope", "machine"; } ` -Configurator { . $base -Action ([InstallerAction]::Configure) @args; diff --git a/scripts/Windows/Software/Thunderbird/Manage.ps1 b/scripts/Windows/Software/Thunderbird/Manage.ps1 index d7cdd2cd..3d663468 100644 --- a/scripts/Windows/Software/Thunderbird/Manage.ps1 +++ b/scripts/Windows/Software/Thunderbird/Manage.ps1 @@ -6,7 +6,7 @@ using namespace Microsoft.Win32; Start-SoftwareInstaller @args ` -Installer { - Install-ChocoPackage thunderbird -ArgumentList "--params",'"/NoTaskbarShortcut /NoDesktopShortcut"' + Install-ChocoPackage thunderbird -ArgumentList "--params", '"/NoTaskbarShortcut /NoDesktopShortcut"'; } ` -Configurator { Write-Host "Making Thunderbird the default mail program…"; diff --git a/scripts/Windows/Software/TrackMania United Forever/Manage.ps1 b/scripts/Windows/Software/TrackMania United Forever/Manage.ps1 index 8f99c6f3..493f03a6 100644 --- a/scripts/Windows/Software/TrackMania United Forever/Manage.ps1 +++ b/scripts/Windows/Software/TrackMania United Forever/Manage.ps1 @@ -19,12 +19,12 @@ function Get-TMForeverInstallerComponents { ) @{ - context = @{ - iconName = $IconName; + context = @{ + iconName = $IconName; userDirectory = $UserDirectory; - installer = $Installer; + installer = $Installer; }; - installer = { + installer = { param([hashtable] $Context) $iconName = $Context.IconName; @@ -38,7 +38,7 @@ function Get-TMForeverInstallerComponents { & $Context.Installer; Remove-DesktopIcon "*$iconName*"; }; - userBackup = { + userBackup = { param( [string] $Name, [hashtable] $Context diff --git a/scripts/Windows/Software/Ubiquiti UniFi Controller/Manage.ps1 b/scripts/Windows/Software/Ubiquiti UniFi Controller/Manage.ps1 index 90cd6be9..3e6790f9 100644 --- a/scripts/Windows/Software/Ubiquiti UniFi Controller/Manage.ps1 +++ b/scripts/Windows/Software/Ubiquiti UniFi Controller/Manage.ps1 @@ -6,9 +6,9 @@ Start-SoftwareInstaller @args ` -Installer { Write-Information "Downgrading AutoHotkey…"; $id = "AutoHotkey.AutoHotkey"; - $uninstall = { winget uninstall --accept-source-agreements -e --id "$id"; }; + $uninstall = { winget uninstall --accept-source-agreements -e --id "$id" }; & $uninstall; - Install-WingetPackage $id -ArgumentList "--version","1.1.37.00"; + Install-WingetPackage $id -ArgumentList "--version", "1.1.37.00"; Install-ChocoPackage temurin11jre; Write-Host "Installing UniFi Controller…"; diff --git a/scripts/Windows/Software/VisualStudio/Manage.ps1 b/scripts/Windows/Software/VisualStudio/Manage.ps1 index 0f4cc3f1..9711531c 100644 --- a/scripts/Windows/Software/VisualStudio/Manage.ps1 +++ b/scripts/Windows/Software/VisualStudio/Manage.ps1 @@ -74,7 +74,7 @@ if (Test-Path $file) { Write-Host "Restoring ``$packageName``…"; - Install-ChocoPackage $packageName -ArgumentList "--params","--config `"$file`""; + Install-ChocoPackage $packageName -ArgumentList "--params", "--config `"$file`""; } } diff --git a/scripts/Windows/Software/Windows/Manage.ps1 b/scripts/Windows/Software/Windows/Manage.ps1 index 218f141a..ceef0fe6 100644 --- a/scripts/Windows/Software/Windows/Manage.ps1 +++ b/scripts/Windows/Software/Windows/Manage.ps1 @@ -124,7 +124,7 @@ using namespace Microsoft.Win32; "*ChipChamp*", "*Facebook*", "*LinkedIn*"), - [System.Func[System.Object,bool]]{ + [System.Func[System.Object, bool]] { param($pattern) $_.packagedAppId -like "$pattern"; })); diff --git a/scripts/Windows/Software/aliae/Main.ps1 b/scripts/Windows/Software/aliae/Main.ps1 index ad9ec3fa..49643f5b 100644 --- a/scripts/Windows/Software/aliae/Main.ps1 +++ b/scripts/Windows/Software/aliae/Main.ps1 @@ -7,7 +7,7 @@ Start-SoftwareInstaller @args ` -Installer { - Install-WingetPackage JanDeDobbeleer.Aliae -ArgumentList "--scope","machine"; + Install-WingetPackage JanDeDobbeleer.Aliae -ArgumentList "--scope", "machine"; } ` -Configurator { . $base -Action ([InstallerAction]::Configure) @args; diff --git a/scripts/Windows/Software/discord/Main.ps1 b/scripts/Windows/Software/discord/Main.ps1 index d4eb4d44..b813a8c9 100644 --- a/scripts/Windows/Software/discord/Main.ps1 +++ b/scripts/Windows/Software/discord/Main.ps1 @@ -4,7 +4,7 @@ . "$PSScriptRoot/../../../Common/Types/InstallerAction.ps1"; Start-SoftwareInstaller @args ` --UserConfigurator { - Install-WingetPackage Vencord.Vesktop; - Remove-DesktopIcon "Vesktop*"; -}; + -UserConfigurator { + Install-WingetPackage Vencord.Vesktop; + Remove-DesktopIcon "Vesktop*"; + }; diff --git a/scripts/Windows/Software/git/Manage.ps1 b/scripts/Windows/Software/git/Manage.ps1 index 46797921..8e32a4c9 100644 --- a/scripts/Windows/Software/git/Manage.ps1 +++ b/scripts/Windows/Software/git/Manage.ps1 @@ -16,7 +16,7 @@ $params += " /DefaultBranchName:`"$defaultBranch`""; } - Install-ChocoPackage git -ArgumentList "--params",$params; + Install-ChocoPackage git -ArgumentList "--params", $params; } ` -Configurator { & $base ([InstallerAction]::Configure) @args; diff --git a/scripts/Windows/Software/osu!/Manage.ps1 b/scripts/Windows/Software/osu!/Manage.ps1 index ec417c85..004fad5e 100644 --- a/scripts/Windows/Software/osu!/Manage.ps1 +++ b/scripts/Windows/Software/osu!/Manage.ps1 @@ -7,7 +7,7 @@ $getInstallPath = { return "$((Get-KnownFolder -SpecialFolder ProgramFilesX86).Path)/osu!"; - } + }; Start-SoftwareInstaller @args ` -Installer { diff --git a/scripts/Windows/Software/vscode/Main.ps1 b/scripts/Windows/Software/vscode/Main.ps1 index 386e56f1..b6482325 100644 --- a/scripts/Windows/Software/vscode/Main.ps1 +++ b/scripts/Windows/Software/vscode/Main.ps1 @@ -6,8 +6,8 @@ Start-SoftwareInstaller @args ` -Installer { - Install-ChocoPackage vscode -ArgumentList "--params","/NoDesktopIcon"; - Install-ChocoPackage vscodium -ArgumentList "--params","/NoDesktopIcon /AssociateWithFiles"; + Install-ChocoPackage vscode -ArgumentList "--params", "/NoDesktopIcon"; + Install-ChocoPackage vscodium -ArgumentList "--params", "/NoDesktopIcon /AssociateWithFiles"; refreshenv; } ` -UserConfigurator { diff --git a/scripts/copy-repo.fish b/scripts/copy-repo.fish index 36ce67bd..5de5fc73 100755 --- a/scripts/copy-repo.fish +++ b/scripts/copy-repo.fish @@ -4,8 +4,8 @@ begin set -l dir "$(status dirname)/.." git clone "$dir" "$target" cp "$dir/.git/config" "$target/.git/config" - git -C "$dir" diff HEAD | git -C "$target" apply --allow-empty &> /dev/null + git -C "$dir" diff HEAD | git -C "$target" apply --allow-empty &>/dev/null - and git -C "$dir" ls-files --exclude-standard --others | \ + and git -C "$dir" ls-files --exclude-standard --others | rsync --files-from=/dev/stdin "$dir" "$target" end diff --git a/winiso/deploy.fish b/winiso/deploy.fish index a20d7b3a..2d4fe6a4 100755 --- a/winiso/deploy.fish +++ b/winiso/deploy.fish @@ -22,14 +22,14 @@ begin sed "s/\//\\\\/g" end - argparse --name (status filename) -x "iso,usb" "iso" "usb" "debug" -- $argv + argparse --name (status filename) -x "iso,usb" iso usb debug -- $argv or exit 1 - set -l mountDir "/mnt" - set -l setupLabel "winiso-valhalla" - set -l projectPath "PortValhalla" + set -l mountDir /mnt + set -l setupLabel winiso-valhalla + set -l projectPath PortValhalla set -l systemDrivePath "sources/\$OEM\$/\$1" - set -l pwshPath "pwsh" + set -l pwshPath pwsh set -l localProjectPath "$systemDrivePath/$projectPath" set -l cacheDir ~/.cache/winiso-valhalla set -l winpe "$cacheDir/winpe.iso" @@ -56,22 +56,27 @@ begin set -l files - set -l fileDefinitions \ + set -l fileDefinitions ( + # Intel LAN driver + ) \ drivers/network/intel \ "https://dlcdnets.asus.com/pub/ASUS/mb/04LAN/DRV_LAN_Intel_I211_UWD_TP_W10_64_VER12151841_20190306R.zip?model=ROG%20ZENITH%20EXTREME%20ALPHA" \ zip \ - . \ - \ + . ( + # Marvell LAN driver + ) \ drivers/network/marvell \ "https://dlcdnets.asus.com/pub/ASUS/mb/04LAN/DRV_LAN_Marvell_TP_TSD_W11_64_V3130_20211118R.zip?model=ROG%20ZENITH%20EXTREME%20ALPHA" \ zip \ - ./x64 \ - \ + ./x64 ( + # Git + ) \ software/git \ "https://github.com/git-for-windows/git/releases/download/v2.41.0.windows.1/PortableGit-2.41.0-64-bit.7z.exe" \ exe \ - . \ - \ + . ( + # PowerShell Core + ) \ software/pwsh \ "https://github.com/PowerShell/PowerShell/releases/download/v7.3.7/PowerShell-7.3.7-win-x64.zip" \ zip \ @@ -107,9 +112,9 @@ begin case zip unzip "$file" -d "$tempDir" case exe - pushd "$tempDir" > /dev/null + pushd "$tempDir" >/dev/null and 7z x "$file" - and popd > /dev/null + and popd >/dev/null end and mkdir -p (dirname "$target") @@ -157,13 +162,13 @@ begin "echo Loading Drivers..." \ 'pwsh -file "X:\Scripts\Drivers.ps1"' \ "echo Configuring Network..." \ - "wpeinit" \ + wpeinit \ "echo Configuring keyboard layout..." \ "wpeutil SetKeyboardLayout 0807:00000807" \ "echo Disabling Energy Saving Mode..." \ "powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c" \ 'start pwsh -NoExit -ExecutionPolicy bypass -file "X:\Scripts\Startup.ps1"' - end | sudo tee "$startupFile" > /dev/null + end | sudo tee "$startupFile" >/dev/null end and mkdir -p "$(dirname "$winpe")" @@ -180,11 +185,11 @@ begin and chmod u+w (dirname "$wimFile") and chmod u+w "$wimFile" - and while [ ! (wiminfo "$wimFile" 1 | grep "^$editionField" | cut -d ":" -f2 | string trim) = "Professional" ] + and while [ ! (wiminfo "$wimFile" 1 | grep "^$editionField" | cut -d ":" -f2 | string trim) = Professional ] wimdelete --soft "$wimFile" 1 end - and while wiminfo "$wimFile" 2 &> /dev/null + and while wiminfo "$wimFile" 2 &>/dev/null wimdelete --soft "$wimFile" 2 end @@ -214,7 +219,7 @@ begin set -l CONFIG_NAME "$name" set -l file "$projectPath/.config/$name.json" and mkdir -p (dirname $file) - and getConfig "valhalla.windows.config" --json > "$file" + and getConfig "valhalla.windows.config" --json >"$file" end end @@ -250,7 +255,7 @@ begin chooseDisk winDisk and echo "Proceeding will cause the disk `$winDisk` to be wiped." - and if ! confirm "Are you sure you want to continue?" "n" + and if ! confirm "Are you sure you want to continue?" n exit 1 end @@ -271,7 +276,7 @@ begin set -l diskPath (find -L /dev/disk/by-diskseq -samefile $winDisk) set -l bootDisk "$diskPath-part1" set -l dataDisk "$diskPath-part2" - and sudo mkfs.fat -F 32 -n "BOOT" "$bootDisk" + and sudo mkfs.fat -F 32 -n BOOT "$bootDisk" and sudo mkfs.ntfs -fFL "$setupLabel" "$dataDisk" and sudo mount --mkdir "$bootDisk" "$bootPath" and sudo mount --mkdir "$dataDisk" "$dataPath" diff --git a/winiso/winpefs/Scripts/Startup.ps1 b/winiso/winpefs/Scripts/Startup.ps1 index ec1663b8..a3161049 100644 --- a/winiso/winpefs/Scripts/Startup.ps1 +++ b/winiso/winpefs/Scripts/Startup.ps1 @@ -1,3 +1,3 @@ -$env:SETUP_DRIVE = (ConvertFrom-Csv ((wmic volume where "Label='$env:SETUP_LABEL'" get DriveLetter) | ForEach-Object { "$_".Trim(); })).DriveLetter; +$env:SETUP_DRIVE = (ConvertFrom-Csv ((wmic volume where "Label='$env:SETUP_LABEL'" get DriveLetter) | ForEach-Object { "$_".Trim() })).DriveLetter; Set-Location (Join-Path $env:SETUP_DRIVE $env:LOCAL_PROJECT_PATH) & ./scripts/Windows/OS/Setup.ps1;