Compare commits

...

544 commits

Author SHA1 Message Date
Manuel Thalmann bfeea8cb21 Reboot before creating users 2024-09-12 19:04:48 +02:00
Manuel Thalmann e1d3191020 Pause before reboot when debugging 2024-09-12 19:04:37 +02:00
Manuel Thalmann ff284c1493 Improve layout of oh-my-posh prompt 2024-09-12 19:02:56 +02:00
Manuel Thalmann d5ed4b4cb7 Ensure partition script exits early on error 2024-09-12 19:02:33 +02:00
Manuel Thalmann 9312e92e5c Fix creation of multiple users 2024-09-12 19:00:00 +02:00
Manuel Thalmann 2b8b26477f Ensure fish scripts exit early 2024-09-12 18:52:03 +02:00
Manuel Thalmann 46a6847316 Allow removing setup options 2024-09-12 18:44:58 +02:00
Manuel Thalmann 34c53ef27c Fix execution of OS scripts 2024-09-12 18:44:40 +02:00
Manuel Thalmann 9763c78886 Execute partition script using shebang 2024-09-12 18:44:14 +02:00
Manuel Thalmann fc515eac83 Clarify that partition script edits partitions 2024-09-12 18:43:33 +02:00
Manuel Thalmann dc579c71b1 Prevent use of glob 2024-09-12 18:39:50 +02:00
Manuel Thalmann 2962896615 Ensure partition presence using partprobe 2024-09-12 18:39:18 +02:00
Manuel Thalmann 1d47795c0b Exclude unnecessary files from backup 2024-09-10 02:39:37 +02:00
Manuel Thalmann a9a037597f Add a word of warning after backup 2024-09-10 00:38:35 +02:00
Manuel Thalmann 0dba76d1f5 Add a script for creating backups 2024-09-10 00:37:13 +02:00
Manuel Thalmann d61ad60d70 Force profile selection for Windows installation actions 2024-09-09 00:04:06 +02:00
Manuel Thalmann 72e5abb2b6 Force line endings of Unix scripts 2024-09-09 00:00:49 +02:00
Manuel Thalmann 053a9ce142 Start setup automatically 2024-09-08 17:48:10 +02:00
Manuel Thalmann 902a8d504d Show profile selection during setup 2024-09-08 17:48:02 +02:00
Manuel Thalmann e22aab490b Add a function for selecting the profile 2024-09-08 17:47:49 +02:00
Manuel Thalmann 7b140b2c7f Use same installer script for all profiles 2024-09-08 17:47:28 +02:00
Manuel Thalmann 1c068468c1 Fix non-functioning WSL installation 2024-09-08 17:42:31 +02:00
Manuel Thalmann 488358093f Make Oh-My-Posh theme location dynamic 2024-09-08 17:42:11 +02:00
Manuel Thalmann 1a2b088678 Improve performance 2024-09-08 17:41:30 +02:00
Manuel Thalmann 0fb175012e Update Selenium to the newest version 2024-09-08 17:12:01 +02:00
Manuel Thalmann 5879aefe04 Switch to named flakes 2024-09-08 17:09:01 +02:00
Manuel Thalmann 4c55137785 Store user related options properly 2024-09-03 23:11:28 +02:00
Manuel Thalmann 68d258daa6 Refactor the directory structure 2024-09-03 23:10:35 +02:00
Manuel Thalmann 38d123e4f1 Add code for cleaning up after installations 2024-09-03 22:15:15 +02:00
Manuel Thalmann c4ebf9d72e Add functions for uninstalling packages 2024-09-03 22:14:21 +02:00
Manuel Thalmann 8372d6b6ef Improve assignments of groups 2024-09-03 20:32:01 +02:00
Manuel Thalmann 2cb9afaf5a Remove unnecessary policy change 2024-09-03 16:31:12 +02:00
Manuel Thalmann 2b73da1f64 Migrate winiso script to fish 2024-09-03 12:08:47 +02:00
Manuel Thalmann 4d4b6a9386 Ask for live scripts only once 2024-09-03 12:08:35 +02:00
Manuel Thalmann 47cccf0268 Install Ubuntu automatically 2024-09-03 12:08:14 +02:00
Manuel Thalmann 544e1158ff Add a backup script for reWASD 2024-09-03 12:02:48 +02:00
Manuel Thalmann 63ffe417ca Add a backup script for Visual Studio 2024-09-03 12:02:32 +02:00
Manuel Thalmann 174980ae76 Allow backing up TrackMania Forever 2024-09-03 12:02:09 +02:00
Manuel Thalmann 7a540836dd Allow testing winget packages with specific scope 2024-09-03 01:16:42 +02:00
Manuel Thalmann 9383b251ad Allow backing up RetroArch 2024-08-28 13:07:58 +02:00
Manuel Thalmann e7ecf83e55 Add scripts for backing up PuTTY 2024-08-28 13:00:37 +02:00
Manuel Thalmann 8802f970ae Add scripts for backing up osu! 2024-08-28 12:47:07 +02:00
Manuel Thalmann 2aa431726c Install osu!lazer per user 2024-08-28 12:37:20 +02:00
Manuel Thalmann 756c990bb0 Add backup support for ManiaPlanet 2024-08-28 05:18:52 +02:00
Manuel Thalmann 3f195eb94a Add scripts for backing up and restoring LGHub 2024-08-28 05:05:55 +02:00
Manuel Thalmann 9576f7f58a Allow users to restore a backup 2024-08-28 04:40:32 +02:00
Manuel Thalmann 59f3a56183 Add scripts for backing up and restoring personal files 2024-08-28 04:40:00 +02:00
Manuel Thalmann c43d522a08 Fix non-functioning profile script 2024-08-28 04:39:15 +02:00
Manuel Thalmann 1cc4a9c023 Ensure 7z is installed for backups 2024-08-28 04:38:56 +02:00
Manuel Thalmann 9c721cea8d Streamline restoration of directories 2024-08-28 04:38:30 +02:00
Manuel Thalmann a6b164da09 Set a default path for backup artifacts 2024-08-28 00:38:20 +02:00
Manuel Thalmann 7a080893bc Add capabilities to back up apps 2024-08-28 00:37:04 +02:00
Manuel Thalmann 2512fab756 Allow specifying a backup action 2024-08-28 00:29:33 +02:00
Manuel Thalmann a620a6d15f Ignore unspecified backup archives 2024-08-28 00:22:38 +02:00
Manuel Thalmann bb67590008 Ignore inexistent backup artifacts 2024-08-28 00:21:06 +02:00
Manuel Thalmann 808f0964f2 Make the install script action agnostic 2024-08-28 00:03:28 +02:00
Manuel Thalmann 92ccdfdda2 Rename the Windows installer script 2024-08-27 23:35:56 +02:00
Manuel Thalmann 9f34efa06b Rename outdated script 2024-08-27 23:08:41 +02:00
Manuel Thalmann 3d86a23e03 Silence errors concerning empty aliae configurations 2024-08-27 22:35:31 +02:00
Manuel Thalmann 8fdb7f7f83 Make Operations script cross platform 2024-08-27 22:27:44 +02:00
Manuel Thalmann d0895eca2e Handle OneShot tasks only on Windows 2024-08-27 21:32:49 +02:00
Manuel Thalmann e9e0a89acb Add a script for managing backups 2024-08-27 21:05:51 +02:00
Manuel Thalmann 742ed4afb5 Add tools for managing aliae 2024-08-27 18:58:33 +02:00
Manuel Thalmann c82f95d4fc Fix non-functioning aliae installation 2024-08-27 18:55:12 +02:00
Manuel Thalmann a8f6e80236 Create dedicated script for creating users 2024-08-27 17:04:17 +02:00
Manuel Thalmann 1465a3bed0 Create dedicated script for installing software 2024-08-27 16:41:08 +02:00
Manuel Thalmann 4182545e18 Prevent reading nix config multiple times 2024-08-27 14:35:04 +02:00
Manuel Thalmann ab0e63f45d Ensure only one user is enabled at once 2024-08-27 14:11:31 +02:00
Manuel Thalmann a8ea8dcbef Prevent unnecessary file creation 2024-08-27 14:06:56 +02:00
Manuel Thalmann 20d8498b17 Execute OneShot tasks in any operation 2024-08-27 14:05:16 +02:00
Manuel Thalmann 46de60f3e9 Use /mnt as mount directory 2024-08-27 04:30:12 +02:00
Manuel Thalmann 4d260800b6 Force the use of the managed distribution 2024-08-27 04:26:25 +02:00
Manuel Thalmann 99738e0e0b Initialize operation for all users 2024-08-27 04:24:29 +02:00
Manuel Thalmann b44f8806bf Handle initialization in operation code 2024-08-27 04:15:37 +02:00
Manuel Thalmann 4551b43409 Execute script non-interactive during OneShot tasks 2024-08-27 03:50:08 +02:00
Manuel Thalmann b638786a26 Exit script after running OneShot task 2024-08-27 03:45:44 +02:00
Manuel Thalmann 4e4a79f7a8 Modify user after first login 2024-08-27 03:27:54 +02:00
Manuel Thalmann 9f6efde958 Rearm Windows Activation before creating MSAcc 2024-08-27 03:25:19 +02:00
Manuel Thalmann e93c872ddf Register MSAcc logon script early 2024-08-27 03:24:37 +02:00
Manuel Thalmann 4532e75e55 Allow rebooting without registering setup 2024-08-27 03:11:35 +02:00
Manuel Thalmann f0a67ffc4e Fix non-functioning NoProfile argument 2024-08-27 02:09:04 +02:00
Manuel Thalmann d89019d960 Prevent unnecessary installation actions 2024-08-27 01:57:46 +02:00
Manuel Thalmann 74b28384c7 Only install PowerShell module if necessary 2024-08-27 01:25:32 +02:00
Manuel Thalmann 512a263f2c Streamline PowerShell installation 2024-08-27 00:45:46 +02:00
Manuel Thalmann 53bbe011f2 Add further functionality to the WSL script 2024-08-27 00:38:46 +02:00
Manuel Thalmann 0d9c4c76d5 Create a separate script for WSL interaction 2024-08-26 23:33:46 +02:00
Manuel Thalmann 1f700ab419 Fix recursive configuration 2024-08-25 03:58:28 +02:00
Manuel Thalmann 59eda06b83 Fix malformed module 2024-08-24 18:35:43 +02:00
Manuel Thalmann 95a49d68f0 Keep Windows fixes separate 2024-08-24 16:56:29 +02:00
Manuel Thalmann f9f5b142c8 Remove WSL after operation 2024-08-24 16:52:41 +02:00
Manuel Thalmann dff8ccaf62 Make distribution name unique 2024-08-24 16:41:05 +02:00
Manuel Thalmann 6ff940d47f Streamline WSL distribution name 2024-08-24 16:27:34 +02:00
Manuel Thalmann a9c665889e Remove unused resources after user setup 2024-08-24 16:15:10 +02:00
Manuel Thalmann 6cac8246c0 Print update logs properly 2024-08-24 14:47:51 +02:00
Manuel Thalmann 609b3223f6 Allow overriding Windows settings 2024-08-24 14:20:22 +02:00
Manuel Thalmann a94d633c4b Update incorrect path 2024-08-24 14:11:38 +02:00
Manuel Thalmann 5bd4fb4c45 Simplify osu!lazer installation 2024-08-24 14:10:02 +02:00
Manuel Thalmann ad7743c3dd Determine name of setup user properly 2024-08-24 14:01:05 +02:00
Manuel Thalmann d16f328767 Make OMP configuration platform independent 2024-08-24 13:27:48 +02:00
Manuel Thalmann f0e169de33 Fix incorrect character in OMP theme 2024-08-24 13:27:35 +02:00
Manuel Thalmann cb589e69ee Remove unnecessary code 2024-08-24 04:25:07 +02:00
Manuel Thalmann 43cde70d91 Remove unnecessary loop 2024-08-24 04:24:55 +02:00
Manuel Thalmann ffbc87064e Add missing module 2024-08-24 04:24:37 +02:00
Manuel Thalmann 179cb57768 Add nextcloud to the module list 2024-08-24 04:18:57 +02:00
Manuel Thalmann 3926269a3d Add a function for creating shortcuts 2024-08-24 04:18:33 +02:00
Manuel Thalmann f03e5b5a06 Configure nextcloud syncs 2024-08-24 04:07:47 +02:00
Manuel Thalmann f077c63a55 Allow configuring nextcloud syncs 2024-08-24 04:07:35 +02:00
Manuel Thalmann 1a8eac196a Create separate option holding win users 2024-08-24 03:25:28 +02:00
Manuel Thalmann b5c2eb7882 Rename Nextcloud installer 2024-08-24 01:50:07 +02:00
Manuel Thalmann d6027982dc Add file system driver for dual boot 2024-08-24 01:41:09 +02:00
Manuel Thalmann 24a3c90749 Prevent unnecessary config evaluation 2024-08-24 01:31:39 +02:00
Manuel Thalmann d0c0c62b0c Fix non-functioning installer 2024-08-24 01:27:26 +02:00
Manuel Thalmann d7f34a9c9c Install vscode extensions by default 2024-08-24 01:16:56 +02:00
Manuel Thalmann 0ce927d6ed Load theme file from WSL properly 2024-08-24 00:59:59 +02:00
Manuel Thalmann f0b6672fec Update aliae configuration script 2024-08-24 00:42:57 +02:00
Manuel Thalmann 2fb5fa03c9 Strip duplicate variables and aliases 2024-08-24 00:08:58 +02:00
Manuel Thalmann 14297367ae Install posh theme automatically 2024-08-23 23:53:48 +02:00
Manuel Thalmann 2392b40987 Export missing function 2024-08-23 23:50:13 +02:00
Manuel Thalmann 076b06ef19 Install aliae by default 2024-08-23 23:46:23 +02:00
Manuel Thalmann acc6ca5403 Add scripts for changing aliae config 2024-08-23 23:44:51 +02:00
Manuel Thalmann 90389abc43 Fix compatibility with mixed new line characters 2024-08-23 23:44:23 +02:00
Manuel Thalmann 1f0c8ff4e0 Add a script for installing aliae 2024-08-23 22:38:28 +02:00
Manuel Thalmann 6be1a93617 Add desired posh theme 2024-08-23 19:43:06 +02:00
Manuel Thalmann d2228ee198 Make option names more clear 2024-08-23 19:42:27 +02:00
Manuel Thalmann d1fefa9d7d Allow configuring oh-my-posh 2024-08-23 19:39:18 +02:00
Manuel Thalmann 15c9550abe Fetch config from proper section 2024-08-23 19:24:49 +02:00
Manuel Thalmann ba12d3dfdf Adjust configuration accordingly 2024-08-23 19:14:09 +02:00
Manuel Thalmann 1a7a5e1f56 Refactor option descriptions 2024-08-23 19:02:06 +02:00
Manuel Thalmann 96377bc11b Clean up the Windows configuration 2024-08-23 18:59:49 +02:00
Manuel Thalmann 47b0e000a1 Clean up the users.nix file 2024-08-23 18:51:54 +02:00
Manuel Thalmann 52db008682 Create dedicated rclone module 2024-08-23 18:48:30 +02:00
Manuel Thalmann aa608e3fb3 Move git module to separate directory 2024-08-23 18:42:16 +02:00
Manuel Thalmann f6b5aa4378 Move git options to separate module 2024-08-23 18:40:24 +02:00
Manuel Thalmann ea51f83639 Fix inheritance of user config 2024-08-23 18:28:20 +02:00
Manuel Thalmann 4108a300c8 Allow OS specific settings 2024-08-23 18:11:48 +02:00
Manuel Thalmann c161a64d1a Update archiso 2024-08-23 14:19:56 +02:00
Manuel Thalmann 15984e16af Set user info during git setup 2024-08-23 02:01:16 +02:00
Manuel Thalmann ee51f61a0f Make all config scripts platform independent 2024-08-23 01:57:53 +02:00
Manuel Thalmann 2ce9f6f731 Allow leaving aliases unspecified 2024-08-23 01:52:25 +02:00
Manuel Thalmann 1816dd8fe3 Make scripts platform independent 2024-08-23 01:52:04 +02:00
Manuel Thalmann 693dd414df Add scripts for configuring git 2024-08-23 01:43:26 +02:00
Manuel Thalmann 7411addeba Configure software implicitly 2024-08-23 01:41:32 +02:00
Manuel Thalmann 18eaae2164 Skip profile creation for PinnedItem 2024-08-22 23:55:41 +02:00
Manuel Thalmann e2a8084b0b Allow skipping powershell module registration 2024-08-22 23:55:00 +02:00
Manuel Thalmann dd6ccf8b37 Add profiles to the flake 2024-08-22 23:37:53 +02:00
Manuel Thalmann 09b12efbb8 Remove user profile of OneShot user 2024-08-22 23:12:11 +02:00
Manuel Thalmann cb3c285078 Add missing OneShotTask declaration 2024-08-22 20:41:30 +02:00
Manuel Thalmann 64611ab928 Fix infinite loop 2024-08-22 20:41:17 +02:00
Manuel Thalmann a1674d7090 Fix handling empty error messages 2024-08-22 20:12:18 +02:00
Manuel Thalmann 17820a63a6 Add choco to the profile of the setup user 2024-08-22 13:46:55 +02:00
Manuel Thalmann e91c688063 Fix incorrect typings 2024-08-22 11:11:12 +02:00
Manuel Thalmann c0bb75a01c Fix permission issues when enabling Win hack 2024-08-22 11:11:00 +02:00
Manuel Thalmann a012c336b4 Register setup script as admin 2024-08-22 11:10:39 +02:00
Manuel Thalmann 4a3e497532 Execute the entire installer using live scripts 2024-08-21 23:21:32 +02:00
Manuel Thalmann 008af9891a Streamline the creation of users 2024-08-21 18:34:18 +02:00
Manuel Thalmann 04e6c47a5b Replace osk with cmd during debugging 2024-08-21 18:33:41 +02:00
Manuel Thalmann 5ad465f021 Prevent pauses in OneShot tasks 2024-08-21 18:28:50 +02:00
Manuel Thalmann a0d44ca4a1 Print commands in debug mode 2024-08-21 18:28:08 +02:00
Manuel Thalmann c80c6e8fc2 Run OneShot tasks with dedicated user 2024-08-21 18:27:47 +02:00
Manuel Thalmann 85bb47994d Add function for generating startup command 2024-08-21 18:26:58 +02:00
Manuel Thalmann c24ddfd3aa Allow registering startup script for the default user 2024-08-21 18:20:11 +02:00
Manuel Thalmann eb3ffcde9f Prevent unnecessary errors during WSL execution 2024-08-21 14:08:26 +02:00
Manuel Thalmann 0763b3b5a8 Register WSL before running OneShot tasks 2024-08-21 03:37:44 +02:00
Manuel Thalmann 7ea26324b1 Overwrite broken module 2024-08-21 03:20:37 +02:00
Manuel Thalmann 888a8093ba Prevent initialization of nested operations 2024-08-21 03:18:31 +02:00
Manuel Thalmann e0848b6e1b Improve log messages of OneShot tasks 2024-08-21 02:02:30 +02:00
Manuel Thalmann 39b44ca6e8 Retry Linux path conversion for errors 2024-08-20 00:20:33 +02:00
Manuel Thalmann e0421e908a Fix typo 2024-08-20 00:20:07 +02:00
Manuel Thalmann 95bab2a45d Fix broken signature of Restart-Intermediate 2024-08-19 12:07:26 +02:00
Manuel Thalmann 8dfd90d660 Report unexpected path conversions 2024-08-19 02:50:41 +02:00
Manuel Thalmann 5011a8ab8a Load missing path 2024-08-19 02:50:19 +02:00
Manuel Thalmann 50d1825f92 Ensure error file can be read from 2024-08-19 02:24:45 +02:00
Manuel Thalmann 4b6f34b812 Streamline OneShot task handler 2024-08-19 02:24:30 +02:00
Manuel Thalmann 9116cb8266 Simplify script registration 2024-08-19 02:24:13 +02:00
Manuel Thalmann 0bf8652b03 Fix broken regedit paths 2024-08-19 01:38:25 +02:00
Manuel Thalmann 37268e0e76 Allow registering reboots for users 2024-08-19 01:37:14 +02:00
Manuel Thalmann ce03f18523 Prevent users from being excluded 2024-08-19 01:10:29 +02:00
Manuel Thalmann 30f767a88e Force copying of Linux users to Windows 2024-08-19 00:54:13 +02:00
Manuel Thalmann 103873c517 Improve log messages of updates 2024-08-18 12:20:21 +02:00
Manuel Thalmann b0351b5878 Remove unnecessary command 2024-08-18 10:24:15 +02:00
Manuel Thalmann 4875f962b0 Fix time for QEMU VMs 2024-08-18 09:35:16 +02:00
Manuel Thalmann ee41e5ba66 Remove unnecessary desktop icons 2024-08-18 09:25:23 +02:00
Manuel Thalmann faa1187714 Add a timeout for the reWASD downloader 2024-08-18 09:05:04 +02:00
Manuel Thalmann b4199c43a6 Allow setting a timeout for clicking download buttons 2024-08-18 09:04:42 +02:00
Manuel Thalmann fccc0c2a7a Emit errors concerning WSL commands 2024-08-17 13:51:10 +02:00
Manuel Thalmann e13a1c0eb1 Emit errors using Write-Error 2024-08-17 13:49:21 +02:00
Manuel Thalmann 8e0672b53b Convert Argument to string explicitly 2024-08-16 23:03:19 +02:00
Manuel Thalmann 2a03f8fffe Ignore unfinished browser downloads 2024-08-16 17:57:22 +02:00
Manuel Thalmann f010e1a03d Install powershell modules for all users 2024-08-16 16:43:30 +02:00
Manuel Thalmann c5b71096ec Fix typos 2024-08-16 16:10:09 +02:00
Manuel Thalmann 25f613d7a6 Install AutoHotkey as preparation 2024-08-16 15:22:09 +02:00
Manuel Thalmann c0b137903d Allow running live scripts in debug mode 2024-08-16 15:21:41 +02:00
Manuel Thalmann 887cf0b029 Generate env variables using shorthand scripts 2024-08-16 15:16:56 +02:00
Manuel Thalmann f01fef4adf Allow running installation in debug mode 2024-08-16 15:16:28 +02:00
Manuel Thalmann 1d9ea92f6e Redirect winiso exit code properly 2024-08-16 15:13:53 +02:00
Manuel Thalmann b4844c631d Allow specifying winiso build type 2024-08-16 15:13:33 +02:00
Manuel Thalmann 0d2c28e74a Refactor winget check for rare issue 2024-08-16 15:04:37 +02:00
Manuel Thalmann 9f43dbf0e8 Disable Windows Update reboot only as admin 2024-08-16 14:35:35 +02:00
Manuel Thalmann 28a90de5ae Add a function for queueing startup commands 2024-08-15 18:34:48 +02:00
Manuel Thalmann 18fb258ac2 Hide output of DISM commands 2024-08-15 13:57:15 +02:00
Manuel Thalmann af2b41fb1d Ensure website is loaded before download 2024-08-15 02:42:00 +02:00
Manuel Thalmann 17d6870538 Prevent Jellyfin from rebooting 2024-08-15 02:22:07 +02:00
Manuel Thalmann 2fcc77f4ee Improve handling of slow websites 2024-08-14 18:47:29 +02:00
Manuel Thalmann 120c05ced1 Fix potential CRC errors 2024-08-14 18:46:42 +02:00
Manuel Thalmann 934db1ff87 Ensure auto reboot is disabled properly 2024-08-12 21:32:53 +02:00
Manuel Thalmann 5baed04a6f Disable auto reboot by default 2024-08-12 01:27:50 +02:00
Manuel Thalmann 7c288a1e53 Add methods for managing auto restart feature 2024-08-12 01:23:42 +02:00
Manuel Thalmann 8cdb32b9a2 Install Wave Link first 2024-08-11 18:27:16 +02:00
Manuel Thalmann ceddb4acfa Throw an error when failing to load config 2024-08-11 18:27:06 +02:00
Manuel Thalmann ce9cd892bf Fix incorrect script path 2024-08-10 20:37:10 +02:00
Manuel Thalmann d018ff84c2 Allow leaving install action unspecified 2024-08-10 19:27:56 +02:00
Manuel Thalmann 529ff841ea Retrieve registry value properly 2024-08-10 19:26:53 +02:00
Manuel Thalmann 3fe762f7a2 Add scripts for installing git 2024-08-10 15:28:10 +02:00
Manuel Thalmann 014eb975ce Remove unnecessary code 2024-08-10 15:24:15 +02:00
Manuel Thalmann ce8feb5935 Add a function for removing the RunOnce key 2024-08-10 15:24:04 +02:00
Manuel Thalmann a59a306588 Set user groups properly 2024-08-10 15:23:38 +02:00
Manuel Thalmann f2282a9ac6 Configure MS accounts properly 2024-08-10 15:21:13 +02:00
Manuel Thalmann 7179e93084 Queue next user after configuration finished 2024-08-10 15:20:36 +02:00
Manuel Thalmann 24edf6a5e7 Disable UAC after logging in MS account 2024-08-10 15:19:14 +02:00
Manuel Thalmann 8305b66342 Enable OneShot listener for MS accounts 2024-08-10 15:18:10 +02:00
Manuel Thalmann 61520d4953 Set timezone automatically 2024-08-10 15:17:21 +02:00
Manuel Thalmann 1829e567ee Prevent variable overwrite 2024-08-10 15:16:57 +02:00
Manuel Thalmann 591eff31f9 Register installer script after disabling UAG 2024-08-10 15:16:27 +02:00
Manuel Thalmann 6ce1f9b9cc Redirect user for configuration properly 2024-08-10 15:16:00 +02:00
Manuel Thalmann 7879b3f915 Fix broken redirection of arguments 2024-08-10 15:15:40 +02:00
Manuel Thalmann eea1c19dd4 Determine installer action properly 2024-08-10 15:15:21 +02:00
Manuel Thalmann 9f5d9874dc Redirect arguments to chocolatey properly 2024-08-10 15:13:46 +02:00
Manuel Thalmann 5e3e4af20f Fix non-functioning OneShot script 2024-08-10 15:13:20 +02:00
Manuel Thalmann 1058913d7a Fix oneshot task execution 2024-08-10 06:11:55 +02:00
Manuel Thalmann a511aba2d2 Allow removing the OneShot listener 2024-08-10 05:19:24 +02:00
Manuel Thalmann 4cf9aac9a5 Remove duplicate code 2024-08-10 05:17:08 +02:00
Manuel Thalmann bd7a800237 Fix typo 2024-08-10 03:57:37 +02:00
Manuel Thalmann 42ac6851c1 Fix copy paste error 2024-08-10 03:57:26 +02:00
Manuel Thalmann 72ea501180 Allow skipping the User parameter 2024-08-10 03:40:37 +02:00
Manuel Thalmann 94cf40bd22 Fix incorrect script path 2024-08-10 03:13:13 +02:00
Manuel Thalmann b5d65079da Fix broken scripts 2024-08-10 01:50:52 +02:00
Manuel Thalmann bfd8c40548 Remove unnecessary confirmation dialogue 2024-08-10 00:23:47 +02:00
Manuel Thalmann 88f69879df Add a task for disabling UAC 2024-08-10 00:23:37 +02:00
Manuel Thalmann 556843f14d Force creation of sudo alias 2024-08-10 00:22:46 +02:00
Manuel Thalmann d5db33cb37 Allow execution of OneShot tasks 2024-08-10 00:22:30 +02:00
Manuel Thalmann 476a721376 Ensure CONFIG_MODULE is resolved 2024-08-09 23:23:55 +02:00
Manuel Thalmann 6185ca4c60 Add dedicated functions for creating startup scripts 2024-08-09 23:23:29 +02:00
Manuel Thalmann 937ad12042 Change login message 2024-08-09 22:11:12 +02:00
Manuel Thalmann d0889ae6dc Set up shared WSL 2024-08-09 16:02:33 +02:00
Manuel Thalmann 56b5f44323 Install updates only as admin 2024-08-09 16:02:24 +02:00
Manuel Thalmann cc41fed2fa Disable boot message only as admin 2024-08-09 16:02:00 +02:00
Manuel Thalmann d813d146b7 Add a function for allowing user access 2024-08-09 15:56:16 +02:00
Manuel Thalmann dd71366522 Fix broken reboot registration 2024-08-09 15:49:36 +02:00
Manuel Thalmann da6a3c627d Ensure the script path is detected properly 2024-08-09 14:45:50 +02:00
Manuel Thalmann 864dd521cf Allow automatic script execution for MS accounts 2024-08-09 14:45:29 +02:00
Manuel Thalmann 4404b6173b Reorder winget arguments 2024-08-09 14:45:05 +02:00
Manuel Thalmann 1a8e1d0c40 Allow registering reboot for the default user 2024-08-09 14:44:57 +02:00
Manuel Thalmann 74efc21819 Add a dedicated function for disabling boot message 2024-08-09 13:35:12 +02:00
Manuel Thalmann 78c9b76508 Implement root install loop using a switch 2024-08-09 13:34:46 +02:00
Manuel Thalmann 875935a223 Force computer reboots 2024-08-09 04:42:55 +02:00
Manuel Thalmann 2de8140182 Add scripts for controlling UAC 2024-08-09 04:29:26 +02:00
Manuel Thalmann 72a370383d Set displayname of all users 2024-08-09 04:20:00 +02:00
Manuel Thalmann 27944f1642 Login to users for configuration 2024-08-09 04:19:49 +02:00
Manuel Thalmann c26b791e7d Skip PWSH_PATH if undefined 2024-08-09 04:08:22 +02:00
Manuel Thalmann 16785a1793 Fix typo 2024-08-09 03:38:10 +02:00
Manuel Thalmann bb47bd1b56 Add missing setup stage 2024-08-09 03:02:25 +02:00
Manuel Thalmann d7cbe47dc9 Make Get-Users output explicit 2024-08-09 03:02:17 +02:00
Manuel Thalmann d632f966ae Allow displaying a boot message 2024-08-09 02:59:06 +02:00
Manuel Thalmann 587e3e4c5f Disable users by default 2024-08-09 02:58:01 +02:00
Manuel Thalmann f2aee71256 Add a stage for configuring users 2024-08-09 02:27:24 +02:00
Manuel Thalmann c957ee4b19 Detect installation properly 2024-08-09 02:24:59 +02:00
Manuel Thalmann 617a29da3e Remove unnecessary icon 2024-08-09 02:23:56 +02:00
Manuel Thalmann abbda0a38b Add Predator Z301C to the hardware list 2024-08-09 02:23:41 +02:00
Manuel Thalmann 13d33293eb Add support for the sudo command 2024-08-09 02:22:45 +02:00
Manuel Thalmann 08ac2e921a Fix renaming user 2024-08-09 02:20:27 +02:00
Manuel Thalmann e7b9a92918 Make specifying PWSH_PATH optional 2024-08-09 02:12:27 +02:00
Manuel Thalmann 4becccc18b Show error properly 2024-08-09 02:00:18 +02:00
Manuel Thalmann 9e1f6ca788 Fix typo 2024-08-09 01:53:59 +02:00
Manuel Thalmann f21ff7e5f0 Remove code duplication 2024-08-09 01:33:04 +02:00
Manuel Thalmann c3cc94e57d Remove unnecessary console output 2024-08-09 01:22:51 +02:00
Manuel Thalmann 3f9e6322bd Fix incorrect file paths 2024-08-09 00:17:05 +02:00
Manuel Thalmann 1ad932b017 Fix incorrect hardware name 2024-08-09 00:03:45 +02:00
Manuel Thalmann 26f2087ba1 Reorder installation steps 2024-08-08 23:03:10 +02:00
Manuel Thalmann 60b8308709 Suppress unnecessary output 2024-08-08 22:24:41 +02:00
Manuel Thalmann 6b6cbd337c Refactor the wsl installation check 2024-08-08 22:21:49 +02:00
Manuel Thalmann 1fa55e9578 Ensure WSL Ubuntu is installed 2024-08-08 22:08:13 +02:00
Manuel Thalmann ed6585161e Make config script platform independent 2024-08-08 18:21:16 +02:00
Manuel Thalmann 1b5d60b650 Leave groups unspecified 2024-08-08 17:50:32 +02:00
Manuel Thalmann 90d35da839 Add users during installation 2024-08-08 17:49:43 +02:00
Manuel Thalmann 931161b4cf Fix incorrect user conversion 2024-08-08 17:16:51 +02:00
Manuel Thalmann 37a71f7ed9 Keep Windows groups separate 2024-08-08 15:33:55 +02:00
Manuel Thalmann 5db8d0fec6 Remove unnecessary options from Win users 2024-08-08 15:32:05 +02:00
Manuel Thalmann 1fa4adb53b Inherit Windows users from linux 2024-08-08 15:28:29 +02:00
Manuel Thalmann 5a36ee2c42 Add functions for retrieving attributes 2024-08-08 14:45:34 +02:00
Manuel Thalmann 787ecd7953 Install Oh My Posh system wide 2024-08-08 14:23:15 +02:00
Manuel Thalmann e8ccc740cf Fix typo 2024-08-08 14:22:22 +02:00
Manuel Thalmann 22c0055e96 Skip scope argument by default 2024-08-08 14:22:13 +02:00
Manuel Thalmann 08b953fdf1 Fix incorrect file paths 2024-08-08 14:21:55 +02:00
Manuel Thalmann 536cacc324 Configure NVS after installation 2024-08-08 14:09:20 +02:00
Manuel Thalmann e9677a3d6f Refactor app association script 2024-08-08 14:09:07 +02:00
Manuel Thalmann b411a6a73d Fix typo 2024-08-08 14:08:48 +02:00
Manuel Thalmann 07dc211904 Apply the error action globally 2024-08-08 14:08:38 +02:00
Manuel Thalmann 790abdb5f3 Move PinnedItem script to proper location 2024-08-08 14:04:51 +02:00
Manuel Thalmann 31ce380ebc Add notes to installation script 2024-08-08 14:03:15 +02:00
Manuel Thalmann 7262a7752e Add a script for installing LGHub 2024-08-08 13:25:21 +02:00
Manuel Thalmann b305d93637 Reorder installation steps 2024-08-08 13:17:14 +02:00
Manuel Thalmann 5db92219aa Reload env after installing git 2024-08-08 12:18:04 +02:00
Manuel Thalmann 444f5e3f70 Enure features for PinnedItem are installed 2024-08-08 05:21:21 +02:00
Manuel Thalmann 58727d3dae Install features using chocolatey 2024-08-08 05:20:58 +02:00
Manuel Thalmann d90f81ecc1 Ensure git is installed 2024-08-08 05:14:31 +02:00
Manuel Thalmann 2bd2daf158 Fix broken XML document creation 2024-08-08 05:04:59 +02:00
Manuel Thalmann e293b56f8c Fix incorrect parameter access 2024-08-08 05:03:24 +02:00
Manuel Thalmann 59009a4628 Fix incorrect path 2024-08-08 05:01:45 +02:00
Manuel Thalmann 39e904cc7f Add a dedicated user option for windows 2024-08-08 04:45:27 +02:00
Manuel Thalmann 3ea2f39ced Add a stage for creating users 2024-08-08 04:38:40 +02:00
Manuel Thalmann 4f9b3f6ecd Add scripts for all remaining apps 2024-08-08 04:36:35 +02:00
Manuel Thalmann 80e370e954 Allow custom winget arguments 2024-08-08 04:29:00 +02:00
Manuel Thalmann 9d767fa845 Improve winget function 2024-08-08 04:28:21 +02:00
Manuel Thalmann 416a55df76 Add missing function 2024-08-08 04:20:11 +02:00
Manuel Thalmann dc156b7316 Refactor browser scripts 2024-08-08 03:32:03 +02:00
Manuel Thalmann 710268ed28 Ensure Selenium is imported 2024-08-08 02:59:02 +02:00
Manuel Thalmann dfa18b0671 Allow skipping the Action argument 2024-08-08 02:56:28 +02:00
Manuel Thalmann 394194d979 Rename all old installation scripts 2024-08-08 02:56:13 +02:00
Manuel Thalmann 1fb69f9cf9 Add options for enabling LG Hub 2024-08-08 02:29:51 +02:00
Manuel Thalmann 3ac5e0b712 Remove Firefox taskbar icon 2024-08-08 02:29:09 +02:00
Manuel Thalmann 137a41bdc1 Allow removing task bar icons 2024-08-08 02:28:40 +02:00
Manuel Thalmann 763b3ad3a2 Allow installing modules native only 2024-08-08 02:28:23 +02:00
Manuel Thalmann 6a7a237882 Rename old LGHub script 2024-08-08 02:27:39 +02:00
Manuel Thalmann 03e62fce35 Add missing config 2024-08-08 01:51:21 +02:00
Manuel Thalmann 784f05d80e Rename PuTTY script 2024-08-08 00:51:45 +02:00
Manuel Thalmann 44689082cf Fix permission issue 2024-08-08 00:48:18 +02:00
Manuel Thalmann 6d6a187d29 Add scripts for installing Tobii apps 2024-08-08 00:06:49 +02:00
Manuel Thalmann 2d585b7e7b Copy keyboard layout to welcome screen 2024-08-07 23:53:26 +02:00
Manuel Thalmann 39967a3efb Add scripts for desktop apps 2024-08-07 23:53:12 +02:00
Manuel Thalmann 553174e610 Rename old Nextcloud script 2024-08-07 23:45:56 +02:00
Manuel Thalmann 80f18a2014 Configure user only outside of setup 2024-08-07 23:30:29 +02:00
Manuel Thalmann f8190f1d02 Add a script for installing Oh My Posh 2024-08-07 23:22:04 +02:00
Manuel Thalmann a6ef92d55f Fix incorrect installation filter 2024-08-07 23:20:28 +02:00
Manuel Thalmann 9ef634c1b7 Fix profile script for individual profiles 2024-08-07 23:18:44 +02:00
Manuel Thalmann 1a1d75e19c Show messages if packages are installed 2024-08-07 23:18:23 +02:00
Manuel Thalmann 8f1b6bf2ed Fix incorrect package check 2024-08-07 23:17:07 +02:00
Manuel Thalmann ed854c8c3c Refactor default winget parameters 2024-08-07 22:56:42 +02:00
Manuel Thalmann 2b9fa4f72f Add scripts for installing PS modules 2024-08-07 22:55:25 +02:00
Manuel Thalmann 3bce7da58f Allow skipping PowerShell profile files 2024-08-07 22:25:42 +02:00
Manuel Thalmann 524e96c9ec Resolve dependency loop 2024-08-07 21:54:58 +02:00
Manuel Thalmann 6d55b8a31d Remove unnecessary statement 2024-08-07 21:53:26 +02:00
Manuel Thalmann 3d2f0fee27 Refactor chocolatey script 2024-08-07 21:50:21 +02:00
Manuel Thalmann 97a0466f94 Pass arguments to software script 2024-08-07 21:37:33 +02:00
Manuel Thalmann a3b17d50a5 Use internal OS detection 2024-08-07 21:35:03 +02:00
Manuel Thalmann bc571560a9 Refactor PowerShell profile script 2024-08-07 21:34:40 +02:00
Manuel Thalmann 0587c402ae Move scripts properly 2024-08-07 21:05:32 +02:00
Manuel Thalmann 984de111eb Add scripts for installing PowerShell 2024-08-07 20:30:12 +02:00
Manuel Thalmann b9803a2de7 Rename PowerShell script directory 2024-08-07 19:08:13 +02:00
Manuel Thalmann cd0b79820a Add script for installing Thunderbird 2024-08-07 18:57:27 +02:00
Manuel Thalmann 76e9f69a2a Install drivers in proper phase 2024-08-07 18:54:07 +02:00
Manuel Thalmann 9d5c9eb55b Add a script for installing WinSCP 2024-08-07 18:30:14 +02:00
Manuel Thalmann ded13359b3 Refactor app association script 2024-08-07 18:29:20 +02:00
Manuel Thalmann 022b623752 Prevent reboot during WaveLink installation 2024-08-07 18:01:17 +02:00
Manuel Thalmann ba5346787b Add scripts for installing drivers 2024-08-07 16:17:49 +02:00
Manuel Thalmann 630e42629e Add script for installing AMD packages 2024-08-07 15:25:12 +02:00
Manuel Thalmann 96ab1a2322 Add missing package for selenium 2024-08-07 15:24:56 +02:00
Manuel Thalmann fef722f9e5 Ensure correct types for setting download dir 2024-08-07 15:24:37 +02:00
Manuel Thalmann 8572ef1f46 Add a script for installing ASUS packages 2024-08-07 14:40:24 +02:00
Manuel Thalmann ee4d402a5d Refactor browser automation scripts 2024-08-07 14:28:26 +02:00
Manuel Thalmann b016f310ea Execute winget script in a module 2024-08-07 13:36:47 +02:00
Manuel Thalmann ec5b19474d Install components for browser automation 2024-08-07 13:36:31 +02:00
Manuel Thalmann 34d6ced776 Add functions for installing choco and winget packages 2024-08-07 13:22:12 +02:00
Manuel Thalmann 6662828dbe Add a function for checking winget packages 2024-08-07 13:18:29 +02:00
Manuel Thalmann 9b1654c828 Enhance the winget install check 2024-08-07 03:34:12 +02:00
Manuel Thalmann 8ae54f48e8 Add a function for checking NuGet packages 2024-08-07 03:23:59 +02:00
Manuel Thalmann 6dde1d3603 Fix non-functioning script 2024-08-07 03:23:21 +02:00
Manuel Thalmann e85504e40e Install PowerShell modules after removing old copy 2024-08-06 18:19:33 +02:00
Manuel Thalmann 1452bd3f1e Add config for declaring hardware 2024-08-06 17:23:20 +02:00
Manuel Thalmann 67152b7661 Silence unnecessary output 2024-08-06 17:07:57 +02:00
Manuel Thalmann b9591cb36f Add a separate function for executing software actions 2024-08-06 16:54:11 +02:00
Manuel Thalmann f8b7f2481b Add a function for checking whether a setup is being run 2024-08-06 14:32:37 +02:00
Manuel Thalmann 98020588ce Determine software script name properly 2024-08-06 12:21:48 +02:00
Manuel Thalmann a5eac04749 Fix incorrect path 2024-08-06 12:21:00 +02:00
Manuel Thalmann 8cfceba667 Fix incorrectly imported modules 2024-08-06 11:39:57 +02:00
Manuel Thalmann e206df494e Fix incorrect XPaths 2024-08-06 11:39:48 +02:00
Manuel Thalmann 75f9c54840 Create Windows image as normal user 2024-08-06 11:39:34 +02:00
Manuel Thalmann ace227693c Make the name of the setup user look more Windows like 2024-08-06 11:39:05 +02:00
Manuel Thalmann ceb036e80f Set the name of the setup user properly 2024-08-06 10:22:50 +02:00
Manuel Thalmann 134bf77a9a Add scripts for installing essential software 2024-08-06 00:04:02 +02:00
Manuel Thalmann 3542cd33e4 Add a function for removing desktop icons 2024-08-06 00:02:07 +02:00
Manuel Thalmann 3225d00f31 Add an option for showing file extensions 2024-08-05 23:22:22 +02:00
Manuel Thalmann ec5e4c6340 Ensure the environment variables are always set properly 2024-08-05 23:09:58 +02:00
Manuel Thalmann d6b7adb505 Fix incorrect argument initialization 2024-08-05 23:08:36 +02:00
Manuel Thalmann 7f652770d1 Ensure Arguments contains an object 2024-08-05 22:51:29 +02:00
Manuel Thalmann 68aaa413a6 Fix argument redirection 2024-08-05 22:49:44 +02:00
Manuel Thalmann d302f21790 Fix non-functioning script 2024-08-05 22:45:17 +02:00
Manuel Thalmann 53ac1902ac Allow running further installer actions within an installer 2024-08-05 22:29:20 +02:00
Manuel Thalmann 64c1f6e6e6 Refactor windows configuration script 2024-08-05 20:07:39 +02:00
Manuel Thalmann c9cbc56d9b Add settings for customizing windows 2024-08-05 19:12:59 +02:00
Manuel Thalmann e5597f52bb Refactor software script environment 2024-08-05 00:07:41 +02:00
Manuel Thalmann 3c931ecaa4 Set CONFIG_MODULE to full path by default 2024-08-02 01:57:31 +02:00
Manuel Thalmann 28215029fc Enter next stage after configuration 2024-08-02 01:44:56 +02:00
Manuel Thalmann eeaf5e02d4 Make config module persist in WSL 2024-08-02 00:47:33 +02:00
Manuel Thalmann 39a7f508a8 Ensure arguments are passed to fish 2024-08-01 23:36:03 +02:00
Manuel Thalmann 1e6dee9fbf Fix installer script structure 2024-08-01 23:34:35 +02:00
Manuel Thalmann ca3bd7269d Declare InstallerAction in a separate file 2024-08-01 22:52:51 +02:00
Manuel Thalmann 5af51b76cf Ensure necessary modules are imported 2024-08-01 21:49:46 +02:00
Manuel Thalmann 208a559b31 Import SetupStage enum into installation module 2024-08-01 21:32:33 +02:00
Manuel Thalmann eed031e193 Pause on error by default 2024-08-01 21:08:31 +02:00
Manuel Thalmann 7215cfe7b0 Display the software name during installation 2024-08-01 21:06:03 +02:00
Manuel Thalmann bc32dd49cf Fix non-functioning command 2024-08-01 20:34:55 +02:00
Manuel Thalmann eb6bcc0c0c Remove non-existent script 2024-08-01 19:10:10 +02:00
Manuel Thalmann ab44eed518 Nest installation functions in a module 2024-08-01 19:02:12 +02:00
Manuel Thalmann 42045d4570 Install winget if nonexistent 2024-08-01 18:58:33 +02:00
Manuel Thalmann 0b43f4db9b Use the new commands 2024-08-01 18:36:47 +02:00
Manuel Thalmann e717c9ba29 Add dedicated commands for checking software 2024-08-01 18:35:45 +02:00
Manuel Thalmann e37a482ed0 Add a script for managing software 2024-08-01 18:24:26 +02:00
Manuel Thalmann 2fc4ff4625 Fix nix installation check 2024-08-01 18:05:10 +02:00
Manuel Thalmann a8e5b39a45 Make nix visible to WSL 2024-08-01 18:03:48 +02:00
Manuel Thalmann b68564064f Add a function for getting the users to create 2024-08-01 17:56:42 +02:00
Manuel Thalmann 4a00f804ad Rename the file containing software functions 2024-08-01 17:38:59 +02:00
Manuel Thalmann 18ebf99de1 Configure clock for dualboot systems 2024-08-01 16:32:03 +02:00
Manuel Thalmann d1a8d08780 Enter configuration stage if nix exists 2024-08-01 16:28:48 +02:00
Manuel Thalmann c07961826e Reboot WSL to pick up nix 2024-08-01 16:25:18 +02:00
Manuel Thalmann dac832c8bb Add a function for retrieving nix options 2024-08-01 16:12:58 +02:00
Manuel Thalmann 9cd44db4e8 Make CONFIG_MODULE available in WSL 2024-08-01 14:39:44 +02:00
Manuel Thalmann 1b0fc045d5 Install WSL and nix by default 2024-08-01 14:06:40 +02:00
Manuel Thalmann 96d454475d Rename config module file 2024-08-01 12:39:27 +02:00
Manuel Thalmann 1452c2c9f2 Reword log messages 2024-08-01 12:32:43 +02:00
Manuel Thalmann 66b374e1ad Fix syntax error 2024-08-01 12:31:25 +02:00
Manuel Thalmann 28cddf6a1b Import scripting module inside the PowerManagement module 2024-08-01 12:24:28 +02:00
Manuel Thalmann 294609430e Add scripts for updating windows 2024-08-01 02:59:32 +02:00
Manuel Thalmann c56d79f21e Fix errors in the PowerManagement module 2024-08-01 02:19:05 +02:00
Manuel Thalmann c2c088ee6b Fix syntax error 2024-08-01 01:22:23 +02:00
Manuel Thalmann 5975f96155 Fix incorrect documentation comment 2024-07-31 23:10:21 +02:00
Manuel Thalmann cffe1672e8 Fix handling of setup stages 2024-07-31 22:33:37 +02:00
Manuel Thalmann bfb86531b5 Set registry values properly 2024-07-31 22:33:16 +02:00
Manuel Thalmann 7efb82e0e6 Display console output of hooks 2024-07-31 22:18:47 +02:00
Manuel Thalmann 95affefc35 Store stages using their name 2024-07-31 16:52:49 +02:00
Manuel Thalmann 382e3aac61 Refactor the installation loop architecture 2024-07-31 16:25:32 +02:00
Manuel Thalmann 60dc4af97e Implement install loop properly 2024-07-31 16:15:09 +02:00
Manuel Thalmann 2abd362e22 Implement the windows installation in a loop 2024-07-31 16:09:50 +02:00
Manuel Thalmann 7ed20680b1 Recreate script to first install pwsh 2024-07-31 15:52:41 +02:00
Manuel Thalmann 0a47d980c5 Normalize script formatting 2024-07-31 15:52:23 +02:00
Manuel Thalmann 6ff93d2060 Add a script for managing setup options 2024-07-31 15:42:02 +02:00
Manuel Thalmann 120888b232 Add a script for rebooting the computer 2024-07-31 15:41:45 +02:00
Manuel Thalmann a762ca15d1 Add a separate script for injecting values into scripts 2024-07-31 14:55:00 +02:00
Manuel Thalmann 1d388471d9 Add a script for checking for installed choco packages 2024-07-31 14:53:21 +02:00
Manuel Thalmann 6eec0251f5 Copy pwsh to newly setup windows systems 2024-07-31 14:47:42 +02:00
Manuel Thalmann ffaf0eb403 Rename old windows installation script 2024-07-30 18:47:01 +02:00
Manuel Thalmann 9d7c26b868 Add a function for executing hooks 2024-07-30 18:34:19 +02:00
Manuel Thalmann 5e4aab3eb3 Enable rclone services properly 2024-07-30 17:42:29 +02:00
Manuel Thalmann 5e0a25c2b6 Disable root bash login during installation 2024-07-30 00:54:43 +02:00
Manuel Thalmann 7bcea552b2 Silence unnecessary output 2024-07-30 00:53:20 +02:00
Manuel Thalmann 5b38858526 Install vscode extensions for each user 2024-07-30 00:53:10 +02:00
Manuel Thalmann 3fec9f0a1b Fix installation of brave extensions 2024-07-30 00:52:55 +02:00
Manuel Thalmann ed950a1da3 Fix non-functioning installation scripts 2024-07-30 00:52:35 +02:00
Manuel Thalmann 7ac1e9cb1d Fix missing variables 2024-07-30 00:51:50 +02:00
Manuel Thalmann 6521f7e861 Fix non-functioning command 2024-07-29 23:46:14 +02:00
Manuel Thalmann 923bd456ea Load dualboot sizes from nix 2024-07-29 01:44:12 +02:00
Manuel Thalmann 5308dfceff Improve handling of wmic output 2024-07-29 01:22:42 +02:00
Manuel Thalmann 78cb5ae8fd Save unnecessary space 2024-07-29 00:10:07 +02:00
Manuel Thalmann 2b50801f5d Allow overwriting packages 2024-07-28 23:45:30 +02:00
Manuel Thalmann f6260d41a1 Generate locales in proper system 2024-07-28 23:45:09 +02:00
Manuel Thalmann e28de727c0 Execute userConfig for current user only once 2024-07-28 23:44:58 +02:00
Manuel Thalmann 3411e4287b Prevent userConfig from execute multiple times 2024-07-28 23:43:11 +02:00
Manuel Thalmann 221a7b749d Nest Windows setup in a function 2024-07-28 20:52:07 +02:00
Manuel Thalmann 3342ca10d1 Configure Windows on DerGeret 2024-07-28 17:14:38 +02:00
Manuel Thalmann 9392cf2aae Inherit missing variable 2024-07-28 17:01:24 +02:00
Manuel Thalmann 4585b3c751 Fix aliae configuration 2024-07-28 16:57:47 +02:00
Manuel Thalmann afd488dbda Fix broken profile creation 2024-07-28 16:57:36 +02:00
Manuel Thalmann 0584532785 Inherit missing variables 2024-07-28 15:25:03 +02:00
Manuel Thalmann a0f74c7776 Run setup of der-geret using fish 2024-07-28 12:45:05 +02:00
Manuel Thalmann c88c6b434c Mark all fish scripts as executable 2024-07-28 12:32:08 +02:00
Manuel Thalmann 50ca9227b5 Make nix config accessible in scripts 2024-07-28 12:16:01 +02:00
Manuel Thalmann 69b934c3d0 Dump windows config for use during setup 2024-07-28 11:26:13 +02:00
Manuel Thalmann cddae6ef2b Add options for setting up windows 2024-07-28 01:56:41 +02:00
Manuel Thalmann c8139ae9c3 Fix confusing filename 2024-07-28 00:28:10 +02:00
Manuel Thalmann f863d9e360 Remove redundant script 2024-07-28 00:27:25 +02:00
Manuel Thalmann 107b8fc14b Run installer script after initialization 2024-07-27 23:18:04 +02:00
Manuel Thalmann c97150e22d Ensure iso directory exists 2024-07-27 22:04:40 +02:00
Manuel Thalmann eb8f07def1 Prevent unnecessary variables 2024-07-27 22:04:08 +02:00
Manuel Thalmann 3b346ee757 Pass boot script path via env variable 2024-07-27 18:59:47 +02:00
Manuel Thalmann 7118623d15 Pass label of setup disk as variable 2024-07-26 14:46:58 +02:00
Manuel Thalmann 51bcc6c16f Store installer drive as env variable 2024-07-26 14:43:12 +02:00
Manuel Thalmann 9a940d3c82 Copy repository settings 2024-07-26 14:43:02 +02:00
Manuel Thalmann eea07cbe00 Pass the project path in to the installation script 2024-07-26 14:29:45 +02:00
Manuel Thalmann b1276083fb Store PortValhalla in installation disk 2024-07-26 13:32:37 +02:00
Manuel Thalmann ce2681ed2b Ensure to always remove all leftovers 2024-07-25 20:02:47 +02:00
Manuel Thalmann 0c378ba754 Migrate the winiso project 2024-07-25 00:03:35 +02:00
Manuel Thalmann 422499e9cc Remove unnecessary config 2024-07-20 16:26:38 +02:00
Manuel Thalmann 40418dc7f3 Configure for current user if none is specified 2024-07-20 14:06:25 +02:00
Manuel Thalmann 4fb9e3b228 Remove unnecessary statement 2024-07-20 14:04:09 +02:00
Manuel Thalmann 6f1bfcd1f2 Add a function for checking whether a configuration is applied 2024-07-20 14:03:35 +02:00
Manuel Thalmann ad191005ca Remove default value of CONFIG_MODULE 2024-07-20 14:02:36 +02:00
Manuel Thalmann 0c1ce6cdca Remove necessity of nix config 2024-07-20 13:54:04 +02:00
Manuel Thalmann 03c465ed96 Create rclone syncs during setup 2024-07-20 13:47:07 +02:00
Manuel Thalmann ddfbc0e53f Preserve environment while running dbus session 2024-07-20 05:14:09 +02:00
Manuel Thalmann 0875cd8bee Fix typo 2024-07-20 05:09:42 +02:00
Manuel Thalmann 8a8d470e5d Force json output appropriately 2024-07-20 05:09:13 +02:00
Manuel Thalmann c2958ec453 Add a script draft for configuring rclone 2024-07-20 05:08:23 +02:00
Manuel Thalmann 3e8eca8876 Format config file 2024-07-20 04:35:58 +02:00
Manuel Thalmann 3e234d701b Load the default shell from the user config 2024-07-20 04:35:41 +02:00
Manuel Thalmann eb96816af6 Split nix configuration properly 2024-07-20 04:31:09 +02:00
Manuel Thalmann fed56d5609 Fix typo 2024-07-20 04:23:51 +02:00
Manuel Thalmann 12fcf13210 Prevent changing the working directory 2024-07-20 04:17:42 +02:00
Manuel Thalmann 1d6c41974f Add separate method for configuring git 2024-07-20 04:06:41 +02:00
Manuel Thalmann 4c4d2c75e9 Add function for configuring user settings 2024-07-20 03:50:38 +02:00
Manuel Thalmann 391ba0c92d Stop keeping track of installed software 2024-07-20 03:32:53 +02:00
Manuel Thalmann 757906d155 Call software scripts using individual fish commands 2024-07-20 03:27:36 +02:00
Manuel Thalmann 2270614318 Remove unnecessary statement 2024-07-20 03:27:20 +02:00
Manuel Thalmann 00b63b58d4 Add users before installing software 2024-07-20 03:13:17 +02:00
Manuel Thalmann a926829cc2 Read config keys properly 2024-07-20 01:59:33 +02:00
Manuel Thalmann 5f58124bbd Fix string formatting 2024-07-20 01:57:06 +02:00
Manuel Thalmann 9fb47de6db Fix malformed installer script 2024-07-20 01:51:14 +02:00
Manuel Thalmann 8d14af4cef Fix variable inheritance 2024-07-20 01:46:11 +02:00
Manuel Thalmann 1cd890e04a Fix configuration target 2024-07-20 01:43:53 +02:00
Manuel Thalmann a6655dfea7 Fix use of incorrect config keys 2024-07-20 01:38:53 +02:00
Manuel Thalmann 0877c36623 Fix variable visibility 2024-07-20 01:36:22 +02:00
Manuel Thalmann f993387a2d Ignore installation status by default 2024-07-20 01:32:42 +02:00
Manuel Thalmann fa88419548 Allow user-defined git config 2024-07-20 01:31:04 +02:00
Manuel Thalmann 82fbc84565 Allow flagging git as installed 2024-07-20 01:23:08 +02:00
Manuel Thalmann b6afa29dc2 Allow marking software as installed 2024-07-20 01:21:25 +02:00
Manuel Thalmann b19767ea08 Fix string formatting 2024-07-20 01:03:20 +02:00
Manuel Thalmann f54659fd94 Fix permission issues 2024-07-20 00:59:11 +02:00
Manuel Thalmann eaa85ce56d Remove test code 2024-07-20 00:47:48 +02:00
Manuel Thalmann ec29ab5002 Add users from configuration 2024-07-20 00:46:02 +02:00
Manuel Thalmann 3a6f921790 Add configurations for specifying users 2024-07-20 00:45:20 +02:00
Manuel Thalmann c5e7afa396 Allow applying custom functions during evaluation 2024-07-20 00:36:19 +02:00
Manuel Thalmann cb000757d8 Generate locales during setup 2024-07-19 21:18:20 +02:00
Manuel Thalmann 3f320ec605 Silence unnecessary console output 2024-07-17 16:41:42 +02:00
Manuel Thalmann 0d05a56b9c Fix creation of vscode config files 2024-07-17 16:39:03 +02:00
Manuel Thalmann 9cca02b44c Load missing variable 2024-07-17 16:33:59 +02:00
Manuel Thalmann c8f96fcb31 Force installing iptables-nft 2024-07-17 16:18:31 +02:00
Manuel Thalmann 6aa3724e32 Load missing variable 2024-07-17 16:04:57 +02:00
Manuel Thalmann 30bfcafeae Remove unnecessary statement 2024-07-17 15:59:09 +02:00
Manuel Thalmann 9b65cb96f7 Install logo-ls only if not present 2024-07-17 15:54:53 +02:00
Manuel Thalmann c841dadb7e Normalize casing of firefox directory 2024-07-17 15:54:09 +02:00
Manuel Thalmann bbc0df9fd4 Add missing packages 2024-07-17 15:49:30 +02:00
Manuel Thalmann ce2feb0dc1 Fix permission error 2024-07-17 15:22:41 +02:00
Manuel Thalmann 3ab402c474 Install bb at the end 2024-07-17 15:08:27 +02:00
Manuel Thalmann 53e0557025 Fix typo 2024-07-17 15:00:26 +02:00
Manuel Thalmann de471cae6f Fix incorrect paths 2024-07-17 15:00:01 +02:00
Manuel Thalmann aa360ac456 Fix typo 2024-07-17 14:55:30 +02:00
Manuel Thalmann 1db727efd9 Add scripts for installing school software 2024-07-17 14:26:01 +02:00
Manuel Thalmann 8b05b16f1f Streamline installation of all further software 2024-07-17 14:18:27 +02:00
Manuel Thalmann 9a75e6bed2 Silence unnecessary console output 2024-07-17 10:25:41 +02:00
Manuel Thalmann 50f81e15e3 Fix syntax error 2024-07-17 01:07:27 +02:00
Manuel Thalmann c5548e6858 Enable minegrub theme by default 2024-07-16 23:35:12 +02:00
Manuel Thalmann da94859be9 Change label of the Arch boot entry properly 2024-07-16 23:33:02 +02:00
Manuel Thalmann 893075c857 Silence unnecessary output 2024-07-16 23:32:46 +02:00
Manuel Thalmann 3ecd50e55c Fix permission error 2024-07-16 23:13:41 +02:00
Manuel Thalmann 245f2ce987 Streamline minegrub-theme installation 2024-07-16 23:11:27 +02:00
Manuel Thalmann 34e850d789 Streamline GRUB installation 2024-07-16 22:18:39 +02:00
262 changed files with 8765 additions and 1343 deletions

