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