default.nix 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. { config, pkgs, inputs, ... }:
  2. {
  3. imports = with inputs.self.modules; [
  4. ./disko.nix
  5. users.aya
  6. ];
  7. roles = {
  8. desktop = "gnome";
  9. tpm2.enable = true;
  10. };
  11. boot = {
  12. loader = {
  13. # systemd-boot.enable = true;
  14. timeout = 1;
  15. };
  16. lanzaboote = {
  17. enable = true;
  18. pkiBundle = "/etc/secureboot";
  19. };
  20. initrd.availableKernelModules = [ "nvme" "xhci_pci" ];
  21. kernelModules = [ "kvm-amd" ];
  22. kernelPackages = pkgs.linuxPackages_6_12;
  23. kernelParams = [ "tsc=unstable" ];
  24. };
  25. environment.persistence."/system/persist" = {
  26. directories = [
  27. config.boot.lanzaboote.pkiBundle
  28. "/etc/NetworkManager"
  29. "/var/db/sudo"
  30. "/var/lib"
  31. "/var/log"
  32. ];
  33. files = [
  34. "/etc/machine-id"
  35. { file = "/root/.ssh/id_ed25519";
  36. parentDirectory = {
  37. defaultPerms.mode = "0700";
  38. mode = "0700";
  39. };
  40. }
  41. ];
  42. };
  43. fileSystems."/system".neededForBoot = true;
  44. age = {
  45. identityPaths = [ "/system/persist/root/.ssh/id_ed25519" ];
  46. secrets = with inputs.self.modules; {
  47. higan-wg0.file = secrets.higan-wg0;
  48. yama-wg0-higan.file = secrets.yama-wg0-higan;
  49. };
  50. };
  51. networking = {
  52. hostName = "higan";
  53. networkmanager.enable = true;
  54. wireguard.interfaces = {
  55. wg0 = {
  56. ips = [ "10.0.0.3/24" ];
  57. listenPort = 51820;
  58. privateKeyFile = config.age.secrets.higan-wg0.path;
  59. peers = [
  60. { # yama
  61. publicKey = "Tan9IHvGvzeHFBSg3ZnhqNuJFYtAB+hfybbh9SPWRwk=";
  62. presharedKeyFile = config.age.secrets.yama-wg0-higan.path;
  63. endpoint = "notbad.dynv6.net:51820";
  64. allowedIPs = [ "10.0.0.1/32" ];
  65. dynamicEndpointRefreshSeconds = 10;
  66. }
  67. ];
  68. };
  69. };
  70. };
  71. services = {
  72. btrfs.autoScrub = {
  73. enable = true;
  74. fileSystems = [ "/system" ];
  75. };
  76. dnsmasq.enable = true;
  77. logind.lidSwitch = "suspend-then-hibernate";
  78. yggdrasil.enable = true;
  79. };
  80. systemd.sleep.extraConfig = ''
  81. # SuspendState=freeze
  82. HibernateDelaySec=20m
  83. '';
  84. zramSwap.enable = true;
  85. }