store and profile
This commit is contained in:
parent
5a3da23ce4
commit
606fb91faa
115
presentation.md
115
presentation.md
|
@ -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
|
Loading…
Reference in a new issue