summaryrefslogblamecommitdiffstats
path: root/hosts/config.nix
blob: 2052c12f48371261f390cda341f2321bc5dd624d (plain) (tree)
1
2
3
4
5
6
7
8
9








                                                                
                                  

                                





















































































































                                                                                                 
{ inputs, config, lib, pkgs, nurpkgs, user, stateVersion, ... }:
{
    imports = (
        import ../modules/desktop ++
        import ../modules/editor ++
        import ../modules/web ++
        import ../modules/shell ++
        import ../modules/terminal ++
        import ../modules/programs ++
        import ../modules/games ++
        import ../modules/vpn ++
        import ../modules/music
    );

    users.users.${user} = {
        isNormalUser = true;
        extraGroups = [
            "wheel"
            "video"
            "audio"
            "camera"
            "networkmanager"
            "libvirtd"
        ];
    };

    #Timezone
    time.timeZone = "America/New_York";

    #Locale
    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";
    };

    #Fonts
    fonts.packages = with pkgs; [
        fira-code
        fira-code-symbols
        font-awesome
        liberation_ttf
        noto-fonts
        noto-fonts-cjk
        noto-fonts-emoji
        (nerdfonts.override { fonts = [ "FiraCode" ]; } )
    ];

    #Security
    security.rtkit.enable = true;
    security.polkit.enable = true;

    #Default Packages
    environment.systemPackages = with pkgs; [
        #Terminal utils
        btop        #Resource monitor
        coreutils   #GNU Utils
        git         #VC
        pciutils    #PCI
        usbutils    #USB
        gnutar
        unzip
        zip
        wget

        #Devtools
        binutils
        clang-tools
        gcc
        gnumake
        gdb
    ];

    programs = {
        dconf.enable = true;
        neovim.enable = true;
        gnupg.agent = {
            enable = true;
            enableSSHSupport = true;
        };
    };

    services = {
        pipewire = {
            enable = true;
            alsa.enable = true;
            alsa.support32Bit = true;
            pulse.enable = true;
        };
    };

    #SSH
    services.openssh.enable = true;
    environment.shellInit = ''
gpg-connect-agent /bye
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
    '';

    #Nix package manager configs.
    nix = {
        registry = lib.mapAttrs (_: value: {flake = value;}) inputs;
        
        nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
        
        settings = {
            experimental-features = "nix-command flakes";
            auto-optimise-store = true;
        };
        
        gc = {
            automatic = true;
            dates = "weekly";
            options = "--delete-older-than 7d";
        };
    };

    system.stateVersion = stateVersion;
    home-manager.users.${user} = {
        home.username = user;
        home.homeDirectory = "/home/${user}";
        home.stateVersion = stateVersion;
    };
}