--- marp: true class: invert paginate: true footer: "Albert Vala, Filip Kohout, Nix flakes & Nix command" --- # 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; } ``` ---