NixOS-95/Configurations/Hosts/Default/configuration.nix
2025-07-28 15:24:46 +02:00

235 lines
8.3 KiB
Nix

{ config, pkgs, host, lib, inputs, userconf, ... }:
let
# Load user-specific variables
userVars = import ./variables/user-vars.nix;
inherit (userVars) username gitUsername gitEmail keyboardLayout;
nixDirectory = "/home/${username}/NixOS";
in {
################################################################
# Module Imports
################################################################
imports = [
# Host-specific hardware configuration (autogenerated)
./hardware-configuration.nix
# System-level user definition
./user.nix
# Base and global modules
../../../Modules/System
# Home Manager integration
inputs.home-manager.nixosModules.home-manager
# nixos95
inputs.self.nixosModules.nixos95
];
################################################################
# Display & Desktop Environment
################################################################
nixos95 = {
enable = true;
user = username;
taskbar = {
homeIcon = "whisker-menu-button";
battery-plugin.enable = false;
applications = [
{
name = "Brave";
description = "Browse the Web";
pkg = pkgs.brave;
icon = "world";
}
{
name = "Signal";
description = "Private Messenger";
pkg = pkgs.signal-desktop;
icon = "signal";
}
{
name = "Obsidian";
description = "Markdown Editor";
exe = "obsidian %u";
icon = "obsidian";
}
{
name = "Spotify";
description = "Spotify Music";
exe = "spotify %U";
icon = "spotify";
}
];
};
keybinds = {
commands = [
{ key="<Alt>F2"; exe="xfce4-appfinder --collapsed"; }
{ key="<Super>r"; exe="xfce4-appfinedr --collapsed"; }
{ key="<Alt>Print"; exe="xfce4-screenshooter --window"; }
{ key="XF86WWW"; exe="exo-open --launch WebBrowser"; }
{ key="XF86Mail"; exe="exo-open --launch MailReader"; }
{ key="<Alt>F3"; exe="xfce4-appfinder" ; }
{ key="Print"; exe="xfce4-screenshooter"; }
{ key="<Primary>Escape"; exe="xfdesktop --menu"; }
{ key="<Shift>Print"; exe="xfce4-screenshooter -r"; }
{ key="<Primary><Alt>Delete"; exe="xfce4-session-logout"; }
{ key="<Alt><Super>s"; exe="orca"; }
{ key="<Primary><Alt>t"; exe="exo-open --launch TerminalEmulator"; }
{ key="<Primary><Alt>f"; exe="thunar"; }
{ key="<Primary><Alt>l"; exe="xflock4"; }
{ key="<Super>l"; exe="xflock4"; }
{ key="<Alt>F1"; exe="xfce4-popup-applicationsmenu"; }
{ key="<Super>p"; exe="xfce4-display-settings --minimal"; }
{ key="<Primary><Shift>Escape"; exe="xfce4-taskmanager"; }
{ key="<Super>e"; exe="thunar"; }
{ key="<Primary><Alt>Escape"; exe="xkill"; }
{ key="HomePage"; exe="exo-open --launch WebBrowser"; }
{ key="XF86Display"; exe="xfce4-display-settings --minimal"; }
];
xfwm4 = [
{ key="<Primary>F12"; exe="workspace_12_key"; }
{ key="<Super>KP_Down"; exe="tile_down_key"; }
{ key="<Alt>F4"; exe="close_window_key"; }
{ key="<Primary><Alt>KP_3"; exe="move_window_workspace_3_key"; }
{ key="<Primary>F2"; exe="workspace_2_key"; }
{ key="<Primary>F6"; exe="workspace_6_key"; }
{ key="<Primary><Alt>Down"; exe="down_workspace_key"; }
{ key="<Primary><Alt>KP_9"; exe="move_window_workspace_9_key"; }
{ key="<Super>KP_Up"; exe="tile_up_key"; }
{ key="<Primary><Alt>End"; exe="move_window_next_workspace_key"; }
{ key="<Primary>F8"; exe="workspace_8_key"; }
{ key="<Primary><Shift><Alt>Left"; exe="move_window_left_key"; }
{ key="<Super>KP_Right"; exe="tile_right_key"; }
{ key="<Primary><Alt>KP_4"; exe="move_window_workspace_4_key"; }
{ key="Right"; exe="right_key"; }
{ key="Down"; exe="down_key"; }
{ key="<Primary>F3"; exe="workspace_3_key"; }
{ key="<Shift><Alt>Page_Down"; exe="lower_window_key"; }
{ key="<Primary>F9"; exe="workspace_9_key"; }
{ key="<Alt>Tab"; exe="cycle_windows_key"; }
{ key="<Primary><Shift><Alt>Right"; exe="move_window_right_key"; }
{ key="<Primary><Alt>Right"; exe="right_workspace_key"; }
{ key="<Alt>F6"; exe="stick_window_key"; }
{ key="<Primary><Alt>KP_5"; exe="move_window_workspace_5_key"; }
{ key="<Primary>F11"; exe="workspace_11_key"; }
{ key="<Alt>F10"; exe="maximize_window_key"; }
{ key="<Alt>Delete"; exe="del_workspace_key"; }
{ key="<Super>Tab"; exe="switch_window_key"; }
{ key="<Primary><Alt>d"; exe="show_desktop_key"; }
{ key="<Primary>F4"; exe="workspace_4_key"; }
{ key="<Super>KP_Page_Up"; exe="tile_up_right_key"; }
{ key="<Alt>F7"; exe="move_window_key"; }
{ key="Up"; exe="up_key"; }
{ key="<Primary><Alt>KP_6"; exe="move_window_workspace_6_key"; }
{ key="<Alt>F11"; exe="fullscreen_key"; }
{ key="<Alt>space"; exe="popup_menu_key"; }
{ key="<Super>KP_Home"; exe="tile_up_left_key"; }
{ key="Escape"; exe="cancel_key"; }
{ key="<Primary><Alt>KP_1"; exe="move_window_workspace_1_key"; }
{ key="<Super>KP_Next"; exe="tile_down_right_key"; }
{ key="<Super>KP_Left"; exe="tile_left_key"; }
{ key="<Shift><Alt>Page_Up"; exe="raise_window_key"; }
{ key="<Primary><Alt>Home"; exe="move_window_prev_workspace_key"; }
{ key="<Alt><Shift>Tab"; exe="cycle_reverse_windows_key"; }
{ key="<Primary><Alt>Left"; exe="left_workspace_key"; }
{ key="<Alt>F12"; exe="above_key"; }
{ key="<Primary><Shift><Alt>Up"; exe="move_window_up_key"; }
{ key="<Primary>F5"; exe="workspace_5_key"; }
{ key="<Alt>F8"; exe="resize_window_key"; }
{ key="<Primary><Alt>KP_7"; exe="move_window_workspace_7_key"; }
{ key="<Primary><Alt>KP_2"; exe="move_window_workspace_2_key"; }
{ key="<Super>KP_End"; exe="tile_down_left_key"; }
{ key="<Primary><Alt>Up"; exe="up_workspace_key"; }
{ key="<Alt>F9"; exe="hide_window_key"; }
{ key="<Primary>F7"; exe="workspace_7_key"; }
{ key="<Primary>F10"; exe="workspace_10_key"; }
{ key="Left"; exe="left_key"; }
{ key="<Primary><Alt>KP_8"; exe="move_window_workspace_8_key"; }
{ key="<Alt>Insert"; exe="add_workspace_key"; }
{ key="<Primary>F1"; exe="workspace_1_key"; }
];
};
};
################################################################
# System Packages (XFCE & Utilities)
################################################################
environment.systemPackages = with pkgs; [
# Optional Extras
xfce.gigolo
xfce.xfce4-screenshooter
xfce.parole
# xfce.xfce4-clipman
# other:
zsh
];
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
};
services.openssh.enable = true;
programs.zsh = {
enable = true;
ohMyZsh = {
enable = true;
theme = "xiong-chiamiov-plus";
plugins = ["git"];
};
};
################################################################
# Home Manager Configuration
################################################################
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "delme-HMbackup";
users.${username} = import ./home/home.nix {
inherit config nixDirectory pkgs;
};
};
################################################################
# Bootloader
################################################################
boot.loader = {
grub = {
enable = true;
efiSupport = false;
useOSProber = false;
devices = ["nodev"];
};
systemd-boot.enable = false;
efi.canTouchEfiVariables = false;
};
################################################################
# System Version
################################################################
system.stateVersion = "25.05";
}