224 lines
5.5 KiB
Nix
Executable file
224 lines
5.5 KiB
Nix
Executable file
# Edit this configuration file to define what should be installed on
|
||
# your system. Help is available in the configuration.nix(5) man page
|
||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||
|
||
{ config, pkgs, lib, ... }:
|
||
|
||
{
|
||
imports =
|
||
[ # Include the results of the hardware scan.
|
||
./hardware-configuration.nix
|
||
];
|
||
|
||
# keyring for nextcloud etc.
|
||
services.gnome.gnome-keyring.enable = true;
|
||
security.pam.services.greetd.enableGnomeKeyring = true;
|
||
environment.variables.XDG_RUNTIME_DIR = "/run/user/$UID";
|
||
programs.seahorse.enable = true;
|
||
|
||
# optimize power usage
|
||
powerManagement.enable = true;
|
||
|
||
# prevent overheat
|
||
services.thermald.enable = true;
|
||
|
||
services.tlp = {
|
||
enable = true;
|
||
settings = {
|
||
CPU_SCALING_GOVERNOR_ON_AC = "performance";
|
||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
||
|
||
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
|
||
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
|
||
|
||
CPU_MIN_PERF_ON_AC = 0;
|
||
CPU_MAX_PERF_ON_AC = 100;
|
||
CPU_MIN_PERF_ON_BAT = 0;
|
||
CPU_MAX_PERF_ON_BAT = 20;
|
||
|
||
#Optional helps save long term battery health
|
||
START_CHARGE_THRESH_BAT0 = 40; # 40 and bellow it starts to charge
|
||
STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging
|
||
|
||
};
|
||
};
|
||
|
||
# optimize storage
|
||
nix.optimise.automatic = true;
|
||
|
||
# Bootloader.
|
||
boot.loader.efi.canTouchEfiVariables = true;
|
||
boot.loader.efi.efiSysMountPoint = "/boot";
|
||
boot.loader.systemd-boot.enable = true;
|
||
|
||
# udev for brillo
|
||
services.udev.extraRules = ''
|
||
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness"
|
||
'';
|
||
|
||
services.logind.extraConfig = ''
|
||
# don’t shutdown when power button is short-pressed
|
||
HandlePowerKey=suspend
|
||
'';
|
||
services.logind.lidSwitch = "suspend";
|
||
|
||
networking.hostName = "absol";
|
||
# networking.wireless.enable = true;
|
||
networking.networkmanager.enable = true;
|
||
|
||
# Set your time zone.
|
||
time.timeZone = "Europe/Berlin";
|
||
|
||
i18n.supportedLocales = [
|
||
"en_US.UTF-8/UTF-8"
|
||
"de_DE.UTF-8/UTF-8"
|
||
];
|
||
|
||
# Select internationalisation properties.
|
||
i18n.defaultLocale = "en_US.UTF-8";
|
||
|
||
i18n.extraLocaleSettings = {
|
||
LANG = "en_US.UTF-8";
|
||
LC_ALL = "en_US.UTF-8";
|
||
LANGUAGE = "en_US.UTF-8";
|
||
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";
|
||
};
|
||
|
||
services.greetd = {
|
||
enable = true;
|
||
settings = {
|
||
default_session = {
|
||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland";
|
||
user = "greeter";
|
||
};
|
||
};
|
||
};
|
||
|
||
# Configure console keymap
|
||
console.keyMap = "us";
|
||
|
||
# Enable CUPS to print documents.
|
||
services.avahi = {
|
||
enable = true;
|
||
nssmdns4 = true;
|
||
openFirewall = true;
|
||
};
|
||
services.printing = {
|
||
enable = true;
|
||
};
|
||
|
||
# iwlwifi fix?
|
||
hardware.enableRedistributableFirmware = true;
|
||
|
||
# bluetooth
|
||
hardware.bluetooth.enable = true;
|
||
hardware.bluetooth.powerOnBoot = true;
|
||
services.blueman.enable = true;
|
||
|
||
# Enable sound with pipewire.
|
||
security.rtkit.enable = true;
|
||
services.pipewire = {
|
||
enable = true;
|
||
alsa.enable = true;
|
||
alsa.support32Bit = true;
|
||
pulse.enable = true;
|
||
};
|
||
|
||
# Define a user account.
|
||
users.users.leonv = {
|
||
isNormalUser = true;
|
||
description = "Leon Vatthauer";
|
||
extraGroups = [ "networkmanager" "wheel" ];
|
||
initialPassword = "leonv"; # just for setup
|
||
};
|
||
|
||
# Allow unfree packages
|
||
nixpkgs.config.allowUnfree = true;
|
||
|
||
# List packages installed in system profile.
|
||
environment.systemPackages =
|
||
with pkgs;
|
||
[
|
||
texliveFull
|
||
libsecret
|
||
# for connecting to nas
|
||
nfs-utils
|
||
|
||
# some standards for convenience
|
||
vim
|
||
parted
|
||
qpdfview
|
||
|
||
# deps for hyprland / eww
|
||
socat
|
||
];
|
||
|
||
system.stateVersion = "24.05";
|
||
|
||
# source zsh
|
||
programs.zsh.enable = true;
|
||
users.defaultUserShell = pkgs.zsh;
|
||
|
||
nix.settings.substituters = [
|
||
"https://aseipp-nix-cache.global.ssl.fastly.net"
|
||
];
|
||
|
||
# environment variables
|
||
environment.sessionVariables = {
|
||
## disable logging when direnv changes
|
||
DIRENV_LOG_FORMAT = [];
|
||
};
|
||
|
||
# fonts
|
||
fonts = {
|
||
fontDir.enable = true; # links fonts to /run/current-system/sw/share/X11/fonts
|
||
packages = with pkgs; [
|
||
((nerdfonts.override { fonts = [ "Hack" "DejaVuSansMono" "DroidSansMono" "Noto" ]; }))
|
||
mononoki
|
||
# noto-fonts
|
||
noto-fonts-cjk
|
||
noto-fonts-emoji
|
||
];
|
||
enableDefaultPackages = true;
|
||
fontconfig = {
|
||
defaultFonts = {
|
||
monospace = [ "Berkeley Mono Nerd Font" ];
|
||
sansSerif = [ "NotoSans Nerd Font" ];
|
||
serif = [ "NotoSans Nerd Font" ];
|
||
emoji = [ "Noto Color Emoji" ];
|
||
};
|
||
};
|
||
};
|
||
|
||
# enable flakes
|
||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||
|
||
# hyprland
|
||
programs.hyprland.enable = true;
|
||
|
||
# ssh
|
||
programs.ssh.startAgent = true;
|
||
programs.ssh.extraConfig = ''
|
||
AddKeysToAgent yes
|
||
IdentityFile ~/.ssh/git
|
||
'';
|
||
|
||
# thunar
|
||
programs.thunar = {
|
||
enable = true;
|
||
plugins = with pkgs.xfce; [
|
||
thunar-archive-plugin
|
||
thunar-volman
|
||
];
|
||
};
|
||
services.gvfs.enable = true; # Mount, trash, and others
|
||
services.tumbler.enable = true; # thumbnail support for images
|
||
}
|