# Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). { config, lib, pkgs, ... }: let vlessOutbound = { type = "vless"; tag = "proxy"; server = "immich.frogguingang.com"; server_port = 443; uuid = "e76c485e-38f2-44fe-bb74-6550b307741d"; flow = "xtls-rprx-vision"; tls = { enabled = true; server_name = "immich.frogguingang.com"; utls = { enabled = true; fingerprint = "chrome"; }; reality = { enabled = true; public_key = "Qm8GdYV5l78f24ThAglg6ldKdPPeeXh8KGFuC3krTjM"; short_id = "68ce8db33efa2894"; }; }; }; in { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ]; #system.copySystemConfiguration = true; nix = { settings = { auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; }; }; nixpkgs.system = "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; # Use the systemd-boot EFI boot loader. boot.loader = { # systemd-boot.enable = true; efi.canTouchEfiVariables = true; grub = { enable = true; device = "nodev"; efiSupport = true; useOSProber = true; }; timeout = 10; }; boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernel.sysctl = { "net.ipv4.ip_forward" = 1; "net.ipv6.conf.all.forwarding" = 1; }; networking.hostName = "nixpengames"; # Define your hostname. # Pick only one of the below networking options. swapDevices = [{ device = "/var/lib/swapfile"; size = 16 * 1024; }]; # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. networking.networkmanager.wifi.powersave = false; # networking.nftables.enable = true; # systemd.services.v2raya.path = with pkgs; [ nftables ]; # Fix Marvell AVASTAR WiFi not resuming after suspend (Surface devices) systemd.services.restart-mwifiex = { description = "Reload mwifiex driver after suspend/resume"; wantedBy = [ "post-resume.target" ]; after = [ "post-resume.target" ]; serviceConfig = { Type = "oneshot"; ExecStart = '' modprobe -r mwifiex_pcie mwifiex modprobe mwifiex_pcie ''; }; }; # Set your time zone. time.timeZone = "Australia/Sydney"; # Configure network proxy if necessary # networking.proxy.default = "http://user:password@proxy:port/"; # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; # Select internationalisation properties. i18n.defaultLocale = "en_AU.UTF-8"; # console = { # font = "Lat2-Terminus16"; # keyMap = "us"; # useXkbConfig = true; # use xkb.options in tty. # }; i18n.inputMethod = { type = "fcitx5"; enable = true; # fcitx5.waylandFrontend = true; fcitx5.addons = with pkgs; [ fcitx5-mozc fcitx5-gtk fcitx5-anthy fcitx5-hangul qt6Packages.fcitx5-chinese-addons qt6Packages.fcitx5-configtool fcitx5-nord ]; }; environment.sessionVariables = rec { EDITOR="vim"; }; #printing services.printing.enable = true; services.avahi = { enable = true; nssmdns4 = true; openFirewall = true; }; services.printing = { drivers = with pkgs; [ cups-filters cups-browsed ]; }; # Enable the X11 windowing system. services.displayManager.sddm = { enable = true; settings = { Wayland = { EnableHiDPI=true; }; General = { GreeterEnvironment="QT_SCREEN_SCALE_FACTORS=2,QT_FONT_DPI=192"; }; }; }; services.displayManager.defaultSession = "plasma"; services.desktopManager.plasma6.enable = true; services.xserver.desktopManager.runXdgAutostartIfNone = true; # lid closed battery power management services.power-profiles-daemon.enable = true; services.tlp = { enable = false; settings = { CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_MIN_PERF_ON_AC=0; CPU_MAX_PERF_ON_AC=100; CPU_MIN_PERF_ON_BAT = 0; CPU_MAX_PERF_ON_BAT = 20; }; }; # Configure keymap in X11 services.xserver = { enable = true ; xkb.layout = ""; xkb.options = "eurosign:e,caps:escape"; }; # Enable sound. # hardware.pulseaudio.enable = true; # OR services.pipewire = { enable = true; pulse.enable = true; # alsa.enable = true; # alsa.support32Bit = true; }; security.rtkit.enable = true; # Enable bluetooth services.blueman.enable = true; hardware.enableAllFirmware = true; hardware.bluetooth.enable = true; hardware.enableRedistributableFirmware = true; hardware.bluetooth.powerOnBoot = true; hardware.bluetooth.settings = { General = { Experimental = true; }; }; # services.pipewire.wireplumber.extraConfig.bluetoothEnhancements = { # "monitor.bluez.properties" = { # "bluez5.enable-sbc-xq" = true; # "bluez5.enable-msbc" = true; # "bluez5.enable-hw-volume" = true; # "bluez5.roles" = [ "hsp_hs" "hsp_ag" "hfp_hf" "hfp_ag" ]; # }; #}; #services.v2raya.enable = true; # Read the text content of an actual external JSON file #services.v2raya.enable = true; # services.v2raya.cliPackage = pkgs.xray.override { # assets = [ pkgs.v2ray-geoip pkgs.v2ray-domain-list-community ]; services.sing-box = { enable = true; package = pkgs.sing-box; settings = { log = { level = "info"; }; inbounds = [{ type = "tun"; tag = "tun-in"; interface_name = "singtun"; address = [ "172.19.0.1/30" "fd00::1/126" ]; # mtu = 1492; auto_route = true; auto_redirect = true; strict_route = true; stack = "gvisor"; }]; outbounds = [ vlessOutbound ]; route = { auto_detect_interface = true; final = "proxy"; }; }; }; #services.v2raya.enable = true; # services.v2raya.cliPackage = pkgs.xray.override { # assets = [ pkgs.v2ray-geoip pkgs.v2ray-domain-list-community ]; # }; # services.xray = { # enable = true; # settings = { # log = { # loglevel = "warning"; # }; # Inbounds: Local ports on your NixOS machine to connect your browser/apps to # inbounds = [ # { # listen = "127.0.0.1"; # port = 10808; # Local SOCKS5 Proxy Port # protocol = "socks"; # settings = { # auth = "noauth"; # udp = true; # }; # sniffing = { # enabled = true; # destOverride = [ "http" "tls" ]; # }; # } # { # listen = "127.0.0.1"; # port = 10809; # Local HTTP Proxy Port # protocol = "http"; # settings = { # allowTransparent = false; # }; # } # ]; # Outbounds: The VLESS-REALITY connection to your remote Xray server # outbounds = [ # { # protocol = "vless"; # tag = "proxy"; # settings = { # vnext = [ # { # address = "immich.frogguingang.com"; # Replace with your server IP or domain # port = 443; # users = [ # { # id = "e76c485e-38f2-44fe-bb74-6550b307741d"; # Replace with your VLESS UUID # encryption = "none"; # flow = "xtls-rprx-vision"; # Must use XTLS-Vision flow # } # ]; # } # ]; # }; # streamSettings = { # network = "tcp"; # security = "reality"; # realitySettings = { # show = false; # serverName = "immich.frogguingang.com"; # Must match the server config SNI # publicKey = "Qm8GdYV5l78f24ThAglg6ldKdPPeeXh8KGFuC3krTjM"; # Replace with your X25519 Public Key # shortId = "68ce8db33efa2894"; # Must match server shortId # fingerprint = "chrome"; # Camouflages client TLS fingerprint as Chrome # }; # }; # } # { # protocol = "freedom"; # tag = "direct"; # } # ]; # }; # }; # Enable touchpad support (enabled default in most desktopManager). services.libinput.enable = true; programs.fish.enable = true; programs.steam = { enable = true; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; }; services.displayManager.sddm = { wayland = { enable = true; }; }; users.defaultUserShell = pkgs.fish; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.jiemusi = { initialPassword = "pengamesiscute"; isNormalUser = true; extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. packages = with pkgs; [ firefox google-chrome vscode-fhs steam spotify vesktop tigervnc foot openvpn prismlauncher handbrake musescore kdePackages.kdenlive #zoom-us spotify-player shadowsocks-rust # obsidian ]; }; services.iptsd = { enable = true; config = { Touchscreen.DisableOnPalm = true; Touchscreen.DisableOnStylus = true; }; }; programs.kdeconnect.enable = true; # List packages installed in system profile. To search, run: # $ nix search wget nixpkgs.config.allowUnfree = true; # environment.etc."v2raya/geoip.dat".source = "${pkgs.v2ray-geoip}/share/v2ray/geoip.dat"; # environment.etc."v2raya/geosite.dat".source = "${pkgs.v2ray-domain-list-community}/share/v2ray/geosite.dat"; environment.systemPackages = with pkgs; [ vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. wget # v2ray-geoip # v2ray-domain-list-community wakeonlan iwd lf fd traceroute ripgrep # zoom python313 firefox tree neovim git htop fastfetch oath-toolkit freshfetch hyfetch foot iptsd libreoffice-qt-stable netflix audacity blender vlc gimp krita pciutils maliit-keyboard maliit-framework pavucontrol qt6Packages.fcitx5-configtool R #rstudio wl-clipboard ]; # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; # programs.gnupg.agent = { # enable = true; # enableSSHSupport = true; # }; microsoft-surface.ipts.enable = true; # List services that you want to enable: # Enable the OpenSSH daemon. services.openssh.enable = true; # services.openvpn.servers = { # homeVPN = { config = '' config /root/nixos/openvpn/James\ Surface.ovpn ''; # updateResolvConf = true;} # ; #}; # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. # networking.firewall.enable = false; # Copy the NixOS configuration file and link it from the resulting system # (/run/current-system/configuration.nix). This is useful in case you # accidentally delete configuration.nix. # system.copySystemConfiguration = true; # This option defines the first version of NixOS you have installed on this particular machine, # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. # # Most users should NEVER change this value after the initial install, for any reason, # even if you've upgraded your system to a new NixOS release. # # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how # to actually do that. # # This value being lower than the current NixOS release does NOT mean your system is # out of date, out of support, or vulnerable. # # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, # and migrated your data accordingly. # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "24.05"; # Did you read the comment? }