diff --git a/configuration.nix b/configuration.nix index dad703e..7eb401c 100644 --- a/configuration.nix +++ b/configuration.nix @@ -153,3 +153,70 @@ git } + +#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