store and profile

This commit is contained in:
Tyler Murphy 2023-09-29 00:54:41 -04:00
parent 5a3da23ce4
commit 606fb91faa
No known key found for this signature in database
GPG key ID: 988032A5638EE799
2 changed files with 114 additions and 1 deletions

BIN
image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -39,6 +39,7 @@ While we will try to talk about generalities of declarative operating system par
- Systems have a given configuration
- Configuration can duplicate systems
- Everything is isolated
---
@ -46,4 +47,116 @@ While we will try to talk about generalities of declarative operating system par
![w:25em](diagram.png)
---
---
# Isolation
- Packages are built in isolated packages
- No random spare files in file system
- All state is containted
- Preserves state-less root
---
# Stability
- Reproducibility and Isolation ensure the ability to rollback
- Always have some working system state
---
# NixOS
- Released Jun 2003
- Eelco Dolstra
- Nix package manager (nix)
- Nix language
- Systemd
![bg left 40%](nix.png)
---
# Guix
- Released 2012
- Forked from Nix
- Guix package manager (guix)
- GNU Guile (scheme/lisp)
- GNU Shepherd
- Not GNU/Herd
![bg left 40%](guix.png)
---
# Declarative Package Management
## `nix` and `guix` commands
---
### Declarative Package Management
- Update system repositories
- Build and/or install packages
- Manage `the store`
---
### Distro Store
- Guix `/gnu/store`
- Nix `/nix/store`
- Stores all package and system files
- Partially based off of configuration
---
### Distro Profile
- Guix `~/.guix-profile`
- Nix `~/.nix-profile`
- Symlink Read only system
- Links store to current profile
- Based off configuration
---
- Store hold system and package files
- Profile links to those files
---
### Multidirection
```bash
$ which gcc
/home/tylerm/.guix-home/profile/bin/gcc # profile
$ readlink /home/tylerm/.guix-home/profile/bin/gcc
/gnu/store/spxcaq8gnmckhzz9a1wm3qc9dmz5bvsd-gcc-toolchain-12.3.0/bin/gcc # store
```
---
## Multiple Profiles
- System Profile (All users)
- Good to contain system needed pacakges
- Graphics drivers
- Zsh
- User Profile (Specific user)
- Good to contain all user data
- Browser
- Applications
- DE/WM
---
## To Build The System
- Package manager takes in user and system configuration
- Downloads needed data into store
- Build any needed packages
- Symlinks the user and system profiles