Compare commits

..

1 Commits

12 changed files with 10 additions and 250 deletions

View File

@@ -25,9 +25,6 @@ optimise:
rebuild-switch: rebuild-switch:
nixos-rebuild switch --fallback --show-trace nixos-rebuild switch --fallback --show-trace
show-roots:
nix-store --gc --print-roots
store-repair: store-repair:
nix-store --verify --check-contents --repair nix-store --verify --check-contents --repair
@@ -48,7 +45,7 @@ push: submodules-push
submodules-update: submodules-update:
#git submodule update --remote #git submodule update --remote
#$(GSF) git co master $(GSF) git co master
$(GSF) git ff $(GSF) git ff
$(GSF) git gc --auto $(GSF) git gc --auto

184
README.md
View File

@@ -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
~~~

View File

@@ -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/")

View File

@@ -19,13 +19,9 @@ mkIf cfg.nix-serve-server {
# Réseau # Réseau
networking.firewall = { networking.firewall = {
allowedTCPPorts = [ allowedTCPPorts = [
#5000 # ouvert sur tinc 5000
]; ];
allowedUDPPorts = [ allowedUDPPorts = [
]; ];
extraCommands = ''
iptables -A INPUT -i tinc.grudunet -p tcp --dport 5000 -j ACCEPT
ip6tables -A INPUT -i tinc.grudunet -p tcp --dport 5000 -j ACCEPT
'';
}; };
} }

File diff suppressed because one or more lines are too long

View File

@@ -49,9 +49,8 @@ in
hydra-builder = mkEnableOption "Profil pour une machine qui compile pour hydra."; hydra-builder = mkEnableOption "Profil pour une machine qui compile pour hydra.";
hydra-core = mkEnableOption "Profil pour un serveur hydra."; hydra-core = mkEnableOption "Profil pour un serveur hydra.";
kibana = mkEnableOption "Profil pour activer le service kibana."; kibana = mkEnableOption "Profil pour activer le service kibana.";
jetbrains-licensed = mkEnableOption "Profil pour la suite de développement Jetbrains payante (sous-ensemble).";
jeux = mkEnableOption "Profil pour les jeux vidéos."; jeux = mkEnableOption "Profil pour les jeux vidéos.";
laptop = mkEnableOption "Profil pour les outils spécifiques aux ordinateurs portables."; laptop = mkEnableOption "Profil pour les outils spécifiques aux ordinateurs portables..";
locate = mkEnableOption "Profil pour activer la fonction locate."; locate = mkEnableOption "Profil pour activer la fonction locate.";
mailboxes = mkEnableOption "Profil pour stocker les mails dans des boîtes aux lettres."; mailboxes = mkEnableOption "Profil pour stocker les mails dans des boîtes aux lettres.";
murmur = mkEnableOption "Profil pour activer un serveur Mumble (murmur)"; murmur = mkEnableOption "Profil pour activer un serveur Mumble (murmur)";
@@ -85,7 +84,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 +104,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 +206,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 +215,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
@@ -273,7 +251,6 @@ in
}; };
r6d.config-generator = { r6d.config-generator = {
jetbrains-licensed = true;
laptop = true; laptop = true;
tincAddress = "192.168.12.2/24"; tincAddress = "192.168.12.2/24";
tincExtraConfig = '' tincExtraConfig = ''
@@ -281,7 +258,6 @@ in
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
nix-serve-server = true;
}; };
}) })
(mkIf comp.isMonstre { (mkIf comp.isMonstre {
@@ -294,7 +270,6 @@ in
fail2ban = true; fail2ban = true;
murmur = true; murmur = true;
nix-serve-client = true; nix-serve-client = true;
nix-serve-server = true;
nixStoreProxyCache = true; nixStoreProxyCache = true;
tincAddress = "192.168.12.4/24"; tincAddress = "192.168.12.4/24";
tincExtraConfig = '' tincExtraConfig = ''
@@ -344,8 +319,6 @@ in
}; };
r6d.config-generator = { r6d.config-generator = {
jetbrains-licensed = true;
hydra-core = true;
nix-serve-server = true; nix-serve-server = true;
edition-photo = true; edition-photo = true;
tincAddress = "192.168.12.1/24"; tincAddress = "192.168.12.1/24";
@@ -367,8 +340,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

View File

@@ -18,7 +18,6 @@ mkIf cfg.developpement-haskell {
stack # pour les paquets en LTS de stackage stack # pour les paquets en LTS de stackage
haskellPackages.stylish-haskell # qualité de code haskellPackages.stylish-haskell # qualité de code
haskellPackages.hindent
# Application perso # Application perso
haskellPackages.hahp haskellPackages.hahp

View File

@@ -1,19 +0,0 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.jetbrains-licensed {
# Paquets
environment.systemPackages = with pkgs; [
idea.idea-ultimate
idea.clion
idea.datagrip
idea.pycharm-professional
];
}

View File

@@ -28,7 +28,6 @@ in
./app-developpement.nix # développer des programmes/scripts ./app-developpement.nix # développer des programmes/scripts
./app-developpement-haskell.nix # développer en haskell ./app-developpement-haskell.nix # développer en haskell
./app-developpement-java.nix # développer en java ./app-developpement-java.nix # développer en java
./app-developpement-jetbrains.nix # outils jetbrains
./app-developpement-rust.nix # développer en rust ./app-developpement-rust.nix # développer en rust
./app-docker.nix # activer docker ./app-docker.nix # activer docker
./app-edition-musique.nix # modifier les fichiers musicaux ./app-edition-musique.nix # modifier les fichiers musicaux

View File

@@ -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";

View File

@@ -11,7 +11,6 @@ mkIf true {
# Paquets # Paquets
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
bc
mailutils mailutils
]; ];
@@ -21,7 +20,6 @@ mkIf true {
services.munin-node = { services.munin-node = {
enable = true; enable = true;
}; };
systemd.services.munin-node.serviceConfig.TimeoutStartSec = "3min";
## Munin server -- generate /var/www/munin ## Munin server -- generate /var/www/munin
services.munin-cron = { services.munin-cron = {

View File

@@ -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";
} }