Compare commits
	
		
			127 Commits 
		
	
	
		
			2017-07-15
			...
			nixos-unst
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | fe50587190 | 3 years ago | 
|  | c1b40f9d07 | 3 years ago | 
|  | 06d73c9519 | 3 years ago | 
|  | f7264ae434 | 3 years ago | 
|  | 4fd9d0d7f8 | 3 years ago | 
|  | 963b0b9d4b | 3 years ago | 
|  | 51b98cda4f | 3 years ago | 
|  | f751e24839 | 3 years ago | 
|  | 1b1aebd0a0 | 3 years ago | 
|  | 812bc511e0 | 3 years ago | 
|  | e55568d1c6 | 4 years ago | 
|  | d4f2298518 | 4 years ago | 
|  | 2fad38532f | 4 years ago | 
|  | 28cf2d2071 | 4 years ago | 
|  | f6f3befe2f | 4 years ago | 
|  | 257f59054d | 4 years ago | 
|  | 518054fd0a | 4 years ago | 
|  | 03bcc056c1 | 4 years ago | 
|  | 7679f865b0 | 4 years ago | 
|  | 2d63aae5a1 | 4 years ago | 
|  | 48a257405a | 4 years ago | 
|  | 30e2f31255 | 4 years ago | 
|  | 0364ea9b29 | 4 years ago | 
|  | b2505f45c4 | 4 years ago | 
|  | 962c052b29 | 4 years ago | 
|  | 032d7e8e1a | 4 years ago | 
|  | af35de1639 | 4 years ago | 
|  | c8ae50be5b | 4 years ago | 
|  | 9310d01af6 | 4 years ago | 
|  | ea33bac49b | 4 years ago | 
|  | 204fb83207 | 4 years ago | 
|  | cf3c3c3603 | 4 years ago | 
|  | edad20c5c0 | 4 years ago | 
|  | ed937ba5bc | 5 years ago | 
|  | 3de6332c3e | 5 years ago | 
|  | e26453fc7e | 5 years ago | 
|  | 67b9f5b0f7 | 5 years ago | 
|  | 8f4f8ef953 | 5 years ago | 
|  | c33f0f9c50 | 5 years ago | 
|  | 2064606f18 | 5 years ago | 
|  | 4a5f0ba1a7 | 5 years ago | 
|  | 9ed945bba8 | 5 years ago | 
|  | 65e5776f86 | 5 years ago | 
|  | 235e636451 | 6 years ago | 
|  | e849c55297 | 6 years ago | 
|  | 1e51d11778 | 6 years ago | 
|  | f39f486f51 | 6 years ago | 
|  | 2a5809c3de | 6 years ago | 
|  | 7681f7774e | 6 years ago | 
|  | fe0ea31e30 | 6 years ago | 
|  | f7de6a69bd | 6 years ago | 
|  | 9151b4dfc5 | 6 years ago | 
|  | 209b1b3e47 | 6 years ago | 
|  | 8355abcbfc | 6 years ago | 
|  | 9150a37969 | 6 years ago | 
|  | 59d243bb9d | 6 years ago | 
|  | c7a1a433ef | 6 years ago | 
|  | da750b9c33 | 6 years ago | 
|  | 0ff5f2934e | 6 years ago | 
|  | f0d5881c80 | 6 years ago | 
|  | 16b0a5b617 | 6 years ago | 
|  | de02b42953 | 6 years ago | 
|  | 25275ec0dd | 7 years ago | 
|  | 19258654cf | 7 years ago | 
|  | 7a7bcc99f2 | 7 years ago | 
|  | dddc3e79e0 | 7 years ago | 
|  | 1e8b78d720 | 7 years ago | 
|  | 366eebee8a | 7 years ago | 
|  | 5ecdc764ac | 7 years ago | 
|  | a5e03f769b | 7 years ago | 
|  | c642afb7e6 | 7 years ago | 
|  | 1127daa925 | 7 years ago | 
|  | 328eabc735 | 7 years ago | 
|  | f2247b6e3e | 8 years ago | 
|  | 0073763f32 | 8 years ago | 
|  | e2ba892109 | 8 years ago | 
|  | 0c47de1cb1 | 8 years ago | 
|  | 8dcdea29c1 | 8 years ago | 
|  | cffcd9bd3e | 8 years ago | 
|  | 3f80d6be6e | 8 years ago | 
|  | e94b16fce7 | 8 years ago | 
|  | 3f038be64a | 8 years ago | 
|  | 76fce51cf0 | 8 years ago | 
|  | 264a782227 | 8 years ago | 
|  | e56040b333 | 8 years ago | 
|  | bb08ab258f | 8 years ago | 
|  | ab183dbc00 | 8 years ago | 
|  | 62164179ed | 8 years ago | 
|  | b04e9502f0 | 8 years ago | 
|  | 4ab0e2ff47 | 8 years ago | 
|  | f025b78d94 | 8 years ago | 
|  | 87e16c5fe7 | 8 years ago | 
|  | f7bd484863 | 8 years ago | 
|  | ebea0312a8 | 8 years ago | 
|  | 3be18dce4b | 8 years ago | 
|  | ecfe564d93 | 8 years ago | 
|  | c3979947ec | 8 years ago | 
|  | db912bbc3b | 8 years ago | 
|  | b991fadc06 | 8 years ago | 
|  | 8f21c1dc33 | 8 years ago | 
|  | c0493bb038 | 8 years ago | 
|  | 3894796a14 | 8 years ago | 
|  | 6d13167f38 | 8 years ago | 
|  | c00cdb9343 | 8 years ago | 
|  | 697f44f3bc | 8 years ago | 
|  | 75682ee664 | 8 years ago | 
|  | 3969805880 | 8 years ago | 
|  | 99eac99e81 | 8 years ago | 
|  | 7ca303303c | 8 years ago | 
|  | 5453b6bdcd | 8 years ago | 
|  | b26bc099c8 | 8 years ago | 
|  | 29b388ee95 | 8 years ago | 
|  | 10937423fc | 8 years ago | 
|  | 38cf4631dd | 8 years ago | 
|  | 88fa40fde3 | 8 years ago | 
|  | 99b3b11bd2 | 8 years ago | 
|  | eabecd5b69 | 8 years ago | 
|  | 73b9eab551 | 8 years ago | 
|  | 7329e54d04 | 8 years ago | 
|  | fc18c2a6c5 | 8 years ago | 
|  | 1458c750f3 | 8 years ago | 
|  | 0b6968338f | 8 years ago | 
|  | dc24c48cfd | 8 years ago | 
|  | b1a19b811d | 8 years ago | 
|  | dfe2bde371 | 8 years ago | 
|  | b8106deb18 | 8 years ago | 
|  | cc2f1c33af | 8 years ago | 
| @ -0,0 +1,27 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   annuaire = config.r6d.machines; | ||||||
|  |   currentMachine = annuaire."${config.networking.fqdn}"; | ||||||
|  |   flags = currentMachine.configurationFlags; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf (flags.radio && flags.graphical) { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     ## GUI | ||||||
|  |     chirp                   # Configuration de radios portatives | ||||||
|  |     gqrx                    # GUI | ||||||
|  |     cubicsdr                # Another GUI | ||||||
|  |     gnuradio-with-packages  # Software Defined Radio (SDR) software | ||||||
|  | 
 | ||||||
|  |     ## A Trier | ||||||
|  |     #inspectrum    # Tool for analysing captured signals from sdr receivers | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   nixpkgs.config.permittedInsecurePackages = [ | ||||||
|  |     "python2.7-Pillow-6.2.2" | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,48 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   annuaire = config.r6d.machines; | ||||||
|  |   currentMachine = annuaire."${config.networking.fqdn}"; | ||||||
|  |   flags = currentMachine.configurationFlags; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf true { | ||||||
|  | 
 | ||||||
|  |   nixpkgs.config.packageOverrides = pkgs: { | ||||||
|  |     claws-mail = pkgs.claws-mail.override { | ||||||
|  |       enablePgp = true; | ||||||
|  |       enablePluginArchive = true; | ||||||
|  |       #enablePluginFancy = false; # nécessite wekitgtk qui est troué # Option supprimée dans NixOS 20.03 | ||||||
|  |       enablePluginPdf = true; | ||||||
|  |       enablePluginRavatar = true; | ||||||
|  |       enablePluginSmime = true; | ||||||
|  |       enablePluginVcalendar = true; | ||||||
|  |       enableSpellcheck = true; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     ffmpeg-full = pkgs.ffmpeg-full.override { | ||||||
|  |       nonfreeLicensing = true; | ||||||
|  |       nvenc  = true; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # bug connu : https://nixos.org/nix-dev/2014-December/015225.html | ||||||
|  |     # find /nix/store/  -maxdepth 1 -type d -name "*gnuradio-*" | ||||||
|  |     # Commande pour générer le path : find /nix/store/  -maxdepth 1 -type d -name "*gnuradio-*"|paste -d: -s - | ||||||
|  |     gnuradio-with-packages = pkgs.gnuradio-with-packages.override { | ||||||
|  |       extraPackages = with pkgs; [ | ||||||
|  |         gnuradio-ais | ||||||
|  |         gnuradio-gsm | ||||||
|  |         gnuradio-nacl | ||||||
|  |         gnuradio-osmosdr    # support des dongle Realtek | ||||||
|  |         gnuradio-rds        # support du décodage de RDS sur les radio FM | ||||||
|  |       ]; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     mumble = pkgs.mumble.override { pulseSupport = true; }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   #nixpkgs.config.permittedInsecurePackages = [ | ||||||
|  |   #  "webkitgtk-2.4.11"       # pour que le plugin fancy de claws-mail fonctionne | ||||||
|  |   #]; | ||||||
|  | } | ||||||
| @ -0,0 +1,29 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   annuaire = config.r6d.machines; | ||||||
|  |   currentMachine = annuaire."${config.networking.fqdn}"; | ||||||
|  |   flags = currentMachine.configurationFlags; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf flags.radio { | ||||||
|  | 
 | ||||||
|  | # pour que ça marche | ||||||
|  | # sudo rmmod dvb_usb_rtl28xxu | ||||||
|  | 
 | ||||||
|  | # lecture radio FM | ||||||
|  | # rtl_fm -f 96.9e6 -M wbfm -s 440000 -r 44100 - | aplay -r 44100 -f S16_LE | ||||||
|  | # rtl_fm -f 96.95e6 -M wbfm -s 441000 -r 44100 - | aplay -r 44100 -f S16_LE -t raw -c 1 | ||||||
|  | # rtl_fm -f 96.95e6 -M wbfm -s 441000 -r 44100 -E deemp - |pv| aplay -r 44100 -f S16_LE -t raw -c 1 | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     gnss-sdr    # Global Navigation Satellite Systems software-defined receiver | ||||||
|  |     liquid-dsp  # Digital signal processing library for software-defined radios | ||||||
|  |     rtl-sdr     # Turns your Realtek RTL2832 based DVB dongle into a SDR receiver | ||||||
|  |     dump1090    # Listen to planes ADS-B and view them on a map | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   hardware.rtl-sdr.enable = true; | ||||||
|  | } | ||||||
| @ -1,20 +1,28 @@ | |||||||
| with import <nixpkgs> {}; | {pkgs, ... }: | ||||||
| 
 | 
 | ||||||
| vim_configurable.customize { | let | ||||||
|  |   myVim = pkgs.vim_configurable.customize { | ||||||
|     # Specifies the vim binary name. |     # Specifies the vim binary name. | ||||||
|     # E.g. set this to "my-vim" and you need to type "my-vim" to open this vim |     # E.g. set this to "my-vim" and you need to type "my-vim" to open this vim | ||||||
|     # This allows to have multiple vim packages installed (e.g. with a different set of plugins) |     # This allows to have multiple vim packages installed (e.g. with a different set of plugins) | ||||||
|     name = "vim"; |     name = "vim"; | ||||||
|     vimrcConfig.customRC = builtins.readFile ./vimrc; |     vimrcConfig.customRC = builtins.readFile ./vimrc; | ||||||
|   vimrcConfig.vam.knownPlugins = pkgs.vimPlugins; |     vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; { | ||||||
|   vimrcConfig.vam.pluginDictionaries = [ |       start = [ | ||||||
|     { names = [ |         wombat256-vim | ||||||
|       # Here you can place all your vim plugins |  | ||||||
|       # They are installed managed by `vam` (a vim plugin manager) |  | ||||||
|       #"vim-addon-nix" |  | ||||||
|       "elm-vim" |  | ||||||
|       "vim-nix" |  | ||||||
|       "wombat256-vim" |  | ||||||
|     ]; } |  | ||||||
|       ]; |       ]; | ||||||
|  |       opt = [ | ||||||
|  |         elm-vim | ||||||
|  |         vim-fish | ||||||
|  |         vim-nix | ||||||
|  |         vimwiki | ||||||
|  |       ]; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  | in { | ||||||
|  |   programs.vim = { | ||||||
|  |     defaultEditor = true; | ||||||
|  |     package = myVim; | ||||||
|  |   }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,16 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.hostName}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.auto-upgrade { |  | ||||||
| 
 |  | ||||||
|   # Automatic update & automatic clean |  | ||||||
| 
 |  | ||||||
|   system.autoUpgrade.enable = true; |  | ||||||
|   nix.gc.automatic = true; |  | ||||||
| } |  | ||||||
| @ -1,27 +0,0 @@ | |||||||
| # http://www.git-attitude.fr/2014/09/15/30-options-git-qui-gagnent-a-etre-connues/ |  | ||||||
| [color] |  | ||||||
|     diff = auto |  | ||||||
|     branch = auto |  | ||||||
|     interactive = auto |  | ||||||
|     pager = true |  | ||||||
|     showbranch = auto |  | ||||||
|     status = auto |  | ||||||
| [alias] |  | ||||||
|     a  = add -p |  | ||||||
|     br = for-each-ref --sort=committerdate refs/heads/ --format='%(committerdate:short)\t%(authorname)\t%(refname:short)' |  | ||||||
|     ci = commit |  | ||||||
|     co = checkout |  | ||||||
|     ff = pull --ff-only |  | ||||||
|     oops = commit --amend --no-edit |  | ||||||
|     # Show files ignored by git |  | ||||||
|     ignored = ls-files -o -i --exclude-standard |  | ||||||
|     ls = ls-files |  | ||||||
|     st = status |  | ||||||
|     # Logs |  | ||||||
|     lol = log --graph --decorate --pretty=oneline --abbrev-commit |  | ||||||
|     lola = log --graph --decorate --pretty=oneline --abbrev-commit --all |  | ||||||
|     not-pushed = log --branches --not --remotes |  | ||||||
| [push] |  | ||||||
|     default = simple |  | ||||||
| [core] |  | ||||||
|     editor = /usr/bin/env vim |  | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   annuaire = config.r6d.machines; | ||||||
|  |   currentMachine = annuaire."${config.networking.fqdn}"; | ||||||
|  |   flags = currentMachine.configurationFlags; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  |   # Automatic update & automatic clean | ||||||
|  | 
 | ||||||
|  |   system.autoUpgrade.enable = flags.auto-upgrade; | ||||||
|  |   nix = { | ||||||
|  |     extraOptions = '' | ||||||
|  |       experimental-features = nix-command flakes | ||||||
|  |     ''; | ||||||
|  |     settings = { | ||||||
|  |       auto-optimise-store = true; | ||||||
|  |       # Nombre de process d'installation en parrallèle effectués par Nix | ||||||
|  |       cores = 0; | ||||||
|  |     }; | ||||||
|  |     gc = { | ||||||
|  |       automatic = true; | ||||||
|  |       dates = "daily"; | ||||||
|  |       options = "--delete-older-than 7d"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,41 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   annuaire = config.r6d.machines; | ||||||
|  |   currentMachine = annuaire."${config.networking.fqdn}"; | ||||||
|  |   flags = currentMachine.configurationFlags; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf true { | ||||||
|  |   # Ajout du support des yobikey & hyperfido | ||||||
|  |   ## source des valeurs udev : https://github.com/Yubico/libu2f-host/blob/master/70-u2f.rules | ||||||
|  | 
 | ||||||
|  |   ## source car udev sur nixos semble ancien : https://raw.githubusercontent.com/Yubico/libu2f-host/master/70-old-u2f.rules | ||||||
|  |   services.udev.extraRules = '' | ||||||
|  |   # this udev file should be used with udev older than 188 | ||||||
|  |   ACTION!="add|change", GOTO="u2f_end" | ||||||
|  | 
 | ||||||
|  |   # Yubico YubiKey | ||||||
|  |   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0113|0114|0115|0116|0120|0402|0403|0406|0407|0410", GROUP="plugdev", MODE="0660" | ||||||
|  | 
 | ||||||
|  |   # Happlink (formerly Plug-Up) Security KEY | ||||||
|  |   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0", GROUP="plugdev", MODE="0660" | ||||||
|  | 
 | ||||||
|  |   #  Neowave Keydo and Keydo AES | ||||||
|  |   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1e0d", ATTRS{idProduct}=="f1d0|f1ae", GROUP="plugdev", MODE="0660" | ||||||
|  | 
 | ||||||
|  |   # HyperSecu HyperFIDO | ||||||
|  |   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="096e", ATTRS{idProduct}=="0880", GROUP="plugdev", MODE="0660" | ||||||
|  | 
 | ||||||
|  |   LABEL="u2f_end" | ||||||
|  | 
 | ||||||
|  |   SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="audio", MODE="0666", SYMLINK+="rtl_sdr" | ||||||
|  |   ''; | ||||||
|  | 
 | ||||||
|  |   security.pam.u2f.enable = true; | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     libu2f-host | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -1,13 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.hostName}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf true { |  | ||||||
|   # Lancement de dbus pour les utilisateurs |  | ||||||
|   services.dbus.socketActivated = true; |  | ||||||
| } |  | ||||||
| @ -0,0 +1,123 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | : <<=cut | ||||||
|  | 
 | ||||||
|  | =head1 NAME | ||||||
|  | 
 | ||||||
|  | parse Chrony Tracking output for timeserver status information | ||||||
|  | 
 | ||||||
|  | =head1 APPLICABLE SYSTEMS | ||||||
|  | 
 | ||||||
|  | Any system with a local chronyd service. | ||||||
|  | 
 | ||||||
|  | =head1 CONFIGURATION | ||||||
|  | 
 | ||||||
|  | No configuration. | ||||||
|  | 
 | ||||||
|  | =head1 MAGIC MARKERS | ||||||
|  | 
 | ||||||
|  |   #%# family=auto | ||||||
|  |   #%# capabilities=autoconf | ||||||
|  | 
 | ||||||
|  | =head1 VERSION | ||||||
|  | 
 | ||||||
|  | Revision 0.1 2008/08/23 13:06:00 joti | ||||||
|  | 
 | ||||||
|  |   First version only chronyc tracking, autodetection included. | ||||||
|  | 
 | ||||||
|  | Revision 0.2 2008/10/11 16:09:00 joti | ||||||
|  | 
 | ||||||
|  |   Added scaling of other values to match with frequency, added more description to fields | ||||||
|  | 
 | ||||||
|  | Revision 0.3 2014/02/16 zjttoefs | ||||||
|  | 
 | ||||||
|  |   reduce forking by using awk | ||||||
|  |   do not limit output precision | ||||||
|  |   add stratum monitoring | ||||||
|  |   detect slow/fast time or freqency and adjust sign of value accordingly | ||||||
|  |   remove commented out code | ||||||
|  | 
 | ||||||
|  | Revision 0.4 2016/11/10 Lars Kruse | ||||||
|  | 
 | ||||||
|  |   rewrite field handling | ||||||
|  |   use "which" for "chronyc" location | ||||||
|  |   switch from "bash" to "sh" | ||||||
|  |   fix exit code of failing "autoconf" | ||||||
|  | 
 | ||||||
|  | =head1 AUTHOR | ||||||
|  | 
 | ||||||
|  |   joti | ||||||
|  |   zjttoefs | ||||||
|  |   Lars Kruse <devel@sumpfralle.de> | ||||||
|  | 
 | ||||||
|  | =cut | ||||||
|  | 
 | ||||||
|  | CHRONYC="$(which chronyc | head -1)" | ||||||
|  | 
 | ||||||
|  | # Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors. | ||||||
|  | # field definitions: | ||||||
|  | #   - munin fieldname | ||||||
|  | #   - factor for graph visualization (all values are supposed to reach a similar dimension) | ||||||
|  | #   - regular expression of the chrony output line (may not contain whitespace, case insensitive) | ||||||
|  | #   - label (may include "%d" for including the factor; may contain whitespace) | ||||||
|  | fields="stratum		1	^Stratum		Stratum | ||||||
|  | 	systime		1000000	^System.time		System Time (us) | ||||||
|  | 	offsetlast	1000000	^Last.offset		Last Offset (us) | ||||||
|  | 	offsetrms	1000000	^RMS.offset		RMS Offset (us) | ||||||
|  | 	frequency	1	^Frequency		Frequency (ppm) | ||||||
|  | 	residualfreq	1	^Residual.freq		Residual Freq (ppm) | ||||||
|  | 	skew		1	^Skew			Skew (ppm) | ||||||
|  | 	rootdelay	1000000	^Root.delay		Root Delay (us) | ||||||
|  | 	rootdispersion	1000000	^Root.dispersion	Root Dispersion (us) | ||||||
|  | 	updateinterval	1	^Update.interval	Update Interval (s)" | ||||||
|  | 
 | ||||||
|  | # chrony example output (v2.4.1): | ||||||
|  | #   Reference ID    : 131.188.3.221 (ntp1.rrze.uni-erlangen.de) | ||||||
|  | #   Stratum         : 2 | ||||||
|  | #   Ref time (UTC)  : Thu Nov 10 22:39:50 2016 | ||||||
|  | #   System time     : 0.000503798 seconds slow of NTP time | ||||||
|  | #   Last offset     : +0.000254355 seconds | ||||||
|  | #   RMS offset      : 0.002186779 seconds | ||||||
|  | #   Frequency       : 17.716 ppm slow | ||||||
|  | #   Residual freq   : +0.066 ppm | ||||||
|  | #   Skew            : 4.035 ppm | ||||||
|  | #   Root delay      : 0.042980 seconds | ||||||
|  | #   Root dispersion : 0.005391 seconds | ||||||
|  | #   Update interval : 258.4 seconds | ||||||
|  | #   Leap status     : Normal | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "autoconf" ]; then | ||||||
|  | 	if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then | ||||||
|  | 		echo yes | ||||||
|  | 	else | ||||||
|  | 		echo "no (missing 'chronyc' executable)" | ||||||
|  | 	fi | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "config" ]; then | ||||||
|  | 	echo 'graph_title Chrony Tracking Stats' | ||||||
|  | 	echo 'graph_args --base 1000 -l 0' | ||||||
|  | 	echo 'graph_vlabel (time,ppm)' | ||||||
|  | 	echo 'graph_category time' | ||||||
|  | 	echo 'graph_scale no' | ||||||
|  | 	echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 		# insert the factor, if "%d" is part of the label | ||||||
|  | 		printf "${fieldname}.label $label\n" "$factor" | ||||||
|  | 		echo "${fieldname}.type GAUGE" | ||||||
|  | 	done | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | chrony_status="$("$CHRONYC" tracking)" | ||||||
|  | echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 	status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)" | ||||||
|  | 	if [ -z "$status_line" ]; then | ||||||
|  | 		value="U" | ||||||
|  | 	else | ||||||
|  | 		# the keyword "slow" indicates negative values | ||||||
|  | 		value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')" | ||||||
|  | 	fi | ||||||
|  | 	echo "${fieldname}.value $value" | ||||||
|  | done | ||||||
| @ -0,0 +1,116 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | : <<=cut | ||||||
|  | 
 | ||||||
|  | =head1 NAME | ||||||
|  | 
 | ||||||
|  | parse Chrony Tracking output for timeserver status information | ||||||
|  | 
 | ||||||
|  | =head1 APPLICABLE SYSTEMS | ||||||
|  | 
 | ||||||
|  | Any system with a local chronyd service. | ||||||
|  | 
 | ||||||
|  | =head1 CONFIGURATION | ||||||
|  | 
 | ||||||
|  | No configuration. | ||||||
|  | 
 | ||||||
|  | =head1 MAGIC MARKERS | ||||||
|  | 
 | ||||||
|  |   #%# family=auto | ||||||
|  |   #%# capabilities=autoconf | ||||||
|  | 
 | ||||||
|  | =head1 VERSION | ||||||
|  | 
 | ||||||
|  | Revision 0.1 2008/08/23 13:06:00 joti | ||||||
|  | 
 | ||||||
|  |   First version only chronyc tracking, autodetection included. | ||||||
|  | 
 | ||||||
|  | Revision 0.2 2008/10/11 16:09:00 joti | ||||||
|  | 
 | ||||||
|  |   Added scaling of other values to match with frequency, added more description to fields | ||||||
|  | 
 | ||||||
|  | Revision 0.3 2014/02/16 zjttoefs | ||||||
|  | 
 | ||||||
|  |   reduce forking by using awk | ||||||
|  |   do not limit output precision | ||||||
|  |   add stratum monitoring | ||||||
|  |   detect slow/fast time or freqency and adjust sign of value accordingly | ||||||
|  |   remove commented out code | ||||||
|  | 
 | ||||||
|  | Revision 0.4 2016/11/10 Lars Kruse | ||||||
|  | 
 | ||||||
|  |   rewrite field handling | ||||||
|  |   use "which" for "chronyc" location | ||||||
|  |   switch from "bash" to "sh" | ||||||
|  |   fix exit code of failing "autoconf" | ||||||
|  | 
 | ||||||
|  | =head1 AUTHOR | ||||||
|  | 
 | ||||||
|  |   joti | ||||||
|  |   zjttoefs | ||||||
|  |   Lars Kruse <devel@sumpfralle.de> | ||||||
|  | 
 | ||||||
|  | =cut | ||||||
|  | 
 | ||||||
|  | CHRONYC="$(which chronyc | head -1)" | ||||||
|  | 
 | ||||||
|  | # Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors. | ||||||
|  | # field definitions: | ||||||
|  | #   - munin fieldname | ||||||
|  | #   - factor for graph visualization (all values are supposed to reach a similar dimension) | ||||||
|  | #   - regular expression of the chrony output line (may not contain whitespace, case insensitive) | ||||||
|  | #   - label (may include "%d" for including the factor; may contain whitespace) | ||||||
|  | fields="frequency	1	^Frequency		Local Clock Frequency Drift (ppm) | ||||||
|  | 	residualfreq	1	^Residual.freq		Residual Freq (ppm) | ||||||
|  | 	skew		1	^Skew			Skew (ppm)" | ||||||
|  | 
 | ||||||
|  | # chrony example output (v2.4.1): | ||||||
|  | #   Reference ID    : 131.188.3.221 (ntp1.rrze.uni-erlangen.de) | ||||||
|  | #   Stratum         : 2 | ||||||
|  | #   Ref time (UTC)  : Thu Nov 10 22:39:50 2016 | ||||||
|  | #   System time     : 0.000503798 seconds slow of NTP time | ||||||
|  | #   Last offset     : +0.000254355 seconds | ||||||
|  | #   RMS offset      : 0.002186779 seconds | ||||||
|  | #   Frequency       : 17.716 ppm slow | ||||||
|  | #   Residual freq   : +0.066 ppm | ||||||
|  | #   Skew            : 4.035 ppm | ||||||
|  | #   Root delay      : 0.042980 seconds | ||||||
|  | #   Root dispersion : 0.005391 seconds | ||||||
|  | #   Update interval : 258.4 seconds | ||||||
|  | #   Leap status     : Normal | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "autoconf" ]; then | ||||||
|  | 	if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then | ||||||
|  | 		echo yes | ||||||
|  | 	else | ||||||
|  | 		echo "no (missing 'chronyc' executable)" | ||||||
|  | 	fi | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "config" ]; then | ||||||
|  | 	echo 'graph_title Chrony Tracking Stats - Frequencies stability' | ||||||
|  | 	echo 'graph_args --base 1000 -l 0' | ||||||
|  | 	echo 'graph_vlabel (ppm)' | ||||||
|  | 	echo 'graph_category time' | ||||||
|  | 	echo 'graph_scale no' | ||||||
|  | 	echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 		# insert the factor, if "%d" is part of the label | ||||||
|  | 		printf "${fieldname}.label $label\n" "$factor" | ||||||
|  | 		echo "${fieldname}.type GAUGE" | ||||||
|  | 	done | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | chrony_status="$("$CHRONYC" tracking)" | ||||||
|  | echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 	status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)" | ||||||
|  | 	if [ -z "$status_line" ]; then | ||||||
|  | 		value="U" | ||||||
|  | 	else | ||||||
|  | 		# the keyword "slow" indicates negative values | ||||||
|  | 		value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')" | ||||||
|  | 	fi | ||||||
|  | 	echo "${fieldname}.value $value" | ||||||
|  | done | ||||||
| @ -0,0 +1,116 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | : <<=cut | ||||||
|  | 
 | ||||||
|  | =head1 NAME | ||||||
|  | 
 | ||||||
|  | parse Chrony Tracking output for timeserver status information | ||||||
|  | 
 | ||||||
|  | =head1 APPLICABLE SYSTEMS | ||||||
|  | 
 | ||||||
|  | Any system with a local chronyd service. | ||||||
|  | 
 | ||||||
|  | =head1 CONFIGURATION | ||||||
|  | 
 | ||||||
|  | No configuration. | ||||||
|  | 
 | ||||||
|  | =head1 MAGIC MARKERS | ||||||
|  | 
 | ||||||
|  |   #%# family=auto | ||||||
|  |   #%# capabilities=autoconf | ||||||
|  | 
 | ||||||
|  | =head1 VERSION | ||||||
|  | 
 | ||||||
|  | Revision 0.1 2008/08/23 13:06:00 joti | ||||||
|  | 
 | ||||||
|  |   First version only chronyc tracking, autodetection included. | ||||||
|  | 
 | ||||||
|  | Revision 0.2 2008/10/11 16:09:00 joti | ||||||
|  | 
 | ||||||
|  |   Added scaling of other values to match with frequency, added more description to fields | ||||||
|  | 
 | ||||||
|  | Revision 0.3 2014/02/16 zjttoefs | ||||||
|  | 
 | ||||||
|  |   reduce forking by using awk | ||||||
|  |   do not limit output precision | ||||||
|  |   add stratum monitoring | ||||||
|  |   detect slow/fast time or freqency and adjust sign of value accordingly | ||||||
|  |   remove commented out code | ||||||
|  | 
 | ||||||
|  | Revision 0.4 2016/11/10 Lars Kruse | ||||||
|  | 
 | ||||||
|  |   rewrite field handling | ||||||
|  |   use "which" for "chronyc" location | ||||||
|  |   switch from "bash" to "sh" | ||||||
|  |   fix exit code of failing "autoconf" | ||||||
|  | 
 | ||||||
|  | =head1 AUTHOR | ||||||
|  | 
 | ||||||
|  |   joti | ||||||
|  |   zjttoefs | ||||||
|  |   Lars Kruse <devel@sumpfralle.de> | ||||||
|  | 
 | ||||||
|  | =cut | ||||||
|  | 
 | ||||||
|  | CHRONYC="$(which chronyc | head -1)" | ||||||
|  | 
 | ||||||
|  | # Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors. | ||||||
|  | # field definitions: | ||||||
|  | #   - munin fieldname | ||||||
|  | #   - factor for graph visualization (all values are supposed to reach a similar dimension) | ||||||
|  | #   - regular expression of the chrony output line (may not contain whitespace, case insensitive) | ||||||
|  | #   - label (may include "%d" for including the factor; may contain whitespace) | ||||||
|  | fields="stratum		1	^Stratum		Stratum" | ||||||
|  | 
 | ||||||
|  | # chrony example output (v2.4.1): | ||||||
|  | #   Reference ID    : 131.188.3.221 (ntp1.rrze.uni-erlangen.de) | ||||||
|  | #   Stratum         : 2 | ||||||
|  | #   Ref time (UTC)  : Thu Nov 10 22:39:50 2016 | ||||||
|  | #   System time     : 0.000503798 seconds slow of NTP time | ||||||
|  | #   Last offset     : +0.000254355 seconds | ||||||
|  | #   RMS offset      : 0.002186779 seconds | ||||||
|  | #   Frequency       : 17.716 ppm slow | ||||||
|  | #   Residual freq   : +0.066 ppm | ||||||
|  | #   Skew            : 4.035 ppm | ||||||
|  | #   Root delay      : 0.042980 seconds | ||||||
|  | #   Root dispersion : 0.005391 seconds | ||||||
|  | #   Update interval : 258.4 seconds | ||||||
|  | #   Leap status     : Normal | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "autoconf" ]; then | ||||||
|  | 	if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then | ||||||
|  | 		echo yes | ||||||
|  | 	else | ||||||
|  | 		echo "no (missing 'chronyc' executable)" | ||||||
|  | 	fi | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "config" ]; then | ||||||
|  | 	echo 'graph_title Chrony Tracking Stats - Stratum' | ||||||
|  | 	echo 'graph_args --base 1000 -l 0' | ||||||
|  | 	echo 'graph_vlabel (stratum)' | ||||||
|  | 	echo 'graph_category time' | ||||||
|  | 	echo 'graph_scale no' | ||||||
|  | 	echo 'stratum.warning 8' | ||||||
|  | 	echo 'stratum.critical 11' | ||||||
|  | 	echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 		# insert the factor, if "%d" is part of the label | ||||||
|  | 		printf "${fieldname}.label $label\n" "$factor" | ||||||
|  | 		echo "${fieldname}.type GAUGE" | ||||||
|  | 	done | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | chrony_status="$("$CHRONYC" tracking)" | ||||||
|  | echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 	status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)" | ||||||
|  | 	if [ -z "$status_line" ]; then | ||||||
|  | 		value="U" | ||||||
|  | 	else | ||||||
|  | 		# the keyword "slow" indicates negative values | ||||||
|  | 		value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')" | ||||||
|  | 	fi | ||||||
|  | 	echo "${fieldname}.value $value" | ||||||
|  | done | ||||||
| @ -0,0 +1,118 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | : <<=cut | ||||||
|  | 
 | ||||||
|  | =head1 NAME | ||||||
|  | 
 | ||||||
|  | parse Chrony Tracking output for timeserver status information | ||||||
|  | 
 | ||||||
|  | =head1 APPLICABLE SYSTEMS | ||||||
|  | 
 | ||||||
|  | Any system with a local chronyd service. | ||||||
|  | 
 | ||||||
|  | =head1 CONFIGURATION | ||||||
|  | 
 | ||||||
|  | No configuration. | ||||||
|  | 
 | ||||||
|  | =head1 MAGIC MARKERS | ||||||
|  | 
 | ||||||
|  |   #%# family=auto | ||||||
|  |   #%# capabilities=autoconf | ||||||
|  | 
 | ||||||
|  | =head1 VERSION | ||||||
|  | 
 | ||||||
|  | Revision 0.1 2008/08/23 13:06:00 joti | ||||||
|  | 
 | ||||||
|  |   First version only chronyc tracking, autodetection included. | ||||||
|  | 
 | ||||||
|  | Revision 0.2 2008/10/11 16:09:00 joti | ||||||
|  | 
 | ||||||
|  |   Added scaling of other values to match with frequency, added more description to fields | ||||||
|  | 
 | ||||||
|  | Revision 0.3 2014/02/16 zjttoefs | ||||||
|  | 
 | ||||||
|  |   reduce forking by using awk | ||||||
|  |   do not limit output precision | ||||||
|  |   add stratum monitoring | ||||||
|  |   detect slow/fast time or freqency and adjust sign of value accordingly | ||||||
|  |   remove commented out code | ||||||
|  | 
 | ||||||
|  | Revision 0.4 2016/11/10 Lars Kruse | ||||||
|  | 
 | ||||||
|  |   rewrite field handling | ||||||
|  |   use "which" for "chronyc" location | ||||||
|  |   switch from "bash" to "sh" | ||||||
|  |   fix exit code of failing "autoconf" | ||||||
|  | 
 | ||||||
|  | =head1 AUTHOR | ||||||
|  | 
 | ||||||
|  |   joti | ||||||
|  |   zjttoefs | ||||||
|  |   Lars Kruse <devel@sumpfralle.de> | ||||||
|  | 
 | ||||||
|  | =cut | ||||||
|  | 
 | ||||||
|  | CHRONYC="$(which chronyc | head -1)" | ||||||
|  | 
 | ||||||
|  | # Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors. | ||||||
|  | # field definitions: | ||||||
|  | #   - munin fieldname | ||||||
|  | #   - factor for graph visualization (all values are supposed to reach a similar dimension) | ||||||
|  | #   - regular expression of the chrony output line (may not contain whitespace, case insensitive) | ||||||
|  | #   - label (may include "%d" for including the factor; may contain whitespace) | ||||||
|  | fields="systime		1000000	^System.time		System Time (us) | ||||||
|  | 	offsetlast	1000000	^Last.offset		Last Offset (us) | ||||||
|  | 	offsetrms	1000000	^RMS.offset		RMS Offset (us) | ||||||
|  | 	rootdelay	1000000	^Root.delay		Root Delay (us) | ||||||
|  | 	rootdispersion	1000000	^Root.dispersion	Root Dispersion (us)" | ||||||
|  | 
 | ||||||
|  | # chrony example output (v2.4.1): | ||||||
|  | #   Reference ID    : 131.188.3.221 (ntp1.rrze.uni-erlangen.de) | ||||||
|  | #   Stratum         : 2 | ||||||
|  | #   Ref time (UTC)  : Thu Nov 10 22:39:50 2016 | ||||||
|  | #   System time     : 0.000503798 seconds slow of NTP time | ||||||
|  | #   Last offset     : +0.000254355 seconds | ||||||
|  | #   RMS offset      : 0.002186779 seconds | ||||||
|  | #   Frequency       : 17.716 ppm slow | ||||||
|  | #   Residual freq   : +0.066 ppm | ||||||
|  | #   Skew            : 4.035 ppm | ||||||
|  | #   Root delay      : 0.042980 seconds | ||||||
|  | #   Root dispersion : 0.005391 seconds | ||||||
|  | #   Update interval : 258.4 seconds | ||||||
|  | #   Leap status     : Normal | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "autoconf" ]; then | ||||||
|  | 	if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then | ||||||
|  | 		echo yes | ||||||
|  | 	else | ||||||
|  | 		echo "no (missing 'chronyc' executable)" | ||||||
|  | 	fi | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "config" ]; then | ||||||
|  | 	echo 'graph_title Chrony Tracking Stats - Time' | ||||||
|  | 	echo 'graph_args --base 1000 -l 0' | ||||||
|  | 	echo 'graph_vlabel (time)' | ||||||
|  | 	echo 'graph_category time' | ||||||
|  | 	echo 'graph_scale no' | ||||||
|  | 	echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 		# insert the factor, if "%d" is part of the label | ||||||
|  | 		printf "${fieldname}.label $label\n" "$factor" | ||||||
|  | 		echo "${fieldname}.type GAUGE" | ||||||
|  | 	done | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | chrony_status="$("$CHRONYC" tracking)" | ||||||
|  | echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 	status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)" | ||||||
|  | 	if [ -z "$status_line" ]; then | ||||||
|  | 		value="U" | ||||||
|  | 	else | ||||||
|  | 		# the keyword "slow" indicates negative values | ||||||
|  | 		value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')" | ||||||
|  | 	fi | ||||||
|  | 	echo "${fieldname}.value $value" | ||||||
|  | done | ||||||
| @ -0,0 +1,115 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | : <<=cut | ||||||
|  | 
 | ||||||
|  | =head1 NAME | ||||||
|  | 
 | ||||||
|  | parse Chrony Tracking output for timeserver status information | ||||||
|  | 
 | ||||||
|  | =head1 APPLICABLE SYSTEMS | ||||||
|  | 
 | ||||||
|  | Any system with a local chronyd service. | ||||||
|  | 
 | ||||||
|  | =head1 CONFIGURATION | ||||||
|  | 
 | ||||||
|  | No configuration. | ||||||
|  | 
 | ||||||
|  | =head1 MAGIC MARKERS | ||||||
|  | 
 | ||||||
|  |   #%# family=auto | ||||||
|  |   #%# capabilities=autoconf | ||||||
|  | 
 | ||||||
|  | =head1 VERSION | ||||||
|  | 
 | ||||||
|  | Revision 0.1 2008/08/23 13:06:00 joti | ||||||
|  | 
 | ||||||
|  |   First version only chronyc tracking, autodetection included. | ||||||
|  | 
 | ||||||
|  | Revision 0.2 2008/10/11 16:09:00 joti | ||||||
|  | 
 | ||||||
|  |   Added scaling of other values to match with frequency, added more description to fields | ||||||
|  | 
 | ||||||
|  | Revision 0.3 2014/02/16 zjttoefs | ||||||
|  | 
 | ||||||
|  |   reduce forking by using awk | ||||||
|  |   do not limit output precision | ||||||
|  |   add stratum monitoring | ||||||
|  |   detect slow/fast time or freqency and adjust sign of value accordingly | ||||||
|  |   remove commented out code | ||||||
|  | 
 | ||||||
|  | Revision 0.4 2016/11/10 Lars Kruse | ||||||
|  | 
 | ||||||
|  |   rewrite field handling | ||||||
|  |   use "which" for "chronyc" location | ||||||
|  |   switch from "bash" to "sh" | ||||||
|  |   fix exit code of failing "autoconf" | ||||||
|  | 
 | ||||||
|  | =head1 AUTHOR | ||||||
|  | 
 | ||||||
|  |   joti | ||||||
|  |   zjttoefs | ||||||
|  |   Lars Kruse <devel@sumpfralle.de> | ||||||
|  | 
 | ||||||
|  | =cut | ||||||
|  | 
 | ||||||
|  | CHRONYC="$(which chronyc | head -1)" | ||||||
|  | 
 | ||||||
|  | # Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors. | ||||||
|  | # field definitions: | ||||||
|  | #   - munin fieldname | ||||||
|  | #   - factor for graph visualization (all values are supposed to reach a similar dimension) | ||||||
|  | #   - regular expression of the chrony output line (may not contain whitespace, case insensitive) | ||||||
|  | #   - label (may include "%d" for including the factor; may contain whitespace) | ||||||
|  | fields="rootdelay	1000000	^Root.delay		Root Delay (us) | ||||||
|  | 	rootdispersion	1000000	^Root.dispersion	Root Dispersion (us)" | ||||||
|  | 
 | ||||||
|  | # chrony example output (v2.4.1): | ||||||
|  | #   Reference ID    : 131.188.3.221 (ntp1.rrze.uni-erlangen.de) | ||||||
|  | #   Stratum         : 2 | ||||||
|  | #   Ref time (UTC)  : Thu Nov 10 22:39:50 2016 | ||||||
|  | #   System time     : 0.000503798 seconds slow of NTP time | ||||||
|  | #   Last offset     : +0.000254355 seconds | ||||||
|  | #   RMS offset      : 0.002186779 seconds | ||||||
|  | #   Frequency       : 17.716 ppm slow | ||||||
|  | #   Residual freq   : +0.066 ppm | ||||||
|  | #   Skew            : 4.035 ppm | ||||||
|  | #   Root delay      : 0.042980 seconds | ||||||
|  | #   Root dispersion : 0.005391 seconds | ||||||
|  | #   Update interval : 258.4 seconds | ||||||
|  | #   Leap status     : Normal | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "autoconf" ]; then | ||||||
|  | 	if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then | ||||||
|  | 		echo yes | ||||||
|  | 	else | ||||||
|  | 		echo "no (missing 'chronyc' executable)" | ||||||
|  | 	fi | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "config" ]; then | ||||||
|  | 	echo 'graph_title Chrony Tracking Stats - Root Time' | ||||||
|  | 	echo 'graph_args --base 1000 -l 0' | ||||||
|  | 	echo 'graph_vlabel (time)' | ||||||
|  | 	echo 'graph_category time' | ||||||
|  | 	echo 'graph_scale no' | ||||||
|  | 	echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 		# insert the factor, if "%d" is part of the label | ||||||
|  | 		printf "${fieldname}.label $label\n" "$factor" | ||||||
|  | 		echo "${fieldname}.type GAUGE" | ||||||
|  | 	done | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | chrony_status="$("$CHRONYC" tracking)" | ||||||
|  | echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 	status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)" | ||||||
|  | 	if [ -z "$status_line" ]; then | ||||||
|  | 		value="U" | ||||||
|  | 	else | ||||||
|  | 		# the keyword "slow" indicates negative values | ||||||
|  | 		value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')" | ||||||
|  | 	fi | ||||||
|  | 	echo "${fieldname}.value $value" | ||||||
|  | done | ||||||
| @ -0,0 +1,114 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | : <<=cut | ||||||
|  | 
 | ||||||
