Compare commits

...

565 commits

Author SHA1 Message Date
Manuel Thalmann 10701c7a25 Configure the users during installation 2024-09-13 17:36:29 +02:00
Manuel Thalmann fd2d9a2296 Fix installation of Threema 2024-09-13 16:32:39 +02:00
Manuel Thalmann 67e8e27a10 Accept stdin in pacman and yay commands 2024-09-13 16:32:26 +02:00
Manuel Thalmann e2c85fafdc Chain remaining commands 2024-09-13 15:31:42 +02:00
Manuel Thalmann 8b606be1a3 Remove unnecessary hook 2024-09-13 15:12:05 +02:00
Manuel Thalmann b4e96c0d8d Chain all commands 2024-09-13 15:10:29 +02:00
Manuel Thalmann b1cd2a934f Configure git using PowerShell script 2024-09-13 15:08:18 +02:00
Manuel Thalmann 5a26f5b3de Install global bash profiles globally 2024-09-13 15:07:49 +02:00
Manuel Thalmann 5f82106db8 Fix eval-flake for paths containing spaces 2024-09-13 15:07:22 +02:00
Manuel Thalmann 4d0dca443a Remove redundant script call 2024-09-13 15:05:51 +02:00
Manuel Thalmann 97465cc6cf Forcibly remove setup user 2024-09-13 15:05:17 +02:00
Manuel Thalmann 9eb9ae1b06 Fix installation of threema-desktop 2024-09-13 14:55:50 +02:00
Manuel Thalmann 58c7798009 Make module installation compatible with Linux 2024-09-13 14:54:47 +02:00
Manuel Thalmann 21716ab42b Install display manager first 2024-09-13 14:54:30 +02:00
Manuel Thalmann dc86b85d02 Replace obsolete packages 2024-09-13 14:53:46 +02:00
Manuel Thalmann 7b7cb10e87 Refactor the software install workflow 2024-09-13 14:47:07 +02:00
Manuel Thalmann 26d9587a2c Remove the installDrivers step from OS installations 2024-09-13 00:30:30 +02:00
Manuel Thalmann 33114b9c5e Create a dedicated script for deploying software actions 2024-09-12 23:17:04 +02:00
Manuel Thalmann b5d94fea09 Replace discord with vesktop 2024-09-12 23:11:16 +02:00
Manuel Thalmann 69f7e42524 Reorder the package installation logically 2024-09-12 23:11:04 +02:00
Manuel Thalmann c4bfccf85c Clarify the use of propertree 2024-09-12 23:09:25 +02:00
Manuel Thalmann bcb7da8ebd Read config from linux key 2024-09-12 21:48:05 +02:00
Manuel Thalmann 698d706aa0 Add groups to users properly 2024-09-12 21:47:50 +02:00
Manuel Thalmann dc9f21805e Redirect CONFIG_NAME variable properly 2024-09-12 21:47:29 +02:00
Manuel Thalmann e5723181a3 Ensure git repository can be read properly 2024-09-12 21:47:13 +02:00
Manuel Thalmann e8421152fb Fix incorrect message 2024-09-12 21:46:57 +02:00
Manuel Thalmann 5475b60078 Add git for installation 2024-09-12 21:46:47 +02:00
Manuel Thalmann acd4c58692 Use common script for Arch installation 2024-09-12 21:44:14 +02:00
Manuel Thalmann 0d7178aa6b Mount ntfs disks using ntfs3 2024-09-12 20:18:57 +02:00
Manuel Thalmann 93ceb7d9f4 Reboot before creating users 2024-09-12 19:04:48 +02:00
Manuel Thalmann ad4e6e45a1 Pause before reboot when debugging 2024-09-12 19:04:37 +02:00
Manuel Thalmann 29cbba1138 Improve layout of oh-my-posh prompt 2024-09-12 19:02:56 +02:00
Manuel Thalmann ce2d8ad3e7 Ensure partition script exits early on error 2024-09-12 19:02:33 +02:00
Manuel Thalmann 5a30b42737 Fix creation of multiple users 2024-09-12 19:00:00 +02:00
Manuel Thalmann ba93ad277d Ensure fish scripts exit early 2024-09-12 18:52:03 +02:00
Manuel Thalmann e69b016be4 Allow removing setup options 2024-09-12 18:44:58 +02:00
Manuel Thalmann 12979f006a Fix execution of OS scripts 2024-09-12 18:44:40 +02:00
Manuel Thalmann 1fda16b331 Execute partition script using shebang 2024-09-12 18:44:14 +02:00
Manuel Thalmann 353a69efdb Clarify that partition script edits partitions 2024-09-12 18:43:33 +02:00
Manuel Thalmann 48908e33e9 Prevent use of glob 2024-09-12 18:39:50 +02:00
Manuel Thalmann aa795d8ac4 Ensure partition presence using partprobe 2024-09-12 18:39:18 +02:00
Manuel Thalmann 2c0a1f5ca0 Exclude unnecessary files from backup 2024-09-10 02:39:37 +02:00
Manuel Thalmann 4aec05b7d7 Add a word of warning after backup 2024-09-10 00:38:35 +02:00
Manuel Thalmann e5252cd9af Add a script for creating backups 2024-09-10 00:37:13 +02:00
Manuel Thalmann 5bafb8057e Force profile selection for Windows installation actions 2024-09-09 00:04:06 +02:00
Manuel Thalmann 337f87ed3f Force line endings of Unix scripts 2024-09-09 00:00:49 +02:00
Manuel Thalmann 5225a62a3b Start setup automatically 2024-09-08 17:48:10 +02:00
Manuel Thalmann 1efe4bb432 Show profile selection during setup 2024-09-08 17:48:02 +02:00
Manuel Thalmann 60025040e9 Add a function for selecting the profile 2024-09-08 17:47:49 +02:00
Manuel Thalmann 96888c97df Use same installer script for all profiles 2024-09-08 17:47:28 +02:00
Manuel Thalmann 761bcd3213 Fix non-functioning WSL installation 2024-09-08 17:42:31 +02:00
Manuel Thalmann cfd3cfc12f Make Oh-My-Posh theme location dynamic 2024-09-08 17:42:11 +02:00
Manuel Thalmann ca2da30384 Improve performance 2024-09-08 17:41:30 +02:00
Manuel Thalmann a1d45730ab Update Selenium to the newest version 2024-09-08 17:12:01 +02:00
Manuel Thalmann 9f7bd40ed5 Switch to named flakes 2024-09-08 17:09:01 +02:00
Manuel Thalmann c3ccc92910 Store user related options properly 2024-09-03 23:11:28 +02:00
Manuel Thalmann fcabb8a4d6 Refactor the directory structure 2024-09-03 23:10:35 +02:00
Manuel Thalmann 750a27af69 Add code for cleaning up after installations 2024-09-03 22:15:15 +02:00
Manuel Thalmann 0e36efda0f Add functions for uninstalling packages 2024-09-03 22:14:21 +02:00
Manuel Thalmann ef991cdf78 Improve assignments of groups 2024-09-03 20:32:01 +02:00
Manuel Thalmann 26f39d4a64 Remove unnecessary policy change 2024-09-03 16:31:12 +02:00
Manuel Thalmann 5248e5d0b7 Migrate winiso script to fish 2024-09-03 12:08:47 +02:00
Manuel Thalmann cb3e16005d Ask for live scripts only once 2024-09-03 12:08:35 +02:00
Manuel Thalmann 86a3f87f70 Install Ubuntu automatically 2024-09-03 12:08:14 +02:00
Manuel Thalmann 4f5c39df66 Add a backup script for reWASD 2024-09-03 12:02:48 +02:00
Manuel Thalmann 3c26cd7c02 Add a backup script for Visual Studio 2024-09-03 12:02:32 +02:00
Manuel Thalmann e75f0cfaf0 Allow backing up TrackMania Forever 2024-09-03 12:02:09 +02:00
Manuel Thalmann ab33b56ca3 Allow testing winget packages with specific scope 2024-09-03 01:16:42 +02:00
Manuel Thalmann a0a1816a76 Allow backing up RetroArch 2024-08-28 13:07:58 +02:00
Manuel Thalmann c2d1487dd9 Add scripts for backing up PuTTY 2024-08-28 13:00:37 +02:00
Manuel Thalmann 9a304e50a9 Add scripts for backing up osu! 2024-08-28 12:47:07 +02:00
Manuel Thalmann 3ef4f0a811 Install osu!lazer per user 2024-08-28 12:37:20 +02:00
Manuel Thalmann 57138db12c Add backup support for ManiaPlanet 2024-08-28 05:18:52 +02:00
Manuel Thalmann dbd9cc24c9 Add scripts for backing up and restoring LGHub 2024-08-28 05:05:55 +02:00
Manuel Thalmann a9155c6567 Allow users to restore a backup 2024-08-28 04:40:32 +02:00
Manuel Thalmann 3e82230fd3 Add scripts for backing up and restoring personal files 2024-08-28 04:40:00 +02:00
Manuel Thalmann 68caf78c27 Fix non-functioning profile script 2024-08-28 04:39:15 +02:00
Manuel Thalmann 6e818ea9f6 Ensure 7z is installed for backups 2024-08-28 04:38:56 +02:00
Manuel Thalmann 8898e30eae Streamline restoration of directories 2024-08-28 04:38:30 +02:00
Manuel Thalmann 490bf8b31f Set a default path for backup artifacts 2024-08-28 00:38:20 +02:00
Manuel Thalmann f52bf04c96 Add capabilities to back up apps 2024-08-28 00:37:04 +02:00
Manuel Thalmann f6aeee7605 Allow specifying a backup action 2024-08-28 00:29:33 +02:00
Manuel Thalmann f8748a2ec9 Ignore unspecified backup archives 2024-08-28 00:22:38 +02:00
Manuel Thalmann ec4cbf6348 Ignore inexistent backup artifacts 2024-08-28 00:21:06 +02:00
Manuel Thalmann 43b590f8b6 Make the install script action agnostic 2024-08-28 00:03:28 +02:00
Manuel Thalmann e8b51e5b08 Rename the Windows installer script 2024-08-27 23:35:56 +02:00
Manuel Thalmann cc2deaed77 Rename outdated script 2024-08-27 23:08:41 +02:00
Manuel Thalmann f563dee72e Silence errors concerning empty aliae configurations 2024-08-27 22:35:31 +02:00
Manuel Thalmann f2139b1667 Make Operations script cross platform 2024-08-27 22:27:44 +02:00
Manuel Thalmann 6361b03bb8 Handle OneShot tasks only on Windows 2024-08-27 21:32:49 +02:00
Manuel Thalmann 4061bb56c5 Add a script for managing backups 2024-08-27 21:05:51 +02:00
Manuel Thalmann e0854b90f6 Add tools for managing aliae 2024-08-27 18:58:33 +02:00
Manuel Thalmann 4c9d3a78d3 Fix non-functioning aliae installation 2024-08-27 18:55:12 +02:00
Manuel Thalmann 90db794e42 Create dedicated script for creating users 2024-08-27 17:04:17 +02:00
Manuel Thalmann 6ea42ba180 Create dedicated script for installing software 2024-08-27 16:41:08 +02:00
Manuel Thalmann 0b1998d335 Prevent reading nix config multiple times 2024-08-27 14:35:04 +02:00
Manuel Thalmann c6a677b9ff Ensure only one user is enabled at once 2024-08-27 14:11:31 +02:00
Manuel Thalmann f23efeb0ca Prevent unnecessary file creation 2024-08-27 14:06:56 +02:00
Manuel Thalmann eb40f0ebdf Execute OneShot tasks in any operation 2024-08-27 14:05:16 +02:00
Manuel Thalmann 72687afa9d Use /mnt as mount directory 2024-08-27 04:30:12 +02:00
Manuel Thalmann 38085572f2 Force the use of the managed distribution 2024-08-27 04:26:25 +02:00
Manuel Thalmann 0e435f9c9a Initialize operation for all users 2024-08-27 04:24:29 +02:00
Manuel Thalmann acf938cc96 Handle initialization in operation code 2024-08-27 04:15:37 +02:00
Manuel Thalmann 5217107999 Execute script non-interactive during OneShot tasks 2024-08-27 03:50:08 +02:00
Manuel Thalmann b2fc26185d Exit script after running OneShot task 2024-08-27 03:45:44 +02:00
Manuel Thalmann 4f8df6b406 Modify user after first login 2024-08-27 03:27:54 +02:00
Manuel Thalmann df06202c5f Rearm Windows Activation before creating MSAcc 2024-08-27 03:25:19 +02:00
Manuel Thalmann 33e28e7ca9 Register MSAcc logon script early 2024-08-27 03:24:37 +02:00
Manuel Thalmann 481dbde675 Allow rebooting without registering setup 2024-08-27 03:11:35 +02:00
Manuel Thalmann 89d37fa714 Fix non-functioning NoProfile argument 2024-08-27 02:09:04 +02:00
Manuel Thalmann 8a43c0bc5b Prevent unnecessary installation actions 2024-08-27 01:57:46 +02:00
Manuel Thalmann 7e619be1a9 Only install PowerShell module if necessary 2024-08-27 01:25:32 +02:00
Manuel Thalmann 6ba44e524b Streamline PowerShell installation 2024-08-27 00:45:46 +02:00
Manuel Thalmann 2abe8a5dd0 Add further functionality to the WSL script 2024-08-27 00:38:46 +02:00
Manuel Thalmann f2996a6b94 Create a separate script for WSL interaction 2024-08-26 23:33:46 +02:00
Manuel Thalmann a79b178854 Fix recursive configuration 2024-08-25 03:58:28 +02:00
Manuel Thalmann 057d242124 Fix malformed module 2024-08-24 18:35:43 +02:00
Manuel Thalmann a61ef921bd Keep Windows fixes separate 2024-08-24 16:56:29 +02:00
Manuel Thalmann de60bf5795 Remove WSL after operation 2024-08-24 16:52:41 +02:00
Manuel Thalmann 14f348722e Make distribution name unique 2024-08-24 16:41:05 +02:00
Manuel Thalmann 341a828c43 Streamline WSL distribution name 2024-08-24 16:27:34 +02:00
Manuel Thalmann 9362c0d1c3 Remove unused resources after user setup 2024-08-24 16:15:10 +02:00
Manuel Thalmann 5a38d19ae6 Print update logs properly 2024-08-24 14:47:51 +02:00
Manuel Thalmann 6775e59366 Allow overriding Windows settings 2024-08-24 14:20:22 +02:00
Manuel Thalmann 6dea884c9b Update incorrect path 2024-08-24 14:11:38 +02:00
Manuel Thalmann 3de2384f8e Simplify osu!lazer installation 2024-08-24 14:10:02 +02:00
Manuel Thalmann 13f46f285f Determine name of setup user properly 2024-08-24 14:01:05 +02:00
Manuel Thalmann 0e5319f454 Make OMP configuration platform independent 2024-08-24 13:27:48 +02:00
Manuel Thalmann 324fa9a0e6 Fix incorrect character in OMP theme 2024-08-24 13:27:35 +02:00
Manuel Thalmann 03fab82de4 Remove unnecessary code 2024-08-24 04:25:07 +02:00
Manuel Thalmann 2c88b03fc6 Remove unnecessary loop 2024-08-24 04:24:55 +02:00
Manuel Thalmann 8502d4a59b Add missing module 2024-08-24 04:24:37 +02:00
Manuel Thalmann 41f7f06125 Add nextcloud to the module list 2024-08-24 04:18:57 +02:00
Manuel Thalmann cf3971890d Add a function for creating shortcuts 2024-08-24 04:18:33 +02:00
Manuel Thalmann 14c509d7a8 Configure nextcloud syncs 2024-08-24 04:07:47 +02:00
Manuel Thalmann 4548f5bf53 Allow configuring nextcloud syncs 2024-08-24 04:07:35 +02:00
Manuel Thalmann c9e30bf3de Create separate option holding win users 2024-08-24 03:25:28 +02:00
Manuel Thalmann 7b4126667a Rename Nextcloud installer 2024-08-24 01:50:07 +02:00
Manuel Thalmann 9a3a7fe950 Add file system driver for dual boot 2024-08-24 01:41:09 +02:00
Manuel Thalmann b451f52f04 Prevent unnecessary config evaluation 2024-08-24 01:31:39 +02:00
Manuel Thalmann 3c6dc16b8f Fix non-functioning installer 2024-08-24 01:27:26 +02:00
Manuel Thalmann bf61ea0c1a Install vscode extensions by default 2024-08-24 01:16:56 +02:00
Manuel Thalmann 2c2e858974 Load theme file from WSL properly 2024-08-24 00:59:59 +02:00
Manuel Thalmann 335804d384 Update aliae configuration script 2024-08-24 00:42:57 +02:00
Manuel Thalmann 8ada6c8d4a Strip duplicate variables and aliases 2024-08-24 00:08:58 +02:00
Manuel Thalmann 50078286b3 Install posh theme automatically 2024-08-23 23:53:48 +02:00
Manuel Thalmann a8976e49f4 Export missing function 2024-08-23 23:50:13 +02:00
Manuel Thalmann 02822687e2 Install aliae by default 2024-08-23 23:46:23 +02:00
Manuel Thalmann bef29e8a75 Add scripts for changing aliae config 2024-08-23 23:44:51 +02:00
Manuel Thalmann 63701a6c81 Fix compatibility with mixed new line characters 2024-08-23 23:44:23 +02:00
Manuel Thalmann 5cc5dac24b Add a script for installing aliae 2024-08-23 22:38:28 +02:00
Manuel Thalmann 6b46b3f53c Add desired posh theme 2024-08-23 19:43:06 +02:00
Manuel Thalmann db8380750a Make option names more clear 2024-08-23 19:42:27 +02:00
Manuel Thalmann 0021245415 Allow configuring oh-my-posh 2024-08-23 19:39:18 +02:00
Manuel Thalmann cf60f5f88e Fetch config from proper section 2024-08-23 19:24:49 +02:00
Manuel Thalmann 677e8d34ab Adjust configuration accordingly 2024-08-23 19:14:09 +02:00
Manuel Thalmann f9b937032e Refactor option descriptions 2024-08-23 19:02:06 +02:00
Manuel Thalmann 32c7be700a Clean up the Windows configuration 2024-08-23 18:59:49 +02:00
Manuel Thalmann 7b04566b80 Clean up the users.nix file 2024-08-23 18:51:54 +02:00
Manuel Thalmann aff634ab8b Create dedicated rclone module 2024-08-23 18:48:30 +02:00
Manuel Thalmann 884f7467b8 Move git module to separate directory 2024-08-23 18:42:16 +02:00
Manuel Thalmann 55e48613a3 Move git options to separate module 2024-08-23 18:40:24 +02:00
Manuel Thalmann 8749d9c230 Fix inheritance of user config 2024-08-23 18:28:20 +02:00
Manuel Thalmann 655d44a1dc Allow OS specific settings 2024-08-23 18:11:48 +02:00
Manuel Thalmann 8d239ff26e Update archiso 2024-08-23 14:19:56 +02:00
Manuel Thalmann 0d53ba8b01 Set user info during git setup 2024-08-23 02:01:16 +02:00
Manuel Thalmann ea9a5408d2 Make all config scripts platform independent 2024-08-23 01:57:53 +02:00
Manuel Thalmann f893911bc0 Allow leaving aliases unspecified 2024-08-23 01:52:25 +02:00
Manuel Thalmann de9404f0a9 Make scripts platform independent 2024-08-23 01:52:04 +02:00
Manuel Thalmann 055eb1d2cd Add scripts for configuring git 2024-08-23 01:43:26 +02:00
Manuel Thalmann 138c6ac33d Configure software implicitly 2024-08-23 01:41:32 +02:00
Manuel Thalmann 70a14ff012 Skip profile creation for PinnedItem 2024-08-22 23:55:41 +02:00
Manuel Thalmann 9308a24cae Allow skipping powershell module registration 2024-08-22 23:55:00 +02:00
Manuel Thalmann c7cec608cb Add profiles to the flake 2024-08-22 23:37:53 +02:00
Manuel Thalmann 24426d42f5 Remove user profile of OneShot user 2024-08-22 23:12:11 +02:00
Manuel Thalmann e604edfd9c Add missing OneShotTask declaration 2024-08-22 20:41:30 +02:00
Manuel Thalmann a2bb546935 Fix infinite loop 2024-08-22 20:41:17 +02:00
Manuel Thalmann 6796263a7f Fix handling empty error messages 2024-08-22 20:12:18 +02:00
Manuel Thalmann 4cfaf27888 Add choco to the profile of the setup user 2024-08-22 13:46:55 +02:00
Manuel Thalmann 9c7307d293 Fix incorrect typings 2024-08-22 11:11:12 +02:00
Manuel Thalmann fb29aa6efa Fix permission issues when enabling Win hack 2024-08-22 11:11:00 +02:00
Manuel Thalmann dbaccc0648 Register setup script as admin 2024-08-22 11:10:39 +02:00
Manuel Thalmann 372ff26ded Execute the entire installer using live scripts 2024-08-21 23:21:32 +02:00
Manuel Thalmann f567fbe4d3 Streamline the creation of users 2024-08-21 18:34:18 +02:00
Manuel Thalmann 1bf8de27b4 Replace osk with cmd during debugging 2024-08-21 18:33:41 +02:00
Manuel Thalmann ca2f3753c9 Prevent pauses in OneShot tasks 2024-08-21 18:28:50 +02:00
Manuel Thalmann 01a62a705d Print commands in debug mode 2024-08-21 18:28:08 +02:00
Manuel Thalmann 51f33c072f Run OneShot tasks with dedicated user 2024-08-21 18:27:47 +02:00
Manuel Thalmann 1a887a51b2 Add function for generating startup command 2024-08-21 18:26:58 +02:00
Manuel Thalmann b6bd865b6e Allow registering startup script for the default user 2024-08-21 18:20:11 +02:00
Manuel Thalmann 8812b00b2e Prevent unnecessary errors during WSL execution 2024-08-21 14:08:26 +02:00
Manuel Thalmann 23d25111ea Register WSL before running OneShot tasks 2024-08-21 03:37:44 +02:00
Manuel Thalmann d87636175a Overwrite broken module 2024-08-21 03:20:37 +02:00
Manuel Thalmann 6525181781 Prevent initialization of nested operations 2024-08-21 03:18:31 +02:00
Manuel Thalmann 1eb6142d37 Improve log messages of OneShot tasks 2024-08-21 02:02:30 +02:00
Manuel Thalmann 8629ed08fa Retry Linux path conversion for errors 2024-08-20 00:20:33 +02:00
Manuel Thalmann dfaac9ff98 Fix typo 2024-08-20 00:20:07 +02:00
Manuel Thalmann 0da67dca87 Fix broken signature of Restart-Intermediate 2024-08-19 12:07:26 +02:00
Manuel Thalmann 44a01ffef1 Report unexpected path conversions 2024-08-19 02:50:41 +02:00
Manuel Thalmann 1bbd8e53e6 Load missing path 2024-08-19 02:50:19 +02:00
Manuel Thalmann 3a713ef1fe Ensure error file can be read from 2024-08-19 02:24:45 +02:00
Manuel Thalmann c7ab490e27 Streamline OneShot task handler 2024-08-19 02:24:30 +02:00
Manuel Thalmann a2f91c2287 Simplify script registration 2024-08-19 02:24:13 +02:00
Manuel Thalmann 3f1eeba9dc Fix broken regedit paths 2024-08-19 01:38:25 +02:00
Manuel Thalmann 0345ae5a72 Allow registering reboots for users 2024-08-19 01:37:14 +02:00
Manuel Thalmann 00eff57e5b Prevent users from being excluded 2024-08-19 01:10:29 +02:00
Manuel Thalmann a61c8c92b4 Force copying of Linux users to Windows 2024-08-19 00:54:13 +02:00
Manuel Thalmann c2a8a5e8ef Improve log messages of updates 2024-08-18 12:20:21 +02:00
Manuel Thalmann 9c36c70150 Remove unnecessary command 2024-08-18 10:24:15 +02:00
Manuel Thalmann 2720bb4361 Fix time for QEMU VMs 2024-08-18 09:35:16 +02:00
Manuel Thalmann 72c595b0e0 Remove unnecessary desktop icons 2024-08-18 09:25:23 +02:00
Manuel Thalmann ccf31fcd08 Add a timeout for the reWASD downloader 2024-08-18 09:05:04 +02:00
Manuel Thalmann be1126444b Allow setting a timeout for clicking download buttons 2024-08-18 09:04:42 +02:00
Manuel Thalmann c7f1b94654 Emit errors concerning WSL commands 2024-08-17 13:51:10 +02:00
Manuel Thalmann 8ba7e2b210 Emit errors using Write-Error 2024-08-17 13:49:21 +02:00
Manuel Thalmann 9cf18d32bc Convert Argument to string explicitly 2024-08-16 23:03:19 +02:00
Manuel Thalmann c29cff4c78 Ignore unfinished browser downloads 2024-08-16 17:57:22 +02:00
Manuel Thalmann 73d427b305 Install powershell modules for all users 2024-08-16 16:43:30 +02:00
Manuel Thalmann 9dd831b084 Fix typos 2024-08-16 16:10:09 +02:00
Manuel Thalmann fbb6b008ac Install AutoHotkey as preparation 2024-08-16 15:22:09 +02:00
Manuel Thalmann ab490a401d Allow running live scripts in debug mode 2024-08-16 15:21:41 +02:00
Manuel Thalmann 5d37181875 Generate env variables using shorthand scripts 2024-08-16 15:16:56 +02:00
Manuel Thalmann d910b7f66f Allow running installation in debug mode 2024-08-16 15:16:28 +02:00
Manuel Thalmann 11e993f78a Redirect winiso exit code properly 2024-08-16 15:13:53 +02:00
Manuel Thalmann 63935d1ff3 Allow specifying winiso build type 2024-08-16 15:13:33 +02:00
Manuel Thalmann 20508973c5 Refactor winget check for rare issue 2024-08-16 15:04:37 +02:00
Manuel Thalmann a5ab376624 Disable Windows Update reboot only as admin 2024-08-16 14:35:35 +02:00
Manuel Thalmann 5d34ea69da Add a function for queueing startup commands 2024-08-15 18:34:48 +02:00
Manuel Thalmann f7ced22e9d Hide output of DISM commands 2024-08-15 13:57:15 +02:00
Manuel Thalmann 5e7d97c21f Ensure website is loaded before download 2024-08-15 02:42:00 +02:00
Manuel Thalmann f082b219ec Prevent Jellyfin from rebooting 2024-08-15 02:22:07 +02:00
Manuel Thalmann dd4925c16a Improve handling of slow websites 2024-08-14 18:47:29 +02:00
Manuel Thalmann 9e77d57b8c Fix potential CRC errors 2024-08-14 18:46:42 +02:00
Manuel Thalmann 1925a79c5b Ensure auto reboot is disabled properly 2024-08-12 21:32:53 +02:00
Manuel Thalmann 3e36dc8876 Disable auto reboot by default 2024-08-12 01:27:50 +02:00
Manuel Thalmann dbb16df8e1 Add methods for managing auto restart feature 2024-08-12 01:23:42 +02:00
Manuel Thalmann 871eafe5db Install Wave Link first 2024-08-11 18:27:16 +02:00
Manuel Thalmann 9c2ebaf858 Throw an error when failing to load config 2024-08-11 18:27:06 +02:00
Manuel Thalmann 515a256bd4 Fix incorrect script path 2024-08-10 20:37:10 +02:00
Manuel Thalmann 74fb20d6b1 Allow leaving install action unspecified 2024-08-10 19:27:56 +02:00
Manuel Thalmann 49a133e76a Retrieve registry value properly 2024-08-10 19:26:53 +02:00
Manuel Thalmann 0f048cbb9e Add scripts for installing git 2024-08-10 15:28:10 +02:00
Manuel Thalmann 6aab5d5d64 Remove unnecessary code 2024-08-10 15:24:15 +02:00
Manuel Thalmann 6bce599029 Add a function for removing the RunOnce key 2024-08-10 15:24:04 +02:00
Manuel Thalmann df363ce38c Set user groups properly 2024-08-10 15:23:38 +02:00
Manuel Thalmann 3b662e76e0 Configure MS accounts properly 2024-08-10 15:21:13 +02:00
Manuel Thalmann 725f01a572 Queue next user after configuration finished 2024-08-10 15:20:36 +02:00
Manuel Thalmann a89ef2b8a7 Disable UAC after logging in MS account 2024-08-10 15:19:14 +02:00
Manuel Thalmann a43a4890f3 Enable OneShot listener for MS accounts 2024-08-10 15:18:10 +02:00
Manuel Thalmann 9daaf4cee8 Set timezone automatically 2024-08-10 15:17:21 +02:00
Manuel Thalmann a42865a480 Prevent variable overwrite 2024-08-10 15:16:57 +02:00
Manuel Thalmann 93bad7fc73 Register installer script after disabling UAG 2024-08-10 15:16:27 +02:00
Manuel Thalmann b630f3da24 Redirect user for configuration properly 2024-08-10 15:16:00 +02:00
Manuel Thalmann 9de3de5bb2 Fix broken redirection of arguments 2024-08-10 15:15:40 +02:00
Manuel Thalmann 89abeada06 Determine installer action properly 2024-08-10 15:15:21 +02:00
Manuel Thalmann adff725fbd Redirect arguments to chocolatey properly 2024-08-10 15:13:46 +02:00
Manuel Thalmann e743af0944 Fix non-functioning OneShot script 2024-08-10 15:13:20 +02:00
Manuel Thalmann ad01cd2470 Fix oneshot task execution 2024-08-10 06:11:55 +02:00
Manuel Thalmann b8582e6432 Allow removing the OneShot listener 2024-08-10 05:19:24 +02:00
Manuel Thalmann 1452871873 Remove duplicate code 2024-08-10 05:17:08 +02:00
Manuel Thalmann 4f52273757 Fix typo 2024-08-10 03:57:37 +02:00
Manuel Thalmann 4a7b3ef411 Fix copy paste error 2024-08-10 03:57:26 +02:00
Manuel Thalmann 2b8a386f79 Allow skipping the User parameter 2024-08-10 03:40:37 +02:00
Manuel Thalmann ff9a3eeedc Fix incorrect script path 2024-08-10 03:13:13 +02:00
Manuel Thalmann 9aaefb2cf0 Fix broken scripts 2024-08-10 01:50:52 +02:00
Manuel Thalmann ca1d4be8fc Remove unnecessary confirmation dialogue 2024-08-10 00:23:47 +02:00
Manuel Thalmann e83e501fe5 Add a task for disabling UAC 2024-08-10 00:23:37 +02:00
Manuel Thalmann 9c47271f95 Force creation of sudo alias 2024-08-10 00:22:46 +02:00
Manuel Thalmann 4eb61d8604 Allow execution of OneShot tasks 2024-08-10 00:22:30 +02:00
Manuel Thalmann 29a52b02de Ensure CONFIG_MODULE is resolved 2024-08-09 23:23:55 +02:00
Manuel Thalmann 171dee2216 Add dedicated functions for creating startup scripts 2024-08-09 23:23:29 +02:00
Manuel Thalmann d758864fdc Change login message 2024-08-09 22:11:12 +02:00
Manuel Thalmann 026b236783 Set up shared WSL 2024-08-09 16:02:33 +02:00
Manuel Thalmann e4883badcc Install updates only as admin 2024-08-09 16:02:24 +02:00
Manuel Thalmann 14055fcca3 Disable boot message only as admin 2024-08-09 16:02:00 +02:00
Manuel Thalmann b1b06bb152 Add a function for allowing user access 2024-08-09 15:56:16 +02:00
Manuel Thalmann 17b8a79adf Fix broken reboot registration 2024-08-09 15:49:36 +02:00
Manuel Thalmann 3c0771e96b Ensure the script path is detected properly 2024-08-09 14:45:50 +02:00
Manuel Thalmann 3accbc7bfb Allow automatic script execution for MS accounts 2024-08-09 14:45:29 +02:00
Manuel Thalmann e42341151d Reorder winget arguments 2024-08-09 14:45:05 +02:00
Manuel Thalmann f93032a6e4 Allow registering reboot for the default user 2024-08-09 14:44:57 +02:00
Manuel Thalmann 1a5dbd7b2d Add a dedicated function for disabling boot message 2024-08-09 13:35:12 +02:00
Manuel Thalmann 8562946aff Implement root install loop using a switch 2024-08-09 13:34:46 +02:00
Manuel Thalmann 950e6dc761 Force computer reboots 2024-08-09 04:42:55 +02:00
Manuel Thalmann c58cc3bbc5 Add scripts for controlling UAC 2024-08-09 04:29:26 +02:00
Manuel Thalmann 12ea3e0a51 Set displayname of all users 2024-08-09 04:20:00 +02:00
Manuel Thalmann 9acbee077c Login to users for configuration 2024-08-09 04:19:49 +02:00
Manuel Thalmann 93cdf65779 Skip PWSH_PATH if undefined 2024-08-09 04:08:22 +02:00
Manuel Thalmann 135cd8e218 Fix typo 2024-08-09 03:38:10 +02:00
Manuel Thalmann e55e6a5a5a Add missing setup stage 2024-08-09 03:02:25 +02:00
Manuel Thalmann de7ac289fb Make Get-Users output explicit 2024-08-09 03:02:17 +02:00
Manuel Thalmann db0f62541e Allow displaying a boot message 2024-08-09 02:59:06 +02:00
Manuel Thalmann 3d85667773 Disable users by default 2024-08-09 02:58:01 +02:00
Manuel Thalmann 98d1ddb4d3 Add a stage for configuring users 2024-08-09 02:27:24 +02:00
Manuel Thalmann 9dbed50916 Detect installation properly 2024-08-09 02:24:59 +02:00
Manuel Thalmann fbeeb6532e Remove unnecessary icon 2024-08-09 02:23:56 +02:00
Manuel Thalmann ef6c2b4a1b Add Predator Z301C to the hardware list 2024-08-09 02:23:41 +02:00
Manuel Thalmann 2f63463912 Add support for the sudo command 2024-08-09 02:22:45 +02:00
Manuel Thalmann a0ddf0c8aa Fix renaming user 2024-08-09 02:20:27 +02:00
Manuel Thalmann 845072bff9 Make specifying PWSH_PATH optional 2024-08-09 02:12:27 +02:00
Manuel Thalmann faee0ec687 Show error properly 2024-08-09 02:00:18 +02:00
Manuel Thalmann f4babf06d6 Fix typo 2024-08-09 01:53:59 +02:00
Manuel Thalmann 92a7b89523 Remove code duplication 2024-08-09 01:33:04 +02:00
Manuel Thalmann 9e19daced2 Remove unnecessary console output 2024-08-09 01:22:51 +02:00
Manuel Thalmann 2ed68c6c30 Fix incorrect file paths 2024-08-09 00:17:05 +02:00
Manuel Thalmann b0cc36559c Fix incorrect hardware name 2024-08-09 00:03:45 +02:00
Manuel Thalmann 6db73090bd Reorder installation steps 2024-08-08 23:03:10 +02:00
Manuel Thalmann cc84c185af Suppress unnecessary output 2024-08-08 22:24:41 +02:00
Manuel Thalmann f217f8bd49 Refactor the wsl installation check 2024-08-08 22:21:49 +02:00
Manuel Thalmann 03e41982a4 Ensure WSL Ubuntu is installed 2024-08-08 22:08:13 +02:00
Manuel Thalmann 9dc4380a2c Make config script platform independent 2024-08-08 18:21:16 +02:00
Manuel Thalmann 084058c266 Leave groups unspecified 2024-08-08 17:50:32 +02:00
Manuel Thalmann ee2a745308 Add users during installation 2024-08-08 17:49:43 +02:00
Manuel Thalmann 1a0ecce652 Fix incorrect user conversion 2024-08-08 17:16:51 +02:00
Manuel Thalmann 951700b298 Keep Windows groups separate 2024-08-08 15:33:55 +02:00
Manuel Thalmann 4d31b476cb Remove unnecessary options from Win users 2024-08-08 15:32:05 +02:00
Manuel Thalmann dd1bc94d75 Inherit Windows users from linux 2024-08-08 15:28:29 +02:00
Manuel Thalmann 976fec72ad Add functions for retrieving attributes 2024-08-08 14:45:34 +02:00
Manuel Thalmann 99aae05304 Install Oh My Posh system wide 2024-08-08 14:23:15 +02:00
Manuel Thalmann 8916c3b544 Fix typo 2024-08-08 14:22:22 +02:00
Manuel Thalmann 0297a7d8d5 Skip scope argument by default 2024-08-08 14:22:13 +02:00
Manuel Thalmann c1ae5de780 Fix incorrect file paths 2024-08-08 14:21:55 +02:00
Manuel Thalmann d3c5810149 Configure NVS after installation 2024-08-08 14:09:20 +02:00
Manuel Thalmann 99e9542053 Refactor app association script 2024-08-08 14:09:07 +02:00
Manuel Thalmann 049f7771d2 Fix typo 2024-08-08 14:08:48 +02:00
Manuel Thalmann 6111236dc0 Apply the error action globally 2024-08-08 14:08:38 +02:00
Manuel Thalmann de30c36dd5 Move PinnedItem script to proper location 2024-08-08 14:04:51 +02:00
Manuel Thalmann 85c9436eec Add notes to installation script 2024-08-08 14:03:15 +02:00
Manuel Thalmann 20267c21ac Add a script for installing LGHub 2024-08-08 13:25:21 +02:00
Manuel Thalmann 2584798683 Reorder installation steps 2024-08-08 13:17:14 +02:00
Manuel Thalmann 2abec73f45 Reload env after installing git 2024-08-08 12:18:04 +02:00
Manuel Thalmann c8c3b03773 Enure features for PinnedItem are installed 2024-08-08 05:21:21 +02:00
Manuel Thalmann 940e63376c Install features using chocolatey 2024-08-08 05:20:58 +02:00
Manuel Thalmann b45f27adf6 Ensure git is installed 2024-08-08 05:14:31 +02:00
Manuel Thalmann b7ff8f8cac Fix broken XML document creation 2024-08-08 05:04:59 +02:00
Manuel Thalmann 92df913e97 Fix incorrect parameter access 2024-08-08 05:03:24 +02:00
Manuel Thalmann a172b50077 Fix incorrect path 2024-08-08 05:01:45 +02:00
Manuel Thalmann 9a0ccd4064 Add a dedicated user option for windows 2024-08-08 04:45:27 +02:00
Manuel Thalmann 425b364df2 Add a stage for creating users 2024-08-08 04:38:40 +02:00
Manuel Thalmann 97a2826f9a Add scripts for all remaining apps 2024-08-08 04:36:35 +02:00
Manuel Thalmann db7d4cd4fd Allow custom winget arguments 2024-08-08 04:29:00 +02:00
Manuel Thalmann 1d0523dd4e Improve winget function 2024-08-08 04:28:21 +02:00
Manuel Thalmann 6216f8ec9d Add missing function 2024-08-08 04:20:11 +02:00
Manuel Thalmann e63c3251d8 Refactor browser scripts 2024-08-08 03:32:03 +02:00
Manuel Thalmann d9a4ad03dd Ensure Selenium is imported 2024-08-08 02:59:02 +02:00
Manuel Thalmann 5656d97f13 Allow skipping the Action argument 2024-08-08 02:56:28 +02:00
Manuel Thalmann 21e0ff7c1a Rename all old installation scripts 2024-08-08 02:56:13 +02:00
Manuel Thalmann beecfde14b Add options for enabling LG Hub 2024-08-08 02:29:51 +02:00
Manuel Thalmann f8f9d82f01 Remove Firefox taskbar icon 2024-08-08 02:29:09 +02:00
Manuel Thalmann 673d7f980c Allow removing task bar icons 2024-08-08 02:28:40 +02:00
Manuel Thalmann a7e56d8a5d Allow installing modules native only 2024-08-08 02:28:23 +02:00
Manuel Thalmann eefeb87743 Rename old LGHub script 2024-08-08 02:27:39 +02:00
Manuel Thalmann 99ccd9b481 Add missing config 2024-08-08 01:51:21 +02:00
Manuel Thalmann 5da514091d Rename PuTTY script 2024-08-08 00:51:45 +02:00
Manuel Thalmann e53fc96437 Fix permission issue 2024-08-08 00:48:18 +02:00
Manuel Thalmann 01350c4305 Add scripts for installing Tobii apps 2024-08-08 00:06:49 +02:00
Manuel Thalmann d594f78cb2 Copy keyboard layout to welcome screen 2024-08-07 23:53:26 +02:00
Manuel Thalmann dafb161cbe Add scripts for desktop apps 2024-08-07 23:53:12 +02:00
Manuel Thalmann c004ffd3fa Rename old Nextcloud script 2024-08-07 23:45:56 +02:00
Manuel Thalmann 687c47fc99 Configure user only outside of setup 2024-08-07 23:30:29 +02:00
Manuel Thalmann ddb25b43b5 Add a script for installing Oh My Posh 2024-08-07 23:22:04 +02:00
Manuel Thalmann 87cfe2b54e Fix incorrect installation filter 2024-08-07 23:20:28 +02:00
Manuel Thalmann 734cd48f9b Fix profile script for individual profiles 2024-08-07 23:18:44 +02:00
Manuel Thalmann b9a7f4cffd Show messages if packages are installed 2024-08-07 23:18:23 +02:00
Manuel Thalmann f2dc82e2b7 Fix incorrect package check 2024-08-07 23:17:07 +02:00
Manuel Thalmann 80e5c435a3 Refactor default winget parameters 2024-08-07 22:56:42 +02:00
Manuel Thalmann 5ceb3c205b Add scripts for installing PS modules 2024-08-07 22:55:25 +02:00
Manuel Thalmann a25783a44a Allow skipping PowerShell profile files 2024-08-07 22:25:42 +02:00
Manuel Thalmann c500883386 Resolve dependency loop 2024-08-07 21:54:58 +02:00
Manuel Thalmann c15b72d5b1 Remove unnecessary statement 2024-08-07 21:53:26 +02:00
Manuel Thalmann 3598a10216 Refactor chocolatey script 2024-08-07 21:50:21 +02:00
Manuel Thalmann bb3a37c3ec Pass arguments to software script 2024-08-07 21:37:33 +02:00
Manuel Thalmann 63aa399f91 Use internal OS detection 2024-08-07 21:35:03 +02:00
Manuel Thalmann f7aec5253e Refactor PowerShell profile script 2024-08-07 21:34:40 +02:00
Manuel Thalmann fb4f30018c Move scripts properly 2024-08-07 21:05:32 +02:00
Manuel Thalmann 82a28e1323 Add scripts for installing PowerShell 2024-08-07 20:30:12 +02:00
Manuel Thalmann 77afa05acd Rename PowerShell script directory 2024-08-07 19:08:13 +02:00
Manuel Thalmann fbf3c049b1 Add script for installing Thunderbird 2024-08-07 18:57:27 +02:00
Manuel Thalmann ae8b9ac43f Install drivers in proper phase 2024-08-07 18:54:07 +02:00
Manuel Thalmann a1a6909a12 Add a script for installing WinSCP 2024-08-07 18:30:14 +02:00
Manuel Thalmann e10241c12c Refactor app association script 2024-08-07 18:29:20 +02:00
Manuel Thalmann 89fa04aab6 Prevent reboot during WaveLink installation 2024-08-07 18:01:17 +02:00
Manuel Thalmann 39608e51ea Add scripts for installing drivers 2024-08-07 16:17:49 +02:00
Manuel Thalmann 68691e38e1 Add script for installing AMD packages 2024-08-07 15:25:12 +02:00
Manuel Thalmann 57a44a42a7 Add missing package for selenium 2024-08-07 15:24:56 +02:00
Manuel Thalmann 3694eca1c8 Ensure correct types for setting download dir 2024-08-07 15:24:37 +02:00
Manuel Thalmann 7b38c7bc37 Add a script for installing ASUS packages 2024-08-07 14:40:24 +02:00
Manuel Thalmann 1eeb391454 Refactor browser automation scripts 2024-08-07 14:28:26 +02:00
Manuel Thalmann c9fc08dfd6 Execute winget script in a module 2024-08-07 13:36:47 +02:00
Manuel Thalmann d96408a32e Install components for browser automation 2024-08-07 13:36:31 +02:00
Manuel Thalmann 00e5ecba1f Add functions for installing choco and winget packages 2024-08-07 13:22:12 +02:00
Manuel Thalmann d34e074d57 Add a function for checking winget packages 2024-08-07 13:18:29 +02:00
Manuel Thalmann 3d9db2c5c3 Enhance the winget install check 2024-08-07 03:34:12 +02:00
Manuel Thalmann 3876ca99e0 Add a function for checking NuGet packages 2024-08-07 03:23:59 +02:00
Manuel Thalmann 6900cf65e2 Fix non-functioning script 2024-08-07 03:23:21 +02:00
Manuel Thalmann 25e0a560ba Install PowerShell modules after removing old copy 2024-08-06 18:19:33 +02:00
Manuel Thalmann df7798fb26 Add config for declaring hardware 2024-08-06 17:23:20 +02:00
Manuel Thalmann 49c83dd364 Silence unnecessary output 2024-08-06 17:07:57 +02:00
Manuel Thalmann 4e4d273cc7 Add a separate function for executing software actions 2024-08-06 16:54:11 +02:00
Manuel Thalmann f4f568dafe Add a function for checking whether a setup is being run 2024-08-06 14:32:37 +02:00
Manuel Thalmann e9751cafa9 Determine software script name properly 2024-08-06 12:21:48 +02:00
Manuel Thalmann 2fd4d5a726 Fix incorrect path 2024-08-06 12:21:00 +02:00
Manuel Thalmann e7f6540815 Fix incorrectly imported modules 2024-08-06 11:39:57 +02:00
Manuel Thalmann 1f4e7a7720 Fix incorrect XPaths 2024-08-06 11:39:48 +02:00
Manuel Thalmann b11dc31403 Create Windows image as normal user 2024-08-06 11:39:34 +02:00
Manuel Thalmann 9f71d9f644 Make the name of the setup user look more Windows like 2024-08-06 11:39:05 +02:00
Manuel Thalmann 58c8b7b542 Set the name of the setup user properly 2024-08-06 10:22:50 +02:00
Manuel Thalmann 13b430bf79 Add scripts for installing essential software 2024-08-06 00:04:02 +02:00
Manuel Thalmann fd000aa78b Add a function for removing desktop icons 2024-08-06 00:02:07 +02:00
Manuel Thalmann 3fecc04ed0 Add an option for showing file extensions 2024-08-05 23:22:22 +02:00
Manuel Thalmann 6a25230444 Ensure the environment variables are always set properly 2024-08-05 23:09:58 +02:00
Manuel Thalmann 7d13434496 Fix incorrect argument initialization 2024-08-05 23:08:36 +02:00
Manuel Thalmann e05cf27941 Ensure Arguments contains an object 2024-08-05 22:51:29 +02:00
Manuel Thalmann f6d81c14b5 Fix argument redirection 2024-08-05 22:49:44 +02:00
Manuel Thalmann 6cf83d1a70 Fix non-functioning script 2024-08-05 22:45:17 +02:00
Manuel Thalmann 129b79d33c Allow running further installer actions within an installer 2024-08-05 22:29:20 +02:00
Manuel Thalmann 06297fd9eb Refactor windows configuration script 2024-08-05 20:07:39 +02:00
Manuel Thalmann e722160669 Add settings for customizing windows 2024-08-05 19:12:59 +02:00
Manuel Thalmann 8b0471d049 Refactor software script environment 2024-08-05 00:07:41 +02:00
Manuel Thalmann b25b760f7d Set CONFIG_MODULE to full path by default 2024-08-02 01:57:31 +02:00
Manuel Thalmann 7f0e9df340 Enter next stage after configuration 2024-08-02 01:44:56 +02:00
Manuel Thalmann cc2cbcaecb Make config module persist in WSL 2024-08-02 00:47:33 +02:00
Manuel Thalmann 05820920a0 Ensure arguments are passed to fish 2024-08-01 23:36:03 +02:00
Manuel Thalmann c3f79fe92b Fix installer script structure 2024-08-01 23:34:35 +02:00
Manuel Thalmann 329458caa7 Declare InstallerAction in a separate file 2024-08-01 22:52:51 +02:00
Manuel Thalmann e7c6c8106c Ensure necessary modules are imported 2024-08-01 21:49:46 +02:00
Manuel Thalmann 775e88ad82 Import SetupStage enum into installation module 2024-08-01 21:32:33 +02:00
Manuel Thalmann ea94c6fa10 Pause on error by default 2024-08-01 21:08:31 +02:00
Manuel Thalmann edd9168b10 Display the software name during installation 2024-08-01 21:06:03 +02:00
Manuel Thalmann 1fcf4ef21e Fix non-functioning command 2024-08-01 20:34:55 +02:00
Manuel Thalmann 9b59ae9c5a Remove non-existent script 2024-08-01 19:10:10 +02:00
Manuel Thalmann 379970e3f6 Nest installation functions in a module 2024-08-01 19:02:12 +02:00
Manuel Thalmann 7ae59c021a Install winget if nonexistent 2024-08-01 18:58:33 +02:00
Manuel Thalmann 066b9b8b7e Use the new commands 2024-08-01 18:36:47 +02:00
Manuel Thalmann c1ac5d2669 Add dedicated commands for checking software 2024-08-01 18:35:45 +02:00
Manuel Thalmann e8b7977d2a Add a script for managing software 2024-08-01 18:24:26 +02:00
Manuel Thalmann fa67e12fa3 Fix nix installation check 2024-08-01 18:05:10 +02:00
Manuel Thalmann 4807c6f8e8 Make nix visible to WSL 2024-08-01 18:03:48 +02:00
Manuel Thalmann 15acc53389 Add a function for getting the users to create 2024-08-01 17:56:42 +02:00
Manuel Thalmann f8fe78936c Rename the file containing software functions 2024-08-01 17:38:59 +02:00
Manuel Thalmann c952b1701d Configure clock for dualboot systems 2024-08-01 16:32:03 +02:00
Manuel Thalmann 1a4e294750 Enter configuration stage if nix exists 2024-08-01 16:28:48 +02:00
Manuel Thalmann 3602cbbf83 Reboot WSL to pick up nix 2024-08-01 16:25:18 +02:00
Manuel Thalmann 600ad30a55 Add a function for retrieving nix options 2024-08-01 16:12:58 +02:00
Manuel Thalmann 33297747b8 Make CONFIG_MODULE available in WSL 2024-08-01 14:39:44 +02:00
Manuel Thalmann bd6964a37b Install WSL and nix by default 2024-08-01 14:06:40 +02:00
Manuel Thalmann bdf5254f66 Rename config module file 2024-08-01 12:39:27 +02:00
Manuel Thalmann d48d4a08df Reword log messages 2024-08-01 12:32:43 +02:00
Manuel Thalmann 9921890e4d Fix syntax error 2024-08-01 12:31:25 +02:00
Manuel Thalmann b97ccd863c Import scripting module inside the PowerManagement module 2024-08-01 12:24:28 +02:00
Manuel Thalmann 0adace7d6e Add scripts for updating windows 2024-08-01 02:59:32 +02:00
Manuel Thalmann 6793736c3a Fix errors in the PowerManagement module 2024-08-01 02:19:05 +02:00
Manuel Thalmann e67122b20b Fix syntax error 2024-08-01 01:22:23 +02:00
Manuel Thalmann 54b8d227ff Fix incorrect documentation comment 2024-07-31 23:10:21 +02:00
Manuel Thalmann 2ead5ea7ad Fix handling of setup stages 2024-07-31 22:33:37 +02:00
Manuel Thalmann 7fcb36dd1c Set registry values properly 2024-07-31 22:33:16 +02:00
Manuel Thalmann f0f43a30bd Display console output of hooks 2024-07-31 22:18:47 +02:00
Manuel Thalmann 76cb8e5125 Store stages using their name 2024-07-31 16:52:49 +02:00
Manuel Thalmann a4b88c183d Refactor the installation loop architecture 2024-07-31 16:25:32 +02:00
Manuel Thalmann d6919a2c98 Implement install loop properly 2024-07-31 16:15:09 +02:00
Manuel Thalmann 5de8554b13 Implement the windows installation in a loop 2024-07-31 16:09:50 +02:00
Manuel Thalmann ed3455ffb1 Recreate script to first install pwsh 2024-07-31 15:52:41 +02:00
Manuel Thalmann 3f6700b98e Normalize script formatting 2024-07-31 15:52:23 +02:00
Manuel Thalmann add008c791 Add a script for managing setup options 2024-07-31 15:42:02 +02:00
Manuel Thalmann c0b215bcce Add a script for rebooting the computer 2024-07-31 15:41:45 +02:00
Manuel Thalmann 73dbb502ba Add a separate script for injecting values into scripts 2024-07-31 14:55:00 +02:00
Manuel Thalmann 3f24abdb89 Add a script for checking for installed choco packages 2024-07-31 14:53:21 +02:00
Manuel Thalmann 08a8ef4b96 Copy pwsh to newly setup windows systems 2024-07-31 14:47:42 +02:00
Manuel Thalmann 3be5bd7535 Rename old windows installation script 2024-07-30 18:47:01 +02:00
Manuel Thalmann 9a2a78fb76 Add a function for executing hooks 2024-07-30 18:34:19 +02:00
Manuel Thalmann 87ef1167fe Enable rclone services properly 2024-07-30 17:42:29 +02:00
Manuel Thalmann aa958b2656 Disable root bash login during installation 2024-07-30 00:54:43 +02:00
Manuel Thalmann 01ae7ce2d0 Silence unnecessary output 2024-07-30 00:53:20 +02:00
Manuel Thalmann 069c8a3330 Install vscode extensions for each user 2024-07-30 00:53:10 +02:00
Manuel Thalmann 882aac5c30 Fix installation of brave extensions 2024-07-30 00:52:55 +02:00
Manuel Thalmann 0da7130de1 Fix non-functioning installation scripts 2024-07-30 00:52:35 +02:00
Manuel Thalmann 87c5c5d140 Fix missing variables 2024-07-30 00:51:50 +02:00
Manuel Thalmann a2b8c2b395 Fix non-functioning command 2024-07-29 23:46:14 +02:00
Manuel Thalmann 4c9aca739d Load dualboot sizes from nix 2024-07-29 01:44:12 +02:00
Manuel Thalmann 40fefb9f36 Improve handling of wmic output 2024-07-29 01:22:42 +02:00
Manuel Thalmann a7595096ba Save unnecessary space 2024-07-29 00:10:07 +02:00
Manuel Thalmann 4101a6105f Allow overwriting packages 2024-07-28 23:45:30 +02:00
Manuel Thalmann f6671515dd Generate locales in proper system 2024-07-28 23:45:09 +02:00
Manuel Thalmann 4326044af9 Execute userConfig for current user only once 2024-07-28 23:44:58 +02:00
Manuel Thalmann 69ac0b990c Prevent userConfig from execute multiple times 2024-07-28 23:43:11 +02:00
Manuel Thalmann 4daf222ec3 Nest Windows setup in a function 2024-07-28 20:52:07 +02:00
Manuel Thalmann 1a0b63a181 Configure Windows on DerGeret 2024-07-28 17:14:38 +02:00
Manuel Thalmann b5e798564b Inherit missing variable 2024-07-28 17:01:24 +02:00
Manuel Thalmann 566a3f025b Fix aliae configuration 2024-07-28 16:57:47 +02:00
Manuel Thalmann 18b4405441 Fix broken profile creation 2024-07-28 16:57:36 +02:00
Manuel Thalmann a790f16c7f Inherit missing variables 2024-07-28 15:25:03 +02:00
Manuel Thalmann 0b21d0af7c Run setup of der-geret using fish 2024-07-28 12:45:05 +02:00
Manuel Thalmann 07ba5dfeb6 Mark all fish scripts as executable 2024-07-28 12:32:08 +02:00
Manuel Thalmann 58e97cb051 Make nix config accessible in scripts 2024-07-28 12:16:01 +02:00
Manuel Thalmann 712980ed67 Dump windows config for use during setup 2024-07-28 11:26:13 +02:00
Manuel Thalmann b7a6131732 Add options for setting up windows 2024-07-28 01:56:41 +02:00
Manuel Thalmann 60931884a0 Fix confusing filename 2024-07-28 00:28:10 +02:00
Manuel Thalmann dc0f8e08f1 Remove redundant script 2024-07-28 00:27:25 +02:00
Manuel Thalmann 6fef809d62 Run installer script after initialization 2024-07-27 23:18:04 +02:00
Manuel Thalmann c8a3969f02 Ensure iso directory exists 2024-07-27 22:04:40 +02:00
Manuel Thalmann 0b6dc6415a Prevent unnecessary variables 2024-07-27 22:04:08 +02:00
Manuel Thalmann 6147037a97 Pass boot script path via env variable 2024-07-27 18:59:47 +02:00
Manuel Thalmann dae62d599a Pass label of setup disk as variable 2024-07-26 14:46:58 +02:00
Manuel Thalmann 4865c35a92 Store installer drive as env variable 2024-07-26 14:43:12 +02:00
Manuel Thalmann 5b6db497e4 Copy repository settings 2024-07-26 14:43:02 +02:00
Manuel Thalmann 25fc71c379 Pass the project path in to the installation script 2024-07-26 14:29:45 +02:00
Manuel Thalmann 198679d8d5 Store PortValhalla in installation disk 2024-07-26 13:32:37 +02:00
Manuel Thalmann fd259f11cb Ensure to always remove all leftovers 2024-07-25 20:02:47 +02:00
Manuel Thalmann e47c516928 Migrate the winiso project 2024-07-25 00:03:35 +02:00
Manuel Thalmann 3a937d84ed Remove unnecessary config 2024-07-20 16:26:38 +02:00
Manuel Thalmann 5653cea25a Configure for current user if none is specified 2024-07-20 14:06:25 +02:00
Manuel Thalmann 61865cd615 Remove unnecessary statement 2024-07-20 14:04:09 +02:00
Manuel Thalmann 96e1bde7a0 Add a function for checking whether a configuration is applied 2024-07-20 14:03:35 +02:00
Manuel Thalmann 4418e99219 Remove default value of CONFIG_MODULE 2024-07-20 14:02:36 +02:00
Manuel Thalmann 2d90b90114 Remove necessity of nix config 2024-07-20 13:54:04 +02:00
Manuel Thalmann 02e4c18f6c Create rclone syncs during setup 2024-07-20 13:47:07 +02:00
Manuel Thalmann 0fba56a299 Preserve environment while running dbus session 2024-07-20 05:14:09 +02:00
Manuel Thalmann f267b9d023 Fix typo 2024-07-20 05:09:42 +02:00
Manuel Thalmann 2354dcf412 Force json output appropriately 2024-07-20 05:09:13 +02:00
Manuel Thalmann 913daa8b6d Add a script draft for configuring rclone 2024-07-20 05:08:23 +02:00
Manuel Thalmann 42263d82dd Format config file 2024-07-20 04:35:58 +02:00
Manuel Thalmann 9ebbca3b3c Load the default shell from the user config 2024-07-20 04:35:41 +02:00
Manuel Thalmann a72fd9d045 Split nix configuration properly 2024-07-20 04:31:09 +02:00
Manuel Thalmann 62a9c1e577 Fix typo 2024-07-20 04:23:51 +02:00
Manuel Thalmann 1e3d8d8338 Prevent changing the working directory 2024-07-20 04:17:42 +02:00
Manuel Thalmann 7c10903947 Add separate method for configuring git 2024-07-20 04:06:41 +02:00
Manuel Thalmann 6274ec1012 Add function for configuring user settings 2024-07-20 03:50:38 +02:00
Manuel Thalmann 566f0d711f Stop keeping track of installed software 2024-07-20 03:32:53 +02:00
Manuel Thalmann dfdc053acf Call software scripts using individual fish commands 2024-07-20 03:27:36 +02:00
Manuel Thalmann f56c6ec7a6 Remove unnecessary statement 2024-07-20 03:27:20 +02:00
Manuel Thalmann 4143dbff02 Add users before installing software 2024-07-20 03:13:17 +02:00
Manuel Thalmann 0579819444 Read config keys properly 2024-07-20 01:59:33 +02:00
Manuel Thalmann bf50ee7d59 Fix string formatting 2024-07-20 01:57:06 +02:00
Manuel Thalmann df3ba81e12 Fix malformed installer script 2024-07-20 01:51:14 +02:00
Manuel Thalmann 68703e2353 Fix variable inheritance 2024-07-20 01:46:11 +02:00
Manuel Thalmann 75f1839275 Fix configuration target 2024-07-20 01:43:53 +02:00
Manuel Thalmann e8a752eb4c Fix use of incorrect config keys 2024-07-20 01:38:53 +02:00
Manuel Thalmann ffa8c19358 Fix variable visibility 2024-07-20 01:36:22 +02:00
Manuel Thalmann c073db286f Ignore installation status by default 2024-07-20 01:32:42 +02:00
Manuel Thalmann d79edb4127 Allow user-defined git config 2024-07-20 01:31:04 +02:00
Manuel Thalmann 34523d0ae3 Allow flagging git as installed 2024-07-20 01:23:08 +02:00
Manuel Thalmann a2848a3965 Allow marking software as installed 2024-07-20 01:21:25 +02:00
Manuel Thalmann 501aa51876 Fix string formatting 2024-07-20 01:03:20 +02:00
Manuel Thalmann 074784fec2 Fix permission issues 2024-07-20 00:59:11 +02:00
Manuel Thalmann 527aa8c43b Remove test code 2024-07-20 00:47:48 +02:00
Manuel Thalmann 6bd2844efb Add users from configuration 2024-07-20 00:46:02 +02:00
Manuel Thalmann af53a09b17 Add configurations for specifying users 2024-07-20 00:45:20 +02:00
Manuel Thalmann d90db841e8 Allow applying custom functions during evaluation 2024-07-20 00:36:19 +02:00
Manuel Thalmann 069d72d081 Generate locales during setup 2024-07-19 21:18:20 +02:00
Manuel Thalmann d6839aa6c4 Silence unnecessary console output 2024-07-17 16:41:42 +02:00
Manuel Thalmann 34d55d376d Fix creation of vscode config files 2024-07-17 16:39:03 +02:00
Manuel Thalmann 67f28b5b79 Load missing variable 2024-07-17 16:33:59 +02:00
Manuel Thalmann 3567eee45f Force installing iptables-nft 2024-07-17 16:18:31 +02:00
Manuel Thalmann 9d50d587c8 Load missing variable 2024-07-17 16:04:57 +02:00
Manuel Thalmann 902fc64993 Remove unnecessary statement 2024-07-17 15:59:09 +02:00
Manuel Thalmann 61258ef835 Install logo-ls only if not present 2024-07-17 15:54:53 +02:00
Manuel Thalmann 05f96a97d3 Normalize casing of firefox directory 2024-07-17 15:54:09 +02:00
Manuel Thalmann 2a6f3ea5f8 Add missing packages 2024-07-17 15:49:30 +02:00
Manuel Thalmann 303082fcc4 Fix permission error 2024-07-17 15:22:41 +02:00
Manuel Thalmann 4b37950bc8 Install bb at the end 2024-07-17 15:08:27 +02:00
Manuel Thalmann 4d0c64a8da Fix typo 2024-07-17 15:00:26 +02:00
Manuel Thalmann 35e77dd7e6 Fix incorrect paths 2024-07-17 15:00:01 +02:00
Manuel Thalmann d26786c576 Fix typo 2024-07-17 14:55:30 +02:00
Manuel Thalmann 60af9361c8 Add scripts for installing school software 2024-07-17 14:26:01 +02:00
Manuel Thalmann e2e5b9a02d Streamline installation of all further software 2024-07-17 14:18:27 +02:00
262 changed files with 8825 additions and 1478 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

