nixos-config/machines/mimir/configuration.nix

510 lines
10 KiB
Nix
Raw Normal View History

2024-02-05 11:46:52 +01:00
{
nixos-hardware,
microvm,
nix-ld-rs,
attic,
...
}:
2023-08-03 10:38:54 +02:00
{ pkgs, config, ... }:
2022-11-11 11:54:21 +01:00
{
2024-02-05 11:46:52 +01:00
imports = [
# Include the results of the hardware scan.
nixos-hardware.nixosModules.common-cpu-amd
nixos-hardware.nixosModules.common-cpu-amd-pstate
nixos-hardware.nixosModules.common-pc-ssd
microvm.nixosModules.host
attic.nixosModules.atticd
../../users/erwin
../../users/root
];
2022-11-11 11:54:21 +01:00
2022-11-11 17:07:24 +01:00
# nixpkgs.config.allowUnfree = true;
2024-07-28 20:49:24 +02:00
nixpkgs.config = {
cudaSupport = true;
};
2022-11-11 12:51:48 +01:00
2022-11-11 11:54:21 +01:00
eboskma = {
2022-11-14 18:49:06 +01:00
var.workSystem = true;
2022-11-11 11:54:21 +01:00
users = {
erwin = {
enable = true;
work = true;
2022-11-11 12:51:48 +01:00
terminal = "Alacritty";
2022-11-11 11:54:21 +01:00
};
};
base = {
plymouth.enable = true;
work = true;
};
desktop = {
enable = true;
wayland = true;
2022-11-11 11:54:21 +01:00
};
podman = {
enable = true;
enableNvidia = true;
2023-03-10 12:57:16 +01:00
# enableTcpSocket = true;
};
2022-11-11 11:54:21 +01:00
fonts.enable = true;
gnome.enable = true;
greetd = {
2024-06-12 17:00:07 +02:00
enable = true;
sway = true;
wayvnc = true;
wallpaper = ../../wallpapers/river-3840.png;
output = {
"DP-1" = {
bg = "${../../wallpapers/river-3840.png} fill";
mode = "3840x2160@60Hz";
position = "0 0";
};
"DP-3" = {
bg = "${../../wallpapers/river-3840.png} fill";
mode = "3840x2160@60Hz";
position = "3840 0";
};
};
input = {
"1241:662:USB-HID_Keyboard" = {
2024-04-05 13:15:40 +02:00
xkb_layout = "us,us";
xkb_variant = "colemak,";
xkb_options = "lv3:ralt_switch,eurosign:5,caps:backspace,ctrl:nocaps,grp:sclk_toggle,grp_led:scroll";
xkb_numlock = "enabled";
};
"1133:49257:Logitech_USB_Laser_Mouse" = {
natural_scroll = "enabled";
pointer_accel = "1";
};
};
};
2023-05-17 08:06:05 +02:00
kanata = {
2023-12-08 16:39:57 +01:00
enable = true;
2024-02-05 11:46:52 +01:00
devices = [ "/dev/input/by-id/usb-04d9_USB-HID_Keyboard-event-kbd" ];
2023-05-17 08:06:05 +02:00
};
lightdm.enable = false;
2022-11-11 11:54:21 +01:00
networking.enable = true;
nix-common = {
enable = true;
cross-systems = [ "aarch64-linux" ];
gc-interval = "weekly";
};
2024-06-08 16:03:24 +02:00
regreet = {
2024-06-12 17:00:07 +02:00
enable = false;
2024-06-08 16:03:24 +02:00
wallpaper = ../../wallpapers/river-3840.png;
wayvnc = true;
};
2022-11-11 11:54:21 +01:00
sound.enable = true;
systemd.enable = true;
2023-12-20 11:34:47 +01:00
tailscale.enable = true;
2022-11-11 11:54:21 +01:00
};
2023-09-13 14:50:03 +02:00
fileSystems = {
"/" = {
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
};
2023-08-03 10:38:54 +02:00
2023-09-13 14:50:03 +02:00
"/boot" = {
device = "/dev/disk/by-label/boot";
fsType = "vfat";
};
2023-08-03 10:38:54 +02:00
2023-09-13 14:50:03 +02:00
"/home" = {
device = "/dev/disk/by-label/home";
fsType = "ext4";
};
2023-08-03 10:38:54 +02:00
2023-09-13 14:50:03 +02:00
"/yocto" = {
device = "/dev/disk/by-label/yocto";
fsType = "ext4";
};
2023-08-03 10:38:54 +02:00
};
2024-02-05 11:46:52 +01:00
swapDevices = [ { device = "/dev/disk/by-label/swap"; } ];
2023-08-03 10:38:54 +02:00
hardware = {
enableAllFirmware = true;
nvidia = {
open = false;
2023-08-03 10:38:54 +02:00
modesetting.enable = true;
2024-05-17 22:27:46 +02:00
powerManagement.enable = true; # Needed to make hibernate work properly
forceFullCompositionPipeline = true;
2023-08-03 10:38:54 +02:00
};
graphics = {
enable32Bit = true;
2024-05-17 22:27:46 +02:00
extraPackages = with pkgs; [
vaapiVdpau
vulkan-validation-layers
];
2023-08-03 10:38:54 +02:00
};
};
2022-11-11 11:54:21 +01:00
# Use the systemd-boot EFI boot loader.
2023-05-25 08:01:53 +02:00
boot = {
kernelPackages = pkgs.linuxPackages_6_10;
2023-08-03 10:38:54 +02:00
initrd = {
2024-02-05 11:46:52 +01:00
availableKernelModules = [
"nvme"
"xhci_pci"
"ahci"
"usb_storage"
"usbhid"
"sd_mod"
];
2023-08-03 10:38:54 +02:00
kernelModules = [ "dm-snapshot" ];
};
2024-02-05 11:46:52 +01:00
kernelModules = [
"kvm-amd"
"apple-mfi-fastcharge"
"zenpower"
];
extraModulePackages = with config.boot.kernelPackages; [
zenpower
cpupower
];
2023-05-25 08:01:53 +02:00
loader = {
systemd-boot = {
enable = true;
configurationLimit = 15;
};
efi.canTouchEfiVariables = true;
2022-11-11 11:54:21 +01:00
};
# This triggers a warning on stateVersions < 23.11 if set to true
swraid.enable = false;
2022-11-11 11:54:21 +01:00
};
time.timeZone = "Europe/Amsterdam";
console = {
font = "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";
useXkbConfig = true;
};
2022-11-11 17:07:24 +01:00
# Enable new implementation of switch-to-configuration built in Rust
system = {
switch = {
enable = false;
enableNg = true;
};
};
2022-11-11 11:54:21 +01:00
networking = {
hostName = "mimir";
useDHCP = false;
2023-04-21 11:20:56 +02:00
networkmanager.enable = false;
2022-11-11 11:54:21 +01:00
useNetworkd = true;
2023-12-20 11:46:13 +01:00
nftables.enable = true;
2022-11-11 11:54:21 +01:00
firewall = {
2024-02-05 11:46:52 +01:00
trustedInterfaces = [
"lo"
"tailscale0"
];
2022-11-11 11:54:21 +01:00
allowedTCPPorts = [
# Horus System V2
12345
5555
5556
# sccache server
10501
# Celantur
7000
2022-11-11 11:54:21 +01:00
];
};
2023-01-27 15:36:05 +01:00
nat = {
enable = true;
internalInterfaces = [ "microvm" ];
externalInterface = "enp4s0";
};
2024-02-23 11:33:18 +01:00
wireless.iwd = {
enable = true;
settings = {
General = {
EnableNetworkConfiguration = true;
};
};
};
2022-11-11 11:54:21 +01:00
};
2024-02-05 11:46:52 +01:00
microvm.autostart = [ "miniflux" ];
2023-01-27 15:36:05 +01:00
powerManagement = {
cpuFreqGovernor = "ondemand";
};
2023-11-20 17:03:05 +01:00
security = {
sudo.enable = false;
sudo-rs.enable = true;
2023-12-20 11:46:59 +01:00
apparmor = {
enable = true;
};
2024-03-26 15:06:20 +01:00
pam.services.swaylock = {
unixAuth = true;
setLoginUid = true;
enableGnomeKeyring = true;
allowNullPassword = true;
updateWtmp = true;
startSession = true;
};
2023-11-20 17:03:05 +01:00
};
systemd = {
network = {
enable = true;
2022-11-11 17:07:24 +01:00
# wait-online.extraArgs = [ "--interface=enp4s0" ];
wait-online.anyInterface = true;
links = {
"40-enp4s0" = {
matchConfig = {
Name = "enp4s0";
};
linkConfig = {
WakeOnLan = "magic";
};
2023-02-13 08:27:46 +01:00
};
};
netdevs = {
"10-microvm" = {
netdevConfig = {
Kind = "bridge";
Name = "microvm";
};
2023-01-27 15:36:05 +01:00
};
};
networks = {
"40-enp4s0" = {
enable = true;
DHCP = "yes";
domains = [
"internal.horus.nu"
"bedum.horus.nu"
];
2023-05-23 17:12:31 +02:00
dhcpV4Config = {
RouteMetric = 64;
};
matchConfig = {
Name = "enp4s0";
};
};
2022-11-11 17:07:24 +01:00
"40-enp5s0f1" = {
enable = true;
linkConfig = {
RequiredForOnline = "no";
};
matchConfig = {
Name = "enp5s0f1";
};
};
2023-01-27 15:36:05 +01:00
"10-microvm" = {
matchConfig = {
Name = "microvm";
};
addresses = [ { Address = "172.16.0.1/24"; } ];
2023-01-27 15:36:05 +01:00
};
"11-microvm" = {
matchConfig = {
Name = "vm-*";
};
networkConfig = {
Bridge = "microvm";
};
};
2023-01-27 15:36:05 +01:00
};
};
2023-01-27 15:36:05 +01:00
services = {
ollama = {
after = [ "tailscaled.service" ];
preStart = "${pkgs.coreutils}/bin/sleep 10"; # Tailscale reports ready before getting an IP address
2023-01-27 15:36:05 +01:00
};
2022-11-11 11:54:21 +01:00
};
};
# programs.ssh.startAgent = true;
programs = {
2024-03-26 15:06:20 +01:00
sway = {
enable = true;
wrapperFeatures = {
gtk = true;
base = true;
};
extraPackages = with pkgs; [
swaylock
swayidle
];
2024-06-08 16:03:24 +02:00
extraOptions = [ "--unsupported-gpu" ];
2024-03-26 15:06:20 +01:00
};
gnome-disks.enable = true;
2023-12-08 16:39:57 +01:00
nix-ld = {
enable = true;
package = nix-ld-rs.packages.${pkgs.hostPlatform.system}.nix-ld-rs;
libraries = with pkgs; [
alsa-lib
at-spi2-atk
at-spi2-core
atk
cairo
cups
curl
dbus
expat
fontconfig
freetype
fuse3
gdk-pixbuf
glib
gtk3
icu
libGL
libappindicator-gtk3
libdrm
libglvnd
libnotify
libpulseaudio
libunwind
libusb1
libuuid
libxkbcommon
mesa
nspr
nss
openssl
pango
pipewire
stdenv.cc.cc
systemd
vulkan-loader
xorg.libX11
xorg.libXScrnSaver
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXi
xorg.libXrandr
xorg.libXrender
xorg.libXtst
xorg.libxcb
xorg.libxkbfile
xorg.libxshmfence
zlib
];
};
};
2022-11-11 11:54:21 +01:00
2023-09-13 14:50:03 +02:00
services = {
openssh.enable = true;
2023-01-26 11:36:08 +01:00
2024-02-01 11:51:01 +01:00
envfs.enable = true;
2023-09-13 14:50:03 +02:00
cpupower-gui.enable = true;
flatpak.enable = true;
teamviewer.enable = true;
2023-08-03 10:38:54 +02:00
ddccontrol.enable = true;
udisks2 = {
enable = true;
};
udev = {
extraRules = ''
ACTION=="add", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="55b1", ATTRS{serial}=="A20033BEAC21B773", NAME="vault"
'';
};
2023-09-13 14:50:03 +02:00
xserver = {
videoDrivers = [ "nvidia" ];
2023-08-03 10:38:54 +02:00
# screenSection = ''
# Option "metamodes" "DP-0: nvidia-auto-select +0+0 {ForceFullCompositionPipeline=On, AllowGSYNCCompatible=On}, DP-4: nvidia-auto-select +3840+0 {ForceFullCompositionPipeline=On, AllowGSYNCCompatible=On}"
# Option "TripleBuffer" "On"
# '';
# libinput = {
# enable = true;
# mouse = {
# naturalScrolling = true;
# accelSpeed = "1.0";
# };
# touchpad = {
# naturalScrolling = true;
# };
# };
2022-11-17 14:06:39 +01:00
};
2023-09-13 14:50:03 +02:00
icecream.daemon = {
enable = true;
2022-12-22 11:34:55 +01:00
2023-09-13 14:50:03 +02:00
schedulerHost = "icecream.internal.horus.nu";
noRemote = true;
openFirewall = false;
openBroadcast = true;
};
2024-09-16 10:31:07 +02:00
ollama = {
enable = true;
acceleration = "cuda";
host = "100.119.162.110";
loadModels = [
"mistral"
];
};
2022-12-22 11:34:55 +01:00
};
environment = {
2024-02-23 11:33:18 +01:00
systemPackages = with pkgs; [
appimage-run
iwgtk
];
sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
};
};
2023-05-21 17:12:14 +02:00
sops = {
defaultSopsFile = ./secrets.yaml;
2022-11-11 11:54:21 +01:00
secrets = {
2023-12-08 16:39:57 +01:00
# outline-keycloak-secret = {
# owner = "outline";
# };
};
};
2022-11-11 11:54:21 +01:00
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "22.11"; # Did you read the comment?
}