2
.gitattributes vendored Normal file
View file

@ -0,0 +1,2 @@
*.fish text eol=lf
*.sh text eol=lf

View file

@ -10,6 +10,10 @@
{ {
"name": "archiso-valhalla", "name": "archiso-valhalla",
"path": "./archiso" "path": "./archiso"
},
{
"name": "winiso-valhalla",
"path": "./winiso"
} }
] ]
} }

View file

@ -23,7 +23,7 @@ automated_script() {
sleep 1 sleep 1
done done
printf '%s: downloading %s\n' "$0" "${script}" printf '%s: downloading %s\n' "$0" "${script}"
curl "${script}" --location --retry-connrefused --retry 10 -s -o /tmp/startup_script curl "${script}" --location --retry-connrefused --retry 10 --fail -s -o /tmp/startup_script
rt=$? rt=$?
else else
cp "${script}" /tmp/startup_script cp "${script}" /tmp/startup_script

View file

@ -1 +0,0 @@
extra-experimental-features = nix-command flakes

View file

@ -1,8 +1,8 @@
diff --git a/airootfs/root/.zlogin b/airootfs/root/.zlogin diff --git a/airootfs/root/.zlogin b/airootfs/root/.zlogin
index bf6bc8f..76e5893 100755 index bf6bc8f..a0dae7b 100755
--- a/airootfs/root/.zlogin --- a/airootfs/root/.zlogin
+++ b/airootfs/root/.zlogin +++ b/airootfs/root/.zlogin
@@ -4,3 +4,18 @@ if grep -Fqa 'accessibility=' /proc/cmdline &> /dev/null; then @@ -4,3 +4,19 @@ if grep -Fqa 'accessibility=' /proc/cmdline &> /dev/null; then
fi fi
~/.automated_script.sh ~/.automated_script.sh
@ -16,13 +16,14 @@ index bf6bc8f..76e5893 100755
+ +
+git diff -p -R --no-ext-diff --no-color --diff-filter=M \ +git diff -p -R --no-ext-diff --no-color --diff-filter=M \
+ | grep -E "^(diff|(old|new) mode)" --color=never \ + | grep -E "^(diff|(old|new) mode)" --color=never \
+ | sed "/^diff/{ x; d; }; x; /./{ p; z; }; x;" \
+ | git apply + | git apply
+ +
+popd > /dev/null +popd > /dev/null
+ +
+loadkeys de_CH-latin1 +loadkeys de_CH-latin1
diff --git a/packages.x86_64 b/packages.x86_64 diff --git a/packages.x86_64 b/packages.x86_64
index 9e876e7..b89ab30 100755 index 9e876e7..c5db92a 100755
--- a/packages.x86_64 --- a/packages.x86_64
+++ b/packages.x86_64 +++ b/packages.x86_64
@@ -30,8 +30,10 @@ ethtool @@ -30,8 +30,10 @@ ethtool
@ -36,7 +37,15 @@ index 9e876e7..b89ab30 100755
gnu-netcat gnu-netcat
gpart gpart
gpm gpm
@@ -75,6 +77,7 @@ nbd @@ -45,6 +47,7 @@ irssi
iw
iwd
jfsutils
+jq
kitty-terminfo
ldns
less
@@ -75,6 +78,7 @@ nbd
ndisc6 ndisc6
nfs-utils nfs-utils
nilfs-utils nilfs-utils

View file

@ -6,7 +6,7 @@
flake-utils.url = "github:numtide/flake-utils?ref=b1d9ab70662946ef0850d488da1c9019f3a9752a"; flake-utils.url = "github:numtide/flake-utils?ref=b1d9ab70662946ef0850d488da1c9019f3a9752a";
}; };
outputs = { self, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem ( outputs = { self, flake-utils, nixpkgs }: (flake-utils.lib.eachDefaultSystem (
system: system:
let let
pkgs = import nixpkgs { pkgs = import nixpkgs {
@ -32,5 +32,10 @@
packages = { packages = {
archiso = pkgs.archiso; archiso = pkgs.archiso;
}; };
}); })) // {
valhalla = {
DerGeret = import ./profiles/machines/manuel/DerGeret/Arch/config.nix;
ManuSurface = import ./profiles/machines/manuel/ManuSurface/Arch/config.nix;
};
};
} }