|  | =head1 NAME | ||||||
|  | 
 | ||||||
|  | parse Chrony Tracking output for timeserver status information | ||||||
|  | 
 | ||||||
|  | =head1 APPLICABLE SYSTEMS | ||||||
|  | 
 | ||||||
|  | Any system with a local chronyd service. | ||||||
|  | 
 | ||||||
|  | =head1 CONFIGURATION | ||||||
|  | 
 | ||||||
|  | No configuration. | ||||||
|  | 
 | ||||||
|  | =head1 MAGIC MARKERS | ||||||
|  | 
 | ||||||
|  |   #%# family=auto | ||||||
|  |   #%# capabilities=autoconf | ||||||
|  | 
 | ||||||
|  | =head1 VERSION | ||||||
|  | 
 | ||||||
|  | Revision 0.1 2008/08/23 13:06:00 joti | ||||||
|  | 
 | ||||||
|  |   First version only chronyc tracking, autodetection included. | ||||||
|  | 
 | ||||||
|  | Revision 0.2 2008/10/11 16:09:00 joti | ||||||
|  | 
 | ||||||
|  |   Added scaling of other values to match with frequency, added more description to fields | ||||||
|  | 
 | ||||||
|  | Revision 0.3 2014/02/16 zjttoefs | ||||||
|  | 
 | ||||||
