Files
inception-of-things/vm/configuration.nix
2025-12-17 10:56:28 +01:00

115 lines
2.1 KiB
Nix

{
config,
pkgs,
modulesPath,
hostname,
...
}:
{
imports = [
(modulesPath + "/profiles/minimal.nix")
];
networking.hostName = hostname;
nixpkgs.config = {
allowUnfree = true;
};
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Since `fileSystems` is ignored by nixos-generators, we need to be creative
systemd.services.mount-iot = {
description = "Mount the IOT shared folder";
script = ''
mkdir -p /iot
/run/wrappers/bin/mount -t 9p -o trans=virtio,version=9p2000.L host0 /iot
'';
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
};
users.users = {
root.password = "toor";
user = {
password = "iot";
isNormalUser = true;
extraGroups = [ "wheel" "docker" "libvirt" ];
};
};
services = {
k3s = {
enable = true;
};
getty.autologinUser = "root";
openssh = {
enable = true;
ports = [ 22 ];
settings = {
PermitRootLogin = "yes";
PasswordAuthentication = true;
AllowUsers = null;
};
};
xserver = {
enable = true;
xkb = {
layout = "fr";
variant = "us";
};
};
displayManager = {
gdm.enable = true;
autoLogin = {
enable = true;
user = "test";
};
};
desktopManager.gnome.enable = true;
libinput.enable = true;
};
hardware.graphics = {
enable = true;
enable32Bit = true;
};
virtualisation.docker.enable = true;
boot.kernelParams = [ "kvm.enable_virt_at_load=0" ];
programs = {
zsh = {
autosuggestions.enable = true;
syntaxHighlighting.enable = true;
enable = true;
enableBashCompletion = true;
shellAliases = (import ./aliases.nix);
};
};
environment = {
systemPackages = with pkgs; [
bindfs
git
zip
neovim
eza
bat
vagrant
k3d
kubectl
];
};
system.stateVersion = "24.11";
}