# 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, pkgs-unstable, ... }: let optionalPkgs = import ../optional-packages.nix { inherit pkgs; }; in { imports = [ ./hardware-configuration.nix ./device-specific.nix ../shared-conf.nix ]; networking.hostName = "nixMain"; # Define your hostname. services.flatpak.enable = true; # Hybrantion boot.resumeDevice = "/dev/disk/by-uuid/1942318f-792a-4c0c-9b42-6e146d835bd7"; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.supportedFilesystems = [ "ntfs" ]; boot.kernelModules = [ "gpio-mockup" ]; boot.extraModprobeConfig = '' options gpio-mockup gpio_mockup_ranges=-1,21 ''; # Enable emulation if Architecture: boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; # Allow user to ttyACM0 # Allow user to gpio services.udev.extraRules = '' KERNEL=="ttyACM0", GROUP="gpio", MODE="0660" SUBSYSTEM=="gpio", KERNEL=="gpiochip*", GROUP="gpio", MODE="0660" ''; services.logind.settings.Login.powerKey = "ignore"; services.logind.settings.Login.powerKeyLongPress = "ignore"; services.logind.settings.Login.rebootKey = "ignore"; systemd.sleep.settings.Sleep = { SuspendState = "freeze"; }; # Enable openrgb services.hardware.openrgb.enable = true; networking.firewall = { enable = true; logRefusedPackets = true; allowedTCPPorts = [ # Web 80 443 # development servers 5000 5001 # Sunshine Steam-related 47984 47989 47990 48010 ]; allowedTCPPortRanges = [ # KDE Connect { from = 1714; to = 1764; } ]; allowedUDPPortRanges = [ { from = 4000; to = 4007; } { from = 8000; to = 8010; } { from = 47998; to = 48000; } # Sunshine Steam-related { from = 1714; to = 1764; } # KDE Connect ]; }; # Configure keymap in X11 services.xserver.xkb = { layout = "gb"; variant = ""; }; # Configure console keymap console.keyMap = "uk"; users.groups.gpio = {}; users.groups.wireshark = {}; users.users.someone = { isNormalUser = true; description = "someone"; extraGroups = [ "wheel" "docker" "libvirtd" "gpio" "wireshark" "adbusers" ]; packages = with pkgs; []; shell = pkgs.zsh; }; users.users.another = { isNormalUser = true; description = "another"; extraGroups = []; packages = with pkgs; []; shell = pkgs.bash; }; # Use lemurs as display manager services.displayManager.ly = { enable = true; settings = { tty = 1; }; }; # Docker virtualisation.docker.enable = true; virtualisation.docker.storageDriver = "btrfs"; # Added docker group to user # Desktop enviorment programs.hyprland = { enable = true; withUWSM = false; # Universal Wayland Session Manage, ly dosnt like this xwayland.enable = true; # Xwayland can be disabled. }; # Additional steam settings 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 }; # Thunar file manager programs.thunar.enable = true; programs.xfconf.enable = true; # Neded to save preferances programs.thunar.plugins = with pkgs; [ thunar-archive-plugin ]; services.gvfs.enable = true; # Mount, trash, and other functionalities services.tumbler.enable = true; # Thumbnail support for images environment.systemPackages = with pkgs; [ # System polkit libsecret # for gnome-keyring xdg-desktop-portal-gtk xdg-utils shared-mime-info xwayland dconf tree unzip bind # dig, nslookup # Hyprland stuff kitty dunst waybar rofi nwg-drawer swaylock hyprpolkitagent hyprpicker hypridle hyprpaper playerctl pwvucontrol # Screenshots & clipboard grim slurp swappy wl-clipboard copyq python312Packages.pillow # Files yazi file-roller qimgv # Media vlc rawtherapee handbrake svt-av1 tidal-hifi # 3D / CAD blender freecad # Dev python3 qemu virt-manager # Comms discord-ptb kdePackages.kdeconnect-kde seahorse # Gaming sunshine heroic prismlauncher # Monitoring kdePackages.plasma-systemmonitor # nvtopPackages.full # btop # Hardware android-tools # adb, fastboot # Theme catppuccin-cursors.frappeMauve libsForQt5.qt5ct qt6Packages.qt6ct lxappearance adwaita-icon-theme # Misc pkgs-unstable.orca-slicer pkgs-unstable.video-downloader ] ++ optionalPkgs; # nerdfonts wher seperated into different packages, so nerdfonts dosnt work fonts.packages = with pkgs; [] ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts); #Enviormant # needet for electron apps under wayland environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Enable auth polkit security.polkit.enable = true; # Walet, needet for nextcloud login services.gnome.gnome-keyring.enable = true; security.pam.services.ly.enableGnomeKeyring = true; # 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 = "24.11"; # Did you read the comment? }