Compare commits
5 Commits
93254f45c0
...
2017-01-26
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ce1cae293c | ||
|
|
1c58705adf | ||
|
|
1cc773c034 | ||
|
|
58c32c79fb | ||
| d1a5228a92 |
184
README.md
184
README.md
@@ -1,45 +1,18 @@
|
|||||||
# nixos-template-base
|
# nixos-template-base
|
||||||
|
|
||||||
Versions de NixOS supportées :
|
Version de nixos supportée : NixOs 16.09
|
||||||
* 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.
|
||||||
|
|
||||||
# Notes de mise-à-jour
|
# Lien pour install sur machine distante
|
||||||
## pour le passage de 16.09 à unstable
|
|
||||||
|
|
||||||
* mettre à jour tous les dépôts
|
* https://nixos.org/wiki/How_to_install_NixOS_from_Linux#Installing_through_a_chroot
|
||||||
* changer la branche de base vers `nixos-unstable`
|
* https://github.com/NixOS/nixpkgs/issues/13305
|
||||||
* 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```
|
||||||
@@ -68,150 +41,3 @@ 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
|
|
||||||
~~~
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,11 +13,6 @@ mkIf cfg.nix-serve-client {
|
|||||||
# Cache http pour le store
|
# Cache http pour le store
|
||||||
requireSignedBinaryCaches = false;
|
requireSignedBinaryCaches = false;
|
||||||
binaryCaches = [
|
binaryCaches = [
|
||||||
#(mkIf (computers.isRollo) "http://ocean.grudu.net:5001/")
|
|
||||||
(mkIf (computers.isRollo) "http://192.168.12.6:5000/")
|
|
||||||
#(mkIf (computers.isOcean) "http://rollo.grudu.net:5001/")
|
|
||||||
(mkIf (computers.isOcean) "http://192.168.12.5:5000/")
|
|
||||||
|
|
||||||
(mkIf (profiles.isDubronetwork && (! computers.isPedro) && (! computers.isRollo)) "http://nix-cache.dubronetwork.fr:5001")
|
(mkIf (profiles.isDubronetwork && (! computers.isPedro) && (! computers.isRollo)) "http://nix-cache.dubronetwork.fr:5001")
|
||||||
|
|
||||||
(mkIf profiles.isPrunetwork "https://cache.nixos.org/")
|
(mkIf profiles.isPrunetwork "https://cache.nixos.org/")
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -85,7 +85,6 @@ in
|
|||||||
};
|
};
|
||||||
#* Utilisé pour avoir des raccourcis de machine
|
#* Utilisé pour avoir des raccourcis de machine
|
||||||
r6d.computers = {
|
r6d.computers = {
|
||||||
isHydra = mkEnableOption "Identification du nom de machine.";
|
|
||||||
isLatitude = mkEnableOption "Identification du nom de machine.";
|
isLatitude = mkEnableOption "Identification du nom de machine.";
|
||||||
isMonstre = mkEnableOption "Identification du nom de machine.";
|
isMonstre = mkEnableOption "Identification du nom de machine.";
|
||||||
isNeoNomade = mkEnableOption "Identification du nom de machine.";
|
isNeoNomade = mkEnableOption "Identification du nom de machine.";
|
||||||
@@ -106,7 +105,6 @@ in
|
|||||||
{
|
{
|
||||||
r6d.config-generator.enable = true;
|
r6d.config-generator.enable = true;
|
||||||
r6d.computers = {
|
r6d.computers = {
|
||||||
isHydra = host == "hydra.prunetwork.fr";
|
|
||||||
isLatitude = host == "latitude.dubronetwork.fr";
|
isLatitude = host == "latitude.dubronetwork.fr";
|
||||||
isMonstre = host == "monstre.dubronetwork.fr";
|
isMonstre = host == "monstre.dubronetwork.fr";
|
||||||
isNeoNomade = host == "neo-nomade.dubronetwork.fr";
|
isNeoNomade = host == "neo-nomade.dubronetwork.fr";
|
||||||
@@ -209,23 +207,6 @@ in
|
|||||||
|
|
||||||
|
|
||||||
## Affectation des profils aux machines
|
## Affectation des profils aux machines
|
||||||
(mkIf comp.isHydra {
|
|
||||||
r6d.profiles = {
|
|
||||||
isPrunetwork = true;
|
|
||||||
isServer = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
r6d.config-generator = {
|
|
||||||
docker = true;
|
|
||||||
hydra-builder = true;
|
|
||||||
hydra-core = true;
|
|
||||||
tincAddress = "192.168.12.8/24";
|
|
||||||
tincExtraConfig = ''
|
|
||||||
ConnectTo = rollo_dubronetwork_fr
|
|
||||||
ConnectTo = ocean_prunetwork_fr
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(mkIf comp.isOcean {
|
(mkIf comp.isOcean {
|
||||||
r6d.profiles = {
|
r6d.profiles = {
|
||||||
isPrunetwork = true;
|
isPrunetwork = true;
|
||||||
@@ -235,8 +216,6 @@ 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
|
||||||
@@ -367,8 +346,6 @@ 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
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ mkIf true {
|
|||||||
exfat # Pour monter les FAT avec Fuse
|
exfat # Pour monter les FAT avec Fuse
|
||||||
hubicfuse # montage hubic
|
hubicfuse # montage hubic
|
||||||
ntfs3g # ntfs
|
ntfs3g # ntfs
|
||||||
|
squashfsTools # squashfs
|
||||||
sshfsFuse # ssh
|
sshfsFuse # ssh
|
||||||
|
|
||||||
## Gestion de FS
|
## Gestion de FS
|
||||||
@@ -43,6 +44,7 @@ mkIf true {
|
|||||||
|
|
||||||
## Exploitation FS
|
## Exploitation FS
|
||||||
inotify-tools # être notifié lorsque le contenu d'un répertoire change
|
inotify-tools # être notifié lorsque le contenu d'un répertoire change
|
||||||
|
detox # The detox utility renames files to make them easier to work with.
|
||||||
duff # outil de recherche de fichiers en doublons
|
duff # outil de recherche de fichiers en doublons
|
||||||
rdfind # recherche de fichiers doublons pour remplacement par hard/soft link
|
rdfind # recherche de fichiers doublons pour remplacement par hard/soft link
|
||||||
|
|
||||||
|
|||||||
@@ -22,5 +22,10 @@ mkIf cfg.developpement-haskell {
|
|||||||
|
|
||||||
# Application perso
|
# Application perso
|
||||||
haskellPackages.hahp
|
haskellPackages.hahp
|
||||||
|
|
||||||
|
# Application
|
||||||
|
haskellPackages.autoproc # ? procmail
|
||||||
|
haskellPackages.darcs # Gestionnaire de version éponyme
|
||||||
|
haskellPackages.turtle # genre shell-scripting
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ mkIf cfg.hydra-core {
|
|||||||
### Machines connues
|
### Machines connues
|
||||||
|
|
||||||
programs.ssh.knownHosts = {
|
programs.ssh.knownHosts = {
|
||||||
"hydra.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMhXFlj2oyArVyEwEwDxNXthB/JljHkq+UhTLxbekkMB";
|
|
||||||
"monstre.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTTrLhq1Cwm0rpnwEIxSLqVrJWZnt+/9dt+SKd8NiIc";
|
"monstre.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTTrLhq1Cwm0rpnwEIxSLqVrJWZnt+/9dt+SKd8NiIc";
|
||||||
"pedro.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7fjo2ysLqlfSo6BKnc6I6m1ayoPrbwEEyTKZmUzsOD";
|
"pedro.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7fjo2ysLqlfSo6BKnc6I6m1ayoPrbwEEyTKZmUzsOD";
|
||||||
"ocean.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCaRuTl8iCTUE4XInOpkSlwQj5Re4w4Iq+gNIlJe8pA";
|
"ocean.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCaRuTl8iCTUE4XInOpkSlwQj5Re4w4Iq+gNIlJe8pA";
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ mkIf profiles.isDesktop {
|
|||||||
hardware.pulseaudio = {
|
hardware.pulseaudio = {
|
||||||
enable = true;
|
enable = true;
|
||||||
support32Bit = true;
|
support32Bit = true;
|
||||||
|
daemon.config = { flat-volumes = "no"; };
|
||||||
};
|
};
|
||||||
environment.etc."pulse/daemon.conf".text = "flat-volumes = no";
|
#environment.etc."pulse/daemon.conf".text = "flat-volumes = no";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user