15
lib/eval-attribute.nix Normal file
View file

@ -0,0 +1,15 @@
let
inherit (nixpkgs) lib;
nixpkgs = import <nixpkgs> { 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

16
lib/eval-module.nix Normal file
View file

@ -0,0 +1,16 @@
let
inherit (nixpkgs) lib;
nixpkgs = import <nixpkgs> { config = {}; overlay = []; };
file = (builtins.getEnv "FILE");
property = (builtins.getEnv "PROPERTY");
processor = if (builtins.stringLength property > 0)
then
(_: lib.attrsets.getAttrFromPath (lib.strings.splitString "." property) _)
else
(_: _);
in
processor (lib.evalModules {
modules = [
(import file)
];
}).config

View file

@ -1,41 +0,0 @@
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
gitOptions = {
defaultBranch = mkOption {
type = types.nullOr types.str;
description = "The name of the default branch in git.";
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 = "Git command aliases to install.";
default = {};
};
};
in {
options = {
valhalla = {
git = gitOptions;
};
};
}

55
lib/modules/hardware.nix Normal file
View file

@ -0,0 +1,55 @@
{ 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 = [];
};
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;
};
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;
};
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;
};
};
};
};
}

52
lib/modules/os.nix Normal file
View file

@ -0,0 +1,52 @@
{ 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 { };
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 = {};
};
};
}

