mirror of
https://github.com/LnL7/nix-darwin.git
synced 2025-03-31 04:04:45 +00:00
hydra: use nix.gc.automatic
This commit is contained in:
parent
750e02b10c
commit
d049c7b97a
4 changed files with 51 additions and 65 deletions
|
@ -45,7 +45,7 @@ let
|
||||||
./modules/services/emacs.nix
|
./modules/services/emacs.nix
|
||||||
./modules/services/mopidy.nix
|
./modules/services/mopidy.nix
|
||||||
./modules/services/nix-daemon.nix
|
./modules/services/nix-daemon.nix
|
||||||
./modules/services/nix-gc.nix
|
./modules/services/nix-gc
|
||||||
./modules/services/postgresql
|
./modules/services/postgresql
|
||||||
./modules/programs/bash.nix
|
./modules/programs/bash.nix
|
||||||
./modules/programs/fish.nix
|
./modules/programs/fish.nix
|
||||||
|
|
|
@ -18,20 +18,17 @@ with lib;
|
||||||
|
|
||||||
services.nix-daemon.enable = true;
|
services.nix-daemon.enable = true;
|
||||||
|
|
||||||
|
nix.trustedUsers = [ "@hydra" ];
|
||||||
|
|
||||||
nix.extraOptions = ''
|
nix.extraOptions = ''
|
||||||
pre-build-hook =
|
pre-build-hook =
|
||||||
'';
|
'';
|
||||||
|
|
||||||
environment.etc."per-user/lnl/.ssh/authorized_keys".text = concatStringsSep "\n"
|
nix.gc.automatic = true;
|
||||||
|
nix.gc.options = "--max-freed $((25 * 1024**3 - 1024 * $(df -P -k /nix/store | tail -n 1 | awk '{ print $4 }')))";
|
||||||
|
|
||||||
|
environment.etc."per-user/hydra/ssh/authorized_keys".text = concatStringsSep "\n"
|
||||||
[ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCVsc0pHGsskoayziMhA2e59bHPWe0bbKgusmqhuJFBGQ1BAk9UmPzKCWE3nCiV6CLD1+SygVkBjb06DYtc+94BnzviCa9qZtL0G4+2vhp6x8OvXh8xlf/eWw3k5MWlvu+kjJFpbW8wHWTiUqzH+uEeHklAosT0lFNjiIYd/Vs3JAezhUR62a6c7ZjWOd5F7ALGEKzOiwC4i37kSgGsIWNCbe0Ku7gyr718zhMGeyxax6saHhnkSpIB+7d6oHhKeiJSFMWctNmz1/qxXUPbxNaJvqgdKlVHhN+B7x/TIbkVr5pTC59Okx9LTcpflFIv79VT+Gf1K7VypZpSvJjG0xFRt8iDs1+ssWFBfvpo94vUbZ+ZwMDcBGR5iJeO41Gj5fYn5aaDl32RXfJ9Fkwael1L6pcXtkIc66jk+KQQpgoeNj8Y3Emntpqva/2AM41wDDvr5tKp5KhEKFLM95CoiWq+g88pZLcpqLK7wooDVqNkVUEbMaj9lBN0AzU9mcsIRGvTa6CmWAdBvwqS2fRZD97Oarqct9AWgb0X6mOUq9BJNi4i4xvjgnVkylLwtLUnibR/PeXMtkb9bv6BEZXNf5ACqxSjKXJyaIHI65I5TILCr5eEgaujgvmkREn6U3T1NZAUIeVe9aVYLqehYh79OHUBzggoHqidRrXBB/6zdg9UgQ=="
|
[ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCVsc0pHGsskoayziMhA2e59bHPWe0bbKgusmqhuJFBGQ1BAk9UmPzKCWE3nCiV6CLD1+SygVkBjb06DYtc+94BnzviCa9qZtL0G4+2vhp6x8OvXh8xlf/eWw3k5MWlvu+kjJFpbW8wHWTiUqzH+uEeHklAosT0lFNjiIYd/Vs3JAezhUR62a6c7ZjWOd5F7ALGEKzOiwC4i37kSgGsIWNCbe0Ku7gyr718zhMGeyxax6saHhnkSpIB+7d6oHhKeiJSFMWctNmz1/qxXUPbxNaJvqgdKlVHhN+B7x/TIbkVr5pTC59Okx9LTcpflFIv79VT+Gf1K7VypZpSvJjG0xFRt8iDs1+ssWFBfvpo94vUbZ+ZwMDcBGR5iJeO41Gj5fYn5aaDl32RXfJ9Fkwael1L6pcXtkIc66jk+KQQpgoeNj8Y3Emntpqva/2AM41wDDvr5tKp5KhEKFLM95CoiWq+g88pZLcpqLK7wooDVqNkVUEbMaj9lBN0AzU9mcsIRGvTa6CmWAdBvwqS2fRZD97Oarqct9AWgb0X6mOUq9BJNi4i4xvjgnVkylLwtLUnibR/PeXMtkb9bv6BEZXNf5ACqxSjKXJyaIHI65I5TILCr5eEgaujgvmkREn6U3T1NZAUIeVe9aVYLqehYh79OHUBzggoHqidRrXBB/6zdg9UgQ=="
|
||||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCnubA1pRqlpoAXkZ1q5nwhqi1RY2z840wFLFDj7vAMSups9E2U8PNIVtuVYApZpkBWIpzD4GGbQTF5Itnu5uBpJswc2Yat9yGWO/guuVyXIaRoBIM0Pg1WBWcWsz+k4rNludu9UQ74FHqEiqZIuIuOcgV+RIZn8xQlGt2kUqN9TWboHhZz8Zhx7EtGSJH6MJRLn3mA/pPjOF6k1jiiFG1pVDuqBTZPANkelWYCWAJ46jCyhxXltWE/jkBYGc/XbB8yT7DFE1XC6TVsSEp68R9PhVG3yqxqY06sniEyduSoGt/TDr6ycERd93bvLElXFATes85YiFszeaUgayYSKwQPe0q7YeHMhIXL0UYJYaKVVgT9saFDiHDzde7kKe+NA+J4+TbIk7Y/Ywn0jepsYV13M7TyEqgqbu9fvVGF3JI9+4g0m1gAzHTa7n6iiAedtz+Pi79uCEpRD2hWSSoLWroyPlep8j1p2tygtFsrieePEukesoToCTwqg1Ejnjh+yKdtUbc6xpyRvl3hKeO8QbCpfaaVd27e4vE4lP2JMW6nOo8b0wlVXQIFe5K2zh52q1MSwhLAq6Kg8oPmgj0lru4IivmPc+/NVwd3Qj3E9ZB8LRfTesfbcxHrC8lF5dL/QpLMeLwebrwCxL19gI0kxmDIaUQuHSyP3B2z+EmBKcN/Xw=="
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCnubA1pRqlpoAXkZ1q5nwhqi1RY2z840wFLFDj7vAMSups9E2U8PNIVtuVYApZpkBWIpzD4GGbQTF5Itnu5uBpJswc2Yat9yGWO/guuVyXIaRoBIM0Pg1WBWcWsz+k4rNludu9UQ74FHqEiqZIuIuOcgV+RIZn8xQlGt2kUqN9TWboHhZz8Zhx7EtGSJH6MJRLn3mA/pPjOF6k1jiiFG1pVDuqBTZPANkelWYCWAJ46jCyhxXltWE/jkBYGc/XbB8yT7DFE1XC6TVsSEp68R9PhVG3yqxqY06sniEyduSoGt/TDr6ycERd93bvLElXFATes85YiFszeaUgayYSKwQPe0q7YeHMhIXL0UYJYaKVVgT9saFDiHDzde7kKe+NA+J4+TbIk7Y/Ywn0jepsYV13M7TyEqgqbu9fvVGF3JI9+4g0m1gAzHTa7n6iiAedtz+Pi79uCEpRD2hWSSoLWroyPlep8j1p2tygtFsrieePEukesoToCTwqg1Ejnjh+yKdtUbc6xpyRvl3hKeO8QbCpfaaVd27e4vE4lP2JMW6nOo8b0wlVXQIFe5K2zh52q1MSwhLAq6Kg8oPmgj0lru4IivmPc+/NVwd3Qj3E9ZB8LRfTesfbcxHrC8lF5dL/QpLMeLwebrwCxL19gI0kxmDIaUQuHSyP3B2z+EmBKcN/Xw=="
|
||||||
];
|
];
|
||||||
|
|
||||||
launchd.daemons.nix-gc = {
|
|
||||||
command = "${config.nix.package}/bin/nix-collect-garbage -d";
|
|
||||||
environment.NIX_REMOTE = optionalString config.services.activate-system.enable "daemon";
|
|
||||||
serviceConfig.KeepAlive = false;
|
|
||||||
serviceConfig.ProcessType = "Background";
|
|
||||||
serviceConfig.StartInterval = 86400;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.nix.gc;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
options = {
|
|
||||||
nix.gc = {
|
|
||||||
|
|
||||||
automatic = mkOption {
|
|
||||||
default = false;
|
|
||||||
type = types.bool;
|
|
||||||
description = "Automatically run the garbage collector at a specific time.";
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: parse dates
|
|
||||||
# dates = mkOption {
|
|
||||||
# default = "03:15";
|
|
||||||
# type = types.str;
|
|
||||||
# description = ''
|
|
||||||
# Specification (in the format described by
|
|
||||||
# <citerefentry><refentrytitle>systemd.time</refentrytitle>
|
|
||||||
# <manvolnum>5</manvolnum></citerefentry>) of the time at
|
|
||||||
# which the garbage collector will run.
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
|
|
||||||
options = mkOption {
|
|
||||||
default = "";
|
|
||||||
example = "--max-freed $((64 * 1024**3))";
|
|
||||||
type = types.str;
|
|
||||||
description = ''
|
|
||||||
Options given to <filename>nix-collect-garbage</filename> when the
|
|
||||||
garbage collector is run automatically.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.automatic {
|
|
||||||
|
|
||||||
launchd.daemons.nix-gc = {
|
|
||||||
command = "${config.nix.package}/bin/nix-collect-garbage ${cfg.options}";
|
|
||||||
serviceConfig.RunAtLoad = false;
|
|
||||||
serviceConfig.StartCalendarInterval = mkDefault
|
|
||||||
[ { Hour = 3; Minute = 15; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
44
modules/services/nix-gc/default.nix
Normal file
44
modules/services/nix-gc/default.nix
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nix.gc;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
nix.gc.automatic = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Automatically run the garbage collector at a specific time.";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.gc.interval = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = { Hour = 3; Minute = 15; };
|
||||||
|
description = "The time interval at which the garbage collector will run.";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.gc.options = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "";
|
||||||
|
example = "--max-freed $((64 * 1024**3))";
|
||||||
|
description = ''
|
||||||
|
Options given to <filename>nix-collect-garbage</filename> when the
|
||||||
|
garbage collector is run automatically.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.automatic {
|
||||||
|
|
||||||
|
launchd.daemons.nix-gc = {
|
||||||
|
command = "${config.nix.package}/bin/nix-collect-garbage ${cfg.options}";
|
||||||
|
environment.NIX_REMOTE = optionalString config.services.nix-daemon.enable "daemon";
|
||||||
|
serviceConfig.RunAtLoad = false;
|
||||||
|
serviceConfig.StartCalendarInterval = [ cfg.interval ];
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue