nftable-migration
  1{
  2  desktop,
  3  config,
  4  pkgs,
  5  lib,
  6  ...
  7}:
  8{
  9  imports = [
 10    (./. + "/${desktop}.nix")
 11
 12    ./binfmt.nix
 13    ../programs/nix-ld.nix
 14    ../services/pipewire.nix
 15    ../hardware/yubikey.nix
 16  ];
 17  # Enable Plymouth and surpress some logs by default.
 18  boot = {
 19    initrd.systemd.enable = true;
 20    plymouth.enable = true;
 21    kernelParams = [
 22      # The 'splash' arg is included by the plymouth option
 23      "quiet"
 24      "loglevel=3"
 25      "rd.udev.log_priority=3"
 26      "vt.global_cursor_default=0"
 27    ];
 28  };
 29
 30  hardware.graphics.enable = true;
 31
 32  # Enable location services
 33  location.provider = "geoclue2";
 34
 35  environment.systemPackages = with pkgs; [
 36    bat # cat
 37    cyme # lsusb
 38    dig
 39    eza # ls
 40    fd # find
 41    duf # df
 42    ripgrep
 43    desktop-file-utils
 44  ];
 45
 46  fonts = {
 47    fontDir.enable = true;
 48    enableGhostscriptFonts = true;
 49    packages = with pkgs; [
 50      # cascadia-code
 51      corefonts
 52      dejavu_fonts
 53      # emojione
 54      feh
 55      # fira
 56      # fira-code
 57      # fira-code-symbols
 58      # fira-mono
 59      font-awesome
 60      go-font
 61      hack-font
 62      # inconsolata
 63      jetbrains-mono
 64      liberation_ttf
 65      nerd-fonts.jetbrains-mono
 66      # nerd-fonts.inconsolata
 67      # nerd-fonts.fira-code
 68      # nerd-fonts.fira-mono
 69      # nerd-fonts.caskaydia-cove
 70      # nerd-fonts.caskaydia-mono
 71      nerd-fonts.overpass
 72      nerd-fonts.ubuntu
 73      nerd-fonts.ubuntu-mono
 74      nerd-fonts.ubuntu-sans
 75      noto-fonts
 76      noto-fonts-cjk-sans
 77      noto-fonts-color-emoji
 78      overpass
 79      symbola
 80      twemoji-color-font
 81      ubuntu-classic
 82      unifont
 83      recursive
 84      # Maple Mono (Ligature TTF unhinted)
 85      maple-mono.truetype
 86      # Maple Mono NF (Ligature unhinted)
 87      maple-mono.NF-unhinted
 88      # Maple Mono NF CN (Ligature unhinted)
 89      maple-mono.NF-CN-unhinted
 90    ];
 91
 92    # Use fonts specified by user rather than default ones
 93    enableDefaultPackages = false;
 94
 95    # TODO configure thoses
 96    # fontconfig = {
 97    #   enable = true;
 98    #   defaultFonts = {
 99    #     serif = [
100    #       "${theme.fonts.default.name}"
101    #       "${theme.fonts.emoji.name}"
102    #     ];
103    #     sansSerif = [
104    #       "${theme.fonts.default.name}"
105    #       "${theme.fonts.emoji.name}"
106    #     ];
107    #     monospace = [ "${theme.fonts.monospace.name}" ];
108    #     emoji = [ "${theme.fonts.emoji.name}" ];
109    #   };
110    # };
111  };
112
113  services = {
114    envfs.enable = true;
115    power-profiles-daemon.enable = true;
116    upower.enable = true;
117    udisks2.enable = true;
118
119    # Make `/run/user/X` larger0
120    logind.settings.Login = {
121      RuntimeDirectorySize = "20%";
122    };
123  };
124
125  # Clear out user's download weekly
126  systemd.tmpfiles.rules =
127    let
128      mkTmpDir = n: u: "d ${u.home}/desktop/downloads 0700 ${n} ${u.group} 7d";
129    in
130    lib.mapAttrsToList mkTmpDir (lib.filterAttrs (_: u: u.isNormalUser) config.users.extraUsers);
131}