Compare commits

...

604 commits

Author SHA1 Message Date
Manuel Thalmann de06caa440 Remove the installDrivers step from OS installations 2024-09-13 00:30:30 +02:00
Manuel Thalmann a0c82079f0 Create a dedicated script for deploying software actions 2024-09-12 23:17:04 +02:00
Manuel Thalmann d37aa8c868 Replace discord with vesktop 2024-09-12 23:11:16 +02:00
Manuel Thalmann a9f2f35caf Reorder the package installation logically 2024-09-12 23:11:04 +02:00
Manuel Thalmann b0325315ff Clarify the use of propertree 2024-09-12 23:09:25 +02:00
Manuel Thalmann 6c0e1a0767 Read config from linux key 2024-09-12 21:48:05 +02:00
Manuel Thalmann f4045ec38e Add groups to users properly 2024-09-12 21:47:50 +02:00
Manuel Thalmann 6da99c7269 Redirect CONFIG_NAME variable properly 2024-09-12 21:47:29 +02:00
Manuel Thalmann fbd5d08d5f Ensure git repository can be read properly 2024-09-12 21:47:13 +02:00
Manuel Thalmann 490e681030 Fix incorrect message 2024-09-12 21:46:57 +02:00
Manuel Thalmann da82194b8e Add git for installation 2024-09-12 21:46:47 +02:00
Manuel Thalmann 83fb6a9dcf Use common script for Arch installation 2024-09-12 21:44:14 +02:00
Manuel Thalmann 4ff6f27deb Mount ntfs disks using ntfs3 2024-09-12 20:18:57 +02:00
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
Manuel Thalmann 85da9c0ec9 Allow configuring GRUB in the nix config 2024-07-16 22:17:55 +02:00
Manuel Thalmann 7ef8e8ff18 Configure nix during setup 2024-07-16 22:17:07 +02:00
Manuel Thalmann 4970ab4dc2 Add a hook for installing dependencies 2024-07-16 22:16:21 +02:00
Manuel Thalmann 27d5dffd43 Reorder installation steps 2024-07-16 22:15:37 +02:00
Manuel Thalmann 652ee29a70 Include missing script file 2024-07-16 22:12:19 +02:00
Manuel Thalmann 5ef340535c Fix broken sddm configuration 2024-07-16 22:12:07 +02:00
Manuel Thalmann 2d7ba75586 Allow specifying custom chroot command 2024-07-16 22:10:42 +02:00
Manuel Thalmann 23b23427a2 Handle partition loading time 2024-07-16 18:50:24 +02:00
Manuel Thalmann 796e6352de Allow executing scripts while installing OS 2024-07-16 16:13:34 +02:00
Manuel Thalmann 29aec891b0 Implement os setup using a function 2024-07-16 15:22:15 +02:00
Manuel Thalmann d1e4128f30 Streamline GUI app installation 2024-07-16 14:56:49 +02:00
Manuel Thalmann 65fcaefb48 Create a "desktop experience" software category 2024-07-16 14:36:53 +02:00
Manuel Thalmann 4b896ced9d Create separate module for controlling software 2024-07-16 14:34:32 +02:00
Manuel Thalmann ac21db101f Streamline zoxide installation 2024-07-16 14:28:32 +02:00
Manuel Thalmann af109bb24e Fix incomplete installation 2024-07-16 14:28:06 +02:00
Manuel Thalmann 7c06248859 Set profile title by default 2024-07-16 14:15:05 +02:00
Manuel Thalmann 4c34db9d43 Relocate powershell profile script 2024-07-16 14:06:19 +02:00
Manuel Thalmann 1f94745b94 Replace aliae config with default bash profile 2024-07-16 03:36:51 +02:00
Manuel Thalmann 04cf2de0ae Add aliae to the skel 2024-07-16 03:30:25 +02:00
Manuel Thalmann f50920d868 Streamline aliae installation 2024-07-16 03:30:14 +02:00
Manuel Thalmann 508bd7a399 Copy repo using rsync 2024-07-16 01:33:08 +02:00
Manuel Thalmann d14418e4ca Remove non-functioning symbols 2024-07-16 01:05:29 +02:00
Manuel Thalmann 525acbc656 Automatically reboot the machine 2024-07-16 01:05:06 +02:00
Manuel Thalmann 5e9a2cafb3 Add further initialization packages 2024-07-15 20:51:20 +02:00
Manuel Thalmann 985d2e12c8 Specify default git settings 2024-07-15 20:24:59 +02:00
Manuel Thalmann ce778485ec Load git config from nix 2024-07-15 20:24:47 +02:00
Manuel Thalmann fa61dc0b87 Add jq to fresh Arch installations 2024-07-15 20:20:44 +02:00
Manuel Thalmann 5fa8b78e8a Fix syntax error 2024-07-15 20:19:52 +02:00
Manuel Thalmann 4194c56cc1 Fix incorrect rsync command 2024-07-15 20:19:06 +02:00
Manuel Thalmann 90752e2e1e Fix permission issue 2024-07-15 19:58:56 +02:00
Manuel Thalmann ad8a3860c6 Fix empty diff sections 2024-07-15 19:30:27 +02:00
Manuel Thalmann 9bd0eb0cc9 Set git config system wide 2024-07-15 14:58:54 +02:00
Manuel Thalmann cff3bde744 Set git config system wide 2024-07-15 14:47:06 +02:00
Manuel Thalmann d5fd3bb34a Add a function to check whether a config is set 2024-07-15 14:14:07 +02:00
Manuel Thalmann e39565eff1 Allow configuring git 2024-07-15 14:11:44 +02:00
Manuel Thalmann 3034418fb7 Pass arguments to software scripts 2024-07-15 13:56:27 +02:00
Manuel Thalmann a7e023496c Fix typo 2024-07-15 13:27:14 +02:00
Manuel Thalmann 773fb20346 Enable nix before setup 2024-07-15 13:26:40 +02:00
Manuel Thalmann 03cce8a0ba Fix permission issues 2024-07-15 13:23:00 +02:00
Manuel Thalmann 7c6f37a7dd Fix syntax error 2024-07-15 13:17:00 +02:00
Manuel Thalmann 39e278d493 Fix typos 2024-07-15 13:15:57 +02:00
Manuel Thalmann 4adc55ec3b Make setup-user able to use nix 2024-07-15 13:15:07 +02:00
Manuel Thalmann b4f9fd6577 Ensure nix works during setup 2024-07-15 13:13:15 +02:00
Manuel Thalmann a43e2f3743 Fix typo 2024-07-15 13:12:46 +02:00
Manuel Thalmann 3b3eec8c1c Force network connection for installation 2024-07-15 12:45:49 +02:00
Manuel Thalmann a01c3da93c Allow package install scripts to be chained properly 2024-07-15 12:43:18 +02:00
Manuel Thalmann 86965651d9 Package essential software 2024-07-15 12:10:30 +02:00
269 changed files with 9547 additions and 1395 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",
"path": "./archiso"
},
{
"name": "winiso-valhalla",
"path": "./winiso"
}
]
}

