normcap: fix on GNOME wayland when used via keybind or alt-f2 (#351763)
[NixPkgs.git] / nixos / modules / system / boot / tmp.nix
blob9ec02c594cf0a7e6728b239e197eadb21e3b0545
1 { config, lib, ... }:
2 let
3   cfg = config.boot.tmp;
4 in
6   imports = [
7     (lib.mkRenamedOptionModule [ "boot" "cleanTmpDir" ] [ "boot" "tmp" "cleanOnBoot" ])
8     (lib.mkRenamedOptionModule [ "boot" "tmpOnTmpfs" ] [ "boot" "tmp" "useTmpfs" ])
9     (lib.mkRenamedOptionModule [ "boot" "tmpOnTmpfsSize" ] [ "boot" "tmp" "tmpfsSize" ])
10   ];
12   options = {
13     boot.tmp = {
14       cleanOnBoot = lib.mkOption {
15         type = lib.types.bool;
16         default = false;
17         description = ''
18           Whether to delete all files in {file}`/tmp` during boot.
19         '';
20       };
22       tmpfsSize = lib.mkOption {
23         type = lib.types.oneOf [
24           lib.types.str
25           lib.types.ints.positive
26         ];
27         default = "50%";
28         description = ''
29           Size of tmpfs in percentage.
30           Percentage is defined by systemd.
31         '';
32       };
34       useTmpfs = lib.mkOption {
35         type = lib.types.bool;
36         default = false;
37         description = ''
38           Whether to mount a tmpfs on {file}`/tmp` during boot.
40           ::: {.note}
41           Large Nix builds can fail if the mounted tmpfs is not large enough.
42           In such a case either increase the tmpfsSize or disable this option.
43           :::
44         '';
45       };
46     };
47   };
49   config = {
50     # When changing remember to update /tmp mount in virtualisation/qemu-vm.nix
51     systemd.mounts = lib.mkIf cfg.useTmpfs [
52       {
53         what = "tmpfs";
54         where = "/tmp";
55         type = "tmpfs";
56         mountConfig.Options = lib.concatStringsSep "," [
57           "mode=1777"
58           "strictatime"
59           "rw"
60           "nosuid"
61           "nodev"
62           "size=${toString cfg.tmpfsSize}"
63         ];
64       }
65     ];
67     systemd.tmpfiles.rules = lib.optional cfg.cleanOnBoot "D! /tmp 1777 root root";
68   };