1{ config, lib, modulesPath, pkgs, ... }:
2
3{
4 imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
5
6 boot = {
7 initrd.availableKernelModules = [ "ahci" "sd_mod" "virtio_blk" "virtio_pci" "virtio_scsi" ];
8 kernelParams = [ "console=ttyS0,115200n8" ];
9 loader.systemd-boot.enable = true;
10 loader.efi.canTouchEfiVariables = true;
11 };
12
13 fileSystems."/" = {
14 device = "/dev/disk/by-label/nixos";
15 fsType = "ext4";
16 };
17 fileSystems."/boot" = {
18 device = "/dev/disk/by-label/ESP";
19 fsType = "vfat";
20 };
21
22 networking.hostName = "nixos-template";
23 networking.networkmanager.enable = true;
24 environment.systemPackages = [ pkgs.cloud-init ];
25
26 users.users.sandbox = {
27 isNormalUser = true;
28 extraGroups = [ "wheel" ];
29 };
30
31 services = {
32 cloud-init = {
33 enable = true;
34 settings = {
35 datasource_list = [ "NoCloud" "None" ];
36 network.config = "disabled";
37 preserve_hostname = false;
38 users = [ ];
39 };
40 };
41 displayManager.autoLogin = {
42 enable = true;
43 user = "sandbox";
44 };
45 displayManager.gdm.enable = true;
46 desktopManager.gnome.enable = true;
47 openssh = {
48 enable = true;
49 settings = {
50 PasswordAuthentication = true;
51 PermitRootLogin = "yes";
52 };
53 };
54 qemuGuest.enable = true;
55 };
56
57 systemd.services."serial-getty@ttyS0".enable = true;
58 systemd.services.display-manager = {
59 after = [ "cloud-init.service" ];
60 wants = [ "cloud-init.service" ];
61 };
62 systemd.services.snowglobe-hostname = {
63 after = [ "nixos-activation.service" "cloud-init.service" ];
64 wants = [ "cloud-init.service" ];
65 wantedBy = [ "multi-user.target" ];
66 script = ''
67 if [ -r /var/lib/snowglobe/hostname ]; then
68 read -r hostname < /var/lib/snowglobe/hostname
69 /run/current-system/sw/bin/hostname "$hostname"
70 fi
71 '';
72 serviceConfig.Type = "oneshot";
73 };
74
75 services.logind.settings.Login = {
76 IdleAction = "ignore";
77 IdleActionSec = "0";
78 };
79
80 programs.dconf = with lib.gvariant; {
81 enable = true;
82 profiles.user.databases = [
83 {
84 settings = {
85 "org/gnome/desktop/session".idle-delay = mkUint32 0;
86 "org/gnome/desktop/screensaver" = {
87 idle-activation-enabled = false;
88 lock-enabled = false;
89 };
90 };
91 lockAll = true;
92 }
93 ];
94 };
95
96 system.stateVersion = "26.05";
97}