View file

@ -23,7 +23,7 @@ automated_script() {
sleep 1
done
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=$?
else
cp "${script}" /tmp/startup_script

View file

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

View file

@ -14,6 +14,7 @@ pushd "PortValhalla" > /dev/null
git diff -p -R --no-ext-diff --no-color --diff-filter=M \
| grep -E "^(diff|(old|new) mode)" --color=never \
| sed "/^diff/{ x; d; }; x; /./{ p; z; }; x;" \
| git apply
popd > /dev/null

View file

@ -17,8 +17,8 @@ begin
git -C "$projectDir" ls-files
git -C "$projectDir" ls-files --exclude-standard --others
end | \
rsync -r --include-from=/dev/stdin --exclude={.gitignore,README.md,scripts,LICENSE,valhalla.patch} "$dir/.." "$contextRoot"
end 2>&1 > /dev/null;
rsync --files-from=/dev/stdin --exclude={.gitignore,README.md,scripts,LICENSE,valhalla.patch} "$dir/.." "$contextRoot"
end &> /dev/null;
and git -C "$contextRoot" diff
end

View file

@ -1,8 +1,8 @@
diff --git a/airootfs/root/.zlogin b/airootfs/root/.zlogin
index bf6bc8f..76e5893 100755
index bf6bc8f..a0dae7b 100755
--- a/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
~/.automated_script.sh
@ -16,13 +16,14 @@ index bf6bc8f..76e5893 100755
+
+git diff -p -R --no-ext-diff --no-color --diff-filter=M \
+ | grep -E "^(diff|(old|new) mode)" --color=never \
+ | sed "/^diff/{ x; d; }; x; /./{ p; z; }; x;" \
+ | git apply
+
+popd > /dev/null
+
+loadkeys de_CH-latin1
diff --git a/packages.x86_64 b/packages.x86_64
index 9e876e7..b89ab30 100755
index 9e876e7..c5db92a 100755
--- a/packages.x86_64
+++ b/packages.x86_64
@@ -30,8 +30,10 @@ ethtool
@ -36,7 +37,15 @@ index 9e876e7..b89ab30 100755
gnu-netcat
gpart
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
nfs-utils
nilfs-utils

View file

@ -6,7 +6,7 @@
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:
let
pkgs = import nixpkgs {
@ -32,5 +32,10 @@
packages = {
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

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;
diskListVarName = "myDisks";
probeScript = "partprobe 2> /dev/null || true";
isSwap = partition: builtins.elem partition.type [fs.swap 19];
mkDiskType = osDisk: types.submodule (
@ -136,18 +137,12 @@
create = lib.strings.concatLines [
(appendScript "${toString index}: \"$(${sizeOption})\" type=${mkType type}")
# Wait for partition to be detected
''
while true;
do
[ -b ${partVar} ] && break;
done;
''
probeScript
"sudo ${formatScripts.${format}}"
];
fallback = ''
if ! { ls "${diskVar}"?(p)${toString index} 2>&1; } > /dev/null
if ! { ls "${partVar}" 2>&1; } > /dev/null
then
${create}
fi
@ -326,14 +321,20 @@
partitions = (builtins.concatMap (_: (builtins.attrValues _.partitions)) disks);
mountScript = lib.strings.concatLines (
builtins.map
(_: builtins.concatStringsSep " " [
"sudo"
"mount"
"--mkdir"
(builtins.concatStringsSep " " (builtins.map (_: "-o ${_}") _.mountOptions))
(partPath _)
(normalizePath "/${rootDir}/${_.mountPoint}")
builtins.concatMap
(_: [
probeScript
(builtins.concatStringsSep " " ([
"sudo"
"mount"
"--mkdir"
] ++ (lib.optionals (_.format == "ntfs") [
"-t" "ntfs3"
]) ++ [
(builtins.concatStringsSep " " (builtins.map (_: "-o ${_}") _.mountOptions))
(partPath _)
(normalizePath "/${rootDir}/${_.mountPoint}")
]))
])
(lib.lists.sortOn
(_: normalizePath "/${_.mountPoint}")
@ -341,13 +342,20 @@
swapScript = lib.strings.concatLines (
builtins.map
(_: "sudo swapon ${partPath _}")
(_: ''
${probeScript}
sudo swapon ${partPath _}
'')
(builtins.filter (_: _.useSwap) partitions));
in lib.strings.concatLines (
(builtins.map (_: _.deviceScript) disks) ++ lib.optionals ((builtins.length disks) > 0) [
in lib.strings.concatLines ([
"#!/bin/bash"
"set -o errexit"
] ++
(builtins.map (_: _.deviceScript) disks) ++
lib.optionals ((builtins.length disks) > 0) [
". ${./../../../scripts/Common/Scripts/is-truthy.sh}"
''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))
) + (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''

96
lib/modules/software.nix Normal file
View file

@ -0,0 +1,96 @@
{ lib, config, ... }:
let
inherit (lib)
mkOption
types
;
cfg = config.valhalla;
in {
options = {
valhalla = {
software =
let
inherit (cfg.software)
coding
common
desktopExperience
school
server
;
in {
essential = mkOption {
type = types.bool;
description = "A value indicating whether essentials should be installed.";
default = true;
};
common = mkOption {
type = types.bool;
description = "A value indicating whether common software should be installed.";
default = true;
};
server = mkOption {
type = types.bool;
description = "A value indicating whether server applications should be installed.";
default = false;
};
desktopExperience = mkOption {
type = types.bool;
description = "A value indicating whether GUI apps should be installed.";
default = common && !server;
};
fileSync = mkOption {
type = types.bool;
description = "A value indicating whether file syncs should be installed.";
default = common && !server;
};
school = mkOption {
type = types.bool;
description = "A value indicating whether software for studies should be installed.";
default = false;
};
productivity = mkOption {
type = types.bool;
description = "A value indicating whether productivity apps should be installed.";
default = common || school;
};
socialMedia = mkOption {
type = types.bool;
description = "A value indicating whether social media apps should be installed.";
default = common && desktopExperience;
};
media = mkOption {
type = types.bool;
description = "A value indicating whether media apps should be installed.";
default = common && desktopExperience;
};
gaming = mkOption {
type = types.bool;
description = "A value indicating whether gaming apps should be installed.";
default = common && desktopExperience;
};
coding = mkOption {
type = types.bool;
description = "A value indicating whether development apps should be installed.";
default = common;
};
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

@ -1,19 +1,40 @@
{ lib, config, ... }:
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
cfg = config.valhalla;
in {
imports = [
./packages/git.nix
./packages/nextcloud.nix
./packages/oh-my-posh.nix
./packages/rclone.nix
./hardware.nix
./i18n.nix
./os.nix
./partition.nix
./software.nix
./users.nix
./windows.nix
];
options = {
valhalla = {
boot = {
efiMountPoint = mkOption {
type = types.str;
description = "The mountpoint of the efi partition.";
default = "/boot";
};
label = mkOption {
type = types.str;
description = "The label of the boot entry.";
default = "OS";
};
};
setupUser = {
name = mkOption {
type = types.str;
@ -45,62 +66,6 @@
description = "The X11 keyboard layout of the system.";
default = null;
};
software =
let
inherit (cfg.software)
common
school
;
in {
essential = mkOption {
type = types.bool;
description = "A value indicating whether essentials should be installed.";
default = true;
};
common = mkOption {
type = types.bool;
description = "A value indicating whether common software should be installed.";
default = true;
};
school = mkOption {
type = types.bool;
description = "A value indicating whether software for studies should be installed.";
default = false;
};
productivity = mkOption {
type = types.bool;
description = "A value indicating whether productivity apps should be installed.";
default = common || school;
};
socialMedia = mkOption {
type = types.bool;
description = "A value indicating whether social media apps should be installed.";
default = common;
};
media = mkOption {
type = types.bool;
description = "A value indicating whether media apps should be installed.";
default = common;
};
gaming = mkOption {
type = types.bool;
description = "A value indicating whether gaming apps should be installed.";
default = common;
};
coding = mkOption {
type = types.bool;
description = "A value indicating whether development apps should be installed.";
default = common;
};
};
};
};
}

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,52 +0,0 @@
{ ... }:
let
fs = import ../../lib/modules/partition/fs.nix;
in {
imports = [
../../lib/modules/valhalla.nix
];
config = {
valhalla = {
partition = {
os = {
partitions = {
Boot = {
index = 1;
type = "uefi";
size = "+1G";
format = fs.fat32;
mountPoint = "/boot";
};
Swap = {
index = 2;
type = "swap";
};
OS = {
index = 3;
type = "linux";
format = fs.ext4;
mountPoint = "/";
};
};
};
};
timeZone = "Europe/Zurich";
keyMap = "de_CH-latin1";
keyboardLayout = "ch";
i18n = {
localeSettings =
let defaultLocale = "en_US.UTF-8";
in {
LANG = "de_CH.UTF-8";
LANGUAGE = defaultLocale;
LC_MESSAGE = defaultLocale;
};
};
};
};
}

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,9 @@
#!/bin/env fish
begin
set -l dir (status dirname)
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" \
ARCH_HOSTNAME="der-geret" \
USER_DISPLAYNAME="Manuel Thalmann" \
. "../../../scripts/Arch/OS/setup.sh";
. "../../../../../scripts/Arch/OS/setup.sh";
popd > /dev/null;

View file

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

View file

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

View file

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

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%/*}")";
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;

View file

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

@ -0,0 +1,95 @@
{ lib, config, ... }:
let
fs = import ../../../../lib/modules/partition/fs.nix;
in {
imports = [
../defaults.nix
];
config = {
valhalla = {
partition = {
os = {
partitions = {
Boot = {
index = 1;
type = "uefi";
size = "+1G";
format = fs.fat32;
mountPoint = config.valhalla.boot.efiMountPoint;
};
Swap = {
index = 2;
type = "swap";
};
OS = {
index = 3;
label = lib.mkDefault config.valhalla.boot.label;
type = "linux";
format = fs.ext4;
mountPoint = "/";
};
};
};
};
timeZone = "Europe/Zurich";
keyMap = "de_CH-latin1";
keyboardLayout = "ch";
i18n = {
localeSettings =
let defaultLocale = "en_US.UTF-8";
in {
LANG = "de_CH.UTF-8";
LANGUAGE = defaultLocale;
LC_MESSAGE = defaultLocale;
};
};
git =
let
defaultBranch = "main";
in {
inherit defaultBranch;
flow = {
mainBranch = defaultBranch;
devBranch = "dev";
};
aliases = {
ahfange = "init";
tuedezue = "add";
beschuldig = "blame";
zieh = "pull";
druck = "push";
machnah = "clone";
hol = "fetch";
zwiigab = "branch";
buechiih = "commit";
eich = "rebase";
erd = "rebase";
gahufwiifelde = "rebase";
vergliich = "diff";
tuezemme = "merge";
versorg = "stash";
markier = "tag";
pflueckoepfel = "cherry-pick";
pflueckhimbeeri = "cherry-pick";
buechuus = "checkout";
quaetsch = "merge --squash";
pfudle = "push --force";
beschuldigung = "blame";
zwiigli = "branch";
tagebuech = "log";
versteck = "stash";
zuestand = "status";
markierig = "tag";
};
};
};
};
}

View file

@ -14,4 +14,4 @@ function Install-PortValhallaDrivers {
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)
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;
end
@ -11,8 +11,8 @@ begin
echo "$dir/install.fish"
end
CONFIG_MODULE="$(status dirname)/config.nix" \
CONFIG_NAME="ManuSurface" \
ARCH_HOSTNAME="manu-surface" \
USER_DISPLAYNAME="Manuel Thalmann" \
source "$(status dirname)/../../../scripts/Arch/OS/setup.fish";
source "$(status dirname)/../../../../../scripts/Arch/OS/setup.fish";
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" \
EXTENSION_DIR="/usr/share/chromium-extensions" \
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-nightly/extensions;

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

@ -3,15 +3,23 @@ begin
set -l dir (status dirname)
function initialize -V dir
source "$dir/../../Common/Scripts/wait-network.fish"
waitNetwork
or exit
sudo systemctl enable --now nix-daemon
source "$dir/../Scripts/software.fish"
source "$dir/../Software/base-devel/main.fish"
source "$dir/../Software/pacman/main.fish"
source "$dir/../Software/yay/main.fish"
yayinst \
pacman-contrib \
powershell-bin
end
if not type -q installSoftware
function installSoftware -V dir
"$dir/../Collections/personal.sh";
end
function getDeploymentScript -V dir
echo "$dir/../Scripts/deploy.fish";
end
source "$dir/../../Common/OS/install.fish"

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

@ -1,12 +1,24 @@
#!/bin/env fish
begin
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/Scripts/config.fish"
set -l mountDir (getConfig valhalla.partition.rootDir)
function setupOS -S -V dir -V CONFIG_MODULE -V mountDir
function runChroot -S
arch-chroot $argv
end
function installValhallaDeps -V mountDir
pacstrap -K "$mountDir" fish git jq nix tmux
end
function getInstallerScript -V dir -S
echo "$dir/install.fish"
end
function setupOS -S -V dir -V mountDir
source "$dir/../../Common/Scripts/wait-network.fish"
source "$dir/../../Common/Scripts/hooks.fish"
@ -43,7 +55,6 @@ begin
man-pages \
texinfo
and runHook installDrivers "Installing drivers…" || true
and genfstab -U "$mountDir" >> "$mountDir/etc/fstab"
and arch-chroot "$mountDir" systemctl enable NetworkManager
@ -61,6 +72,7 @@ begin
end | begin
read LOCALES
and arch-chroot "$mountDir" sed -i "s/^#\?\(\($LOCALES\).*\)\$/\1/" /etc/locale.gen
and arch-chroot "$mountDir" locale-gen
end
and begin
@ -77,14 +89,9 @@ begin
and echo "$ARCH_HOSTNAME" | arch-chroot "$mountDir" tee /etc/hostname > /dev/null
and arch-chroot "$mountDir" mkinitcpio -P
and arch-chroot "$mountDir" bash "$tempDir/../Software/GRUB/install.sh"
and runHook installDrivers "Installing drivers..." || true
and arch-chroot "$mountDir" bash "$tempDir/../Software/sudo/install.sh"
and pacstrap -K "$mountDir" fish nix tmux
and USER_NAME="$USER_NAME" \
USER_DISPLAYNAME="$USER_DISPLAYNAME" \
USER_GROUPS="$USER_GROUPS" \
arch-chroot "$mountDir" bash "$tempDir/user.sh"
and runInOS fish "$tempDir/../Software/GRUB/main.fish"
and if set -l keyLayout (getConfig valhalla.keyboardLayout)
set -l serviceName set-keymap.service
@ -104,7 +111,7 @@ begin
set -l file "/etc/systemd/system/getty@tty1.service.d/autologin.conf"
arch-chroot "$mountDir" mkdir -p (dirname "$file")
begin
and begin
printf %s\n \
"[Service]" \
"ExecStart=" \
@ -118,5 +125,5 @@ begin
end
end
source "$dir/../../Common/OS/setup.fish"
runSetup
end

View file

@ -0,0 +1,268 @@
function deploySoftware -d "Deploys a the specified software action" -a action
set -l dir (status dirname)
. "$dir/software.fish"
if [ -z "$action" ]
set action "install"
end
set -l isInstall (
if [ "$action" -eq "install" ]
echo true
else
echo false
end
)
if collectionActive essential
if $isInstall
yayinst \
mkinitcpio-firmware \
neofetch \
bash-completion \
wget \
oh-my-posh-bin \
screen \
tmux \
htop \
lsof \
zsh \
fish \
pkgfile \
sl \
rar
sudo pkgfile --update
end
source "$dir/../../Common/Software/bash/main.fish" $action
source "$dir/../Software/openssh/main.fish" $action
source "$dir/../Software/vim/main.fish" $action
source "$dir/../Software/git/main.fish" $action
source "$dir/../Software/zoxide/main.fish" $action
source "$dir/../Software/logo-ls/main.fish" $action
# GRUB Shenanigans - if that's not essential I don't know what is!
source "$dir/../Software/minegrub-theme/main.fish" $action
end
if collectionActive common
if $isInstall
yayinst \
tldr \
btop \
terminal-parrot
end
source "$dir/../Software/aliae/main.fish" $action
end
if collectionActive desktopExperience
if $isInstall
yayinst \
maliit-keyboard \
dconf-editor \
flatpak (
# Fixes: https://www.reddit.com/r/flatpak/comments/168tav2/how_to_fix_blurry_flatpaks_on_high_resolution/
) xdg-desktop-portal-gtk
# Fonts
yayinst \
ttf-cascadia-code-nerd \
ttf-ms-win11-auto \
otf-cascadia-code \
ttf-droid
# Password Management
yayinst \
bitwarden \
keepass \
keepasscx
# Tools
yayinst \
android-tools \
blackbox-terminal \
cpu-x \
gnome-calculator \
yubikey-manager-qt \
wireshark-qt \
linux-wifi-hotspot
# Remote Access
yayinst \
remmina (
# RDP support for Remmina
) freerdp
# Creativity
yayinst \
gimp \
inkscape
# Office stuff
yayinst \
libreoffice-fresh \
naps2-bin \
pdfarranger \
protonmail-bridge \
thunderbird
yayinst \
texlive \
texlive-langgerman
# Virtualization
yayinst propertree-git # mac .plist config file editor
if collectionActive school
yayinst \
teams-for-linux \
xournalpp-git \
rnote
end
end
source "$dir/../Software/KDE/main.fish" $action
source "$dir/../Software/sddm/main.fish" $action
# Internet Access
source "$dir/../Software/Firefox/main.fish" $action
source "$dir/../Software/brave/main.fish" $action
source "$dir/../Software/Pennywise/main.fish" $action
# Virtualization
source "$dir/../Software/waydroid/main.fish" $action
source "$dir/../Software/Virtual Machine Manager/main.fish" $action
if collectionActive coding
if $isInstall
yayinst \
devdocs-desktop \
godot-mono-bin
end
source "$dir/../Software/vscode/main.fish" $action
end
end
if collectionActive server
else
if $isInstall
# Energy Saving
yayinst power-profiles-daemon
sudo systemctl enable --now power-profiles-daemon
# Networking
yayinst \
network-manager-openvpn \
network-manager-openconnect \
protonvpn
end
if collectionActive common
if $isInstall
yayinst \
img2pdf \
numbat-bin \
nvtop \
pdf2svg \
tnef
end
source "$dir/../Software/IcedTea/main.fish" $action
end
end
if collectionActive media && $isInstall
yayinst \
ytmdesktop-bin \
netflix \
spotube-bin \
stremio \
tidal-dl \
tidal-hifi-bin \
nuclear-player-bin \
audius-client-bin
end
if collectionActive fileSync
if $isInstall
yayinst nextcloud-client
end
source "$dir/../Software/rclone/main.fish" $action
end
if collectionActive socialMedia
yayinst \
signal-desktop \
threema-desktop \
vesktop-bin
end
if collectionActive productivity && $isInstall
yayinst \
anki-bin
end
if collectionActive school && $isInstall
yayinst \
jdk17-temurin \
gradle \
jetbrains-toolbox
source "$dir/../../Common/Software/udev/ct-board.fish"
end
if collectionActive coding
if $isInstall
yayinst \
archiso \
wimlib (
# ISO support for wimlib
) cdrkit \
tea \
woodpecker-cli (
# AsciiDocs
) python-docutils (
# reStructuredText
) esbonio
end
source "$dir/../Software/n/main.fish" $action
end
if collectionActive python
if $isInstall
yayinst \
python \
python-pip \
python-pipenv
end
source "$dir/../Software/pyenv/main.fish" $action
end
if collectionActive gaming
if $isInstall
yayinst \
steam \
chiaki \
osu-lazer-bin \
libretro \
supertux \
gamepad-tool-bin
flatpak install -y flathub com.usebottels.bottles
end
source "$dir/../Software/Lutris/main.fish" $action
end
if collectionActive essential && $isInstall
yayinst bb
end
end
deploySoftware $argv

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

@ -3,11 +3,19 @@ begin
set -l dir (status dirname)
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"
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
function pacinst -d "Install pacman-package non-interactively"
sudo pacman --noconfirm --needed -Syu $argv
runPacman --noconfirm $argv
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

View file

@ -0,0 +1,31 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
pipewire-jack \
plasma-meta (
# As per: https://wiki.archlinux.org/title/KDE#Discover_does_not_show_any_applications
) packagekit-qt6 \
tesseract-data-deu \
tesseract-data-eng \
kde-applications-meta (
# Automatic rotation: https://wiki.archlinux.org/title/Tablet_PC#With_a_KDE_module
) iio-sensor-proxy \
pipewire-audio \
pipewire-pulse (
# File Exchange Support for KDE Connect: https://wiki.archlinux.org/title/KDE#KDE_Connect
) sshfs \
fwupd
configureSW
end
function configureSW
sudo systemctl enable --now bluetooth
end
runInstaller $argv
end

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

View file

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

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

@ -5,7 +5,7 @@ begin
function installSW
pacinst base-devel
configureSW
and configureSW
end
function configureSW
@ -17,6 +17,8 @@ begin
"OPTIONS+=(!debug)" \
"MAKEFLAGS=\"-j\$(nproc)\""
end | sudo tee "$customFile" > /dev/null
else
true
end
end

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

View file

@ -0,0 +1,20 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/git/main.fish"
function installSW -V dir
yayinst \
git \
git-lfs \
gitflow-avh \
gitflow-bashcompletion-avh \
gitflow-fishcompletion-avh \
gitflow-zshcompletion-avh
and fish "$dir/../../../Common/Software/git/main.fish" configure
end
runInstaller $argv
end

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

View file

@ -0,0 +1,25 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
openssh \
libfido2
source (status filename) configure
end
function configureSW
sudo systemctl --global enable ssh-agent
and begin
printf %s\n \
"#!/bin/bash" \
'export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"'
end | sudo tee "/etc/profile.d/openssh.sh" > /dev/null
end
runInstaller $argv
end

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

@ -8,7 +8,7 @@ begin
end
function configureSW
sed -i \
sudo sed -i \
-e '/^\[options\]$/,/^\[/{' \
-e 's/^#\?\(Color\)$/\1/;' \
-e '/^# Misc Options$/{' (
@ -19,7 +19,7 @@ begin
-e '/^#\?\[multilib\]$/,/^$/{ s/^#\?\(.*\)$/\1/; }' \
/etc/pacman.conf
pacman -Sy
sudo pacman -Sy
end
runInstaller $argv

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

View file

@ -0,0 +1,22 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
# `git` version
# yes | yayinst sddm-git
# stable version
yayinst sddm
configureSW
end
function configureSW -V dir
set -l configDir /etc/sddm.conf.d
sudo systemctl enable sddm
sudo mkdir -p "$configDir"
sudo cp "$dir/wayland.conf" "$configDir/10-wayland.conf"
end
runInstaller $argv
end

View file

@ -0,0 +1,6 @@
[General]
DisplayServer=wayland
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell
[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1 --inputmethod maliit-keyboard

View file

@ -0,0 +1,20 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/vim/main.fish"
function installSW -V dir
yayinst (
# Necessary for accessing clipboard in terminal: https://wiki.archlinux.org/title/Vim
) gvim \
vi-vim-symlink (
# Add clipboard support for wayland: https://www.reddit.com/r/Fedora/comments/ax9p9t/comment/jjb4p7b/
) vim-wayland-clipboard-git \
wl-clipboard
and fish "$dir/../../../Common/Software/vim/main.fish" configure
end
runInstaller $argv
end

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

View file

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

View file

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

View file

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

View file

@ -1,28 +0,0 @@
alias:
- name: totsch
value: git
env:
- name: POSH_THEME
value: '{{ if eq .OS "windows" }}{{ .Home }}/Nextcloud/.omp{{ else }}/usr/local/share/oh-my-posh/themes{{ end }}/manuel.omp.json'
path: []
script:
- value: |
while IFS= read -r -d '' file;
do
. "$file";
done < <(find {/etc,~/.config}/bash/conf.d/* -print0 2> /dev/null);
if: match .Shell "bash"
- value: |
# Profile Files
$profileRoot = Split-Path -Parent $PROFILE;
$profilePaths = @(
"$profileRoot/conf.d/*.ps1",
"{{ if eq .OS "windows" }}$env:ProgramData{{ else }}/etc{{ end }}/powershell/conf.d/*.ps1"
);
foreach ($profilePath in $profilePaths) {
if (Test-Path $profilePath) {
Get-Item $profilePath | ForEach-Object { . $_; };
}
}
if: match .Shell "pwsh"

View file

@ -1,8 +1,8 @@
#!/bin/pwsh
. "$PSScriptRoot/../powershell/lib.ps1";
. "$PSScriptRoot/../../Software/PowerShell/Profile.ps1";
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,95 +0,0 @@
#!/bin/pwsh
$null = New-Module {
function Add-PowerShellProfileStatement() {
param (
[Parameter(ParameterSetName="Global", Mandatory)]
[switch]$System,
[Parameter(ParameterSetName="DefaultUser", Mandatory)]
[switch]$DefaultUser,
[Parameter(ParameterSetName="Home")]
[string]$HomeDir = "~",
[Parameter(ParameterSetName="Global", Mandatory)]
[Parameter(ParameterSetName="DefaultUser")]
[Parameter(ParameterSetName="Home")]
[string]$Category = $null,
[Parameter(Position=0, Mandatory=$true)]
[string]$Statement,
[switch]$Overwrite
)
[System.Collections.Generic.List[string]] $profiles = @();
if ($System) {
$configRoot;
if ($IsWindows) {
$configRoot = "$env:ProgramData";
} else {
$configRoot = "/etc";
}
$profiles = @("$configRoot/powershell/.");
} else {
[System.Collections.Generic.List[string]] $shells = @();
if ($DefaultUser) {
if ($IsWindows) {
$HomeDir = "C:/Users/Default";
} else {
$HomeDir = "/etc/skel"
}
}
if (Get-Command pwsh -ErrorAction SilentlyContinue) {
$shells.Add("pwsh");
}
if (Get-Command powershell -ErrorAction SilentlyContinue) {
$shells.Add("powershell");
}
foreach ($shell in $shells) {
$path = & $shell -NoProfile -c '$PROFILE';
$profiles.Add($path);
}
Push-Location ~;
$profiles = $profiles |
ForEach-Object { [System.IO.Path]::GetRelativePath($(Get-Location), $_); } |
ForEach-Object { "$HomeDir/$_" };
}
if ($Category) {
if (-not $($Overwrite.IsPresent)) {
$Overwrite = $true;
}
$profiles = $profiles | ForEach-Object { Join-Path (Split-Path -Parent $_) "conf.d" "$Category.ps1"; };
}
$profiles | ForEach-Object {
$dirName = Split-Path -Parent $_;
if (-not (Test-Path -PathType Container $dirName)) {
$null = New-Item -ItemType Directory -Force $dirName;
}
if ((Test-Path -PathType Leaf $_) -and (-not $Overwrite)) {
Add-Content -Force "$_" "`n$Statement";
} else {
Set-Content -Force "$_" "$Statement";
}
};
Pop-Location;
}
function Get-ScriptInitializer() {
param (
[Parameter(Position=0, Mandatory=$true)]
$Initializer
)
return ". ([scriptblock]::Create(($Initializer) -join `"``n`"))";
}
}

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