Compare commits
	
		
			129 Commits 
		
	
	
		
			2017-07-05
			...
			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 | 
|  | 19bd8fbfbc | 8 years ago | 
|  | 630217ce02 | 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. | ||||
|     # 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) | ||||
|     name = "vim"; | ||||
|     vimrcConfig.customRC = builtins.readFile ./vimrc; | ||||
|   vimrcConfig.vam.knownPlugins = pkgs.vimPlugins; | ||||
|   vimrcConfig.vam.pluginDictionaries = [ | ||||
|     { names = [ | ||||
|       # 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" | ||||
|     ]; } | ||||
|     vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; { | ||||
|       start = [ | ||||
|         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