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 ocaml = true; 22 workstation = true; 23 autoUpgrade.enable = true; 24 homeManager.enable = true; 25 zsa = true; 26 }; 27 28 home-manager.users.${config.custom.username} = { 29 services.kdeconnect.enable = true; 30 services.spotifyd = { 31 enable = true; 32 settings.global = { 33 username = "ryangibb321@gmail.com"; 34 password_cmd = "pass show spotify/ryangibb321@gmail.com"; 35 }; 36 }; 37 custom = { 38 machineColour = "blue"; 39 nvim-lsps = true; 40 mail.enable = true; 41 calendar.enable = true; 42 battery.enable = true; 43 emacs.enable = true; 44 }; 45 home.sessionVariables = { 46 LEDGER_FILE = ''~/vault/ledger/`date "+%Y"`.ledger''; 47 }; 48 programs.git.extraConfig.commit.gpgSign = true; 49 }; 50 51 boot.loader.grub = { 52 enable = true; 53 default = "saved"; 54 device = "nodev"; 55 efiSupport = true; 56 useOSProber = true; 57 }; 58 59 environment.systemPackages = with pkgs; [ 60 dell-command-configure 61 file-roller 62 unzip 63 cheese 64 gparted 65 chromium 66 calibre 67 zotero 68 element-desktop 69 iamb 70 spotify 71 gimp 72 (python3.withPackages ( 73 p: with p; [ 74 numpy 75 matplotlib 76 pandas 77 ] 78 )) 79 lsof 80 gthumb 81 restic 82 mosquitto 83 texlive.combined.scheme-full 84 typst 85 evince 86 pdfpc 87 krop 88 transmission_4 89 transmission_4-gtk 90 libreoffice 91 obs-studio 92 xournalpp 93 inkscape 94 kdenlive 95 tor-browser-bundle-bin 96 ffmpeg 97 audio-recorder 98 speechd 99 deploy-rs 100 nix-prefetch-git 101 tcpdump 102 pandoc 103 w3m 104 ranger 105 bluetuith 106 powertop 107 toot 108 ledger 109 llm 110 (writeShellScriptBin "q" '' 111 llm -m 4 "$*" 112 '') 113 (writeShellScriptBin "qc" '' 114 llm -m 4 "$*" -c 115 '') 116 ddcutil 117 anki 118 (aspellWithDicts ( 119 ps: with ps; [ 120 en 121 en-computers 122 en-science 123 ] 124 )) 125 moreutils 126 gnome-calendar 127 ]; 128 129 services.gnome.gnome-keyring.enable = true; 130 programs.seahorse.enable = true; 131 132 programs.dconf.enable = true; 133 services.gnome.evolution-data-server.enable = true; 134 services.gnome.gnome-online-accounts.enable = true; 135 136 virtualisation.docker.enable = true; 137 users.users.ryan.extraGroups = [ "docker" ]; 138 139 virtualisation.virtualbox.host.enable = true; 140 users.extraGroups.vboxusers.members = [ "ryan" ]; 141 142 systemd.extraConfig = '' 143 DefaultTimeoutStopSec=30s 144 ''; 145 146 programs.steam.enable = true; 147 148 security.sudo.extraConfig = '' 149 Defaults !tty_tickets 150 ''; 151 152 # sometimes I want to keep the cache for operating without internet 153 nix.gc.automatic = lib.mkForce false; 154 155 # for CL VPN 156 networking.networkmanager.enableStrongSwan = true; 157 158 services = { 159 syncthing = { 160 enable = true; 161 user = config.custom.username; 162 dataDir = "/home/ryan/syncthing"; 163 configDir = "/home/ryan/.config/syncthing"; 164 }; 165 }; 166 167 networking.hostId = "e768032f"; 168 169 #system.includeBuildDependencies = true; 170 nix = { 171 distributedBuilds = true; 172 extraOptions = '' 173 builders-use-substitutes = true 174 ''; 175 }; 176 177 # https://github.com/NixOS/nixpkgs/issues/180175 178 systemd.services.NetworkManager-wait-online.enable = false; 179 180 # https://github.com/NixOS/nixpkgs/issues/330685 181 boot.extraModprobeConfig = '' 182 options snd-hda-intel dmic_detect=0 183 ''; 184 185 # ddcutil 186 hardware.i2c.enable = true; 187}