{ config, lib, pkgs, sources, ... }: let determinate = (import sources.flake-compat { src = sources.determinate; }).outputs; dix = (import sources.flake-compat { src = determinate.inputs.nix; }) .outputs.packages.${pkgs.stdenv.system}.nix; # Stronger than mkDefault (1000), weaker than mkForce (50) and the "default override priority" # (100). mkPreferable = lib.mkOverride 750; # Stronger than the "default override priority", as the upstream module uses that, and weaker than mkForce (50). mkMorePreferable = lib.mkOverride 75; in { config = { nix = { package = dix; }; environment.systemPackages = [ determinate.packages.${pkgs.stdenv.system}.default ]; # NOTE(cole-h): Move the generated nix.conf to /etc/nix/nix.custom.conf, which is included from # the Determinate Nixd-managed /etc/nix/nix.conf. environment.etc."nix/nix.conf".target = "nix/nix.custom.conf"; systemd = { services.nix-daemon.serviceConfig = { ExecStart = [ "" "@${ determinate.packages.${pkgs.stdenv.system}.default }/bin/determinate-nixd determinate-nixd --nix-bin ${config.nix.package}/bin daemon" ]; KillMode = mkPreferable "process"; LimitNOFILE = mkMorePreferable 1048576; LimitSTACK = mkPreferable "64M"; TasksMax = mkPreferable 1048576; }; sockets = { nix-daemon.socketConfig.FileDescriptorName = "nix-daemon.socket"; determinate-nixd = { description = "Determinate Nixd Daemon Socket"; wantedBy = [ "sockets.target" ]; before = [ "multi-user.target" ]; unitConfig = { RequiresMountsFor = [ "/nix/store" "/nix/var/determinate" ]; }; socketConfig = { Service = "nix-daemon.service"; FileDescriptorName = "determinate-nixd.socket"; ListenStream = "/nix/var/determinate/determinate-nixd.socket"; DirectoryMode = "0755"; }; }; }; }; }; }