From 4bc4f50a3290f805483b979960a12ce08ceba0f7 Mon Sep 17 00:00:00 2001 From: th3r00t Date: Wed, 20 Aug 2025 12:16:17 -0400 Subject: [PATCH] Added configuration file for server --- configuration-server.nix | 170 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 configuration-server.nix diff --git a/configuration-server.nix b/configuration-server.nix new file mode 100644 index 0000000..c2388ba --- /dev/null +++ b/configuration-server.nix @@ -0,0 +1,170 @@ +# 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. + ./xps13-hardware-configuration.nix + ./modules/shares.nix + ./modules/sops.nix + ./modules/laptop.nix + ]; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + # Bootloader. + boot = { + kernelPackages = pkgs.linuxPackages_latest; + initrd.availableKernelModules = [ + "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" + ]; + kernelModules = [ "fuse" "coretemp" "cifs" "kvm-intel" ]; + initrd.kernelModules = [ "ath10k_pci" ]; + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + supportedFilesystems = [ "vfat" "ext4" "cifs" ]; + extraModulePackages = [ ]; + extraModprobeConfig = '' + options ath10k_pcs irq_mode=1 + options ath10k_core rawmode=1 + ''; + }; + # Set your time zone. + time.timeZone = "America/New_York"; + + # 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. + # You can disable this if you're only using the Wayland session. + # services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + # services.displayManager.sddm.enable = true; + # services.desktopManager.plasma6.enable = true; + + # Configure keymap in X11 + # services.xserver.xkb = { + # layout = "us"; + # variant = ""; + # }; + + # Enable CUPS to print documents. + services.printing.enable = true; + programs.uwsm.enable = true; + programs.hyprland.withUWSM = 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; + 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.libinput.enable = true; + fonts = { + enableDefaultPackages = true; + fontDir.enable = true; + packages = with pkgs; [ + # nerd-fonts.fira-code + # nerd-fonts.space-mono + # nerd-fonts.sauce-code-pro + # nerd-fonts.monofur + # nerd-fonts.noto + # nerd-fonts.fira-mono + noto-fonts + noto-fonts-cjk-sans + noto-fonts-emoji + font-awesome + material-design-icons + noto-fonts-emoji + ]++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts); + + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.th3r00t = { + isNormalUser = true; + description = "Mike 'th3r00t' Young"; + extraGroups = [ "networkmanager" "wheel" "input" ]; + packages = with pkgs; [ + # kdePackages.kate + # thunderbird + ]; + }; + + # Enable automatic login for the user. + services.displayManager.autoLogin.enable = true; + services.displayManager.autoLogin.user = "th3r00t"; + + programs.firefox.enable = true; + programs.hyprland.enable = true; + + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.variables.EDITOR = "nvim"; + environment.systemPackages = with pkgs; [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + git + vim + curl + age + ]; + + # 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; + users.users.root.openssh.authorizedKeys.keys = + [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH8P/3yzsruekSaZ9b+yk429VTcfCtI1j8jnkNbPAgnr th3r00t@nixos" + ]; + + # Open ports in the firewall. + networking.firewall.allowedTCPPorts = [ 21 22 80 443 5900 8080 ]; + networking.firewall.allowedUDPPorts = [ 21 22 80 443 5900 8080 ]; + # 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 = "25.05"; # Did you read the comment? + +}