View file

@ -0,0 +1,59 @@
{ lib, ... }:
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 {
options = {
valhalla = {
git = gitOption;
users = mkOption {
type = types.attrsOf (types.submodule (
{ ... }: {
options = {
git = gitOption;
};
}));
};
};
};
}

View file

@ -0,0 +1,44 @@
{ lib, ... }:
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 {
options = {
valhalla.windows.users = mkOption {
type = types.attrsOf (types.submodule (
{ ... }: {
options = {
nextcloud = {
folderSyncs = mkOption {
type = types.listOf syncType;
description = "The folders to synchronize.";
default = [];
};
};
};
}));
};
};
}

View file

@ -0,0 +1,55 @@
{ lib, ... }:
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));
};
};
});
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 = {};
};
};
}));
};
};
}

View file

@ -0,0 +1,40 @@
{ lib, ... }:
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;
};
};
});
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 = {};
};
};
};
}));
};
};
}

View file

@ -8,6 +8,7 @@
fs = import ./fs.nix; fs = import ./fs.nix;
diskListVarName = "myDisks"; diskListVarName = "myDisks";
probeScript = "partprobe 2> /dev/null || true";
isSwap = partition: builtins.elem partition.type [fs.swap 19]; isSwap = partition: builtins.elem partition.type [fs.swap 19];
mkDiskType = osDisk: types.submodule ( mkDiskType = osDisk: types.submodule (
@ -136,19 +137,12 @@
create = lib.strings.concatLines [ create = lib.strings.concatLines [
(appendScript "${toString index}: \"$(${sizeOption})\" type=${mkType type}") (appendScript "${toString index}: \"$(${sizeOption})\" type=${mkType type}")
# Wait for partition to be detected probeScript
''echo "Waiting for ${partVar} to appear..."''
''
while true;
do
[ -b ${partVar} ] && break;
done;
''
"sudo ${formatScripts.${format}}" "sudo ${formatScripts.${format}}"
]; ];
fallback = '' fallback = ''
if ! { ls "${diskVar}"?(p)${toString index} 2>&1; } > /dev/null if ! { ls "${partVar}" 2>&1; } > /dev/null
then then
${create} ${create}
fi fi
@ -329,13 +323,7 @@
mountScript = lib.strings.concatLines ( mountScript = lib.strings.concatLines (
builtins.concatMap builtins.concatMap
(_: [ (_: [
''echo "Waiting for "${lib.strings.escapeShellArg (partPath _)}" to appear..."'' probeScript
''
while true;
do
[ -b ${lib.strings.escapeShellArg (partPath _)} ] && break
done
''
(builtins.concatStringsSep " " [ (builtins.concatStringsSep " " [
"sudo" "sudo"
"mount" "mount"
@ -351,13 +339,20 @@
swapScript = lib.strings.concatLines ( swapScript = lib.strings.concatLines (
builtins.map builtins.map
(_: "sudo swapon ${partPath _}") (_: ''
${probeScript}
sudo swapon ${partPath _}
'')
(builtins.filter (_: _.useSwap) partitions)); (builtins.filter (_: _.useSwap) partitions));
in lib.strings.concatLines ( in lib.strings.concatLines ([
(builtins.map (_: _.deviceScript) disks) ++ lib.optionals ((builtins.length disks) > 0) [ "#!/bin/bash"
"set -o errexit"
] ++
(builtins.map (_: _.deviceScript) disks) ++
lib.optionals ((builtins.length disks) > 0) [
". ${./../../../scripts/Common/Scripts/is-truthy.sh}" ". ${./../../../scripts/Common/Scripts/is-truthy.sh}"
''echo "$(tput setaf 3)==== WARNING ====$(tput sgr0)"'' ''echo "$(tput setaf 3)==== WARNING ====$(tput sgr0)"''
(''echo "Continuing this script will wipe the contents of '' + ( (''echo "Continuing this script will alter the partitions of '' + (
lib.strings.concatStringsSep ", " (builtins.map (_: "${_.deviceVariable}") (lib.lists.init disks)) lib.strings.concatStringsSep ", " (builtins.map (_: "${_.deviceVariable}") (lib.lists.init disks))
) + (if (builtins.length disks) > 1 then " and " else "") + (lib.lists.last disks).deviceVariable + ''"'') ) + (if (builtins.length disks) > 1 then " and " else "") + (lib.lists.last disks).deviceVariable + ''"'')
''read -p "Are you sure you want to continue? [y/n] " answer'' ''read -p "Are you sure you want to continue? [y/n] " answer''

View file

@ -12,6 +12,7 @@
software = software =
let let
inherit (cfg.software) inherit (cfg.software)
coding
common common
desktopExperience desktopExperience
school school
@ -42,6 +43,12 @@
default = common && !server; default = common && !server;
}; };
fileSync = mkOption {
type = types.bool;
description = "A value indicating whether file syncs should be installed.";
default = common && !server;
};
school = mkOption { school = mkOption {
type = types.bool; type = types.bool;
description = "A value indicating whether software for studies should be installed."; description = "A value indicating whether software for studies should be installed.";
@ -77,6 +84,12 @@
description = "A value indicating whether development apps should be installed."; description = "A value indicating whether development apps should be installed.";
default = common; default = common;
}; };
python = mkOption {
type = types.bool;
description = "A value indicating whether apps for coding python should be installed.";
default = coding;
};
}; };
}; };
}; };

91
lib/modules/users.nix Normal file
View file

@ -0,0 +1,91 @@
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
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 = {};
};
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;
description = "Blablabla";
default = (lib.attrsets.concatMapAttrs (
name: options: {
${capitalize name} = options;
}) config.users);
};
};
})
];
};
};
};
};
}

View file

@ -6,10 +6,17 @@
; ;
in { in {
imports = [ imports = [
./git.nix ./packages/git.nix
./packages/nextcloud.nix
./packages/oh-my-posh.nix
./packages/rclone.nix
./hardware.nix
./i18n.nix ./i18n.nix
./os.nix
./partition.nix ./partition.nix
./software.nix ./software.nix
./users.nix
./windows.nix
]; ];
options = { options = {

47
lib/modules/windows.nix Normal file
View file

@ -0,0 +1,47 @@
{ lib, config, ... }:
let
inherit (lib)
mkDefault
mkEnableOption
mkIf
mkOption
types
;
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.";
};
};
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);
};
};
}

9
lib/text.nix Normal file
View file

@ -0,0 +1,9 @@
{ 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)
);
}

View file

@ -1,19 +0,0 @@
#!/bin/bash -e
function install() {
function installDrivers() {
. "../../../scripts/Arch/Config/SecureBoot/install.sh";
. "../../../scripts/Arch/Software/nvidia-dkms/install.sh";
. "../../../scripts/Arch/Software/xone/install.sh";
. "../../../scripts/Arch/Software/bt-dualboot/install.sh";
}
function initializeConfig() {
. "../../../scripts/Unix/Devices/Logitech G903/install.sh";
}
pushd "$dir" > /dev/null;
. "../../../scripts/Arch/OS/install.sh";
popd > /dev/null;
}
install;

View file

@ -1,139 +0,0 @@
#!/bin/pwsh
$env:WIN_COMPUTER_NAME = "DerGeret";
$env:SETUP_SCRIPT_NAME = "$PSScriptRoot/Restore.ps1";
function Initialize-SetupConfig() {
param(
[xml] $config,
[System.Xml.XmlNamespaceManager] $namespace
);
$setupComponent = $config.SelectSingleNode(
"/ua:unattend/ua:settings[@pass='windowsPE']/ua:component[@name='Microsoft-Windows-Setup']",
$namespace);
$diskConfig = $setupComponent.SelectSingleNode("./ua:DiskConfiguration/ua:Disk", $namespace);
$partitionCreationContainer = $diskConfig.SelectSingleNode("./ua:CreatePartitions", $namespace);
$partitionCreations = $partitionCreationContainer.SelectNodes("./ua:CreatePartition", $namespace);
$partitionModificationContainer = $diskConfig.SelectSingleNode("./ua:ModifyPartitions", $namespace);
$partitionModifications = $partitionModificationContainer.SelectNodes("./ua:ModifyPartition", $namespace);
<#
.SYNOPSIS
Gets the XML element describing the installation partition ID.
#>
function Get-InstallationPartition {
$setupComponent.SelectSingleNode("./ua:ImageInstall/ua:OSImage/ua:InstallTo/ua:PartitionID", $namespace)
}
<#
.SYNOPSIS
Increases the ID of all partitions in the specified range by 1.
#>
function Move-PartitionRange {
param (
[int]$From = 0,
[System.Nullable[int]]$To = $null,
[int]$By = 1
)
# Update installation partition ID if necessary
$installationPartition = Get-InstallationPartition;
$installPartitionID = [int]$installationPartition.InnerText;
if (($installPartitionID -ge $From) -and (($null -eq $To) -or ($installPartitionID -le $To))) {
$installationPartition.InnerText = "$($installPartitionID + $By)";
}
# Update IDs of all partition creations
foreach ($partition in $partitionCreations) {
$orderNode = $partition.SelectSingleNode("./ua:Order", $namespace);
$order = [int]$orderNode.InnerText;
$newOrder = $order;
if (($newOrder -ge $From) -and (($null -eq $To) -or ($newOrder -le $To))) {
$newOrder += $By;
}
if ($order -ne $newOrder) {
$orderNode.InnerText = "$newOrder";
}
}
# Update IDs of all partition modifications
foreach ($partition in $partitionModifications) {
$partitionNode = $partition.SelectSingleNode("./ua:PartitionID", $namespace);
$partitionID = [int]$partitionNode.InnerText;
$newID = $partitionID;
if (($newID -ge $From) -and (($null -eq $To) -or ($newID -le $To))) {
$newID += $By;
}
if ($partitionID -ne $newID) {
$partitionNode.InnerText = "$newID";
$partition.SelectSingleNode("./ua:Order", $namespace).InnerText = "$newID";
}
}
}
function Add-Partition {
param (
[int]$Index,
[int]$Size,
[string]$Type = "Primary"
)
Move-PartitionRange -From $Index -By 1;
$newPartition = $partitionCreations[0].CloneNode($true);
$newPartition.SelectSingleNode("./ua:Order", $namespace).InnerText = "$Index";
$newPartition.SelectSingleNode("./ua:Type", $namespace).InnerText = "$Type";
$newPartition.SelectSingleNode("./ua:Size", $namespace).InnerText = "$Size";
$null = $partitionCreationContainer.AppendChild($newPartition);
$newModification = $partitionModifications[2].CloneNode($true);
$newModification.SelectSingleNode("./ua:Order", $namespace).InnerText = "$Index";
$newModification.SelectSingleNode("./ua:PartitionID", $namespace).InnerText = "$Index";
$null = $partitionModificationContainer.AppendChild($newModification);
}
<#
.SYNOPSIS
Relocates the partition with the specified `$From` ID to the specified `$To` ID.
#>
function Invoke-PartitionRelocation {
param (
[int]$From,
[int]$To
)
Move-PartitionRange $From $From (-1 * ($From + 1))
if ($From -gt $To) {
Move-PartitionRange $To ($From - 1);
}
elseif ($From -lt $To) {
Move-PartitionRange ($From + 1) $To -1;
}
Move-PartitionRange -1 -1 ($To + 1)
}
# Resize EFI partition to 1GB
$partitionCreations[1].SelectSingleNode("./ua:Size", $namespace).InnerText = "$(1024)";
# Swap Windows RE partition (partition #1) and boot partition (partition #2)
Invoke-PartitionRelocation 2 1;
# Add space before Windows installation... wha-!? For Linux, ofc! I use Arch Linux, btw.
$swapSpacer = 100;
Add-Partition 2 $swapSpacer;
# Add a 1.2 TB partition for Linux
Add-Partition 3 ((1.2 * 1024 * 1024) - 1024 - $swapSpacer);
}
. "$PSScriptRoot/../../../scripts/Windows/OS/Setup.ps1";

View file

@ -1,21 +0,0 @@
{ ... }: {
imports = [
../Generic/config.nix
];
config = {
valhalla.partition.os.partitions = {
Boot.keepExisting = true;
Windows = {
index = 6;
label = "OS";
format = "ntfs";
size = "+600G";
mountPoint = "/win";
mountOptions = ["force"];
keepExisting = true;
};
};
};
}

View file

@ -1,11 +0,0 @@
{ ... }: {
imports = [
../config.nix
];
config = {
valhalla.partition.os.partitions = {
OS.label = "Arch";
};
};
}

View file

@ -1,13 +0,0 @@
#!/bin/pwsh
. "$PSScriptRoot/../../../scripts/Windows/Scripts/Context.ps1";
. "$PSScriptRoot/../../../scripts/Windows/OS/Install.ps1";
. "$PSScriptRoot/../../../scripts/Windows/Collections/Generic.ps1"
function Restore-Apps {
param([Context] $context)
Restore-GenericApps $context;
}
[Context]$context = [Context]::new();
Invoke-WindowsInstallation $context;
Restart-Computer -Force;

View file

@ -1,5 +0,0 @@
#!/bin/pwsh
$env:WIN_COMPUTER_NAME ??= "win11";
$env:SETUP_SCRIPT_NAME ??= "$PSScriptRoot/Install.ps1";
. "$PSScriptRoot/../../../scripts/Windows/OS/Setup.ps1";

View file

@ -1,4 +0,0 @@
#!/bin/pwsh
$env:SETUP_SCRIPT_NAME ??= "$PSScriptRoot/Install.ps1";
. "$PSScriptRoot/../../Generic/Windows/Setup.ps1";

View file

@ -1,5 +0,0 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../../scripts/Arch/OS/install.fish"
end

View file

@ -1,26 +0,0 @@
#!/bin/bash -e
function install() {
function installDrivers() {
. "../../../scripts/Arch/Config/SecureBoot/install.sh";
. "../../../scripts/Arch/Drivers/SurfaceBook2/install.sh";
}
function installSoftware() {
. "../../../scripts/Arch/Collections/school.sh";
}
function initializeConfig() {
. "../../../scripts/Common/Config/Steam/hidpi.sh";
. "../../../scripts/Unix/Devices/Surface Book 2/install.sh";
. "../../../scripts/Unix/Devices/Logitech G903/install.sh";
# Because, as it looks, Surface Books are fucking stupid.
. "../../../scripts/Common/Config/GRUB/verbose.sh";
}
pushd "${BASH_SOURCE%/*}" > /dev/null;
. "../../../scripts/Arch/OS/install.sh";
popd > /dev/null;
}
install;

View file

