# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
let
defragmentServiceBin = pkgs.writeScriptBin "defragment" ''
# Defragment directories
btrfs filesystem defragment -r -czstd /mnt/data/lmstudio_models
btrfs filesystem defragment -r -czstd /mnt/data/NextCloud
btrfs filesystem defragment -r -czstd /mnt/data/repos
btrfs filesystem defragment -r -czstd /mnt/data/Steam
btrfs filesystem defragment -r -czstd /mnt/data/VMs
'';
in
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"ahci"
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/1987b9a1-1444-404c-9775-b9cbedda0204";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/1668-AA41";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
fileSystems."/mnt/data" = {
device = "/dev/disk/by-uuid/dc60967d-4625-4840-9e56-9a1d9049dc02";
fsType = "btrfs";
options = [ "compress=zstd" ];
};
fileSystems."/mnt/NextCloud" = {
device = "/dev/disk/by-uuid/dc60967d-4625-4840-9e56-9a1d9049dc02";
fsType = "btrfs";
options = [
"subvol=NextCloud"
"compress=zstd"
];
};
fileSystems."/mnt/repos" = {
device = "/dev/disk/by-uuid/dc60967d-4625-4840-9e56-9a1d9049dc02";
fsType = "btrfs";
options = [
"subvol=repos"
"compress=zstd"
];
};
fileSystems."/mnt/Steam" = {
device = "/dev/disk/by-uuid/dc60967d-4625-4840-9e56-9a1d9049dc02";
fsType = "btrfs";
options = [
"subvol=Steam"
"compress=zstd"
];
};
fileSystems."/mnt/VMs" = {
device = "/dev/disk/by-uuid/dc60967d-4625-4840-9e56-9a1d9049dc02";
fsType = "btrfs";
options = [
"subvol=VMs"
"compress=zstd"
];
};
fileSystems."/home/marvin/.lmstudio/models" = {
device = "/dev/disk/by-uuid/dc60967d-4625-4840-9e56-9a1d9049dc02";
fsType = "btrfs";
options = [
"subvol=lmstudio_models"
"compress=zstd"
];
};
# store isn't available across subvolumes so removing
# fileSystems."/mnt/pnpm" = {
# device = "/dev/disk/by-uuid/dc60967d-4625-4840-9e56-9a1d9049dc02";
# fsType = "btrfs";
# options = [
# "subvol=pnpm"
# "compress=zstd"
# ];
# };
services.snapper.configs = {
# lmstudio_models = {
# SUBVOLUME = "/home/marvin/.lmstudio/models";
# ALLOW_USERS = [ "marvin" ];
# TIMELINE_CREATE = true;
# TIMELINE_CLEANUP = true;
# TIMELINE_LIMIT_DAILY = 3;
# TIMELINE_LIMIT_HOURLY = 4;
# TIMELINE_LIMIT_MONTHLY = 2;
# TIMELINE_LIMIT_QUARTERLY = 1;
# TIMELINE_LIMIT_WEEKLY = 1;
# TIMELINE_LIMIT_YEARLY = 1;
# SPACE_LIMIT = "0.5";
# SYNC_ACL = "yes";
# };
NextCloud = {
SUBVOLUME = "/mnt/NextCloud";
ALLOW_USERS = [ "marvin" ];
TIMELINE_CREATE = true;
TIMELINE_CLEANUP = true;
TIMELINE_LIMIT_DAILY = 14;
TIMELINE_LIMIT_HOURLY = 24;
TIMELINE_LIMIT_MONTHLY = 12;
TIMELINE_LIMIT_QUARTERLY = 1;
TIMELINE_LIMIT_WEEKLY = 5;
TIMELINE_LIMIT_YEARLY = 2;
SPACE_LIMIT = "0.5";
SYNC_ACL = "yes";
};
repos = {
SUBVOLUME = "/mnt/repos";
ALLOW_USERS = [ "marvin" ];
TIMELINE_CREATE = true;
TIMELINE_CLEANUP = true;
TIMELINE_LIMIT_DAILY = 14;
TIMELINE_LIMIT_HOURLY = 24;
TIMELINE_LIMIT_MONTHLY = 12;
TIMELINE_LIMIT_QUARTERLY = 1;
TIMELINE_LIMIT_WEEKLY = 5;
TIMELINE_LIMIT_YEARLY = 2;
SPACE_LIMIT = "0.5";
SYNC_ACL = "yes";
};
# Steam = {
# SUBVOLUME = "/mnt/Steam";
# ALLOW_USERS = [ "marvin" ];
# TIMELINE_CREATE = true;
# TIMELINE_CLEANUP = true;
# SPACE_LIMIT = "0.5";
# SYNC_ACL = "yes";
# };
# VMs = {
# SUBVOLUME = "/mnt/VMs";
# ALLOW_USERS = [ "marvin" ];
# TIMELINE_CREATE = true;
# TIMELINE_CLEANUP = true;
# TIMELINE_LIMIT_DAILY = 4;
# TIMELINE_LIMIT_HOURLY = 4;
# TIMELINE_LIMIT_MONTHLY = 2;
# TIMELINE_LIMIT_QUARTERLY = 1;
# TIMELINE_LIMIT_WEEKLY = 1;
# TIMELINE_LIMIT_YEARLY = 1;
# SPACE_LIMIT = "0.5";
# SYNC_ACL = "yes";
# };
};
systemd = {
timers = {
"defragment" = {
enable = true;
name = "defragment.timer";
timerConfig = {
OnCalendar = "*-*-01 00:00:00";
Persistent = "true";
Unit = "defragment.service";
};
};
};
services = {
"defragment" = {
script = "${defragmentServiceBin}/bin/defragment";
name = "defragment.service";
path = [ pkgs.btrfs-progs ];
restartIfChanged = false;
};
};
};
# services.beesd.filesystems.data.hashTableSizeMB = lib.mkForce 512;
swapDevices = [
{ device = "/dev/disk/by-uuid/c7459b6e-e621-4041-a12c-52a8209a0a7a"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp40s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp42s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp39s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}