nix-config/src/main.nix

292 lines
5.6 KiB
Nix
Raw Normal View History

{ pkgs
, lib
, hypr-contrib
, nix-gaming
, crystal-flake
, nixpkgs-hyprland-autoname-workspaces
, nixpkgs-srb2
, ...
}:
2023-06-11 15:51:26 +02:00
let VARIABLES = import ./variables.nix; in {
imports = [
"${VARIABLES.hostHardwareConfiguration}"
../overlays
../modules
../containers/rar.nix
../containers/wine.nix
../containers/dev.nix
2023-06-13 00:35:19 +02:00
../containers/gui.nix
];
# locale
2023-06-06 14:14:52 +02:00
i18n.defaultLocale = VARIABLES.defaultLocale;
i18n.supportedLocales = VARIABLES.supportedLocales;
# nix
nix.package = pkgs.nixFlakes;
nix.settings.experimental-features = [ "nix-command" "flakes" "repl-flake" ];
nix.settings.auto-optimise-store = true;
hardware.opengl.driSupport32Bit = true;
boot.loader = {
systemd-boot = {
enable = true;
editor = false;
configurationLimit = 10;
};
timeout = 0;
efi.canTouchEfiVariables = true;
};
boot.tmp.useTmpfs = true;
2023-06-07 18:26:12 +02:00
programs.gamemode = {
enable = true;
settings = {
general = {
renice = 10;
igpu_power_threshold = -1;
};
custom = {
start = "${pkgs.libnotify}/bin/notify-send 'Note' 'gamemode started.'";
end = "${pkgs.libnotify}/bin/notify-send 'Note' 'gamemode ended.";
};
};
};
environment.systemPackages = with pkgs; [
hypr-contrib.packages."${VARIABLES.system}".grimblast
nix-gaming.packages."${VARIABLES.system}".osu-stable
crystal-flake.packages.${VARIABLES.system}.crystal
crystal-flake.packages.${VARIABLES.system}.crystalline
2023-06-13 00:35:19 +02:00
ameba
waycorner
nwg-dock-hyprland
slade
typespeed
osu-lazer-bin
2023-06-05 18:34:23 +02:00
mullvad-vpn
2023-06-11 15:22:32 +02:00
pass
treefmt
jamesdsp
2023-06-05 18:16:21 +02:00
logseq
mullvad-browser
spek
gdu
fdupes
mediainfo
ponysay
lolcat
cmatrix
sox
httpie
p7zip
rsync
unar
genact
ffmpeg
killall
trashy
whois
dwt1-shell-color-scripts
dig
yt-dlp
neofetch
pywal
brightnessctl
zellij
librespeed-cli
wiki-tui
hexyl
nb
jpegoptim
playerctl
recode
rmlint
sd
shards
smartmontools
visidata
scc
hwinfo
stress
choose
gum
hdparm
imagemagick
onefetch
restic
watchexec
memento
mpvpaper
timg
ventoy
wf-recorder
mdcat
mdbook
zola
file
tessen
wtype
mtr
2023-06-13 00:35:19 +02:00
cointop
grim
slurp
wl-clipboard
lnch
wev
swww
kickoff
greetd.tuigreet
nixpkgs-hyprland-autoname-workspaces.legacyPackages.${VARIABLES.system}.hyprland-autoname-workspaces
2023-06-09 00:30:11 +02:00
nixpkgs-srb2.legacyPackages.${VARIABLES.system}.srb2
];
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"osu-lazer-bin"
"vmware-workstation"
];
environment.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
GIT_DISCOVERY_ACROSS_FILESYSTEM = "1";
FZF_DEFAULT_OPTS = "--height 40% --reverse --border --color=16";
NODE_OPTIONS = "--max_old_space_size=16384";
};
environment.defaultPackages = [ ];
2023-06-06 11:15:41 +02:00
system.stateVersion = VARIABLES.stateVersion;
# home-manager
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
sharedModules = [
{
2023-06-06 11:15:41 +02:00
home.stateVersion = VARIABLES.stateVersion;
}
];
};
2023-06-13 00:35:19 +02:00
systemd.extraConfig = "DefaultTimeoutStopSec=10s"; # Prevent hanging on shutdown
services.logind.lidSwitch = "ignore"; # Don't suspend on lid close
time.timeZone = "${VARIABLES.timezone}"; # Timezone
2023-06-05 18:12:12 +02:00
# user
users = {
mutableUsers = false;
2023-06-06 16:48:10 +02:00
users."${VARIABLES.username}" = {
2023-06-05 18:12:12 +02:00
isNormalUser = true;
uid = 1000;
password = "user";
extraGroups = [ "wheel" "networkmanager" ];
2023-06-05 18:12:12 +02:00
};
};
home-manager.users.user = {
2023-06-06 16:48:10 +02:00
home.username = VARIABLES.username;
home.homeDirectory = "/home/${VARIABLES.username}";
2023-06-05 18:12:12 +02:00
};
2023-06-05 18:16:21 +02:00
2023-06-05 18:34:23 +02:00
# networking
networking = {
hostName = VARIABLES.hostname;
2023-06-05 18:34:23 +02:00
networkmanager = {
enable = true;
dns = "none";
wifi.macAddress = "random";
ethernet.macAddress = "random";
2023-06-05 19:04:03 +02:00
unmanaged = [ "interface-name:ve-*" ];
2023-06-05 18:34:23 +02:00
};
useHostResolvConf = true;
};
services.resolved.llmnr = "false";
systemd.services.NetworkManager-wait-online.enable = false;
# virtualization
virtualisation.vmVariant = {
virtualisation = {
memorySize = 8192;
cores = 4;
restrictNetwork = true;
};
virtualisation.qemu.options = [ "-device virtio-vga-gl" "-display sdl,gl=on,show-cursor=off" "-full-screen" ];
2023-06-05 18:34:23 +02:00
environment.sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1";
};
};
# mullvad-vpn
services.mullvad-vpn = {
enable = true;
enableExcludeWrapper = false;
};
networking.firewall.allowedTCPPorts = [ 11918 ];
2023-06-05 18:34:23 +02:00
networking = {
nat = {
enable = true;
internalInterfaces = [ "ve-+" ];
2023-06-05 18:34:23 +02:00
externalInterface = "wg-mullvad";
forwardPorts = [
{
destination = "192.168.100.11:80";
sourcePort = 11918;
}
];
};
};
virtualisation.vmware.host = {
enable = true;
extraConfig = ''
# Enable 3D acceleration on the host
mks.gl.allowUnsupportedDrivers = "TRUE"
mks.vk.allowUnsupportedDevices = "TRUE"
'';
};
programs.htop = {
enable = true;
package = pkgs."htop-vim";
settings = { tree_view = 1; };
};
services.greetd = {
enable = true;
restart = false;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland";
user = "greeter";
};
initial_session = {
command = "${pkgs.hyprland}/bin/Hyprland";
user = VARIABLES.username;
};
};
};
2023-06-13 00:35:19 +02:00
zramSwap.enable = true; # Swap
2023-05-18 21:54:15 +02:00
}