Add flake.nix
This commit is contained in:
parent
339891709c
commit
a5186ea3d6
6 changed files with 163 additions and 2 deletions
15
README.md
Normal file
15
README.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
`<hostname>` is default to `hostname` command but it can be overwritten
|
||||||
|
|
||||||
|
Build only
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nixos-rebuild build --flake .#<hostname>
|
||||||
|
```
|
||||||
|
|
||||||
|
Build and switch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nixos-rebuild switch --flake .#<hostname>
|
||||||
|
```
|
|
@ -104,7 +104,7 @@ in
|
||||||
vim
|
vim
|
||||||
git
|
git
|
||||||
vscode
|
vscode
|
||||||
# wget
|
wget
|
||||||
];
|
];
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
@ -134,4 +134,10 @@ in
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "23.05"; # Did you read the comment?
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
|
|
||||||
|
# BEGIN: Add flake feature TODO: Remove when not experimental
|
||||||
|
nix = {
|
||||||
|
package = pkgs.nixFlakes;
|
||||||
|
extraOptions = "experimental-features = nix-command flakes";
|
||||||
|
};
|
||||||
|
# END: Add flake feature
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1,86 @@
|
||||||
# Fonctionnement de flake
|
# Fonctionnement de flake
|
||||||
|
|
||||||
|
### Général
|
||||||
|
|
||||||
|
- Permet de télécharger des dépendances de code comme \<home-manager>
|
||||||
|
> Stocke les dépendances dans le fichier `flake.lock`.
|
||||||
|
> Si l'on souhaite figer la version des dépendances pour éviter tout risque de mauvaise configuration. On peut utiliser le fichier `flake.log`
|
||||||
|
|
||||||
|
- Permet de configurer facilement notre propre configuration comme depuis les dotfiles
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
Pour le moment, flake est encore expérimental donc il faut l'activer manuellement.
|
||||||
|
|
||||||
|
/etc/nixos/configuration.nix
|
||||||
|
```nix
|
||||||
|
[...]
|
||||||
|
# BEGIN: Add flake feature TODO: Remove when not experimental
|
||||||
|
nix = {
|
||||||
|
package = pkgs.nixFlakes;
|
||||||
|
extraOptions = "experimental-features = nix-command flakes";
|
||||||
|
};
|
||||||
|
# END: Add flake feature
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration initial
|
||||||
|
|
||||||
|
Génére le fichier `flake.nix`
|
||||||
|
```bash
|
||||||
|
nix flake init
|
||||||
|
```
|
||||||
|
|
||||||
|
`flake.nix`
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
description = "A very basic flake";
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs }: {
|
||||||
|
|
||||||
|
packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
|
||||||
|
|
||||||
|
packages.x86_64-linux.default = self.packages.x86_64-linux.hello;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Structure
|
||||||
|
|
||||||
|
#### Inputs
|
||||||
|
|
||||||
|
Défini l'ensemble des dépendances utilisées dans le `flake`
|
||||||
|
|
||||||
|
```nix
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Outputs
|
||||||
|
|
||||||
|
Récupère les inputs dans la fonction en paramètre
|
||||||
|
- Permet de configurer ce que l'on a importé.
|
||||||
|
- Peut configurer les packages, configurations, modules, ...
|
||||||
|
|
||||||
|
```nix
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
lib = nixpkgs.lib;
|
||||||
|
in {
|
||||||
|
nixosConfigurations = {
|
||||||
|
# <hostname> specified with
|
||||||
|
# `nixos-rebuild [build/switch] --flake .#<hostname>`
|
||||||
|
<hostname> = lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
modules = [ ./configuration.nix ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
**!!! Inutile si on utilise Flakes et que l'on install home-manager avec**
|
||||||
|
|
||||||
*sudo si l'on souhaite utiliser le module NixOS depuis /etc/nixos/configuration.nix*
|
*sudo si l'on souhaite utiliser le module NixOS depuis /etc/nixos/configuration.nix*
|
||||||
```bash
|
```bash
|
||||||
nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
|
nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
|
||||||
|
@ -23,6 +25,8 @@ Relancer la session pour reload les channels pour le user courant.
|
||||||
nix-shell '<home-manager>' -A install
|
nix-shell '<home-manager>' -A install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
$HOME/.config/nixpkgs/home.nix
|
$HOME/.config/nixpkgs/home.nix
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
|
|
27
flake.lock
Normal file
27
flake.lock
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1675183161,
|
||||||
|
"narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
24
flake.nix
Normal file
24
flake.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
description = "A very basic flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
lib = nixpkgs.lib;
|
||||||
|
in {
|
||||||
|
nixosConfigurations = {
|
||||||
|
nixos-desktop = lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
modules = [ ./configuration.nix ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue