{ 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="F2"; exe="xfce4-appfinder --collapsed"; } { key="r"; exe="xfce4-appfinedr --collapsed"; } { key="Print"; exe="xfce4-screenshooter --window"; } { key="XF86WWW"; exe="exo-open --launch WebBrowser"; } { key="XF86Mail"; exe="exo-open --launch MailReader"; } { key="F3"; exe="xfce4-appfinder" ; } { key="Print"; exe="xfce4-screenshooter"; } { key="Escape"; exe="xfdesktop --menu"; } { key="Print"; exe="xfce4-screenshooter -r"; } { key="Delete"; exe="xfce4-session-logout"; } { key="s"; exe="orca"; } { key="t"; exe="exo-open --launch TerminalEmulator"; } { key="f"; exe="thunar"; } { key="l"; exe="xflock4"; } { key="l"; exe="xflock4"; } { key="F1"; exe="xfce4-popup-applicationsmenu"; } { key="p"; exe="xfce4-display-settings --minimal"; } { key="Escape"; exe="xfce4-taskmanager"; } { key="e"; exe="thunar"; } { key="Escape"; exe="xkill"; } { key="HomePage"; exe="exo-open --launch WebBrowser"; } { key="XF86Display"; exe="xfce4-display-settings --minimal"; } ]; xfwm4 = [ { key="F12"; exe="workspace_12_key"; } { key="KP_Down"; exe="tile_down_key"; } { key="F4"; exe="close_window_key"; } { key="KP_3"; exe="move_window_workspace_3_key"; } { key="F2"; exe="workspace_2_key"; } { key="F6"; exe="workspace_6_key"; } { key="Down"; exe="down_workspace_key"; } { key="KP_9"; exe="move_window_workspace_9_key"; } { key="KP_Up"; exe="tile_up_key"; } { key="End"; exe="move_window_next_workspace_key"; } { key="F8"; exe="workspace_8_key"; } { key="Left"; exe="move_window_left_key"; } { key="KP_Right"; exe="tile_right_key"; } { key="KP_4"; exe="move_window_workspace_4_key"; } { key="Right"; exe="right_key"; } { key="Down"; exe="down_key"; } { key="F3"; exe="workspace_3_key"; } { key="Page_Down"; exe="lower_window_key"; } { key="F9"; exe="workspace_9_key"; } { key="Tab"; exe="cycle_windows_key"; } { key="Right"; exe="move_window_right_key"; } { key="Right"; exe="right_workspace_key"; } { key="F6"; exe="stick_window_key"; } { key="KP_5"; exe="move_window_workspace_5_key"; } { key="F11"; exe="workspace_11_key"; } { key="F10"; exe="maximize_window_key"; } { key="Delete"; exe="del_workspace_key"; } { key="Tab"; exe="switch_window_key"; } { key="d"; exe="show_desktop_key"; } { key="F4"; exe="workspace_4_key"; } { key="KP_Page_Up"; exe="tile_up_right_key"; } { key="F7"; exe="move_window_key"; } { key="Up"; exe="up_key"; } { key="KP_6"; exe="move_window_workspace_6_key"; } { key="F11"; exe="fullscreen_key"; } { key="space"; exe="popup_menu_key"; } { key="KP_Home"; exe="tile_up_left_key"; } { key="Escape"; exe="cancel_key"; } { key="KP_1"; exe="move_window_workspace_1_key"; } { key="KP_Next"; exe="tile_down_right_key"; } { key="KP_Left"; exe="tile_left_key"; } { key="Page_Up"; exe="raise_window_key"; } { key="Home"; exe="move_window_prev_workspace_key"; } { key="Tab"; exe="cycle_reverse_windows_key"; } { key="Left"; exe="left_workspace_key"; } { key="F12"; exe="above_key"; } { key="Up"; exe="move_window_up_key"; } { key="F5"; exe="workspace_5_key"; } { key="F8"; exe="resize_window_key"; } { key="KP_7"; exe="move_window_workspace_7_key"; } { key="KP_2"; exe="move_window_workspace_2_key"; } { key="KP_End"; exe="tile_down_left_key"; } { key="Up"; exe="up_workspace_key"; } { key="F9"; exe="hide_window_key"; } { key="F7"; exe="workspace_7_key"; } { key="F10"; exe="workspace_10_key"; } { key="Left"; exe="left_key"; } { key="KP_8"; exe="move_window_workspace_8_key"; } { key="Insert"; exe="add_workspace_key"; } { key="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"; }