me like nix
1{ config, pkgs, ... }:
2
3{
4 imports =
5 [ # Include the results of the hardware scan.
6 ./hardware-configuration.nix
7 # home-manager is now imported via the flake's modules list
8 ];
9
10 nix.settings.experimental-features = [ "nix-command" "flakes" ];
11
12 # Bootloader.
13 boot.loader.systemd-boot.enable = true;
14 boot.loader.efi.canTouchEfiVariables = true;
15
16 # Use latest kernel.
17 boot.kernelPackages = pkgs.linuxPackages_latest;
18
19 networking.hostName = "nixos"; # Define your hostname.
20 # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
21
22 # Configure network proxy if necessary
23 # networking.proxy.default = "http://user:password@proxy:port/";
24 # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
25
26 # Enable networking
27 networking.networkmanager.enable = true;
28
29 # Set your time zone.
30 time.timeZone = "America/New_York";
31
32 # Select internationalisation properties.
33 i18n.defaultLocale = "en_US.UTF-8";
34
35 i18n.extraLocaleSettings = {
36 LC_ADDRESS = "en_US.UTF-8";
37 LC_IDENTIFICATION = "en_US.UTF-8";
38 LC_MEASUREMENT = "en_US.UTF-8";
39 LC_MONETARY = "en_US.UTF-8";
40 LC_NAME = "en_US.UTF-8";
41 LC_NUMERIC = "en_US.UTF-8";
42 LC_PAPER = "en_US.UTF-8";
43 LC_TELEPHONE = "en_US.UTF-8";
44 LC_TIME = "en_US.UTF-8";
45 };
46
47
48 programs.hyprland = {
49 enable = true;
50 xwayland.enable = true;
51 };
52
53
54 services.greetd = {
55 enable = true;
56 settings = {
57 default_session = {
58 command = "${pkgs.hyprland}/bin/Hyprland";
59 user = "sean"; # Your username
60 };
61 };
62 # Example with regreet (graphical)
63 package = pkgs.greetd.regreet;
64 # Or tuigreet (console)
65 # package = pkgs.greetd.tuigreet;
66 };
67
68 xdg.portal = {
69 enable = true;
70 wlr.enable = true;
71 extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
72 };
73
74
75
76
77 # Enable CUPS to print documents.
78 services.printing.enable = true;
79
80 # Enable sound with pipewire.
81 services.pulseaudio.enable = false;
82 security.rtkit.enable = true;
83 services.pipewire = {
84 enable = true;
85 alsa.enable = true;
86 alsa.support32Bit = true;
87 pulse.enable = true;
88 # If you want to use JACK applications, uncomment this
89 #jack.enable = true;
90
91 # use the example session manager (no others are packaged yet so this is enabled by default,
92 # no need to redefine it in your config for now)
93 #media-session.enable = true;
94 };
95
96 # Enable touchpad support (enabled default in most desktopManager).
97 # services.xserver.libinput.enable = true;
98
99 # Define a user account. Don't forget to set a password with ‘passwd’.
100 users.users.sean = {
101 isNormalUser = true;
102 description = "Sean Aye";
103 extraGroups = [ "networkmanager" "wheel" ];
104 shell = pkgs.fish;
105 };
106 home-manager.backupFileExtension = "backup";
107 home-manager.users.sean = { pkgs, ...}: {
108 home.packages = [
109 pkgs.atool
110 pkgs.httpie
111 pkgs.helix
112 pkgs.jujutsu
113
114 # media
115 pkgs.qbittorrent
116 pkgs.prowlarr
117 pkgs.sonarr
118 pkgs.radarr
119 pkgs.jellyfin
120
121 # --- ESSENTIAL HYPRLAND ECOSYSTEM TOOLS ---
122 pkgs.alacritty # Terminal emulator (popular choice, or pkgs.alacritty, pkgs.foot)
123 pkgs.wofi # Application launcher (or pkgs.rofi-wayland)
124 pkgs.waybar # Status bar (highly recommended)
125 pkgs.mako # Notification daemon
126 pkgs.swaybg # For setting wallpapers (or pkgs.hyprpaper, pkgs.swww)
127 pkgs.swaylock-effects # Screen locker (or pkgs.hyprlock)
128 # pkgs.swayidle # Idle management daemon (configure later)
129 pkgs.cliphist # Clipboard history manager
130 pkgs.slurp # For selecting a region for screenshots
131 pkgs.grim # For taking screenshots
132 pkgs.pavucontrol # GUI for PulseAudio/PipeWire volume control
133
134 # --- FONTS ARE IMPORTANT ---
135 pkgs.noto-fonts
136 pkgs.noto-fonts-cjk-sans
137 pkgs.noto-fonts-emoji
138 pkgs.font-awesome # For icons in waybar, etc.
139 pkgs.nerd-fonts.jetbrains-mono
140
141 # --- POLKIT AGENT (for 1Password GUI, etc.) ---
142 pkgs.lxqt.lxqt-policykit # Lightweight polkit agent
143 ];
144 programs.jujutsu = {
145 enable = true;
146 settings = {
147 user = {
148 email = "hello@seanaye.ca";
149 name = "Sean Aye";
150 };
151 };
152 };
153 home.sessionVariables = {
154 EDITOR = "hx";
155 VISUAL = "hx";
156 SUDO_EDITOR = "hx";
157 # --- WAYLAND SPECIFIC ENV VARS ---
158 NIXOS_OZONE_WL = "1"; # May help some electron apps use Wayland
159 QT_QPA_PLATFORM = "wayland;xcb"; # Prefer Wayland for Qt, fallback to xcb (XWayland)
160 QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; # If you want Hyprland to draw all decorations
161 SDL_VIDEODRIVER = "wayland";
162 XDG_CURRENT_DESKTOP = "Hyprland";
163 XDG_SESSION_TYPE = "wayland";
164 _JAVA_AWT_WM_NONREPARENTING = "1";
165 };
166 programs.home-manager.enable = true;
167 programs.helix.enable = true;
168 programs.fish = {
169 enable = true;
170 interactiveShellInit = ''
171 set fish_greeting
172 '';
173 };
174 programs.starship = {
175 enable = true;
176 enableFishIntegration = true;
177 };
178
179
180 # --- HYPRLAND CONFIGURATION FILES ---
181 # This tells home-manager to place your hyprland.conf in ~/.config/hypr/
182 # You will need to create the actual file (see step 2 below)
183 xdg.configFile."hypr/hyprland.conf".source = ./hyprland.conf; # Points to a file named hyprland.conf in the same directory as your configuration.nix
184
185 home.stateVersion = "25.05";
186 };
187
188
189 # Install firefox.
190 programs.firefox.enable = true;
191 programs.fish.enable = true;
192
193 programs._1password.enable = true;
194 programs._1password-gui = {
195 enable = true;
196 polkitPolicyOwners = ["sean"];
197 };
198
199 programs.steam = {
200 enable = true;
201 };
202
203
204 # Allow unfree packages
205 nixpkgs.config.allowUnfree = true;
206
207 # List packages installed in system profile. To search, run:
208 # $ nix search wget
209 environment.systemPackages = with pkgs; [
210 git
211 wl-clipboard
212 ];
213 environment.variables = {
214 EDITOR = "hx";
215 VISUAL = "hx";
216 SUDO_EDITOR = "hx";
217 };
218
219
220 # Some programs need SUID wrappers, can be configured further or are
221 # started in user sessions.
222 # programs.mtr.enable = true;
223 # programs.gnupg.agent = {
224 # enable = true;
225 # enableSSHSupport = true;
226 # };
227
228 # List services that you want to enable:
229
230 # Enable the OpenSSH daemon.
231 # services.openssh.enable = true;
232
233 # Open ports in the firewall.
234 # networking.firewall.allowedTCPPorts = [ ... ];
235 # networking.firewall.allowedUDPPorts = [ ... ];
236 # Or disable the firewall altogether.
237 # networking.firewall.enable = false;
238
239 # This value determines the NixOS release from which the default
240 # settings for stateful data, like file locations and database versions
241 # on your system were taken. It‘s perfectly fine and recommended to leave
242 # this value at the release version of the first install of this system.
243 # Before changing this value read the documentation for this option
244 # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
245 system.stateVersion = "25.05"; # Did you read the comment?
246
247}