@ -1,16 +0,0 @@
#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;
# Set Hostname
sudo hostnamectl set-hostname ManuSurface;
source "../../../scripts/PopOS/Scripts/preinstall.sh";
source "../../../scripts/PopOS/OS/install.sh";
source "../../../scripts/Debian/Drivers/SurfaceBook2/Setup/install.sh";
source "../../../scripts/PopOS/Software/Collections/school.sh";
INSTALL_FONTS=1 NEXTCLOUD_DIR="${NEXTCLOUD_DIR}" source "../../../scripts/Common/Config/UserProfile/install.sh";
# Install equalizer
source "../../../scripts/Common/Config/EasyEffects/SurfaceBook2/install.sh";
source "../../../scripts/PopOS/Scripts/postinstall.sh";
popd > /dev/null;

View file

@ -1,12 +0,0 @@
#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;
# Set Hostname
sudo hostnamectl set-hostname ManuPopOSLive;
source "../../scripts/PopOS/Scripts/prepare.sh";
source "../../scripts/PopOS/OS/install.sh";
source "../../scripts/PopOS/Software/Collections/personal.sh";
INSTALL_FONTS=1 NEXTCLOUD_DIR="${NEXTCLOUD_DIR}" source "../../scripts/Common/Config/UserProfile/personal.sh";
source "../../scripts/PopOS/Scripts/postinstall.sh";
popd > /dev/null;

View file

@ -0,0 +1,4 @@
#!/bin/env fish
begin
bash "$(status dirname)/install.sh"
end

View file

@ -0,0 +1,19 @@
#!/bin/bash -e
function install() {
function installDrivers() {
. "../../../../../scripts/Arch/Config/SecureBoot/install.sh";
. "../../../../../scripts/Arch/Software/nvidia-dkms/install.sh";
. "../../../../../scripts/Arch/Software/xone/install.sh";
. "../../../../../scripts/Arch/Software/bt-dualboot/install.sh";
}
function initializeConfig() {
. "../../../../../scripts/Unix/Devices/Logitech G903/install.sh";
}
pushd "$dir" > /dev/null;
. "../../../../../scripts/Arch/OS/install.sh";
popd > /dev/null;
}
install;

View file

@ -0,0 +1,13 @@
#!/bin/env fish
begin
set -l dir (status dirname)
function getInstallerScript -V dir -S
echo "$dir/install.fish"
end
CONFIG_NAME="DerGeret" \
ARCH_HOSTNAME="der-geret" \
USER_DISPLAYNAME="Manuel Thalmann" \
source "$(status dirname)/../../../../../scripts/Arch/OS/setup.fish"
end

View file

@ -4,6 +4,6 @@ pushd "${BASH_SOURCE%/*}" > /dev/null;
CONFIG_MODULE="./config.nix" \ CONFIG_MODULE="./config.nix" \
ARCH_HOSTNAME="der-geret" \ ARCH_HOSTNAME="der-geret" \
USER_DISPLAYNAME="Manuel Thalmann" \ USER_DISPLAYNAME="Manuel Thalmann" \
. "../../../scripts/Arch/OS/setup.sh"; . "../../../../../scripts/Arch/OS/setup.sh";
popd > /dev/null; popd > /dev/null;

View file

