{ config, lib, pkgs, pkgs-stable, ... }:
{
	imports =
	[
        ./hardware-configuration.nix
        ./modules/nix/firefox.nix	
    ];
	
    nixpkgs.config.allowUnfree = true;
    nix.settings.experimental-features = [ "nix-command" "flakes" ];
    boot.loader.systemd-boot.enable = true;	

	networking.hostName = "poggers"; 
	networking.networkmanager.enable = true;

	time.timeZone = "Europe/Berlin";
	console = {
		font = "Lat2-Terminus16";
		useXkbConfig = true;
	};
	
	xdg.portal = { 
		enable = true; 
		extraPortals = [ 
			pkgs.xdg-desktop-portal-gtk 
			pkgs.xdg-desktop-portal-hyprland
		]; 
	}; 

  	services = {
		pipewire = {
			enable = true;
			pulse.enable = true;
			wireplumber.enable = true;	
		};
		mullvad-vpn = {
			enable = true;
		};
        sdrplayApi = {
            enable = true;
        };
	};
	
	hardware = {
		bluetooth = {
			enable = true;
		};
		graphics = {
            enable = true;
		};
	    rtl-sdr = {
            enable = true;
        };
    };

	programs = {
	    hyprland = {
            enable = true;
            xwayland.enable = true;
        };
        nix-ld.enable = true;	
	};

    virtualisation = {
        docker = {
            enable = true;
        };
    };

 	users.users.fabian = {
    	isNormalUser = true;
    	initialPassword = "1601";
		extraGroups = [ "wheel" "docker" "audio" "video" "dialout" "plugdev" ];
  	};

 	environment.systemPackages = 
    (with pkgs; [
     	# sys
		unzip
		yt-dlp
		inetutils
		git
		wget
		curl
		dosfstools
		ntfs3g		
        waybar

		# cli
		neofetch
		fastfetch
		onefetch
		vim		
		weechat		
		ranger		
		eza
		fzf

		# dev
		rustup
		python3
		nodejs
        gccgo14
        go
        nixd
    
        # radio
        sdrplay
        sdrpp
        hackrf
        rtl-sdr
        gqrx
        noaa-apt
        rtl_433
        rtl-ais

		# misc		
		cava
		mumble
        discord        
        
        # hardware & shit
  	    libplist
        libimobiledevice
        usbmuxd
      	
	])
	++
	(with pkgs-stable; [
    	
	]);
    
  	networking = {
        firewall = { 
            enable = true; 
            allowedTCPPorts = [ 80 1337 8080 ]; 
        };
    };

	security = {
        doas = {
            enable = true;
            extraRules = [{
                users = [ "fabian" ];
            	noPass = true;
                keepEnv = true;
			}];
        }; 
    };
	
	fonts.fontconfig.enable = true;
    fonts.fontDir.enable = true;
    fonts.packages = with pkgs; [
        noto-fonts
        noto-fonts-emoji
        liberation_ttf
        fira-code
        fira-code-symbols
        fantasque-sans-mono
        mplus-outline-fonts.githubRelease
        dina-font
        proggyfonts
    	nerdfonts
	]; 	

  	system.stateVersion = "unstable"; 
	
}