Используйте strftime
в модуле zsh/datetime
для преобразования календарного времени в эпоху Unix (с помощью-r
)или обратно. Для генерации случайных чисел у вас есть $RANDOM
, как и в ksh
, но это только 15-битное целое число или rand48()
математическая функция (в функции zsh/mathfunc
).
#! /bin/zsh -
start=11.11.2017
end=12.12.2017
TZ=UTC0 # timezone doesn't matter here. We use UTC0 to make sure there's
# DST/change
zmodload zsh/datetime
zmodload zsh/mathfunc
strftime -rs start_t %d.%m.%Y $start
strftime -rs end_t %d.%m.%Y $end
for ((t = start_t; t <= end_t; t += 24*60*60)) {
strftime -s weekday %u $t
if ((weekday < 6)) { # Monday to Friday
strftime -s s '%d.%m.%Y %H:%M' $((t + 8 * 60*60))
strftime -s e '%H:%M' $((t + 16*60*60 - 15*60 + int(rand48() * 30*60)))
print $s - $e
}
}
Я взглянул на выражения Firefox Nix и не нашел способа предоставить policies.json
.
Если вы измените пакет так, чтобы вы могли предоставить политику в качестве входных данных для дериватива, это будет работать, но тогда пользователям придется нести бремя компиляции Firefox; Потому что файл будет вводом сборки.
Если Firefox предоставляет способ указать, где найти файл политик во время выполнения, это может быть идеальным решением. В противном случае вы можете добавить патч в пакет Firefox, который изменяет исходный код для поиска файла политик, скажем... /etc/firefox/policies.json
. С этим изменением вы можете использовать модуль environment
NixOS в /etc/nixos/configuration.nix
для создания политик. Примерно так:
environment.etc."firefox/policies".text = "INSERT POLICY HERE";