Compare commits

...

7 Commits

Author SHA1 Message Date
e74a1825d9 backport from master 2017-03-02 19:48:11 +01:00
Yves Dubromelle
b47c6807d1 activation nix-serve pour les serveurs online 2017-03-02 18:56:05 +01:00
Yves Dubromelle
a4728792b2 les noms pour les machines dubro n'était pas dans config-generator 2017-03-02 18:51:14 +01:00
Yves Dubromelle
4c4c2fed3e fix: le nom de rollo n'était pas défini 2017-03-02 18:49:07 +01:00
464da39592 glances en python 3 refuse de compiler. Il reste celui en python2 2017-03-02 14:56:49 +01:00
963c818875 claws-mail: désactivation du plugin pour voir les mails en HTML
* plusieurs failles de sécurité
* option en commentaire pour l'activer quand même
2017-03-02 14:47:03 +01:00
Yves Dubromelle
2f99508331 ajout todo sur config-generator 2017-03-02 00:09:56 +01:00
4 changed files with 196 additions and 7 deletions

184
README.md
View File

@@ -1,18 +1,45 @@
# nixos-template-base # nixos-template-base
Version de nixos supportée : NixOs 16.09 Versions de NixOS supportées :
* NixOS 16.09
* 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). 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. Actuellement, les scripts contiennent un peu de configuration spécifique pour les machines des mainteneurs.
# Lien pour install sur machine distante # Notes de mise-à-jour
## pour le passage de 16.09 à unstable
* https://nixos.org/wiki/How_to_install_NixOS_from_Linux#Installing_through_a_chroot * mettre à jour tous les dépôts
* https://github.com/NixOS/nixpkgs/issues/13305 * changer la branche de base vers `nixos-unstable`
* changer la declaration de la machine dans `configuration.nix`
# Notes pour l'upgrade de 16.03 vers 16.09 ~~~
networking.hostName = "<bidule>";
~~~
devient
~~~
r6d.computers.is<bidule> = true;
~~~
* mettre à jour le channel
~~~
nix-channel --add https://nixos.org/channels/nixos-unstable nixos
nix-channel --update
~~~
* faire la mise à jour
~~~
make
~~~
## pour le passage de 16.03 à 16.09
* mettre le dépôt base sur la branche upgrade-16.09 * mettre le dépôt base sur la branche upgrade-16.09
* changer le channel nixos : ```nix-channel --add https://nixos.org/channels/nixos-16.09 nixos``` * changer le channel nixos : ```nix-channel --add https://nixos.org/channels/nixos-16.09 nixos```
@@ -41,3 +68,150 @@ Pour résoudre les soucis d'upgrade, il est conseillé :
* d'ajouter `vim` aux paquets * d'ajouter `vim` aux paquets
* de réactiver petit à petit les lignes désactivées * de réactiver petit à petit les lignes désactivées
# Installation sur machine chez online.net
* https://nixos.org/wiki/Install_NixOS_on_Online.Net
* https://nixos.org/wiki/Install_NixOS_on_Linode
## Installation selon config online
* commander serveur
* lancer la procédure d'installation avec ubuntu LTS 64bits
* partitionner le disque avec l'interface web
* lancer l'installation de l'os.
* attendre que la procédure standard d'installation d'online ait terminée
* lorsque l'install est finie, dans l'onglet "Etat" se trouve l'option "Secours"
## Transformation en NixOS
* relancer la machine en mode "Secours"
* choisir un linux 64bits (préférence pour ubuntu LTS)
* le système de boot donne des identifiants SSH pour le connecter à la machine
* se connecter à la machine
* passer en root
~~~
sudo su -
~~~
* formater les partitions
~~~
mkfs.ext4 -L nixos /dev/sda1
swapoff -a
mkswap /dev/sda2
swapon -a
~~~
* monter les partitions dans /mnt
~~~
mount /dev/sda1 /mnt/
mkdir /mnt/etc/
mkdir /etc/nixos
mkdir /mnt/nix
mount --bind /mnt/nix/ /nix
~~~
* installer les paquets nécessaires
~~~
apt-get install bzip2 git byobu htop glances
~~~
* création d'utilisateur (n'importe quil mot de passe)
~~~
adduser nix
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
~~~
* mise-à-jour des certificats
~~~
update-ca-certificates
~~~
* installer nix
~~~
chown -R nix /nix
su - nix
bash <(curl https://nixos.org/nix/install)
exit
~~~
* créer un profil nix pour root & un channel
~~~
. ~nix/.nix-profile/etc/profile.d/nix.sh
nix-channel --remove nixpkgs
nix-channel --add http://nixos.org/channels/nixos-unstable nixos
nix-channel --update
~~~
* installer un editeur de texte
~~~
nix-env -i vim_configurable
~~~
* installation de nixos-install
~~~
cat <<EOF > /root/configuration.nix
{ fileSystems."/" = {};
boot.loader.grub.enable = false;
}
EOF
export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos
export NIXOS_CONFIG=/root/configuration.nix
nix-env -i -A config.system.build.nixos-install \
-A config.system.build.nixos-option \
-A config.system.build.nixos-generate-config \
-f "<nixos>"
~~~
* configuration de 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
~~~
ssh-keygen -t ed25519
cp ~/.ssh/id_ed25519* /mnt/etc/nixos/
git clone <>
git submodule init
git submodule update
~~~
* monter /etc/nixos vers /mnt/etc/nixos pour que la config clonée fonctionne
~~~
mount --bind /mnt/etc/nixos/ /etc/nixos/
~~~
* mettre à jour la configuration matérielle
~~~
export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos
nixos-generate-config --root /mnt
~~~
* vérifier le /mnt/etc/nixos/configuration.nix
notamment le périphérique utilisé par grub
* installer le système sur le disque
~~~
unset NIXOS_CONFIG
nixos-install
~~~

View File

@@ -9,6 +9,7 @@ let
in in
{ {
# TODO: ménage
###### interface ###### interface
options = { options = {
@@ -225,6 +226,8 @@ in
r6d.config-generator = { r6d.config-generator = {
docker = true; docker = true;
radicale = true; radicale = true;
nix-serve-client = true;
nix-serve-server = true;
tincAddress = "192.168.12.6/24"; tincAddress = "192.168.12.6/24";
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
@@ -258,6 +261,7 @@ in
}) })
(mkIf comp.isLatitude { (mkIf comp.isLatitude {
networking.hostName = "latitude.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isHome = true; isHome = true;
@@ -277,6 +281,7 @@ in
}; };
}) })
(mkIf comp.isMonstre { (mkIf comp.isMonstre {
networking.hostName = "monstre.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isServer = true; isServer = true;
@@ -296,6 +301,7 @@ in
}; };
}) })
(mkIf comp.isNeoNomade{ (mkIf comp.isNeoNomade{
networking.hostName = "neo-nomade.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isHome = true; isHome = true;
@@ -314,6 +320,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.
r6d.profiles.isDubronetwork = true; r6d.profiles.isDubronetwork = true;
r6d.config-generator = { r6d.config-generator = {
@@ -353,6 +360,7 @@ in
}; };
}) })
(mkIf comp.isRollo { (mkIf comp.isRollo {
networking.hostName = "rollo.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isServer = true; isServer = true;
@@ -363,6 +371,8 @@ in
fail2ban = true; fail2ban = true;
mailboxes = true; mailboxes = true;
murmur = true; murmur = true;
nix-serve-client = true;
nix-serve-server = true;
tincAddress = "192.168.12.5/24"; tincAddress = "192.168.12.5/24";
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr

View File

@@ -40,7 +40,7 @@ environment.systemPackages = with pkgs; [
nixpkgs.config.packageOverrides = pkgs: { nixpkgs.config.packageOverrides = pkgs: {
clawsMail = pkgs.clawsMail.override { clawsMail = pkgs.clawsMail.override {
enablePluginFancy = true; enablePluginFancy = false; # nécessite wekitgtk qui est troué
enablePluginPdf = true; enablePluginPdf = true;
enablePluginRavatar = true; enablePluginRavatar = true;
enablePluginSmime = true; enablePluginSmime = true;
@@ -49,4 +49,9 @@ environment.systemPackages = with pkgs; [
}; };
mumble = pkgs.mumble.override { pulseSupport = true; }; mumble = pkgs.mumble.override { pulseSupport = true; };
}; };
#nixpkgs.config.permittedInsecurePackages = [
# "webkitgtk-2.4.11" # pour que le plugin fancy de claws-mail fonctionne
#];
} }

View File

@@ -48,7 +48,7 @@ in
pinentry # pour taper les mots de passe gpg pinentry # pour taper les mots de passe gpg
psmisc # fournis les utilitaires comme killall, fuser, pstree psmisc # fournis les utilitaires comme killall, fuser, pstree
python # python -- python -m SimpleHTTPServer 8000 python # python -- python -m SimpleHTTPServer 8000
python34Packages.glances # monitoring #python34Packages.glances # monitoring
pwgen # générateur de mot de passe pwgen # générateur de mot de passe
rtorrent # TODO outil de téléchargement de torrent & magnet rtorrent # TODO outil de téléchargement de torrent & magnet
tmux # nécessaire pour byobu tmux # nécessaire pour byobu