128 lines
2.6 KiB
Markdown
128 lines
2.6 KiB
Markdown
---
|
|
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 {
|
|
color: rgb(100,100,100)
|
|
}
|
|
footer {
|
|
color: rgb(100,100,100)
|
|
}
|
|
</style>
|
|
|
|
# Nix flakes & Nix command
|
|
---
|
|
# Nix Command
|
|
* Nove nix cli
|
|
* Flake support
|
|
---
|
|
# Porovnani
|
|
```shell
|
|
nix-shell -p cowsay #Stare
|
|
nix shell nixpkgs#cowsay #Nove
|
|
nix run nixpkgs#cowsay #Nove
|
|
```
|
|
|
|
---
|
|
# Commandy
|
|
|Command|Na|
|
|
|---|---|
|
|
|flake new| Vytvoreni flaky z template
|
|
|develop| Build environment shell
|
|
|shell| temp shell s nejakym programem
|
|
|config check| Check configu na potencialni chyby
|
|
|run| Spusti output z flaky
|
|
|
|
---
|
|
# Flakes
|
|
## Proc?
|
|
* Lockfiles.
|
|
* Flake inputs
|
|
## Na co?
|
|
- Cokoliv.
|
|
---
|
|
# Jak pouzit flakes na system configuraci?
|
|
* Flake je jen cast zbytek je v normalnich nix filech
|
|
* Zbytek konfigurace bere inputy z flaky.
|
|
* Neprijdeme o nic jen mame lock file a moznost flake jako inputu
|
|
---
|
|
# Flake example
|
|
```
|
|
{
|
|
description = "NixOS configuration";
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
home-manager.url = "github:nix-community/home-manager";
|
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
|
zen-browser.url = "github:0xc000022070/zen-browser-flake";
|
|
};
|
|
outputs = inputs @ {
|
|
nixpkgs,
|
|
home-manager,
|
|
zen-browser,
|
|
...
|
|
}: {
|
|
nixosConfigurations = {
|
|
laptop = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules = [
|
|
./laptop/configuration.nix
|
|
home-manager.nixosModules.home-manager
|
|
{
|
|
home-manager.useGlobalPkgs = false;
|
|
home-manager.useUserPackages = true;
|
|
home-manager.extraSpecialArgs = {inherit zen-browser;};
|
|
home-manager.users.albert = import ./modules/home.nix;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|
|
```
|
|
---
|
|
```
|
|
{
|
|
zen-browser,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: {
|
|
home.username = "nixFreak";
|
|
home.homeDirectory = "/home/nixFreak";
|
|
home.stateVersion = "24.05";
|
|
home.packages = with pkgs;
|
|
[
|
|
cowsay
|
|
]
|
|
++ [
|
|
zen-browser.packages."${system}".default
|
|
];
|
|
programs.home-manager.enable = true;
|
|
}
|
|
```
|
|
---
|
|
# nixos-rebuild
|
|
* Je to jen bash script
|
|
```
|
|
nixos-rebuild --flake
|
|
nh os switch
|
|
```
|
|
```
|
|
nix build /etc/nixos#nixosConfigurations.nixos.config.system.build.toplevel \
|
|
&& ./result/bin/switch-to-configuration switch
|
|
``` |