From 748ecccad3f9853548c58c9ac921ee035b27fd1d Mon Sep 17 00:00:00 2001 From: MK Date: Mon, 13 Feb 2023 21:28:39 +0100 Subject: [PATCH] Add 'tmp.nix' --- tmp.nix | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tmp.nix diff --git a/tmp.nix b/tmp.nix new file mode 100644 index 0000000..33c5380 --- /dev/null +++ b/tmp.nix @@ -0,0 +1,66 @@ +#source of this code: https://github.com/NixOS/nixpkgs/blob/nixos-22.11/nixos/modules/system/boot/tmp.nix + +{ config, lib, ... }: + +with lib; + +let + cfg = config.boot; +in +{ + + ###### interface + + options = { + + boot.cleanTmpDir = mkOption { + type = types.bool; + default = true; + description = lib.mdDoc '' + Whether to delete all files in {file}`/tmp` during boot. + ''; + }; + + boot.tmpOnTmpfs = mkOption { + type = types.bool; + default = true; + description = lib.mdDoc '' + Whether to mount a tmpfs on {file}`/tmp` during boot. + ''; + }; + + boot.tmpOnTmpfsSize = mkOption { + type = types.oneOf [ types.str types.types.ints.positive ]; + default = "50%"; + description = lib.mdDoc '' + Size of tmpfs in percentage. + Percentage is defined by systemd. + ''; + }; + + }; + + ###### implementation + + config = { + + # When changing remember to update /tmp mount in virtualisation/qemu-vm.nix + systemd.mounts = mkIf cfg.tmpOnTmpfs [ + { + what = "tmpfs"; + where = "/tmp"; + type = "tmpfs"; + mountConfig.Options = concatStringsSep "," [ "mode=1777" + "strictatime" + "rw" + "nosuid" + "nodev" + "size=${toString cfg.tmpOnTmpfsSize}" ]; + } + ]; + + systemd.tmpfiles.rules = optional config.boot.cleanTmpDir "D! /tmp 1777 root root"; + + }; + +} \ No newline at end of file