@ -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

View file

@ -1,41 +0,0 @@
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
gitOptions = {
defaultBranch = mkOption {
type = types.nullOr types.str;
description = "The name of the default branch in git.";
default = null;
};
flow = {
mainBranch = mkOption {
type = types.nullOr types.str;
description = "The name of the stable branch in git flow.";
default = null;
};
devBranch = mkOption {
type = types.nullOr types.str;
description = "The name of the development branch in git flow.";
default = null;
};
};
aliases = mkOption {
type = types.attrsOf types.str;
description = "Git command aliases to install.";
default = {};
};
};
in {
options = {
valhalla = {
git = gitOptions;
};
};
}

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

@ -0,0 +1,55 @@
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
in {
options = {
valhalla = {
hardware = {
components = mkOption {
type = types.listOf types.str;
description = "The names of the hardware components of the computer.";
default = [];
};
eyeX = mkOption {
type = types.bool;
description = "A value indicating whether a Tobii EyeX device is present.";
default = false;
};
amdCPU = mkOption {
type = types.bool;
description = "A value indicating whether an AMD CPU is present.";
default = false;
};
nvidiaGPU = mkOption {
type = types.bool;
description = "A value indicating whether an NVIDIA GPU is present.";
default = false;
};
corsairDevice = mkOption {
type = types.bool;
description = "A value indicating whether a Corsair device is present.";
default = false;
};
elgatoWave = mkOption {
type = types.bool;
description = "A value indicating whether an Elgato Wave device is present.";
default = false;
};
logitechG = mkOption {
type = types.bool;
description = "A value indicating whether a Logitech G device is present.";
default = false;
};
};
};
};
}

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