|  |   reduce forking by using awk | ||||||
|  |   do not limit output precision | ||||||
|  |   add stratum monitoring | ||||||
|  |   detect slow/fast time or freqency and adjust sign of value accordingly | ||||||
|  |   remove commented out code | ||||||
|  | 
 | ||||||
|  | Revision 0.4 2016/11/10 Lars Kruse | ||||||
|  | 
 | ||||||
|  |   rewrite field handling | ||||||
|  |   use "which" for "chronyc" location | ||||||
|  |   switch from "bash" to "sh" | ||||||
|  |   fix exit code of failing "autoconf" | ||||||
|  | 
 | ||||||
|  | =head1 AUTHOR | ||||||
|  | 
 | ||||||
|  |   joti | ||||||
|  |   zjttoefs | ||||||
|  |   Lars Kruse <devel@sumpfralle.de> | ||||||
|  | 
 | ||||||
|  | =cut | ||||||
|  | 
 | ||||||
|  | CHRONYC="$(which chronyc | head -1)" | ||||||
|  | 
 | ||||||
|  | # Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors. | ||||||
|  | # field definitions: | ||||||
|  | #   - munin fieldname | ||||||
|  | #   - factor for graph visualization (all values are supposed to reach a similar dimension) | ||||||
|  | #   - regular expression of the chrony output line (may not contain whitespace, case insensitive) | ||||||
|  | #   - label (may include "%d" for including the factor; may contain whitespace) | ||||||
|  | fields="updateinterval	1	^Update.interval	Update Interval (s)" | ||||||
|  | 
 | ||||||
