dotfiles

My PC Dotfiles & Website

modules/hosts/valkyrie/default.nix (3806B)


  1# Valkyrie - ASUS ROG Zephyrus G14
  2{
  3  config,
  4  inputs,
  5  ...
  6} @ args: let
  7  inherit (config.flake.modules) nixos homeManager;
  8  inherit (config) util;
  9
 10  nixosModules = [
 11    "v7"
 12    "extbase"
 13    "prompt"
 14    "mobile"
 15    "printer"
 16    "docker"
 17    "mc-server"
 18    #"roblox"
 19    "vfio"
 20  ];
 21
 22  hmModules = [
 23    "secrets"
 24    "auth"
 25    "syncthing"
 26    "internet"
 27    "firefox"
 28    "notes"
 29    "discord"
 30    "spotify"
 31    "vscode"
 32    "zed"
 33    "codex"
 34    "antigravity"
 35    "stream"
 36    "minecraft"
 37    "osu"
 38  ];
 39
 40  mixedModules = [
 41    "crypt"
 42    "security"
 43    "laptop"
 44    "mouse"
 45    "shell-utils"
 46    "git"
 47    "office"
 48    "tools"
 49    "games"
 50    "latex"
 51    #"flatpak"
 52    #"wine"
 53    "libvirt"
 54    "hyprland"
 55  ];
 56
 57  hmImports =
 58    util.map.array hmModules homeManager
 59    ++ util.map.array mixedModules homeManager;
 60
 61  disk = import ./_disk/full.nix args;
 62  asus = import ./_asus {};
 63  dev = import ./_dev.nix {};
 64  vm = import ./_vm args;
 65in {
 66  configurations.nixos.valkyrie = {
 67    system = "x86_64-linux";
 68    module = {
 69      config,
 70      pkgs,
 71      ...
 72    }: {
 73      imports =
 74        util.map.array nixosModules nixos
 75        ++ util.map.array mixedModules nixos
 76        ++ [
 77          disk.nixos
 78          (asus.nixos or {})
 79          (dev.nixos or {})
 80          vm.nixos
 81        ]
 82        ++ util.map.array ["asus-zephyrus-ga402x-nvidia"] inputs.hardware.nixosModules;
 83
 84      networking.hostId = builtins.substring 0 8 (builtins.hashString "md5" "valkyrie");
 85
 86      # Localization
 87      time.timeZone = "Asia/Kolkata";
 88      i18n.defaultLocale = "en_IN";
 89      environment.variables."LC_ALL" = "en_IN.UTF-8";
 90
 91      system = {
 92        scheme = "secure";
 93
 94        # Kernel
 95        kernel = "zen";
 96        kernelModules = [
 97          "nvme"
 98          "thunderbolt"
 99          "asus-armoury"
100        ];
101
102        # Nix Tools
103        nix = {
104          index = true;
105          tools = true;
106        };
107      };
108
109      # Hardware
110      hardware = {
111        cpu = {
112          model = "amd";
113          cores = 8;
114          mode = "performance";
115        };
116        gpu = {
117          enable = true;
118          model = "nvidia";
119        };
120
121        # ! # Fix build with Linux 7.2
122        nvidia.package = (pkgs.unstable.linuxPackagesFor config.boot.kernelPackages.kernel).nvidiaPackages.production;
123      };
124
125      # GUI
126      gui = {
127        display = "eDP-1";
128        wallpaper = "Quasar";
129        fancy = true;
130      };
131
132      # Minecraft Server
133      games.mc-servers = [
134        {
135          type = "fabric";
136          memory = 16;
137          port = 25565;
138          vc-port = 24454;
139          config = {
140            gamemode = "survival";
141            difficulty = "normal";
142            online-mode = false;
143            server-ip = "0.0.0.0";
144            spawn-protection = 0;
145            motd = "My World";
146          };
147        }
148      ];
149
150      # Virtualisation
151      virt.vfio = {
152        setup = true;
153        passthrough = [
154          "10de:28e0" # Graphics
155          "10de:22be" # Audio
156        ];
157        isolate = "2-4,10-12";
158        hugepages = 16;
159      };
160
161      # User
162      users.users.v7.extraGroups = [
163        "wheel"
164        "keys"
165        "adbusers"
166        "docker"
167        "i2c"
168        "input"
169        "lp"
170        "networkmanager"
171        "scanner"
172        "systemd-journal"
173        "video"
174        "minecraft"
175        "kvm"
176        "libvirtd"
177      ];
178
179      home-manager.users.v7.imports =
180        hmImports
181        ++ [
182          homeManager.v7
183          (asus.home or {})
184          (dev.home or {})
185        ];
186    };
187  };
188
189  configurations.homeManager."v7@valkyrie" = {
190    module = {
191      imports = hmImports ++ [homeManager.v7];
192      home = {
193        username = "v7";
194        homeDirectory = "/home/v7";
195      };
196    };
197    system = "x86_64-linux";
198  };
199}