summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Biz/Bild.nix3
-rw-r--r--Biz/Bild/CcacheWrapper.nix57
-rw-r--r--Biz/Bild/Nixpkgs.nix4
-rw-r--r--Biz/OsBase.nix5
4 files changed, 66 insertions, 3 deletions
diff --git a/Biz/Bild.nix b/Biz/Bild.nix
index 077f364..c92f749 100644
--- a/Biz/Bild.nix
+++ b/Biz/Bild.nix
@@ -7,7 +7,8 @@ let
stable = {
inherit (nixpkgs.nixos-23_05)
sources lib makeWrapper ccacheStdenv haskellPackages haskell
- lispPackages_new python3 nixos mkShell dockerTools stdenv;
+ lispPackages_new python3 nixos mkShell dockerTools;
+ stdenv = nixpkgs.nixos-23_05.ccacheStdenv;
};
# for exposing packages as bild.pkgs
diff --git a/Biz/Bild/CcacheWrapper.nix b/Biz/Bild/CcacheWrapper.nix
new file mode 100644
index 0000000..78e5a08
--- /dev/null
+++ b/Biz/Bild/CcacheWrapper.nix
@@ -0,0 +1,57 @@
+self: super:
+
+let
+ # this should come from config.programs.ccache.cacheDir but I can't figure out
+ # how to access that from a nixpkgs overlay, so just hardcode the default
+ ccacheDir = "/var/cache/ccache";
+
+ # https://github.com/NixOS/nixpkgs/pull/216363#issuecomment-1430356886
+ fixwebkit = pkg:
+ self.useCcacheStdenv (pkg.overrideAttrs (attrs: rec {
+ preConfigure = attrs.preConfigure + ''
+ # not sure which of these works so just do them both
+ export NUMBER_OF_PROCESSORS=$NIX_BUILD_CORES
+ ninjaFlagsArray+=("-l$NIX_BUILD_CORES")
+ '';
+ }));
+in {
+ ccacheWrapper = super.ccacheWrapper.override {
+ extraConfig = ''
+ export CCACHE_COMPRESS=1
+ export CCACHE_DIR="${ccacheDir}"
+ export CCACHE_UMASK=007
+ if [ ! -d "$CCACHE_DIR" ]
+ then
+ echo "====="
+ echo "Directory '$CCACHE_DIR' does not exist"
+ echo "Please create it with:"
+ echo " sudo mkdir -m0770 '$CCACHE_DIR'"
+ echo " sudo chown root:nixbld '$CCACHE_DIR'"
+ echo "====="
+ exit 1
+ fi
+ if [ ! -w "$CCACHE_DIR" ]
+ then
+ echo "====="
+ echo "Directory '$CCACHE_DIR' is not accessible for user $(whoami)"
+ echo "Please verify its access permissions"
+ echo "====="
+ exit 1
+ fi
+ '';
+ };
+
+ useCcacheStdenv = pkg: pkg.override { stdenv = super.ccacheStdenv; };
+
+ cudann = self.useCcacheStdenv super.cudann;
+ llvm = self.useCcacheStdenv super.llvm;
+ magma = self.useCcacheStdenv super.magma;
+ nvcc = self.useCcacheStdenv super.nvcc;
+ onnx = self.useCcacheStdenv super.onnx;
+ onnxruntime = self.useCcacheStdenv super.onnxruntime;
+ webkit = fixwebkit super.webkit;
+ webkitgtk = fixwebkit super.webkitgtk;
+ webkitgtk_4_1 = fixwebkit super.webkitgtk_4_1;
+ webkitgtk_5_0 = fixwebkit super.webkitgtk_5_0;
+ webkitgtk_6_0 = fixwebkit super.webkitgtk_6_0;
+}
diff --git a/Biz/Bild/Nixpkgs.nix b/Biz/Bild/Nixpkgs.nix
index f0e8698..3de56c4 100644
--- a/Biz/Bild/Nixpkgs.nix
+++ b/Biz/Bild/Nixpkgs.nix
@@ -16,7 +16,7 @@ in {
inherit system config;
overlays = [
(_: _: { inherit sources; })
-
+ (import ./CcacheWrapper.nix)
(import ./Functions.nix)
# override pinned deps with our sources, this must come before other
@@ -33,6 +33,7 @@ in {
inherit system config;
overlays = [
(_: _: { inherit sources; })
+ (import ./CcacheWrapper.nix)
(import ./Functions.nix)
(import ./Deps.nix)
];
@@ -42,6 +43,7 @@ in {
inherit system config;
overlays = [
(_: _: { inherit sources; })
+ (import ./CcacheWrapper.nix)
(import ./Functions.nix)
(import ./Deps.nix)
];
diff --git a/Biz/OsBase.nix b/Biz/OsBase.nix
index 50899d2..a9407ab 100644
--- a/Biz/OsBase.nix
+++ b/Biz/OsBase.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ pkgs, config, ... }:
let ports = import ./Cloud/Ports.nix;
in {
boot.tmp.cleanOnBoot = true;
@@ -19,6 +19,8 @@ in {
nix.gc.dates = "Sunday 02:15";
nix.optimise.automatic = true;
nix.optimise.dates = [ "Sunday 02:30" ];
+ nix.settings.extra-sandbox-paths = [ config.programs.ccache.cacheDir ];
+ programs.ccache.enable = true;
programs.mosh.enable = true;
programs.mosh.withUtempter = true;
security.acme.defaults.email = "ben@bsima.me";
@@ -34,4 +36,5 @@ in {
services.openssh.settings.PasswordAuthentication = false;
services.openssh.settings.PermitRootLogin = "prohibit-password";
system.autoUpgrade.enable = false; # 'true' breaks our nixpkgs pin
+ zramSwap.enable = true;
}