diff --git a/desktop_configuration.nix b/desktop_configuration.nix index e69de29..5f7104f 100644 --- a/desktop_configuration.nix +++ b/desktop_configuration.nix @@ -0,0 +1,293 @@ +# 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, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "DinxTop"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/Phoenix"; + + # 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 system. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.xserver.displayManager.sddm.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + # Enable plasma 6 + #services.desktopManager.plasma6.enable = true; + #services.xserver.displayManager.sddm.wayland.enable = true; + + # Configure keymap in X11 + services.xserver = { + layout = "us"; + xkbVariant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = false; + + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.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; + }; + + # 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. + users.users.mab = { + isNormalUser = true; + description = "Mank Garbenjilla"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + # Utility + kate + vlc + plasma-browser-integration + qdirstat + fsearch + brave + libsForQt5.bismuth + + # Programming + vscodium + copyq + autokey + #dbeaver + guake + + # Social + signal-desktop + discord + slack + #zoom-us + + # Fun + spotify + freetube + #rpcs3 + #yuzu-early-access + #moonlight-qt + ]; + }; + + # enable fish shell but only for this user + programs.fish.enable = true; + users.users.mab.shell = pkgs.fish; + + # Make Firefox use the KDE file picker. + # Preferences source: https://wiki.archlinux.org/title/firefox#KDE_integration + programs.firefox = { + enable = true; + preferences = { + "widget.use-xdg-desktop-portal.file-picker" = 1; + }; + }; + + # Enable steam + programs.steam.enable = true; + programs.kdeconnect.enable = true; + + # Enable automatic login for the user. + services.xserver.displayManager.autoLogin.enable = true; + services.xserver.displayManager.autoLogin.user = "mab"; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + nixpkgs.config.nvidia.acceptLicense = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + vim + wget + git + screen + thefuck + vorta # GUI for backup utility Borg Backup + direnv + pgcli # needed for dbeaver + postgresql_16 # needed for dbeaver + baekmuk-ttf # korean fonts + corefonts + vistafonts + fira-code + fira-code-symbols + sunshine + gnumake + gcc + util-linux + binutils + cudatoolkit + linuxPackages.nvidia_x11 + libGLU libGL + sublime4 + ]; + + nixpkgs.config.permittedInsecurePackages = [ + "openssl-1.1.1w" + ]; + + services.unifi = { + enable = true; + unifiPackage = pkgs.unifi8; + }; + + services.ollama = { + enable = true; + acceleration = "cuda"; + listenAddress = "0.0.0.0:11434"; + }; + + # garbage collect, delete old versions + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 10d"; + }; + + # automatically optomise nix store + nix.optimise = { + automatic = true; + dates = [ "weekly" ]; + }; + + networking.extraHosts = + '' + 192.168.1.6 tower.local + 192.168.1.164 marvin.local + 192.168.1.7 blarvin.local + 52.89.99.61 redeye.dev + ''; + # 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; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + networking.firewall = { + enable = false; + allowedTCPPorts = [ 47984 47989 47990 48010 22 11434 ]; + allowedUDPPortRanges = [ + { from = 47998; to = 48000; } + { from = 8000; to = 8010; } + ]; + }; + + + + # 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. Its 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 = "24.05"; # Did you read the comment? + + # messing with things + #boot.kernelPackages = pkgs.linuxPackages_latest; + boot.kernelPackages = pkgs.linuxPackages_6_9; + boot.kernelParams = [ + "nvidia-drm.fbdev=1" + ]; + + # Enable OpenGL + hardware.opengl = { + enable = true; + driSupport = true; + driSupport32Bit = true; + }; + + # Load nvidia driver for Xorg and Wayland + services.xserver.videoDrivers = ["nvidia"]; + + hardware.nvidia = { + + # Modesetting is required. + modesetting.enable = true; + + #forceFullCompositionPipeline = true; + + # Nvidia power management. Experimental, and can cause sleep/suspend to fail. + # Enable this if you have graphical corruption issues or application crashes after waking + # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead + # of just the bare essentials. + powerManagement.enable = true; + + # Fine-grained power management. Turns off GPU when not in use. + # Experimental and only works on modern Nvidia GPUs (Turing or newer). + powerManagement.finegrained = false; + + # Use the NVidia open source kernel module (not to be confused with the + # independent third-party "nouveau" open source driver). + # Support is limited to the Turing and later architectures. Full list of + # supported GPUs is at: + # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus + # Only available from driver 515.43.04+ + # Currently alpha-quality/buggy, so false is currently the recommended setting. + open = false; + + # Enable the Nvidia settings menu, + # accessible via `nvidia-settings`. + nvidiaSettings = true; + + # Optionally, you may need to select the appropriate driver version for your specific GPU. + # package = config.boot.kernelPackages.nvidiaPackages.production; + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + +}