From c325943ef8672342b75c27dc711a950a97bcc922 Mon Sep 17 00:00:00 2001 From: Pengames Date: Sat, 10 Oct 2026 02:08:13 +1100 Subject: [PATCH] update --- configuration.nix | 175 ++++++++++++++++-- flake_test/flake.lock | 27 +++ flake_test/flake.nix | 23 +++ flake_test/xray_config.json | 354 ++++++++++++++++++++++++++++++++++++ hardware-configuration.nix | 4 + 5 files changed, 569 insertions(+), 14 deletions(-) create mode 100644 flake_test/flake.lock create mode 100644 flake_test/flake.nix create mode 100644 flake_test/xray_config.json diff --git a/configuration.nix b/configuration.nix index 0cff07c..6142dcc 100644 --- a/configuration.nix +++ b/configuration.nix @@ -9,7 +9,7 @@ [ # Include the results of the hardware scan. ./hardware-configuration.nix ]; - system.copySystemConfiguration = true; + #system.copySystemConfiguration = true; nix = { settings = { auto-optimise-store = true; @@ -18,10 +18,18 @@ }; 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; - boot.loader.efi.canTouchEfiVariables = true; + 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; networking.hostName = "nixpengames"; # Define your hostname. # Pick only one of the below networking options. @@ -29,6 +37,20 @@ # 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; + # 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"; @@ -45,9 +67,9 @@ # }; i18n.inputMethod = { -# type = "fcitx5"; - enabled = "fcitx5"; - fcitx5.waylandFrontend = true; + type = "fcitx5"; + enable = true; + # fcitx5.waylandFrontend = true; fcitx5.addons = with pkgs; [ fcitx5-mozc fcitx5-gtk @@ -61,6 +83,20 @@ 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; @@ -76,7 +112,22 @@ 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 ; @@ -84,8 +135,6 @@ xkb.options = "eurosign:e,caps:escape"; }; - # Enable CUPS to print documents. - services.printing.enable = true; # Enable sound. # hardware.pulseaudio.enable = true; @@ -103,6 +152,7 @@ services.blueman.enable = true; hardware.enableAllFirmware = true; hardware.bluetooth.enable = true; + hardware.enableRedistributableFirmware = true; hardware.bluetooth.powerOnBoot = true; hardware.bluetooth.settings = { General = { @@ -118,7 +168,81 @@ # "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.cliPackege = pkgs.xray + # 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; @@ -127,6 +251,11 @@ 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 = { @@ -143,6 +272,13 @@ foot openvpn prismlauncher + handbrake + musescore + kdePackages.kdenlive + zoom-us + spotify-player + shadowsocks-rust + # obsidian ]; }; services.iptsd = { @@ -152,12 +288,15 @@ Touchscreen.DisableOnStylus = true; }; }; + programs.kdeconnect.enable = true; # List packages installed in system profile. To search, run: # $ nix search wget nixpkgs.config.allowUnfree = true; 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 + wakeonlan + iwd lf fd traceroute @@ -170,6 +309,7 @@ git htop fastfetch + oath-toolkit freshfetch hyfetch foot @@ -178,14 +318,19 @@ netflix audacity blender + vlc gimp krita pciutils maliit-keyboard maliit-framework pavucontrol + 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; @@ -198,9 +343,11 @@ # Enable the OpenSSH daemon. services.openssh.enable = true; - # services.openvpn.servers = { -# homeVPN = { config = '' config /root/nixos/openvpn/James\ Surface.ovpn ''; }; -# }; +# 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 = [ ... ]; diff --git a/flake_test/flake.lock b/flake_test/flake.lock new file mode 100644 index 0000000..42bac7c --- /dev/null +++ b/flake_test/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1751984180, + "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake_test/flake.nix b/flake_test/flake.nix new file mode 100644 index 0000000..0512f44 --- /dev/null +++ b/flake_test/flake.nix @@ -0,0 +1,23 @@ +{ + description = "A very basic flake"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; # or nixpkgs/nixos-unstable + }; + + outputs = { self, nixpkgs, ... }: + let + lib = nixpkgs.lib; + in { + nixosConfigurations = { + nixpengames = lib.nixosSystem { + system = "x86_64-linux"; + modules = [ ../configuration.nix ]; + }; + }; +# packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello; + + # packages.x86_64-linux.default = self.packages.x86_64-linux.hello; + + }; +} diff --git a/flake_test/xray_config.json b/flake_test/xray_config.json new file mode 100644 index 0000000..234799b --- /dev/null +++ b/flake_test/xray_config.json @@ -0,0 +1,354 @@ + +{ + "dns": { + "hosts": { + "domain:googleapis.cn": "googleapis.com", + "dns.alidns.com": [ + "223.5.5.5", + "223.6.6.6", + "2400:3200::1", + "2400:3200:baba::1" + ], + "dns.sse.cisco.com": [ + "208.67.220.220", + "208.67.222.222", + "2620:119:35::35", + "2620:119:53::53" + ], + "dns.umbrella.com": [ + "208.67.220.220", + "208.67.222.222", + "2620:119:35::35", + "2620:119:53::53" + ], + "one.one.one.one": [ + "1.1.1.1", + "1.0.0.1", + "2606:4700:4700::1111", + "2606:4700:4700::1001" + ], + "1dot1dot1dot1.cloudflare-dns.com": [ + "1.1.1.1", + "1.0.0.1", + "2606:4700:4700::1111", + "2606:4700:4700::1001" + ], + "dns.cloudflare.com": [ + "162.159.61.8", + "172.64.41.8", + "2a06:98c1:52::8", + "2803:f800:53::8" + ], + "cloudflare-dns.com": [ + "104.16.248.249", + "104.16.249.249", + "2606:4700::6810:f8f9", + "2606:4700::6810:f9f9" + ], + "engage.cloudflareclient.com": [ + "162.159.192.1", + "2606:4700:d0::a29f:c001" + ], + "doh.pub": [ + "1.12.12.12", + "120.53.53.53" + ], + "dot.pub": [ + "1.12.12.12", + "120.53.53.53" + ], + "dns.google": [ + "8.8.8.8", + "8.8.4.4", + "2001:4860:4860::8888", + "2001:4860:4860::8844" + ], + "dns.quad9.net": [ + "9.9.9.9", + "149.112.112.112", + "2620:fe::fe", + "2620:fe::9" + ], + "dns.sb": [ + "45.11.45.11", + "185.222.222.222", + "2a09::", + "2a11::" + ], + "common.dot.dns.yandex.net": [ + "77.88.8.8", + "77.88.8.1", + "2a02:6b8::feed:0ff", + "2a02:6b8:0:1::feed:0ff" + ], + "immich.frogguingang.com": "116.255.17.227" + }, + "servers": [ + "https://cloudflare-dns.com/dns-query", + { + "address": "223.5.5.5", + "domains": [ + "geosite:cn" + ], + "expectIPs": [ + "geoip:cn" + ], + "skipFallback": true, + "tag": "domestic-dns_cn_expect_0" + }, + { + "address": "https://cloudflare-dns.com/dns-query", + "domains": [ + "geosite:google" + ] + }, + { + "address": "223.5.5.5", + "domains": [ + "geosite:private" + ], + "skipFallback": true, + "tag": "domestic-dns_1_0" + }, + { + "address": "223.5.5.5", + "domains": [ + "domain:alidns.com", + "domain:doh.pub", + "domain:dot.pub", + "domain:360.cn", + "domain:onedns.net" + ], + "skipFallback": true, + "tag": "domestic-dns_2_0" + }, + { + "address": "223.5.5.5", + "domains": [ + "geosite:cn" + ], + "skipFallback": true, + "tag": "domestic-dns_3_0" + } + ], + "tag": "dns-module" + }, + "inbounds": [ + { + "listen": "127.0.0.1", + "port": 10808, + "protocol": "socks", + "settings": { + "auth": "noauth", + "udp": true, + "userLevel": 8 + }, + "sniffing": { + "destOverride": [ + "http", + "tls", + "quic" + ], + "enabled": true, + "routeOnly": false + }, + "tag": "socks" + } + ], + "log": { + "loglevel": "warning" + }, + "outbounds": [ + { + "mux": { + "concurrency": -1, + "enabled": false + }, + "protocol": "vless", + "settings": { + "vnext": [ + { + "address": "immich.frogguingang.com", + "encryption": "none", + "flow": "xtls-rprx-vision", + "id": "e76c485e-38f2-44fe-bb74-6550b307741d", + "level": 8, + "port": 443 + } + ] + }, + "streamSettings": { + "network": "tcp", + "realitySettings": { + "allowInsecure": false, + "fingerprint": "chrome", + "publicKey": "Qm8GdYV5l78f24ThAglg6ldKdPPeeXh8KGFuC3krTjM", + "serverName": "immich.frogguingang.com", + "shortId": "68ce8db33efa2894" + }, + "security": "reality", + "sockopt": { + "domainStrategy": "UseIP", + "happyEyeballs": { + "interleave": 2, + "maxConcurrentTry": 4, + "prioritizeIPv6": false, + "tryDelayMs": 250 + } + }, + "tcpSettings": { + "header": { + "type": "none" + } + } + }, + "tag": "proxy" + }, + { + "protocol": "freedom", + "streamSettings": { + "network": "tcp", + "sockopt": { + "domainStrategy": "UseIP", + "happyEyeballs": { + "interleave": 2, + "maxConcurrentTry": 4, + "tryDelayMs": 250 + } + } + }, + "tag": "direct" + }, + { + "protocol": "blackhole", + "settings": {}, + "tag": "block" + } + ], + "policy": { + "levels": { + "8": { + "connIdle": 300, + "downlinkOnly": 1, + "handshake": 4, + "uplinkOnly": 1 + } + } + }, + "remarks": "reality xtls", + "routing": { + "domainStrategy": "AsIs", + "rules": [ + { + "network": "udp", + "outboundTag": "block", + "port": "443", + "type": "field" + }, + { + "domain": [ + "geosite:google" + ], + "outboundTag": "proxy", + "type": "field" + }, + { + "ip": [ + "ext:geoip-only-cn-private.dat:private" + ], + "outboundTag": "direct", + "type": "field" + }, + { + "domain": [ + "geosite:private" + ], + "outboundTag": "direct", + "type": "field" + }, + { + "ip": [ + "223.5.5.5", + "223.6.6.6", + "2400:3200::1", + "2400:3200:baba::1", + "119.29.29.29", + "1.12.12.12", + "120.53.53.53", + "2402:4e00::", + "2402:4e00:1::", + "180.76.76.76", + "2400:da00::6666", + "114.114.114.114", + "114.114.115.115", + "114.114.114.119", + "114.114.115.119", + "114.114.114.110", + "114.114.115.110", + "180.184.1.1", + "180.184.2.2", + "101.226.4.6", + "218.30.118.6", + "123.125.81.6", + "140.207.198.6", + "1.2.4.8", + "210.2.4.8", + "52.80.66.66", + "117.50.22.22", + "2400:7fc0:849e:200::4", + "2404:c2c0:85d8:901::4", + "117.50.10.10", + "52.80.52.52", + "2400:7fc0:849e:200::8", + "2404:c2c0:85d8:901::8", + "117.50.60.30", + "52.80.60.30" + ], + "outboundTag": "direct", + "type": "field" + }, + { + "domain": [ + "domain:alidns.com", + "domain:doh.pub", + "domain:dot.pub", + "domain:360.cn", + "domain:onedns.net" + ], + "outboundTag": "direct", + "type": "field" + }, + { + "ip": [ + "ext:geoip-only-cn-private.dat:cn" + ], + "outboundTag": "direct", + "type": "field" + }, + { + "domain": [ + "geosite:cn" + ], + "outboundTag": "direct", + "type": "field" + }, + { + "inboundTag": [ + "domestic-dns_1_0", + "domestic-dns_2_0", + "domestic-dns_3_0", + "domestic-dns_cn_expect_0" + ], + "outboundTag": "direct", + "type": "field" + }, + { + "inboundTag": [ + "dns-module" + ], + "outboundTag": "proxy", + "type": "field" + } + ] + } +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix index 887ce76..48a462e 100644 --- a/hardware-configuration.nix +++ b/hardware-configuration.nix @@ -12,6 +12,10 @@ boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; + boot.kernelParams = [ + "pcie_port_pm=off" + "mwifiex.skip_d3=1" + ]; fileSystems."/" = { device = "/dev/disk/by-uuid/731c6ca3-40f5-4016-a460-0a08d3d1b557";