mirror of
https://codeberg.org/privacy1st/nix-git
synced 2024-11-21 22:03:19 +01:00
143 lines
4.9 KiB
Nix
143 lines
4.9 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
# Firmware.
|
|
# Enables e.g. Intel microcode updates.
|
|
hardware.enableRedistributableFirmware = true;
|
|
#hardware.enableAllFirmware = true;
|
|
|
|
# Bootloader.
|
|
boot.loader.systemd-boot.enable = true;
|
|
boot.loader.efi.canTouchEfiVariables = true;
|
|
|
|
# Setup keyfile.
|
|
boot.initrd.secrets = {
|
|
"/crypto_keyfile.bin" = null;
|
|
};
|
|
|
|
# Enables wireless support via wpa_supplicant.
|
|
# networking.wireless.enable = true;
|
|
|
|
# Enable networking.
|
|
networking.networkmanager.enable = true;
|
|
|
|
networking.nameservers = [
|
|
# https://www.kuketz-blog.de/empfehlungsecke/#dns
|
|
# dot.ffmuc.net (supports DNSSEC)
|
|
"5.1.66.255" "185.150.99.255"
|
|
# https://www.kuketz-blog.de/empfehlungsecke/#dns
|
|
# unfiltered.adguard-dns.com (supports DNSSEC)
|
|
"94.140.14.140" "94.140.14.141"
|
|
];
|
|
|
|
# Set your time zone.
|
|
time.timeZone = "Europe/Berlin";
|
|
|
|
# Select internationalisation properties.
|
|
i18n.defaultLocale = "en_US.UTF-8";
|
|
|
|
i18n.extraLocaleSettings = {
|
|
LC_ADDRESS = "de_DE.UTF-8";
|
|
LC_IDENTIFICATION = "de_DE.UTF-8";
|
|
LC_MEASUREMENT = "de_DE.UTF-8";
|
|
LC_MONETARY = "de_DE.UTF-8";
|
|
LC_NAME = "de_DE.UTF-8";
|
|
LC_NUMERIC = "de_DE.UTF-8";
|
|
LC_PAPER = "de_DE.UTF-8";
|
|
LC_TELEPHONE = "de_DE.UTF-8";
|
|
LC_TIME = "de_DE.UTF-8";
|
|
};
|
|
|
|
# Configure console keymap.
|
|
console.keyMap = "de-latin1-nodeadkeys";
|
|
|
|
# Define a user account. Don't forget to set a password with `passwd`.
|
|
users.users.yoda = {
|
|
isNormalUser = true;
|
|
description = "Yoda";
|
|
extraGroups = [ "networkmanager" "wheel" ];
|
|
packages = with pkgs; [
|
|
# Nix dependency management.
|
|
niv
|
|
];
|
|
};
|
|
|
|
# List packages installed in system profile. To search, run:
|
|
# $ nix search wget
|
|
environment.systemPackages = with pkgs; [
|
|
];
|
|
|
|
# SystemMaxFileSize: Defaults to one eighth of the values configured with SystemMaxUse= and RuntimeMaxUse=, so that usually seven rotated journal files are kept as history.
|
|
# MaxFileSec: To ensure that not too much data is lost at once when old journal files are deleted, it might make sense to change this value from the default of one month.
|
|
# https://www.freedesktop.org/software/systemd/man/journald.conf.html
|
|
services.journald.extraConfig = ''
|
|
SystemMaxUse=800M
|
|
MaxFileSec=7day
|
|
'';
|
|
|
|
# BTRFS mount options.
|
|
#
|
|
# Compression
|
|
# `nixos-generate-config` does not detect mount options, so we add them here.
|
|
# https://nixos.wiki/wiki/Btrfs#Compression
|
|
#
|
|
# noatime
|
|
# Under read intensive work-loads, specifying noatime significantly improves performance because no new access time information needs to be written.
|
|
# https://man.archlinux.org/man/btrfs.5#NOTES_ON_GENERIC_MOUNT_OPTIONS
|
|
#
|
|
fileSystems = {
|
|
"/".options = [ "compress=zstd" "noatime" ];
|
|
};
|
|
|
|
# BTRFS scrub.
|
|
#
|
|
# Scrubbing is the process of checking file consistency.
|
|
# Scrubbing may be done "online", meaning you don't need to unmount a subvolume to scrub it.
|
|
# https://nixos.wiki/wiki/Btrfs#Scrubbing
|
|
# Btrfs scrub is "[a]n online filesystem checking tool. Reads all the data and metadata on the filesystem and uses checksums and the duplicate copies from RAID storage to identify and repair any corrupt data."
|
|
# https://wiki.archlinux.org/title/btrfs#Scrub
|
|
# The scrub command operates on a whole filesystem, not just individual subvolumes.
|
|
# https://unix.stackexchange.com/a/724412
|
|
#
|
|
# Manually - yodaTux:
|
|
# sudo btrfs scrub start /
|
|
# sudo btrfs scrub status /
|
|
# #=> UUID: 01f67928-9b35-48b2-aaa6-c58ff6c440a8
|
|
# #=> Scrub started: Sat Sep 16 12:54:47 2023
|
|
# #=> Status: finished
|
|
# #=> Duration: 0:00:42
|
|
# #=> Total to scrub: 64.43GiB
|
|
# #=> Rate: 1.53GiB/s
|
|
# #=> Error summary: no errors found
|
|
# Manually - nas:
|
|
# sudo btrfs scrub start /mnt/data
|
|
# sudo btrfs scrub status /mnt/data
|
|
# #=> UUID: c385a436-0288-486f-a2b9-c64c2db667e7
|
|
# #=> Scrub started: Mon Sep 18 14:10:01 2023
|
|
# #=> Status: finished
|
|
# #=> Duration: 7:23:40
|
|
# #=> Total to scrub: 4.40TiB
|
|
# #=> Rate: 173.38MiB/s
|
|
# #=> Error summary: no errors found
|
|
services.btrfs.autoScrub = {
|
|
enable = true;
|
|
interval = "monthly";
|
|
fileSystems = [ "/" ];
|
|
};
|
|
|
|
nix.settings.auto-optimise-store = true;
|
|
|
|
# Firewall.
|
|
# https://nixos.wiki/wiki/Firewall
|
|
# -> Firewall rules may be overwritten by docker, as per https://github.com/NixOS/nixpkgs/issues/111852
|
|
networking.firewall.enable = true;
|
|
|
|
# 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. It's 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 = "23.05"; # Did you read the comment?
|
|
}
|