Compare commits
40 Commits
2016-08-04
...
2016-08-09
| Author | SHA1 | Date | |
|---|---|---|---|
| 7536316133 | |||
| c346262619 | |||
| 312cc9ddc2 | |||
| ff3e764bc2 | |||
| 4100ff2f2f | |||
| b64a846407 | |||
| 2df8cf6695 | |||
| 40ea98af6b | |||
|
|
944f8103e6 | ||
| 453ad77953 | |||
| 3c7274848d | |||
| 1d5692fbc5 | |||
| 7367bd462e | |||
| 3de2cceef4 | |||
| 8ebfe6c9a6 | |||
| 33e44d23f9 | |||
|
|
461adfc7fe | ||
| 47de85f6bd | |||
| abec02d668 | |||
| 78cccc3934 | |||
| 42c1327500 | |||
| e685d8e518 | |||
| 366272d1f6 | |||
| 25e9a9c1ab | |||
| e685771d12 | |||
| 67907ba8c8 | |||
| 36c0eba3b5 | |||
| 3d7b3f1106 | |||
|
|
71c89d7272 | ||
|
|
e974e8949d | ||
| a8b5ee97c6 | |||
| 45a4bc9a28 | |||
|
|
b998bea22e | ||
|
|
a356a2f5fa | ||
|
|
0e5137a236 | ||
|
|
65064f7f8b | ||
|
|
12e3f20a8e | ||
| a05ef8fbdc | |||
| e6fc844aaf | |||
|
|
eaa35ac70e |
48
Makefile
Normal file
48
Makefile
Normal file
@@ -0,0 +1,48 @@
|
||||
all: rebuild-switch
|
||||
date
|
||||
|
||||
clean:
|
||||
nix-collect-garbage -d --delete-older-than 15d
|
||||
|
||||
clean-aggressive:
|
||||
nix-collect-garbage -d --delete-older-than 1d
|
||||
|
||||
clean-total:
|
||||
nix-collect-garbage -d
|
||||
|
||||
clean-log:
|
||||
journalctl --vacuum-size=1G
|
||||
|
||||
full-auto: submodules-update upgrade clean optimise
|
||||
|
||||
optimise:
|
||||
nix-store --optimise
|
||||
|
||||
push: submodules-push
|
||||
git push --all
|
||||
git push --tags
|
||||
|
||||
rebuild-switch:
|
||||
nixos-rebuild switch --fallback --show-trace
|
||||
|
||||
store-repair:
|
||||
nix-store --verify --check-contents --repair
|
||||
|
||||
submodules-update:
|
||||
#git submodule update --remote
|
||||
git submodule foreach git co master
|
||||
git submodule foreach git ff
|
||||
|
||||
submodules-push:
|
||||
git submodule foreach git push --all
|
||||
git submodule foreach git push --tags
|
||||
|
||||
submodules-tag:
|
||||
git submodule foreach git tag -f "$$(date +%F)-$$(hostname -s)"
|
||||
|
||||
tag: submodules-tag
|
||||
git tag -f "$$(date +%F)-$$(hostname -s)"
|
||||
|
||||
upgrade:
|
||||
nixos-rebuild switch --upgrade --fallback --show-trace
|
||||
|
||||
6
README
6
README
@@ -1,3 +1,9 @@
|
||||
# nixos-template-base
|
||||
|
||||
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.
|
||||
|
||||
# Lien pour install sur machine distante
|
||||
|
||||
|
||||
1
base.nix
1
base.nix
@@ -5,6 +5,7 @@
|
||||
# recettes
|
||||
./base/base.nix
|
||||
./desktop/desktop.nix
|
||||
./public/public.nix
|
||||
|
||||
# moulinette de configuration
|
||||
./config-generator.nix
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
all: rebuild-switch
|
||||
date
|
||||
|
||||
clean:
|
||||
nix-collect-garbage -d --delete-older-than 15d
|
||||
|
||||
clean-aggressive:
|
||||
nix-collect-garbage -d --delete-older-than 1d
|
||||
|
||||
clean-total:
|
||||
nix-collect-garbage -d
|
||||
|
||||
clean-log:
|
||||
journalctl --vacuum-size=1G
|
||||
|
||||
full-auto: submodules-update upgrade clean optimise
|
||||
|
||||
optimise:
|
||||
nix-store --optimise
|
||||
|
||||
push: submodules-push
|
||||
git push --all
|
||||
git push --tags
|
||||
|
||||
rebuild-switch:
|
||||
nixos-rebuild switch --fallback --show-trace
|
||||
|
||||
store-repair:
|
||||
nix-store --verify --check-contents --repair
|
||||
|
||||
submodules-update:
|
||||
#git submodule update --remote
|
||||
git submodule foreach git co master
|
||||
git submodule foreach git ff
|
||||
|
||||
submodules-push:
|
||||
git submodule foreach git push --all
|
||||
git submodule foreach git push --tags
|
||||
|
||||
submodules-tag:
|
||||
git submodule foreach git tag -f "$$(date +%F)-$$(hostname -s)"
|
||||
|
||||
tag: submodules-tag
|
||||
git tag -f "$$(date +%F)-$$(hostname -s)"
|
||||
|
||||
upgrade:
|
||||
nixos-rebuild switch --upgrade --fallback --show-trace
|
||||
|
||||
1
base/Makefile
Symbolic link
1
base/Makefile
Symbolic link
@@ -0,0 +1 @@
|
||||
/etc/nixos/base/Makefile
|
||||
@@ -1,12 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
cfg = config.r6d.config-generator;
|
||||
in {
|
||||
# Automatic update & automatic clean
|
||||
|
||||
system.autoUpgrade.enable = cfg.auto-upgrade;
|
||||
nix.gc.automatic = cfg.auto-upgrade;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
cfg = config.r6d.config-generator;
|
||||
in {
|
||||
# Gestion spécifique pour PC portable
|
||||
powerManagement.cpuFreqGovernor = mkIf cfg.laptop "powersave";
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
cfg = config.r6d.config-generator;
|
||||
in {
|
||||
imports = [
|
||||
];
|
||||
|
||||
services.locate = {
|
||||
enable = cfg.locate;
|
||||
interval = "hourly";
|
||||
};
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -2,21 +2,12 @@
|
||||
|
||||
{
|
||||
imports = [
|
||||
./environment.nix
|
||||
./localisation.nix
|
||||
./monitoring.nix
|
||||
./networking.nix
|
||||
./services.nix
|
||||
./network-dns.nix
|
||||
|
||||
# inclusion conditionnelle
|
||||
./activation-manuelle/auto-upgrade.nix
|
||||
./activation-manuelle/laptop.nix
|
||||
./activation-manuelle/locate.nix
|
||||
./activation-manuelle/fail2ban.nix
|
||||
./activation-manuelle/nix-serve-client.nix
|
||||
./activation-manuelle/nix-serve-server.nix
|
||||
./activation-manuelle/print.nix
|
||||
./activation-manuelle/swap.nix
|
||||
./activation-manuelle/users.nix
|
||||
];
|
||||
}
|
||||
|
||||
14
base/network-dns.nix
Normal file
14
base/network-dns.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Définition des domaines utilisés lorsque un identifiant non-FQDN est donné (ping, nslookup)
|
||||
networking = {
|
||||
search = [
|
||||
"dubronetwork.fr"
|
||||
"prunetwork.fr"
|
||||
"teleragno.fr"
|
||||
"teleragno.net"
|
||||
];
|
||||
dnsExtensionMechanism = true;
|
||||
};
|
||||
}
|
||||
@@ -31,12 +31,16 @@ in
|
||||
enable = mkEnableOption "Génération de la configuration d'une machine.";
|
||||
awesome = mkEnableOption "Profil pour activer le gestionnaire de fenêtre awesome.";
|
||||
auto-upgrade = mkEnableOption "Profil pour activer les mises à jour automatiques.";
|
||||
cartographie = mkEnableOption "Profil pour activer les outils de gestion de données géographiques.";
|
||||
conception-assistee = mkEnableOption "Profil pour activer les outils de conception électronique & modélisation 3D";
|
||||
database_postgres=mkEnableOption "Profil pour activer le SGBD PostgreSQL.";
|
||||
developpement = mkEnableOption "Profil pour activer les outils de développement";
|
||||
docker = mkEnableOption "Profil pour l'utilisation de Docker.";
|
||||
dns_autorite = mkEnableOption "Profil pour servir les fichiers de zone DNS.";
|
||||
dns_resolveur = mkEnableOption "Profil pour activer un résolveur DNS local.";
|
||||
edition-musique = mkEnableOption "Profil pour la création/édition de musique.";
|
||||
edition-photo = mkEnableOption "Profil pour la création/édition de photos.";
|
||||
edition-video = mkEnableOption "Profil pour la création/édition de video.";
|
||||
fail2ban = mkEnableOption "Profil pour activer Fail2ban.";
|
||||
jeux = mkEnableOption "Profil pour les jeux vidéos.";
|
||||
laptop = mkEnableOption "Profil pour les outils spécifiques aux ordinateurs portables..";
|
||||
@@ -44,6 +48,7 @@ in
|
||||
murmur = mkEnableOption "Profil pour activer un serveur Mumble (murmur)";
|
||||
nix-serve-client= mkEnableOption "Profil pour que la machine soit un client de cache nix.";
|
||||
nix-serve-server= mkEnableOption "Profil pour que la machine soit un serveur de cache nix.";
|
||||
online-ipv6 = mkEnableOption "Profil pour activer l'IPv6 de online.net";
|
||||
print = mkEnableOption "Profil pour activer cups & pouvoir imprimer.";
|
||||
rabbitmq = mkEnableOption "Profil pour activer le service de messagerie AMQP.";
|
||||
swap = mkEnableOption "Profil pour que le swap soit activé.";
|
||||
@@ -117,8 +122,13 @@ in
|
||||
r6d.profiles.isDesktop = true;
|
||||
|
||||
r6d.config-generator = {
|
||||
cartographie = true;
|
||||
developpement = true;
|
||||
docker = true;
|
||||
|
||||
edition-musique = true;
|
||||
edition-photo = true;
|
||||
edition-video = true;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -240,6 +250,7 @@ in
|
||||
r6d.config-generator = {
|
||||
fail2ban = true;
|
||||
murmur = true;
|
||||
online-ipv6 = true;
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
32
desktop/activation-manuelle/xmonad/xmobarrc
Normal file
32
desktop/activation-manuelle/xmonad/xmobarrc
Normal file
@@ -0,0 +1,32 @@
|
||||
Config { font = "xft:Monospace-10:bold"
|
||||
, additionalFonts = []
|
||||
, border = NoBorder
|
||||
, bgColor = "black"
|
||||
, fgColor = "white"
|
||||
, alpha = 255
|
||||
, position = Top
|
||||
--, textOffset = -1
|
||||
--, iconOffset = -1
|
||||
, lowerOnStart = False
|
||||
, pickBroadest = False
|
||||
, persistent = False
|
||||
, hideOnStart = False
|
||||
, iconRoot = "."
|
||||
, allDesktops = True
|
||||
, overrideRedirect = True
|
||||
, commands = [ Run DynNetwork ["-L","0","-H","32","--normal","green","--high","red"] 10
|
||||
, Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
|
||||
, Run Memory ["-t","Mem: <usedratio>%"] 10
|
||||
, Run Battery ["-t", "Batt: <left>%, <watts>W -> <timeleft>"] 10
|
||||
, Run Date "%F %H:%M:%S" "date" 10
|
||||
--, Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
|
||||
, Run StdinReader
|
||||
, Run Brightness [] 10
|
||||
, Run Volume "default" "Master" [] 10
|
||||
]
|
||||
, sepChar = "%"
|
||||
, alignSep = "}{"
|
||||
, template = " %StdinReader% }\
|
||||
\{ %cpu% | %memory% | %dynnetwork% | %battery% | %bright% | %default:Master% | <fc=#ee9a00>%date%</fc>"
|
||||
}
|
||||
|
||||
47
desktop/activation-manuelle/xmonad/xmonad.hs
Normal file
47
desktop/activation-manuelle/xmonad/xmonad.hs
Normal file
@@ -0,0 +1,47 @@
|
||||
import Graphics.X11.ExtraTypes.XF86
|
||||
import XMonad
|
||||
import XMonad.Config.Desktop
|
||||
import XMonad.Config.Azerty
|
||||
import XMonad.Hooks.DynamicLog
|
||||
import XMonad.Util.EZConfig
|
||||
|
||||
-- # Ligne principale
|
||||
|
||||
main = xmonad =<< xmobar myConfig
|
||||
--main = xmonad =<< statusBar myBar myPP toggleStrutsKey myConfig
|
||||
|
||||
-- # Réglages de xmonad
|
||||
|
||||
myConfig = azertyConfig
|
||||
{ terminal = "sakura"
|
||||
, modMask = mod4Mask
|
||||
, borderWidth = 2
|
||||
, workspaces = myWorkspaces
|
||||
} `additionalKeys` myKeys `removeKeys` unusefulKeys
|
||||
|
||||
myWorkspaces = ["1:mail","2:chat","3:web","4","5","6","7","8", "9:system"]
|
||||
|
||||
myKeys = [ ((0, xF86XK_MonBrightnessUp), spawn "xbacklight +10") -- +brightness
|
||||
, ((0, xF86XK_MonBrightnessDown), spawn "xbacklight -10") -- -brightness
|
||||
, ((0, xF86XK_AudioRaiseVolume), spawn "amixer set Master 3%+") -- +volume
|
||||
, ((0, xF86XK_AudioLowerVolume), spawn "amixer set Master 3%-") -- -volume
|
||||
, ((0, xF86XK_AudioMute), spawn "amixer set Master toggle") -- mute volume
|
||||
, ((0, xF86XK_AudioPlay), spawn "cmus-remote -u") -- cmus play/stop
|
||||
, ((0, xF86XK_AudioPrev), spawn "cmus-remote -r") -- cmus next
|
||||
, ((0, xF86XK_AudioNext), spawn "cmus-remote -n") -- cmus previous
|
||||
]
|
||||
|
||||
unusefulKeys = []
|
||||
|
||||
-- # Réglages de xmobar
|
||||
|
||||
myBar = "xmobar"
|
||||
|
||||
-- Custom PP, configure it as you like. It determines what is being written to the bar.
|
||||
myPP = xmobarPP
|
||||
{ ppCurrent = xmobarColor "black" "yellow" . wrap " " " "
|
||||
}
|
||||
|
||||
-- Key binding to toggle the gap for the bar.
|
||||
toggleStrutsKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b)
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf profiles.isDesktop {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Multimedia
|
||||
|
||||
## Audio
|
||||
audacity # montage audio
|
||||
beep
|
||||
cmus # lecteur audio console
|
||||
easytag # gestion des métadonnées des fichiers musicaux
|
||||
picard # gestion des métadonnées des fichiers musicaux
|
||||
espeak # synthèse vocale
|
||||
paprefs # préferences pulseaudio
|
||||
pavucontrol # mixer pulseaudio
|
||||
vorbis-tools # codec
|
||||
|
||||
## Video
|
||||
smplayer # lecteur vidéo
|
||||
vlc # lecteur vidéo
|
||||
|
||||
## Photo & Dessin vectoriel
|
||||
exif
|
||||
exiftags
|
||||
gimp # logiciel d'édition/montage/retouche photo
|
||||
inkscape # édition d'image vectorielle (svg & autre)
|
||||
imagemagick # modification image en CLI
|
||||
kde4.ksnapshot
|
||||
rawtherapee # développemen de photos en RAW
|
||||
|
||||
### TEST d'outil de gestion de catalogue de photos
|
||||
kde4.digikam # gestionnaire de bibliothèque de photo
|
||||
];
|
||||
}
|
||||
@@ -10,98 +10,48 @@ in
|
||||
{
|
||||
imports = [ # applications :
|
||||
# commandées par config-generator
|
||||
./activation-manuelle/app-awesome.nix # pour les profils awesome
|
||||
./activation-manuelle/app-cao.nix # de conception assisté par ordinateur & modélisation
|
||||
./activation-manuelle/app-developpement.nix # utilisée pour développer des programmes/scripts
|
||||
./activation-manuelle/app-docker.nix # pour activer docker
|
||||
./activation-manuelle/app-jeux.nix # permettant de jouer ;)
|
||||
./activation-manuelle/app-virtualbox.nix # pour exploiter virtualbox
|
||||
./activation-manuelle/laptop.nix # appli & configuration adaptée pour un PC portable$
|
||||
./activation-manuelle/xmonad.nix # gestionnaire de fenêtres xmonad
|
||||
# installées systématiquement
|
||||
./desktop-minimal.nix
|
||||
./app-adminsys.nix # pour gérer le système dans son ensemble et les services
|
||||
./app-bureautique.nix # dédiée à la bureautique (traitement de texte, dessin, ...)
|
||||
# A ajouter dans config-generator & revoir le contenu pour le mettre si nécessaire dans minimal
|
||||
./app-cartographie.nix # utilisée pour manipuler les données géographiques & cartes
|
||||
./app-client-internet.nix # pour accéder & utiliser des ressources par le réseau
|
||||
./app-multimedia.nix # pour gérer le son, l'image et la vidéo
|
||||
./app-network.nix # de gestion, de diagnostique & surveillance réseau
|
||||
./app-securite.nix # relatives à la sécurité (chiffrement, gpg, mots de passe, ...)
|
||||
./activation-manuelle/xmonad/xmonad.nix # gestionnaire de fenêtres xmonad
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; mkIf profiles.isDesktop [
|
||||
# Environement de bureau
|
||||
wmname # pour définir le nom du gestionnaire de fenêtre (utile pour java)
|
||||
arandr # interface graphique pour xrandr
|
||||
wmname # pour définir le nom du gestionnaire de fenêtre (utile pour java)
|
||||
kde4.ksnapshot# capture d'écran
|
||||
xorg.xbacklight # pour gérer la luminosité de l'écran
|
||||
xorg.xev # pour repérer les codes + noms standard des actions clavier/souris
|
||||
xorg.xkill # pour 'tuer une application'
|
||||
xorg.xkill # pour 'tuer une application'
|
||||
|
||||
## Gestionnaire de fenêtre & Thème
|
||||
gnome.gnome_icon_theme # thème d'icone - semble fonctionner avec spaceFM
|
||||
|
||||
## Manipulation de fichier
|
||||
pcmanfm # gestionnaire de fichiers graphique
|
||||
spaceFM # gestionnaire de fichiers graphique
|
||||
vifm # gestionnaire de fichiers basé sur VIM (console)
|
||||
pcmanfm # gestionnaire de fichiers graphique
|
||||
spaceFM # gestionnaire de fichiers graphique
|
||||
vifm # gestionnaire de fichiers basé sur VIM (console)
|
||||
|
||||
## Terminal
|
||||
sakura # terminal
|
||||
sakura # terminal
|
||||
|
||||
# A trier
|
||||
cowsay
|
||||
fgallery # générateur de gallerie statique http://www.thregr.org/~wavexx/software/fgallery/
|
||||
fgallery # générateur de gallerie statique http://www.thregr.org/~wavexx/software/fgallery/
|
||||
samba
|
||||
taskwarrior # gestionnaire de tâches en console
|
||||
udevil # pour le montage des media amovibles
|
||||
xclip # manipulation du clipboard X depuis la console
|
||||
taskwarrior # gestionnaire de tâches en console
|
||||
udevil # pour le montage des media amovibles
|
||||
xclip # manipulation du clipboard X depuis la console
|
||||
];
|
||||
|
||||
# Polices supplémentaires
|
||||
fonts.fonts = with pkgs; mkIf profiles.isDesktop [
|
||||
fira # police créée pour Firefox
|
||||
fira-code # idem fira-mono + ligatures pour la programmation
|
||||
fira-mono # dérivée de fira en monospace
|
||||
hack-font # police monospace créée explicitement pour coder
|
||||
];
|
||||
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
clawsMail = pkgs.clawsMail.override { enablePluginFancy = true; };
|
||||
mumble = pkgs.mumble.override { pulseSupport = true; };
|
||||
};
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver = mkIf profiles.isDesktop {
|
||||
enable = true;
|
||||
layout = "fr";
|
||||
xkbOptions = "eurosign:e";
|
||||
displayManager.lightdm.enable = true;
|
||||
windowManager.awesome.enable = true;
|
||||
startGnuPGAgent = true;
|
||||
startOpenSSHAgent = false; # pas compatible avec l'agent GnuPG
|
||||
inputClassSections = [''
|
||||
Identifier "Marble Mouse"
|
||||
MatchProduct "Logitech USB Trackball"
|
||||
MatchIsPointer "on"
|
||||
MatchDevicePath "/dev/input/event*"
|
||||
Driver "evdev"
|
||||
# Physical button #s: A b D - - - - B C b = A & D simultaneously; - = no button
|
||||
#Option "ButtonMapping" "1 8 3 4 5 6 7 2 2" # For right-hand placement
|
||||
#Option "ButtonMapping" "3 8 1 4 5 6 7 2 2" # For left-hand placement
|
||||
|
||||
# EmulateWheel refers to emulating a mouse wheel using Marble Mouse trackball.
|
||||
Option "EmulateWheel" "true"
|
||||
Option "EmulateWheelButton" "8" # Factory default; use "9" for left-side placement.
|
||||
|
||||
# EmulateWheelInertia specifies how far (in pixels) the pointer must move to
|
||||
# generate button press/release events in wheel emulation mode.
|
||||
Option "EmulateWheelInertia" "10" # Factory default: 50
|
||||
|
||||
Option "ZAxisMapping" "4 5"
|
||||
Option "XAxisMapping" "6 7" # Disable this for vertical-only scrolling.
|
||||
# Emulate3Buttons refers to the act of pressing buttons A and D
|
||||
# simultaneously to emulate a middle-click or wheel click.
|
||||
Option "Emulate3Buttons" "true" # Factory default.
|
||||
''];
|
||||
};
|
||||
|
||||
# Pulse Audio
|
||||
hardware.pulseaudio = mkIf profiles.isDesktop {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
environment.etc."pulse/daemon.conf".text = "flat-volumes = no";
|
||||
}
|
||||
|
||||
@@ -29,9 +29,6 @@ mkIf profiles.isDesktop {
|
||||
lz4
|
||||
lzop
|
||||
|
||||
# Mail
|
||||
postfix
|
||||
|
||||
# Système de fichier
|
||||
curlftpfs
|
||||
gparted
|
||||
@@ -5,7 +5,9 @@ let
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in mkIf cfg.awesome {
|
||||
in
|
||||
|
||||
mkIf cfg.awesome {
|
||||
|
||||
environment.variables = {
|
||||
# Export the current path for the awesome derivation, useful for users rc.lua
|
||||
@@ -7,7 +7,7 @@ let
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf profiles.isDesktop {
|
||||
mkIf cfg.cartographie {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Gestion de données géographiques
|
||||
@@ -12,10 +12,13 @@ mkIf profiles.isDesktop {
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Clients Internet
|
||||
|
||||
## Navigateur & Réseaux sociaux
|
||||
## Navigateur
|
||||
chromium
|
||||
firefox
|
||||
python27Packages.turses # client twitter en ncurse
|
||||
|
||||
## Réseaux sociaux
|
||||
python27Packages.turses # client twitter en ncurse
|
||||
python27Packages.rainbowstream # client twitter en console
|
||||
|
||||
## Mail & Discussion (texte, audio)
|
||||
clawsMail
|
||||
@@ -5,8 +5,9 @@ let
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
in mkIf cfg.docker {
|
||||
mkIf cfg.docker {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Ecosystème Docker
|
||||
18
public/app-edition-musique.nix
Normal file
18
public/app-edition-musique.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf cfg.edition-musique {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
#
|
||||
audacity # montage audio
|
||||
easytag # gestion des métadonnées des fichiers musicaux
|
||||
picard # gestion des métadonnées des fichiers musicaux
|
||||
];
|
||||
}
|
||||
26
public/app-edition-photo.nix
Normal file
26
public/app-edition-photo.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf cfg.edition-photo {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Méta données
|
||||
exif
|
||||
exiftags
|
||||
|
||||
# Retouche, modification & dessin vectoriel
|
||||
gimp # logiciel d'édition/montage/retouche photo
|
||||
inkscape # édition d'image vectorielle (svg & autre)
|
||||
imagemagick # modification image en CLI
|
||||
rawtherapee # développemen de photos en RAW
|
||||
|
||||
# TEST d'outil de gestion de catalogue de photos
|
||||
kde4.digikam # gestionnaire de bibliothèque de photo
|
||||
];
|
||||
}
|
||||
17
public/app-edition-video.nix
Normal file
17
public/app-edition-video.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf cfg.edition-video {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Vidéo
|
||||
#cinelerra # editeur video
|
||||
pitivi # montage vidéo
|
||||
];
|
||||
}
|
||||
@@ -5,8 +5,9 @@ let
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
in mkIf cfg.jeux {
|
||||
mkIf cfg.jeux {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Jeux
|
||||
29
public/app-multimedia.nix
Normal file
29
public/app-multimedia.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf profiles.isDesktop {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Multimedia
|
||||
|
||||
## Audio
|
||||
beep
|
||||
cmus # lecteur audio console
|
||||
espeak # synthèse vocale
|
||||
paprefs # préferences pulseaudio
|
||||
pavucontrol # mixer pulseaudio
|
||||
vorbis-tools # codec
|
||||
|
||||
## Video
|
||||
smplayer # lecteur vidéo
|
||||
vlc # lecteur vidéo
|
||||
|
||||
kde4.ksnapshot# réalisation de capture d'écran
|
||||
];
|
||||
}
|
||||
@@ -15,19 +15,11 @@ mkIf profiles.isDesktop {
|
||||
iptraf-ng # outil de mesure de la qualité du réseau
|
||||
nload # affichage de statisques d'utilisation instantannées du réseau
|
||||
telnet
|
||||
#vsftpd # serveur FTP
|
||||
|
||||
## Diagnostic
|
||||
arp-scan
|
||||
wireshark
|
||||
whois
|
||||
|
||||
## Routage
|
||||
quagga # daemon de routage
|
||||
|
||||
## Tunnel
|
||||
# openvpn
|
||||
tinc
|
||||
];
|
||||
|
||||
networking.firewall = {
|
||||
@@ -5,8 +5,9 @@ let
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
in mkIf cfg.virtualbox {
|
||||
mkIf cfg.virtualbox {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
linuxPackages.virtualbox
|
||||
@@ -15,4 +16,3 @@ in mkIf cfg.virtualbox {
|
||||
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
}
|
||||
|
||||
15
public/auto-upgrade.nix
Normal file
15
public/auto-upgrade.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf cfg.auto-upgrade {
|
||||
# Automatic update & automatic clean
|
||||
|
||||
system.autoUpgrade.enable = true;
|
||||
nix.gc.automatic = true;
|
||||
}
|
||||
@@ -5,9 +5,14 @@ let
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
in mkIf cfg.laptop {
|
||||
# Paquets spécifiques pour un ordinateur portable
|
||||
mkIf cfg.laptop {
|
||||
|
||||
# Gestion spécifique pour PC portable
|
||||
|
||||
## Gestion de l'énergie
|
||||
powerManagement.cpuFreqGovernor = "powersave";
|
||||
|
||||
## Activation d'un gestionnaire de réseau
|
||||
networking.networkmanager.enable = true;
|
||||
@@ -17,9 +22,4 @@ in mkIf cfg.laptop {
|
||||
environment.systemPackages = with pkgs; [
|
||||
networkmanagerapplet
|
||||
];
|
||||
|
||||
services.xserver.synaptics = {
|
||||
enable = true;
|
||||
twoFingerScroll = true;
|
||||
};
|
||||
}
|
||||
@@ -1,17 +1,6 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Définition des domaines utilisés lorsque un identifiant non-FQDN est donné (ping, nslookup)
|
||||
networking = {
|
||||
search = [
|
||||
"dubronetwork.fr"
|
||||
"prunetwork.fr"
|
||||
"teleragno.fr"
|
||||
"teleragno.net"
|
||||
];
|
||||
dnsExtensionMechanism = true;
|
||||
};
|
||||
|
||||
# Utilisation d'adresse IPv6 temporaire
|
||||
|
||||
## https://blog.linitx.com/control-privacy-addressing-ipv6-linux/
|
||||
@@ -1,12 +1,15 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
in {
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf cfg.print {
|
||||
# Enable CUPS to print documents.
|
||||
services.printing = mkIf cfg.print {
|
||||
services.printing = {
|
||||
enable = true;
|
||||
drivers = [
|
||||
pkgs.samsung-unified-linux-driver
|
||||
42
public/public.nix
Normal file
42
public/public.nix
Normal file
@@ -0,0 +1,42 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
# installées systématiquement
|
||||
./environment.nix
|
||||
./localisation.nix
|
||||
./network-ipv6.nix
|
||||
./service-haveged.nix
|
||||
./service-monitoring.nix
|
||||
./service-ssh.nix
|
||||
|
||||
# commandées par config-generator
|
||||
## option de configuration spécifique
|
||||
./app-awesome.nix # pour les profils awesome
|
||||
./app-cao.nix # de conception assisté par ordinateur & modélisation
|
||||
./app-cartographie.nix # utilisée pour manipuler les données géographiques & cartes
|
||||
./app-developpement.nix # utilisée pour développer des programmes/scripts
|
||||
./app-docker.nix # pour activer docker
|
||||
./app-edition-musique.nix # pour modifier les fichiers musicaux
|
||||
./app-edition-photo.nix # pour modifier les photos & assimilé
|
||||
./app-edition-video.nix # pour modifier les vidéos
|
||||
./app-jeux.nix # permettant de jouer ;)
|
||||
./app-virtualbox.nix # pour exploiter virtualbox
|
||||
./auto-upgrade.nix # mise à jour automatique du système
|
||||
./laptop.nix # appli & configuration adaptée pour un PC portable
|
||||
./print.nix # configuration de base de cups
|
||||
./service-laptop.nix # services spécifiques aux pc portables
|
||||
./service-locate.nix # service locate
|
||||
./swap.nix # définition de l'utilisation du swap
|
||||
|
||||
## if isDesktop
|
||||
./app-adminsys.nix # pour gérer le système dans son ensemble et les services
|
||||
./app-bureautique.nix # dédiée à la bureautique (traitement de texte, dessin, ...)
|
||||
./app-client-internet.nix # pour accéder & utiliser des ressources par le réseau
|
||||
./app-multimedia.nix # pour gérer le son, l'image et la vidéo
|
||||
./app-network.nix # de gestion, de diagnostique & surveillance réseau
|
||||
./app-securite.nix # relatives à la sécurité (chiffrement, gpg, mots de passe, ...)
|
||||
./service-pulseaudio.nix # activation du serveur audio
|
||||
./service-x11.nix # activation du serveur graphique X
|
||||
];
|
||||
}
|
||||
12
public/service-haveged.nix
Normal file
12
public/service-haveged.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Sécurité & Acces distant
|
||||
|
||||
## Augmentation de l'entropie du système par un générateur de nombres aléatoires
|
||||
## cat /proc/sys/kernel/random/entropy_avail
|
||||
services.haveged = {
|
||||
enable = true;
|
||||
refill_threshold = 2048;
|
||||
};
|
||||
}
|
||||
18
public/service-laptop.nix
Normal file
18
public/service-laptop.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf cfg.laptop {
|
||||
|
||||
# Gestion spécifique pour PC portable
|
||||
|
||||
services.xserver.synaptics = {
|
||||
enable = true;
|
||||
twoFingerScroll = true;
|
||||
};
|
||||
}
|
||||
@@ -7,9 +7,10 @@ let
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf profiles.isDesktop {
|
||||
mkIf cfg.locate {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
|
||||
];
|
||||
services.locate = {
|
||||
enable = true;
|
||||
interval = "hourly";
|
||||
};
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
## Munin server -- generate /var/www/munin
|
||||
# Monitoring
|
||||
|
||||
# Noeud de supervision munin = pas de stockage des données locales
|
||||
services.munin-node = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Munin server -- generate /var/www/munin
|
||||
services.munin-cron = {
|
||||
enable = true;
|
||||
hosts = ''
|
||||
@@ -13,12 +16,13 @@
|
||||
address localhost
|
||||
'';
|
||||
extraGlobalConfig = ''
|
||||
contact.email.command mail -s "Munin notification for ''${var:host}" hostmaster@prunetwork.fr
|
||||
contact.email.command mail -s "Munin notification for ''${var:host}" root@${config.networking.hostName}
|
||||
'';
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
# TODO configurer les bon ports lors de l'ouverture du service
|
||||
8000
|
||||
];
|
||||
|
||||
## Documentation
|
||||
17
public/service-pulseaudio.nix
Normal file
17
public/service-pulseaudio.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
mkIf = pkgs.lib.mkIf;
|
||||
in
|
||||
|
||||
{
|
||||
# Pulse Audio
|
||||
hardware.pulseaudio = mkIf profiles.isDesktop {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
environment.etc."pulse/daemon.conf".text = "flat-volumes = no";
|
||||
}
|
||||
@@ -1,16 +1,7 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Sécurité & Acces distant
|
||||
|
||||
## Augmentation de l'entropie du système par un générateur de nombres aléatoires
|
||||
## cat /proc/sys/kernel/random/entropy_avail
|
||||
services.haveged = {
|
||||
enable = true;
|
||||
refill_threshold = 2048;
|
||||
};
|
||||
|
||||
## OpenSSH daemon
|
||||
# OpenSSH daemon
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
# https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern_.28OpenSSH_6.7.2B.29
|
||||
@@ -27,12 +18,4 @@
|
||||
UsePrivilegeSeparation sandbox
|
||||
'';
|
||||
};
|
||||
|
||||
# Monitoring
|
||||
|
||||
## Noeud de supervision munin = pas de stockage des données locales
|
||||
|
||||
services.munin-node = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
45
public/service-x11.nix
Normal file
45
public/service-x11.nix
Normal file
@@ -0,0 +1,45 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
mkIf = pkgs.lib.mkIf;
|
||||
in
|
||||
|
||||
{
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver = mkIf profiles.isDesktop {
|
||||
enable = true;
|
||||
layout = "fr";
|
||||
xkbOptions = "eurosign:e";
|
||||
displayManager.lightdm.enable = true;
|
||||
windowManager.awesome.enable = true;
|
||||
startGnuPGAgent = true;
|
||||
startOpenSSHAgent = false; # pas compatible avec l'agent GnuPG
|
||||
inputClassSections = [''
|
||||
Identifier "Marble Mouse"
|
||||
MatchProduct "Logitech USB Trackball"
|
||||
MatchIsPointer "on"
|
||||
MatchDevicePath "/dev/input/event*"
|
||||
Driver "evdev"
|
||||
# Physical button #s: A b D - - - - B C b = A & D simultaneously; - = no button
|
||||
#Option "ButtonMapping" "1 8 3 4 5 6 7 2 2" # For right-hand placement
|
||||
#Option "ButtonMapping" "3 8 1 4 5 6 7 2 2" # For left-hand placement
|
||||
|
||||
# EmulateWheel refers to emulating a mouse wheel using Marble Mouse trackball.
|
||||
Option "EmulateWheel" "true"
|
||||
Option "EmulateWheelButton" "8" # Factory default; use "9" for left-side placement.
|
||||
|
||||
# EmulateWheelInertia specifies how far (in pixels) the pointer must move to
|
||||
# generate button press/release events in wheel emulation mode.
|
||||
Option "EmulateWheelInertia" "10" # Factory default: 50
|
||||
|
||||
Option "ZAxisMapping" "4 5"
|
||||
Option "XAxisMapping" "6 7" # Disable this for vertical-only scrolling.
|
||||
# Emulate3Buttons refers to the act of pressing buttons A and D
|
||||
# simultaneously to emulate a middle-click or wheel click.
|
||||
Option "Emulate3Buttons" "true" # Factory default.
|
||||
''];
|
||||
};
|
||||
}
|
||||
@@ -1,14 +1,17 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
in {
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf cfg.swap {
|
||||
# Gestion du swap
|
||||
|
||||
# https://en.wikipedia.org/wiki/Swappiness
|
||||
boot.kernel.sysctl = mkIf cfg.swap {
|
||||
boot.kernel.sysctl = {
|
||||
# le swap est activé (!= 0)
|
||||
# le swap est utilisé lorsque (100 - x) % de la mémoire est déja allouée
|
||||
"vm.swappiness" = 10;
|
||||
Reference in New Issue
Block a user