Compare commits
1 Commits
93254f45c0
...
2017-01-20
| Author | SHA1 | Date | |
|---|---|---|---|
| 09f970266e |
5
Makefile
5
Makefile
@@ -25,9 +25,6 @@ optimise:
|
||||
rebuild-switch:
|
||||
nixos-rebuild switch --fallback --show-trace
|
||||
|
||||
show-roots:
|
||||
nix-store --gc --print-roots
|
||||
|
||||
store-repair:
|
||||
nix-store --verify --check-contents --repair
|
||||
|
||||
@@ -48,7 +45,7 @@ push: submodules-push
|
||||
|
||||
submodules-update:
|
||||
#git submodule update --remote
|
||||
#$(GSF) git co master
|
||||
$(GSF) git co master
|
||||
$(GSF) git ff
|
||||
$(GSF) git gc --auto
|
||||
|
||||
|
||||
184
README.md
184
README.md
@@ -1,45 +1,18 @@
|
||||
# nixos-template-base
|
||||
|
||||
Versions de NixOS supportées :
|
||||
* NixOS 16.09
|
||||
* NixOS unstable
|
||||
Version de nixos supportée : NixOs 16.09
|
||||
|
||||
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.
|
||||
|
||||
# Notes de mise-à-jour
|
||||
## pour le passage de 16.09 à unstable
|
||||
# Lien pour install sur machine distante
|
||||
|
||||
* mettre à jour tous les dépôts
|
||||
* changer la branche de base vers `nixos-unstable`
|
||||
* changer la declaration de la machine dans `configuration.nix`
|
||||
* https://nixos.org/wiki/How_to_install_NixOS_from_Linux#Installing_through_a_chroot
|
||||
* https://github.com/NixOS/nixpkgs/issues/13305
|
||||
|
||||
~~~
|
||||
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
|
||||
# Notes pour l'upgrade de 16.03 vers 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```
|
||||
@@ -68,150 +41,3 @@ Pour résoudre les soucis d'upgrade, il est conseillé :
|
||||
* d'ajouter `vim` aux paquets
|
||||
* 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
|
||||
requireSignedBinaryCaches = false;
|
||||
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.isPrunetwork "https://cache.nixos.org/")
|
||||
|
||||
@@ -19,13 +19,9 @@ mkIf cfg.nix-serve-server {
|
||||
# Réseau
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
#5000 # ouvert sur tinc
|
||||
5000
|
||||
];
|
||||
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
@@ -49,9 +49,8 @@ in
|
||||
hydra-builder = mkEnableOption "Profil pour une machine qui compile pour hydra.";
|
||||
hydra-core = mkEnableOption "Profil pour un serveur hydra.";
|
||||
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.";
|
||||
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.";
|
||||
mailboxes = mkEnableOption "Profil pour stocker les mails dans des boîtes aux lettres.";
|
||||
murmur = mkEnableOption "Profil pour activer un serveur Mumble (murmur)";
|
||||
@@ -85,7 +84,6 @@ in
|
||||
};
|
||||
#* Utilisé pour avoir des raccourcis de machine
|
||||
r6d.computers = {
|
||||
isHydra = mkEnableOption "Identification du nom de machine.";
|
||||
isLatitude = mkEnableOption "Identification du nom de machine.";
|
||||
isMonstre = mkEnableOption "Identification du nom de machine.";
|
||||
isNeoNomade = mkEnableOption "Identification du nom de machine.";
|
||||
@@ -106,7 +104,6 @@ in
|
||||
{
|
||||
r6d.config-generator.enable = true;
|
||||
r6d.computers = {
|
||||
isHydra = host == "hydra.prunetwork.fr";
|
||||
isLatitude = host == "latitude.dubronetwork.fr";
|
||||
isMonstre = host == "monstre.dubronetwork.fr";
|
||||
isNeoNomade = host == "neo-nomade.dubronetwork.fr";
|
||||
@@ -209,23 +206,6 @@ in
|
||||
|
||||
|
||||
## 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 {
|
||||
r6d.profiles = {
|
||||
isPrunetwork = true;
|
||||
@@ -235,8 +215,6 @@ in
|
||||
r6d.config-generator = {
|
||||
docker = true;
|
||||
radicale = true;
|
||||
nix-serve-client = true;
|
||||
nix-serve-server = true;
|
||||
tincAddress = "192.168.12.6/24";
|
||||
tincExtraConfig = ''
|
||||
ConnectTo = rollo_dubronetwork_fr
|
||||
@@ -273,7 +251,6 @@ in
|
||||
};
|
||||
|
||||
r6d.config-generator = {
|
||||
jetbrains-licensed = true;
|
||||
laptop = true;
|
||||
tincAddress = "192.168.12.2/24";
|
||||
tincExtraConfig = ''
|
||||
@@ -281,7 +258,6 @@ in
|
||||
ConnectTo = rollo_dubronetwork_fr
|
||||
ConnectTo = ocean_prunetwork_fr
|
||||
'';
|
||||
nix-serve-server = true;
|
||||
};
|
||||
})
|
||||
(mkIf comp.isMonstre {
|
||||
@@ -294,7 +270,6 @@ in
|
||||
fail2ban = true;
|
||||
murmur = true;
|
||||
nix-serve-client = true;
|
||||
nix-serve-server = true;
|
||||
nixStoreProxyCache = true;
|
||||
tincAddress = "192.168.12.4/24";
|
||||
tincExtraConfig = ''
|
||||
@@ -344,8 +319,6 @@ in
|
||||
};
|
||||
|
||||
r6d.config-generator = {
|
||||
jetbrains-licensed = true;
|
||||
hydra-core = true;
|
||||
nix-serve-server = true;
|
||||
edition-photo = true;
|
||||
tincAddress = "192.168.12.1/24";
|
||||
@@ -367,8 +340,6 @@ in
|
||||
fail2ban = true;
|
||||
mailboxes = true;
|
||||
murmur = true;
|
||||
nix-serve-client = true;
|
||||
nix-serve-server = true;
|
||||
tincAddress = "192.168.12.5/24";
|
||||
tincExtraConfig = ''
|
||||
ConnectTo = ocean_prunetwork_fr
|
||||
|
||||
@@ -18,7 +18,6 @@ mkIf cfg.developpement-haskell {
|
||||
stack # pour les paquets en LTS de stackage
|
||||
|
||||
haskellPackages.stylish-haskell # qualité de code
|
||||
haskellPackages.hindent
|
||||
|
||||
# Application perso
|
||||
haskellPackages.hahp
|
||||
|
||||
@@ -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
|
||||
];
|
||||
}
|
||||
@@ -28,7 +28,6 @@ in
|
||||
./app-developpement.nix # développer des programmes/scripts
|
||||
./app-developpement-haskell.nix # développer en haskell
|
||||
./app-developpement-java.nix # développer en java
|
||||
./app-developpement-jetbrains.nix # outils jetbrains
|
||||
./app-developpement-rust.nix # développer en rust
|
||||
./app-docker.nix # activer docker
|
||||
./app-edition-musique.nix # modifier les fichiers musicaux
|
||||
|
||||
@@ -73,7 +73,6 @@ mkIf cfg.hydra-core {
|
||||
### Machines connues
|
||||
|
||||
programs.ssh.knownHosts = {
|
||||
"hydra.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMhXFlj2oyArVyEwEwDxNXthB/JljHkq+UhTLxbekkMB";
|
||||
"monstre.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTTrLhq1Cwm0rpnwEIxSLqVrJWZnt+/9dt+SKd8NiIc";
|
||||
"pedro.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7fjo2ysLqlfSo6BKnc6I6m1ayoPrbwEEyTKZmUzsOD";
|
||||
"ocean.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCaRuTl8iCTUE4XInOpkSlwQj5Re4w4Iq+gNIlJe8pA";
|
||||
|
||||
@@ -11,7 +11,6 @@ mkIf true {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
bc
|
||||
mailutils
|
||||
];
|
||||
|
||||
@@ -21,7 +20,6 @@ mkIf true {
|
||||
services.munin-node = {
|
||||
enable = true;
|
||||
};
|
||||
systemd.services.munin-node.serviceConfig.TimeoutStartSec = "3min";
|
||||
|
||||
## Munin server -- generate /var/www/munin
|
||||
services.munin-cron = {
|
||||
|
||||
@@ -13,6 +13,7 @@ mkIf profiles.isDesktop {
|
||||
hardware.pulseaudio = {
|
||||
enable = 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