summaryrefslogtreecommitdiffstats
path: root/hosts/config.nix
blob: de49a45d00591da8ffe6894a6b9ad5d6986162e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{ 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/vpn
    );

    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;
    };
}