auto-install script
This commit is contained in:
parent
50147fccd2
commit
13d1261689
|
@ -0,0 +1,345 @@
|
||||||
|
# main default configuration
|
||||||
|
|
||||||
|
# NOTE: packages and fonts are configured in packages-fonts.nix
|
||||||
|
|
||||||
|
{ config, pkgs, host, username, options, lib, inputs, system, ... }: let
|
||||||
|
|
||||||
|
inherit (import ./variables.nix) keyboardLayout;
|
||||||
|
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
./hardware.nix
|
||||||
|
./users.nix
|
||||||
|
./packages-fonts.nix
|
||||||
|
../../modules/amd-drivers.nix
|
||||||
|
../../modules/nvidia-drivers.nix
|
||||||
|
../../modules/nvidia-prime-drivers.nix
|
||||||
|
../../modules/intel-drivers.nix
|
||||||
|
../../modules/vm-guest-services.nix
|
||||||
|
../../modules/local-hardware-clock.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# boot related stuff
|
||||||
|
boot = {
|
||||||
|
kernelPackages = pkgs.linuxPackages_zen; # zen kernel
|
||||||
|
#kernelPackages = pkgs.linuxPackages_latest; # kernel
|
||||||
|
|
||||||
|
kernelParams = [
|
||||||
|
"systemd.mask=systemd-vconsole-setup.service"
|
||||||
|
"systemd.mask=dev-tpmrm0.device" # this is to mask the 1.5 mins systemd bug
|
||||||
|
"nowatchdog"
|
||||||
|
"modprobe.blacklist=sp5100_tco" # watchdog for AMD
|
||||||
|
"modprobe.blacklist=iTCO_wdt" # watchdog for Intel
|
||||||
|
];
|
||||||
|
|
||||||
|
# this is for OBS virtual cam support
|
||||||
|
# kernelModules = [ "v4l2loopback" ];
|
||||||
|
# extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
|
||||||
|
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
|
kernelModules = [ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Needed For Some Steam Games
|
||||||
|
#kernel.sysctl = {
|
||||||
|
# "vm.max_map_count" = 2147483642;
|
||||||
|
#};
|
||||||
|
|
||||||
|
# =======================================================================================
|
||||||
|
# BOOT LOADERS: use ONLY one, either SystemD or GRUB
|
||||||
|
# =======================================================================================
|
||||||
|
# SystemD bootloader
|
||||||
|
loader.systemd-boot.enable = true;
|
||||||
|
|
||||||
|
loader.efi = {
|
||||||
|
#efiSysMountPoint = "/efi"; # this is if you have separate /efi partition
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
loader.timeout = 5;
|
||||||
|
|
||||||
|
# GRUB bootloader
|
||||||
|
# Bootloader GRUB
|
||||||
|
#loader.grub = {
|
||||||
|
#enable = true;
|
||||||
|
# devices = [ "nodev" ];
|
||||||
|
# efiSupport = true;
|
||||||
|
# gfxmodeBios = "auto";
|
||||||
|
# memtest86.enable = true;
|
||||||
|
# extraGrubInstallArgs = [ "--bootloader-id=${host}" ];
|
||||||
|
# configurationName = "${host}";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Bootloader GRUB theme, configure below
|
||||||
|
|
||||||
|
# =======================================================================================
|
||||||
|
# END OF BOOTLOADERS
|
||||||
|
# =======================================================================================
|
||||||
|
|
||||||
|
# make /tmp a tmpfs
|
||||||
|
tmp = {
|
||||||
|
useTmpfs = false;
|
||||||
|
tmpfsSize = "30%";
|
||||||
|
};
|
||||||
|
|
||||||
|
# appimage support
|
||||||
|
binfmt.registrations.appimage = {
|
||||||
|
wrapInterpreterInShell = false;
|
||||||
|
interpreter = "${pkgs.appimage-run}/bin/appimage-run";
|
||||||
|
recognitionType = "magic";
|
||||||
|
offset = 0;
|
||||||
|
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
|
||||||
|
magicOrExtension = ''\x7fELF....AI\x02'';
|
||||||
|
};
|
||||||
|
|
||||||
|
plymouth.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# GRUB Bootloader theme. Of course you need to enable GRUB above.. duh! and also, enable it on flake.nix
|
||||||
|
#distro-grub-themes = {
|
||||||
|
# enable = true;
|
||||||
|
# theme = "nixos";
|
||||||
|
#};
|
||||||
|
|
||||||
|
# extra module options
|
||||||
|
drivers.amdgpu.enable = true;
|
||||||
|
drivers.intel.enable = true;
|
||||||
|
drivers.nvidia.enable = false;
|
||||||
|
drivers.nvidia-prime = {
|
||||||
|
enable = false;
|
||||||
|
intelBusID = "";
|
||||||
|
nvidiaBusID = "";
|
||||||
|
};
|
||||||
|
vm.guest-services.enable = false;
|
||||||
|
local.hardware-clock.enable = false;
|
||||||
|
|
||||||
|
# networking
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
networking.hostName = "${host}";
|
||||||
|
networking.timeServers = options.networking.timeServers.default ++ [ "pool.ntp.org" ];
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
services.automatic-timezoned.enable = true; #based on IP location
|
||||||
|
|
||||||
|
#https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||||
|
#time.timeZone = "Europe/Oslo"; # Set local timezone
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
i18n.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";
|
||||||
|
};
|
||||||
|
|
||||||
|
# services to start
|
||||||
|
services = {
|
||||||
|
xserver = {
|
||||||
|
enable = false;
|
||||||
|
xkb = {
|
||||||
|
layout = "${keyboarLayout}";
|
||||||
|
variant = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
greetd = {
|
||||||
|
enable = true;
|
||||||
|
vt = 3;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
user = username;
|
||||||
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland"; # start Hyprland with a TUI login manager
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
smartd = {
|
||||||
|
enable = false;
|
||||||
|
autodetect = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gvfs.enable = true;
|
||||||
|
tumbler.enable = true;
|
||||||
|
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
wireplumber.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio.enable = false; # unstable
|
||||||
|
udev.enable = true;
|
||||||
|
envfs.enable = true;
|
||||||
|
dbus.enable = true;
|
||||||
|
|
||||||
|
fstrim = {
|
||||||
|
enable = true;
|
||||||
|
interval = "weekly";
|
||||||
|
};
|
||||||
|
|
||||||
|
libinput.enable = true;
|
||||||
|
|
||||||
|
rpcbind.enable = false;
|
||||||
|
nfs.server.enable = false;
|
||||||
|
|
||||||
|
openssh.enable = true;
|
||||||
|
flatpak.enable = false;
|
||||||
|
|
||||||
|
blueman.enable = true;
|
||||||
|
|
||||||
|
# hardware.openrgb.enable = true;
|
||||||
|
# hardware.openrgb.motherboard = "amd"
|
||||||
|
|
||||||
|
fwupd.enable = true;
|
||||||
|
|
||||||
|
upower.enable = true;
|
||||||
|
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
|
||||||
|
#avahi = {
|
||||||
|
# enable = true;
|
||||||
|
# nssmdns4 = true;
|
||||||
|
# openFirewall = true;
|
||||||
|
#};
|
||||||
|
|
||||||
|
#ipp-usb.enable = true;
|
||||||
|
|
||||||
|
#syncthing = {
|
||||||
|
# enable = false;
|
||||||
|
# user = "${username}";
|
||||||
|
# dataDir = "/home/${username}";
|
||||||
|
# configDir = "/home/${username}/.config/syncthing";
|
||||||
|
#};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.flatpak-repo = {
|
||||||
|
path = [ pkgs.flatpak ];
|
||||||
|
script = ''
|
||||||
|
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# zram
|
||||||
|
zramSwap = {
|
||||||
|
enable = true;
|
||||||
|
priority = 100;
|
||||||
|
memoryPercent = 30;
|
||||||
|
swapDevices = 1;
|
||||||
|
algorithm = "zstd";
|
||||||
|
};
|
||||||
|
|
||||||
|
powerManagement = {
|
||||||
|
enable = true;
|
||||||
|
cpuFreqGovernor = "schedutil";
|
||||||
|
};
|
||||||
|
|
||||||
|
#hardware.sane = {
|
||||||
|
# enable = true;
|
||||||
|
# extraBackends = [ pkgs.sane-airscan ];
|
||||||
|
# disabledDefaultBackends = [ "escl" ];
|
||||||
|
#};
|
||||||
|
|
||||||
|
# extra logitech support
|
||||||
|
hardware.logitech.wireless.enable = false;
|
||||||
|
hardware.logitech.wireless.enableGraphical = false;
|
||||||
|
|
||||||
|
# bluetooth
|
||||||
|
hardware = {
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
settings = {
|
||||||
|
General = {
|
||||||
|
Enable = "Source,Sink,Media,Socket";
|
||||||
|
Experimental = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# security / polkit
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
security.polkit.enable = true;
|
||||||
|
security.polkit.extraConfig = ''
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if (
|
||||||
|
subject.isInGroup("users")
|
||||||
|
&& (
|
||||||
|
action.id == "org.freedesktop.login1.reboot" ||
|
||||||
|
action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
|
||||||
|
action.id == "org.freedesktop.login1.power-off" ||
|
||||||
|
action.id == "org.freedesktop.login1.power-off-multiple-sessions"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
security.pam.services.swaylock = {
|
||||||
|
text = ''
|
||||||
|
auth include login
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Cachix, Optimization settings and garbage collection automation
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
substituters = [ "https://hyprland.cachix.org" ];
|
||||||
|
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
|
||||||
|
};
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Virtualization / Containers
|
||||||
|
virtualisation.libvirtd.enable = false;
|
||||||
|
virtualisation.podman = {
|
||||||
|
enable = false;
|
||||||
|
dockerCompat = false;
|
||||||
|
defaultNetwork.settings.dns_enabled = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# OpenGL
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
console.keyMap = "${keyboardLayout}";
|
||||||
|
|
||||||
|
# For Electron apps to use wayland
|
||||||
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# 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?
|
||||||
|
}
|
Loading…
Reference in New Issue