Unified Laptop and Desktop
This commit is contained in:
423
hosts/desktop/configuration.nix
Normal file
423
hosts/desktop/configuration.nix
Normal file
@@ -0,0 +1,423 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, master, lib, inputs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.devices = ["nodev"];
|
||||
boot.loader.grub.useOSProber = true;
|
||||
boot.loader.grub.efiSupport = true;
|
||||
boot.initrd.systemd.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.loader.grub.timeoutStyle = "hidden";
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
|
||||
boot = {
|
||||
|
||||
plymouth = {
|
||||
enable = true;
|
||||
theme = "square_hud";
|
||||
themePackages = with pkgs; [
|
||||
# By default we would install all themes
|
||||
(adi1090x-plymouth-themes.override {
|
||||
selected_themes = [ "square_hud" ];
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
# Enable "Silent Boot"
|
||||
consoleLogLevel = 0;
|
||||
initrd.verbose = false;
|
||||
kernelParams = [
|
||||
"quiet"
|
||||
"splash"
|
||||
"boot.shell_on_fail"
|
||||
"loglevel=3"
|
||||
"rd.systemd.show_status=false"
|
||||
"rd.udev.log_level=3"
|
||||
"udev.log_priority=3"
|
||||
];
|
||||
# Hide the OS choice for bootloaders.
|
||||
# It's still possible to open the bootloader list by pressing any key
|
||||
# It will just not appear on screen unless a key is pressed
|
||||
loader.timeout = 0;
|
||||
|
||||
};
|
||||
|
||||
boot.extraModulePackages = with config.boot.kernelPackages; [ hid-tmff2 ];
|
||||
|
||||
networking.hostName = "nixos"; # Define your hostname.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.package = pkgs.bluez;
|
||||
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"electron-31.7.7"
|
||||
];
|
||||
|
||||
environment.variables.AMD_VULKAN_ICD = "RADV";
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Chicago";
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
# Enable the X11 windowing sytem.
|
||||
services.xserver.enable = true;
|
||||
|
||||
|
||||
# Enable the GNOME Desktop Environment.
|
||||
services.desktopManager.plasma6.enable = false;
|
||||
services.displayManager.sddm.enable = false;
|
||||
services.displayManager.cosmic-greeter.enable = false;
|
||||
services.desktopManager.cosmic.enable = false;
|
||||
/*services.displayManager = {
|
||||
autoLogin.enable = true;
|
||||
autoLogin.user = "joshuaelm";
|
||||
};*/
|
||||
security.pam.services.hyprlock = {};
|
||||
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings = rec {
|
||||
initial_session = {
|
||||
command = "${pkgs.hyprland}/bin/Hyprland";
|
||||
user = "joshuaelm";
|
||||
};
|
||||
default_session = initial_session;
|
||||
};
|
||||
};
|
||||
|
||||
# Steam Deck Gamemode
|
||||
programs.steam.gamescopeSession.enable = true;
|
||||
|
||||
|
||||
# Polkit
|
||||
|
||||
security.polkit.enable = true;
|
||||
services.udisks2.enable = true;
|
||||
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
xkb.layout = "us";
|
||||
xkb.variant = "";
|
||||
excludePackages = [ pkgs.xterm ];
|
||||
};
|
||||
|
||||
# Enable Swap
|
||||
|
||||
/*swapDevices = [ {
|
||||
device = "/var/lib/swapfile";
|
||||
size = 16*1024;
|
||||
}];*/
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
# Enable sound with pipewire.
|
||||
services.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
wireplumber.enable = true;
|
||||
# If you want to use JACK applications, uncomment this
|
||||
#jack.enable = true;
|
||||
|
||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
||||
# no need to redefine it in your config for now)
|
||||
#media-session.enable = true;
|
||||
};
|
||||
hardware.pulseaudio.configFile = pkgs.runCommand "default.pa" {} ''
|
||||
sed 's/module-udev-detect$/module-udev-detect tsched=0/' \
|
||||
${pkgs.pulseaudio}/etc/pulse/default.pa > $out
|
||||
'';
|
||||
environment.etc."wireplumber/main.lua.d/90-suspend-timeout.lua" = {
|
||||
text = ''
|
||||
session.suspend-timeout-seconds = 0
|
||||
'';
|
||||
};
|
||||
|
||||
services.pipewire.extraConfig.pipewire-pulse."92-low-latency" = {
|
||||
context.modules = [
|
||||
{
|
||||
name = "libpipewire-module-protocol-pulse";
|
||||
args = {
|
||||
pulse.min.req = "32/48000";
|
||||
pulse.default.req = "32/48000";
|
||||
pulse.max.req = "32/48000";
|
||||
pulse.min.quantum = "32/48000";
|
||||
pulse.max.quantum = "32/48000";
|
||||
};
|
||||
}
|
||||
];
|
||||
stream.properties = {
|
||||
node.latency = "32/48000";
|
||||
resample.quality = 1;
|
||||
};
|
||||
};
|
||||
hardware.pulseaudio.extraConfig = ''
|
||||
.nofail
|
||||
unload-module module-suspend-on-idle
|
||||
.fail
|
||||
'';
|
||||
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
programs.adb.enable = true;
|
||||
users.users.joshuaelm = {
|
||||
isNormalUser = true;
|
||||
description = "Joshua Elmasri";
|
||||
extraGroups = [ "networkmanager" "wheel" "adbusers" ];
|
||||
packages = with pkgs; [
|
||||
# thunderbird
|
||||
];
|
||||
};
|
||||
|
||||
nix.optimise.automatic = true;
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Configure drives
|
||||
|
||||
fileSystems."/mnt/Games" = {
|
||||
device = "/dev/nvme0n1p1";
|
||||
fsType = "btrfs";
|
||||
options = [
|
||||
"users"
|
||||
"nofail"
|
||||
"x-gvfs-show"
|
||||
"exec"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
fileSystems."/mnt/More-Games" = {
|
||||
device = "/dev/disk/by-uuid/eb1d5913-63fb-4fd8-8299-b428fd2d5ea0";
|
||||
fsType = "btrfs";
|
||||
options = [
|
||||
"users"
|
||||
"nofail"
|
||||
"x-gvfs-show"
|
||||
"exec"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Fonts
|
||||
fonts.packages = with pkgs; [
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
roboto
|
||||
nerd-fonts.fira-code
|
||||
nerd-fonts.jetbrains-mono
|
||||
];
|
||||
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
(pkgs.buildFHSEnv {
|
||||
name = "fhs";
|
||||
targetPkgs = pkgs: with pkgs; [
|
||||
alsa-lib atk cairo cups curl dbus expat file fish fontconfig freetype
|
||||
fuse glib gtk3 libGL libnotify libxml2 libxslt netcat nspr nss openjdk8
|
||||
openssl.dev cava pango appimage-run pkg-config strace udev vulkan-loader watch wget which
|
||||
xorg.libX11 icu xorg.libxcb xorg.libXcomposite xorg.libXcursor
|
||||
xorg.libXdamage xorg.libXext xorg.libXfixes xorg.libXi xorg.libXrandr
|
||||
xorg.libXrender xorg.libXScrnSaver openssl xorg.libxshmfence xorg.libXtst
|
||||
xorg.xcbutilkeysyms zlib fontconfig.lib SDL2 libGL libuuid xorg.libXft
|
||||
];
|
||||
profile = ''export FHS=1'';
|
||||
runScript = "fish";
|
||||
})
|
||||
git
|
||||
bibata-cursors
|
||||
killall
|
||||
mangohud
|
||||
aonsoku
|
||||
teamspeak3
|
||||
cemu
|
||||
teamspeak6-client
|
||||
unetbootin
|
||||
labymod-launcher
|
||||
unzip
|
||||
winetricks
|
||||
cowsay
|
||||
pfetch
|
||||
ryujinx
|
||||
hyprpolkitagent
|
||||
gomatrix
|
||||
python3
|
||||
pavucontrol
|
||||
gnomeExtensions.tray-icons-reloaded
|
||||
cider
|
||||
xfce.thunar
|
||||
gnomeExtensions.open-bar
|
||||
wallust
|
||||
steamtinkerlaunch
|
||||
grub2
|
||||
cargo
|
||||
inputs.zen-browser.packages."${system}".default
|
||||
qalculate-qt
|
||||
kdePackages.kdenlive
|
||||
blueman
|
||||
fuse
|
||||
linux-wallpaperengine
|
||||
ntfs3g
|
||||
lapce
|
||||
prismlauncher
|
||||
librewolf
|
||||
protonup-qt
|
||||
mlt
|
||||
nspr
|
||||
nss_latest
|
||||
nssTools
|
||||
qt5.full
|
||||
dconf
|
||||
openjdk23
|
||||
heroic
|
||||
protontricks
|
||||
gamescope
|
||||
playerctl
|
||||
libsForQt5.qt5.qtwebsockets
|
||||
wine
|
||||
alvr
|
||||
bottles
|
||||
cava
|
||||
pop-icon-theme
|
||||
gnome-tweaks
|
||||
libnotify
|
||||
libreoffice
|
||||
hunspell
|
||||
hunspellDicts.en_US
|
||||
neovide
|
||||
flatpak
|
||||
gradience
|
||||
];
|
||||
|
||||
# VirtualBox
|
||||
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ];
|
||||
|
||||
|
||||
services.sunshine = {
|
||||
enable = true;
|
||||
autoStart = true;
|
||||
capSysAdmin = true;
|
||||
openFirewall = true;
|
||||
|
||||
};
|
||||
# Enable Steam
|
||||
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
|
||||
};
|
||||
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
steam = pkgs.steam.override {
|
||||
extraLibraries = pkgs: [ pkgs.xorg.libxcb ];
|
||||
extraPkgs = pkgs: with pkgs; [
|
||||
xorg.libXcursor
|
||||
xorg.libXi
|
||||
xorg.libXinerama
|
||||
xorg.libXScrnSaver
|
||||
libpng
|
||||
libpulseaudio
|
||||
libvorbis
|
||||
stdenv.cc.cc.lib
|
||||
libkrb5
|
||||
keyutils
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
programs.gamescope = {
|
||||
enable = true;
|
||||
capSysNice = true;
|
||||
};
|
||||
|
||||
programs.nix-ld.enable = true;
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
services.openssh.allowSFTP = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
networking.firewall.allowedTCPPorts = [ 7860 3042 47990 48010 5001 ];
|
||||
networking.firewall.allowedUDPPorts = [ 7860 3042 47990 4800 48010 ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# 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 = "23.11"; # Did you read the comment?
|
||||
# Enable lakes
|
||||
nix = {
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user