yep, more dotfiles
1{ self 2, config 3, pkgs 4, upkgs 5, ... 6}: 7 8let 9 inherit (self.outputs) nixosModules; 10in 11{ 12 imports = [ 13 # Replaces nixpkgs module with a custom one that support fallback static location 14 nixosModules.geoclue2 15 ]; 16 17 config = { 18 local.fragment = { 19 agenix.enable = true; 20 fonts.enable = true; 21 gaming.enable = true; 22 kanata.enable = true; 23 logiops.enable = true; 24 nix.enable = true; 25 sddm.enable = true; 26 security.enable = true; 27 virtualisation.enable = true; 28 wireless.enable = true; 29 }; 30 31 networking.hosts = { 32 # "127.0.0.1" = [ "www.youtube.com" ]; 33 34 "10.45.3.4" = [ "printer.epita" ]; 35 }; 36 37 hardware.graphics.enable = true; 38 39 boot = { 40 kernelParams = [ "quiet" ]; 41 42 # allow perf as user 43 kernel.sysctl."kernel.perf_event_paranoid" = -1; 44 45 kernelPackages = pkgs.linuxKernel.packages.linux_zen; 46 extraModulePackages = with config.boot.kernelPackages; [ perf xone ]; 47 48 loader = { 49 systemd-boot.enable = true; 50 systemd-boot.consoleMode = "auto"; 51 efi.canTouchEfiVariables = true; 52 }; 53 54 # This is needed to build cross platform ISOs in `apps/flash-installer.nix` 55 binfmt.emulatedSystems = [ "aarch64-linux" ]; 56 }; 57 58 # Once in a while, the session stop job hangs and lasts the full default 59 # time (1min30). I just want to shutdown my computer please. 60 systemd.extraConfig = '' 61 DefaultTimeoutStopSec = 10s 62 ''; 63 64 programs.dconf.enable = true; 65 66 time.timeZone = "Europe/Paris"; 67 68 services.ntpd-rs.enable = true; 69 70 i18n = 71 let 72 english-locale = "en_US.UTF-8"; 73 french-locale = "fr_FR.UTF-8"; 74 in 75 { 76 defaultLocale = english-locale; 77 extraLocaleSettings = { 78 LC_ADDRESS = french-locale; 79 LC_IDENTIFICATION = french-locale; 80 LC_MEASUREMENT = french-locale; 81 LC_MONETARY = french-locale; 82 LC_NAME = french-locale; 83 LC_NUMERIC = french-locale; 84 LC_PAPER = french-locale; 85 LC_TELEPHONE = french-locale; 86 LC_TIME = french-locale; 87 }; 88 }; 89 90 programs.command-not-found.enable = false; 91 92 # This is needed for services like `darkman` and `gammastep` 93 services.geoclue2 = { 94 enable = true; 95 96 # Fallback using custom geoclue2 module waitng for an alternative to MLS 97 # (Mozilla Location Services). See related module in repo. 98 # INFO: lat vvvv vvv long → Paris rough location 99 staticFile = "48.8\n2.3\n0\n0\n"; 100 }; 101 102 programs.wireshark = { 103 enable = true; 104 package = pkgs.wireshark; 105 }; 106 users.users.${config.local.user.username}.extraGroups = [ "wireshark" "plugdev" ]; 107 108 # This option is already filled with aliases that snowball and have 109 # priority on fish internal `ls` aliases 110 environment.shellAliases = { ls = null; ll = null; l = null; }; 111 programs.fish.enable = true; 112 113 services.udev.packages = with pkgs; [ 114 numworks-udev-rules 115 lpkgs.probe-rs-udev-rules 116 ]; 117 118 users.groups.plugdev.name = "plugdev"; 119 120 services.devmon.enable = true; 121 122 services.gvfs.enable = true; 123 124 services.pipewire = { 125 enable = true; 126 alsa.enable = true; 127 alsa.support32Bit = true; 128 pulse.enable = true; 129 jack.enable = true; 130 }; 131 132 services.upower.enable = true; 133 134 services.tailscale.enable = true; 135 136 services.flatpak.enable = true; 137 138 services.thermald.enable = true; 139 140 services.auto-cpufreq.enable = true; 141 services.auto-cpufreq.settings = { 142 battery = { 143 governor = "powersave"; 144 turbo = "never"; 145 }; 146 charger = { 147 governor = "powersave"; 148 turbo = "never"; 149 }; 150 }; 151 152 xdg.portal = { 153 enable = true; 154 wlr.enable = true; 155 156 extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; 157 158 config.common.default = "*"; 159 }; 160 161 programs.obs-studio = { 162 enable = true; 163 enableVirtualCamera = true; 164 165 plugins = with pkgs.obs-studio-plugins; [ 166 wlrobs 167 obs-backgroundremoval 168 obs-pipewire-audio-capture 169 ]; 170 }; 171 }; 172}