presentation-nix-flakes/sigma.md
2025-03-13 18:31:53 +01:00

82 lines
1.6 KiB
Markdown

---
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
}
```
---