2022-01-05 07:15:39 +08:00
# cachyos-new-installer
CLI net-installer for CachyOS, inspired by manjaro-architect
This installer provides online installation for CachyOS.
2022-01-05 08:21:53 +08:00
Requirements
------------
* C++20 feature required (tested with GCC 11.1.0 and Clang 13(clang will not compile it with libstdc++ 11.1.0 because of c++20 standard ranges library)
Any compiler which support C++20 standard should work.
######
## Installing from source
This is tested on Arch Linux, but *any* recent Linux with latest C++20 compiler should do:
```sh
sudo pacman -Sy \
base-devel cmake pkg-config make glibmm libnm
```
### Cloning the source code
```sh
git clone https://github.com/cachyos/new-cli-installer.git
cd new-cli-installer
```
### Building and Configuring
#### cmake(recommended):
To build, first, configure it(if you intend to install it globally, you
might also want `-DCMAKE_INSTALL_PREFIX=/usr` ):
```sh
cmake -S . -B build
```
Second, build it:
```sh
cmake --build build
```
#### meson:
To build, first, configure it (if you intend to install it globally, you
might also want `--prefix=/usr` ):
```sh
meson build
```
Second, compile it:
```sh
meson compile -C build
```
Optionally, to disable developer environment:
pass `-DENABLE_DEVENV=OFF` to cmake or `-Ddevenv=false` to meson when configuring the project.
2022-01-05 07:15:39 +08:00
### Libraries used in this project
* [Functional Terminal (X) User interface ](https://github.com/ArthurSonzogni/FTXUI ) used for TUI.
* [A modern formatting library ](https://github.com/fmtlib/fmt ) used for formatting strings, output and logging.
* [Fast C++ logging library ](https://github.com/gabime/spdlog ) used for logging process of the installer.
* [Parsing gigabytes of JSON per second ](https://github.com/simdjson/simdjson ) used for config deserialization.
* [Curl for People ](https://github.com/libcpr/cpr ) used for connection check and maybe in future fetching netinstall config from github.
* [Ranges ](https://github.com/ericniebler/range-v3 ) used for ranges support with clang.
**Simple menu overview:**
2022-02-19 07:32:24 +08:00
TODO: should be simple as Calamares Installer
2022-01-05 07:15:39 +08:00
---
**Advanced menu overview:**
```
Main Menu
|
├── Prepare Installation
2022-01-09 22:02:00 +08:00
| ├── Set Virtual Console
2022-01-05 07:15:39 +08:00
| ├── List Devices
| ├── Partition Disk
| ├── RAID (WIP)
2022-01-09 09:10:38 +08:00
| ├── LUKS Encryption
2022-01-05 07:15:39 +08:00
| ├── Logical Volume Management (WIP)
| ├── Mount Partitions
| ├── Configure Installer Mirrorlist (TODO)
| | ├── Edit Pacman Configuration
| | ├── Edit Pacman Mirror Configuration
| | └── Rank Mirrors by Speed
| |
│ └── Refresh Pacman Keys (TODO)
|
├── Install System
│ ├── Install Base Packages
│ ├── Install Desktop
│ ├── Install Bootloader
│ ├── Configure Base
| │ ├── Generate FSTAB (seems broken)
| │ ├── Set Hostname
2022-01-07 08:26:36 +08:00
| │ ├── Set System Locale
2022-01-05 07:15:39 +08:00
| │ ├── Set Timezone and Clock
| │ ├── Set Root Password
| │ └── Add New User(s) (seems broken)
| │
│ ├── Install Custom Packages
2022-02-15 05:07:59 +08:00
│ ├── System Tweaks
2022-01-05 07:15:39 +08:00
| │ ├── Enable Automatic Login
2022-02-20 23:24:33 +08:00
| │ └── Performance
| | ├── I/O schedulers
| | └── Swap configuration
2022-01-05 07:15:39 +08:00
| │
2022-02-19 07:32:24 +08:00
│ ├── Review Configuration Files
2022-02-15 05:07:59 +08:00
│ └── Chroot into Installation
2022-01-05 07:15:39 +08:00
|
└── System Rescue
2022-02-19 07:32:24 +08:00
├── Install Hardware Drivers
2022-02-21 07:31:39 +08:00
│ ├── Install Display Drivers
2022-02-19 07:32:24 +08:00
│ └── Install Network Drivers (TODO)
2022-01-05 07:15:39 +08:00
|
├── Install Bootloader
├── Configure Base
| └── ... (see 'Install System')
│
├── Install Custom Packages
├── Remove Packages
2022-02-19 07:32:24 +08:00
├── Review Configuration Files
2022-02-15 05:07:59 +08:00
├── Chroot into Installation
2022-01-05 07:15:39 +08:00
├── Data Recovery (TODO)
│ └── Btrfs snapshots..
│
2022-02-19 07:32:24 +08:00
└── View System Logs
2022-01-05 07:15:39 +08:00
├── Dmesg
├── Pacman log
├── Xorg log
└── Journalctl
```