mirror of
https://codeberg.org/leana8959/.files.git
synced 2025-12-06 14:49:14 +00:00
140 lines
4.1 KiB
Nix
140 lines
4.1 KiB
Nix
{
|
||
config,
|
||
pkgs,
|
||
lib,
|
||
...
|
||
}: {
|
||
# For nautilius and iOS
|
||
services.gvfs.enable = true;
|
||
# iOS
|
||
services.usbmuxd.enable = true;
|
||
environment.systemPackages = with pkgs; [libimobiledevice idevicerestore];
|
||
|
||
# https://unix.stackexchange.com/questions/592775/how-can-i-enable-apple-ios-fast-charge-support
|
||
services.udev.extraRules = ''
|
||
SUBSYSTEM=="usb", ACTION=="add", DRIVER=="apple-mfi-fastcharge", RUN+="/bin/sh -c 'echo Fast > /sys/class/power_supply/apple_mfi_fastcharge/charge_type'"
|
||
'';
|
||
|
||
users.users.root.openssh.authorizedKeys.keys = let
|
||
ids = import ../../../identities.nix;
|
||
in
|
||
builtins.concatMap builtins.attrValues (builtins.attrValues ids);
|
||
|
||
networking = {
|
||
networkmanager.enable = lib.mkForce false;
|
||
|
||
firewall.allowedTCPPorts = [
|
||
8080
|
||
|
||
# For 'localsend'
|
||
# https://github.com/localsend/localsend?tab=readme-ov-file#setup
|
||
53317
|
||
];
|
||
|
||
# To enable roaming https://wiki.archlinux.org/title/Wpa_supplicant#Roaming
|
||
wireless = {
|
||
enable = true;
|
||
userControlled.enable = true;
|
||
secretsFile = config.age.secrets.wpa_password.path;
|
||
scanOnLowSignal = false;
|
||
networks = let
|
||
properties = lib.flip lib.pipe;
|
||
networks = lib.flip lib.genAttrs (_: {});
|
||
|
||
# The higher the more preferred
|
||
setPrio = i: lib.mapAttrs (_: conf: conf // {priority = i;});
|
||
private = setPrio 10;
|
||
limited = setPrio (-10);
|
||
|
||
extraConfig = value: conf: conf // {extraConfig = conf.extraConfig or "" + value;};
|
||
randomizeMac = lib.mapAttrs (_: extraConfig "mac_addr=1\n");
|
||
roaming = lib.mapAttrs (_: extraConfig "bgscan=\"simple:30:-70:3600\"\n");
|
||
|
||
hasPsk = let
|
||
# wpa_supplicant uses `strchr` to seek to the first `=`, so the only forbidden character is `=`.
|
||
escapePwdKey = lib.replaceStrings ["="] ["_"];
|
||
in
|
||
lib.mapAttrs (name: conf: conf // {pskRaw = "ext:${escapePwdKey conf.ssid or name}";});
|
||
in
|
||
lib.mkMerge [
|
||
(properties [private hasPsk]
|
||
(networks [
|
||
"HiddenParadize@Earth2077"
|
||
"Pei’s Wifi"
|
||
"girlypop-net"
|
||
]))
|
||
(properties [private roaming hasPsk]
|
||
(networks [
|
||
"annapurna"
|
||
"5526-1"
|
||
]))
|
||
|
||
#
|
||
# School
|
||
#
|
||
(properties [private roaming]
|
||
{
|
||
eduroam = {
|
||
authProtocols = ["WPA-EAP"];
|
||
auth = ''
|
||
pairwise=CCMP
|
||
group=CCMP TKIP
|
||
eap=PEAP
|
||
ca_cert="${./certs/universite_de_rennes.pem}"
|
||
identity="ychiang@etudiant.univ-rennes.fr"
|
||
altsubject_match="DNS:radius.univ-rennes1.fr;DNS:radius1.univ-rennes1.fr;DNS:radius2.univ-rennes1.fr;DNS:vmradius-psf1.univ-rennes1.fr;DNS:vmradius-psf2.univ-rennes1.fr"
|
||
phase2="auth=MSCHAPV2"
|
||
password=ext:EDUROAM
|
||
anonymous_identity="anonymous@univ-rennes.fr"
|
||
'';
|
||
};
|
||
})
|
||
|
||
#
|
||
# Cafés
|
||
#
|
||
(properties [private randomizeMac hasPsk]
|
||
(networks [
|
||
"A-WAY"
|
||
"CAT.jpgcafe"
|
||
"LOUISA" # 區公所
|
||
"LouisaCoffee" # 七張
|
||
"MetroTaipei x Louisa" # 大安
|
||
]))
|
||
|
||
#
|
||
# Open networks
|
||
#
|
||
#
|
||
# Use this link to do portal login
|
||
# http://detectportal.firefox.com/canonical.html
|
||
(properties [randomizeMac]
|
||
(networks [
|
||
# Transport
|
||
"_SNCF_WIFI_INOUI"
|
||
"_WIFI_LYRIA"
|
||
"EurostarTrainsWiFi"
|
||
"SBB-FREE"
|
||
"AOT Airport Free Wi-Fi by NT"
|
||
|
||
# Library
|
||
"NewTaipei"
|
||
|
||
"Fami-WiFi"
|
||
]))
|
||
|
||
#
|
||
# Phones
|
||
#
|
||
(properties [limited hasPsk]
|
||
(networks [
|
||
"iPhone de Léana 江"
|
||
]))
|
||
];
|
||
};
|
||
};
|
||
|
||
services.mullvad-vpn.enable = true;
|
||
|
||
hardware.bluetooth.enable = true;
|
||
}
|