Compare commits
13 Commits
2017-07-05
...
2017-09-04
| Author | SHA1 | Date | |
|---|---|---|---|
| eabecd5b69 | |||
| 73b9eab551 | |||
| 7329e54d04 | |||
| fc18c2a6c5 | |||
| 1458c750f3 | |||
| 0b6968338f | |||
| dc24c48cfd | |||
| b1a19b811d | |||
| dfe2bde371 | |||
| b8106deb18 | |||
| cc2f1c33af | |||
| 19bd8fbfbc | |||
|
|
630217ce02 |
1
Makefile
1
Makefile
@@ -15,6 +15,7 @@ clean-total:
|
|||||||
$(TIME) nix-collect-garbage -d
|
$(TIME) nix-collect-garbage -d
|
||||||
|
|
||||||
clean-log:
|
clean-log:
|
||||||
|
journalctl --flush --rotate
|
||||||
journalctl --vacuum-size=1G
|
journalctl --vacuum-size=1G
|
||||||
|
|
||||||
full-auto: submodules-update upgrade clean optimise
|
full-auto: submodules-update upgrade clean optimise
|
||||||
|
|||||||
48
README.md
48
README.md
@@ -1,17 +1,21 @@
|
|||||||
# nixos-template-base
|
# nixos-template-base
|
||||||
|
|
||||||
Versions de NixOS supportées :
|
Versions de NixOS supportées :
|
||||||
* NixOS 16.09
|
|
||||||
* NixOS unstable
|
* NixOS unstable
|
||||||
|
|
||||||
Ce dépôt stocke une configuration générique des machines.
|
Ce dépôt stocke une configuration générique des machines.
|
||||||
Une recette dite "config-generator" adapte la configuration selon le nom de la machine (FQDN).
|
|
||||||
|
|
||||||
Actuellement, les scripts contiennent un peu de configuration spécifique pour les machines des mainteneurs.
|
~~Une recette dite "config-generator" adapte la configuration selon le nom de la machine (FQDN).~~
|
||||||
|
|
||||||
|
~~Actuellement, les scripts contiennent un peu de configuration spécifique pour les machines des mainteneurs.~~
|
||||||
|
|
||||||
|
# Liens
|
||||||
|
* http://howoldis.herokuapp.com/ pour savoir de quand datent les différentes releases de NixOS
|
||||||
|
* https://repology.org/repository/nix_unstable/problems pour lister les paquets avec problèmes
|
||||||
|
|
||||||
# Notes de mise-à-jour
|
# Notes de mise-à-jour
|
||||||
|
|
||||||
## pour l'utilisation de l'annuaire (2017-04-28)
|
## pour l'utilisation de l'annuaire (à partir de 2017-04-28)
|
||||||
|
|
||||||
* faire les mises à jour de l'OS
|
* faire les mises à jour de l'OS
|
||||||
* commiter & pusher l'état des dépôts (au cas où). Pour les différents dépôts `git a`, `git commit` puis `make tag push`
|
* commiter & pusher l'état des dépôts (au cas où). Pour les différents dépôts `git a`, `git commit` puis `make tag push`
|
||||||
@@ -108,13 +112,13 @@ Pour résoudre les soucis d'upgrade, il est conseillé :
|
|||||||
* se connecter à la machine
|
* se connecter à la machine
|
||||||
* passer en root
|
* passer en root
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
sudo su -
|
sudo su -
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
* formater les partitions
|
* formater les partitions
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
mkfs.ext4 -L nixos /dev/sda1
|
mkfs.ext4 -L nixos /dev/sda1
|
||||||
swapoff -a
|
swapoff -a
|
||||||
mkswap /dev/sda2
|
mkswap /dev/sda2
|
||||||
@@ -123,24 +127,28 @@ swapon -a
|
|||||||
|
|
||||||
* monter les partitions dans /mnt
|
* monter les partitions dans /mnt
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
mount /dev/sda1 /mnt/
|
mount /dev/sda1 /mnt/
|
||||||
mkdir /mnt/etc/
|
mkdir /mnt/etc/
|
||||||
|
mkdir /mnt/etc/nixos
|
||||||
mkdir /etc/nixos
|
mkdir /etc/nixos
|
||||||
mkdir /mnt/nix
|
mkdir /mnt/nix
|
||||||
|
mkdir /nix
|
||||||
mount --bind /mnt/nix/ /nix
|
mount --bind /mnt/nix/ /nix
|
||||||
|
mkdir /mnt/tmp
|
||||||
|
mount --bind /mnt/tmp /tmp
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
* installer les paquets nécessaires
|
* installer les paquets nécessaires
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
apt-get install bzip2 git byobu htop glances
|
apt-get install bzip2 git byobu htop glances
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
* création d'utilisateur (n'importe quil mot de passe)
|
* création d'utilisateur (n'importe quil mot de passe)
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
adduser nix
|
adduser nix
|
||||||
groupadd -r nixbld
|
groupadd -r nixbld
|
||||||
for n in $(seq 1 10); do useradd -c "Nix build user $n" -d /var/empty -g nixbld -G nixbld -M -N -r -s "$(which nologin)" nixbld$n; done
|
for n in $(seq 1 10); do useradd -c "Nix build user $n" -d /var/empty -g nixbld -G nixbld -M -N -r -s "$(which nologin)" nixbld$n; done
|
||||||
@@ -148,14 +156,14 @@ for n in $(seq 1 10); do useradd -c "Nix build user $n" -d /var/empty -g nixbld
|
|||||||
|
|
||||||
* mise-à-jour des certificats
|
* mise-à-jour des certificats
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
update-ca-certificates
|
update-ca-certificates
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
* installer nix
|
* installer nix
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
chown -R nix /nix
|
chown -R nix /nix /tmp
|
||||||
su - nix
|
su - nix
|
||||||
bash <(curl https://nixos.org/nix/install)
|
bash <(curl https://nixos.org/nix/install)
|
||||||
exit
|
exit
|
||||||
@@ -163,22 +171,22 @@ exit
|
|||||||
|
|
||||||
* créer un profil nix pour root & un channel
|
* créer un profil nix pour root & un channel
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
. ~nix/.nix-profile/etc/profile.d/nix.sh
|
. ~nix/.nix-profile/etc/profile.d/nix.sh
|
||||||
nix-channel --remove nixpkgs
|
nix-channel --remove nixpkgs
|
||||||
nix-channel --add http://nixos.org/channels/nixos-unstable nixos
|
nix-channel --add https://nixos.org/channels/nixos-unstable nixos
|
||||||
nix-channel --update
|
nix-channel --update
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
* installer un editeur de texte
|
* installer un editeur de texte
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
nix-env -i vim_configurable
|
nix-env -i vim_configurable
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
* installation de nixos-install
|
* installation de nixos-install
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
cat <<EOF > /root/configuration.nix
|
cat <<EOF > /root/configuration.nix
|
||||||
{ fileSystems."/" = {};
|
{ fileSystems."/" = {};
|
||||||
boot.loader.grub.enable = false;
|
boot.loader.grub.enable = false;
|
||||||
@@ -197,7 +205,7 @@ nix-env -i -A config.system.build.nixos-install \
|
|||||||
si la machine existe déjà, cloner le dépôt dans /mnt/etc/nixos
|
si la machine existe déjà, cloner le dépôt dans /mnt/etc/nixos
|
||||||
pour cela, créer clef ssh et l'ajouter sur la forge
|
pour cela, créer clef ssh et l'ajouter sur la forge
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
ssh-keygen -t ed25519
|
ssh-keygen -t ed25519
|
||||||
cp ~/.ssh/id_ed25519* /mnt/etc/nixos/
|
cp ~/.ssh/id_ed25519* /mnt/etc/nixos/
|
||||||
|
|
||||||
@@ -208,13 +216,13 @@ git submodule update
|
|||||||
|
|
||||||
* monter /etc/nixos vers /mnt/etc/nixos pour que la config clonée fonctionne
|
* monter /etc/nixos vers /mnt/etc/nixos pour que la config clonée fonctionne
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
mount --bind /mnt/etc/nixos/ /etc/nixos/
|
mount --bind /mnt/etc/nixos/ /etc/nixos/
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
* mettre à jour la configuration matérielle
|
* mettre à jour la configuration matérielle
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos
|
export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos
|
||||||
nixos-generate-config --root /mnt
|
nixos-generate-config --root /mnt
|
||||||
~~~
|
~~~
|
||||||
@@ -225,7 +233,7 @@ notamment le périphérique utilisé par grub
|
|||||||
|
|
||||||
* installer le système sur le disque
|
* installer le système sur le disque
|
||||||
|
|
||||||
~~~
|
~~~bash
|
||||||
unset NIXOS_CONFIG
|
unset NIXOS_CONFIG
|
||||||
nixos-install
|
nixos-install
|
||||||
~~~
|
~~~
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ mkIf true {
|
|||||||
ntp
|
ntp
|
||||||
powerline-fonts
|
powerline-fonts
|
||||||
powertop
|
powertop
|
||||||
python27Packages.ansible2
|
#python27Packages.ansible2
|
||||||
python27Packages.glances
|
python27Packages.glances
|
||||||
sysstat # pour la commande "iostat -x -1" de monitoring d'activité disque
|
sysstat # pour la commande "iostat -x -1" de monitoring d'activité disque
|
||||||
usbutils
|
usbutils
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ mkIf flags.developpement-haskell {
|
|||||||
# Haskell lib
|
# Haskell lib
|
||||||
autoproc # ? procmail
|
autoproc # ? procmail
|
||||||
darcs # gestionnaire de version éponyme
|
darcs # gestionnaire de version éponyme
|
||||||
#ghc-mod # outil d'analyse de code haskell utilisé par IDE
|
ghc-mod # outil d'analyse de code haskell utilisé par IDE
|
||||||
hindent # indentation code
|
hindent # indentation code
|
||||||
hlint # qualite de code, analyse statique de code + astuces & bonnes pratiques
|
hlint # qualite de code, analyse statique de code + astuces & bonnes pratiques
|
||||||
postgrest # mapper HTTP <-> PostgreSQL
|
postgrest # mapper HTTP <-> PostgreSQL
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ in
|
|||||||
#* Utilisé pour avoir des raccourcis de machine
|
#* Utilisé pour avoir des raccourcis de machine
|
||||||
r6d.computers = {
|
r6d.computers = {
|
||||||
isNomade = mkEnableOption "Identification du nom de machine.";
|
isNomade = mkEnableOption "Identification du nom de machine.";
|
||||||
isRollo = mkEnableOption "Identification du nom de machine.";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -31,18 +30,6 @@ in
|
|||||||
config = mkMerge
|
config = mkMerge
|
||||||
[
|
[
|
||||||
## Définition des profils génériques
|
## Définition des profils génériques
|
||||||
(mkIf (pfl.isServer && !comp.isMonstre) {
|
|
||||||
r6d.config-generator = {
|
|
||||||
#database_postgres = true;
|
|
||||||
dns_autorite = true;
|
|
||||||
#dns_resolveur = true;
|
|
||||||
# inutile d'exposer la conf complète du serveur par le store tant qu'il n'y a pas de protection complémentaire - utilisation SSH ?
|
|
||||||
#nix-serve-server = true;
|
|
||||||
smokeping = true;
|
|
||||||
|
|
||||||
#rabbitmq = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
# /!\ PAS un serveur
|
# /!\ PAS un serveur
|
||||||
(mkIf (!pfl.isServer || comp.isMonstre) {
|
(mkIf (!pfl.isServer || comp.isMonstre) {
|
||||||
r6d.config-generator = {
|
r6d.config-generator = {
|
||||||
@@ -54,6 +41,7 @@ in
|
|||||||
|
|
||||||
# Dubro Vivo - St Malo
|
# Dubro Vivo - St Malo
|
||||||
#tincAddress = "192.168.12.8/24";
|
#tincAddress = "192.168.12.8/24";
|
||||||
|
|
||||||
(mkIf comp.isNomade{
|
(mkIf comp.isNomade{
|
||||||
networking.hostName = "nomade.dubronetwork.fr"; # Define your hostname.
|
networking.hostName = "nomade.dubronetwork.fr"; # Define your hostname.
|
||||||
r6d.profiles.isDubronetwork = true;
|
r6d.profiles.isDubronetwork = true;
|
||||||
@@ -62,28 +50,5 @@ in
|
|||||||
laptop = true;
|
laptop = true;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
(mkIf comp.isRollo {
|
|
||||||
networking.hostName = "rollo.dubronetwork.fr"; # Define your hostname.
|
|
||||||
r6d.profiles = {
|
|
||||||
isDubronetwork = true;
|
|
||||||
isServer = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
r6d.config-generator = {
|
|
||||||
dovecot = true;
|
|
||||||
fail2ban = true;
|
|
||||||
mailboxes = true;
|
|
||||||
murmur = true;
|
|
||||||
nix-serve-client = true;
|
|
||||||
nix-serve-server = true;
|
|
||||||
tincAddress = "192.168.12.5/24";
|
|
||||||
tincExtraConfig = ''
|
|
||||||
ConnectTo = hydra_prunetwork_fr
|
|
||||||
ConnectTo = ocean_prunetwork_fr
|
|
||||||
'';
|
|
||||||
virtualbox = true;
|
|
||||||
znc = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ mkIf true {
|
|||||||
"net.ipv6.conf.default.temp_valid_lft" = 3600; # 1 heure
|
"net.ipv6.conf.default.temp_valid_lft" = 3600; # 1 heure
|
||||||
"net.ipv6.conf.default.use_tempaddr" = 2; # activé
|
"net.ipv6.conf.default.use_tempaddr" = 2; # activé
|
||||||
|
|
||||||
|
# Activation du routage
|
||||||
"net.ipv6.conf.all.forwarding" = true;
|
"net.ipv6.conf.all.forwarding" = true;
|
||||||
"net.ipv6.conf.default.forwarding" = true;
|
"net.ipv6.conf.default.forwarding" = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ mkIf true {
|
|||||||
127.0.0.1 ${config.networking.hostName}
|
127.0.0.1 ${config.networking.hostName}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
# Activation du routage
|
||||||
boot.kernel.sysctl = {
|
boot.kernel.sysctl = {
|
||||||
"net.ipv4.conf.all.forwarding" = true;
|
"net.ipv4.conf.all.forwarding" = true;
|
||||||
"net.ipv4.conf.default.forwarding" = true;
|
"net.ipv4.conf.default.forwarding" = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user