Personal Nix setup
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Restructure into flakes

+1507 -1499
+5 -1
.gitignore
··· 1 + /result 2 + 1 3 .* 2 - .nix-secret 3 4 *.log 5 + 6 + **/encrypt/* 7 + !**/encrypt/*.age
-427
config/colors.nix
··· 1 - let 2 - inherit (import ../modules/color-utils.nix) mkLuaSyntax mkVimSyntax mkVimHardlineColors mkColor mkHighlight; 3 - in rec { 4 - colors = { 5 - gutter = (mkColor "#16171d" "232" "15"); # gutter fg grey 6 - cursor = (mkColor "#2C323C" "236" "8"); # cursor grey 7 - element = (mkColor "#404449" "238" "15"); # special grey 8 - split = (mkColor "#282c34" "59" "15"); 9 - 10 - black = (mkColor "#13131a" "235" "0"); 11 - grey = (mkColor "#3E4452" "237" "15"); 12 - 13 - red = (mkColor "#ED95A8" "204" "1"); 14 - brightRed = (mkColor "#EF5350" "196" "9"); 15 - 16 - green = (mkColor "#C3E88D" "114" "2"); 17 - brightGreen = (mkColor "#C3E88D" "114" "2"); 18 - 19 - yellow = (mkColor "#FFCB6B" "180" "3"); 20 - brightYellow = (mkColor "#F78C6C" "173" "11"); # dark yellow 21 - 22 - blue = (mkColor "#82B1FF" "39" "4"); 23 - brightBlue = (mkColor "#939EDE" "39" "4"); # blue purple 24 - 25 - purple = (mkColor "#C792EA" "170" "5"); 26 - brightPurple = (mkColor "#FF45AE" "170" "5"); 27 - 28 - cyan = (mkColor "#89DDFF" "38" "6"); 29 - brightCyan = (mkColor "#20D6E3" "38" "6"); 30 - 31 - white = (mkColor "#ECEFF1" "145" "7"); 32 - brightWhite = (mkColor "#697098" "59" "15"); # comment grey 33 - darkWhite = (mkColor "#F8F8F2" "59" "15"); 34 - }; 35 - 36 - vim-hardline = mkVimHardlineColors colors; 37 - lua = mkLuaSyntax colors; 38 - 39 - vim = with colors; mkVimSyntax "theme" { 40 - # Syntax Groups (descriptions and ordering from `:h w18`) 41 - Comment = { fg = brightWhite; style = "italic"; }; 42 - Constant = { fg = cyan; }; 43 - String = { fg = green; }; 44 - Character = { fg = green; }; 45 - Number = { fg = brightYellow; }; 46 - Boolean = { fg = red; }; 47 - Float = { fg = brightYellow; }; 48 - Identifier = { fg = red; }; 49 - Function = { fg = blue; }; 50 - Statement = { fg = purple; }; 51 - Conditional = { fg = purple; }; 52 - Repeat = { fg = purple; }; 53 - Label = { fg = purple; }; 54 - Operator = { fg = cyan; }; 55 - Keyword = { fg = red; }; 56 - Exception = { fg = purple; }; 57 - PreProc = { fg = yellow; }; 58 - Include = { fg = blue; }; 59 - Define = { fg = purple; }; 60 - Macro = { fg = purple; }; 61 - PreCondit = { fg = yellow; }; 62 - Type = { fg = yellow; }; 63 - StorageClass = { fg = yellow; }; 64 - Structure = { fg = yellow; }; 65 - Typedef = { fg = yellow; }; 66 - Special = { fg = blue; }; 67 - SpecialChar = mkHighlight {}; 68 - Tag = mkHighlight {}; 69 - Delimiter = mkHighlight {}; 70 - Debug = mkHighlight {}; 71 - Ignore = mkHighlight {}; 72 - SpecialComment = { fg = brightWhite; }; 73 - Underlined = mkHighlight { style = "underline"; }; 74 - Error = { fg = brightRed; }; 75 - Todo = { fg = purple; }; 76 - 77 - # Highlighting Groups (descriptions and ordering from `:h hitest.vim`) 78 - ColorColumn = { bg = cursor; }; 79 - Conceal = mkHighlight {}; 80 - Cursor = { fg = black; bg=blue; }; 81 - CursorIM = mkHighlight {}; 82 - CursorColumn = { bg = cursor; }; 83 - CursorLine = { bg = gutter; }; 84 - Directory = { fg = blue; }; 85 - 86 - Diff = { 87 - Add = { bg = gutter; }; 88 - Change = mkHighlight {}; 89 - Delete = { fg = brightWhite; }; 90 - Text = { style = "strikethrough"; }; 91 - }; 92 - 93 - Pmenu = { 94 - base = { bg = grey; }; 95 - Sel = { fg = black; bg = blue; }; 96 - Sbar = { bg = element; }; 97 - Thumb = { bg = white; }; 98 - }; 99 - 100 - ErrorMsg = { fg = brightRed; }; 101 - WarningMsg = { fg = yellow; }; 102 - VertSplit = { fg = gutter; }; 103 - Folded = { bg = gutter; fg = brightWhite; }; 104 - FoldColumn = mkHighlight {}; 105 - SignColumn = mkHighlight {}; 106 - IncSearch = { fg = blue; style = "reverse"; }; 107 - LineNr = { fg = black; bg = black; }; 108 - CursorLineNr = { fg = brightWhite; bg = gutter; style = "bold"; }; 109 - MatchParen = { fg = blue; style = "underline"; }; 110 - ModeMsg = mkHighlight {}; 111 - MoreMsg = mkHighlight {}; 112 - NonText = { fg = element; }; 113 - Normal = { fg = darkWhite; }; 114 - Question = { fg = purple; }; 115 - Search = { fg = black; bg = yellow; }; 116 - SpecialKey = { fg = element; }; 117 - 118 - Spell = { 119 - Bad = { fg = red; style = "underline"; }; 120 - Cap = { fg = brightYellow; }; 121 - Local = { fg = brightYellow; }; 122 - Rare = { fg = brightYellow; }; 123 - }; 124 - 125 - TabLine = { 126 - base = { fg = brightWhite; }; 127 - Fill = mkHighlight {}; 128 - Sel = { fg = white; }; 129 - }; 130 - 131 - StatusLine = { fg = white; bg = cursor; }; 132 - StatusLineNC = { fg = brightWhite; }; 133 - Title = { fg = green; }; 134 - Visual = { bg = grey; }; 135 - VisualNOS = { fg = grey; }; 136 - WildMenu = { fg = black; bg = blue; }; 137 - NormalFloat = { bg = split; }; 138 - TreesitterContext = { bg = gutter; }; 139 - 140 - dockerfile.Keyword = { fg = purple; }; 141 - 142 - sh = { 143 - Set = { fg = cyan; }; 144 - SetOption = { fg = white; }; 145 - Statement = { fg = cyan; }; 146 - FunctionKey = { fg = purple; }; 147 - }; 148 - 149 - css = { 150 - AttrComma = { fg = purple; }; 151 - AttributeSelector = { fg = green; }; 152 - Braces = { fg = white; }; 153 - ClassName = { fg = brightYellow; }; 154 - ClassNameDot = { fg = brightYellow; }; 155 - Definition = { fg = purple; }; 156 - FontAttr = { fg = brightYellow; }; 157 - FontDescriptor = { fg = purple; }; 158 - FunctionName = { fg = blue; }; 159 - Identifier = { fg = blue; }; 160 - Important = { fg = purple; }; 161 - Include = { fg = white; }; 162 - IncludeKeyword = { fg = purple; }; 163 - MediaType = { fg = brightYellow; }; 164 - Prop = { fg = purple; }; 165 - PseudoClassId = { fg = brightYellow; }; 166 - SelectorOp = { fg = purple; }; 167 - SelectorOp2 = { fg = purple; }; 168 - TagName = { fg = red; }; 169 - Color = { fg = brightYellow; }; 170 - CommonAttr = { fg = blue; }; 171 - UnitDecorators = { fg = yellow; }; 172 - }; 173 - 174 - go.Declaration = { fg = purple; }; 175 - 176 - html = { 177 - Title = { fg = white; }; 178 - Arg = { fg = yellow; }; 179 - EndTag = { fg = cyan; }; 180 - Link = { fg = purple; }; 181 - SpecialChar = { fg = brightYellow; }; 182 - SpecialTagName = { fg = red; }; 183 - Tag = { fg = cyan; }; 184 - TagName = { fg = red; }; 185 - H1 = { fg = blue; }; 186 - H2 = { fg = blue; }; 187 - H3 = { fg = blue; }; 188 - H4 = { fg = blue; }; 189 - H5 = { fg = blue; }; 190 - H6 = { fg = blue; }; 191 - }; 192 - 193 - javaScript = { 194 - Braces = { fg = white; }; 195 - Function = { fg = purple; }; 196 - Identifier = { fg = purple; }; 197 - Null = { fg = brightYellow; }; 198 - Number = { fg = brightYellow; }; 199 - Require = { fg = cyan; }; 200 - Reserved = { fg = purple; }; 201 - }; 202 - 203 - # For: https://github.com/pangloss/vim-javascript 204 - js = { 205 - ArrowFunction = { fg = purple; }; 206 - ClassKeyword = { fg = purple; }; 207 - ClassDefinition = { fg = yellow; }; 208 - ClassMethodType = { fg = purple; }; 209 - ClassFuncName = { fg = blue; }; 210 - DestructuringBlock = { fg = blue; }; 211 - DocParam = { fg = blue; }; 212 - DocTags = { fg = purple; }; 213 - Export = { fg = purple; }; 214 - ExportDefault = { fg = red; }; 215 - ExtendsKeyword = { fg = purple; }; 216 - Conditional = { fg = purple; }; 217 - Operator = { fg = purple; }; 218 - From = { fg = purple; }; 219 - FuncArgs = { fg = blue; }; 220 - FuncCall = { fg = blue; }; 221 - ObjectProp = { fg = cyan; }; 222 - Function = { fg = purple; }; 223 - Generator = { fg = yellow; }; 224 - GlobalObjects = { fg = yellow; }; 225 - Import = { fg = purple; }; 226 - ModuleAs = { fg = purple; }; 227 - ModuleWords = { fg = purple; }; 228 - ModuleKeyword = { fg = blue; }; 229 - Modules = { fg = purple; }; 230 - Null = { fg = brightYellow; }; 231 - StorageClass = { fg = purple; }; 232 - Super = { fg = red; }; 233 - TemplateBraces = { fg = brightRed; }; 234 - TemplateVar = { fg = green; }; 235 - This = { fg = red; }; 236 - Undefined = { fg = brightYellow; }; 237 - }; 238 - 239 - # For: https://github.com/othree/yajs.vim 240 - javascript = { 241 - ArrowFunc = { fg = purple; }; 242 - ClassExtends = { fg = purple; }; 243 - ClassKeyword = { fg = purple; }; 244 - DocNotation = { fg = purple; }; 245 - DocParamName = { fg = blue; }; 246 - DocTags = { fg = purple; }; 247 - EndColons = { fg = white; }; 248 - Export = { fg = purple; }; 249 - FuncArg = { fg = white; }; 250 - FuncKeyword = { fg = purple; }; 251 - Identifier = { fg = red; }; 252 - Import = { fg = purple; }; 253 - MethodName = { fg = white; }; 254 - ObjectLabel = { fg = white; }; 255 - OpSymbol = { fg = cyan; }; 256 - OpSymbols = { fg = cyan; }; 257 - PropertyName = { fg = green; }; 258 - TemplateSB = { fg = brightRed; }; 259 - Variable = { fg = purple; }; 260 - }; 261 - 262 - typescript = { 263 - Identifier = { fg = red; }; 264 - Reserved = { fg = purple; }; 265 - EndColons = { fg = white; }; 266 - Braces = { fg = white; }; 267 - }; 268 - 269 - json = { 270 - CommentError = { fg = white; }; 271 - Keyword = { fg = blue; }; 272 - Boolean = { fg = red; }; 273 - Number = { fg = brightYellow; }; 274 - Quote = { fg = white; }; 275 - String = { fg = green; }; 276 - MissingCommaError = { fg = brightRed; style = "reverse"; }; 277 - NoQuotesError = { fg = brightRed; style = "reverse"; }; 278 - NumError = { fg = brightRed; style = "reverse"; }; 279 - StringSQError = { fg = brightRed; style = "reverse"; }; 280 - SemicolonError = { fg = brightRed; style = "reverse"; }; 281 - }; 282 - 283 - markdown = { 284 - Code = { fg = green; }; 285 - LinkReference = { fg = brightWhite; }; 286 - JekyllFrontMatter = { fg = brightWhite; }; 287 - CodeBlock = { fg = green; }; 288 - CodeDelimiter = { fg = green; }; 289 - HeadingDelimiter = { fg = red; }; 290 - Rule = { fg = brightWhite; }; 291 - HeadingRule = { fg = brightWhite; }; 292 - Delimiter = { fg = cyan; }; 293 - Id = { fg = purple; }; 294 - Blockquote = { fg = brightWhite; }; 295 - Italic = { fg = purple; style = "italic"; }; 296 - Bold = { fg = purple; style = "bold"; }; 297 - OrderedListMarker = { fg = red; }; 298 - IdDeclaration = { fg = blue; }; 299 - LinkDelimiter = { fg = white; }; 300 - }; 301 - 302 - mkd = { 303 - Italic = { fg = purple; style = "italic"; }; 304 - Bold = { fg = purple; style = "bold"; }; 305 - InlineURL = { fg = red; }; 306 - ListItem = { fg = yellow; }; 307 - Link = { fg = white; }; 308 - URL = { fg = red; }; 309 - }; 310 - 311 - xml = { 312 - Attrib = { fg = yellow; }; 313 - EndTag = { fg = red; }; 314 - Tag = { fg = red; }; 315 - TagName = { fg = red; }; 316 - }; 317 - 318 - php = { 319 - Include = { fg = purple; }; 320 - Class = { fg = yellow; }; 321 - Classes = { fg = yellow; }; 322 - Function = { fg = blue; }; 323 - Type = { fg = purple; }; 324 - Keyword = { fg = purple; }; 325 - VarSelector = { fg = purple; }; 326 - Identifier = { fg = white; }; 327 - Method = { fg = blue; }; 328 - Boolean = { fg = blue; }; 329 - Parent = { fg = white; }; 330 - Operator = { fg = purple; }; 331 - Region = { fg = purple; }; 332 - UseNamespaceSeparator = { fg = white; }; 333 - ClassNamespaceSeparator = { fg = white; }; 334 - DocTags = { fg = purple; style="italic"; }; 335 - DocParam = { fg = purple; style="italic"; }; 336 - }; 337 - 338 - debug = { 339 - Breakpoint = { fg = brightBlue; }; 340 - PC = { bg = brightBlue; fg = black; }; 341 - }; 342 - 343 - gitcommit = { 344 - Comment = { fg = brightWhite; }; 345 - Untracked = { fg = brightWhite; }; 346 - Discarded = { fg = brightWhite; }; 347 - Selected = { fg = brightWhite; }; 348 - Unmerged = { fg = green; }; 349 - OnBranch = mkHighlight {}; 350 - Branch = { fg = purple; }; 351 - NoBranch = { fg = purple; }; 352 - DiscardedType = { fg = red; }; 353 - SelectedType = { fg = green; }; 354 - Header = mkHighlight {}; 355 - UntrackedFile = { fg = cyan; }; 356 - DiscardedFile = { fg = red; }; 357 - SelectedFile = { fg = green; }; 358 - UntrackedArrow = { fg = cyan; }; 359 - DiscardedArrow = { fg = red; }; 360 - SelectedArrow = { fg = green; }; 361 - UnmergedFile = { fg = yellow; }; 362 - File = mkHighlight {}; 363 - Summary = { fg = white; }; 364 - Overflow = { fg = red; }; 365 - }; 366 - 367 - terminal = { 368 - background = { fg = black; }; 369 - foreground = { fg = white; }; 370 - black = { fg = black; }; 371 - red = { fg = red; }; 372 - green = { fg = green; }; 373 - yellow = { fg = yellow; }; 374 - blue = { fg = blue; }; 375 - purple = { fg = purple; }; 376 - cyan = { fg = cyan; }; 377 - white = { fg = white; }; 378 - grey = { fg = grey; }; 379 - brightRed = { fg = brightRed; }; 380 - brightGreen = { fg = brightGreen; }; 381 - brightYellow = { fg = brightYellow; }; 382 - brightBlue = { fg = brightBlue; }; 383 - brightPurple = { fg = brightPurple; }; 384 - brightCyan = { fg = brightCyan; }; 385 - brightWhite = { fg = brightWhite; }; 386 - }; 387 - 388 - GitSigns = { 389 - Add = { fg = green; }; 390 - Change = { fg = brightBlue; }; 391 - Delete = { fg = brightRed; }; 392 - }; 393 - 394 - Signify = { 395 - Add = { fg = green; }; 396 - Change = { fg = brightBlue; }; 397 - Delete = { fg = brightRed; }; 398 - }; 399 - 400 - GitGutter = { 401 - Add = { fg = green; }; 402 - Change = { fg = brightBlue; }; 403 - Delete = { fg = brightRed; }; 404 - }; 405 - 406 - Neomake = { 407 - WarningSign = { fg = yellow; }; 408 - ErrorSign = { fg = brightRed; }; 409 - InfoSign = { fg = blue; }; 410 - }; 411 - 412 - DiagnosticSign = { 413 - Warn = { fg = yellow; }; 414 - Error = { fg = brightRed; }; 415 - Information = { fg = blue; }; 416 - Hint = { fg = yellow; }; 417 - }; 418 - 419 - Telescope = { 420 - Border = { fg = split; }; 421 - Matching = { fg = blue; style = "bold"; }; 422 - }; 423 - 424 - TS.Definition = { fg = blue; bg = brightWhite; }; 425 - EasyMotion.IncSearch = { fg = blue; style = "bold"; }; 426 - }; 427 - }
-61
config/fonts.nix
··· 1 - { pkgs, lib, ... }: 2 - 3 - let 4 - inherit (import ../nix/secrets.nix) readSecretFile; 5 - inherit (import ../nix/derivations.nix) copyFiles; 6 - 7 - inherit (lib) mkMerge mkIf optional flatten; 8 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux isDarwin; 9 - 10 - dank-mono = copyFiles "font-dank-mono" [ 11 - { 12 - target = "share/fonts/opentype/DankMono-Regular.otf"; 13 - source = readSecretFile ../assets/DankMono-Regular.otf; 14 - } 15 - { 16 - target = "share/fonts/opentype/DankMono-Italic.otf"; 17 - source = readSecretFile ../assets/DankMono-Italic.otf; 18 - } 19 - { 20 - target = "share/fonts/opentype/DankMono-Bold.otf"; 21 - source = readSecretFile ../assets/DankMono-Bold.otf; 22 - } 23 - ]; 24 - 25 - monolisa = copyFiles "font-monolisa" [ 26 - { 27 - target = "share/fonts/opentype/MonoLisa-Regular.otf"; 28 - source = readSecretFile ../assets/MonoLisa-Regular.otf; 29 - } 30 - { 31 - target = "share/fonts/opentype/MonoLisa-Bold.otf"; 32 - source = readSecretFile ../assets/MonoLisa-Bold.otf; 33 - } 34 - { 35 - target = "share/fonts/opentype/MonoLisa-BoldItalic.otf"; 36 - source = readSecretFile ../assets/MonoLisa-BoldItalic.otf; 37 - } 38 - ]; 39 - 40 - codicons = copyFiles "font-codicon" [ 41 - { 42 - target = "share/fonts/opentype/codicon.otf"; 43 - source = readSecretFile ../assets/codicon.otf; 44 - } 45 - ]; 46 - in 47 - 48 - mkMerge [ 49 - { 50 - fonts.fonts = with pkgs; flatten [ 51 - monolisa 52 - dank-mono 53 - codicons 54 - (optional isLinux emojione) 55 - ]; 56 - } 57 - 58 - (mkIf isDarwin { 59 - fonts.enableFontDir = true; 60 - }) 61 - ]
config/gpg.nix modules/gpg.nix
-10
config/home/default.nix
··· 1 - { 2 - imports = [ 3 - ./git.nix 4 - ./zsh.nix 5 - ./gpg.nix 6 - ./tmux.nix 7 - ./npmrc.nix 8 - ./wezterm/default.nix 9 - ]; 10 - }
+3 -4
config/home/git.nix home/git.nix
··· 1 - { pkgs, lib, ... }: 1 + { pkgs, lib, ... } @ inputs: 2 2 3 - let 4 - inherit (import ../../nix/secrets.nix) readSecretFileContents; 5 - in { 3 + { 6 4 programs.git = { 7 5 enable = true; 8 6 userName = "Phil Pluckthun"; ··· 32 30 recommit = "commit -a --amend --no-edit"; 33 31 pushf = "push --force-with-lease"; 34 32 glog = "log --pretty=longline --decorate --all --graph --date=relative"; 33 + journal = "!f() { git commit -a -m \"$(date +'%Y-%m-%d %H:%M:%S')\"; }; f"; 35 34 }; 36 35 37 36 extraConfig = {
-16
config/home/gpg.nix
··· 1 - let 2 - inherit (import ../../nix/secrets.nix) readSecretFile; 3 - in { 4 - home.file.".gnupg/pubring.kbx".source = 5 - readSecretFile ../../assets/pubring.kbx; 6 - home.file.".gnupg/private-keys-v1.d/75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7.key".source = 7 - readSecretFile ../../assets/75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7.key; 8 - home.file.".gnupg/private-keys-v1.d/E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6.key".source = 9 - readSecretFile ../../assets/E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6.key; 10 - home.file.".gnupg/private-keys-v1.d/CA84692E3CC846C8EC7272468E962B63FC599E49.key".source = 11 - readSecretFile ../../assets/CA84692E3CC846C8EC7272468E962B63FC599E49.key; 12 - home.file.".gnupg/sshcontrol".text = '' 13 - E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6 14 - 75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7 15 - ''; 16 - }
-14
config/home/npmrc.nix
··· 1 - let 2 - inherit (import ../../nix/secrets.nix) readSecretFileContents; 3 - in { 4 - home.file.".npmrc".text = '' 5 - update-notifier = off 6 - loglevel = warn 7 - '' + (readSecretFileContents ../../assets/npmrc); 8 - 9 - home.file.".yarnrc".text = '' 10 - disable-self-update-check true 11 - email phil@kitten.sh 12 - username philpl 13 - ''; 14 - }
+4 -4
config/home/tmux.nix home/tmux.nix
··· 1 - { lib, pkgs, ... }: 1 + { lib, pkgs, ... } @ inputs: 2 2 3 3 let 4 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux; 5 - colors = (import ../colors.nix).colors; 4 + inherit (pkgs) stdenv; 5 + inherit (import ../lib/colors.nix inputs) colors; 6 6 7 7 defaultActiveColor = colors.yellow.gui; 8 8 defaultInactiveColor = colors.brightWhite.gui; ··· 21 21 terminal = "xterm-256color"; 22 22 sensibleOnTop = false; 23 23 24 - secureSocket = isLinux; 24 + secureSocket = stdenv.hostPlatform.isLinux; 25 25 26 26 plugins = [ ]; 27 27
-12
config/home/wezterm/default.nix
··· 1 - { pkgs, ... }: 2 - 3 - let 4 - colors = (import ../../colors.nix); 5 - in { 6 - home.packages = [ pkgs.wezterm ]; 7 - 8 - xdg.configFile."wezterm/wezterm.lua".text = '' 9 - local zsh_bin = "${pkgs.zsh}/bin/zsh"; 10 - local colors = ${colors.lua}; 11 - '' + (builtins.readFile ./init.lua); 12 - }
config/home/wezterm/init.lua home/wezterm/init.lua
-1
config/home/zsh.nix home/zsh.nix
··· 8 8 enableCompletion = false; 9 9 10 10 shellAliases = { 11 - nix-encrypt = "openssl enc -e -aes-256-cbc -pbkdf2 -salt -base64 -kfile ${../../.nix-secret}"; 12 11 ls = "ls --color=auto"; 13 12 ll = "ls -l"; 14 13 wx = "wezmux";
-12
config/mysql.nix
··· 1 - { pkgs, ... }: 2 - 3 - { 4 - services.mysql = { 5 - enable = true; 6 - package = pkgs.mariadb_1010; 7 - dataDir = "/var/lib/mysql"; 8 - settings.mysqld = { 9 - bind-address = "127.0.0.1"; 10 - }; 11 - }; 12 - }
+1 -1
config/nodejs.nix modules/nodejs.nix
··· 1 - { cfg, pkgs, ... }: 1 + { pkgs, ... }: 2 2 3 3 { 4 4 environment.variables.PNPM_HOME = "$HOME/.local/share/pnpm";
-427
config/nvim/colors.nix
··· 1 - let 2 - inherit (import ../../modules/color-utils.nix) mkLuaSyntax mkVimSyntax mkVimHardlineColors mkColor mkHighlight; 3 - in rec { 4 - colors = { 5 - gutter = (mkColor "#16171d" "232" "15"); # gutter fg grey 6 - cursor = (mkColor "#2C323C" "236" "8"); # cursor grey 7 - element = (mkColor "#404449" "238" "15"); # special grey 8 - split = (mkColor "#282c34" "59" "15"); 9 - 10 - black = (mkColor "#13131a" "235" "0"); 11 - grey = (mkColor "#3E4452" "237" "15"); 12 - 13 - red = (mkColor "#ED95A8" "204" "1"); 14 - brightRed = (mkColor "#EF5350" "196" "9"); 15 - 16 - green = (mkColor "#C3E88D" "114" "2"); 17 - brightGreen = (mkColor "#C3E88D" "114" "2"); 18 - 19 - yellow = (mkColor "#FFCB6B" "180" "3"); 20 - brightYellow = (mkColor "#F78C6C" "173" "11"); # dark yellow 21 - 22 - blue = (mkColor "#82B1FF" "39" "4"); 23 - brightBlue = (mkColor "#939EDE" "39" "4"); # blue purple 24 - 25 - purple = (mkColor "#C792EA" "170" "5"); 26 - brightPurple = (mkColor "#FF45AE" "170" "5"); 27 - 28 - cyan = (mkColor "#89DDFF" "38" "6"); 29 - brightCyan = (mkColor "#20D6E3" "38" "6"); 30 - 31 - white = (mkColor "#ECEFF1" "145" "7"); 32 - brightWhite = (mkColor "#697098" "59" "15"); # comment grey 33 - darkWhite = (mkColor "#F8F8F2" "59" "15"); 34 - }; 35 - 36 - vim-hardline = mkVimHardlineColors colors; 37 - lua = mkLuaSyntax colors; 38 - 39 - vim = with colors; mkVimSyntax "theme" { 40 - # Syntax Groups (descriptions and ordering from `:h w18`) 41 - Comment = { fg = brightWhite; style = "italic"; }; 42 - Constant = { fg = cyan; }; 43 - String = { fg = green; }; 44 - Character = { fg = green; }; 45 - Number = { fg = brightYellow; }; 46 - Boolean = { fg = red; }; 47 - Float = { fg = brightYellow; }; 48 - Identifier = { fg = red; }; 49 - Function = { fg = blue; }; 50 - Statement = { fg = purple; }; 51 - Conditional = { fg = purple; }; 52 - Repeat = { fg = purple; }; 53 - Label = { fg = purple; }; 54 - Operator = { fg = cyan; }; 55 - Keyword = { fg = red; }; 56 - Exception = { fg = purple; }; 57 - PreProc = { fg = yellow; }; 58 - Include = { fg = blue; }; 59 - Define = { fg = purple; }; 60 - Macro = { fg = purple; }; 61 - PreCondit = { fg = yellow; }; 62 - Type = { fg = yellow; }; 63 - StorageClass = { fg = yellow; }; 64 - Structure = { fg = yellow; }; 65 - Typedef = { fg = yellow; }; 66 - Special = { fg = blue; }; 67 - SpecialChar = mkHighlight {}; 68 - Tag = mkHighlight {}; 69 - Delimiter = mkHighlight {}; 70 - Debug = mkHighlight {}; 71 - Ignore = mkHighlight {}; 72 - SpecialComment = { fg = brightWhite; }; 73 - Underlined = mkHighlight { style = "underline"; }; 74 - Error = { fg = brightRed; }; 75 - Todo = { fg = purple; }; 76 - 77 - # Highlighting Groups (descriptions and ordering from `:h hitest.vim`) 78 - ColorColumn = { bg = cursor; }; 79 - Conceal = mkHighlight {}; 80 - Cursor = { fg = black; bg=blue; }; 81 - CursorIM = mkHighlight {}; 82 - CursorColumn = { bg = cursor; }; 83 - CursorLine = { bg = gutter; }; 84 - Directory = { fg = blue; }; 85 - 86 - Diff = { 87 - Add = { bg = gutter; }; 88 - Change = mkHighlight {}; 89 - Delete = { fg = brightWhite; }; 90 - Text = { style = "strikethrough"; }; 91 - }; 92 - 93 - Pmenu = { 94 - base = { bg = grey; }; 95 - Sel = { fg = black; bg = blue; }; 96 - Sbar = { bg = element; }; 97 - Thumb = { bg = white; }; 98 - }; 99 - 100 - ErrorMsg = { fg = brightRed; }; 101 - WarningMsg = { fg = yellow; }; 102 - VertSplit = { fg = gutter; }; 103 - Folded = { bg = gutter; fg = brightWhite; }; 104 - FoldColumn = mkHighlight {}; 105 - SignColumn = mkHighlight {}; 106 - IncSearch = { fg = blue; style = "reverse"; }; 107 - LineNr = { fg = black; bg = black; }; 108 - CursorLineNr = { fg = brightWhite; bg = gutter; style = "bold"; }; 109 - MatchParen = { fg = blue; style = "underline"; }; 110 - ModeMsg = mkHighlight {}; 111 - MoreMsg = mkHighlight {}; 112 - NonText = { fg = element; }; 113 - Normal = { fg = darkWhite; }; 114 - Question = { fg = purple; }; 115 - Search = { fg = black; bg = yellow; }; 116 - SpecialKey = { fg = element; }; 117 - 118 - Spell = { 119 - Bad = { fg = red; style = "underline"; }; 120 - Cap = { fg = brightYellow; }; 121 - Local = { fg = brightYellow; }; 122 - Rare = { fg = brightYellow; }; 123 - }; 124 - 125 - TabLine = { 126 - base = { fg = brightWhite; }; 127 - Fill = mkHighlight {}; 128 - Sel = { fg = white; }; 129 - }; 130 - 131 - StatusLine = { fg = white; bg = cursor; }; 132 - StatusLineNC = { fg = brightWhite; }; 133 - Title = { fg = green; }; 134 - Visual = { bg = grey; }; 135 - VisualNOS = { fg = grey; }; 136 - WildMenu = { fg = black; bg = blue; }; 137 - NormalFloat = { bg = split; }; 138 - TreesitterContext = { bg = gutter; }; 139 - 140 - dockerfile.Keyword = { fg = purple; }; 141 - 142 - sh = { 143 - Set = { fg = cyan; }; 144 - SetOption = { fg = white; }; 145 - Statement = { fg = cyan; }; 146 - FunctionKey = { fg = purple; }; 147 - }; 148 - 149 - css = { 150 - AttrComma = { fg = purple; }; 151 - AttributeSelector = { fg = green; }; 152 - Braces = { fg = white; }; 153 - ClassName = { fg = brightYellow; }; 154 - ClassNameDot = { fg = brightYellow; }; 155 - Definition = { fg = purple; }; 156 - FontAttr = { fg = brightYellow; }; 157 - FontDescriptor = { fg = purple; }; 158 - FunctionName = { fg = blue; }; 159 - Identifier = { fg = blue; }; 160 - Important = { fg = purple; }; 161 - Include = { fg = white; }; 162 - IncludeKeyword = { fg = purple; }; 163 - MediaType = { fg = brightYellow; }; 164 - Prop = { fg = purple; }; 165 - PseudoClassId = { fg = brightYellow; }; 166 - SelectorOp = { fg = purple; }; 167 - SelectorOp2 = { fg = purple; }; 168 - TagName = { fg = red; }; 169 - Color = { fg = brightYellow; }; 170 - CommonAttr = { fg = blue; }; 171 - UnitDecorators = { fg = yellow; }; 172 - }; 173 - 174 - go.Declaration = { fg = purple; }; 175 - 176 - html = { 177 - Title = { fg = white; }; 178 - Arg = { fg = yellow; }; 179 - EndTag = { fg = cyan; }; 180 - Link = { fg = purple; }; 181 - SpecialChar = { fg = brightYellow; }; 182 - SpecialTagName = { fg = red; }; 183 - Tag = { fg = cyan; }; 184 - TagName = { fg = red; }; 185 - H1 = { fg = blue; }; 186 - H2 = { fg = blue; }; 187 - H3 = { fg = blue; }; 188 - H4 = { fg = blue; }; 189 - H5 = { fg = blue; }; 190 - H6 = { fg = blue; }; 191 - }; 192 - 193 - javaScript = { 194 - Braces = { fg = white; }; 195 - Function = { fg = purple; }; 196 - Identifier = { fg = purple; }; 197 - Null = { fg = brightYellow; }; 198 - Number = { fg = brightYellow; }; 199 - Require = { fg = cyan; }; 200 - Reserved = { fg = purple; }; 201 - }; 202 - 203 - # For: https://github.com/pangloss/vim-javascript 204 - js = { 205 - ArrowFunction = { fg = purple; }; 206 - ClassKeyword = { fg = purple; }; 207 - ClassDefinition = { fg = yellow; }; 208 - ClassMethodType = { fg = purple; }; 209 - ClassFuncName = { fg = blue; }; 210 - DestructuringBlock = { fg = blue; }; 211 - DocParam = { fg = blue; }; 212 - DocTags = { fg = purple; }; 213 - Export = { fg = purple; }; 214 - ExportDefault = { fg = red; }; 215 - ExtendsKeyword = { fg = purple; }; 216 - Conditional = { fg = purple; }; 217 - Operator = { fg = purple; }; 218 - From = { fg = purple; }; 219 - FuncArgs = { fg = blue; }; 220 - FuncCall = { fg = blue; }; 221 - ObjectProp = { fg = cyan; }; 222 - Function = { fg = purple; }; 223 - Generator = { fg = yellow; }; 224 - GlobalObjects = { fg = yellow; }; 225 - Import = { fg = purple; }; 226 - ModuleAs = { fg = purple; }; 227 - ModuleWords = { fg = purple; }; 228 - ModuleKeyword = { fg = blue; }; 229 - Modules = { fg = purple; }; 230 - Null = { fg = brightYellow; }; 231 - StorageClass = { fg = purple; }; 232 - Super = { fg = red; }; 233 - TemplateBraces = { fg = brightRed; }; 234 - TemplateVar = { fg = green; }; 235 - This = { fg = red; }; 236 - Undefined = { fg = brightYellow; }; 237 - }; 238 - 239 - # For: https://github.com/othree/yajs.vim 240 - javascript = { 241 - ArrowFunc = { fg = purple; }; 242 - ClassExtends = { fg = purple; }; 243 - ClassKeyword = { fg = purple; }; 244 - DocNotation = { fg = purple; }; 245 - DocParamName = { fg = blue; }; 246 - DocTags = { fg = purple; }; 247 - EndColons = { fg = white; }; 248 - Export = { fg = purple; }; 249 - FuncArg = { fg = white; }; 250 - FuncKeyword = { fg = purple; }; 251 - Identifier = { fg = red; }; 252 - Import = { fg = purple; }; 253 - MethodName = { fg = white; }; 254 - ObjectLabel = { fg = white; }; 255 - OpSymbol = { fg = cyan; }; 256 - OpSymbols = { fg = cyan; }; 257 - PropertyName = { fg = green; }; 258 - TemplateSB = { fg = brightRed; }; 259 - Variable = { fg = purple; }; 260 - }; 261 - 262 - typescript = { 263 - Identifier = { fg = red; }; 264 - Reserved = { fg = purple; }; 265 - EndColons = { fg = white; }; 266 - Braces = { fg = white; }; 267 - }; 268 - 269 - json = { 270 - CommentError = { fg = white; }; 271 - Keyword = { fg = blue; }; 272 - Boolean = { fg = red; }; 273 - Number = { fg = brightYellow; }; 274 - Quote = { fg = white; }; 275 - String = { fg = green; }; 276 - MissingCommaError = { fg = brightRed; style = "reverse"; }; 277 - NoQuotesError = { fg = brightRed; style = "reverse"; }; 278 - NumError = { fg = brightRed; style = "reverse"; }; 279 - StringSQError = { fg = brightRed; style = "reverse"; }; 280 - SemicolonError = { fg = brightRed; style = "reverse"; }; 281 - }; 282 - 283 - markdown = { 284 - Code = { fg = green; }; 285 - LinkReference = { fg = brightWhite; }; 286 - JekyllFrontMatter = { fg = brightWhite; }; 287 - CodeBlock = { fg = green; }; 288 - CodeDelimiter = { fg = green; }; 289 - HeadingDelimiter = { fg = red; }; 290 - Rule = { fg = brightWhite; }; 291 - HeadingRule = { fg = brightWhite; }; 292 - Delimiter = { fg = cyan; }; 293 - Id = { fg = purple; }; 294 - Blockquote = { fg = brightWhite; }; 295 - Italic = { fg = purple; style = "italic"; }; 296 - Bold = { fg = purple; style = "bold"; }; 297 - OrderedListMarker = { fg = red; }; 298 - IdDeclaration = { fg = blue; }; 299 - LinkDelimiter = { fg = white; }; 300 - }; 301 - 302 - mkd = { 303 - Italic = { fg = purple; style = "italic"; }; 304 - Bold = { fg = purple; style = "bold"; }; 305 - InlineURL = { fg = red; }; 306 - ListItem = { fg = yellow; }; 307 - Link = { fg = white; }; 308 - URL = { fg = red; }; 309 - }; 310 - 311 - xml = { 312 - Attrib = { fg = yellow; }; 313 - EndTag = { fg = red; }; 314 - Tag = { fg = red; }; 315 - TagName = { fg = red; }; 316 - }; 317 - 318 - php = { 319 - Include = { fg = purple; }; 320 - Class = { fg = yellow; }; 321 - Classes = { fg = yellow; }; 322 - Function = { fg = blue; }; 323 - Type = { fg = purple; }; 324 - Keyword = { fg = purple; }; 325 - VarSelector = { fg = purple; }; 326 - Identifier = { fg = white; }; 327 - Method = { fg = blue; }; 328 - Boolean = { fg = blue; }; 329 - Parent = { fg = white; }; 330 - Operator = { fg = purple; }; 331 - Region = { fg = purple; }; 332 - UseNamespaceSeparator = { fg = white; }; 333 - ClassNamespaceSeparator = { fg = white; }; 334 - DocTags = { fg = purple; style="italic"; }; 335 - DocParam = { fg = purple; style="italic"; }; 336 - }; 337 - 338 - debug = { 339 - Breakpoint = { fg = brightBlue; }; 340 - PC = { bg = brightBlue; fg = black; }; 341 - }; 342 - 343 - gitcommit = { 344 - Comment = { fg = brightWhite; }; 345 - Untracked = { fg = brightWhite; }; 346 - Discarded = { fg = brightWhite; }; 347 - Selected = { fg = brightWhite; }; 348 - Unmerged = { fg = green; }; 349 - OnBranch = mkHighlight {}; 350 - Branch = { fg = purple; }; 351 - NoBranch = { fg = purple; }; 352 - DiscardedType = { fg = red; }; 353 - SelectedType = { fg = green; }; 354 - Header = mkHighlight {}; 355 - UntrackedFile = { fg = cyan; }; 356 - DiscardedFile = { fg = red; }; 357 - SelectedFile = { fg = green; }; 358 - UntrackedArrow = { fg = cyan; }; 359 - DiscardedArrow = { fg = red; }; 360 - SelectedArrow = { fg = green; }; 361 - UnmergedFile = { fg = yellow; }; 362 - File = mkHighlight {}; 363 - Summary = { fg = white; }; 364 - Overflow = { fg = red; }; 365 - }; 366 - 367 - terminal = { 368 - background = { fg = black; }; 369 - foreground = { fg = white; }; 370 - black = { fg = black; }; 371 - red = { fg = red; }; 372 - green = { fg = green; }; 373 - yellow = { fg = yellow; }; 374 - blue = { fg = blue; }; 375 - purple = { fg = purple; }; 376 - cyan = { fg = cyan; }; 377 - white = { fg = white; }; 378 - grey = { fg = grey; }; 379 - brightRed = { fg = brightRed; }; 380 - brightGreen = { fg = brightGreen; }; 381 - brightYellow = { fg = brightYellow; }; 382 - brightBlue = { fg = brightBlue; }; 383 - brightPurple = { fg = brightPurple; }; 384 - brightCyan = { fg = brightCyan; }; 385 - brightWhite = { fg = brightWhite; }; 386 - }; 387 - 388 - GitSigns = { 389 - Add = { fg = green; }; 390 - Change = { fg = brightBlue; }; 391 - Delete = { fg = brightRed; }; 392 - }; 393 - 394 - Signify = { 395 - Add = { fg = green; }; 396 - Change = { fg = brightBlue; }; 397 - Delete = { fg = brightRed; }; 398 - }; 399 - 400 - GitGutter = { 401 - Add = { fg = green; }; 402 - Change = { fg = brightBlue; }; 403 - Delete = { fg = brightRed; }; 404 - }; 405 - 406 - Neomake = { 407 - WarningSign = { fg = yellow; }; 408 - ErrorSign = { fg = brightRed; }; 409 - InfoSign = { fg = blue; }; 410 - }; 411 - 412 - DiagnosticSign = { 413 - Warn = { fg = yellow; }; 414 - Error = { fg = brightRed; }; 415 - Information = { fg = blue; }; 416 - Hint = { fg = yellow; }; 417 - }; 418 - 419 - Telescope = { 420 - Border = { fg = split; }; 421 - Matching = { fg = blue; style = "bold"; }; 422 - }; 423 - 424 - TS.Definition = { fg = blue; bg = brightWhite; }; 425 - EasyMotion.IncSearch = { fg = blue; style = "bold"; }; 426 - }; 427 - }
+11 -22
config/nvim/default.nix modules/nvim/default.nix
··· 1 - { pkgs, fetchgit, ... }: 1 + { pkgs, ... } @ inputs: 2 2 3 3 let 4 - colors = import ../colors.nix; 5 - plugins = import ./plugins.nix { 6 - inherit (pkgs) fetchFromGitHub; 7 - inherit (pkgs.vimUtils) buildVimPluginFrom2Nix; 8 - }; 9 - 10 - my-theme = pkgs.vimUtils.buildVimPluginFrom2Nix { 11 - pname = "my-theme"; 12 - version = "2020-10-23"; 13 - src = pkgs.writeTextFile { 14 - name = "theme.vim"; 15 - text = colors.vim; 16 - destination = "/colors/theme.vim"; 17 - }; 18 - }; 4 + inherit (import ../../lib/colors.nix inputs) colors mkVimHardlineColors; 5 + inherit (import ./theme.nix inputs) my-theme; 6 + plugins = (import ./plugins.nix inputs); 19 7 20 8 initContents = " 21 9 \nlua <<EOF\n" + '' 22 10 nix_bins = { 11 + tsserver = '${pkgs.typescript-language-server}/bin/typescript-language-server', 12 + eslintls = '${pkgs.vscode-langservers-extracted}/bin/vscode-eslint-language-server', 13 + cssls = '${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server', 14 + htmlls = '${pkgs.vscode-langservers-extracted}/bin/vscode-html-language-server', 15 + jsonls = '${pkgs.vscode-langservers-extracted}/bin/vscode-json-language-server', 16 + 23 17 ripgrep = '${pkgs.ripgrep}/bin/rg', 24 - tsserver = '${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server', 25 - eslintls = '${pkgs.nodePackages.vscode-langservers-extracted}/bin/vscode-eslint-language-server', 26 - cssls = '${pkgs.nodePackages.vscode-langservers-extracted}/bin/vscode-css-language-server', 27 - htmlls = '${pkgs.nodePackages.vscode-langservers-extracted}/bin/vscode-html-language-server', 28 - jsonls = '${pkgs.nodePackages.vscode-langservers-extracted}/bin/vscode-json-language-server', 29 18 astrols = '${pkgs.nodePackages."@astrojs/language-server"}/bin/astro-ls', 30 19 rustanalyzer = '${pkgs.rust-analyzer}/bin/rust-analyzer', 31 20 zk = '${pkgs.zk}/bin/zk', 32 21 } 33 22 34 - hardline_colors = ${colors.vim-hardline} 23 + hardline_colors = ${mkVimHardlineColors colors} 35 24 '' + (builtins.readFile ./init.lua) + "\nEOF"; 36 25 in { 37 26 environment.variables = { EDITOR = "vim"; };
config/nvim/init.lua modules/nvim/init.lua
+5 -5
config/nvim/plugins.nix modules/nvim/plugins.nix
··· 1 - { 2 - fetchFromGitHub, 3 - buildVimPluginFrom2Nix, 4 - }: 1 + { pkgs, ... }: 5 2 6 - { 3 + let 4 + inherit (pkgs) fetchFromGitHub; 5 + inherit (pkgs.vimUtils) buildVimPluginFrom2Nix; 6 + in { 7 7 vim-repeat = buildVimPluginFrom2Nix { 8 8 pname = "vim-fugitive"; 9 9 version = "2022-01-25";
+3 -3
config/postgres.nix modules/postgres.nix
··· 11 11 port = 5434; 12 12 package = pkgs.postgresql_13; 13 13 dataDir = "/var/lib/postgres/13"; 14 - extraConfig = '' 15 - autovacuum = off 16 - ''; 14 + settings = { 15 + autovacuum = "off"; 16 + }; 17 17 }; 18 18 }
-35
config/shell.nix
··· 1 - { lib, pkgs, ... }: 2 - 3 - let 4 - inherit (lib) mkMerge mkForce optionalAttrs; 5 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux isDarwin; 6 - inherit (import ../nix/channels.nix) nixPath; 7 - inherit (import ../nix/secrets.nix) readSecretFileContents; 8 - in 9 - 10 - mkMerge [ 11 - { 12 - environment.systemPackages = with pkgs; [ 13 - zsh 14 - ]; 15 - 16 - environment.pathsToLink = [ "/share/zsh" ]; 17 - environment.variables = { 18 - NIX_PATH = mkForce nixPath; 19 - SHELL = "${pkgs.zsh}/bin/zsh"; 20 - }; 21 - 22 - programs.zsh = { 23 - enable = true; 24 - promptInit = lib.mkDefault ""; 25 - }; 26 - } 27 - 28 - (optionalAttrs isDarwin { 29 - environment.shells = [ pkgs.zsh ]; 30 - }) 31 - 32 - (optionalAttrs isLinux { 33 - users.defaultUserShell = pkgs.zsh; 34 - }) 35 - ]
-7
configuration.nix
··· 1 - { 2 - imports = [ 3 - ./nix/nix-path.nix 4 - ./modules/default.nix 5 - ./profiles/common.nix 6 - ]; 7 - }
+494
flake.lock
··· 1 + { 2 + "nodes": { 3 + "agenix": { 4 + "inputs": { 5 + "darwin": "darwin", 6 + "home-manager": "home-manager", 7 + "nixpkgs": "nixpkgs" 8 + }, 9 + "locked": { 10 + "lastModified": 1684153753, 11 + "narHash": "sha256-PVbWt3qrjYAK+T5KplFcO+h7aZWfEj1UtyoKlvcDxh0=", 12 + "owner": "ryantm", 13 + "repo": "agenix", 14 + "rev": "db5637d10f797bb251b94ef9040b237f4702cde3", 15 + "type": "github" 16 + }, 17 + "original": { 18 + "owner": "ryantm", 19 + "repo": "agenix", 20 + "type": "github" 21 + } 22 + }, 23 + "darwin": { 24 + "inputs": { 25 + "nixpkgs": [ 26 + "agenix", 27 + "nixpkgs" 28 + ] 29 + }, 30 + "locked": { 31 + "lastModified": 1673295039, 32 + "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", 33 + "owner": "lnl7", 34 + "repo": "nix-darwin", 35 + "rev": "87b9d090ad39b25b2400029c64825fc2a8868943", 36 + "type": "github" 37 + }, 38 + "original": { 39 + "owner": "lnl7", 40 + "ref": "master", 41 + "repo": "nix-darwin", 42 + "type": "github" 43 + } 44 + }, 45 + "darwin_2": { 46 + "inputs": { 47 + "nixpkgs": [ 48 + "nixpkgs-darwin" 49 + ] 50 + }, 51 + "locked": { 52 + "lastModified": 1687110393, 53 + "narHash": "sha256-SnkdWeZ8PZd3Dc74iFF8xiE7qDp5+z3Yps2mE79tsM0=", 54 + "owner": "lnl7", 55 + "repo": "nix-darwin", 56 + "rev": "8a5af0da9d8dab8a188436750489e304ac682085", 57 + "type": "github" 58 + }, 59 + "original": { 60 + "owner": "lnl7", 61 + "repo": "nix-darwin", 62 + "type": "github" 63 + } 64 + }, 65 + "flake-compat": { 66 + "locked": { 67 + "lastModified": 1680531544, 68 + "narHash": "sha256-8qbiDTYb1kGaDADRXTItpcMKQ1TeQVkuof6oEwHUvVA=", 69 + "owner": "nix-community", 70 + "repo": "flake-compat", 71 + "rev": "95e78dc12268c5e4878621845c511077f3798729", 72 + "type": "github" 73 + }, 74 + "original": { 75 + "owner": "nix-community", 76 + "repo": "flake-compat", 77 + "type": "github" 78 + } 79 + }, 80 + "flake-parts": { 81 + "inputs": { 82 + "nixpkgs-lib": [ 83 + "nixpkgs-wayland", 84 + "nix-eval-jobs", 85 + "nixpkgs" 86 + ] 87 + }, 88 + "locked": { 89 + "lastModified": 1685662779, 90 + "narHash": "sha256-cKDDciXGpMEjP1n6HlzKinN0H+oLmNpgeCTzYnsA2po=", 91 + "owner": "hercules-ci", 92 + "repo": "flake-parts", 93 + "rev": "71fb97f0d875fd4de4994dfb849f2c75e17eb6c3", 94 + "type": "github" 95 + }, 96 + "original": { 97 + "owner": "hercules-ci", 98 + "repo": "flake-parts", 99 + "type": "github" 100 + } 101 + }, 102 + "flake-utils": { 103 + "inputs": { 104 + "systems": "systems" 105 + }, 106 + "locked": { 107 + "lastModified": 1685518550, 108 + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", 109 + "owner": "numtide", 110 + "repo": "flake-utils", 111 + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", 112 + "type": "github" 113 + }, 114 + "original": { 115 + "owner": "numtide", 116 + "repo": "flake-utils", 117 + "type": "github" 118 + } 119 + }, 120 + "flake-utils_2": { 121 + "inputs": { 122 + "systems": "systems_2" 123 + }, 124 + "locked": { 125 + "lastModified": 1685518550, 126 + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", 127 + "owner": "numtide", 128 + "repo": "flake-utils", 129 + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", 130 + "type": "github" 131 + }, 132 + "original": { 133 + "owner": "numtide", 134 + "repo": "flake-utils", 135 + "type": "github" 136 + } 137 + }, 138 + "home-manager": { 139 + "inputs": { 140 + "nixpkgs": [ 141 + "agenix", 142 + "nixpkgs" 143 + ] 144 + }, 145 + "locked": { 146 + "lastModified": 1682203081, 147 + "narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=", 148 + "owner": "nix-community", 149 + "repo": "home-manager", 150 + "rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1", 151 + "type": "github" 152 + }, 153 + "original": { 154 + "owner": "nix-community", 155 + "repo": "home-manager", 156 + "type": "github" 157 + } 158 + }, 159 + "home-manager_2": { 160 + "inputs": { 161 + "nixpkgs": [ 162 + "nixpkgs" 163 + ] 164 + }, 165 + "locked": { 166 + "lastModified": 1687041925, 167 + "narHash": "sha256-Zfn/SphInZ9PEIHWdQk+wGQ0XGlwAgRUp/Qso+8vDOY=", 168 + "owner": "nix-community", 169 + "repo": "home-manager", 170 + "rev": "a8d549351d4b87ab80665f35e57bee2a04201245", 171 + "type": "github" 172 + }, 173 + "original": { 174 + "owner": "nix-community", 175 + "ref": "release-23.05", 176 + "repo": "home-manager", 177 + "type": "github" 178 + } 179 + }, 180 + "hyprland": { 181 + "inputs": { 182 + "hyprland-protocols": "hyprland-protocols", 183 + "nixpkgs": [ 184 + "nixpkgs" 185 + ], 186 + "wlroots": "wlroots", 187 + "xdph": "xdph" 188 + }, 189 + "locked": { 190 + "lastModified": 1685380658, 191 + "narHash": "sha256-LPih0Q//p8IurXG9kGRVGAqV4AUKVYj9xkk3sYYAj6I=", 192 + "owner": "hyprwm", 193 + "repo": "Hyprland", 194 + "rev": "51a930f802c71a0e67f05e7b176ded74e8e95f87", 195 + "type": "github" 196 + }, 197 + "original": { 198 + "owner": "hyprwm", 199 + "ref": "v0.26.0", 200 + "repo": "Hyprland", 201 + "type": "github" 202 + } 203 + }, 204 + "hyprland-protocols": { 205 + "inputs": { 206 + "nixpkgs": [ 207 + "hyprland", 208 + "nixpkgs" 209 + ] 210 + }, 211 + "locked": { 212 + "lastModified": 1681065697, 213 + "narHash": "sha256-QPzwwlGKX95tl6ZEshboZbEwwAXww6lNLdVYd6T9Mrc=", 214 + "owner": "hyprwm", 215 + "repo": "hyprland-protocols", 216 + "rev": "4d29e48433270a2af06b8bc711ca1fe5109746cd", 217 + "type": "github" 218 + }, 219 + "original": { 220 + "owner": "hyprwm", 221 + "repo": "hyprland-protocols", 222 + "type": "github" 223 + } 224 + }, 225 + "language-servers": { 226 + "inputs": { 227 + "flake-utils": [ 228 + "flake-utils" 229 + ], 230 + "nixpkgs": [ 231 + "nixpkgs" 232 + ] 233 + }, 234 + "locked": { 235 + "lastModified": 1686611059, 236 + "narHash": "sha256-4LHWWXVyMEdCYbFxPEU41VkXbLcTtSEr9ENfm80IWLo=", 237 + "ref": "refs/heads/main", 238 + "rev": "7e289d96e73c7d2038486143218b17b0292a2077", 239 + "revCount": 1, 240 + "type": "git", 241 + "url": "https://github.com/fxcl/language-servers.nix" 242 + }, 243 + "original": { 244 + "type": "git", 245 + "url": "https://github.com/fxcl/language-servers.nix" 246 + } 247 + }, 248 + "lib-aggregate": { 249 + "inputs": { 250 + "flake-utils": "flake-utils_2", 251 + "nixpkgs-lib": "nixpkgs-lib" 252 + }, 253 + "locked": { 254 + "lastModified": 1687090161, 255 + "narHash": "sha256-WeUFiVRzcm6MfqbJ91zSw6E+P5bnRvjpYxpc0XC2THI=", 256 + "owner": "nix-community", 257 + "repo": "lib-aggregate", 258 + "rev": "3ed1afb7a79ab6d2f105f72e5404e7a419004220", 259 + "type": "github" 260 + }, 261 + "original": { 262 + "owner": "nix-community", 263 + "repo": "lib-aggregate", 264 + "type": "github" 265 + } 266 + }, 267 + "nix-eval-jobs": { 268 + "inputs": { 269 + "flake-parts": "flake-parts", 270 + "nixpkgs": "nixpkgs_3" 271 + }, 272 + "locked": { 273 + "lastModified": 1686821120, 274 + "narHash": "sha256-tCdS6vvvUvg5JeFNgrq6I0COoKi6QZ8JDXorUxOf/RI=", 275 + "owner": "nix-community", 276 + "repo": "nix-eval-jobs", 277 + "rev": "8fca52c06fa2131422811bc6e1e441220cfb97d5", 278 + "type": "github" 279 + }, 280 + "original": { 281 + "owner": "nix-community", 282 + "repo": "nix-eval-jobs", 283 + "type": "github" 284 + } 285 + }, 286 + "nixpkgs": { 287 + "locked": { 288 + "lastModified": 1677676435, 289 + "narHash": "sha256-6FxdcmQr5JeZqsQvfinIMr0XcTyTuR7EXX0H3ANShpQ=", 290 + "owner": "NixOS", 291 + "repo": "nixpkgs", 292 + "rev": "a08d6979dd7c82c4cef0dcc6ac45ab16051c1169", 293 + "type": "github" 294 + }, 295 + "original": { 296 + "owner": "NixOS", 297 + "ref": "nixos-unstable", 298 + "repo": "nixpkgs", 299 + "type": "github" 300 + } 301 + }, 302 + "nixpkgs-darwin": { 303 + "locked": { 304 + "lastModified": 1687093939, 305 + "narHash": "sha256-zw9ztAI3G7ayjRFK9G18yiy4NceLZMF6QKWZC+eyWs0=", 306 + "owner": "nixos", 307 + "repo": "nixpkgs", 308 + "rev": "572d26930456132e7f2035340e3d88b36a5e9b6e", 309 + "type": "github" 310 + }, 311 + "original": { 312 + "owner": "nixos", 313 + "ref": "nixpkgs-23.05-darwin", 314 + "repo": "nixpkgs", 315 + "type": "github" 316 + } 317 + }, 318 + "nixpkgs-lib": { 319 + "locked": { 320 + "lastModified": 1687049841, 321 + "narHash": "sha256-FBNZQfWtA7bb/rwk92mfiWc85x4hXta2OAouDqO5W8w=", 322 + "owner": "nix-community", 323 + "repo": "nixpkgs.lib", 324 + "rev": "908af6d1fa3643c5818ea45aa92b21d6385fbbe5", 325 + "type": "github" 326 + }, 327 + "original": { 328 + "owner": "nix-community", 329 + "repo": "nixpkgs.lib", 330 + "type": "github" 331 + } 332 + }, 333 + "nixpkgs-unstable": { 334 + "locked": { 335 + "lastModified": 1686960236, 336 + "narHash": "sha256-AYCC9rXNLpUWzD9hm+askOfpliLEC9kwAo7ITJc4HIw=", 337 + "owner": "nixos", 338 + "repo": "nixpkgs", 339 + "rev": "04af42f3b31dba0ef742d254456dc4c14eedac86", 340 + "type": "github" 341 + }, 342 + "original": { 343 + "owner": "nixos", 344 + "ref": "nixos-unstable", 345 + "repo": "nixpkgs", 346 + "type": "github" 347 + } 348 + }, 349 + "nixpkgs-wayland": { 350 + "inputs": { 351 + "flake-compat": "flake-compat", 352 + "lib-aggregate": "lib-aggregate", 353 + "nix-eval-jobs": "nix-eval-jobs", 354 + "nixpkgs": [ 355 + "nixpkgs" 356 + ] 357 + }, 358 + "locked": { 359 + "lastModified": 1687091260, 360 + "narHash": "sha256-zrMyeg3ZS/R9S8OqkmtLjuJNMeIUUdMVr7nmeobRQ4k=", 361 + "owner": "nix-community", 362 + "repo": "nixpkgs-wayland", 363 + "rev": "b6964d30d02be53a9a6d0c1d3b6bbd76ae5a1d6d", 364 + "type": "github" 365 + }, 366 + "original": { 367 + "owner": "nix-community", 368 + "repo": "nixpkgs-wayland", 369 + "type": "github" 370 + } 371 + }, 372 + "nixpkgs_2": { 373 + "locked": { 374 + "lastModified": 1686960236, 375 + "narHash": "sha256-AYCC9rXNLpUWzD9hm+askOfpliLEC9kwAo7ITJc4HIw=", 376 + "owner": "nixos", 377 + "repo": "nixpkgs", 378 + "rev": "04af42f3b31dba0ef742d254456dc4c14eedac86", 379 + "type": "github" 380 + }, 381 + "original": { 382 + "owner": "nixos", 383 + "ref": "nixos-unstable", 384 + "repo": "nixpkgs", 385 + "type": "github" 386 + } 387 + }, 388 + "nixpkgs_3": { 389 + "locked": { 390 + "lastModified": 1686819257, 391 + "narHash": "sha256-RYrWGRd7XfaZDYy8lnrHQjSky+OaChI9UOMLmGkUgmY=", 392 + "owner": "NixOS", 393 + "repo": "nixpkgs", 394 + "rev": "66e3d3b8d9cf3ebf0d2326b8267f71fe38e7f1b8", 395 + "type": "github" 396 + }, 397 + "original": { 398 + "owner": "NixOS", 399 + "ref": "master", 400 + "repo": "nixpkgs", 401 + "type": "github" 402 + } 403 + }, 404 + "root": { 405 + "inputs": { 406 + "agenix": "agenix", 407 + "darwin": "darwin_2", 408 + "flake-utils": "flake-utils", 409 + "home-manager": "home-manager_2", 410 + "hyprland": "hyprland", 411 + "language-servers": "language-servers", 412 + "nixpkgs": "nixpkgs_2", 413 + "nixpkgs-darwin": "nixpkgs-darwin", 414 + "nixpkgs-unstable": "nixpkgs-unstable", 415 + "nixpkgs-wayland": "nixpkgs-wayland" 416 + } 417 + }, 418 + "systems": { 419 + "locked": { 420 + "lastModified": 1681028828, 421 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 422 + "owner": "nix-systems", 423 + "repo": "default", 424 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 425 + "type": "github" 426 + }, 427 + "original": { 428 + "owner": "nix-systems", 429 + "repo": "default", 430 + "type": "github" 431 + } 432 + }, 433 + "systems_2": { 434 + "locked": { 435 + "lastModified": 1681028828, 436 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 437 + "owner": "nix-systems", 438 + "repo": "default", 439 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 440 + "type": "github" 441 + }, 442 + "original": { 443 + "owner": "nix-systems", 444 + "repo": "default", 445 + "type": "github" 446 + } 447 + }, 448 + "wlroots": { 449 + "flake": false, 450 + "locked": { 451 + "host": "gitlab.freedesktop.org", 452 + "lastModified": 1682436395, 453 + "narHash": "sha256-GGEjkQO9m7YLYIXIXM76HWdhjg4Ye+oafOtyaFAYKI4=", 454 + "owner": "wlroots", 455 + "repo": "wlroots", 456 + "rev": "6830bfc17fd94709e2cdd4da0af989f102a26e59", 457 + "type": "gitlab" 458 + }, 459 + "original": { 460 + "host": "gitlab.freedesktop.org", 461 + "owner": "wlroots", 462 + "repo": "wlroots", 463 + "type": "gitlab" 464 + } 465 + }, 466 + "xdph": { 467 + "inputs": { 468 + "hyprland-protocols": [ 469 + "hyprland", 470 + "hyprland-protocols" 471 + ], 472 + "nixpkgs": [ 473 + "hyprland", 474 + "nixpkgs" 475 + ] 476 + }, 477 + "locked": { 478 + "lastModified": 1682439384, 479 + "narHash": "sha256-zHDa8LCZs05TZHQSIZ3ucwyMPglBGHcqTBzfkLjYXTM=", 480 + "owner": "hyprwm", 481 + "repo": "xdg-desktop-portal-hyprland", 482 + "rev": "c0e233955568fbea4e859336f6d3d14d51294d7c", 483 + "type": "github" 484 + }, 485 + "original": { 486 + "owner": "hyprwm", 487 + "repo": "xdg-desktop-portal-hyprland", 488 + "type": "github" 489 + } 490 + } 491 + }, 492 + "root": "root", 493 + "version": 7 494 + }
+59
flake.nix
··· 1 + { 2 + nixConfig = { 3 + experimental-features = [ "nix-command" "flakes" ]; 4 + }; 5 + 6 + inputs = { 7 + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 8 + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; 9 + nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-23.05-darwin"; 10 + 11 + agenix.url = "github:ryantm/agenix"; 12 + 13 + flake-utils.url = "github:numtide/flake-utils"; 14 + 15 + home-manager = { 16 + url = "github:nix-community/home-manager/release-23.05"; 17 + inputs.nixpkgs.follows = "nixpkgs"; 18 + }; 19 + 20 + darwin = { 21 + url = "github:lnl7/nix-darwin"; 22 + inputs.nixpkgs.follows = "nixpkgs-darwin"; 23 + }; 24 + 25 + hyprland = { 26 + url = "github:hyprwm/Hyprland/v0.26.0"; 27 + inputs.nixpkgs.follows = "nixpkgs"; 28 + }; 29 + 30 + nixpkgs-wayland = { 31 + url = "github:nix-community/nixpkgs-wayland"; 32 + inputs.nixpkgs.follows = "nixpkgs"; 33 + }; 34 + 35 + language-servers = { 36 + url = "git+https://github.com/fxcl/language-servers.nix"; 37 + inputs = { 38 + nixpkgs.follows = "nixpkgs"; 39 + flake-utils.follows = "flake-utils"; 40 + }; 41 + }; 42 + }; 43 + 44 + outputs = inputs: let 45 + inherit (import ./lib/system.nix inputs) mkSystem; 46 + 47 + overlays = [ 48 + (self: super: { 49 + inherit (inputs.language-servers.packages.${self.system}) typescript-language-server vscode-langservers-extracted; 50 + }) 51 + ]; 52 + in { 53 + darwinConfigurations."sprite" = mkSystem { 54 + inherit overlays; 55 + system = "aarch64-darwin"; 56 + hostname = "sprite"; 57 + }; 58 + }; 59 + }
+13
home/default.nix
··· 1 + { ... }: 2 + 3 + { 4 + imports = [ 5 + ./secrets.nix 6 + ./git.nix 7 + ./zsh.nix 8 + ./tmux.nix 9 + ./wezterm 10 + ./npm 11 + ./gpg 12 + ]; 13 + }
+32
home/gpg/default.nix
··· 1 + { config, pkgs, ... } @ inputs: 2 + 3 + { 4 + age.secrets."pubring.kbx" = { 5 + symlink = true; 6 + path = "${config.home.homeDirectory}/.gnupg/pubring.kbx"; 7 + file = ./encrypt/pubring.kbx.age; 8 + }; 9 + 10 + age.secrets."75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7.key" = { 11 + symlink = true; 12 + path = "${config.home.homeDirectory}/.gnupg/private-keys-v1.d/75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7.key"; 13 + file = ./encrypt/75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7.key.age; 14 + }; 15 + 16 + age.secrets."E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6.key" = { 17 + symlink = true; 18 + path = "${config.home.homeDirectory}/.gnupg/private-keys-v1.d/E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6.key"; 19 + file = ./encrypt/E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6.key.age; 20 + }; 21 + 22 + age.secrets."CA84692E3CC846C8EC7272468E962B63FC599E49.key" = { 23 + symlink = true; 24 + path = "${config.home.homeDirectory}/.gnupg/private-keys-v1.d/CA84692E3CC846C8EC7272468E962B63FC599E49.key"; 25 + file = ./encrypt/CA84692E3CC846C8EC7272468E962B63FC599E49.key.age; 26 + }; 27 + 28 + home.file.".gnupg/sshcontrol".text = '' 29 + E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6 30 + 75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7 31 + ''; 32 + }
home/gpg/encrypt/75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7.key.age

This is a binary file and will not be displayed.

home/gpg/encrypt/CA84692E3CC846C8EC7272468E962B63FC599E49.key.age

This is a binary file and will not be displayed.

home/gpg/encrypt/E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6.key.age

This is a binary file and will not be displayed.

home/gpg/encrypt/pubring.kbx.age

This is a binary file and will not be displayed.

+17
home/npm/default.nix
··· 1 + { config, ... } @ inputs: 2 + 3 + let 4 + inherit (import ../../lib/secrets.nix inputs) readSecretFileContents; 5 + in { 6 + age.secrets."npmrc" = { 7 + symlink = true; 8 + path = "${config.home.homeDirectory}/.npmrc"; 9 + file = ./encrypt/npmrc.age; 10 + }; 11 + 12 + home.file.".yarnrc".text = '' 13 + disable-self-update-check true 14 + email phil@kitten.sh 15 + username philpl 16 + ''; 17 + }
+9
home/npm/encrypt/npmrc.age
··· 1 + age-encryption.org/v1 2 + -> ssh-ed25519 QwbpPw HFxtYuBgoGIC+jMdwR0RoPat5ZPYFmBeuW6YsDR6gBk 3 + 47ZgT0KHE9/pBBfcNoowTYpEpK4CRwQ6jKYhXPET3P0 4 + -> 3#-grease E|S' T : \7mw<QvZ 5 + C56j3YvaVZpmFVw29rAK6zQEQlt5dgDnlYA2UtmlkHAtmZEmAVtkr7P6xIZfI/LU 6 + Ypi52RsrdVl8SswbmI0693RVzgyrqLgb88aBWXrdBKihwc6iHAl0SRhZyzBQSeSA 7 + 2Q 8 + --- xHgvFD9SRYAfRuXsx7xIxro8gMBHR0F1ghehZ0Uq9uQ 9 + 9 ����P�zPh]Sd^x��=�����}Zr�-$��6XK5v��x�'�,�Ly���GH�Qu�sj���r1��愲<�ס���o]^�M�(�J�C�A>^͚|I`�a���\J=@���L�˽�}�"�Q&��ْ�y)j��
+7
home/secrets.nix
··· 1 + { config, ... }: 2 + 3 + { 4 + age = { 5 + identityPaths = ["/var/lib/persistent/agenix"]; 6 + }; 7 + }
+12
home/wezterm/default.nix
··· 1 + { pkgs, ... } @ inputs: 2 + 3 + let 4 + inherit (import ../../lib/colors.nix inputs) colors mkLuaSyntax; 5 + in { 6 + home.packages = [ pkgs.wezterm ]; 7 + 8 + xdg.configFile."wezterm/wezterm.lua".text = '' 9 + local zsh_bin = "${pkgs.zsh}/bin/zsh"; 10 + local colors = ${mkLuaSyntax colors}; 11 + '' + (builtins.readFile ./init.lua); 12 + }
+72
lib/system.nix
··· 1 + { agenix, nixpkgs, darwin, home-manager, ... } @ inputs: 2 + 3 + let 4 + inherit (nixpkgs) lib; 5 + in { 6 + mkSystem = { system, hostname, user ? "phil", overlays }: let 7 + inherit (lib.systems.elaborate { inherit system; }) isDarwin; 8 + lib = (import nixpkgs { inherit overlays system; }).lib; 9 + modules = [ 10 + ../machines/common.nix 11 + ../machines/${hostname}/configuration.nix 12 + ../modules/default.nix 13 + ({ config, ... }: { 14 + nixpkgs = { 15 + inherit overlays; 16 + config.allowUnfree = true; 17 + }; 18 + 19 + age.identityPaths = ["/var/lib/persistent/agenix"]; 20 + networking.hostName = hostname; 21 + nix.extraOptions = "extra-experimental-features = nix-command flakes"; 22 + }) 23 + ]; 24 + home = { ... }: { 25 + manual.manpages.enable = false; 26 + home.stateVersion = "23.05"; 27 + xdg.enable = true; 28 + age.identityPaths = ["/var/lib/persistent/agenix"]; 29 + imports = [ 30 + agenix.homeManagerModules.default 31 + ../home/default.nix 32 + ../machines/${hostname}/home.nix 33 + ]; 34 + }; 35 + specialArgs = inputs // { 36 + inherit hostname user; 37 + }; 38 + in if isDarwin then ( 39 + darwin.lib.darwinSystem { 40 + inherit system lib; 41 + inputs = specialArgs; 42 + modules = modules ++ [ 43 + agenix.darwinModules.default 44 + home-manager.darwinModules.home-manager { 45 + home-manager.useGlobalPkgs = true; 46 + home-manager.useUserPackages = true; 47 + home-manager.users."${user}" = home; 48 + } 49 + ({ pkgs, ... }: { 50 + environment.shells = [pkgs.zsh]; 51 + users.users."${user}".home = "/Users/${user}"; 52 + }) 53 + ]; 54 + } 55 + ) else ( 56 + nixpkgs.lib.nixosSystem { 57 + inherit system specialArgs lib; 58 + modules = modules ++ [ 59 + agenix.nixosModules.default 60 + home-manager.nixosModules.home-manager { 61 + home-manager.useGlobalPkgs = true; 62 + home-manager.useUserPackages = true; 63 + home-manager.users."${user}" = home; 64 + } 65 + ({ pkgs, ... }: { 66 + users.defaultUserShell = pkgs.zsh; 67 + users.users."${user}".home = "/home/${user}"; 68 + }) 69 + ]; 70 + } 71 + ); 72 + }
+3
machines/common.nix
··· 1 + { ... }: { 2 + 3 + }
+64
machines/sprite/configuration.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + imports = [ 5 + ../../modules/services/mysql.nix 6 + ]; 7 + 8 + system.stateVersion = 4; 9 + # Disable path verification of $NIX_PATH 10 + system.checks.verifyNixPath = false; 11 + # Auto upgrade nix package and the daemon service. 12 + services.nix-daemon.enable = true; 13 + # Auto-configure build users 14 + nix.configureBuildUsers = true; 15 + # Disable documentation until https://github.com/LnL7/nix-darwin/issues/217 is fixed. 16 + documentation.enable = false; 17 + 18 + # Use built-in TouchID PAM 19 + security.pam.enableSudoTouchIdAuth = true; 20 + 21 + system = { 22 + keyboard = { 23 + enableKeyMapping = true; 24 + remapCapsLockToControl = true; 25 + nonUS.remapTilde = true; 26 + }; 27 + 28 + defaults = { 29 + finder.CreateDesktop = false; 30 + screencapture.location = "~/Screenshots"; 31 + loginwindow = { 32 + GuestEnabled = false; 33 + DisableConsoleAccess = true; 34 + }; 35 + dock = { 36 + autohide = true; 37 + tilesize = 46; 38 + }; 39 + NSGlobalDomain = { 40 + AppleShowAllExtensions = true; 41 + InitialKeyRepeat = 10; 42 + KeyRepeat = 2; 43 + }; 44 + }; 45 + }; 46 + 47 + environment.systemPackages = with pkgs; [ 48 + coreutils 49 + openssl 50 + imagemagick 51 + ffmpeg 52 + pngquant 53 + ripgrep 54 + xh 55 + curl 56 + sd 57 + fd 58 + cloudflared 59 + woff2 60 + temporal 61 + dive 62 + caddy 63 + ]; 64 + }
+1
machines/sprite/home.nix
··· 1 + { ... }: {}
+37 -4
modules/color-utils.nix lib/colors.nix
··· 1 + { lib, ... }: 2 + 1 3 let 2 - inherit (import ../nix/channels.nix) __nixPath nixPath; 3 - lib = import <nixpkgs/lib>; 4 - 5 4 inherit (lib.strings) concatStrings; 6 5 inherit (lib.attrsets) mapAttrsToList; 7 6 inherit (lib.lists) last init; 8 7 inherit (builtins) hasAttr isAttrs length head concatStringsSep; 8 + 9 + mkColor = gui: cterm: cterm16: { gui=gui; cterm=cterm; cterm16=cterm16; }; 9 10 in rec { 10 - mkColor = gui: cterm: cterm16: { gui=gui; cterm=cterm; cterm16=cterm16; }; 11 + colors = { 12 + gutter = (mkColor "#16171d" "232" "15"); # gutter fg grey 13 + cursor = (mkColor "#2C323C" "236" "8"); # cursor grey 14 + element = (mkColor "#404449" "238" "15"); # special grey 15 + split = (mkColor "#282c34" "59" "15"); 16 + 17 + black = (mkColor "#13131a" "235" "0"); 18 + grey = (mkColor "#3E4452" "237" "15"); 19 + 20 + red = (mkColor "#ED95A8" "204" "1"); 21 + brightRed = (mkColor "#EF5350" "196" "9"); 22 + 23 + green = (mkColor "#C3E88D" "114" "2"); 24 + brightGreen = (mkColor "#C3E88D" "114" "2"); 25 + 26 + yellow = (mkColor "#FFCB6B" "180" "3"); 27 + brightYellow = (mkColor "#F78C6C" "173" "11"); # dark yellow 28 + 29 + blue = (mkColor "#82B1FF" "39" "4"); 30 + brightBlue = (mkColor "#939EDE" "39" "4"); # blue purple 31 + 32 + purple = (mkColor "#C792EA" "170" "5"); 33 + brightPurple = (mkColor "#FF45AE" "170" "5"); 34 + 35 + cyan = (mkColor "#89DDFF" "38" "6"); 36 + brightCyan = (mkColor "#20D6E3" "38" "6"); 37 + 38 + white = (mkColor "#ECEFF1" "145" "7"); 39 + brightWhite = (mkColor "#697098" "59" "15"); # comment grey 40 + darkWhite = (mkColor "#F8F8F2" "59" "15"); 41 + }; 42 + 11 43 transparent = (mkColor "NONE" "NONE" "0"); 44 + 12 45 mkHighlight = { fg ? transparent, bg ? transparent, style ? "NONE" }: { fg=fg; bg=bg; style=style; }; 13 46 mkVimHighlight = group: { fg ? transparent, bg ? transparent, style ? "NONE" }: 14 47 "highlight ${group} guifg=${fg.gui} guibg=${bg.gui} gui=${style} ctermfg=${fg.cterm} ctermbg=${bg.cterm} cterm=${style}";
-20
modules/darwin.nix
··· 1 - { options, pkgs, ... }: 2 - 3 - { 4 - system.stateVersion = 3; 5 - # Disable path verification of $NIX_PATH 6 - system.checks.verifyNixPath = false; 7 - # Auto upgrade nix package and the daemon service. 8 - services.nix-daemon.enable = true; 9 - # Auto-configure build users 10 - users.nix.configureBuildUsers = true; 11 - # Manage Nix package via channels 12 - nix.package = pkgs.nix; 13 - # Disable documentation until https://github.com/LnL7/nix-darwin/issues/217 is fixed. 14 - documentation.enable = false; 15 - # Ensure aarch64 is selected as the default 16 - nix.extraOptions = '' 17 - system = aarch64-darwin 18 - extra-platforms = aarch64-darwin x86_64-darwin 19 - ''; 20 - }
+10 -9
modules/default.nix
··· 1 - { pkgs, lib, ... }: 1 + { ... }: 2 2 3 - let 4 - inherit (lib) optional flatten; 5 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux isDarwin; 6 - in { 7 - imports = flatten [ 8 - ./home-manager.nix 9 - (optional isDarwin ./darwin.nix) 10 - (optional isDarwin ./mysql.nix) 3 + { 4 + imports = [ 5 + ./shell.nix 6 + ./nodejs.nix 7 + ./postgres.nix 8 + ./mysql.nix 9 + ./gpg.nix 10 + ./nvim 11 + ./fonts 11 12 ]; 12 13 }
+40
modules/fonts/default.nix
··· 1 + { config, pkgs, lib, ... } @ inputs: 2 + 3 + let 4 + inherit (pkgs) stdenv; 5 + 6 + symlink = stdenv.hostPlatform.isLinux; 7 + 8 + fontsDir = if stdenv.hostPlatform.isDarwin then 9 + "/Library/Fonts" else "/share/fonts/opentype"; 10 + in 11 + 12 + { 13 + age.secrets."DankMono-Regular.otf" = { 14 + inherit symlink; 15 + file = ./encrypt/DankMono-Regular.otf.age; 16 + path = "${fontsDir}/DankMono-Regular.otf"; 17 + mode = "755"; 18 + }; 19 + 20 + age.secrets."DankMono-Italic.otf" = { 21 + inherit symlink; 22 + file = ./encrypt/DankMono-Italic.otf.age; 23 + path = "${fontsDir}/DankMono-Italic.otf"; 24 + mode = "755"; 25 + }; 26 + 27 + age.secrets."DankMono-Bold.otf" = { 28 + inherit symlink; 29 + file = ./encrypt/DankMono-Bold.otf.age; 30 + path = "${fontsDir}/DankMono-Bold.otf"; 31 + mode = "755"; 32 + }; 33 + 34 + age.secrets."codicon.otf" = { 35 + inherit symlink; 36 + file = ./encrypt/codicon.otf.age; 37 + path = "${fontsDir}/codicon.otf"; 38 + mode = "755"; 39 + }; 40 + }
modules/fonts/encrypt/DankMono-Bold.otf.age

This is a binary file and will not be displayed.

modules/fonts/encrypt/DankMono-Italic.otf.age

This is a binary file and will not be displayed.

modules/fonts/encrypt/DankMono-Regular.otf.age

This is a binary file and will not be displayed.

modules/fonts/encrypt/codicon.otf.age

This is a binary file and will not be displayed.

-12
modules/home-manager.nix
··· 1 - { lib, ... }: 2 - 3 - let 4 - inherit (lib) optional flatten; 5 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux isDarwin; 6 - inherit (import ../nix/channels.nix) __nixPath nixPath; 7 - in { 8 - imports = flatten [ 9 - (optional isDarwin <home-manager/nix-darwin>) 10 - (optional isLinux <home-manager/nixos>) 11 - ]; 12 - }
+7 -155
modules/mysql.nix
··· 1 - { config, lib, pkgs, ... }: 2 - 3 - with lib; 4 - 5 - let 6 - cfg = config.services.mysql; 7 - 8 - isMariaDB = lib.getName cfg.package == lib.getName pkgs.mariadb; 9 - 10 - mysqldOptions = 11 - "--defaults-file=${configFile} --datadir=${cfg.dataDir} --basedir=${cfg.package}"; 12 - 13 - format = pkgs.formats.ini { listsAsDuplicateKeys = true; }; 14 - configFile = format.generate "my.cnf" cfg.settings; 15 - 16 - preStart = if isMariaDB then '' 17 - if ! test -e ${cfg.dataDir}/mysql_init; then 18 - ${cfg.package}/bin/mysql_install_db ${mysqldOptions} 19 - touch ${cfg.dataDir}/mysql_init 20 - fi 21 - '' else '' 22 - if ! test -e ${cfg.dataDir}/mysql_init; then 23 - ${cfg.package}/bin/mysqld ${mysqldOptions} --initialize-insecure 24 - touch ${cfg.dataDir}/mysql_init 25 - fi 26 - ''; 27 - in 1 + { pkgs, ... }: 28 2 29 3 { 30 - options = { 31 - 32 - services.mysql = { 33 - 34 - enable = mkEnableOption (lib.mdDoc "MySQL server"); 35 - 36 - package = mkOption { 37 - type = types.package; 38 - example = literalExpression "pkgs.mariadb"; 39 - description = lib.mdDoc '' 40 - Which MySQL derivation to use. MariaDB packages are supported too. 41 - ''; 42 - }; 43 - 44 - dataDir = mkOption { 45 - type = types.path; 46 - example = "/var/lib/mysql"; 47 - description = lib.mdDoc '' 48 - The data directory for MySQL. 49 - 50 - ::: {.note} 51 - If left as the default value of `/var/lib/mysql` this directory will automatically be created before the MySQL 52 - server starts, otherwise you are responsible for ensuring the directory exists with appropriate ownership and permissions. 53 - ::: 54 - ''; 55 - }; 56 - 57 - configFile = mkOption { 58 - type = types.path; 59 - default = configFile; 60 - defaultText = '' 61 - A configuration file automatically generated by NixOS. 62 - ''; 63 - description = lib.mdDoc '' 64 - Override the configuration file used by MySQL. By default, 65 - NixOS generates one automatically from {option}`services.mysql.settings`. 66 - ''; 67 - example = literalExpression '' 68 - pkgs.writeText "my.cnf" ''' 69 - [mysqld] 70 - datadir = /var/lib/mysql 71 - bind-address = 127.0.0.1 72 - port = 3336 73 - 74 - !includedir /etc/mysql/conf.d/ 75 - '''; 76 - ''; 77 - }; 78 - 79 - settings = mkOption { 80 - type = format.type; 81 - default = {}; 82 - description = lib.mdDoc '' 83 - MySQL configuration. Refer to 84 - <https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html>, 85 - <https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html>, 86 - and <https://mariadb.com/kb/en/server-system-variables/> 87 - for details on supported values. 88 - 89 - ::: {.note} 90 - MySQL configuration options such as `--quick` should be treated as 91 - boolean options and provided values such as `true`, `false`, 92 - `1`, or `0`. See the provided example below. 93 - ::: 94 - ''; 95 - example = literalExpression '' 96 - { 97 - mysqld = { 98 - key_buffer_size = "6G"; 99 - table_cache = 1600; 100 - log-error = "/var/log/mysql_err.log"; 101 - plugin-load-add = [ "server_audit" "ed25519=auth_ed25519" ]; 102 - }; 103 - mysqldump = { 104 - quick = true; 105 - max_allowed_packet = "16M"; 106 - }; 107 - } 108 - ''; 109 - }; 4 + services.mysql = { 5 + enable = true; 6 + package = pkgs.mariadb_1010; 7 + dataDir = "/var/lib/mysql"; 8 + settings.mysqld = { 9 + bind-address = "127.0.0.1"; 110 10 }; 111 11 }; 112 - 113 - 114 - ###### implementation 115 - 116 - config = mkIf cfg.enable { 117 - 118 - services.mysql.dataDir = 119 - mkDefault (if versionAtLeast config.system.stateVersion "17.09" then "/var/lib/mysql" 120 - else "/var/mysql"); 121 - 122 - services.mysql.settings.mysqld = mkMerge [ 123 - { 124 - datadir = cfg.dataDir; 125 - port = mkDefault 3306; 126 - } 127 - (mkIf (!isMariaDB) { 128 - plugin-load-add = "auth_socket.so"; 129 - }) 130 - ]; 131 - 132 - environment.systemPackages = [ cfg.package ]; 133 - environment.etc."my.cnf".source = cfg.configFile; 134 - 135 - launchd.user.agents.mysql = { 136 - path = [ cfg.package ]; 137 - 138 - script = '' 139 - ${preStart} 140 - exec ${cfg.package}/bin/mysqld ${mysqldOptions} 141 - ''; 142 - 143 - serviceConfig.KeepAlive = true; 144 - serviceConfig.RunAtLoad = true; 145 - }; 146 - 147 - system.activationScripts.postActivation.text = '' 148 - if [ ! -d "${cfg.dataDir}" ]; then 149 - mkdir -p "${cfg.dataDir}" 150 - chmod -R 777 "${cfg.dataDir}" 151 - fi 152 - 153 - if [ ! -d "/run/mysqld" ]; then 154 - mkdir -p "/run/mysqld" 155 - chmod -R 777 "/run/mysqld" 156 - fi 157 - ''; 158 - }; 159 12 } 160 -
+402
modules/nvim/theme.nix
··· 1 + { pkgs, ... } @ inputs: 2 + 3 + let 4 + inherit (import ../../lib/colors.nix inputs) colors mkVimSyntax mkHighlight; 5 + in { 6 + my-theme = pkgs.vimUtils.buildVimPluginFrom2Nix { 7 + pname = "my-theme"; 8 + version = "2020-10-23"; 9 + src = pkgs.writeTextFile { 10 + name = "theme.vim"; 11 + destination = "/colors/theme.vim"; 12 + text = with colors; mkVimSyntax "theme" { 13 + # Syntax Groups (descriptions and ordering from `:h w18`) 14 + Comment = { fg = brightWhite; style = "italic"; }; 15 + Constant = { fg = cyan; }; 16 + String = { fg = green; }; 17 + Character = { fg = green; }; 18 + Number = { fg = brightYellow; }; 19 + Boolean = { fg = red; }; 20 + Float = { fg = brightYellow; }; 21 + Identifier = { fg = red; }; 22 + Function = { fg = blue; }; 23 + Statement = { fg = purple; }; 24 + Conditional = { fg = purple; }; 25 + Repeat = { fg = purple; }; 26 + Label = { fg = purple; }; 27 + Operator = { fg = cyan; }; 28 + Keyword = { fg = red; }; 29 + Exception = { fg = purple; }; 30 + PreProc = { fg = yellow; }; 31 + Include = { fg = blue; }; 32 + Define = { fg = purple; }; 33 + Macro = { fg = purple; }; 34 + PreCondit = { fg = yellow; }; 35 + Type = { fg = yellow; }; 36 + StorageClass = { fg = yellow; }; 37 + Structure = { fg = yellow; }; 38 + Typedef = { fg = yellow; }; 39 + Special = { fg = blue; }; 40 + SpecialChar = mkHighlight {}; 41 + Tag = mkHighlight {}; 42 + Delimiter = mkHighlight {}; 43 + Debug = mkHighlight {}; 44 + Ignore = mkHighlight {}; 45 + SpecialComment = { fg = brightWhite; }; 46 + Underlined = mkHighlight { style = "underline"; }; 47 + Error = { fg = brightRed; }; 48 + Todo = { fg = purple; }; 49 + 50 + # Highlighting Groups (descriptions and ordering from `:h hitest.vim`) 51 + ColorColumn = { bg = cursor; }; 52 + Conceal = mkHighlight {}; 53 + Cursor = { fg = black; bg=blue; }; 54 + CursorIM = mkHighlight {}; 55 + CursorColumn = { bg = cursor; }; 56 + CursorLine = { bg = gutter; }; 57 + Directory = { fg = blue; }; 58 + 59 + Diff = { 60 + Add = { bg = gutter; }; 61 + Change = mkHighlight {}; 62 + Delete = { fg = brightWhite; }; 63 + Text = { style = "strikethrough"; }; 64 + }; 65 + 66 + Pmenu = { 67 + base = { bg = grey; }; 68 + Sel = { fg = black; bg = blue; }; 69 + Sbar = { bg = element; }; 70 + Thumb = { bg = white; }; 71 + }; 72 + 73 + ErrorMsg = { fg = brightRed; }; 74 + WarningMsg = { fg = yellow; }; 75 + VertSplit = { fg = gutter; }; 76 + Folded = { bg = gutter; fg = brightWhite; }; 77 + FoldColumn = mkHighlight {}; 78 + SignColumn = mkHighlight {}; 79 + IncSearch = { fg = blue; style = "reverse"; }; 80 + LineNr = { fg = black; bg = black; }; 81 + CursorLineNr = { fg = brightWhite; bg = gutter; style = "bold"; }; 82 + MatchParen = { fg = blue; style = "underline"; }; 83 + ModeMsg = mkHighlight {}; 84 + MoreMsg = mkHighlight {}; 85 + NonText = { fg = element; }; 86 + Normal = { fg = darkWhite; }; 87 + Question = { fg = purple; }; 88 + Search = { fg = black; bg = yellow; }; 89 + SpecialKey = { fg = element; }; 90 + 91 + Spell = { 92 + Bad = { fg = red; style = "underline"; }; 93 + Cap = { fg = brightYellow; }; 94 + Local = { fg = brightYellow; }; 95 + Rare = { fg = brightYellow; }; 96 + }; 97 + 98 + TabLine = { 99 + base = { fg = brightWhite; }; 100 + Fill = mkHighlight {}; 101 + Sel = { fg = white; }; 102 + }; 103 + 104 + StatusLine = { fg = white; bg = cursor; }; 105 + StatusLineNC = { fg = brightWhite; }; 106 + Title = { fg = green; }; 107 + Visual = { bg = grey; }; 108 + VisualNOS = { fg = grey; }; 109 + WildMenu = { fg = black; bg = blue; }; 110 + NormalFloat = { bg = split; }; 111 + TreesitterContext = { bg = gutter; }; 112 + 113 + dockerfile.Keyword = { fg = purple; }; 114 + 115 + sh = { 116 + Set = { fg = cyan; }; 117 + SetOption = { fg = white; }; 118 + Statement = { fg = cyan; }; 119 + FunctionKey = { fg = purple; }; 120 + }; 121 + 122 + css = { 123 + AttrComma = { fg = purple; }; 124 + AttributeSelector = { fg = green; }; 125 + Braces = { fg = white; }; 126 + ClassName = { fg = brightYellow; }; 127 + ClassNameDot = { fg = brightYellow; }; 128 + Definition = { fg = purple; }; 129 + FontAttr = { fg = brightYellow; }; 130 + FontDescriptor = { fg = purple; }; 131 + FunctionName = { fg = blue; }; 132 + Identifier = { fg = blue; }; 133 + Important = { fg = purple; }; 134 + Include = { fg = white; }; 135 + IncludeKeyword = { fg = purple; }; 136 + MediaType = { fg = brightYellow; }; 137 + Prop = { fg = purple; }; 138 + PseudoClassId = { fg = brightYellow; }; 139 + SelectorOp = { fg = purple; }; 140 + SelectorOp2 = { fg = purple; }; 141 + TagName = { fg = red; }; 142 + Color = { fg = brightYellow; }; 143 + CommonAttr = { fg = blue; }; 144 + UnitDecorators = { fg = yellow; }; 145 + }; 146 + 147 + go.Declaration = { fg = purple; }; 148 + 149 + html = { 150 + Title = { fg = white; }; 151 + Arg = { fg = yellow; }; 152 + EndTag = { fg = cyan; }; 153 + Link = { fg = purple; }; 154 + SpecialChar = { fg = brightYellow; }; 155 + SpecialTagName = { fg = red; }; 156 + Tag = { fg = cyan; }; 157 + TagName = { fg = red; }; 158 + H1 = { fg = blue; }; 159 + H2 = { fg = blue; }; 160 + H3 = { fg = blue; }; 161 + H4 = { fg = blue; }; 162 + H5 = { fg = blue; }; 163 + H6 = { fg = blue; }; 164 + }; 165 + 166 + javaScript = { 167 + Braces = { fg = white; }; 168 + Function = { fg = purple; }; 169 + Identifier = { fg = purple; }; 170 + Null = { fg = brightYellow; }; 171 + Number = { fg = brightYellow; }; 172 + Require = { fg = cyan; }; 173 + Reserved = { fg = purple; }; 174 + }; 175 + 176 + # For: https://github.com/pangloss/vim-javascript 177 + js = { 178 + ArrowFunction = { fg = purple; }; 179 + ClassKeyword = { fg = purple; }; 180 + ClassDefinition = { fg = yellow; }; 181 + ClassMethodType = { fg = purple; }; 182 + ClassFuncName = { fg = blue; }; 183 + DestructuringBlock = { fg = blue; }; 184 + DocParam = { fg = blue; }; 185 + DocTags = { fg = purple; }; 186 + Export = { fg = purple; }; 187 + ExportDefault = { fg = red; }; 188 + ExtendsKeyword = { fg = purple; }; 189 + Conditional = { fg = purple; }; 190 + Operator = { fg = purple; }; 191 + From = { fg = purple; }; 192 + FuncArgs = { fg = blue; }; 193 + FuncCall = { fg = blue; }; 194 + ObjectProp = { fg = cyan; }; 195 + Function = { fg = purple; }; 196 + Generator = { fg = yellow; }; 197 + GlobalObjects = { fg = yellow; }; 198 + Import = { fg = purple; }; 199 + ModuleAs = { fg = purple; }; 200 + ModuleWords = { fg = purple; }; 201 + ModuleKeyword = { fg = blue; }; 202 + Modules = { fg = purple; }; 203 + Null = { fg = brightYellow; }; 204 + StorageClass = { fg = purple; }; 205 + Super = { fg = red; }; 206 + TemplateBraces = { fg = brightRed; }; 207 + TemplateVar = { fg = green; }; 208 + This = { fg = red; }; 209 + Undefined = { fg = brightYellow; }; 210 + }; 211 + 212 + # For: https://github.com/othree/yajs.vim 213 + javascript = { 214 + ArrowFunc = { fg = purple; }; 215 + ClassExtends = { fg = purple; }; 216 + ClassKeyword = { fg = purple; }; 217 + DocNotation = { fg = purple; }; 218 + DocParamName = { fg = blue; }; 219 + DocTags = { fg = purple; }; 220 + EndColons = { fg = white; }; 221 + Export = { fg = purple; }; 222 + FuncArg = { fg = white; }; 223 + FuncKeyword = { fg = purple; }; 224 + Identifier = { fg = red; }; 225 + Import = { fg = purple; }; 226 + MethodName = { fg = white; }; 227 + ObjectLabel = { fg = white; }; 228 + OpSymbol = { fg = cyan; }; 229 + OpSymbols = { fg = cyan; }; 230 + PropertyName = { fg = green; }; 231 + TemplateSB = { fg = brightRed; }; 232 + Variable = { fg = purple; }; 233 + }; 234 + 235 + typescript = { 236 + Identifier = { fg = red; }; 237 + Reserved = { fg = purple; }; 238 + EndColons = { fg = white; }; 239 + Braces = { fg = white; }; 240 + }; 241 + 242 + json = { 243 + CommentError = { fg = white; }; 244 + Keyword = { fg = blue; }; 245 + Boolean = { fg = red; }; 246 + Number = { fg = brightYellow; }; 247 + Quote = { fg = white; }; 248 + String = { fg = green; }; 249 + MissingCommaError = { fg = brightRed; style = "reverse"; }; 250 + NoQuotesError = { fg = brightRed; style = "reverse"; }; 251 + NumError = { fg = brightRed; style = "reverse"; }; 252 + StringSQError = { fg = brightRed; style = "reverse"; }; 253 + SemicolonError = { fg = brightRed; style = "reverse"; }; 254 + }; 255 + 256 + markdown = { 257 + Code = { fg = green; }; 258 + LinkReference = { fg = brightWhite; }; 259 + JekyllFrontMatter = { fg = brightWhite; }; 260 + CodeBlock = { fg = green; }; 261 + CodeDelimiter = { fg = green; }; 262 + HeadingDelimiter = { fg = red; }; 263 + Rule = { fg = brightWhite; }; 264 + HeadingRule = { fg = brightWhite; }; 265 + Delimiter = { fg = cyan; }; 266 + Id = { fg = purple; }; 267 + Blockquote = { fg = brightWhite; }; 268 + Italic = { fg = purple; style = "italic"; }; 269 + Bold = { fg = purple; style = "bold"; }; 270 + OrderedListMarker = { fg = red; }; 271 + IdDeclaration = { fg = blue; }; 272 + LinkDelimiter = { fg = white; }; 273 + }; 274 + 275 + mkd = { 276 + Italic = { fg = purple; style = "italic"; }; 277 + Bold = { fg = purple; style = "bold"; }; 278 + InlineURL = { fg = red; }; 279 + ListItem = { fg = yellow; }; 280 + Link = { fg = white; }; 281 + URL = { fg = red; }; 282 + }; 283 + 284 + xml = { 285 + Attrib = { fg = yellow; }; 286 + EndTag = { fg = red; }; 287 + Tag = { fg = red; }; 288 + TagName = { fg = red; }; 289 + }; 290 + 291 + php = { 292 + Include = { fg = purple; }; 293 + Class = { fg = yellow; }; 294 + Classes = { fg = yellow; }; 295 + Function = { fg = blue; }; 296 + Type = { fg = purple; }; 297 + Keyword = { fg = purple; }; 298 + VarSelector = { fg = purple; }; 299 + Identifier = { fg = white; }; 300 + Method = { fg = blue; }; 301 + Boolean = { fg = blue; }; 302 + Parent = { fg = white; }; 303 + Operator = { fg = purple; }; 304 + Region = { fg = purple; }; 305 + UseNamespaceSeparator = { fg = white; }; 306 + ClassNamespaceSeparator = { fg = white; }; 307 + DocTags = { fg = purple; style="italic"; }; 308 + DocParam = { fg = purple; style="italic"; }; 309 + }; 310 + 311 + debug = { 312 + Breakpoint = { fg = brightBlue; }; 313 + PC = { bg = brightBlue; fg = black; }; 314 + }; 315 + 316 + gitcommit = { 317 + Comment = { fg = brightWhite; }; 318 + Untracked = { fg = brightWhite; }; 319 + Discarded = { fg = brightWhite; }; 320 + Selected = { fg = brightWhite; }; 321 + Unmerged = { fg = green; }; 322 + OnBranch = mkHighlight {}; 323 + Branch = { fg = purple; }; 324 + NoBranch = { fg = purple; }; 325 + DiscardedType = { fg = red; }; 326 + SelectedType = { fg = green; }; 327 + Header = mkHighlight {}; 328 + UntrackedFile = { fg = cyan; }; 329 + DiscardedFile = { fg = red; }; 330 + SelectedFile = { fg = green; }; 331 + UntrackedArrow = { fg = cyan; }; 332 + DiscardedArrow = { fg = red; }; 333 + SelectedArrow = { fg = green; }; 334 + UnmergedFile = { fg = yellow; }; 335 + File = mkHighlight {}; 336 + Summary = { fg = white; }; 337 + Overflow = { fg = red; }; 338 + }; 339 + 340 + terminal = { 341 + background = { fg = black; }; 342 + foreground = { fg = white; }; 343 + black = { fg = black; }; 344 + red = { fg = red; }; 345 + green = { fg = green; }; 346 + yellow = { fg = yellow; }; 347 + blue = { fg = blue; }; 348 + purple = { fg = purple; }; 349 + cyan = { fg = cyan; }; 350 + white = { fg = white; }; 351 + grey = { fg = grey; }; 352 + brightRed = { fg = brightRed; }; 353 + brightGreen = { fg = brightGreen; }; 354 + brightYellow = { fg = brightYellow; }; 355 + brightBlue = { fg = brightBlue; }; 356 + brightPurple = { fg = brightPurple; }; 357 + brightCyan = { fg = brightCyan; }; 358 + brightWhite = { fg = brightWhite; }; 359 + }; 360 + 361 + GitSigns = { 362 + Add = { fg = green; }; 363 + Change = { fg = brightBlue; }; 364 + Delete = { fg = brightRed; }; 365 + }; 366 + 367 + Signify = { 368 + Add = { fg = green; }; 369 + Change = { fg = brightBlue; }; 370 + Delete = { fg = brightRed; }; 371 + }; 372 + 373 + GitGutter = { 374 + Add = { fg = green; }; 375 + Change = { fg = brightBlue; }; 376 + Delete = { fg = brightRed; }; 377 + }; 378 + 379 + Neomake = { 380 + WarningSign = { fg = yellow; }; 381 + ErrorSign = { fg = brightRed; }; 382 + InfoSign = { fg = blue; }; 383 + }; 384 + 385 + DiagnosticSign = { 386 + Warn = { fg = yellow; }; 387 + Error = { fg = brightRed; }; 388 + Information = { fg = blue; }; 389 + Hint = { fg = yellow; }; 390 + }; 391 + 392 + Telescope = { 393 + Border = { fg = split; }; 394 + Matching = { fg = blue; style = "bold"; }; 395 + }; 396 + 397 + TS.Definition = { fg = blue; bg = brightWhite; }; 398 + EasyMotion.IncSearch = { fg = blue; style = "bold"; }; 399 + }; 400 + }; 401 + }; 402 + }
+160
modules/services/mysql.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + with lib; 4 + 5 + let 6 + cfg = config.services.mysql; 7 + 8 + isMariaDB = lib.getName cfg.package == lib.getName pkgs.mariadb; 9 + 10 + mysqldOptions = 11 + "--defaults-file=${configFile} --datadir=${cfg.dataDir} --basedir=${cfg.package}"; 12 + 13 + format = pkgs.formats.ini { listsAsDuplicateKeys = true; }; 14 + configFile = format.generate "my.cnf" cfg.settings; 15 + 16 + preStart = if isMariaDB then '' 17 + if ! test -e ${cfg.dataDir}/mysql_init; then 18 + ${cfg.package}/bin/mysql_install_db ${mysqldOptions} 19 + touch ${cfg.dataDir}/mysql_init 20 + fi 21 + '' else '' 22 + if ! test -e ${cfg.dataDir}/mysql_init; then 23 + ${cfg.package}/bin/mysqld ${mysqldOptions} --initialize-insecure 24 + touch ${cfg.dataDir}/mysql_init 25 + fi 26 + ''; 27 + in 28 + 29 + { 30 + options = { 31 + 32 + services.mysql = { 33 + 34 + enable = mkEnableOption (lib.mdDoc "MySQL server"); 35 + 36 + package = mkOption { 37 + type = types.package; 38 + example = literalExpression "pkgs.mariadb"; 39 + description = lib.mdDoc '' 40 + Which MySQL derivation to use. MariaDB packages are supported too. 41 + ''; 42 + }; 43 + 44 + dataDir = mkOption { 45 + type = types.path; 46 + example = "/var/lib/mysql"; 47 + description = lib.mdDoc '' 48 + The data directory for MySQL. 49 + 50 + ::: {.note} 51 + If left as the default value of `/var/lib/mysql` this directory will automatically be created before the MySQL 52 + server starts, otherwise you are responsible for ensuring the directory exists with appropriate ownership and permissions. 53 + ::: 54 + ''; 55 + }; 56 + 57 + configFile = mkOption { 58 + type = types.path; 59 + default = configFile; 60 + defaultText = '' 61 + A configuration file automatically generated by NixOS. 62 + ''; 63 + description = lib.mdDoc '' 64 + Override the configuration file used by MySQL. By default, 65 + NixOS generates one automatically from {option}`services.mysql.settings`. 66 + ''; 67 + example = literalExpression '' 68 + pkgs.writeText "my.cnf" ''' 69 + [mysqld] 70 + datadir = /var/lib/mysql 71 + bind-address = 127.0.0.1 72 + port = 3336 73 + 74 + !includedir /etc/mysql/conf.d/ 75 + '''; 76 + ''; 77 + }; 78 + 79 + settings = mkOption { 80 + type = format.type; 81 + default = {}; 82 + description = lib.mdDoc '' 83 + MySQL configuration. Refer to 84 + <https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html>, 85 + <https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html>, 86 + and <https://mariadb.com/kb/en/server-system-variables/> 87 + for details on supported values. 88 + 89 + ::: {.note} 90 + MySQL configuration options such as `--quick` should be treated as 91 + boolean options and provided values such as `true`, `false`, 92 + `1`, or `0`. See the provided example below. 93 + ::: 94 + ''; 95 + example = literalExpression '' 96 + { 97 + mysqld = { 98 + key_buffer_size = "6G"; 99 + table_cache = 1600; 100 + log-error = "/var/log/mysql_err.log"; 101 + plugin-load-add = [ "server_audit" "ed25519=auth_ed25519" ]; 102 + }; 103 + mysqldump = { 104 + quick = true; 105 + max_allowed_packet = "16M"; 106 + }; 107 + } 108 + ''; 109 + }; 110 + }; 111 + }; 112 + 113 + 114 + ###### implementation 115 + 116 + config = mkIf cfg.enable { 117 + 118 + services.mysql.dataDir = 119 + mkDefault (if versionAtLeast config.system.stateVersion "17.09" then "/var/lib/mysql" 120 + else "/var/mysql"); 121 + 122 + services.mysql.settings.mysqld = mkMerge [ 123 + { 124 + datadir = cfg.dataDir; 125 + port = mkDefault 3306; 126 + } 127 + (mkIf (!isMariaDB) { 128 + plugin-load-add = "auth_socket.so"; 129 + }) 130 + ]; 131 + 132 + environment.systemPackages = [ cfg.package ]; 133 + environment.etc."my.cnf".source = cfg.configFile; 134 + 135 + launchd.user.agents.mysql = { 136 + path = [ cfg.package ]; 137 + 138 + script = '' 139 + ${preStart} 140 + exec ${cfg.package}/bin/mysqld ${mysqldOptions} 141 + ''; 142 + 143 + serviceConfig.KeepAlive = true; 144 + serviceConfig.RunAtLoad = true; 145 + }; 146 + 147 + system.activationScripts.postActivation.text = '' 148 + if [ ! -d "${cfg.dataDir}" ]; then 149 + mkdir -p "${cfg.dataDir}" 150 + chmod -R 777 "${cfg.dataDir}" 151 + fi 152 + 153 + if [ ! -d "/run/mysqld" ]; then 154 + mkdir -p "/run/mysqld" 155 + chmod -R 777 "/run/mysqld" 156 + fi 157 + ''; 158 + }; 159 + } 160 +
+17
modules/shell.nix
··· 1 + { lib, pkgs, ... }: 2 + 3 + { 4 + environment.systemPackages = [ 5 + pkgs.zsh 6 + ]; 7 + 8 + environment.pathsToLink = [ "/share/zsh" ]; 9 + environment.variables = { 10 + SHELL = "${pkgs.zsh}/bin/zsh"; 11 + }; 12 + 13 + programs.zsh = { 14 + enable = true; 15 + promptInit = lib.mkDefault ""; 16 + }; 17 + }
-2
nix/binary-caches/nixpkgs
··· 1 - https://hydra.nixos.org 2 - https://cache.nixos.org
-40
nix/channels.nix
··· 1 - let 2 - inherit (import <nixpkgs> {}) fetchFromGitHub; 3 - 4 - darwin_src = fetchFromGitHub { 5 - owner = "LnL7"; 6 - repo = "nix-darwin"; 7 - rev = "b8c286c82c6b47826a6c0377e7017052ad91353c"; 8 - sha256 = "0cg2zv1avmqjymkynmgc2c5v9yk9wzl2kb66jrzc1kaqhz1xm544"; 9 - }; 10 - 11 - /* release-22.11 */ 12 - home-manager_src = fetchFromGitHub { 13 - owner = "nix-community"; 14 - repo = "home-manager"; 15 - rev = "f9edbedaf015013eb35f8caacbe0c9666bbc16af"; 16 - sha256 = "1cp2rpprcfl4mjsrsrpfg6278nf05a0mpl3m0snksvdalfmc5si5"; 17 - }; 18 - 19 - /* nixpkgs-23.05-darwin */ 20 - nixpkgs_src = fetchFromGitHub { 21 - owner = "NixOS"; 22 - repo = "nixpkgs"; 23 - rev = "8c5f01ab09866caa80e2876c9dfd922100984c7e"; 24 - sha256 = "1i56m4mj55qqsdcbmzwvi9pcz3i9cjjd5wqlv5srs331kwbsdg00"; 25 - }; 26 - in 27 - 28 - rec { 29 - __nixPath = [ 30 - { prefix = "binary-caches"; path = ./binary-caches; } 31 - { prefix = "darwin"; path = darwin_src; } 32 - { prefix = "darwin-config"; path = ../configuration.nix; } 33 - { prefix = "home-manager"; path = home-manager_src; } 34 - { prefix = "nixos"; path = nixpkgs_src; } 35 - { prefix = "nixos-config"; path = ../configuration.nix; } 36 - { prefix = "nixpkgs"; path = nixpkgs_src; } 37 - ]; 38 - 39 - nixPath = map ({ prefix, path }: "${prefix}=${__replaceStrings [ "/mnt/" ] [ "/" ] (toString path)}") __nixPath; 40 - }
-14
nix/derivations.nix
··· 1 - let 2 - lib = import <nixpkgs/lib>; 3 - pkgs = import <nixpkgs> { system = builtins.currentSystem; }; 4 - in { 5 - copyFiles = name: entries: pkgs.runCommand name { preferLocalBuild = true; allowSubstitutes = false; } 6 - '' 7 - mkdir -p $out 8 - cd $out 9 - ${lib.concatMapStrings (x: '' 10 - mkdir -p "$(dirname ${lib.escapeShellArg x.target})" 11 - cp ${lib.escapeShellArg x.source} ${lib.escapeShellArg x.target} 12 - '') entries} 13 - ''; 14 - }
-20
nix/hostname.nix
··· 1 - { lib, ... }: 2 - 3 - let 4 - 5 - inherit (lib) maybeEnv fileContents; 6 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux isDarwin; 7 - 8 - in 9 - 10 - maybeEnv "HOST" (fileContents ( 11 - if !isDarwin then 12 - /etc/hostname 13 - else 14 - derivation { 15 - name = "hostname"; 16 - system = builtins.currentSystem; 17 - builder = "/bin/sh"; 18 - args = [ "-c" "/usr/sbin/scutil --get LocalHostName > $out" ]; 19 - } 20 - ))
-35
nix/nix-path.nix
··· 1 - { config, lib, ... }: 2 - 3 - let 4 - 5 - inherit (import ./channels.nix) __nixPath nixPath; 6 - inherit (lib) mkForce; 7 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux isDarwin; 8 - 9 - in 10 - 11 - rec { 12 - nixpkgs = { 13 - config.allowUnfree = true; 14 - config.allowBroken = true; 15 - }; 16 - 17 - nix.nixPath = mkForce nixPath; 18 - 19 - _module.args = 20 - let 21 - pkgsConf = { 22 - inherit (config.nixpkgs) localSystem crossSystem; 23 - overlays = config.nixpkgs.overlays; 24 - config = config.nixpkgs.config // nixpkgs.config; 25 - }; 26 - in rec { 27 - pkgs = (lib.mkForce (import <nixpkgs> ( 28 - if isLinux then { 29 - inherit (pkgsConf) overlays config localSystem crossSystem; 30 - } else { 31 - inherit (pkgsConf) overlays config; 32 - } 33 - ))); 34 - }; 35 - }
-14
nix/secrets.nix
··· 1 - let 2 - inherit (import ./channels.nix) __nixPath nixPath; 3 - pkgs = import <nixpkgs> { system = builtins.currentSystem; }; 4 - in rec { 5 - readSecretFile = path : 6 - pkgs.runCommand (baseNameOf (toString path)) { 7 - buildInputs = [ pkgs.openssl ]; 8 - } '' 9 - openssl enc -d -aes-256-cbc -pbkdf2 -salt -base64 -in ${path} -out $out -kfile ${../.nix-secret} 10 - ''; 11 - 12 - readSecretFileContents = path : 13 - builtins.readFile (readSecretFile path); 14 - }
-25
profiles/common.nix
··· 1 - { lib, pkgs, ... }: 2 - 3 - let 4 - inherit (lib) optional flatten; 5 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux isDarwin; 6 - in { 7 - environment.systemPackages = [ 8 - pkgs.openssl 9 - ]; 10 - 11 - imports = flatten [ 12 - ../config/shell.nix 13 - ../config/nvim/default.nix 14 - ../config/nodejs.nix 15 - ../config/gpg.nix 16 - ../config/fonts.nix 17 - ../config/postgres.nix 18 - ../config/mysql.nix 19 - 20 - ./tools.nix 21 - ./users.nix 22 - 23 - (optional isDarwin ./darwin.nix) 24 - ]; 25 - }
-35
profiles/darwin.nix
··· 1 - { pkgs, ... }: 2 - 3 - { 4 - security.pam.enableSudoTouchIdAuth = true; 5 - 6 - system = { 7 - keyboard = { 8 - enableKeyMapping = true; 9 - remapCapsLockToControl = true; 10 - nonUS.remapTilde = true; 11 - }; 12 - 13 - defaults = { 14 - finder.CreateDesktop = false; 15 - screencapture.location = "~/Screenshots"; 16 - loginwindow = { 17 - GuestEnabled = false; 18 - DisableConsoleAccess = true; 19 - }; 20 - dock = { 21 - autohide = true; 22 - tilesize = 46; 23 - }; 24 - NSGlobalDomain = { 25 - AppleShowAllExtensions = true; 26 - InitialKeyRepeat = 10; 27 - KeyRepeat = 2; 28 - }; 29 - }; 30 - }; 31 - 32 - environment.systemPackages = [ 33 - pkgs.coreutils 34 - ]; 35 - }
-21
profiles/tools.nix
··· 1 - { pkgs, ... }: 2 - 3 - { 4 - environment.systemPackages = with pkgs; [ 5 - imagemagick 6 - ffmpeg 7 - pngquant 8 - ripgrep 9 - xh 10 - curl 11 - sd 12 - fd 13 - awscli 14 - cloudflared 15 - woff2 16 - temporal 17 - dive 18 - caddy 19 - wasmtime 20 - ]; 21 - }
-31
profiles/users.nix
··· 1 - { pkgs, config, lib, ... }: 2 - 3 - let 4 - inherit (lib) optionalAttrs mkMerge mkIf mkDefault; 5 - inherit (lib.systems.elaborate { system = builtins.currentSystem; }) isLinux isDarwin; 6 - in 7 - 8 - mkMerge [ 9 - { 10 - home-manager = { 11 - useGlobalPkgs = true; 12 - useUserPackages = true; 13 - users.phil = _: { 14 - manual.manpages.enable = false; 15 - home.stateVersion = "22.11"; 16 - xdg.enable = true; 17 - imports = [ ../config/home/default.nix ]; 18 - }; 19 - }; 20 - 21 - users.users.phil.home = mkIf isDarwin "/Users/phil"; 22 - } 23 - 24 - (optionalAttrs isLinux { 25 - users.users.phil = { 26 - isNormalUser = true; 27 - uid = 1000; 28 - home = "/home/phil"; 29 - }; 30 - }) 31 - ]
+19
secrets.nix
··· 1 + let 2 + keys = [ 3 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF2TB8awz+vq4oPbzztPLBBRKjgu1LvNoTBLVLgTbBmT" 4 + ]; 5 + in 6 + { 7 + "./modules/fonts/encrypt/DankMono-Regular.otf.age".publicKeys = keys; 8 + "./modules/fonts/encrypt/DankMono-Bold.otf.age".publicKeys = keys; 9 + "./modules/fonts/encrypt/DankMono-Italic.otf.age".publicKeys = keys; 10 + 11 + "./modules/fonts/encrypt/codicon.otf.age".publicKeys = keys; 12 + 13 + "./home/gpg/encrypt/pubring.kbx.age".publicKeys = keys; 14 + "./home/gpg/encrypt/75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7.key.age".publicKeys = keys; 15 + "./home/gpg/encrypt/E2BFF19637FDC25A02F45583176FAD1ED1F6BDD6.key.age".publicKeys = keys; 16 + "./home/gpg/encrypt/CA84692E3CC846C8EC7272468E962B63FC599E49.key.age".publicKeys = keys; 17 + 18 + "./home/npm/encrypt/npmrc.age".publicKeys = keys; 19 + }