nix-config/src/main.nix

379 lines
6.9 KiB
Nix
Raw Normal View History

{
pkgs,
lib,
hypr-contrib,
nix-gaming,
crystal-flake,
nixpkgs-hyprland-autoname-workspaces,
nixpkgs-master,
2023-06-09 00:30:11 +02:00
nixpkgs-srb2,
...
}: let
VARIABLES = import ./variables.nix;
in {
imports = [
"${VARIABLES.hostHardwareConfiguration}"
../overlays
../modules
../containers/rar.nix
../containers/wine.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
ameba
crystal-flake.packages.${VARIABLES.system}.crystal
crystal-flake.packages.${VARIABLES.system}.crystalline
nixpkgs-master.legacyPackages.${VARIABLES.system}.waycorner
slade
typespeed
osu-lazer-bin
2023-06-05 18:34:23 +02:00
mullvad-vpn
2023-06-05 18:16:21 +02:00
# dev
marksman
lua-language-server
clang-tools
texlab
# go
go
gopls
# nix
nil
alejandra
nixpkgs-fmt
2023-06-05 18:16:21 +02:00
# node/yarn/deno
nodejs
yarn
deno
# rust
gcc
rustc
rustfmt
cargo
rust-analyzer
bacon
# other
audacity
gimp
anki
logseq
mullvad-browser
spek
keepassxc
libreoffice
wget
jq
exa
fd
fzf
gdu
fdupes
mediainfo
ponysay
lolcat
cmatrix
sox
httpie
p7zip
ripgrep
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
sqlitebrowser
visidata
scc
hwinfo
stress
choose
gum
hdparm
imagemagick
onefetch
restic
wails
watchexec
memento
mpvpaper
timg
kanjidraw
ventoy
wf-recorder
mdcat
mdbook
zola
file
tessen
wtype
mtr
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;
editorconfig = {
enable = true;
settings = {
"*" = {
charset = "utf-8";
end_of_line = "lf";
insert_final_newline = true;
indent_size = 2;
indent_style = "space";
trim_trailing_whitespace = true;
};
"*.md".indent_style = "tab";
"Makefile" = {
indent_style = "tab";
indent_size = 4;
};
"*.html" = {
indent_style = "tab";
indent_size = 4;
};
"*.go" = {
indent_style = "tab";
indent_size = 4;
};
2023-06-06 02:51:31 +02:00
"*.rs" = {
indent_style = "space";
indent_size = 4;
};
2023-06-05 18:16:21 +02:00
};
};
programs.bat.enable = true;
}
];
};
# systemd
systemd.extraConfig = ''
DefaultTimeoutStopSec=10s
'';
# logind
services.logind.lidSwitch = "ignore";
# timezone
time.timeZone = "${VARIABLES.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
# dev
programs.npm.enable = true;
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;
};
};
};
zramSwap.enable = true;
2023-05-18 21:54:15 +02:00
}