|
0
|
1 # Edit this configuration file to define what should be installed on |
|
|
2 # your system. Help is available in the configuration.nix(5) man page |
|
|
3 # and in the NixOS manual (accessible by running ‘nixos-help’). |
|
|
4 |
|
|
5 { config, lib, pkgs, ... }: |
|
|
6 |
|
|
7 { |
|
|
8 imports = |
|
|
9 [ # Include the results of the hardware scan. |
|
|
10 ./hardware-configuration.nix |
|
|
11 ./nvidia.nix |
|
|
12 ]; |
|
|
13 |
|
|
14 # Bootloader. |
|
|
15 boot.loader.systemd-boot.enable = true; |
|
|
16 boot.loader.efi.canTouchEfiVariables = true; |
|
|
17 boot.initrd.availableKernelModules = [ |
|
|
18 "nvidia_drm" "nvidia_modeset" "nvidia" "nvidia_uvm" |
|
|
19 ]; |
|
|
20 boot.kernelModules = [ |
|
|
21 "hidp" |
|
|
22 ]; |
|
|
23 # Use latest kernel. |
|
|
24 boot.kernelPackages = pkgs.linuxPackages_latest; |
|
|
25 |
|
|
26 networking.hostName = "NixOSPC"; # Define your hostname. |
|
|
27 # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. |
|
|
28 |
|
|
29 # Configure network proxy if necessary |
|
|
30 # networking.proxy.default = "http://user:password@proxy:port/"; |
|
|
31 # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; |
|
|
32 # Thing |
|
|
33 services.keyd = { |
|
|
34 enable = true; |
|
|
35 }; |
|
|
36 # SSHd |
|
|
37 services.openssh = { |
|
|
38 enable = true; |
|
|
39 ports = [ 22 ]; |
|
|
40 settings = { |
|
|
41 PasswordAuthentication = true; |
|
|
42 AllowUsers = null; # Allows all users by default. Can be [ "user1" "user2" ] |
|
|
43 UseDns = true; |
|
|
44 X11Forwarding = false; |
|
|
45 PermitRootLogin = "prohibit-password"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no" |
|
|
46 }; |
|
|
47 }; |
|
|
48 # Optional, but makes sure that when you type the make palm rejection work with keyd |
|
|
49 # https://github.com/rvaiya/keyd/issues/723 |
|
|
50 environment.etc."libinput/local-overrides.quirks".text = '' |
|
|
51 [Serial Keyboards] |
|
|
52 MatchUdevType=keyboard |
|
|
53 MatchName=keyd virtual keyboard |
|
|
54 AttrKeyboardIntegration=internal |
|
|
55 ''; |
|
|
56 |
|
|
57 # Enable networking |
|
|
58 networking.networkmanager.enable = true; |
|
|
59 # Enable Flatpak support |
|
|
60 services.flatpak.enable = true; |
|
|
61 # Set your time zone. |
|
|
62 time.timeZone = "America/Chicago"; |
|
|
63 # Select internationalisation properties. |
|
|
64 i18n.defaultLocale = "en_US.UTF-8"; |
|
|
65 |
|
|
66 i18n.extraLocaleSettings = { |
|
|
67 LC_ADDRESS = "en_US.UTF-8"; |
|
|
68 LC_IDENTIFICATION = "en_US.UTF-8"; |
|
|
69 LC_MEASUREMENT = "en_US.UTF-8"; |
|
|
70 LC_MONETARY = "en_US.UTF-8"; |
|
|
71 LC_NAME = "en_US.UTF-8"; |
|
|
72 LC_NUMERIC = "en_US.UTF-8"; |
|
|
73 LC_PAPER = "en_US.UTF-8"; |
|
|
74 LC_TELEPHONE = "en_US.UTF-8"; |
|
|
75 LC_TIME = "en_US.UTF-8"; |
|
|
76 }; |
|
|
77 |
|
|
78 # Enable the X11 windowing system. |
|
|
79 services.xserver.enable = true; |
|
|
80 # Enable the Cosmic desktop environment |
|
|
81 services.desktopManager.cosmic.enable = true; |
|
|
82 services.displayManager.cosmic-greeter.enable = true; |
|
|
83 # Configure keymap in X11 |
|
|
84 services.xserver.xkb = { |
|
|
85 layout = "us"; |
|
|
86 variant = ""; |
|
|
87 }; |
|
|
88 |
|
|
89 # Disable CUPS because I don't print |
|
|
90 # services.printing.enable = true; |
|
|
91 |
|
|
92 # Enable sound with pipewire. |
|
|
93 services.pulseaudio.enable = false; |
|
|
94 security.rtkit.enable = true; |
|
|
95 services.pipewire = { |
|
|
96 enable = true; |
|
|
97 alsa.enable = true; |
|
|
98 alsa.support32Bit = true; |
|
|
99 pulse.enable = true; |
|
|
100 # If you want to use JACK applications, uncomment this |
|
|
101 #jack.enable = true; |
|
|
102 |
|
|
103 # use the example session manager (no others are packaged yet so this is enabled by default, |
|
|
104 # no need to redefine it in your config for now) |
|
|
105 #media-session.enable = true; |
|
|
106 }; |
|
|
107 |
|
|
108 # Enable touchpad support (enabled default in most desktopManager). |
|
|
109 # services.xserver.libinput.enable = true; |
|
|
110 |
|
|
111 # Define a user account. Don't forget to set a password with ‘passwd’. |
|
|
112 users.users.user = { |
|
|
113 isNormalUser = true; |
|
|
114 description = "user"; |
|
|
115 extraGroups = [ "networkmanager" "wheel" ]; |
|
|
116 packages = with pkgs; [ |
|
|
117 git |
|
|
118 vesktop |
|
|
119 vscodium |
|
|
120 fish |
|
|
121 fishPlugins.tide |
|
|
122 fishPlugins.fzf |
|
|
123 unzip |
|
|
124 nerd-fonts.fira-code |
|
|
125 prismlauncher |
|
|
126 ]; |
|
|
127 shell = pkgs.fish; |
|
|
128 }; |
|
|
129 # Install firefox. |
|
|
130 programs.firefox.enable = true; |
|
|
131 # Enable Fish. |
|
|
132 programs.fish.enable = true; |
|
|
133 # Enable Bluetooth support |
|
|
134 hardware.bluetooth = { |
|
|
135 enable = true; |
|
|
136 powerOnBoot = true; |
|
|
137 settings = { |
|
|
138 General = { |
|
|
139 # Shows battery charge of connected devices on supported |
|
|
140 # Bluetooth adapters. Defaults to 'false'. |
|
|
141 Experimental = true; |
|
|
142 # When enabled other devices can connect faster to us, however |
|
|
143 # the tradeoff is increased power consumption. Defaults to |
|
|
144 # 'false'. |
|
|
145 FastConnectable = true; |
|
|
146 }; |
|
|
147 Policy = { |
|
|
148 # Enable all controllers when they are found. This includes |
|
|
149 # adapters present on start as well as adapters that are plugged |
|
|
150 # in later on. Defaults to 'true'. |
|
|
151 AutoEnable = true; |
|
|
152 }; |
|
|
153 }; |
|
|
154 }; |
|
|
155 # Enable Blueman |
|
|
156 services.blueman.enable = true; |
|
|
157 # Allow unfree packages |
|
|
158 nixpkgs.config.allowUnfree = true; |
|
|
159 |
|
|
160 # List packages installed in system profile. To search, run: |
|
|
161 # $ nix search wget |
|
|
162 environment.systemPackages = with pkgs; [ |
|
|
163 # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. |
|
|
164 # wget |
|
|
165 fastfetch |
|
|
166 kdePackages.discover |
|
|
167 python3 |
|
|
168 ]; |
|
|
169 |
|
|
170 # Some programs need SUID wrappers, can be configured further or are |
|
|
171 # started in user sessions. |
|
|
172 # programs.mtr.enable = true; |
|
|
173 # programs.gnupg.agent = { |
|
|
174 # enable = true; |
|
|
175 # enableSSHSupport = true; |
|
|
176 # }; |
|
|
177 |
|
|
178 # List services that you want to enable: |
|
|
179 |
|
|
180 # Enable the OpenSSH daemon. |
|
|
181 # services.openssh.enable = true; |
|
|
182 |
|
|
183 # Open ports in the firewall. |
|
|
184 # networking.firewall.allowedTCPPorts = [ ... ]; |
|
|
185 # networking.firewall.allowedUDPPorts = [ ... ]; |
|
|
186 # Or disable the firewall altogether. |
|
|
187 # networking.firewall.enable = false; |
|
|
188 |
|
|
189 # This value determines the NixOS release from which the default |
|
|
190 # settings for stateful data, like file locations and database versions |
|
|
191 # on your system were taken. It‘s perfectly fine and recommended to leave |
|
|
192 # this value at the release version of the first install of this system. |
|
|
193 # Before changing this value read the documentation for this option |
|
|
194 # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). |
|
|
195 system.stateVersion = "25.05"; # Did you read the comment? |
|
|
196 |
|
|
197 } |