1{ 2 pkgs, 3 lib, 4 config, 5 ... 6}: 7 8{ 9 imports = [ 10 ./hardware-configuration.nix 11 ./backups.nix 12 ]; 13 14 custom = { 15 enable = true; 16 tailscale = true; 17 laptop = true; 18 printing = true; 19 gui.i3 = true; 20 gui.sway = true; 21 workstation = true; 22 autoUpgrade.enable = true; 23 homeManager.enable = true; 24 zsa = true; 25 }; 26 27 home-manager.users.${config.custom.username} = { 28 services.kdeconnect.enable = true; 29 services.spotifyd = { 30 enable = true; 31 settings.global = { 32 username = "ryangibb321@gmail.com"; 33 password_cmd = "pass show spotify/ryangibb321@gmail.com"; 34 }; 35 }; 36 custom = { 37 machineColour = "blue"; 38 mail.enable = true; 39 calendar.enable = true; 40 battery.enable = true; 41 emacs.enable = true; 42 }; 43 home.sessionVariables = { 44 LEDGER_FILE = "~/vault/finaces.ledger"; 45 }; 46 programs.git.extraConfig.commit.gpgSign = true; 47 programs.direnv = { 48 enable = true; 49 enableZshIntegration = true; 50 enableBashIntegration = true; 51 }; 52 }; 53 54 boot.loader.grub = { 55 enable = true; 56 default = "saved"; 57 device = "nodev"; 58 efiSupport = true; 59 useOSProber = true; 60 }; 61 62 environment.systemPackages = with pkgs; [ 63 gcc 64 dell-command-configure 65 file-roller 66 unzip 67 cheese 68 gparted 69 chromium 70 calibre 71 zotero 72 element-desktop 73 iamb 74 spotify 75 gimp 76 (python3.withPackages ( 77 p: with p; [ 78 numpy 79 matplotlib 80 pandas 81 ] 82 )) 83 lsof 84 gthumb 85 restic 86 mosquitto 87 texlive.combined.scheme-full 88 typst 89 evince 90 pdfpc 91 krop 92 transmission_4 93 transmission_4-gtk 94 libreoffice 95 obs-studio 96 xournalpp 97 inkscape 98 kdenlive 99 tor-browser-bundle-bin 100 ffmpeg 101 audio-recorder 102 speechd 103 deploy-rs 104 nix-prefetch-git 105 tcpdump 106 pandoc 107 powertop 108 toot 109 ledger 110 llm 111 (writeShellScriptBin "q" '' 112 llm -m 4 "$*" 113 '') 114 (writeShellScriptBin "qc" '' 115 llm -m 4 "$*" -c 116 '') 117 ddcutil 118 anki 119 (aspellWithDicts ( 120 ps: with ps; [ 121 en 122 en-computers 123 en-science 124 ] 125 )) 126 moreutils 127 gnome-calendar 128 129 # nix 130 nixd 131 nixfmt-rfc-style 132 # ocaml 133 opam 134 pkg-config 135 ocamlPackages.ocaml-lsp 136 ocamlPackages.ocamlformat 137 # rust 138 cargo 139 rustc 140 rust-analyzer 141 rustfmt 142 # haskell 143 cabal-install 144 ghc 145 haskell-language-server 146 # python 147 pyright 148 black 149 # jave 150 jdt-language-server 151 nodejs_18 152 # c 153 clang-tools 154 # lua 155 lua-language-server 156 # other 157 ltex-ls 158 typst-lsp 159 ]; 160 161 services.gnome.gnome-keyring.enable = true; 162 programs.seahorse.enable = true; 163 164 programs.dconf.enable = true; 165 services.gnome.evolution-data-server.enable = true; 166 services.gnome.gnome-online-accounts.enable = true; 167 168 virtualisation.docker.enable = true; 169 users.users.ryan.extraGroups = [ "docker" ]; 170 171 virtualisation.virtualbox.host.enable = true; 172 users.extraGroups.vboxusers.members = [ "ryan" ]; 173 174 systemd.extraConfig = '' 175 DefaultTimeoutStopSec=30s 176 ''; 177 178 programs.steam.enable = true; 179 180 security.sudo.extraConfig = '' 181 Defaults !tty_tickets 182 ''; 183 184 # sometimes I want to keep the cache for operating without internet 185 nix.gc.automatic = lib.mkForce false; 186 187 # for CL VPN 188 networking.networkmanager.enableStrongSwan = true; 189 190 services = { 191 syncthing = { 192 enable = true; 193 user = config.custom.username; 194 dataDir = "/home/ryan/syncthing"; 195 configDir = "/home/ryan/.config/syncthing"; 196 }; 197 }; 198 199 networking.hostId = "e768032f"; 200 201 #system.includeBuildDependencies = true; 202 nix = { 203 distributedBuilds = true; 204 extraOptions = '' 205 builders-use-substitutes = true 206 ''; 207 }; 208 209 # https://github.com/NixOS/nixpkgs/issues/180175 210 systemd.services.NetworkManager-wait-online.enable = false; 211 212 # https://github.com/NixOS/nixpkgs/issues/330685 213 boot.extraModprobeConfig = '' 214 options snd-hda-intel dmic_detect=0 215 ''; 216 217 # ddcutil 218 hardware.i2c.enable = true; 219}