224 lines
5.2 KiB
Nix
224 lines
5.2 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" ];
|
|
extraModulePackages = [ pkgs.linuxPackages.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"
|
|
];
|
|
shell = "/run/current-system/sw/bin/zsh";
|
|
};
|
|
};
|
|
};
|
|
|
|
# TODO
|
|
# age.secrets = {
|
|
# paperless = {
|
|
# file = "${config.dadada.secrets.path}/paperless.age";
|
|
# mode = "700";
|
|
# owner = "paperless";
|
|
# };
|
|
# };
|
|
|
|
# Create compressing swap space in RAM
|
|
zramSwap.enable = true;
|
|
}
|