@ -0,0 +1,52 @@
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
in {
options = {
valhalla = mkOption {
type = types.submodule (
{ extendModules, ... }:
let
osVariant = extendModules {
modules = [
({ config, ... }: {
options = {
config = mkOption {
type = types.attrs;
description = "The configuration of the Operating System.";
default = builtins.removeAttrs config ["_module" "config" "linux" "windows"];
visible = false;
};
};
})
];
};
linuxVariant = osVariant.extendModules { };
windowsVariant = osVariant.extendModules { };
in {
options = {
linux = mkOption {
inherit (linuxVariant) type;
description = "The options for setting up Linux.";
default = {};
visible = "shallow";
};
windows = mkOption {
inherit (windowsVariant) type;
description = "The options for setting up Windows.";
default = {};
visible = "shallow";
};
};
});
description = "Configuration for PortValhalla.";
default = {};
};
};
}

View file

@ -0,0 +1,59 @@
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
gitType = types.submodule (
{ ... }: {
options = {
defaultBranch = mkOption {
type = types.nullOr types.str;
description = "The name of the default branch in newly created repositories.";
default = null;
};
flow = {
mainBranch = mkOption {
type = types.nullOr types.str;
description = "The name of the stable branch in git flow.";
default = null;
};
devBranch = mkOption {
type = types.nullOr types.str;
description = "The name of the development branch in git flow.";
default = null;
};
};
aliases = mkOption {
type = types.attrsOf types.str;
description = "The git command aliases to install.";
default = {};
};
};
});
gitOption = mkOption {
type = gitType;
description = "The git related options.";
default = {};
};
in {
options = {
valhalla = {
git = gitOption;
users = mkOption {
type = types.attrsOf (types.submodule (
{ ... }: {
options = {
git = gitOption;
};
}));
};
};
};
}

