260 lines
6.1 KiB
Nix
260 lines
6.1 KiB
Nix
# 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, lib, pkgs, ... }:
|
||
|
||
{
|
||
# pin the latest nvidia driver that works because they are so awesome in releasing an update that broke opengl for my 1050ti
|
||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
|
||
version = "570.144";
|
||
sha256_64bit = "sha256-wLjX7PLiC4N2dnS6uP7k0TI9xVWAJ02Ok0Y16JVfO+Y=";
|
||
sha256_aarch64 = "sha256-6kk2NLeKvG88QH7/YIrDXW4sgl324ddlAyTybvb0BP0=";
|
||
openSha256 = "sha256-PATw6u6JjybD2OodqbKrvKdkkCFQPMNPjrVYnAZhK/E=";
|
||
settingsSha256 = "sha256-VcCa3P/v3tDRzDgaY+hLrQSwswvNhsm93anmOhUymvM=";
|
||
persistencedSha256 = "sha256-hx4w4NkJ0kN7dkKDiSOsdJxj9+NZwRsZEuhqJ5Rq3nM=";
|
||
};
|
||
|
||
# enable yubikey auth
|
||
security.pam.services = {
|
||
login.u2fAuth = true;
|
||
sudo.u2fAuth = true;
|
||
sddm = {
|
||
u2fAuth = true;
|
||
kwallet.enable = true;
|
||
};
|
||
kde.u2fAuth = true;
|
||
# kde popups
|
||
polkit-1.u2fAuth = true;
|
||
};
|
||
|
||
# Bootloader.
|
||
boot.loader = {
|
||
systemd-boot = {
|
||
enable = true;
|
||
editor = false;
|
||
configurationLimit = 5;
|
||
};
|
||
efi.canTouchEfiVariables = true;
|
||
};
|
||
|
||
# swap
|
||
swapDevices = [ {
|
||
device = "/var/swapfile";
|
||
size = 16*1024;
|
||
} ];
|
||
|
||
# systemd timers
|
||
systemd.timers = {
|
||
"autoUpgrade" = {
|
||
wantedBy = [ "timers.target" ];
|
||
timerConfig = {
|
||
OnCalendar = "*-*-* 3:30:00";
|
||
Unit = "autoUpgrade.service";
|
||
};
|
||
};
|
||
|
||
# "rsync" = {
|
||
# wantedBy = [ "timers.target" ];
|
||
# timerConfig = {
|
||
# OnCalendar = "*-*-* 4:00:00";
|
||
# Unit = "rsync.service";
|
||
# };
|
||
# };
|
||
};
|
||
|
||
systemd.services = {
|
||
# "rsync" = {
|
||
# script = '' ${pkgs.bash}/bin/bash /home/wo2w/Scripts/rsync.sh '';
|
||
# serviceConfig = {
|
||
# Type = "oneshot";
|
||
# User = "root";
|
||
# };
|
||
# };
|
||
|
||
"autoUpgrade" = {
|
||
wants = [ "network-online.target" ];
|
||
after = [ "network-online.target" ];
|
||
script = '' /usr/bin/env -C /etc/nixos ${pkgs.nix}/bin/nix flake update '';
|
||
serviceConfig = {
|
||
Type = "oneshot";
|
||
User = "root";
|
||
};
|
||
};
|
||
};
|
||
|
||
# nix config
|
||
nix = {
|
||
gc.automatic = true;
|
||
optimise.automatic = true;
|
||
settings = {
|
||
experimental-features = [ "nix-command" "flakes" ];
|
||
download-buffer-size = 524288000;
|
||
};
|
||
};
|
||
|
||
# Allow unfree packages
|
||
nixpkgs.config.allowUnfree = true;
|
||
|
||
# Enable networking
|
||
networking = {
|
||
networkmanager.enable = true;
|
||
hostName = "Ares"; # Define your hostname.
|
||
};
|
||
|
||
# Set your time zone.
|
||
time.timeZone = "America/New_York";
|
||
|
||
# Location (real)
|
||
location = {
|
||
latitude = 71.8260798;
|
||
longitude = 91.0350983;
|
||
};
|
||
|
||
# Select internationalisation properties.
|
||
i18n = {
|
||
defaultLocale = "en_US.UTF-8";
|
||
extraLocaleSettings = {
|
||
LC_ADDRESS = "en_US.UTF-8";
|
||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||
LC_MEASUREMENT = "en_US.UTF-8";
|
||
LC_MONETARY = "en_US.UTF-8";
|
||
LC_NAME = "en_US.UTF-8";
|
||
LC_NUMERIC = "en_US.UTF-8";
|
||
LC_PAPER = "en_US.UTF-8";
|
||
LC_TELEPHONE = "en_US.UTF-8";
|
||
LC_TIME = "en_US.UTF-8";
|
||
};
|
||
};
|
||
|
||
# Enable the X11 windowing system.
|
||
# You can disable this if you're only using the Wayland session.
|
||
services.xserver.enable = true;
|
||
|
||
# Enable the KDE Plasma Desktop Environment.
|
||
services.displayManager.sddm = {
|
||
enable = true;
|
||
wayland = {
|
||
enable = true;
|
||
compositor = "kwin";
|
||
};
|
||
};
|
||
services.desktopManager.plasma6.enable = true;
|
||
programs.niri.enable = true;
|
||
|
||
# Configure keymap in X11
|
||
services.xserver.xkb = {
|
||
layout = "us";
|
||
variant = "";
|
||
};
|
||
|
||
# Enable sound with pipewire. + bluetooth
|
||
hardware.bluetooth.enable = true;
|
||
hardware.bluetooth.powerOnBoot = true;
|
||
security.rtkit.enable = true;
|
||
services.pipewire = {
|
||
enable = true;
|
||
alsa.enable = true;
|
||
alsa.support32Bit = true;
|
||
pulse.enable = true;
|
||
};
|
||
|
||
# libratbag for mouse config
|
||
services.ratbagd.enable = true;
|
||
|
||
users.users.wo2w = {
|
||
isNormalUser = true;
|
||
description = "Ares";
|
||
extraGroups = [ "networkmanager" "wheel" ];
|
||
};
|
||
|
||
# List packages installed in system profile. To search, run:
|
||
# $ nix search wget
|
||
environment.systemPackages = with pkgs; [
|
||
# utilities
|
||
wget
|
||
xautomation
|
||
cameractrls
|
||
kdePackages.ksshaskpass
|
||
# for niri
|
||
fuzzel
|
||
mako
|
||
waybar
|
||
xwayland-satellite
|
||
# gamemode
|
||
# adb
|
||
# ratbagd
|
||
# graphical applications
|
||
# adb
|
||
# steam
|
||
# kdeconnect
|
||
];
|
||
|
||
# exclude some kde packages
|
||
environment.plasma6.excludePackages = with pkgs.kdePackages; [
|
||
elisa
|
||
discover
|
||
konsole
|
||
khelpcenter
|
||
krdp
|
||
];
|
||
|
||
programs = {
|
||
adb.enable = true;
|
||
gamemode.enable = true;
|
||
kdeconnect.enable = true;
|
||
steam = {
|
||
enable = true;
|
||
extraCompatPackages = [ pkgs.proton-ge-bin ];
|
||
};
|
||
};
|
||
|
||
stylix = {
|
||
enable = true;
|
||
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml";
|
||
targets = {
|
||
fontconfig.enable = false;
|
||
font-packages.enable = false;
|
||
};
|
||
fonts.sizes = {
|
||
applications = 12;
|
||
desktop = 10;
|
||
popups = 10;
|
||
terminal = 12;
|
||
};
|
||
};
|
||
|
||
services = {
|
||
# CUPS for printing
|
||
printing.enable = true;
|
||
};
|
||
|
||
# enable native wayland in chromium/electron
|
||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||
|
||
# ssh
|
||
programs.ssh = {
|
||
startAgent = true;
|
||
enableAskPassword = true;
|
||
extraConfig = "
|
||
Host gameserver
|
||
Hostname 192.168.2.221
|
||
Port 22
|
||
User wo2w
|
||
IdentityFile /home/wo2w/.ssh/ssh-key
|
||
";
|
||
};
|
||
|
||
environment.variables = {
|
||
SSH_ASKPASS_REQUIRE = "prefer";
|
||
};
|
||
|
||
# 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 = "24.11"; # Did you read the comment?
|
||
|
||
}
|