-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
26d09b7
commit 52ee7a4
Showing
1 changed file
with
186 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
# 001 - Installing Guix System | ||
|
||
*initially written on November 11th, 2024* | ||
|
||
## Launching the Guix Installer | ||
|
||
If you followed the instructions of `000` you should now have a USB stick with | ||
the Guix bootable installer burned to it. Turn off the computer you wish to | ||
install Guix to; plug in the USB stick. Now turn the computer on, it should | ||
tell you how to open a BIOS/UEFI/boot menu, hold that key, if your computer | ||
launches like normal turn it off and try again- this time holding that key | ||
immediately. | ||
|
||
> ❗ If no key was shown you can try holding `F10`, `F12`, `Escape`, or `Delete` | ||
> and if none of those worked than try looking online for information on how to | ||
> enter the boot menu for your computer or motherboard model. | ||
Once you're in the boot menu there should be an option to select either a "boot | ||
media" or to set a "boot order". If you can select a "boot media" then all you | ||
need to do is select the option most similar to "USB Media", "Removable Media", | ||
or "USB HDD". If only setting a "boot order" is an option then you need to move | ||
the options like those to the top of the list. Once you have done that there | ||
should be an option to "Save and Exit". | ||
|
||
> ❗ If you have difficulty with this there should be information about how to | ||
> select a boot media for your specific computer or motherboard model online. | ||
## Installing through the Guix Installer | ||
|
||
You should now be on a screen where you're prompted to select a "Locale | ||
Language", you can navigate this and future screens with the arrow keys on your | ||
keyboard. You can also type the first letter of the language of your choice. | ||
I went with "English" and then press `Enter` to continue. Next I select my | ||
"territory for this language" in my case "United States", some languages might | ||
not have this option. | ||
|
||
You're now prompted to select how to install Guix, I will select "Graphical | ||
install using a terminal based interface"- if you prefer to install manually I | ||
recommend [this guide by System Crafters.](https://wiki.systemcrafters.net/guix/nonguix-installation-guide/) | ||
|
||
I immediately get a red screen with the warning "Devices not supported by free | ||
software were found on your computer", that's okay, I press `Enter`. Next, I | ||
select my timezone, you should know the drill by now: navigate with arrow keys, | ||
submit with `Enter`. Same with keyboard layout. | ||
|
||
Next I'm prompted to choose a hostname, it doesn't really matter much what you | ||
pick- but it is the name your computer will interact with networks with. I | ||
chose "guixpad", and again submitted with `Enter`. Then I select "WiFi" to | ||
provide internet access, I'm told "No wifi detected" but despite the earlier | ||
warning if I press the `Right Arrow` key to go to "Scan" and press enter my | ||
WiFi network shows up and I connect to it. I'm then asked if I wish to enable | ||
"Substitute server discovery" you're free to read it yourself, but I choose to | ||
"Disable" it as I don't have a substitute server in my local network. | ||
|
||
You should then be prompted to add an root/administrator password. Next adding | ||
a user so I press `Enter` and add the user "aidan". I chose not to change the | ||
"Real name" or "Home directory", you can again select a password- this time for | ||
your user. I press `Enter` on "OK" and continue to selecting a "Desktop | ||
enviroment", I chose "GNOME" and then pressed the `Right Arrow` button so the | ||
cursor moved to "OK" and pressed `Enter`. I chose not to enable any of the next | ||
options, and again navigated to "OK" and pressed `Enter`. Again the same for | ||
"CUPS". | ||
|
||
When you have reached the `Partitioning method` screen either select | ||
"Guided"/"Guided ... with encryption" or "Manual" and read their respective | ||
sections below. | ||
|
||
## Guided Partitioning | ||
|
||
You should be given a list of hard drives you can install Guix on, press `Enter` | ||
on the one you wish to install Guix to. | ||
|
||
> ❗ **THIS PROCESS WILL DELETE ALL FILES ON THAT DRIVE** ❗ | ||
If asked you probably want a "gpt" partition table. | ||
|
||
You are then given the option of seperating the "/home" partition, I chose not | ||
to and to instead continue with "Everything is one partition". I am shown the | ||
partition layout and press `Right Arrow` to navigate to "OK" and press `Enter`. | ||
|
||
> 🔐 Encrypted partitioning then prompts you to enter a password, make sure you | ||
> remember this password. Forgetting it likely means that all your files would | ||
> be irrecoverable. I then agree to format the new partition. | ||
## Manual Partitioning | ||
|
||
[TODO] | ||
|
||
## Editing the Configuration file | ||
|
||
The Guix install generated a configuration file for us based on the options we | ||
chose, unfortunately this config doesn't include nonguix. Make the following | ||
changes to the *Scheme* code: | ||
|
||
> **`λ`** Scheme is a functional programming language, and the primary language | ||
> used in configuring Guix. Being functional means that most things are written | ||
> in the form of a function, the same kind of function as `f(x) = x + 3` but | ||
> usually much more complex in effect. In Scheme parenthesis(`(` and `)`) | ||
> denote *nesting* what can be called "lexical depth" or just *depth*. Each | ||
> *depth* begins with a function name, followed by the *arguments* for that | ||
> function. It’s important in Scheme to be mindful of how deeply nested you are | ||
> within parentheses- afterall this is what determines what function you're | ||
> passing *arguments* to. | ||
> | ||
> As touched on in `000`: anything following `;;` in a line of Scheme code is a | ||
> *comment* and not executed as code. | ||
> 🗒️ Lines to add will be green, to remove will be red, other lines should be | ||
> unchanged, even if they're slightly different on your computer. Just make | ||
> sure any changes you make are to the same *depth* I'm referring to. | ||
```diff | ||
- (use-modules (gnu)) | ||
+ (use-modules (gnu) | ||
+ (nongnu packages linux) | ||
+ (nongnu system linux-initrd)) | ||
(use-service-modules cups desktop networking ssh xorg) | ||
|
||
(operating-system | ||
+ (kernel linux) | ||
+ (initrd microcode-initrd) | ||
+ (firmware (list linux-firmware)) | ||
(locale "en_US.utf8") | ||
(timezone "Europe/Warsaw") | ||
(keyboard-layout (keyboard-layout "us")) | ||
(host-name "guixpad") | ||
|
||
;; The list of user accounts ('root' is implicit). | ||
(users (cons* (user-account | ||
(name "aidan") | ||
(comment "Aidan") | ||
(group "users") | ||
(home-directory "/home/aidan") | ||
(supplementary-groups '("wheel" "netdev" "audio" "video"))) | ||
%base-user-accounts)) | ||
|
||
;; Below is the list of system services. To search for available | ||
;; services, run 'guix system search KEYWORD' in a terminal. | ||
|
||
(services | ||
(append (list (service gnome-desktop-service-type) | ||
(set-xorg-configuration | ||
(xorg-configuration (keyboard-layout keyboard-layout)))) | ||
|
||
;; This is the default list of services we | ||
;; are appending to. | ||
%desktop-services)) | ||
(bootloader (bootloader-configuration | ||
(bootloader grub-bootloader) | ||
( targets (list "/dev/sda")) | ||
(keyboard-layout keyboard-layout))) | ||
(swap-devices (list (swap-space | ||
(target (uuid | ||
"8204b016-5101-4d32-9aba-f4a7adcb9560"))))) | ||
|
||
;; The list of file systems that get "mounted". The unique | ||
;; file system identifiers there ("UUIDs") can be obtained | ||
;; by running 'blkid' in a terminal. | ||
(file-systems (cons* (file-system | ||
(mount-point "/") | ||
(device (uuid | ||
"0be89db0-5391-44aa-9251-a87adb3ec25b" | ||
'ext4)) | ||
(type "ext4")) %base-file-systems))) | ||
``` | ||
|
||
Basically what we've done there is import nonguix and install non-free firmware | ||
and a non-free Linux kernel into our system. | ||
|
||
There are also other changes that you | ||
|
||
## Installing Guix System | ||
|
||
**DO NOT PRESS OK** | ||
|
||
Instead press the `Control`, `ALT` and `F3` keys simulatenously | ||
|
||
Press `Enter` to go to a terminal screen. | ||
|
||
From there you can type: | ||
|
||
`$ herd start cow-store /mnt` | ||
|
||
And finally: | ||
|
||
`$ guix system init /mnt/etc/config.scm /mnt` |