ajout de profils + utilisation sur les machines gérées

extraction-donnees-privees
Jean-Pierre PRUNARET 9 years ago
parent 1416a12d22
commit 021f6499f9

@ -3,6 +3,8 @@
let let
inherit (lib) mkEnableOption mkIf mkMerge mkOption singleton types; inherit (lib) mkEnableOption mkIf mkMerge mkOption singleton types;
cfg = config.r6d.config-generator; cfg = config.r6d.config-generator;
pfl = config.r6d.profiles;
host = config.networking.hostName;
in in
{ {
@ -18,85 +20,33 @@ in
options = { options = {
r6d.config-generator = { #* Utilisé pour afecter des capacités aux machines
r6d.profiles = {
enable = mkEnableOption "Generation de la configuration d'une machine"; # Domaine
isDubronetwork = mkEnableOption "Pour distinguer les machines dubronetwork";
auto-upgrade = mkOption { isPrunetwork = mkEnableOption "Pour distinguer les machines prunetwork";
type = types.bool; # Utilisation machine
default = true; isServer = mkEnableOption "Pour indiquer qu'il s'agit d'un serveur";
description = '' isDesktop = mkEnableOption "Pour indiquer une machine avec interface graphique.";
Profil pour activer les mises à jour automatiques. isWorkstation = mkEnableOption "Pour indiquer que la machine sert à travailler";
''; isHome = mkEnableOption "Pour indiquer que la machine sert à la maison (divertissement & autre)";
};
docker = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour l'utilisation de Docker.
'';
};
jeux = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour les jeux vidéos.
'';
};
laptop = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour les outils spécifiques aux ordinateurs portables..
'';
}; };
locate = mkOption { #* Utilisé dans les fichiers .nix
type = types.bool; r6d.config-generator = {
default = true; enable = mkEnableOption "Generation de la configuration d'une machine";
description = '' auto-upgrade = mkEnableOption "Profil pour activer les mises à jour automatiques.";
Profil pour activer la fonction locate. docker = mkEnableOption "Profil pour l'utilisation de Docker";
''; jeux = mkEnableOption "Profil pour les jeux vidéos.";
}; laptop = mkEnableOption "Profil pour les outils spécifiques aux ordinateurs portables..";
locate = mkEnableOption "Profil pour activer la fonction locate.";
nix-serve-client = mkOption { nix-serve-client= mkEnableOption "Profil pour que la machine soit un serveur de cache nix.";
type = types.bool; nix-serve-server= mkEnableOption "Profil pour que la machine soit un serveur de cache nix.";
default = false; swap = mkEnableOption "Profil pour que le swap soit activé.";
description = '' virtualbox = mkEnableOption "Profil pour l'utilisation de VirtualBox.";
Profil pour que la machine soit un serveur de cache nix.
'';
};
nix-serve-server = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour que la machine soit un serveur de cache nix.
'';
};
swap = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour que le swap soit activé.
'';
};
virtualbox = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour l'utilisation de VirtualBox.
'';
};
}; };
}; };
###### implementation ###### implementation
# https://nixos.org/releases/nixos/14.12-small/nixos-14.12.374.61adf9e/manual/sec-writing-modules.html # https://nixos.org/releases/nixos/14.12-small/nixos-14.12.374.61adf9e/manual/sec-writing-modules.html
# https://nixos.org/wiki/NixOS:extend_NixOS # https://nixos.org/wiki/NixOS:extend_NixOS
@ -109,46 +59,72 @@ in
# Conditional stuff. # Conditional stuff.
## Affectation des profils aux machines ## Affectation des profils aux machines
(mkIf (config.networking.hostName == "radx.prunetwork.fr") { (mkIf (host == "radx.prunetwork.fr") {
r6d.profiles.isHome = true;
r6d.profiles.isPrunetwork = true;
r6d.profiles.isServer = true;
r6d.profiles.isWorkstation = true;
r6d.config-generator = { r6d.config-generator = {
docker = true;
jeux = true;
nix-serve-server = true;
swap = true;
virtualbox = true; virtualbox = true;
}; };
}) })
(mkIf (config.networking.hostName == "latitude.dubronetwork.fr") { (mkIf (host == "latitude.dubronetwork.fr") {
r6d.profiles.isDubronetwork = true;
r6d.profiles.isHome = true;
r6d.profiles.isWorkstation = true;
r6d.config-generator = { r6d.config-generator = {
docker = true;
jeux = true;
laptop = true; laptop = true;
nix-serve-client = true;
}; };
}) })
(mkIf (config.networking.hostName == "monstre.dubronetwork.fr") { (mkIf (host == "monstre.dubronetwork.fr") {
r6d.config-generator = { r6d.profiles.isDubronetwork = true;
nix-serve-server = true; r6d.profiles.isServer = true;
};
}) })
(mkIf (config.networking.hostName == "neo-nomade.dubronetwork.fr") { (mkIf (host == "neo-nomade.dubronetwork.fr") {
r6d.profiles.isDubronetwork = true;
r6d.profiles.isHome = true;
r6d.config-generator = { r6d.config-generator = {
laptop = true; laptop = true;
nix-serve-client = true;
}; };
}) })
(mkIf (config.networking.hostName == "phenom.dubronetwork.fr") { (mkIf (host == "phenom.dubronetwork.fr") {
r6d.config-generator = { r6d.profiles.isDubronetwork = true;
docker = true; r6d.profiles.isHome = true;
jeux = true; r6d.profiles.isWorkstation = true;
nix-serve-client = true;
nix-serve-server = true;
virtualbox = true;
};
}) })
## Contenu des Profils ## Contenu des Profils
# -> voir les sources des dépots base & desktop (mkIf pfl.isHome {
r6d.profiles.isDesktop = true;
#r6d.config-generator.jeux = true;
})
(mkIf pfl.isServer {
r6d.config-generator.nix-serve-server = true;
})
(mkIf pfl.isWorkstation {
r6d.profiles.isDesktop = true;
r6d.config-generator.docker = true;
})
(mkIf pfl.isPrunetwork {
r6d.config-generator.auto-upgrade = true;
r6d.config-generator.swap = true;
})
(mkIf pfl.isDubronetwork {
r6d.config-generator.auto-upgrade = true;
r6d.config-generator.nix-serve-client = true;
})
(mkIf (pfl.isDubronetwork && pfl.isServer) {
r6d.config-generator.nix-serve-server = true;
})
(mkIf (pfl.isDubronetwork && pfl.isWorkstation) {
r6d.config-generator.nix-serve-server = true;
r6d.config-generator.virtualbox = true;
})
]; ];
} }

Loading…
Cancel
Save