Compare commits

...

3 Commits

2 changed files with 206 additions and 190 deletions

392
TODO.org
View File

@ -1084,6 +1084,205 @@ CLOSED: [2023-04-01 Sat 23:29] DEADLINE: <2023-04-04 Tue>
.guix/rekahsoft/guix-config/proxmox-vm-lvm-minimal.scm:84:11: warning: 'elogind-service' is deprecated, use 'elogind-service-type' instead
.guix/rekahsoft/guix-config/proxmox-vm-lvm-minimal.scm:85:11: warning: 'dbus-service' is deprecated, use 'dbus-root-service-type' instead
#+end_src
*** DONE [#A] Setup guix on lenovo t80s personal laptop
CLOSED: [2023-04-02 Sun 21:52] DEADLINE: <2023-03-19 Sun>
:PROPERTIES:
:ARCHIVE_TIME: 2023-04-02 Sun 21:53
:END:
- State "DONE" from "DOING" [2023-04-02 Sun 21:52]
- State "DOING" from "TODO" [2022-03-14 Mon 11:50]
**** Notes
***** Partitioning
****** Create disk partition table and layout
#+begin_src bash
parted /dev/nvme0n1 mklabel gpt
#+end_src
****** Create EFI partition
#+begin_src bash
parted /dev/nvme0n1p1 set 1 esp on
mkfs.fat -F32 /dev/nvme0n1p1
#+end_src
****** Create LUKS container on remainder of disk
#+begin_src bash
cryptsetup luksFormat -l crypt /dev/nvme0n1p2
#+end_src
******* Unlock LUKS container after creation
#+begin_src bash
cryptsetup luksOpen /dev/nvme0n1p2
#+end_src
****** Create LVM2 container inside of LUKS container
******* Create Physical Volume (pv)
#+begin_src bash
pvcreate /dev/mapper/crypt
#+end_src
******* Create Volume Group (vg)
#+begin_src bash
vgcreate vg0 /dev/mapper/crypt
#+end_src
******* Create Logical Volume/s (vg)
#+begin_src bash
vgcreate -L 442G vg0 -n root
vgcreate -l +100%FREE vg0 -n swap
#+end_src
****** Create btrfs 'pool' (file-system) and subvolumes
******* Create btrfs file-system
#+begin_src bash
mkfs.btrfs -l root /dev/vg0/root
#+end_src
******* Create btrfs subvolumes
First mount the btrfs top-level file-system.
#+begin_src bash
mount /dev/vg0/root /mnt
#+end_src
Then create the root subvolume.
#+begin_src bash
btrfs subvolume create /mnt/@
#+end_src
Unmount the top-level btrfs file-system.
#+begin_src bash
umount /mnt
#+end_src
Mount the root subvolume.
#+begin_src bash
mount -o subvol=@,compress=zstd /dev/vg0/root /mnt
#+end_src
Create nested subvolumes for ~/gnu/store~ and ~/home~.
#+begin_src bash
mkdir -p /mnt/gnu /mnt/var/log
btrfs subvolume create /mnt/gnu/store
btrfs subvolume create /mnt/home
# TODO: Should have created these
#btrfs subvolume create /mnt/var/log
#+end_src
****** Create and activate swap
#+begin_src bash
mkswap -l swap /dev/vg0/swap
swapon /dev/vg0/swap
#+end_src
****** Prepare ~/mnt~ for Guix installation
Create ~/boot/efi~ directory for UEFI boot and mount the ESP partition there.
#+begin_src bash
mkdir -p /mnt/boot/efi
mount /dev/nvme0n1p1 /mnt/boot/efi
#+end_src
Both root and swap are already mounted and ready due to earlier steps.
***** Install Guix
Start ~cow-store~ to allow later steps to write store changes to ~/mnt/gnu/store~ as well as
to bootstrap the system.
#+begin_src bash
herd start cow-store /mnt
#+end_src
#+begin_src bash
guix system init /mnt/etc/config.scm /mnt
#+end_src
****** DONE Figure out how config file should be retrieved
CLOSED: [2022-04-20 Wed 11:47]
- State "DONE" from "TODO" [2022-04-20 Wed 11:47]
Figured out. This should be done through a channel, and is now implemented in the
[[https://git.home.rekahsoft.ca/rekahsoft-public/guix-machines][guix-machines]] repository.
****** DONE Determine what setup looks like if non-free firmware is required
CLOSED: [2022-04-20 Wed 11:48]
- State "DONE" from "TODO" [2022-04-20 Wed 11:48]
This is going to require using a pre-built guix image that includes the appropriate firmware
and blob loader (non-libre linux kernel).
****** CANCELED Streamline setup as my own disk image
CLOSED: [2023-04-02 Sun 21:52]
- State "CANCELED" from "TODO" [2023-04-02 Sun 21:52] \\
This will be captured in a later TODO
***** Setup user-space
****** Setup flatpak
Flatpak comes installed on Guix without any system of user remotes. Additionally, a
~/var/lib/flatpak~ folder does not exist by default on arch. It could be created, with a
group controlling its permissions, but I instead prefer to keep this to be managed on a
per-user basis. As such, add flathub as a user remote:
#+begin_src sh :results output
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
#+end_src
******* DONE Look into output
CLOSED: [2022-04-20 Wed 11:48]
- State "DONE" from "TODO" [2022-04-20 Wed 11:48]
#+begin_src text
Note that the directories
'/var/lib/flatpak/exports/share'
'/home/collin/.local/share/flatpak/exports/share'
are not in the search path set by the XDG_DATA_DIRS environment variable, so
applications installed by Flatpak may not appear on your desktop until the
session is restarted.
#+end_src
******* DONE Install flatpak applications
CLOSED: [2023-04-02 Sun 21:44]
- Note taken on [2023-04-02 Sun 21:44] \\
Created a TODO item for my dotfiles to resolve this
- State "DONE" from "TODO" [2023-04-02 Sun 21:44]
I don't currently know which applications I will be using from flatpak. It will be a fallback
if the package is not available in Non-Guix or Guix repositories, and cannot be easily
packaged.
I will need to develop a nice way to automatically make sure flatpak applications are
installed. For the time being, I will just keep track of what has been installed here.
#+begin_src bash
flatpak install flathub us.zoom.Zoom
flatpak install com.plexamp.Plexamp
#+end_src
** Backlog :backlog:
DEADLINE: <1990-05-08 Tue>
*** TODO Setup data volumes for all vms, migrating persistent data to them
@ -1158,6 +1357,11 @@ DEADLINE: <2023-04-30 Sun>
*** TODO Setup guix on personal pinebook pro
See:
- http://www.joyofsource.com/guix-system-on-the-pinebook-pro.html
- https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/system/images/pinebook-pro.scm
- https://github.com/Millak/guix-config/blob/master/pinebookpro.scm
*** TODO Setup guix on dell personal laptop
** Ideas :spike:
@ -1323,191 +1527,3 @@ configuration file in place.
Alternatively, the docker-configuration could be updated to support setting logging
configuration and other options.
** DOING [#A] Setup guix on lenovo t80s personal laptop
DEADLINE: <2023-03-19 Sun>
- State "DOING" from "TODO" [2022-03-14 Mon 11:50]
*** Notes
**** Partitioning
***** TODO Create disk partition table and layout
#+begin_src bash
# TODO: Create gpt labeled disk
#+end_src
***** Create EFI partition
#+begin_src bash
parted /dev/nvme0n1p1 set 1 esp on
mkfs.fat -F32 /dev/nvme0n1p1
#+end_src
***** Create LUKS container on remainder of disk
#+begin_src bash
cryptsetup luksFormat -l crypt /dev/nvme0n1p2
#+end_src
****** Unlock LUKS container after creation
#+begin_src bash
cryptsetup luksOpen /dev/nvme0n1p2
#+end_src
***** Create LVM2 container inside of LUKS container
****** Create Physical Volume (pv)
#+begin_src bash
pvcreate /dev/mapper/crypt
#+end_src
****** Create Volume Group (vg)
#+begin_src bash
vgcreate vg0 /dev/mapper/crypt
#+end_src
****** Create Logical Volume/s (vg)
#+begin_src bash
vgcreate -L 442G vg0 -n root
vgcreate -l +100%FREE vg0 -n swap
#+end_src
***** Create btrfs 'pool' (file-system) and subvolumes
****** Create btrfs file-system
#+begin_src bash
mkfs.btrfs -l root /dev/vg0/root
#+end_src
****** Create btrfs subvolumes
First mount the btrfs top-level file-system.
#+begin_src bash
mount /dev/vg0/root /mnt
#+end_src
Then create the root subvolume.
#+begin_src bash
btrfs subvolume create /mnt/@
#+end_src
Unmount the top-level btrfs file-system.
#+begin_src bash
umount /mnt
#+end_src
Mount the root subvolume.
#+begin_src bash
mount -o subvol=@,compress=zstd /dev/vg0/root /mnt
#+end_src
Create nested subvolumes for ~/gnu/store~ and ~/home~.
#+begin_src bash
mkdir -p /mnt/gnu /mnt/var/log
btrfs subvolume create /mnt/gnu/store
btrfs subvolume create /mnt/home
# TODO: Should have created these
#btrfs subvolume create /mnt/var/log
#+end_src
***** Create and activate swap
#+begin_src bash
mkswap -l swap /dev/vg0/swap
swapon /dev/vg0/swap
#+end_src
***** Prepare ~/mnt~ for Guix installation
Create ~/boot/efi~ directory for UEFI boot and mount the ESP partition there.
#+begin_src bash
mkdir -p /mnt/boot/efi
mount /dev/nvme0n1p1 /mnt/boot/efi
#+end_src
Both root and swap are already mounted and ready due to earlier steps.
**** Install Guix
Start ~cow-store~ to allow later steps to write store changes to ~/mnt/gnu/store~ as well as
to bootstrap the system.
#+begin_src bash
herd start cow-store /mnt
#+end_src
#+begin_src bash
guix system init /mnt/etc/config.scm /mnt
#+end_src
***** DONE Figure out how config file should be retrieved
CLOSED: [2022-04-20 Wed 11:47]
- State "DONE" from "TODO" [2022-04-20 Wed 11:47]
Figured out. This should be done through a channel, and is now implemented in the
[[https://git.home.rekahsoft.ca/rekahsoft-public/guix-machines][guix-machines]] repository.
***** DONE Determine what setup looks like if non-free firmware is required
CLOSED: [2022-04-20 Wed 11:48]
- State "DONE" from "TODO" [2022-04-20 Wed 11:48]
This is going to require using a pre-built guix image that includes the appropriate firmware
and blob loader (non-libre linux kernel).
***** TODO Streamline setup as my own disk image
**** Setup user-space
***** Setup flatpak
Flatpak comes installed on Guix without any system of user remotes. Additionally, a
~/var/lib/flatpak~ folder does not exist by default on arch. It could be created, with a
group controlling its permissions, but I instead prefer to keep this to be managed on a
per-user basis. As such, add flathub as a user remote:
#+begin_src sh :results output
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
#+end_src
****** DONE Look into output
CLOSED: [2022-04-20 Wed 11:48]
- State "DONE" from "TODO" [2022-04-20 Wed 11:48]
#+begin_src text
Note that the directories
'/var/lib/flatpak/exports/share'
'/home/collin/.local/share/flatpak/exports/share'
are not in the search path set by the XDG_DATA_DIRS environment variable, so
applications installed by Flatpak may not appear on your desktop until the
session is restarted.
#+end_src
****** TODO Install flatpak applications
I don't currently know which applications I will be using from flatpak. It will be a fallback
if the package is not available in Non-Guix or Guix repositories, and cannot be easily
packaged.
I will need to develop a nice way to automatically make sure flatpak applications are
installed. For the time being, I will just keep track of what has been installed here.
#+begin_src bash
flatpak install flathub us.zoom.Zoom
flatpak install flathub com.slack.Slack
#+end_src

View File

@ -3,7 +3,7 @@
(url "https://git.savannah.gnu.org/git/guix.git")
(branch "master")
(commit
"c4cca9cb5d3e93ef146acb930a95da9d2da6fb06")
"af22b0de661c6dbb0c4b8df9baee8c13dd93dd7e")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
@ -14,7 +14,7 @@
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(commit
"ceeeb5365de0106919857fbf1cead741b0735cfe")
"c31cd7a6d8031affd1960e34ff98db46d1550a05")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"