View file

@ -0,0 +1,44 @@
{ lib, ... }:
let
inherit (lib)
mkEnableOption
mkOption
types
;
syncType = types.submodule (
{ ... }: {
options = {
remotePath = mkOption {
type = types.str;
description = "The path to the folder on the cloud to sync.";
};
localPath = mkOption {
type = types.str;
description = "The path to sync the cloud content to.";
};
virtualFiles = (mkEnableOption "virtual file support") // {
default = true;
};
};
});
in {
options = {
valhalla.windows.users = mkOption {
type = types.attrsOf (types.submodule (
{ ... }: {
options = {
nextcloud = {
folderSyncs = mkOption {
type = types.listOf syncType;
description = "The folders to synchronize.";
default = [];
};
};
};
}));
};
};
}

View file

@ -0,0 +1,55 @@
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
themeType = types.submodule (
{ config, ... }: {
options = {
source = mkOption {
type = types.path;
description = "The path to the oh-my-posh theme to use.";
};
name = mkOption {
type = types.nullOr types.str;
description = "The name of the theme.";
default = lib.strings.removeSuffix ".omp" (lib.strings.removeSuffix ".json" (builtins.baseNameOf config.source));
};
};
});
ompType = types.submodule (
{ config, ... }: {
options = {
theme = mkOption {
type = types.nullOr (types.either types.str themeType);
description = "The default theme.";
default = null;
};
additionalThemes = mkOption {
type = types.listOf themeType;
description = "A set of additional themes to install.";
default = [];
};
};
});
in {
options = {
valhalla.users = mkOption {
type = types.attrsOf (types.submodule (
{ ... }: {
options = {
oh-my-posh = mkOption {
type = ompType;
description = "The Oh My Posh configuration to apply.";
default = {};
};
};
}));
};
};
}

