nix-config/nixos/stolas/default.nix

228 lines
5.4 KiB
Nix

{
config,
lib,
pkgs,
...
}:
{
imports = [
../modules/profiles/laptop.nix
./disks.nix
./paperless.nix
];
nixpkgs = {
hostPlatform = "x86_64-linux";
config.allowUnfree = true;
};
boot = {
lanzaboote = {
enable = true;
pkiBundle = "/var/lib/sbctl";
};
kernelModules = [ "kvm-amd" ];
# Hopefully fixes suspend issues with wifi card
kernelPackages = pkgs.linuxPackages_latest;
kernelParams = [
"resume=UUID=81dfbfa5-d578-479c-b11c-3ee5abd6848a"
];
extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
# Lanzaboote currently replaces the systemd-boot module.
# This setting is usually set to true in configuration.nix
# generated at installation time. So we force it to false
# for now.
loader.systemd-boot.enable = lib.mkForce false;
initrd = {
availableKernelModules = [
"nvme"
"xhci_pci"
"thunderbolt"
"usb_storage"
"sd_mod"
];
# Ensure that TPM module is loaded
kernelModules = [ "tpm" ];
};
};
environment.systemPackages = [
# For debugging and troubleshooting Secure Boot.
pkgs.sbctl
];
hardware = {
# NOTE: hardware.framework.enableKmod requires kernel patching, but enables access to some EC features
bluetooth.enable = true;
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
enableAllFirmware = true;
framework.laptop13.audioEnhancement.enable = true;
graphics = {
enable = true;
extraPackages = with pkgs; [
vaapiVdpau
libvdpau-va-gl
];
};
};
powerManagement = {
enable = true;
cpuFreqGovernor = "schedutil";
# TODO: Limit charge of battery, does this work without kernel patches from hardware.frameworkenableKmod?
powerUpCommands = ''
echo 80 > /sys/class/power_supply/BAT0/charge_control_stop_threshold
'';
};
networking = {
hostName = "stolas";
firewall = {
enable = true;
allowedTCPPorts = [
22000 # Syncthing
];
allowedUDPPorts = [
21027 # Syncthing
];
};
};
nix = {
settings.max-jobs = lib.mkDefault 16;
};
dadada = {
admin.enable = true;
backupClient.gs.enable = false;
backupClient.backup1.enable = true;
backupClient.backup2 = {
enable = true;
repo = "u355513-sub5@u355513-sub5.your-storagebox.de:/home/backup";
};
};
programs = {
adb.enable = true;
firefox = {
enable = true;
package = pkgs.firefox-wayland;
};
gnupg.agent.enable = true;
ssh.startAgent = true;
wireshark.enable = true;
};
services = {
avahi.enable = true;
desktopManager.plasma6.enable = true;
displayManager = {
sddm.enable = true;
sddm.wayland.enable = true;
};
gnome.gnome-keyring.enable = lib.mkForce false;
smartd.enable = true;
printing = {
enable = true;
browsing = true;
};
tlp.enable = false;
snapper = {
cleanupInterval = "1d";
snapshotInterval = "hourly";
configs = {
home = {
SUBVOLUME = "/home/dadada";
ALLOW_USERS = [ "dadada" ];
TIMELINE_CREATE = true;
TIMELINE_CLEANUP = true;
TIMELINE_MIN_AGE = "1800";
TIMELINE_LIMIT_HOURLY = "5";
TIMELINE_LIMIT_DAILY = "7";
TIMELINE_LIMIT_WEEKLY = "0";
TIMELINE_LIMIT_MONTHLY = "0";
TIMELINE_LIMIT_YEARLY = "0";
};
var = {
SUBVOLUME = "/var";
TIMELINE_CREATE = true;
TIMELINE_CLEANUP = true;
TIMELINE_MIN_AGE = "1800";
TIMELINE_LIMIT_HOURLY = "5";
TIMELINE_LIMIT_DAILY = "7";
TIMELINE_LIMIT_WEEKLY = "0";
TIMELINE_LIMIT_MONTHLY = "0";
TIMELINE_LIMIT_YEARLY = "0";
};
paperless = {
SUBVOLUME = "/var/lib/paperless";
TIMELINE_CREATE = true;
TIMELINE_CLEANUP = true;
TIMELINE_MIN_AGE = "3600";
TIMELINE_LIMIT_HOURLY = "10";
TIMELINE_LIMIT_DAILY = "10";
TIMELINE_LIMIT_WEEKLY = "10";
TIMELINE_LIMIT_MONTHLY = "10";
TIMELINE_LIMIT_YEARLY = "10";
};
};
};
};
system = {
stateVersion = "25.05";
};
systemd.services = {
modem-manager.enable = lib.mkForce false;
"dbus-org.freedesktop.ModemManager1".enable = lib.mkForce false;
};
systemd.sleep.extraConfig = ''
HibernateDelaySec=1h
'';
systemd.tmpfiles.rules = [
"v /var/.snapshots 0755 root root - -"
"v /var/paperless/.snapshots 0755 root root - -"
"v /home/dadada/.snapshots 0755 root root - -"
];
virtualisation.libvirtd.enable = true;
users = {
users = {
dadada = {
initialHashedPassword = "$y$j9T$43qGBeY6hg6AXQmcVkS131$6AeRDOe6XAnmgA/AkJGaSIYTj5dbQLd9vrQ7zSyi5TA";
isNormalUser = true;
extraGroups = [
"wheel"
"networkmanager"
"libvirtd"
"adbusers"
"kvm"
"video"
"scanner"
"lp"
"docker"
"dialout"
"wireshark"
"paperless"
];
};
};
};
# TODO
# age.secrets = {
# paperless = {
# file = "${config.dadada.secrets.path}/paperless.age";
# mode = "700";
# owner = "paperless";
# };
# };
# Create compressing swap space in RAM
zramSwap.enable = true;
}