summaryrefslogtreecommitdiff
path: root/modules/nixos/traits/determinate.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos/traits/determinate.nix')
-rw-r--r--modules/nixos/traits/determinate.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/modules/nixos/traits/determinate.nix b/modules/nixos/traits/determinate.nix
new file mode 100644
index 0000000..459b128
--- /dev/null
+++ b/modules/nixos/traits/determinate.nix
@@ -0,0 +1,63 @@
+{
+ config,
+ lib,
+ inputs',
+ ...
+}:
+
+let
+ cfg = config.traits.determinate;
+
+ package = inputs'.determinate.packages.default;
+in
+
+{
+ config = lib.mkIf cfg.enable (
+ lib.mkMerge [
+ (lib.mkIf cfg.determinate-nixd.enable {
+ environment.systemPackages = [
+ package
+ ];
+
+ systemd = {
+ services.nix-daemon.serviceConfig = {
+ ExecStart = [
+ ""
+ "@${lib.getExe' package "determinate-nixd"} determinate-nixd --nix-bin ${config.nix.package}/bin daemon"
+ ];
+ KillMode = lib.mkDefault "process";
+ LimitNOFILE = lib.mkDefault 1048576;
+ LimitSTACK = lib.mkDefault "64M";
+ TasksMax = lib.mkDefault 1048576;
+ };
+
+ sockets = {
+ 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";
+ };
+ };
+
+ nix-daemon.socketConfig = {
+ FileDescriptorName = "nix-daemon.socket";
+ };
+ };
+ };
+ })
+ ]
+ );
+}