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
|
- Systems have a given configuration
|
||||||
- Configuration can duplicate systems
|
- Configuration can duplicate systems
|
||||||
|
- Everything is isolated
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -46,4 +47,116 @@ While we will try to talk about generalities of declarative operating system par
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Guix
|
||||||
|
|
||||||
|
- Released 2012
|
||||||
|
- Forked from Nix
|
||||||
|
- Guix package manager (guix)
|
||||||
|
- GNU Guile (scheme/lisp)
|
||||||
|
- GNU Shepherd
|
||||||
|
- Not GNU/Herd
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 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