|  | # chrony example output (v2.4.1): | ||||||
|  | #   Reference ID    : 131.188.3.221 (ntp1.rrze.uni-erlangen.de) | ||||||
|  | #   Stratum         : 2 | ||||||
|  | #   Ref time (UTC)  : Thu Nov 10 22:39:50 2016 | ||||||
|  | #   System time     : 0.000503798 seconds slow of NTP time | ||||||
|  | #   Last offset     : +0.000254355 seconds | ||||||
|  | #   RMS offset      : 0.002186779 seconds | ||||||
|  | #   Frequency       : 17.716 ppm slow | ||||||
|  | #   Residual freq   : +0.066 ppm | ||||||
|  | #   Skew            : 4.035 ppm | ||||||
|  | #   Root delay      : 0.042980 seconds | ||||||
|  | #   Root dispersion : 0.005391 seconds | ||||||
|  | #   Update interval : 258.4 seconds | ||||||
|  | #   Leap status     : Normal | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "autoconf" ]; then | ||||||
|  | 	if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then | ||||||
|  | 		echo yes | ||||||
|  | 	else | ||||||
|  | 		echo "no (missing 'chronyc' executable)" | ||||||
|  | 	fi | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ "$1" = "config" ]; then | ||||||
|  | 	echo 'graph_title Chrony Tracking Stats - Update interval' | ||||||
|  | 	echo 'graph_args --base 1000 -l 0' | ||||||
|  | 	echo 'graph_vlabel (time)' | ||||||
|  | 	echo 'graph_category time' | ||||||
|  | 	echo 'graph_scale no' | ||||||
|  | 	echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 		# insert the factor, if "%d" is part of the label | ||||||
|  | 		printf "${fieldname}.label $label\n" "$factor" | ||||||
|  | 		echo "${fieldname}.type GAUGE" | ||||||
|  | 	done | ||||||
|  | 	exit 0 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | chrony_status="$("$CHRONYC" tracking)" | ||||||
|  | echo "$fields" | while read fieldname factor regex label; do | ||||||
|  | 	status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)" | ||||||
|  | 	if [ -z "$status_line" ]; then | ||||||
|  | 		value="U" | ||||||
|  | 	else | ||||||
|  | 		# the keyword "slow" indicates negative values | ||||||
|  | 		value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')" | ||||||
|  | 	fi | ||||||
|  | 	echo "${fieldname}.value $value" | ||||||
|  | done | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   annuaire = config.r6d.machines; | ||||||
|  |   currentMachine = annuaire."${config.networking.fqdn}"; | ||||||
|  |   flags = currentMachine.configurationFlags; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf flags.pipewire { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     helvum        # patchbay pipewire | ||||||
|  |     paprefs       # préferences pulseaudio | ||||||
|  |     pavucontrol   # mixer pulseaudio | ||||||
|  |     pa_applet     # status et contrôle dans le system tray | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   security.rtkit.enable = true; | ||||||
|  | 
 | ||||||
|  |   services.pipewire = { | ||||||
|  |     enable = true; | ||||||
|  |     alsa.enable = true; | ||||||
|  |     alsa.support32Bit = true; | ||||||
|  |     pulse.enable = true; | ||||||
|  |     # If you want to use JACK applications, uncomment this | ||||||
|  |     jack.enable = true; | ||||||
|  |    | ||||||
|  |     # use the example session manager (no others are packaged yet so this is enabled by default, | ||||||
|  |     # no need to redefine it in your config for now) | ||||||
|  |     #media-session.enable = true; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in New Issue