{ config, inputs, pkgs, ... }: { imports = [ ./hardware-configuration.nix inputs.home-manager.nixosModules.default ../../modules/nixos/nvidia.nix ../../modules/nixos/bspwm.nix ../../modules/nixos/cups.nix ]; # nixpkgs.overlays = [ # (import ./ghidra-m32r-overlay.nix) # ]; # Extra Nix Settings nix.settings = { auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; }; programs.nix-ld.enable = true; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; networking.hostName = "nixos"; networking.networkmanager.enable = true; time.timeZone = "America/Chicago"; 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"; }; # Configure keymap in X11 services.xserver.xkb = { layout = "us"; variant = ""; }; # 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; }; # Enable Direnv programs.direnv.enable = true; # User Account users.users.chris = { isNormalUser = true; description = "chris"; extraGroups = [ "networkmanager" "wheel" "dialout" "storage" ]; shell = pkgs.zsh; packages = with pkgs; [ telegram-desktop discord ungoogled-chromium inkscape obsidian sourcegit obs-studio r2modman signal-desktop kdePackages.dolphin flameshot vscodium nautilus onlyoffice-desktopeditors vlc orca-slicer blender grayjay vlc kdePackages.kdenlive kicad # ghidra ]; }; home-manager = { useUserPackages = true; extraSpecialArgs = { inherit inputs; }; users."chris" = import ./home.nix; }; # services.freenet = { # enable = true; # }; # Garbage Collection nix.gc = { automatic = true; dates = "weekly"; persistent = true; options = ""; }; # Mount the data drive fileSystems."/data" = { device = "/dev/disk/by-uuid/58c7b996-c436-47e8-8018-244417acf067"; fsType = "ext4"; options = [ "nofail" ]; }; # ZSH programs.zsh = { enable = true; enableCompletion = true; autosuggestions.enable = true; syntaxHighlighting.enable = true; interactiveShellInit = '' fastfetch ''; shellAliases = { ll = "ls -l"; edit = "hx ~/dotfiles"; update = "sh ~/dotfiles/rebuild.sh"; ssh-server = "ssh braincell@192.168.1.3"; calc = "kalker"; n = "nvim ."; # ssh-pihole = "ssh bell@192.168.1.23"; }; histSize = 10000; histFile = "$HOME/.zsh_history"; setOptions = [ "HIST_IGNORE_ALL_DUPS" ]; oh-my-zsh = { enable = true; theme = "clean"; plugins = ["git" "sudo" "direnv"]; }; }; # Steam programs.steam.enable = true; # Allow unfree packages nixpkgs.config.allowUnfree = true; # System Packages environment.systemPackages = with pkgs; [ vim wget git file helix lazygit nixd fastfetch disktui busybox kalker nmap screen btop udiskie ]; # extra filesystems boot.supportedFilesystems = { exfat = true; ntfs = true; }; # Enable Virtualization virtualisation.libvirtd.enable = true; programs.virt-manager.enable = true; virtualisation.podman = { enable = true; dockerCompat = true; }; # Enable Flatpacks services.flatpak.enable = true; # Xdg portal xdg.portal = { enable = true; extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-gnome]; # config.common.default = ""; }; # OpenSSH services.openssh.enable = true; # UDisks (for auto mounting) services.udisks2 = { enable = true; }; services.gvfs.enable = true; systemd.user.services.udiskie = { description = "udiskie automount daemon"; wantedBy = [ "graphical-session.target" ]; partOf = [ "graphical-session.target" ]; serviceConfig = { ExecStart = "${pkgs.udiskie}/bin/udiskie --automount --notify --tray"; Restart = "always"; }; }; # Firewall networking.firewall.allowedTCPPorts = [ 9999 ]; networking.firewall.allowedUDPPorts = [ 9999 ]; system.stateVersion = "25.11"; # Did you read the comment? DONT TOUCH :) }