mirror of https://gitlab.crans.org/nounous/nixos
start integration of a info.nix
parent
2518915939
commit
e10e22df4b
163
flake.nix
163
flake.nix
|
|
@ -38,75 +38,130 @@
|
|||
./modules
|
||||
agenix.nixosModules.default
|
||||
];
|
||||
get_hosts_names = path:
|
||||
attrNames (
|
||||
attrsets.filterAttrs (name: type: type == "directory")
|
||||
(readDir path)
|
||||
) ;
|
||||
hostVM = get_hosts_names ./hosts/vm;
|
||||
hostPhysique = get_hosts_names ./hosts/physiques;
|
||||
get_info =
|
||||
path: lists:
|
||||
filter (x: x != null)
|
||||
(map (name:
|
||||
let filePath = path + "/${name}/info.nix";
|
||||
in
|
||||
if builtins.pathExists filePath then
|
||||
# let eval = evalModules {
|
||||
# modules = [
|
||||
# # ./modules/crans
|
||||
# {
|
||||
# crans = import filePath;
|
||||
# }
|
||||
# agenix.nixosModules.default
|
||||
# ];
|
||||
# };
|
||||
# in
|
||||
# eval.config
|
||||
{
|
||||
apprentix = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/apprentix ] ++ baseModules;
|
||||
};
|
||||
crans = import filePath;
|
||||
}
|
||||
else
|
||||
warn "${toString filePath} not found" null
|
||||
) lists
|
||||
);
|
||||
hosts_vm_info = get_info ./hosts/vm hostVM;
|
||||
hosts_physique_info = get_info ./hosts/physiques hostPhysique;
|
||||
|
||||
collabora = nixosSystem {
|
||||
listInfoToAttrs =
|
||||
path: infos:
|
||||
listToAttrs (
|
||||
map (info:
|
||||
{
|
||||
name = info.crans.name;
|
||||
value =
|
||||
nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/collabora ] ++ baseModules;
|
||||
modules = [(path + "/${info.crans.name}")] ++ [info] ++ baseModules
|
||||
;
|
||||
};
|
||||
}
|
||||
) infos)
|
||||
;
|
||||
attrs_vm_info = listInfoToAttrs ./hosts/vm hosts_vm_info;
|
||||
attrs_physique_info = listInfoToAttrs ./hosts/physiques hosts_physique_info;
|
||||
attrs_all_info = attrs_physique_info // attrs_vm_info;
|
||||
in
|
||||
attrs_all_info
|
||||
//
|
||||
{
|
||||
# apprentix = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/apprentix ] ++ baseModules;
|
||||
# };
|
||||
|
||||
jitsi = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/jitsi ] ++ baseModules;
|
||||
};
|
||||
# collabora = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/collabora ] ++ baseModules;
|
||||
# };
|
||||
|
||||
livre = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/livre ] ++ baseModules;
|
||||
};
|
||||
# jitsi = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/jitsi ] ++ baseModules;
|
||||
# };
|
||||
|
||||
neo = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/neo ] ++ baseModules;
|
||||
};
|
||||
# livre = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/livre ] ++ baseModules;
|
||||
# };
|
||||
|
||||
nextcloud = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/nextcloud ] ++ baseModules;
|
||||
};
|
||||
# neo = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/neo ] ++ baseModules;
|
||||
# };
|
||||
|
||||
periodique = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/periodique ] ++ baseModules;
|
||||
};
|
||||
# nextcloud = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/nextcloud ] ++ baseModules;
|
||||
# };
|
||||
|
||||
redite = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/redite ] ++ baseModules;
|
||||
};
|
||||
# periodique = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/periodique ] ++ baseModules;
|
||||
# };
|
||||
|
||||
reverseproxy = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/reverseproxy ] ++ baseModules;
|
||||
};
|
||||
# redite = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/redite ] ++ baseModules;
|
||||
# };
|
||||
|
||||
thot = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/physiques/thot ] ++ baseModules;
|
||||
};
|
||||
# reverseproxy = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/reverseproxy ] ++ baseModules;
|
||||
# };
|
||||
|
||||
two = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/two ] ++ baseModules;
|
||||
};
|
||||
# thot = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/physiques/thot ] ++ baseModules;
|
||||
# };
|
||||
|
||||
vaultwarden = nixosSystem {
|
||||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/vaultwarden ] ++ baseModules;
|
||||
};
|
||||
cransIso = nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = inputs;
|
||||
modules = [
|
||||
./hosts/iso
|
||||
./modules/crans/locale.nix
|
||||
];
|
||||
};
|
||||
# two = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/two ] ++ baseModules;
|
||||
# };
|
||||
|
||||
# vaultwarden = nixosSystem {
|
||||
# specialArgs = inputs;
|
||||
# modules = [ ./hosts/vm/vaultwarden ] ++ baseModules;
|
||||
# };
|
||||
# cransIso = nixosSystem {
|
||||
# system = "x86_64-linux";
|
||||
# specialArgs = inputs;
|
||||
# modules = [
|
||||
# ./hosts/iso
|
||||
# ./modules/crans/locale.nix
|
||||
# ];
|
||||
# };
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -38,19 +38,5 @@
|
|||
restic
|
||||
];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking.adm.enable = false;
|
||||
resticClient.enable = false;
|
||||
|
||||
services = {
|
||||
resticServer = {
|
||||
enable = true;
|
||||
port = 4242;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
name = "thot";
|
||||
description = "Serveur de backup sous nixos utilisant Restic";
|
||||
id = 14;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking.adm.enable = false;
|
||||
resticClient.enable = false;
|
||||
|
||||
services = {
|
||||
resticServer = {
|
||||
enable = true;
|
||||
port = 4242;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -9,21 +9,6 @@
|
|||
|
||||
networking.hostName = "apprentix";
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 150;
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "01:23";
|
||||
|
||||
homeNounou.enable = false;
|
||||
|
||||
users.root.passwordFile = ../../../secrets/apprentix/root.age;
|
||||
};
|
||||
|
||||
security.sudo.extraRules = [
|
||||
{
|
||||
groups = [ "_user" ];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
name = "apprentix";
|
||||
description = "VM pour les apprenti⋅es";
|
||||
id = 150;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "01:23";
|
||||
|
||||
homeNounou.enable = false;
|
||||
|
||||
users.root.passwordFile = ../../../secrets/apprentix/root.age;
|
||||
}
|
||||
|
|
@ -9,16 +9,5 @@
|
|||
networking.hostName = "collabora";
|
||||
boot.loader.grub.devices = [ "/dev/sda" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 149;
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.enable = false;
|
||||
};
|
||||
|
||||
system.stateVersion = "25.09";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
name = "collabora";
|
||||
description = "Collabora du Crans";
|
||||
id = 149;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.enable = false;
|
||||
}
|
||||
|
||||
|
|
@ -9,23 +9,5 @@
|
|||
networking.hostName = "jitsi";
|
||||
boot.loader.grub.devices = [ "/dev/vda" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 163;
|
||||
srv = {
|
||||
enable = true;
|
||||
ipv4 = "185.230.79.15";
|
||||
};
|
||||
};
|
||||
|
||||
resticClient.when = "02:34";
|
||||
|
||||
services = {
|
||||
acme.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
system.stateVersion = "24.11";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
name = "jitsi";
|
||||
description = "Machine qui gère Jitsi";
|
||||
|
||||
id = 163;
|
||||
|
||||
networking = {
|
||||
srv = {
|
||||
enable = true;
|
||||
ipv4 = "185.230.79.15";
|
||||
};
|
||||
};
|
||||
|
||||
resticClient.when = "02:34";
|
||||
|
||||
services = {
|
||||
acme.enable = true;
|
||||
};
|
||||
|
||||
# aliasDNS = [
|
||||
# "visio"
|
||||
# ];
|
||||
|
||||
public-ssh = "";
|
||||
|
||||
}
|
||||
|
|
@ -9,16 +9,5 @@
|
|||
networking.hostName = "livre";
|
||||
boot.loader.grub.devices = [ "/dev/sda" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 140;
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "03:45";
|
||||
};
|
||||
|
||||
system.stateVersion = "24.11";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
name = "livre";
|
||||
description = "Editeur de PDF en ligne via Stirling-PDF";
|
||||
id = 140;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "03:45";
|
||||
}
|
||||
|
||||
|
|
@ -12,24 +12,5 @@
|
|||
|
||||
networking.hostName = "neo";
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 141;
|
||||
srv = {
|
||||
enable = true;
|
||||
ipv4 = "185.230.79.5";
|
||||
};
|
||||
};
|
||||
|
||||
resticClient.when = "04:56";
|
||||
|
||||
services = {
|
||||
acme.enable = true;
|
||||
coturn.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
system.stateVersion = "24.11";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
name = "neo";
|
||||
description = "Matrix du Crans et bridge IRC/Matrix";
|
||||
enable = true;
|
||||
id = 141;
|
||||
|
||||
networking = {
|
||||
srv = {
|
||||
enable = true;
|
||||
ipv4 = "185.230.79.5";
|
||||
};
|
||||
};
|
||||
|
||||
resticClient.when = "04:56";
|
||||
|
||||
services = {
|
||||
acme.enable = true;
|
||||
coturn.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -9,25 +9,6 @@
|
|||
networking.hostName = "nextcloud";
|
||||
boot.loader.grub.devices = [ "/dev/sda" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
networking = {
|
||||
id = 146;
|
||||
srvNat = {
|
||||
enable = true;
|
||||
interface = "ens20";
|
||||
};
|
||||
san = {
|
||||
enable = true;
|
||||
interface = "ens19";
|
||||
};
|
||||
};
|
||||
|
||||
homeAdh.enable = true;
|
||||
|
||||
resticClient.enable = false;
|
||||
};
|
||||
|
||||
services.autofs = {
|
||||
enable = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
name = "nextcloud";
|
||||
description = "Nextcloud du Crans";
|
||||
id = 146;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat = {
|
||||
enable = true;
|
||||
interface = "ens20";
|
||||
};
|
||||
san = {
|
||||
enable = true;
|
||||
interface = "ens19";
|
||||
};
|
||||
};
|
||||
|
||||
homeAdh.enable = true;
|
||||
|
||||
resticClient.enable = false;
|
||||
}
|
||||
|
|
@ -9,16 +9,5 @@
|
|||
networking.hostName = "periodique";
|
||||
boot.loader.grub.devices = [ "/dev/sda" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 118;
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "02:56";
|
||||
};
|
||||
|
||||
system.stateVersion = "24.11";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
name = "periodique";
|
||||
description = "Frontend Matrix du Crans (element)";
|
||||
id = 118;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "02:56";
|
||||
}
|
||||
|
||||
|
|
@ -9,16 +9,5 @@
|
|||
networking.hostName = "redite";
|
||||
boot.loader.grub.devices = [ "/dev/sda" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 139;
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "06:18";
|
||||
};
|
||||
|
||||
system.stateVersion = "23.11";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
name = "redite";
|
||||
description = "Frontend reddit libre";
|
||||
id = 139;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "06:18";
|
||||
}
|
||||
|
|
@ -13,22 +13,5 @@
|
|||
users.users."nginx".home = "/var/lib/nginx";
|
||||
users.users."anubis".extraGroups = [ "nginx" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 151;
|
||||
srvNat.enable = true;
|
||||
srv = {
|
||||
enable = true;
|
||||
interface = "ens20";
|
||||
ipv4 = "185.230.79.42";
|
||||
};
|
||||
};
|
||||
|
||||
resticClient.when = "03:42";
|
||||
|
||||
};
|
||||
|
||||
system.stateVersion = "25.05";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
name = "reverseproxy";
|
||||
description = "reverse-proxy principale du Crans";
|
||||
id = 151;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat.enable = true;
|
||||
srv = {
|
||||
enable = true;
|
||||
interface = "ens20";
|
||||
ipv4 = "185.230.79.42";
|
||||
};
|
||||
};
|
||||
|
||||
resticClient.when = "03:42";
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -8,19 +8,6 @@
|
|||
networking.hostName = "two";
|
||||
boot.loader.grub.devices = [ "/dev/sda" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 135;
|
||||
srvNat = {
|
||||
enable = true;
|
||||
interface = "ens19";
|
||||
};
|
||||
};
|
||||
|
||||
resticClient.when = "07:29";
|
||||
};
|
||||
|
||||
system.stateVersion = "23.11";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
name = "two";
|
||||
description = "VM de test";
|
||||
id = 135;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat = {
|
||||
enable = true;
|
||||
interface = "ens19";
|
||||
};
|
||||
};
|
||||
|
||||
resticClient.when = "07:29";
|
||||
}
|
||||
|
|
@ -9,16 +9,5 @@
|
|||
networking.hostName = "vaultwarden";
|
||||
boot.loader.grub.devices = [ "/dev/sda" ];
|
||||
|
||||
crans = {
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
id = 159;
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "04:44";
|
||||
};
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
name = "vaultwarden";
|
||||
description = "Vaultarden du crans, gestionnaire de mot de passe";
|
||||
id = 159;
|
||||
|
||||
enable = true;
|
||||
|
||||
networking = {
|
||||
srvNat.enable = true;
|
||||
};
|
||||
|
||||
resticClient.when = "04:44";
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@ in
|
|||
{
|
||||
imports = [
|
||||
./age.nix
|
||||
./extra.nix
|
||||
./grub.nix
|
||||
./home.nix
|
||||
./locale.nix
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
{ lib, ... }:
|
||||
with lib;
|
||||
{
|
||||
options.crans = {
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "vm-test";
|
||||
description = "Nom de la machine";
|
||||
};
|
||||
|
||||
description = mkOption {
|
||||
type = types.str;
|
||||
example = "VM de test";
|
||||
description = "Description de la machine";
|
||||
};
|
||||
|
||||
id = mkOption {
|
||||
type = types.int;
|
||||
example = 135;
|
||||
description = """
|
||||
ID de la machine :
|
||||
- < 100 machine physique
|
||||
- >= 100 VM ( id de la VM dans proxmox )
|
||||
""";
|
||||
};
|
||||
|
||||
public-ssh = mkOption {
|
||||
type = types.str;
|
||||
description = "Clé ssh public de la machine";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.crans.networking;
|
||||
cfg = config.crans;
|
||||
cfg-net = cfg.networking;
|
||||
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
|
|
@ -20,12 +21,6 @@ in
|
|||
options.crans.networking = {
|
||||
enable = mkEnableOption "Configuration réseaux commune à toutes les machines du Crans.";
|
||||
|
||||
id = mkOption {
|
||||
type = types.int;
|
||||
example = 135;
|
||||
description = "Le numéro de la VM dans Proxmox.";
|
||||
};
|
||||
|
||||
adm = {
|
||||
enable = mkEnableOption "Configuration du VLAN adm.";
|
||||
|
||||
|
|
@ -76,8 +71,9 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = mkIf cfg-net.enable {
|
||||
networking = {
|
||||
hostName = cfg.name;
|
||||
useDHCP = false;
|
||||
firewall.enable = lib.mkDefault false;
|
||||
nameservers = [ "172.16.10.128" ];
|
||||
|
|
@ -92,12 +88,12 @@ in
|
|||
# plus bas).
|
||||
lib.attrsets.mapAttrs'
|
||||
(interface: conf: {
|
||||
name = cfg."${interface}".interface;
|
||||
name = cfg-net."${interface}".interface;
|
||||
value = conf;
|
||||
})
|
||||
(
|
||||
# On filtre sur les interfaces activées
|
||||
lib.attrsets.filterAttrs (interface: _: cfg."${interface}".enable) {
|
||||
lib.attrsets.filterAttrs (interface: _: cfg-net."${interface}".enable) {
|
||||
# Configuration du VLAN adm
|
||||
adm = {
|
||||
ipv4.addresses = [
|
||||
|
|
@ -120,7 +116,7 @@ in
|
|||
ipv4 = {
|
||||
addresses = [
|
||||
{
|
||||
address = cfg.srv.ipv4;
|
||||
address = cfg-net.srv.ipv4;
|
||||
prefixLength = 26;
|
||||
}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
{ config, pkgs, ...}:
|
||||
{
|
||||
nix.buildMachines = [{
|
||||
hostName = "cephiroth.adm.crans.org";
|
||||
system = "x86_64-linux";
|
||||
|
||||
maxJobs = 2;
|
||||
speedFactor = 2;
|
||||
|
||||
supportedFeatures = [ "kvm" "big-parallel" ];
|
||||
}];
|
||||
|
||||
nix.distributedBuilds = true;
|
||||
|
||||
nix.extraOptions = ''
|
||||
builders-use-substitutes = true
|
||||
'';
|
||||
}
|
||||
Loading…
Reference in New Issue