Merge presentation

This commit is contained in:
foglar 2025-03-13 18:54:22 +01:00
parent 9fa62d725f
commit e6e4ccc0bb
2 changed files with 110 additions and 98 deletions

View File

@ -25,12 +25,18 @@ footer: "Albert Vala, Filip Kohout, Nix flakes & Nix command"
</style> </style>
# Nix flakes & Nix command # Nix flakes & Nix command
--- ---
# Nix Command # Nix Command
* Nove nix cli * Nove nix cli
* Flake support * Flake support
--- ---
# Porovnani # Porovnani
```shell ```shell
nix-shell -p cowsay #Stare nix-shell -p cowsay #Stare
nix shell nixpkgs#cowsay #Nove nix shell nixpkgs#cowsay #Nove
@ -38,30 +44,43 @@ nix run nixpkgs#cowsay #Nove
``` ```
--- ---
# Commandy # Commandy
| Command | Na | | Command | Na |
|---|---| | ------------ | ---------------------------------- |
|flake new| Vytvoreni flaky z template | flake new | Vytvoreni flaky z template |
|develop| Build environment shell | develop | Build environment shell |
|shell| temp shell s nejakym programem | shell | temp shell s nejakym programem |
|config check| Check configu na potencialni chyby | config check | Check configu na potencialni chyby |
|run| Spusti output z flaky | run | Spusti output z flaky |
--- ---
# Flakes # Flakes
## Proc?
* ## Proc?
* Lockfiles. * Lockfiles.
* Flake inputs * Flake inputs
## Na co?
- Cokoliv. * ## Na co?
* Cokoliv.
--- ---
# Jak pouzit flakes na system configuraci? # Jak pouzit flakes na system configuraci?
* Flake je jen cast zbytek je v normalnich nix filech * Flake je jen cast zbytek je v normalnich nix filech
* Zbytek konfigurace bere inputy z flaky. * Zbytek konfigurace bere inputy z flaky.
* Neprijdeme o nic jen mame lock file a moznost flake jako inputu * Neprijdeme o nic jen mame lock file a moznost flake jako inputu
--- ---
# Flake example # Flake example
```
```nix
{ {
description = "NixOS configuration"; description = "NixOS configuration";
inputs = { inputs = {
@ -94,8 +113,10 @@ nix run nixpkgs#cowsay #Nove
}; };
} }
``` ```
--- ---
```
```nix
{ {
zen-browser, zen-browser,
config, config,
@ -115,14 +136,86 @@ nix run nixpkgs#cowsay #Nove
programs.home-manager.enable = true; programs.home-manager.enable = true;
} }
``` ```
--- ---
# nixos-rebuild
* Je to jen bash script # Inputs
* `nix flake metadata --json | jq` - zobrazí vstupy
* lock aktuální verze
* `nix flake update` - aktualizace všech vstupů
* `nix flake update [home-manager]` - aktualizace jednoho vstupu
* `nix flake show` - zobrazí flake strukturu
```nix
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-current = "github:nixos/nixpkgs?ref=3058cf84bce1aba7b1820cb24319a171572217ba-dirty";
}
``` ```
---
# Nixos-rebuild
* Je to jen bash script
```shell
nixos-rebuild --flake nixos-rebuild --flake
nh os switch nh os switch
``` ```
```
```shell
nix build /etc/nixos#nixosConfigurations.nixos.config.system.build.toplevel \ nix build /etc/nixos#nixosConfigurations.nixos.config.system.build.toplevel \
&& ./result/bin/switch-to-configuration switch && ./result/bin/switch-to-configuration switch
``` ```
---
# Nix writers
* Jednoduchý způsob přidávání skriptů v různých programovacích jazycích do systému ve flake konfiguraci
* Rozdíl oproti klasickému `pkgs.writeShellScriptBin`
* [nixpkgs](https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/writers/scripts.nix) - pro všechny možnosti konfigurace skriptů
* [https://nixos.wiki/wiki/Nix-writers](https://nixos.wiki/wiki/Nix-writers) - osekaná wiki
---
```nix
pkgs.writers.writeBash "hello-world-bash" {}
''
echo "Hello world!"
''
pkgs.writers.writePython3 "hello-world-python" {}
''
print("Hello world!")
''
pkgs.writers.writeRust "hello-world-rust" {}
''
fn main() {
println!("Hello world!")
}
''
```
---
```nix
pkgs.writers.writePython3 "hello-world-python"
{
libraries = [ pkgs.python3Packages.requests ];
makeWrapperArgs = [
"--prefix", "PATH", ":", "${pkgs.sl}/bin",
];
}
''
print("Hello world!")
''
```

View File

@ -1,81 +0,0 @@
---
marp: true
---
# NixOS
## Build your own ISO image from flake
```shell
nix run github:nix-community/nixos-generators -- -c ./flake.nix --flake '#default' -f vm --disk-size 20480
```
---
## Nix writers
- Jednoduchý způsob přidávání skriptů v různých programovacích jazycích do systému
- Rozdíl oproti klasickému `pkgs.writeShellScriptBin`
- [nixpkgs](https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/writers/scripts.nix) - pro všechny možnosti konfigurace skriptů
- [https://nixos.wiki/wiki/Nix-writers](https://nixos.wiki/wiki/Nix-writers) - osekaná wiki
---
```nix
pkgs.writers.writeBash "hello-world-bash" {}
''
echo "Hello world!"
''
pkgs.writers.writePython3 "hello-world-python" {}
''
print("Hello world!")
''
pkgs.writers.writeRust "hello-world-rust" {}
''
fn main() {
println!("Hello world!")
}
''
```
---
```nix
pkgs.writers.writePython3 "hello-world-python"
{
libraries = [ pkgs.python3Packages.requests ];
makeWrapperArgs = [
"--prefix", "PATH", ":", "${pkgs.sl}/bin",
];
}
''
print("Hello world!")
''
```
---
## Inputs
- `nix flake metadata --json | jq` - zobrazí vstupy
- lock aktuální verze
- `nix flake update` - aktualizace všech vstupů
- `nix flake update [home-manager]` - aktualizace jednoho vstupu
- `nix flake show` - zobrazí flake strukturu
```nix
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-current = "github:nixos/nixpkgs?ref=3058cf84bce1aba7b1820cb24319a171572217ba-dirty
}
```
---