@ -1,7 +1,7 @@
#!/bin/pwsh #!/bin/pwsh
$null = New-Module { $null = New-Module {
. "$PSScriptRoot/../../../scripts/Windows/Scripts/Context.ps1"; . "$PSScriptRoot/../../../../../scripts/Common/Scripts/Context.ps1";
. "$PSScriptRoot/../../../scripts/Windows/OS/Manage.ps1"; . "$PSScriptRoot/../../../../../scripts/Windows/OS/Legacy.ps1";
Write-Host "Starting Backup of Windows"; Write-Host "Starting Backup of Windows";
$context = [Context]::new(); $context = [Context]::new();

View file

@ -1,12 +1,12 @@
#!/bin/pwsh #!/bin/pwsh
. "$PSScriptRoot/../../../scripts/Windows/Scripts/Context.ps1"; . "$PSScriptRoot/../../../../../scripts/Common/Scripts/Context.ps1";
function Install-PortValhallaDrivers { function Install-PortValhallaDrivers {
param( param(
[Context] $context [Context] $context
) )
$winPath = "$PSScriptRoot/../../../scripts/Windows"; $winPath = "$PSScriptRoot/../../../../../scripts/Windows";
$driverPath = "$winPath/Drivers"; $driverPath = "$winPath/Drivers";
$mbDriverPath = "$driverPath/ROG Zenith Extreme Alpha"; $mbDriverPath = "$driverPath/ROG Zenith Extreme Alpha";
$context.RegisterReboot(); $context.RegisterReboot();
@ -38,7 +38,7 @@ function Install-PersonalDrivers {
[Context] $context [Context] $context
) )
$softwarePath = "$PSScriptRoot/../../../scripts/Windows/Software"; $softwarePath = "$PSScriptRoot/../../../../../scripts/Windows/Software";
. "$softwarePath/TobiiGhost/Install.ps1" $context; . "$softwarePath/TobiiGhost/Install.ps1" $context;
. "$softwarePath/TobiiGameHub/Install.ps1" $context; . "$softwarePath/TobiiGameHub/Install.ps1" $context;
} }

View file

@ -1,8 +1,8 @@
#!/bin/pwsh #!/bin/pwsh
. "$PSScriptRoot/Drivers.ps1"; . "$PSScriptRoot/Drivers.ps1";
. "$PSScriptRoot/../../../scripts/Windows/Collections/Personal.ps1" . "$PSScriptRoot/../../../../../scripts/Common/Scripts/Context.ps1";
. "$PSScriptRoot/../../../scripts/Windows/OS/Install.ps1"; . "$PSScriptRoot/../../../../../scripts/Windows/Collections/Personal.ps1"
. "$PSScriptRoot/../../../scripts/Windows/Scripts/Context.ps1"; . "$PSScriptRoot/../../../../../scripts/Windows/OS/Manage.ps1";
function Initialize-Configuration { function Initialize-Configuration {
# Fix synchronization between Linux and Windows clock # Fix synchronization between Linux and Windows clock
@ -26,5 +26,4 @@ function Restore-Apps {
Write-Host "Starting Restoration of Windows"; Write-Host "Starting Restoration of Windows";
[Context]$context = [Context]::new(); [Context]$context = [Context]::new();
Invoke-WindowsInstallation $context; Start-WindowsInstallation;
Restart-Computer -Force;

View file

@ -0,0 +1,5 @@
#!/bin/pwsh
$env:WIN_COMPUTER_NAME = "DerGeret";
$env:CONFIG_NAME = $env:WIN_COMPUTER_NAME;
. "$PSScriptRoot/../../../../../scripts/Windows/OS/Setup.ps1";

View file

@ -0,0 +1,48 @@
{ ... }: {
imports = [
../defaults.nix
];
config = {
valhalla = {
windows = {
dualboot = {
enable = true;
linuxPercentage = 70; # better safe than sorry
};
users.manuel = {
microsoftAccount = true;
groups = ["Administrators"];
};
};
partition.os.partitions = {
Boot.keepExisting = true;
Windows = {
index = 6;
label = "OS";
format = "ntfs";
mountPoint = "/win";
mountOptions = ["force"];
keepExisting = true;
};
};
hardware = {
components = [
"ROG Zenith Extreme Alpha"
"Predator Z301C"
];
eyeX = true;
amdCPU = true;
nvidiaGPU = true;
logitechG = true;
corsairDevice = true;
elgatoWave = true;
};
};
};
}

View file

@ -0,0 +1,9 @@
{ ... }: {
imports = [
../config.nix
];
config = {
valhalla.boot.label = "Arch";
};
}

View file

@ -3,11 +3,11 @@ function install() {
local dir="$(realpath "${BASH_SOURCE%/*}")"; local dir="$(realpath "${BASH_SOURCE%/*}")";
function installDrivers() { function installDrivers() {
. "$dir/../../../scripts/Arch/Config/SecureBoot/install.sh"; . "$dir/../../../../../scripts/Arch/Config/SecureBoot/install.sh";
} }
. "../../../scripts/Arch/OS/install.sh"; . "../../../../../scripts/Arch/OS/install.sh";
} }
install; install;

View file

@ -4,6 +4,6 @@ pushd "${BASH_SOURCE%/*}" > /dev/null;
ARCH_MOUNT_ROOT="/mnt" \ ARCH_MOUNT_ROOT="/mnt" \
ARCH_HOSTNAME="archlinux" \ ARCH_HOSTNAME="archlinux" \
USER_DISPLAYNAME="Manuel Thalmann" \ USER_DISPLAYNAME="Manuel Thalmann" \
. "../../../scripts/Arch/OS/setup.sh"; . "../../../../../scripts/Arch/OS/setup.sh";
popd > /dev/null; popd > /dev/null;

View file

@ -0,0 +1,13 @@
#!/bin/pwsh
. "$PSScriptRoot/../../../../../scripts/Common/Scripts/Context.ps1";
. "$PSScriptRoot/../../../../../scripts/Windows/OS/Manage.ps1";
. "$PSScriptRoot/../../../../../scripts/Windows/Collections/Generic.ps1"
function Restore-Apps {
param([Context] $context)
Restore-GenericApps $context;
}
[Context]$context = [Context]::new();
Invoke-WindowsInstallation $context;
Restart-Computer -Force;

View file

@ -0,0 +1,5 @@
#!/bin/pwsh
$env:WIN_COMPUTER_NAME ??= "win11";
$env:CONFIG_MODULE ??= "$PSScriptRoot/../config.nix";
. "$PSScriptRoot/../../../../../scripts/Windows/OS/Setup.ps1";

View file

@ -1,9 +1,9 @@
{ lib, config, ... }: { lib, config, ... }:
let let
fs = import ../../lib/modules/partition/fs.nix; fs = import ../../../../lib/modules/partition/fs.nix;
in { in {
imports = [ imports = [
../../lib/modules/valhalla.nix ../defaults.nix
]; ];
config = { config = {

View file

@ -14,4 +14,4 @@ function Install-PortValhallaDrivers {
choco install -y spice-agent; choco install -y spice-agent;
} }
. "$PSScriptRoot/../../Generic/Windows/Install.ps1"; . "$PSScriptRoot/../../../../Generic/Windows/Install.ps1";

View file

@ -0,0 +1,2 @@
#!/bin/pwsh
. "$PSScriptRoot/../../../../Generic/Windows/Setup.ps1";

View file

@ -0,0 +1,5 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../../../../scripts/Arch/OS/install.fish"
end

View file

@ -0,0 +1,26 @@
#!/bin/bash -e
function install() {
function installDrivers() {
. "../../../../../scripts/Arch/Config/SecureBoot/install.sh";
. "../../../../../scripts/Arch/Drivers/SurfaceBook2/install.sh";
}
function installSoftware() {
. "../../../../../scripts/Arch/Collections/school.sh";
}
function initializeConfig() {
. "../../../../../scripts/Common/Config/Steam/hidpi.sh";
. "../../../../../scripts/Unix/Devices/Surface Book 2/install.sh";
. "../../../../../scripts/Unix/Devices/Logitech G903/install.sh";
# Because, as it looks, Surface Books are fucking stupid.
. "../../../../../scripts/Common/Config/GRUB/verbose.sh";
}
pushd "${BASH_SOURCE%/*}" > /dev/null;
. "../../../../../scripts/Arch/OS/install.sh";
popd > /dev/null;
}
install;

View file

@ -3,7 +3,7 @@ begin
set -l dir (status dirname) set -l dir (status dirname)
function installDrivers -V dir -S function installDrivers -V dir -S
source "$dir/../../../scripts/Common/Scripts/config.fish" source "$dir/../../../../../scripts/Common/Scripts/config.fish"
pacstrap -K (getConfig valhalla.partition.rootDir) linux-firmware-marvell; pacstrap -K (getConfig valhalla.partition.rootDir) linux-firmware-marvell;
end end
@ -11,8 +11,8 @@ begin
echo "$dir/install.fish" echo "$dir/install.fish"
end end
CONFIG_MODULE="$(status dirname)/config.nix" \ CONFIG_NAME="ManuSurface" \
ARCH_HOSTNAME="manu-surface" \ ARCH_HOSTNAME="manu-surface" \
USER_DISPLAYNAME="Manuel Thalmann" \ USER_DISPLAYNAME="Manuel Thalmann" \
source "$(status dirname)/../../../scripts/Arch/OS/setup.fish"; source "$(status dirname)/../../../../../scripts/Arch/OS/setup.fish";
end end

View file

@ -0,0 +1,16 @@
#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;
# Set Hostname
sudo hostnamectl set-hostname ManuSurface;
source "../../../../../scripts/PopOS/Scripts/preinstall.sh";
source "../../../../../scripts/PopOS/OS/install.sh";
source "../../../../../scripts/Debian/Drivers/SurfaceBook2/Setup/install.sh";
source "../../../../../scripts/PopOS/Software/Collections/school.sh";
INSTALL_FONTS=1 NEXTCLOUD_DIR="${NEXTCLOUD_DIR}" source "../../../../../scripts/Common/Config/UserProfile/install.sh";
# Install equalizer
source "../../../../../scripts/Common/Config/EasyEffects/SurfaceBook2/install.sh";
source "../../../../../scripts/PopOS/Scripts/postinstall.sh";
popd > /dev/null;

View file

@ -0,0 +1,12 @@
#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;
# Set Hostname
sudo hostnamectl set-hostname ManuPopOSLive;
source "../../../../scripts/PopOS/Scripts/prepare.sh";
source "../../../../scripts/PopOS/OS/install.sh";
source "../../../../scripts/PopOS/Software/Collections/personal.sh";
INSTALL_FONTS=1 NEXTCLOUD_DIR="${NEXTCLOUD_DIR}" source "../../../../scripts/Common/Config/UserProfile/personal.sh";
source "../../../../scripts/PopOS/Scripts/postinstall.sh";
popd > /dev/null;

View file

@ -0,0 +1,6 @@
{ ... }: {
imports = [
../../users/manuel/config.nix
../../../lib/modules/valhalla.nix
];
}

View file

@ -0,0 +1,66 @@
{ ... }: {
imports = [
../../../lib/modules/valhalla.nix
];
config = {
valhalla = {
users.manuel = {
displayName = "Manuel Thalmann";
mailAddress = "m@nuth.ch";
oh-my-posh = {
theme = {
source = ./manuel.omp.json;
};
};
};
linux.users.manuel = {
defaultShell = "fish";
groups = [
"wheel"
"nix-users"
];
rclone = {
configurations = {
nextcloud = {
dirName = "Nextcloud";
};
proton = {
dirName = "Proton";
};
};
};
};
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";
}
];
};
};
partition = {
os = {
partitions = { };
};
};
};
};
}

View file

@ -0,0 +1,173 @@
{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"version": 2,
"blocks": [
{
"type": "prompt",
"alignment": "left",
"segments": [
{
"type": "os",
"style": "diamond",
"leading_diamond": "\ue0b6",
"trailing_diamond": "\ue0b4",
"background_templates": [
"{{ if eq .OS \"ubuntu\" }}#EA531A{{ end }}",
"{{ if eq .OS \"debian\" }}#D80150{{ end }}",
"{{ if eq .OS \"arch\" }}#1793D1{{ end }}"
],
"foreground": "p:white",
"template": "{{ if ne .OS \"windows\" }}{{ .Icon }} {{ end }}"
},
{
"type": "session",
"style": "diamond",
"leading_diamond": "\ue0b6",
"trailing_diamond": "\ue0b0",
"background": "p:yellow",
"foreground": "p:black",
"properties": {
"display_host": false
},
"template": "{{ if .SSHSession }}\ueb39{{ end }} {{ .UserName }} "
},
{
"type": "path",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"background": "p:orange",
"foreground": "p:black",
"properties": {
"home_icon": "~",
"style": "folder"
},
"template": " \udb80\ude4b {{ path .Path .Location }} "
},
{
"type": "dotnet",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"foreground": "p:black",
"background": "#00ffff",
"template": " \udb81\ude10 {{ .Full }} "
},
{
"type": "java",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"background": "#4063d8",
"template": " \udb82\udf37 {{ .Full }} "
},
{
"type": "python",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"background": "#906cff",
"template": " \udb80\udf20 {{ .Full }} "
},
{
"type": "git",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"trailing_diamond": "\ue0b4",
"background": "p:green",
"background_templates": [
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:yellow{{ end }}",
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:red{{ end }}",
"{{ if gt .Ahead 0 }}#49416D{{ end }}",
"{{ if gt .Behind 0 }}#7A306C{{ end }}"
],
"foreground": "p:black",
"foreground_templates": [
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:black{{ end }}",
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:white{{ end }}",
"{{ if gt .Ahead 0 }}p:white{{ end }}"
],
"properties": {
"branch_max_length": 25,
"fetch_stash_count": true,
"fetch_status": true,
"fetch_upstream_icon": true,
"upstream_icons": {
"codeberg.org": "\uf330 ",
"git.nuth.ch": "\uf335",
"git.jonascosta.ch": "\uf339 ",
"git.romhackersworld.eu": "\uf339 ",
"aur.archlinux.org": "\uf303 "
}
},
"templates": [
"{{ if .UpstreamURL }} {{ url .UpstreamIcon .UpstreamURL }}{{ end }}",
" {{ .HEAD }} ",
"{{ if .BranchStatus }}{{ .BranchStatus }} {{ end }}",
"{{ if .Working.Changed }} \uf044 {{ .Working.String }} {{ end }}",
"{{ if and (.Working.Changed) (or (.Staging.Changed) (gt .StashCount 0)) }} | {{ end }}",
"{{ if .Staging.Changed }} \uf046 {{ .Staging.String }} {{ end }}",
"{{ if and (.Staging.Changed) (gt .StashCount 0) }} | {{ end }}",
"{{ if gt .StashCount 0 }} \udb80\udd93 {{ .StashCount }}{{ end }} "
]
},
{
"type": "node",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"background": "#6ca35e",
"foreground": "p:white",
"properties": {
"fetch_version": true
},
"template": " \udb80\udf99 {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }} "
},
{
"type": "root",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"background": "p:yellow",
"foreground": "p:white",
"properties": {
"root_icon": "\uf0e7"
}
},
{
"type": "executiontime",
"style": "plain",
"background": "#83769c",
"foreground": "p:white",
"properties": {
"always_enabled": true
},
"template": "<transparent>\ue0b0</> \udb81\udead {{ .FormattedMs }}\u2800"
},
{
"type": "text",
"style": "diamond",
"background": "p:blue",
"trailing_diamond": "\ue0b4",
"background_templates": [
"{{ if gt .Code 0 }}p:red{{ end }}"
],
"foreground": "p:white",
"properties": {
"always_enabled": true
},
"template": "<parentBackground>\ue0b0</> {{ if gt .Code 0 }}\uf00d{{ else }}\uf00c{{ end }} "
}
]
}
],
"transient_prompt": {
"background": "transparent",
"foreground": "p:black",
"template": "<p:yellow,transparent>\ue0b6</><,p:yellow> {{ .Folder }} </><p:yellow,transparent>\ue0b0</> "
},
"final_space": true,
"palette": {
"black": "#262B44",
"blue": "#4B95E9",
"green": "#59C9A5",
"orange": "#F07623",
"red": "#D81E5B",
"white": "#E0DEF4",
"yellow": "#F3AE35"
}
}

View file

@ -109,7 +109,7 @@ yay --noconfirm -Syu jq;
BROWSER_BIN="brave" \ BROWSER_BIN="brave" \
EXTENSION_DIR="/usr/share/chromium-extensions" \ EXTENSION_DIR="/usr/share/chromium-extensions" \
EXTENSION_POLICY_DIR="$braveExtensions" \ EXTENSION_POLICY_DIR="$braveExtensions" \
source "../../Common/Config/Chromium/install-ytmusic-dl.sh"; source "../../Common/Software/Chromium/ytmdl.sh";
# sudo ln -sf "$braveExtensions" /opt/brave.com/brave-beta/extensions; # sudo ln -sf "$braveExtensions" /opt/brave.com/brave-beta/extensions;
# sudo ln -sf "$braveExtensions" /opt/brave.com/brave-nightly/extensions; # sudo ln -sf "$braveExtensions" /opt/brave.com/brave-nightly/extensions;

167
scripts/Arch/OS/install.fish Normal file → Executable file
View file

@ -41,18 +41,21 @@ begin
rar rar
sudo pkgfile --update sudo pkgfile --update
source "$dir/../../Common/Software/bash/main.fish"
source "$dir/../Software/openssh/main.fish" source "$dir/../Software/openssh/main.fish"
source "$dir/../Software/vim/main.fish" source "$dir/../Software/vim/main.fish"
source "$dir/../Software/git/main.fish" source "$dir/../Software/git/main.fish"
source "$dir/../Software/zoxide/main.fish" source "$dir/../Software/zoxide/main.fish"
source "$dir/../Software/logo-ls/main.fish"
# GRUB Shenanigans - if that's not an essential I don't know what is!
source "$dir/../Software/minegrub-theme/main.fish";
end end
if collectionActive common if collectionActive common
yayinst \ yayinst \
tldr \ tldr \
btop \ btop \
nvtop \
numbat-bin \
terminal-parrot terminal-parrot
source "$dir/../Software/aliae/main.fish" source "$dir/../Software/aliae/main.fish"
@ -75,6 +78,69 @@ begin
ttf-ms-win11-auto \ ttf-ms-win11-auto \
otf-cascadia-code \ otf-cascadia-code \
ttf-droid ttf-droid
# Password Management
yayinst \
bitwarden \
keepass \
keepassxc
# Tools
yayinst \
android-tools \
blackbox-terminal \
cpu-x \
gnome-calculator \
yubikey-manager-qt
yayinst \
remmina (
# RDP support for Remmina
) freerdp \
wireshark-qt \
linux-wifi-hotspot
# Creativity
yayinst \
gimp \
inkscape
# Office stuff
yayinst \
libreoffice-fresh \
naps2-bin \
pdfarranger \
protonmail-bridge \
thunderbird
yayinst \
texlive \
texlive-langgerman
# Browser
source "$dir/../Software/Firefox/main.fish"
source "$dir/../Software/brave/main.fish"
source "$dir/../Software/Pennywise/main.fish"
# Virtualization
source "$dir/../Software/waydroid/main.fish"
source "$dir/../Software/Virtual Machine Manager/main.fish"
yayinst propertree-git # mac config file editor
if collectionActive coding
yayinst \
devdocs-desktop \
godot-mono-bin
source "$dir/../Software/vscode/main.fish"
end
if collectionActive school
yayinst \
teams-for-linux \
xournalpp-git \
rnote
end
end end
if collectionActive server if collectionActive server
@ -86,7 +152,102 @@ begin
# Networking # Networking
yayinst \ yayinst \
networkmanager-openvpn \ networkmanager-openvpn \
networkmanager-openconnect networkmanager-openconnect \
protonvpn
if collectionActive common
source "$dir/../Software/IcedTea/main.fish"
yayinst \
img2pdf \
numbat-bin \
nvtop \
pdf2svg \
tnef
end
end
if collectionActive media
yayinst \
ytmdesktop-bin \
netflix \
spotube-bin \
stremio \
tidal-dl \
tidal-hifi-bin \
nuclear-player-bin \
audius-client-bin
end
if collectionActive fileSync
yayinst nextcloud-client
source "$dir/../Software/rclone/main.fish"
end
if collectionActive socialMedia
yayinst \
signal-desktop \
threema-desktop \
discord (
# Open Source Discord implementation
) openasar-git
end
if collectionActive productivity
yayinst \
anki-bin
end
if collectionActive school
yayinst \
jdk17-temurin \
gradle \
jetbrains-toolbox
source "$dir/../../Common/Software/udev/ct-board.fish"
end
if collectionActive coding
yayinst \
archiso \
wimlib (
# ISO support for wimlib
) cdrkit \
tea \
woodpecker-cli (
# AsciiDocs
) python-docutils (
# reStructuredText
) esbonio
source "$dir/../Software/n/main.fish"
end
if collectionActive python
yayinst \
python \
python-pip \
python-pipenv
source "$dir/../Software/pyenv/main.fish"
end
if collectionActive gaming
yayinst \
steam \
chiaki \
osu-lazer-bin \
libretro \
supertux \
gamepad-tool-bin
source "$dir/../Software/Lutris/main.fish"
flatpak install -y flathub com.usebottles.bottles
end
if collectionActive essential
yayinst \
bb
end end
end end
end end

14
scripts/Arch/OS/setup.fish Normal file → Executable file
View file

@ -1,7 +1,6 @@
#!/bin/env fish #!/bin/env fish
begin begin
set -l dir (status dirname) set -l dir (status dirname)
set -q CONFIG_MODULE || set -l CONFIG_MODULE "$dir/config.nix"
source "$dir/../../Common/OS/setup.fish" source "$dir/../../Common/OS/setup.fish"
source "$dir/../../Common/Scripts/config.fish" source "$dir/../../Common/Scripts/config.fish"
@ -15,7 +14,7 @@ begin
pacstrap -K "$mountDir" fish jq nix tmux pacstrap -K "$mountDir" fish jq nix tmux
end end
function setupOS -S -V dir -V CONFIG_MODULE -V mountDir function setupOS -S -V dir -V mountDir
source "$dir/../../Common/Scripts/wait-network.fish" source "$dir/../../Common/Scripts/wait-network.fish"
source "$dir/../../Common/Scripts/hooks.fish" source "$dir/../../Common/Scripts/hooks.fish"
@ -69,6 +68,7 @@ begin
end | begin end | begin
read LOCALES read LOCALES
and arch-chroot "$mountDir" sed -i "s/^#\?\(\($LOCALES\).*\)\$/\1/" /etc/locale.gen and arch-chroot "$mountDir" sed -i "s/^#\?\(\($LOCALES\).*\)\$/\1/" /etc/locale.gen
and arch-chroot "$mountDir" locale-gen
end end
and begin and begin
@ -86,14 +86,8 @@ begin
and arch-chroot "$mountDir" mkinitcpio -P and arch-chroot "$mountDir" mkinitcpio -P
and runHook installDrivers "Installing drivers..." || true and runHook installDrivers "Installing drivers..." || true
and runInOS fish "$tempDir/../../Common/Software/nix/main.fish" configure user
and arch-chroot "$mountDir" bash "$tempDir/../Software/sudo/install.sh" and arch-chroot "$mountDir" bash "$tempDir/../Software/sudo/install.sh"
and arch-chroot "$mountDir" bash "$tempDir/../Software/GRUB/install.sh" and runInOS fish "$tempDir/../Software/GRUB/main.fish"
and USER_NAME="$USER_NAME" \
USER_DISPLAYNAME="$USER_DISPLAYNAME" \
USER_GROUPS="$USER_GROUPS" \
arch-chroot "$mountDir" bash "$tempDir/user.sh"
and if set -l keyLayout (getConfig valhalla.keyboardLayout) and if set -l keyLayout (getConfig valhalla.keyboardLayout)
set -l serviceName set-keymap.service set -l serviceName set-keymap.service
@ -113,7 +107,7 @@ begin
set -l file "/etc/systemd/system/getty@tty1.service.d/autologin.conf" set -l file "/etc/systemd/system/getty@tty1.service.d/autologin.conf"
arch-chroot "$mountDir" mkdir -p (dirname "$file") arch-chroot "$mountDir" mkdir -p (dirname "$file")
begin and begin
printf %s\n \ printf %s\n \
"[Service]" \ "[Service]" \
"ExecStart=" \ "ExecStart=" \

12
scripts/Arch/Scripts/software.fish Normal file → Executable file
View file

@ -3,11 +3,19 @@ begin
set -l dir (status dirname) set -l dir (status dirname)
source "$dir/../../Common/Scripts/software.fish" source "$dir/../../Common/Scripts/software.fish"
function runYay -d "Run yay with pre-configured defaults"
yay --needed --answerclean=None --answerdiff=None -Syu $argv
end
function yayinst -d "Install yay-package non-interactively" function yayinst -d "Install yay-package non-interactively"
yay --noconfirm --needed --answerclean=None --answerdiff=None -Syu $argv runYay --noconfirm $argv
end
function runPacman -d "Run pacman with pre-configured defaults"
sudo pacman --needed -Syu $argv
end end
function pacinst -d "Install pacman-package non-interactively" function pacinst -d "Install pacman-package non-interactively"
sudo pacman --noconfirm --needed -Syu $argv runPacman --noconfirm $argv
end end
end end

View file

@ -0,0 +1,12 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
yayinst firefox
fish "$dir/../../../Common/Software/Firefox/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,16 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
pacinst \
grub \
efibootmgr \
os-prober
fish "$dir/../../../Common/Software/GRUB/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,24 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
jdk-temurin
yayinst \
icedtea-web
configureSW
end
function configureSW
# Allow execution of huwaei KVM application (uses out of date security mechanisms)
sudo sed -i \
"/^jdk.jar.disabledAlgorithms=/{ :comment; s/\(.*\)/#\1/; /\\\\\$/{ n; bcomment; }; }" \
/usr/lib/jvm/default-runtime/conf/security/java.security
end
runInstaller $argv
end

0
scripts/Arch/Software/KDE/main.fish Normal file → Executable file
View file

View file

@ -0,0 +1,72 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
wine-staging \
giflib \
lib32-giflib \
libpng \
lib32-libpng \
libldap \
lib32-libldap \
gnutls \
lib32-gnutls \
mpg123 \
lib32-mpg123 \
openal \
lib32-openal \
v4l-utils \
lib32-v4l-utils \
libpulse \
lib32-libpulse \
libgpg-error \
lib32-libgpg-error \
alsa-plugins \
lib32-alsa-plugins \
alsa-lib \
lib32-alsa-lib \
libjpeg-turbo \
lib32-libjpeg-turbo \
sqlite \
lib32-sqlite \
libxcomposite \
lib32-libxcomposite \
libxinerama \
lib32-libgcrypt \
libgcrypt \
lib32-libxinerama \
ncurses \
lib32-ncurses \
ocl-icd \
lib32-ocl-icd \
libxslt \
lib32-libxslt \
libva \
lib32-libva \
gtk3 \
lib32-gtk3 \
gst-plugins-base-libs \
lib32-gst-plugins-base-libs \
vulkan-icd-loader \
lib32-vulkan-icd-loader
yayinst (
# Extracting GOG games
) innoextract \
gamemode \
lib32-gamemode \
vkd3d \
lib32-vkd3d \
gamescope \
yad \
protontricks \
protonup-qt-bin
yayinst lutris
end
runInstaller $argv
end

View file

@ -0,0 +1,25 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
pennywise-bin
configureSW
end
function configureSW
set -l patch " --no-sandbox"
set -l pattern "^Exec=.*"
set -l indicator "$pattern$patch"
set -l file /usr/share/applications/pennywise.desktop
if ! grep "$indicator" "$file" > /dev/null
sudo sed -i "/$pattern/s/$pattern/\0 --no-sandbox/" "$file"
end
end
runInstaller $argv
end

View file

@ -0,0 +1,28 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst qemu-full
yes | runPacman --asdeps iptables-nft
yes | yayinst \
virtiofsd \
virt-manager \
dnsmasq \
swtpm \
lxc \
virt-bootstrap-git
configureSW
end
function configureSW -V dir
sudo systemctl enable --now libvirtd
sudo systemctl enable --now virtlogd
fish "$dir/../../../Common/Software/Virtual Machine Manager/main.fish" configure
end
runInstaller $argv
end

5
scripts/Arch/Software/aliae/main.fish Normal file → Executable file
View file

@ -2,13 +2,12 @@
begin begin
set -l dir (status dirname) set -l dir (status dirname)
source "$dir/../../Scripts/software.fish" source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/aliae/main.fish"
function installSW function installSW -V dir
yayinst \ yayinst \
aliae-bin aliae-bin
configureSW fish "$dir/../../../Common/Software/aliae/main.fish" configure
end end
runInstaller $argv runInstaller $argv

0
scripts/Arch/Software/base-devel/main.fish Normal file → Executable file
View file

View file

@ -0,0 +1,17 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/brave/main.fish"
function installSW -V dir
yayinst brave-bin (
# brave-beta-bin
# brave-nightly-bin
)
fish "$dir/../../../Common/Software/brave/main.fish" configure
end
runInstaller $argv
end

4
scripts/Arch/Software/git/main.fish Normal file → Executable file
View file

@ -4,7 +4,7 @@ begin
source "$dir/../../Scripts/software.fish" source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/git/main.fish" source "$dir/../../../Common/Software/git/main.fish"
function installSW function installSW -V dir
yayinst \ yayinst \
git \ git \
git-lfs \ git-lfs \
@ -13,7 +13,7 @@ begin
gitflow-fishcompletion-avh \ gitflow-fishcompletion-avh \
gitflow-zshcompletion-avh gitflow-zshcompletion-avh
and configureSW and fish "$dir/../../../Common/Software/git/main.fish" configure
end end
runInstaller $argv runInstaller $argv

View file

@ -0,0 +1,45 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
set -l dirName (realpath "$dir")
set -l contextRoot (mktemp -d)
set -l pkgName logo-ls
set -l patchName workaround.patch
if not type -q logo-ls
begin
pushd "$contextRoot" > /dev/null
yay -G -f "$pkgName"
cd "$pkgName"
cp "$dirName/$patchName" .
sed -i \
-e "/^source=(/s/source=(/\0$patchName /" \
-e "/^md5sums=(/s/^md5sums=(/\0SKIP /" \
-e "/^build() {/,/}/{" \
-e "/^[[:space:]]*cd/{" \
-e "a cat ../$patchName | patch --strip 1 --forward --merge" \
-e "}" \
-e "}" \
PKGBUILD
makepkg --noconfirm -si --force
popd > /dev/null
end
rm -rf "$contextRoot"
end
configureSW
end
function configureSW -V dir
sudo systemctl enable --now nix-daemon
fish "$dir/../../../Common/Software/logo-ls/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,12 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
yayinst grub-theme-minegrub-git
fish "$dir/../../../Common/Software/minegrub-theme/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,12 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
yayinst nodejs-n
sudo --preserve-env --set-home fish "$dir/../../../Common/Software/n/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,20 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
nix \
nil-git
configureSW
end
function configureSW -V dir
sudo systemctl enable --now nix-daemon
fish "$dir/../../../Common/Software/nix/main.fish" configure
end
runInstaller $argv
end

4
scripts/Arch/Software/openssh/main.fish Normal file → Executable file
View file

@ -7,10 +7,12 @@ begin
yayinst \ yayinst \
openssh \ openssh \
libfido2 libfido2
source (status filename) configure
end end
function configureSW function configureSW
systemctl --global enable --now ssh-agent sudo systemctl --global enable ssh-agent
and begin and begin
printf %s\n \ printf %s\n \

0
scripts/Arch/Software/pacman/main.fish Normal file → Executable file
View file

View file

@ -0,0 +1,12 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
yayinst pyenv
fish "$dir/../../../Common/Software/pyenv/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,15 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/rclone/main.fish"
function installSW -V dir
yayinst \
rclone
fish "$dir/../../../Common/Software/rclone/main.fish" configure
end
runInstaller $argv
end

2
scripts/Arch/Software/sddm/main.fish Normal file → Executable file
View file

@ -14,7 +14,7 @@ begin
function configureSW -V dir function configureSW -V dir
set -l configDir /etc/sddm.conf.d set -l configDir /etc/sddm.conf.d
sudo systemctl enable sddm sudo systemctl enable sddm
mkdir -p "$configDir" sudo mkdir -p "$configDir"
sudo cp "$dir/wayland.conf" "$configDir/10-wayland.conf" sudo cp "$dir/wayland.conf" "$configDir/10-wayland.conf"
end end

4
scripts/Arch/Software/vim/main.fish Normal file → Executable file
View file

@ -4,7 +4,7 @@ begin
source "$dir/../../Scripts/software.fish" source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/vim/main.fish" source "$dir/../../../Common/Software/vim/main.fish"
function installSW function installSW -V dir
yayinst ( yayinst (
# Necessary for accessing clipboard in terminal: https://wiki.archlinux.org/title/Vim # Necessary for accessing clipboard in terminal: https://wiki.archlinux.org/title/Vim
) gvim \ ) gvim \
@ -13,7 +13,7 @@ begin
) vim-wayland-clipboard-git \ ) vim-wayland-clipboard-git \
wl-clipboard wl-clipboard
and configureSW and fish "$dir/../../../Common/Software/vim/main.fish" configure
end end
runInstaller $argv runInstaller $argv

View file

@ -0,0 +1,33 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
vscodium-bin \
visual-studio-code-bin (
# Trash functionality
) gvfs
configureSW
end
function configureSW -V dir
set -l bins codium code
for bin in $bins
if type -q "$bin"
begin
set -l file "/etc/skel/.config/$bin-flags.conf"
sudo mkdir -p (dirname "$file")
echo "--touch-events" | sudo tee "$file" > /dev/null
end
end
end
fish "$dir/../../../Common/Software/vscode/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,20 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
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
end
runInstaller $argv
end

0
scripts/Arch/Software/yay/main.fish Normal file → Executable file
View file

5
scripts/Arch/Software/zoxide/main.fish Normal file → Executable file
View file

@ -2,13 +2,12 @@
begin begin
set -l dir (status dirname) set -l dir (status dirname)
source "$dir/../../Scripts/software.fish" source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/zoxide/main.fish"
function installSW function installSW -V dir
yayinst \ yayinst \
zoxide zoxide
configureSW fish "$dir/../../../Common/Software/zoxide/main.fish" configure
end end
runInstaller $argv runInstaller $argv

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null; pushd "${BASH_SOURCE%/*}" > /dev/null;
sudo cp ./firefox.sh /etc/profile.d/; sudo cp ../../Software/Firefox/firefox.sh /etc/profile.d/;
popd > /dev/null; popd > /dev/null;

View file

@ -1,10 +1,10 @@
#!/bin/pwsh #!/bin/pwsh
. "$PSScriptRoot/../../Software/powershell/profile.ps1"; . "$PSScriptRoot/../../Software/PowerShell/Profile.ps1";
Add-PowerShellProfileStatement ` Add-PowerShellProfileStatement `
-System ` -System `
-Category "oh-my-posh" ` -Category "oh-my-posh" `
-Statement $( -Script $(
@( @(
"# Oh My Posh!", "# Oh My Posh!",
$(Get-ScriptInitializer "oh-my-posh init pwsh"), $(Get-ScriptInitializer "oh-my-posh init pwsh"),

View file

@ -1,8 +1,8 @@
#!/bin/pwsh #!/bin/pwsh
. "$PSScriptRoot/../../Software/powershell/profile.ps1"; . "$PSScriptRoot/../../Software/PowerShell/Profile.ps1";
foreach ($defaultUser in @($true, $false)) { foreach ($defaultUser in @($true, $false)) {
Add-PowerShellProfileStatement -DefaultUser:$defaultUser -Statement "# aliae`naliae init pwsh | Invoke-Expression"; Add-PowerShellProfileStatement -DefaultUser:$defaultUser -Script "# aliae`naliae init pwsh | Invoke-Expression";
} }
Add-PowerShellProfileStatement -System -Category "aliae" -Statement "# aliae`n$(Get-ScriptInitializer "aliae completion powershell")"; Add-PowerShellProfileStatement -System -Category "aliae" -Script "# aliae`n$(Get-ScriptInitializer "aliae completion powershell")";

View file

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null; pushd "${BASH_SOURCE%/*}/../../Software/rclone" > /dev/null;
sudo cp "rclone.service" "rclone.target" "rclone@.service" /etc/systemd/user; sudo cp "rclone.service" "rclone.target" "rclone@.service" /etc/systemd/user;
systemctl enable --user rclone; systemctl enable --user rclone;

View file

@ -1,10 +1,10 @@
#!/bin/pwsh #!/bin/pwsh
. "$PSScriptRoot/../../Software/powershell/profile.ps1"; . "$PSScriptRoot/../../Software/PowerShell/Profile.ps1";
Add-PowerShellProfileStatement ` Add-PowerShellProfileStatement `
-System ` -System `
-Category "zoxide" ` -Category "zoxide" `
-Statement $( -Script $(
@( @(
"# zoxide", "# zoxide",
$(Get-ScriptInitializer "zoxide init powershell | Out-String") $(Get-ScriptInitializer "zoxide init powershell | Out-String")

15
scripts/Common/OS/install.fish Normal file → Executable file
View file

@ -3,14 +3,10 @@ set -l dir (status dirname)
source "$dir/../Scripts/config.fish" source "$dir/../Scripts/config.fish"
source "$dir/../Scripts/hooks.fish" source "$dir/../Scripts/hooks.fish"
function configureNix -V dir
source "$dir/../Software/nix/main.fish" configure user
end
if [ (id -u) -eq 0 ] if [ (id -u) -eq 0 ]
configureNix
set -l name (getConfig valhalla.setupUser.name) set -l name (getConfig valhalla.setupUser.name)
set -l sudoConfig "/etc/sudoers.d/PortValhalla" set -l sudoConfig "/etc/sudoers.d/PortValhalla"
rm ~/.bash_profile
runHook createUser || \ runHook createUser || \
begin begin
@ -28,16 +24,21 @@ if [ (id -u) -eq 0 ]
echo "$name ALL=(ALL:ALL) NOPASSWD: ALL" echo "$name ALL=(ALL:ALL) NOPASSWD: ALL"
end > "$sudoConfig" end > "$sudoConfig"
and sudo --preserve-env="CONFIG_MODULE" --user "$name" "$INSTALLER_SCRIPT" and sudo --preserve-env="CONFIG_NAME" --user "$name" "$INSTALLER_SCRIPT"
rm "$sudoConfig" rm "$sudoConfig"
userdel -r "$name" userdel -r "$name"
else else
configureNix
source "$dir/../Software/bash/main.fish" source "$dir/../Software/bash/main.fish"
runHook initialize || true runHook initialize || true
runHook installDrivers || true runHook installDrivers || true
runHook installOS || true runHook installOS || true
runHook addUsers || begin
source "$dir/users.fish"
end
runHook installSoftware || true runHook installSoftware || true
runHook initializeConfig || true runHook initializeConfig || true
runHook postInstall || true runHook postInstall || true
end end

14
scripts/Common/OS/setup.fish Normal file → Executable file
View file

@ -3,12 +3,12 @@ function runSetup
set -l dir (status dirname) set -l dir (status dirname)
source "$dir/../Scripts/config.fish" source "$dir/../Scripts/config.fish"
source "$dir/../Scripts/hooks.fish" source "$dir/../Scripts/hooks.fish"
set -l name (getConfig valhalla.setupUser.name)
set -l mountDir (getConfig valhalla.partition.rootDir) set -l mountDir (getConfig valhalla.partition.rootDir)
set -l projectRoot (realpath "$dir/../../..") set -l projectRoot (realpath "$dir/../../..")
set -l projectName (basename "$projectRoot") set -l projectName (basename "$projectRoot")
set -l PROJECT_CLONE_ROOT "/opt/$(basename "$projectName")" set -l PROJECT_CLONE_ROOT "/opt/$(basename "$projectName")"
set -l script (mktemp) set -l script (mktemp)
chmod +x "$script"
if not type -q runChroot if not type -q runChroot
function runChroot -S function runChroot -S
@ -31,21 +31,21 @@ function runSetup
function runInOS -S function runInOS -S
set -l script "/root/run_once" set -l script "/root/run_once"
wrapScript $argv | chroot "$mountDir" tee "$script" wrapScript $argv | chroot "$mountDir" tee "$script" > /dev/null
runChroot "$mountDir" chmod +x "$script" and runChroot "$mountDir" chmod +x "$script"
runChroot "$mountDir" "$script" and runChroot "$mountDir" "$script"
runChroot "$mountDir" rm "$script" and runChroot "$mountDir" rm "$script"
end end
function wrapScript -S function wrapScript -S
printf %s\n \ printf %s\n \
"cd $PROJECT_CLONE_ROOT" \ "cd $PROJECT_CLONE_ROOT" \
"export CONFIG_MODULE=$(string escape (getCloneFile "$CONFIG_MODULE"))" \
"$argv" "$argv"
end end
getConfig valhalla.partition.script > "$script" getConfig valhalla.partition.script > "$script"
bash "$script" and "$script"
and rm "$script"
# Copy `nixpkgs` channel # Copy `nixpkgs` channel
and begin and begin

32
scripts/Common/OS/users.fish Executable file
View file

@ -0,0 +1,32 @@
#!/bin/env fish
set -l dir (status dirname)
source "$dir/../Scripts/config.fish"
set -l users (getUsers)
for name in (echo "$users" | jq '.[]' --raw-output0 | string split0)
function getUserConfig -S -a config
getConfig "valhalla.users.$name.$config" $argv[2..]
end
set -l displayName (getUserConfig displayName --json)
set -l shell (getUserConfig displayName --json)
sudo useradd --create-home (
if [ displayName != "null" ]
echo "--comment"
echo "$displayName" | jq --raw-output
end
) --groups (getUserConfig groups --apply 'builtins.concatStringsSep ","') \
"$name"
if echo "$shell" | jq --exit-status > /dev/null
sudo chsh "$name" --shell "$shell"
end
echo "Please Choose a New Password for User `$name`"
while ! sudo passwd "$name"
echo "An error occurred! Please try again."
end
end

View file

@ -0,0 +1,163 @@
#!/bin/bash
$null = New-Module {
. "$PSScriptRoot/System.ps1";
<#
.SYNOPSIS
Runs an action involving browser automation.
.PARAMETER Action
The action to execute.
#>
function Start-BrowserAutomation {
param(
[scriptblock] $Action
)
if (-not ("OpenQA.Selenium.Firefox.FirefoxDriver" -as [type])) {
$packageRoot = Split-Path -Parent (Get-Package Selenium.WebDriver).Source;
$file = Join-Path $packageRoot "lib/netstandard2.0/WebDriver.dll";
$env:SE_MANAGER_PATH = Join-Path $packageRoot "manager" ($IsWindows ? "windows" : "linux") "selenium-manager$($IsWindows ? ".exe" : '')";
$null = [System.Reflection.Assembly]::LoadFile($file);
}
& $Action;
}
<#
.SYNOPSIS
Downloads a file from the specified url using browser automation.
.PARAMETER URL
The url to download the file from.
.PARAMETER Action
The action to execute in the browser for initiating the download.
.PARAMETER OutDir
The directory to download the file to.
#>
function Start-CustomBrowserDownload {
param(
[string] $URL,
[scriptblock] $Action,
[string] $OutDir
)
$downloadAction = $Action;
Start-BrowserAutomation {
if (-not $OutDir) {
$OutDir = ".";
}
$dir = New-TemporaryDirectory;
Write-Host "Downloading ``$URL`` using browser automation…";
$options = [OpenQA.Selenium.Firefox.FirefoxOptions]::new();
$options.SetPreference("browser.download.folderList", 2);
$options.SetPreference("browser.download.dir", "$dir");
$downloadChecker = {
$files = Get-ChildItem $dir;
if ((@($files)).Count -eq 1) {
$file = $files[0];
try {
$stream = [System.IO.File]::Open($file.FullName, [System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None);
if ($stream) {
$stream.Close();
}
}
catch {
return $true;
}
return $false;
} else {
return $true;
}
};
$browser = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($options);
$browser.Navigate().GoToUrl($URL);
while (-not ($browser.ExecuteScript("return document.readyState;") -eq "complete")) {
Start-Sleep 0.1;
}
try {
$null = & $downloadAction -Browser $browser;
while (& $downloadChecker) {
Write-Host "Waiting for the download to finish…";
Start-Sleep 1;
}
$file = Get-ChildItem $dir;
$result = Move-Item $file $OutDir -PassThru;
$browser.Quit();
Remove-Item -Recurse $dir;
$result;
}
catch {
Write-Error $Error;
}
}
}
<#
.SYNOPSIS
Downloads a file from the specified url using browser automation.
.PARAMETER URL
The url to download the file from.
.PARAMETER ButtonSelector
The jQuery selector for finding the download button.
.PARAMETER OutDir
The directory to download the file to.
.PARAMETER Timeout
The number of seconds to wait before clicking the download button.
#>
function Start-BrowserDownload {
param(
[string] $URL,
[string] $ButtonSelector,
[string] $OutDir = $null,
[double] $Timeout = 0
)
Start-CustomBrowserDownload @PSBoundParameters -Action {
param(
[OpenQA.Selenium.Firefox.FirefoxDriver] $Browser
)
$selector = [OpenQA.Selenium.By]::CssSelector($ButtonSelector);
[OpenQA.Selenium.IWebElement] $element = $null;
for ($i = 0; $i -lt 5; $i++) {
$element = $Browser.FindElement($selector);
if ($element) {
break;
} else {
Start-Sleep 1;
}
}
if ($Timeout -gt 0) {
Start-Sleep $Timeout;
}
if ($element) {
$Browser.FindElement($selector).Click();
} else {
Write-Error "Unable to find download button!";
}
};
}
};

Some files were not shown because too many files have changed in this diff Show more