···11+# Edit this configuration file to define what should be installed on
22+# your system. Help is available in the configuration.nix(5) man page, on
33+# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44+55+{
66+ config,
77+ lib,
88+ pkgs,
99+ ...
1010+}:
1111+1212+let
1313+ unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
1414+in
1515+{
1616+ imports = [
1717+ # Include the results of the hardware scan.
1818+ ./hardware-configuration.nix
1919+ ];
2020+2121+ # Use latest kernel.
2222+ boot.kernelPackages = pkgs.linuxPackages_latest;
2323+2424+ networking.hostName = "amaterasu";
2525+2626+ # Configure network connections interactively with nmcli or nmtui.
2727+ networking.networkmanager.enable = true;
2828+2929+ # Set your time zone.
3030+ time.timeZone = "America/Los_Angeles";
3131+3232+ # Configure network proxy if necessary
3333+ # networking.proxy.default = "http://user:password@proxy:port/";
3434+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
3535+3636+ # Select internationalisation properties.
3737+ i18n.defaultLocale = "en_US.UTF-8";
3838+ # console = {
3939+ # font = "Lat2-Terminus16";
4040+ # keyMap = "us";
4141+ # useXkbConfig = true; # use xkb.options in tty.
4242+ # };
4343+4444+ # Enable CUPS to print documents.
4545+ # services.printing.enable = true;
4646+4747+ # Enable sound.
4848+ services.pipewire = {
4949+ enable = true;
5050+ pulse.enable = true;
5151+ };
5252+5353+ # Enable touchpad support (enabled default in most desktopManager).
5454+ # services.libinput.enable = true;
5555+5656+ users.users.james = {
5757+ isNormalUser = true;
5858+ extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
5959+ packages = with pkgs; [
6060+ tree
6161+ ];
6262+ };
6363+6464+ nixpkgs.config. allowUnfreePredicate = pkg:
6565+ builtins.elem (lib.getName pkg) [
6666+ "steam"
6767+ "steam-original"
6868+ "steam-unwrapped"
6969+ "steam-run"
7070+ ];
7171+7272+ # List packages installed in system profile.
7373+ # You can use https://search.nixos.org/ to find more packages (and options).
7474+ environment.systemPackages = with pkgs; [
7575+ # Editors
7676+ vim
7777+ helix
7878+7979+ curl
8080+ git
8181+8282+ # Niri related
8383+ foot
8484+ fuzzel
8585+ swaylock
8686+ htop
8787+ mako
8888+ swayidle
8989+ swaybg
9090+ waybar
9191+ xwayland-satellite
9292+ keepassxc
9393+9494+ # Web Browsers
9595+ librewolf
9696+ mullvad-browser
9797+ tor-browser
9898+9999+ # Communications
100100+ unstable.vesktop
101101+ thunderbird
102102+ signal-desktop
103103+104104+ # Media
105105+ jellyfin-desktop
106106+ mpv
107107+ unstable.ncspot
108108+109109+ # Programming
110110+ python3
111111+ rustup
112112+ just
113113+ typst
114114+ unstable.zola
115115+116116+ # Profiling
117117+ unstable.tracy
118118+119119+ # Language Servers
120120+ superhtml # HTML
121121+ vscode-css-languageserver # CSS
122122+ vscode-json-languageserver # JSON
123123+ protols # Protobuf
124124+ taplo # TOML
125125+ tinymist # Typst
126126+ nil # Nix
127127+ # rust-analyzer from rustup # Rust
128128+129129+ # Formatters
130130+ # taplo # TOML
131131+ nixfmt # Nix
132132+ # rustfmt from rustup # Rust
133133+134134+ # Terminal utilities
135135+ eza
136136+ zoxide
137137+ yazi
138138+ tmux
139139+ freshfetch
140140+ fzf
141141+ fd
142142+ pstree
143143+ ripgrep
144144+ handlr-regex
145145+ ];
146146+147147+ fonts.packages = with pkgs; [
148148+ # Fonts
149149+ noto-fonts
150150+ noto-fonts-cjk-sans
151151+ noto-fonts-color-emoji
152152+ font-awesome
153153+ ];
154154+155155+ # Enable dynamically linked binaries
156156+ programs.nix-ld.enable = true;
157157+ programs.nix-ld.libraries = with pkgs; [
158158+ # Add any missing dynamic libraries for unpackaged programs
159159+ # here, NOT in environment.systemPackages
160160+ ];
161161+162162+ programs.niri.enable = true;
163163+ # Enable fish
164164+ programs.fish.enable = true;
165165+ programs.bash = {
166166+ interactiveShellInit = ''
167167+ if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
168168+ then
169169+ shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
170170+ exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
171171+ fi
172172+ '';
173173+ };
174174+175175+ programs.steam = {
176176+ enable = true;
177177+ remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
178178+ dedicatedServer.openFirewall = false; # Close ports in the firewall for Source Dedicated Server
179179+ localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
180180+ };
181181+182182+ security.polkit.enable = true;
183183+ services.gnome.gnome-keyring.enable = true;
184184+ security.pam.services.swaylock = { };
185185+186186+ # Some programs need SUID wrappers, can be configured further or are
187187+ # started in user sessions.
188188+ # programs.mtr.enable = true;
189189+ # programs.gnupg.agent = {
190190+ # enable = true;
191191+ # enableSSHSupport = true;
192192+ # };
193193+194194+ # Copy the NixOS configuration file and link it from the resulting system
195195+ # (/run/current-system/configuration.nix). This is useful in case you
196196+ # accidentally delete configuration.nix.
197197+ # system.copySystemConfiguration = true;
198198+199199+ # This option defines the first version of NixOS you have installed on this particular machine,
200200+ # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
201201+ #
202202+ # Most users should NEVER change this value after the initial install, for any reason,
203203+ # even if you've upgraded your system to a new NixOS release.
204204+ #
205205+ # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
206206+ # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
207207+ # to actually do that.
208208+ #
209209+ # This value being lower than the current NixOS release does NOT mean your system is
210210+ # out of date, out of support, or vulnerable.
211211+ #
212212+ # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
213213+ # and migrated your data accordingly.
214214+ #
215215+ # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
216216+ system.stateVersion = "25.11"; # Did you read the comment?
217217+218218+ # Enable zram as swap
219219+ zramSwap.enable = true;
220220+}