1
0
mirror of https://github.com/ellmau/nixos.git synced 2025-12-19 09:29:36 +01:00
nixos/modules/nix-index-db.nix

60 lines
1.7 KiB
Nix

{
config,
pkgs,
lib,
...
}:
with lib; {
options.elss.nix-index-db-update.enable =
mkEnableOption "periodically update the nix-index database";
config = let
cfg = config.elss.nix-index-db-update;
nix-index-db-update = pkgs.writeShellScript "nix-index-db-update" ''
set -euo pipefail
filename="index-x86_64-$(${pkgs.coreutils}/bin/uname | ${pkgs.coreutils}/bin/tr A-Z a-z)"
cd /var/db/nix-index/
${pkgs.wget}/bin/wget -q -N https://github.com/Mic92/nix-index-database/releases/latest/download/$filename
${pkgs.coreutils}/bin/ln -f $filename files
'';
inherit (lib.elss.withConfig config) mapAllUsers;
in
mkIf cfg.enable {
systemd = {
services.nix-index-db-update = {
description = "Update nix-index database";
serviceConfig = {
CPUSchedulingPolicy = "idle";
IOSchedulingClass = "idle";
ExecStartPre = [
"+${pkgs.coreutils}/bin/mkdir -p /var/db/nix-index/"
"+${pkgs.coreutils}/bin/chown nobody:nobody /var/db/nix-index/"
];
ExecStart = toString nix-index-db-update;
User = "nobody";
Group = "nobody";
};
};
timers.nix-index-db-update = {
description = "nix-index database periodic update";
timerConfig = {
Unit = "nix-index-db-update.service";
OnCalendar = "daily";
Persistent = true;
};
wantedBy = ["timers.target"];
};
};
home-manager.users = mapAllUsers (_: {config, ...}: {
home.file.".cache/nix-index".source =
config.lib.file.mkOutOfStoreSymlink "/var/db/nix-index/";
});
};
}