summaryrefslogtreecommitdiff
path: root/modules/nixosModules/createHost.nix
blob: a74ac53cb577f1271b13a28ceb08ba26807dec4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{
  self,
  inputs,
  ...
}: {
  flake.nixosModules.createHost = {
    lib,
    pkgs,
    config,
    ...
  }: let
    cfg = config.hostOptions;
  in {
    boot.loader = {
      efi = {
        canTouchEfiVariables = true;
        efiSysMountPoint = "/boot"; # ← use the same mount point here.
      };
      grub = {
        efiSupport = true;
        device = "nodev";
        useOSProber = true;
        theme = "${pkgs.fetchFromGitHub {
          # blue screen of life grub theme
          owner = "scouckel";
          repo = "bsol";
          rev = "a8eedad9e7163dce230ca7886be8e1b4ef81da99";
          sha256 = "sha256-P2q73uM1Ysn1a+0mOGOvee/Q1WAYRGQvfanrasx/8r8";
        }}/bsol";
      };
    };

    boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
    hardware.firmware = with pkgs; [
      linux-firmware
    ];
    hardware.enableRedistributableFirmware = true;

    system.name = cfg.host.name;
    networking.hostName = cfg.host.name;

    networking.networkmanager.enable = true;

    time.timeZone = lib.mkDefault "US/Central";
    i18n.defaultLocale = "en_US.UTF-8";
    i18n.extraLocaleSettings = {
      LC_ADDRESS = "en_US.UTF-8";
      LC_IDENTIFICATION = "en_US.UTF-8";
      LC_MEASUREMENT = "en_US.UTF-8";
      LC_MONETARY = "en_US.UTF-8";
      LC_NAME = "en_US.UTF-8";
      LC_NUMERIC = "en_US.UTF-8";
      LC_PAPER = "en_US.UTF-8";
      LC_TELEPHONE = "en_US.UTF-8";
      LC_TIME = "en_US.UTF-8";
    };

    services.xserver.xkb = {
      layout = "us";
      variant = "";
    };

    users.users.${cfg.user.name} = {
      isNormalUser = true;
      description = cfg.user.name;
      extraGroups = ["networkmanager" "wheel"];
      shell = self.packages."${pkgs.stdenv.hostPlatform.system}".environment;
    };

    nixpkgs.config.allowUnfree = true;
    nix.settings = {
      experimental-features = ["nix-command" "flakes"];
      auto-optimise-store = true;
    };

    services.openssh = {
      enable = true;
      settings.PermitRootLogin = "no";
    };

    system.stateVersion = "25.05";
  };
}