diff --git a/flake.nix b/flake.nix index 339c0d4..76b531a 100644 --- a/flake.nix +++ b/flake.nix @@ -144,6 +144,7 @@ flake.darwinModules = { common = ./modules/darwin/common; + builder = ./modules/darwin/builder.nix; hercules-ci = ./modules/darwin/hercules-ci; remote-builder = ./modules/darwin/remote-builder.nix; }; @@ -151,6 +152,7 @@ flake.nixosModules = { common = ./modules/nixos/common; + builder = ./modules/nixos/builder.nix; cachix-deploy = ./modules/nixos/cachix-deploy; community-builder = ./modules/nixos/community-builder; github-org-backup = ./modules/nixos/github-org-backup.nix; diff --git a/hosts/build01/configuration.nix b/hosts/build01/configuration.nix index 4f662dd..2763b70 100644 --- a/hosts/build01/configuration.nix +++ b/hosts/build01/configuration.nix @@ -13,6 +13,7 @@ imports = [ inputs.srvos.nixosModules.hardware-hetzner-online-amd inputs.self.nixosModules.common + inputs.self.nixosModules.builder inputs.self.nixosModules.zfs inputs.self.nixosModules.community-builder ]; diff --git a/hosts/build02/configuration.nix b/hosts/build02/configuration.nix index d2e6c68..bf5b20e 100644 --- a/hosts/build02/configuration.nix +++ b/hosts/build02/configuration.nix @@ -7,6 +7,7 @@ ./nixpkgs-update.nix ./nixpkgs-update-backup.nix inputs.self.nixosModules.common + inputs.self.nixosModules.builder inputs.self.nixosModules.hercules-ci inputs.self.nixosModules.zfs ]; diff --git a/hosts/build03/configuration.nix b/hosts/build03/configuration.nix index 87e5acd..b3f444d 100644 --- a/hosts/build03/configuration.nix +++ b/hosts/build03/configuration.nix @@ -13,6 +13,7 @@ inputs.srvos.nixosModules.mixins-nginx inputs.srvos.nixosModules.hardware-hetzner-online-amd inputs.self.nixosModules.common + inputs.self.nixosModules.builder inputs.self.nixosModules.hercules-ci inputs.self.nixosModules.watch-store inputs.self.nixosModules.zfs diff --git a/hosts/build04/configuration.nix b/hosts/build04/configuration.nix index c573e94..3391cd2 100644 --- a/hosts/build04/configuration.nix +++ b/hosts/build04/configuration.nix @@ -4,6 +4,7 @@ inputs.disko.nixosModules.disko ./hardware-configuration.nix inputs.self.nixosModules.common + inputs.self.nixosModules.builder inputs.self.nixosModules.hercules-ci inputs.self.nixosModules.remote-builder ]; diff --git a/hosts/darwin02/configuration.nix b/hosts/darwin02/configuration.nix index 7f0fc58..447dda0 100644 --- a/hosts/darwin02/configuration.nix +++ b/hosts/darwin02/configuration.nix @@ -3,6 +3,7 @@ { imports = [ inputs.self.darwinModules.common + inputs.self.darwinModules.builder inputs.self.darwinModules.hercules-ci inputs.self.darwinModules.remote-builder ]; diff --git a/hosts/darwin03/configuration.nix b/hosts/darwin03/configuration.nix index 2a82ab8..d303b67 100644 --- a/hosts/darwin03/configuration.nix +++ b/hosts/darwin03/configuration.nix @@ -3,6 +3,7 @@ { imports = [ inputs.self.darwinModules.common + inputs.self.darwinModules.builder inputs.self.darwinModules.hercules-ci inputs.self.darwinModules.remote-builder ]; diff --git a/modules/darwin/builder.nix b/modules/darwin/builder.nix new file mode 100644 index 0000000..8a531c8 --- /dev/null +++ b/modules/darwin/builder.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ../shared/builder.nix + ]; + + nix.gc.interval = { Minute = 15; }; +} diff --git a/modules/nixos/builder.nix b/modules/nixos/builder.nix new file mode 100644 index 0000000..d509dfa --- /dev/null +++ b/modules/nixos/builder.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ../shared/builder.nix + ]; + + nix.gc.dates = "hourly"; +} diff --git a/modules/shared/builder.nix b/modules/shared/builder.nix new file mode 100644 index 0000000..0eec9d7 --- /dev/null +++ b/modules/shared/builder.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: +let + asGB = size: toString (size * 1024 * 1024 * 1024); +in +{ + nix.gc.options = '' + --max-freed "$((${asGB 50} * 1024**3 - 1024 * $(df -P -k /nix/store | tail -n 1 | ${pkgs.gawk}/bin/awk '{ print $4 }')))" + ''; +} diff --git a/modules/shared/nix-daemon.nix b/modules/shared/nix-daemon.nix index 5e16bee..9eaf009 100644 --- a/modules/shared/nix-daemon.nix +++ b/modules/shared/nix-daemon.nix @@ -25,6 +25,6 @@ in nixPath = pkgs.lib.mkForce [ "nixpkgs=${pkgs.path}" ]; gc.automatic = true; - gc.options = "--delete-older-than 14d"; + gc.options = pkgs.lib.mkDefault "--delete-older-than 14d"; }; }