gpt generated opravená prezentace
This commit is contained in:
parent
6ae3af2133
commit
4016883770
273
sigma.md
273
sigma.md
@ -0,0 +1,273 @@
|
||||
---
|
||||
marp: true
|
||||
class: invert
|
||||
paginate: true
|
||||
footer: "Albert Vala, Filip Kohout, Nix flakes & Nix command"
|
||||
---
|
||||
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap');
|
||||
:root {
|
||||
background-color: rgb(10,10,10);
|
||||
font-family: Ubuntu, Arial;
|
||||
}
|
||||
h1 {
|
||||
color: rgb(87, 175, 246);
|
||||
}
|
||||
code {
|
||||
background-color: rgb(10,10,10);
|
||||
}
|
||||
header, footer {
|
||||
color: rgb(100,100,100);
|
||||
}
|
||||
</style>
|
||||
|
||||
# Nix Flakes & Nix Command
|
||||
|
||||
---
|
||||
|
||||
# 1. Úvod do Nix Command
|
||||
|
||||
- Nové rozhraní pro příkazovou řádku Nix
|
||||
- Podpora pro Flakes
|
||||
|
||||
## Porovnání starých a nových příkazů:
|
||||
|
||||
```shell
|
||||
nix-shell -p cowsay # Starý způsob
|
||||
nix shell nixpkgs#cowsay # Nový způsob
|
||||
nix run nixpkgs#cowsay # Nový způsob
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 2. Základní příkazy Nix CLI
|
||||
|
||||
| Příkaz | Popis |
|
||||
|---------------|----------------------------------------|
|
||||
| `flake new` | Vytvoření flake z šablony |
|
||||
| `develop` | Build environment shell |
|
||||
| `shell` | Dočasný shell s vybraným programem |
|
||||
| `config check`| Kontrola konfigurace na chyby |
|
||||
| `run` | Spuštění výstupu z flaky |
|
||||
|
||||
---
|
||||
|
||||
# 3. Úvod do Nix Flakes
|
||||
|
||||
### Proč Flakes?
|
||||
- Použití `lockfiles` pro deterministické buildy
|
||||
- Jednoduchá správa vstupů (flake inputs)
|
||||
|
||||
### Na co lze Flakes použít?
|
||||
- Správa systémové konfigurace
|
||||
- Vývojové prostředí
|
||||
- Balíčkování
|
||||
- Nástroje pro deployment
|
||||
|
||||
---
|
||||
|
||||
# 4. Použití Nix Command + Flakes
|
||||
|
||||
## Dočasný shell s balíčkem:
|
||||
```shell
|
||||
nix shell nixpkgs#alejandra
|
||||
nix shell github:kamadorueda/alejandra
|
||||
```
|
||||
|
||||
## Zobrazení atributů flaky:
|
||||
```shell
|
||||
nix flake show github:kamadorueda/alejandra
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 5. Použití Flakes pro systémovou konfiguraci
|
||||
|
||||
- Flakes spravují pouze `inputs` a `outputs`
|
||||
- Konfigurace systému je definována v `flake.nix`
|
||||
|
||||
## Příklad `flake.nix`:
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
outputs = { nixpkgs, home-manager, ... }: {
|
||||
nixosConfigurations = {
|
||||
nixos = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
./configuration.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = false;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.nixFreak = import ./home.nix;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Příklad `home.nix`:
|
||||
```nix
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.username = "nixFreak";
|
||||
home.homeDirectory = "/home/nixFreak";
|
||||
home.stateVersion = "24.05";
|
||||
home.packages = with pkgs; [ cowsay ];
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Příklad `configuration.nix`:
|
||||
```nix
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [ ./hardware-configuration.nix ];
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
users.users.nixFreak = {
|
||||
isNormalUser = true;
|
||||
extraGroups = ["wheel"];
|
||||
};
|
||||
system.stateVersion = "25.05";
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 6. Správa Flakes
|
||||
|
||||
### Vytvoření nové flaky:
|
||||
```shell
|
||||
nix flake init --template templates#full
|
||||
```
|
||||
|
||||
### Zobrazení vstupů:
|
||||
```shell
|
||||
nix flake metadata --json | jq
|
||||
```
|
||||
|
||||
### Aktualizace vstupů:
|
||||
```shell
|
||||
nix flake update # všechny vstupy
|
||||
nix flake update home-manager # konkrétní vstup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 7. Nixos-rebuild a vzdálené buildy
|
||||
|
||||
## Lokální rebuild:
|
||||
```shell
|
||||
nixos-rebuild --flake .
|
||||
nh os switch
|
||||
```
|
||||
|
||||
## Manuální přepnutí konfigurace:
|
||||
```shell
|
||||
nix build /etc/nixos#nixosConfigurations.nixos.config.system.build.toplevel
|
||||
./result/bin/switch-to-configuration switch
|
||||
```
|
||||
|
||||
## Vzdálený build:
|
||||
```shell
|
||||
nixos-rebuild --target-host nixFreak@192.168.8.32 switch --flake .#default
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 8. Nix Shell a DevShells
|
||||
|
||||
## Příklad `shell.nix`:
|
||||
```nix
|
||||
{pkgs ? import <nixpkgs> {}}:
|
||||
pkgs.mkShell {
|
||||
packages = [ pkgs.cowsay ];
|
||||
}
|
||||
```
|
||||
|
||||
## Příklad flaky pro vývojové prostředí:
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
};
|
||||
outputs = { self, nixpkgs }: {
|
||||
devShells.default = nixpkgs.mkShell {
|
||||
packages = [ nixpkgs.cowsay ];
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 9. Nix Language
|
||||
|
||||
## Deklarace setu:
|
||||
```nix
|
||||
foo = {
|
||||
bar = "test";
|
||||
};
|
||||
foo.bar # "test"
|
||||
```
|
||||
|
||||
## Funkce v Nix:
|
||||
```nix
|
||||
let
|
||||
addOne = eggs: eggs + 1;
|
||||
in
|
||||
addOne 3 # -> 4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 10. Nix Writers
|
||||
|
||||
- Jednoduché přidávání skriptů do systému
|
||||
|
||||
## Příklad:
|
||||
```nix
|
||||
pkgs.writers.writeBash "hello-world" {} ''
|
||||
echo "Hello, world!"
|
||||
'';
|
||||
```
|
||||
|
||||
## Příklad s Python knihovnami:
|
||||
```nix
|
||||
pkgs.writers.writePython3 "hello-world" {
|
||||
libraries = [ pkgs.python3Packages.requests ];
|
||||
} ''
|
||||
import requests
|
||||
print("Hello, world!")
|
||||
'';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Závěr
|
||||
|
||||
- Nix Flakes usnadňují správu závislostí a buildů
|
||||
- `nix` CLI přináší nové možnosti
|
||||
- Flakes umožňují snadnou replikaci prostředí
|
||||
|
||||
**Děkujeme za pozornost!**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user