263 lines
5.6 KiB
Nix
263 lines
5.6 KiB
Nix
{ config, pkgs, pkgs-unstable, ... }:
|
||
let
|
||
optionalPkgs = import ../optional-packages.nix { inherit pkgs; };
|
||
in
|
||
{
|
||
imports =
|
||
[
|
||
./hardware-configuration.nix
|
||
./device-specific.nix
|
||
../shared-conf.nix
|
||
];
|
||
|
||
networking.hostName = "nixMain"; # Define your hostname.
|
||
|
||
services.flatpak.enable = true;
|
||
|
||
# Bootloader.
|
||
boot.loader.systemd-boot.enable = true;
|
||
boot.loader.efi.canTouchEfiVariables = true;
|
||
|
||
boot.supportedFilesystems = [ "ntfs" ];
|
||
boot.kernelModules = [ "gpio-mockup" ];
|
||
|
||
boot.extraModprobeConfig = ''
|
||
options gpio-mockup gpio_mockup_ranges=-1,21
|
||
'';
|
||
|
||
# Enable emulation if Architecture:
|
||
boot.binfmt.emulatedSystems = [
|
||
"aarch64-linux"
|
||
];
|
||
|
||
# Allow user to ttyACM0
|
||
# Allow user to gpio
|
||
services.udev.extraRules = ''
|
||
KERNEL=="ttyACM0", GROUP="gpio", MODE="0660"
|
||
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", GROUP="gpio", MODE="0660"
|
||
'';
|
||
|
||
# Enable openrgb
|
||
services.hardware.openrgb.enable = true;
|
||
|
||
networking.firewall = {
|
||
enable = true;
|
||
|
||
logRefusedPackets = true;
|
||
allowedTCPPorts = [
|
||
# Web
|
||
80
|
||
443
|
||
|
||
# development servers
|
||
5000
|
||
5001
|
||
|
||
# Sunshine Steam-related
|
||
47984
|
||
47989
|
||
47990
|
||
48010
|
||
];
|
||
allowedTCPPortRanges = [
|
||
# KDE Connect
|
||
{ from = 1714; to = 1764; }
|
||
];
|
||
allowedUDPPortRanges = [
|
||
{ from = 4000; to = 4007; }
|
||
{ from = 8000; to = 8010; }
|
||
{ from = 47998; to = 48000; } # Sunshine Steam-related
|
||
{ from = 1714; to = 1764; } # KDE Connect
|
||
];
|
||
};
|
||
|
||
|
||
# Configure keymap in X11
|
||
services.xserver.xkb = {
|
||
layout = "gb";
|
||
variant = "";
|
||
};
|
||
|
||
# Configure console keymap
|
||
console.keyMap = "uk";
|
||
|
||
users.groups.gpio = {};
|
||
users.groups.wireshark = {};
|
||
users.users.someone = {
|
||
uid = 1000;
|
||
isNormalUser = true;
|
||
description = "someone";
|
||
extraGroups = [ "wheel" "docker" "libvirtd" "gpio" "wireshark" "adbusers" ];
|
||
packages = with pkgs; [];
|
||
shell = pkgs.zsh;
|
||
};
|
||
|
||
users.users.another = {
|
||
isNormalUser = true;
|
||
description = "another";
|
||
extraGroups = [];
|
||
packages = with pkgs; [];
|
||
shell = pkgs.bash;
|
||
};
|
||
|
||
# Use ly as display manager
|
||
services.displayManager = {
|
||
ly = {
|
||
enable = true;
|
||
settings = {
|
||
tty = 1;
|
||
};
|
||
};
|
||
autoLogin = {
|
||
enable = true;
|
||
user = "someone";
|
||
};
|
||
defaultSession = "hyprland";
|
||
};
|
||
|
||
# Docker
|
||
virtualisation.docker.enable = true;
|
||
virtualisation.docker.storageDriver = "btrfs";
|
||
# Added docker group to user
|
||
|
||
|
||
# Desktop enviorment
|
||
programs.hyprland = {
|
||
enable = true;
|
||
withUWSM = false; # Universal Wayland Session Manage, ly dosnt like this
|
||
xwayland.enable = true; # Xwayland can be disabled.
|
||
};
|
||
|
||
# Additional steam settings
|
||
programs.steam = {
|
||
enable = true;
|
||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||
#localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
||
};
|
||
|
||
# Thunar file manager
|
||
programs.thunar.enable = true;
|
||
programs.xfconf.enable = true; # Neded to save preferances
|
||
programs.thunar.plugins = with pkgs; [
|
||
thunar-archive-plugin
|
||
];
|
||
services.gvfs.enable = true; # Mount, trash, and other functionalities
|
||
services.tumbler.enable = true; # Thumbnail support for images
|
||
|
||
|
||
environment.systemPackages = with pkgs; [
|
||
# System
|
||
polkit
|
||
libsecret # for gnome-keyring
|
||
xdg-desktop-portal-gtk
|
||
xdg-utils
|
||
shared-mime-info
|
||
xwayland
|
||
dconf
|
||
tree
|
||
unzip
|
||
bind # dig, nslookup
|
||
|
||
# Hyprland stuff
|
||
uwsm # might not be needet, test login without
|
||
kitty
|
||
dunst
|
||
waybar
|
||
rofi
|
||
nwg-drawer
|
||
swaylock
|
||
hyprpolkitagent
|
||
hyprpicker
|
||
hypridle
|
||
hyprpaper
|
||
playerctl
|
||
pwvucontrol
|
||
|
||
# Screenshots & clipboard
|
||
grim
|
||
slurp
|
||
swappy
|
||
wl-clipboard
|
||
copyq
|
||
python312Packages.pillow
|
||
|
||
# Files
|
||
yazi
|
||
file-roller
|
||
qimgv
|
||
|
||
# Media
|
||
vlc
|
||
rawtherapee
|
||
handbrake
|
||
svt-av1
|
||
tidal-hifi
|
||
|
||
# 3D / CAD
|
||
blender
|
||
freecad
|
||
|
||
# Dev
|
||
python3
|
||
qemu
|
||
virt-manager
|
||
|
||
# Comms
|
||
discord-ptb
|
||
kdePackages.kdeconnect-kde
|
||
seahorse
|
||
|
||
# Gaming
|
||
sunshine
|
||
heroic
|
||
prismlauncher
|
||
|
||
# Monitoring
|
||
kdePackages.plasma-systemmonitor
|
||
# nvtopPackages.full
|
||
# btop
|
||
|
||
# Hardware
|
||
android-tools # adb, fastboot
|
||
|
||
# Theme
|
||
catppuccin-cursors.frappeMauve
|
||
libsForQt5.qt5ct
|
||
qt6Packages.qt6ct
|
||
lxappearance
|
||
adwaita-icon-theme
|
||
|
||
# Misc
|
||
pkgs-unstable.orca-slicer
|
||
pkgs-unstable.video-downloader
|
||
] ++ optionalPkgs;
|
||
|
||
# nerdfonts wher seperated into different packages, so nerdfonts dosnt work
|
||
fonts.packages = with pkgs; [] ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
||
|
||
|
||
#Enviormant
|
||
# needet for electron apps under wayland
|
||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||
|
||
# Enable auth polkit
|
||
security.polkit.enable = true;
|
||
# Walet, needet for nextcloud login
|
||
services.gnome.gnome-keyring.enable = true;
|
||
|
||
security.pam.services.ly.enableGnomeKeyring = 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 = "24.11"; # Did you read the comment?
|
||
|
||
}
|