View file

@ -0,0 +1,40 @@
{ lib, ... }:
let
inherit (lib)
mkOption
types
;
syncType = types.submodule (
{ ... }: {
options = {
dirName = mkOption {
type = types.str;
description = "The name of the directory to sync the remote files to.";
};
cacheDuration = mkOption {
type = types.nullOr types.str;
description = "The amount of time to keep cached files.";
default = null;
};
};
});
in {
options = {
valhalla.linux.users = mkOption {
type = types.attrsOf (types.submodule (
{ ... }: {
options = {
rclone = {
configurations = mkOption {
type = types.attrsOf syncType;
description = "The configurations of the rclone mounts.";
default = {};
};
};
};
}));
};
};
}

View file

@ -8,6 +8,7 @@
fs = import ./fs.nix;
diskListVarName = "myDisks";
probeScript = "partprobe 2> /dev/null || true";
isSwap = partition: builtins.elem partition.type [fs.swap 19];
mkDiskType = osDisk: types.submodule (
@ -136,19 +137,12 @@
create = lib.strings.concatLines [
(appendScript "${toString index}: \"$(${sizeOption})\" type=${mkType type}")
# Wait for partition to be detected
''echo "Waiting for ${partVar} to appear..."''
''
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
@ -329,21 +323,18 @@
mountScript = lib.strings.concatLines (
builtins.concatMap
(_: [
''echo "Waiting for "${lib.strings.escapeShellArg (partPath _)}" to appear..."''
''
while true;
do
[ -b ${lib.strings.escapeShellArg (partPath _)} ] && break
done
''
(builtins.concatStringsSep " " [
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}")
@ -351,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''

View file

@ -12,6 +12,7 @@
software =
let
inherit (cfg.software)
coding
common
desktopExperience
school
@ -42,6 +43,12 @@
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.";
@ -77,6 +84,12 @@
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

@ -6,10 +6,17 @@
;
in {
imports = [
./git.nix
./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 = {

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,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

@ -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

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

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;

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

@ -2,97 +2,25 @@
begin
set -l dir (status dirname)
function getDeploymentScript -V dir
echo "$dir/../Scripts/deploy.fish";
end
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"
and source "$dir/../Scripts/software.fish"
and source "$dir/../Software/base-devel/main.fish"
and source "$dir/../Software/pacman/main.fish"
and source "$dir/../Software/yay/main.fish"
yayinst \
and yayinst \
pacman-contrib \
powershell-bin
end
if not type -q installSoftware
function installSoftware -V dir
source "$dir/../../Common/Scripts/config.fish"
source "$dir/../Scripts/software.fish"
if collectionActive essential
yayinst \
mkinitcpio-firmware \
neofetch \
bash-completion \
wget \
oh-my-posh-bin \
screen \
tmux \
htop \
lsof \
zsh \
fish \
pkgfile \
sl \
rar
sudo pkgfile --update
source "$dir/../Software/openssh/main.fish"
source "$dir/../Software/vim/main.fish"
source "$dir/../Software/git/main.fish"
source "$dir/../Software/zoxide/main.fish"
# GRUB Shenanigans - if that's not an essential I don't know what is!
source "$dir/../Software/minegrub-theme/main.fish";
end
if collectionActive common
yayinst \
tldr \
btop \
nvtop \
numbat-bin \
terminal-parrot
source "$dir/../Software/aliae/main.fish"
end
if collectionActive desktopExperience
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
source "$dir/../Software/KDE/main.fish"
source "$dir/../Software/sddm/main.fish"
# Fonts
yayinst \
ttf-cascadia-code-nerd \
ttf-ms-win11-auto \
otf-cascadia-code \
ttf-droid
end
if collectionActive server
else
# Energy Saving
yayinst power-profiles-daemon
sudo systemctl enable --now power-profiles-daemon
# Networking
yayinst \
networkmanager-openvpn \
networkmanager-openconnect
end
end
end
source "$dir/../../Common/OS/install.fish"
end

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

@ -1,7 +1,6 @@
#!/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"
@ -12,10 +11,14 @@ begin
end
function installValhallaDeps -V mountDir
pacstrap -K "$mountDir" fish jq nix tmux
pacstrap -K "$mountDir" fish git jq nix tmux
end
function setupOS -S -V dir -V CONFIG_MODULE -V mountDir
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"
@ -69,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
@ -86,15 +90,9 @@ begin
and arch-chroot "$mountDir" mkinitcpio -P
and runHook installDrivers "Installing drivers..." || true
and runInOS fish "$tempDir/../../Common/Software/nix/main.fish" configure user
and arch-chroot "$mountDir" bash "$tempDir/../Software/sudo/install.sh"
and runInOS fish "$tempDir/../Software/GRUB/main.fish"
and USER_NAME="$USER_NAME" \
USER_DISPLAYNAME="$USER_DISPLAYNAME" \
USER_GROUPS="$USER_GROUPS" \
arch-chroot "$mountDir" bash "$tempDir/user.sh"
and if set -l keyLayout (getConfig valhalla.keyboardLayout)
set -l serviceName set-keymap.service
and set -l serviceFile "$mountDir/etc/systemd/system/$serviceName"
@ -113,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=" \

View file

@ -0,0 +1,277 @@
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" = "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
and sudo pkgfile --update
end
and source "$dir/../../Common/Software/bash/main.fish" $argv
and source "$dir/../Software/openssh/main.fish" $argv
and source "$dir/../Software/vim/main.fish" $argv
and source "$dir/../Software/git/main.fish" $argv
and source "$dir/../Software/zoxide/main.fish" $argv
and source "$dir/../Software/logo-ls/main.fish" $argv
# GRUB Shenanigans - if that's not essential I don't know what is!
and source "$dir/../Software/minegrub-theme/main.fish" $argv
end
and if collectionActive common
if $isInstall
yayinst \
tldr \
btop \
terminal-parrot
end
and source "$dir/../Software/aliae/main.fish" $argv
end
and if collectionActive desktopExperience
source "$dir/../Software/KDE/main.fish" $argv
and source "$dir/../Software/sddm/main.fish" $argv
and 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
and yayinst \
ttf-cascadia-code-nerd \
ttf-ms-win11-auto \
otf-cascadia-code \
ttf-droid
# Password Management
and yayinst \
bitwarden \
keepass \
keepassxc
# Tools
and yayinst \
android-tools \
blackbox-terminal \
cpu-x \
gnome-calculator \
yubikey-manager-qt \
wireshark-qt \
linux-wifi-hotspot
# Remote Access
and yayinst \
remmina (
# RDP support for Remmina
) freerdp
# Creativity
and yayinst \
gimp \
inkscape
# Office stuff
and yayinst \
libreoffice-fresh \
naps2-bin \
pdfarranger \
protonmail-bridge \
thunderbird
and yayinst \
texlive \
texlive-langgerman
# Virtualization
and yayinst propertree-git # mac .plist config file editor
and if collectionActive school
yayinst \
teams-for-linux \
xournalpp-git \
rnote
end
end
# Internet Access
and source "$dir/../Software/Firefox/main.fish" $argv
and source "$dir/../Software/brave/main.fish" $argv
and source "$dir/../Software/Pennywise/main.fish" $argv
# Virtualization
and source "$dir/../Software/waydroid/main.fish" $argv
and source "$dir/../Software/Virtual Machine Manager/main.fish" $argv
and if collectionActive coding
if $isInstall
yayinst \
devdocs-desktop \
godot-mono
end
and source "$dir/../Software/vscode/main.fish" $argv
end
end
and if collectionActive server
else
if $isInstall
# Energy Saving
yayinst power-profiles-daemon
and sudo systemctl enable --now power-profiles-daemon
# Networking
and yayinst \
networkmanager-openvpn \
networkmanager-openconnect \
proton-vpn-gtk-app \
protonvpn-cli-community
end
and if collectionActive common
if $isInstall
and yayinst \
img2pdf \
numbat-bin \
nvtop \
pdf2svg \
tnef
end
and source "$dir/../Software/IcedTea/main.fish" $argv
end
end
and if collectionActive media && $isInstall
yayinst \
ytmdesktop-bin \
netflix \
spotube-bin \
stremio \
tidal-dl-ng \
tidal-hifi-bin \
nuclear-player-bin \
audius-client-bin
end
and if collectionActive fileSync
if $isInstall
yayinst nextcloud-client
end
and source "$dir/../Software/rclone/main.fish" $argv
end
and if collectionActive socialMedia && $isInstall
yayinst \
signal-desktop \
vesktop-bin
and begin
yes y | runYay threema-desktop
end
and begin
yes y | runYay nodejs
end
end
and if collectionActive productivity && $isInstall
yayinst \
anki-bin
end
and if collectionActive school && $isInstall
yayinst \
jdk17-temurin \
gradle \
jetbrains-toolbox
and source "$dir/../../Common/Software/udev/ct-board.fish"
end
and if collectionActive coding
if $isInstall
yayinst \
archiso \
wimlib (
# ISO support for wimlib
) cdrkit \
tea \
woodpecker-cli (
# AsciiDocs
) python-docutils (
# reStructuredText
) esbonio
end
and source "$dir/../Software/n/main.fish" $argv
end
and if collectionActive python
if $isInstall
yayinst \
python \
python-pip \
python-pipenv
end
and source "$dir/../Software/pyenv/main.fish" $argv
end
and if collectionActive gaming
if $isInstall
yayinst \
steam \
chiaki-ng \
osu-lazer-bin \
libretro \
supertux \
gamepad-tool-bin
and flatpak install -y flathub com.usebottles.bottles
end
and source "$dir/../Software/Lutris/main.fish" $argv
end
and if collectionActive essential && $isInstall
yayinst bb
end
end
deploySoftware $argv

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

@ -3,11 +3,25 @@ begin
set -l dir (status dirname)
source "$dir/../../Common/Scripts/software.fish"
function runYay -d "Run yay with pre-configured defaults"
if not isatty 0
echo "stdin detected" 1>&2
cat
end | 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"
if not isatty 0
echo "stdin detected" 1>&2
cat
end | 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,15 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
yayinst firefox
end
function configureSW -V dir
fish "$dir/../../../Common/Software/Firefox/main.fish" configure
end
runInstaller $argv
end

3
scripts/Arch/Software/GRUB/main.fish Normal file → Executable file
View file

@ -2,7 +2,6 @@
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
source "$dir/../../../Common/Software/GRUB/main.fish"
function installSW -V dir
pacinst \
@ -10,7 +9,7 @@ begin
efibootmgr \
os-prober
configureSW
fish "$dir/../../../Common/Software/GRUB/main.fish" configure
end
runInstaller $argv

View file

@ -0,0 +1,22 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
jdk-temurin
yayinst \
icedtea-web
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

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

@ -19,8 +19,6 @@ begin
# File Exchange Support for KDE Connect: https://wiki.archlinux.org/title/KDE#KDE_Connect
) sshfs \
fwupd
configureSW
end
function configureSW

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,23 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst \
pennywise-bin
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,26 @@
#!/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
end
function configureSW -V dir
sudo systemctl enable --now libvirtd
sudo systemctl enable --now virtlogd
fish "$dir/../../../Common/Software/Virtual Machine Manager/main.fish" configure
end
runInstaller $argv
end

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

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

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

View file

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

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

@ -3,7 +3,7 @@ begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW -V dir
function installSW
yayinst \
git \
git-lfs \
@ -11,8 +11,10 @@ begin
gitflow-bashcompletion-avh \
gitflow-fishcompletion-avh \
gitflow-zshcompletion-avh
end
and fish "$dir/../../../Common/Software/git/main.fish" configure
function configureSW -V dir
fish "$dir/../../../Common/Software/git/main.fish" configure
end
runInstaller $argv

View file

@ -0,0 +1,42 @@
#!/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
end
function configureSW -V dir
fish "$dir/../../../Common/Software/logo-ls/main.fish" configure
end
runInstaller $argv
end

6
scripts/Arch/Software/minegrub-theme/main.fish Normal file → Executable file
View file

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

View file

@ -0,0 +1,15 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst nodejs-n
end
function configureSW -V dir
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

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

@ -10,7 +10,7 @@ begin
end
function configureSW
systemctl --global enable --now ssh-agent
sudo systemctl --global enable ssh-agent
and begin
printf %s\n \

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

View file

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

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

@ -8,13 +8,12 @@ begin
# 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
mkdir -p "$configDir"
sudo mkdir -p "$configDir"
sudo cp "$dir/wayland.conf" "$configDir/10-wayland.conf"
end

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

@ -12,8 +12,11 @@ begin
# Add clipboard support for wayland: https://www.reddit.com/r/Fedora/comments/ax9p9t/comment/jjb4p7b/
) vim-wayland-clipboard-git \
wl-clipboard
end
and configureSW
function configureSW -V dir
fish "$dir/../../../Common/Software/vim/main.fish" configure
end
runInstaller $argv

View file

@ -0,0 +1,31 @@
#!/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
end
function configureSW -V dir
set -l bins codium code
for bin in $bins
if type -q "$bin"
begin
set -l file "/etc/skel/.config/$bin-flags.conf"
sudo mkdir -p (dirname "$file")
echo "--touch-events" | sudo tee "$file" > /dev/null
end
end
end
fish "$dir/../../../Common/Software/vscode/main.fish" configure
end
runInstaller $argv
end

View file

@ -0,0 +1,20 @@
#!/bin/env fish
begin
set -l dir (status dirname)
source "$dir/../../Scripts/software.fish"
function installSW
yayinst (
# Waydroid prerequisite: https://wiki.archlinux.org/title/Waydroid#DKMS_modules
) binder_linux-dkms \
waydroid (
# For installing ARM suppot on waydroid
) waydroid-script-git (
# Clipboard support: https://wiki.archlinux.org/title/Waydroid#Failed_to_start_Clipboard_manager_service
) python-pyclip (
# Wayland clipboard support: https://github.com/spyoungtech/pyclip?tab=readme-ov-file#linux
) wl-clipboard
end
runInstaller $argv
end

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

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

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

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/../../Software/powershell/profile.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,8 +1,8 @@
#!/bin/pwsh
. "$PSScriptRoot/../../Software/powershell/profile.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,5 +1,5 @@
#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;
pushd "${BASH_SOURCE%/*}/../../Software/rclone" > /dev/null;
sudo cp "rclone.service" "rclone.target" "rclone@.service" /etc/systemd/user;
systemctl enable --user rclone;

View file

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

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

@ -3,14 +3,10 @@ set -l dir (status dirname)
source "$dir/../Scripts/config.fish"
source "$dir/../Scripts/hooks.fish"
function configureNix -V dir
source "$dir/../Software/nix/main.fish" configure user
end
if [ (id -u) -eq 0 ]
configureNix
set -l name (getConfig valhalla.setupUser.name)
set -l sudoConfig "/etc/sudoers.d/PortValhalla"
rm ~/.bash_profile
runHook createUser || \
begin
@ -28,16 +24,39 @@ if [ (id -u) -eq 0 ]
echo "$name ALL=(ALL:ALL) NOPASSWD: ALL"
end > "$sudoConfig"
and sudo --preserve-env="CONFIG_MODULE" --user "$name" "$INSTALLER_SCRIPT"
and sudo --preserve-env="CONFIG_NAME" --user "$name" "$INSTALLER_SCRIPT"
rm "$sudoConfig"
userdel -r "$name"
userdel -rf "$name"
else
configureNix
source "$dir/../Software/bash/main.fish"
if not type -q getDeploymentScript
function getDeploymentScript
echo "No deployment script specified! No software will be installed." 1>&2
false
end
end
set -l deployScript (getDeploymentScript)
runHook initialize || true
runHook installDrivers || true
runHook installOS || true
runHook installSoftware || true
runHook initializeConfig || true
runHook postInstall || true
and runHook installOS || true
and runHook addUsers || begin
source "$dir/users.fish"
end
and runHook installSoftware || begin
if [ -n "$deployScript" ]
source $deployScript
end
end
runHook initializeUsers || begin
if [ -n "$deployScript" ]
source "$dir/../Scripts/config.fish"
for name in (getUsers | jq '.[]' --raw-output0 | string split0)
source $deployScript userConfig $name
end
end
end
and runHook postInstall || true
end

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

@ -3,12 +3,12 @@ function runSetup
set -l dir (status dirname)
source "$dir/../Scripts/config.fish"
source "$dir/../Scripts/hooks.fish"
set -l name (getConfig valhalla.setupUser.name)
set -l mountDir (getConfig valhalla.partition.rootDir)
set -l projectRoot (realpath "$dir/../../..")
set -l projectName (basename "$projectRoot")
set -l PROJECT_CLONE_ROOT "/opt/$(basename "$projectName")"
set -l script (mktemp)
chmod +x "$script"
if not type -q runChroot
function runChroot -S
@ -18,7 +18,7 @@ function runSetup
if not type -q installValhallaDeps
function installValhallaDeps
echo 'Please set up the hook `installValhallaDeps` for installing `fish`, `nix` and `tmux`.'
echo 'Please set up the hook `installValhallaDeps` for installing `fish`, `git`, `jq`, `nix` and `tmux`.'
exit 1
end
end
@ -32,20 +32,20 @@ function runSetup
function runInOS -S
set -l script "/root/run_once"
wrapScript $argv | chroot "$mountDir" tee "$script" > /dev/null
runChroot "$mountDir" chmod +x "$script"
runChroot "$mountDir" "$script"
runChroot "$mountDir" rm "$script"
and runChroot "$mountDir" chmod +x "$script"
and runChroot "$mountDir" "$script"
and runChroot "$mountDir" rm "$script"
end
function wrapScript -S
printf %s\n \
"cd $PROJECT_CLONE_ROOT" \
"export CONFIG_MODULE=$(string escape (getCloneFile "$CONFIG_MODULE"))" \
"$argv"
end
getConfig valhalla.partition.script > "$script"
bash "$script"
and "$script"
and rm "$script"
# Copy `nixpkgs` channel
and begin
@ -56,12 +56,19 @@ function runSetup
and runHook installValhallaDeps
and source "$dir/../../copy-repo.fish" "$mountDir$PROJECT_CLONE_ROOT"
runChroot git config --system --add safe.directory "$PROJECT_CLONE_ROOT"
and runHook setupOS || true
and runHook autologin || true
and begin
set -l script (string escape (getCloneFile (getInstallerScript)))
wrapScript "INSTALLER_SCRIPT=$(string escape "$script") $script"
wrapScript (
string join " " \
"INSTALLER_SCRIPT=$(string escape "$script")" \
"CONFIG_NAME=$(string escape "$CONFIG_NAME")" \
(string escape $script))
end | runChroot "$mountDir" tee /root/.bash_profile > /dev/null
and echo "Setup finished!"

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

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

View file

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

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