diff --git a/daniel.nix b/daniel.nix deleted file mode 100644 index 2e303c1..0000000 --- a/daniel.nix +++ /dev/null @@ -1,304 +0,0 @@ -{ pkgs, lib, ... }: { - # TODO: email access? - # accounts.email.accounts = { - # google = { - # address = "wraithx2@gmail.com"; - # }; - # }; - - home.username = "daniel"; - home.homeDirectory = lib.mkDefault "/home/daniel/.home"; - home.stateVersion = "23.05"; - - home.packages = [ - pkgs.rtx - # I use this for managing the following programs' versions instead of nix: - # kubectl, aws - - # TODO: os-specific scripts? macOS versus Linux (arch or nixos? do I need to distinguish at that point?) - (pkgs.buildEnv { name = "my-scripts"; paths = [ ./scripts ]; }) - ]; - - programs.password-store = { - enable = true; - package = (pkgs.pass.withExtensions (exts: [ exts.pass-otp ])); - }; - - programs.zellij = { - # TODO: enable after port config - enable = false; - enableFishIntegration = true; - settings = { - # TODO: port config - }; - }; - - programs.broot = { - enable = true; - enableFishIntegration = true; - settings = { - modal = true; - skin = { - # this is a crappy copy of broot's catppuccin mocha theme - input = "rgb(205, 214, 244) none"; - selected_line = "none rgb(88, 91, 112)"; - default = "rgb(205, 214, 244) none"; - tree = "rgb(108, 112, 134) none"; - parent = "rgb(116, 199, 236) none"; - file = "none none"; - - perm__ = "rgb(186, 194, 222) none"; - perm_r = "rgb(250, 179, 135) none"; - perm_w = "rgb(235, 160, 172) none"; - perm_x = "rgb(166, 227, 161) none"; - owner = "rgb(148, 226, 213) none"; - group = "rgb(137, 220, 235) none"; - - dates = "rgb(186, 194, 222) none"; - - directory = "rgb(180, 190, 254) none Bold"; - exe = "rgb(166, 227, 161) none"; - link = "rgb(249, 226, 175) none"; - pruning = "rgb(166, 173, 200) none Italic"; - - preview_title = "rgb(205, 214, 244) rgb(24, 24, 37)"; - preview = "rgb(205, 214, 244) rgb(24, 24, 37)"; - preview_line_number = "rgb(108, 112, 134) none"; - - char_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic"; - content_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic"; - preview_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic"; - - count = "rgb(249, 226, 175) none"; - sparse = "rgb(243, 139, 168) none"; - content_extract = "rgb(243, 139, 168) none Italic"; - - git_branch = "rgb(250, 179, 135) none"; - git_insertions = "rgb(250, 179, 135) none"; - git_deletions = "rgb(250, 179, 135) none"; - git_status_current = "rgb(250, 179, 135) none"; - git_status_modified = "rgb(250, 179, 135) none"; - git_status_new = "rgb(250, 179, 135) none Bold"; - git_status_ignored = "rgb(250, 179, 135) none"; - git_status_conflicted = "rgb(250, 179, 135) none"; - git_status_other = "rgb(250, 179, 135) none"; - staging_area_title = "rgb(250, 179, 135) none"; - - flag_label = "rgb(243, 139, 168) none"; - flag_value = "rgb(243, 139, 168) none Bold"; - - status_normal = "none rgb(24, 24, 37)"; - status_italic = "rgb(243, 139, 168) rgb(24, 24, 37) Italic"; - status_bold = "rgb(235, 160, 172) rgb(24, 24, 37) Bold"; - status_ellipsis = "rgb(235, 160, 172) rgb(24, 24, 37) Bold"; - status_error = "rgb(205, 214, 244) rgb(243, 139, 168)"; - status_job = "rgb(235, 160, 172) rgb(40, 38, 37)"; - status_code = "rgb(235, 160, 172) rgb(24, 24, 37) Italic"; - mode_command_mark = "rgb(235, 160, 172) rgb(24, 24, 37) Bold"; - - help_paragraph = "rgb(205, 214, 244) none"; - help_headers = "rgb(243, 139, 168) none Bold"; - help_bold = "rgb(250, 179, 135) none Bold"; - help_italic = "rgb(249, 226, 175) none Italic"; - help_code = "rgb(166, 227, 161) rgb(49, 50, 68)"; - help_table_border = "rgb(108, 112, 134) none"; - - hex_null = "rgb(205, 214, 244) none"; - hex_ascii_graphic = "rgb(250, 179, 135) none"; - hex_ascii_whitespace = "rgb(166, 227, 161) none"; - hex_ascii_other = "rgb(148, 226, 213) none"; - hex_non_ascii = "rgb(243, 139, 168) none"; - - file_error = "rgb(251, 73, 52) none"; - - purpose_normal = "none none"; - purpose_italic = "rgb(177, 98, 134) none Italic"; - purpose_bold = "rgb(177, 98, 134) none Bold"; - purpose_ellipsis = "none none"; - - scrollbar_track = "rgb(49, 50, 68) none"; - scrollbar_thumb = "rgb(88, 91, 112) none"; - - good_to_bad_0 = "rgb(166, 227, 161) none"; - good_to_bad_1 = "rgb(148, 226, 213) none"; - good_to_bad_2 = "rgb(137, 220, 235) none"; - good_to_bad_3 = "rgb(116, 199, 236) none"; - good_to_bad_4 = "rgb(137, 180, 250) none"; - good_to_bad_5 = "rgb(180, 190, 254) none"; - good_to_bad_6 = "rgb(203, 166, 247) none"; - good_to_bad_7 = "rgb(250, 179, 135) none"; - good_to_bad_8 = "rgb(235, 160, 172) none"; - good_to_bad_9 = "rgb(243, 139, 168) none"; - }; - - verbs = [ - { invocation = "edit"; shortcut = "e"; execution = "$EDITOR {file}"; } - ]; - }; - }; - - programs.home-manager.enable = true; - - programs.direnv.enable = true; - programs.direnv.nix-direnv.enable = true; - - programs.fish = { - enable = true; - # I load long scripts from files for a better editing experience - shellInit = builtins.readFile ./fish/shellInit.fish; - interactiveShellInit = builtins.readFile ./fish/interactiveShellInit.fish; - loginShellInit = ""; - functions = { - # I think these should be loaded from fish files too for better editor experience - d = '' - # --wraps=cd --description "Quickly jump to NICE_HOME (or given relative or absolute path) and list files." - if count $argv > /dev/null - cd $argv - else - cd $NICE_HOME - end - la - ''; - - c = '' - if count $argv > /dev/null - cd $NICE_HOME && d $argv - else - d $NICE_HOME - end - ''; - - g = '' - if count $argv > /dev/null - git $argv - else - git status - end - ''; - - ltl = '' - set d $argv[1] . - set -l l "" - for f in $d[1]/* - if test -z $l; set l $f; continue; end - if command test $f -nt $l; and test ! -d $f - set l $f - end - end - echo $l - ''; - - has_command = "command --quiet --search $argv[1]"; - }; - shellAbbrs = { }; - shellAliases = { - l = "br"; - ls = "exa --group-directories-first --classify"; - la = "exa -la --group-directories-first --classify"; - lA = "exa -la --all --group-directories-first --classify"; - tree = "exa --tree --level=3"; - lt = "exa -l --sort=modified"; - lat = "exa -la --sort=modified"; - lc = "lt --sort=accessed"; - lT = "lt --reverse"; - lC = "lc --reverse"; - lD = "la --only-dirs"; - "cd.." = "d .."; - "cdd" = "d $DOTFILES_PATH"; - "cde" = "d $XDG_CONFIG_HOME/lytedev-env"; - "cdc" = "d $XDG_CONFIG_HOME"; - "cdn" = "d $NOTES_PATH"; - "cdl" = "d $XDG_DOWNLOAD_DIR"; - "cdg" = "d $XDG_GAMES_DIR"; - ".." = "d .."; - "..." = "d ../.."; - "...." = "d ../../.."; - "....." = "d ../../../.."; - "......" = "d ../../../../.."; - "......." = "d ../../../../../.."; - "........" = "d ../../../../../../.."; - "........." = "d ../../../../../../../.."; - cat = "bat"; - dc = "docker compose"; - k = "kubectl"; - kg = "kubectl get"; - v = "$EDITOR"; - sv = "sudo $EDITOR"; - kssh = "kitty +kitten ssh"; - }; - }; - - programs.exa.enable = true; - - programs.skim = { - enable = true; - enableFishIntegration = true; - }; - - programs.nix-index = { - enable = true; - enableFishIntegration = true; - }; - - home.pointerCursor = { - name = "Catppuccin-Mocha-Sapphire-Cursors"; - package = pkgs.catppuccin-cursors.mochaSapphire; - size = 64; # TODO: this doesn't seem to work -- at least in Sway - }; - - programs.firefox = { - # TODO: enable dark theme by default - enable = true; - - package = (pkgs.firefox.override { extraNativeMessagingHosts = [ pkgs.passff-host ]; }); - - # extensions = with pkgs.nur.repos.rycee.firefox-addons; [ - # ublock-origin - # ]; # TODO: would be nice to have _all_ my firefox stuff managed here instead of Firefox Sync maybe? - - profiles = { - daniel = { - id = 0; - settings = { - "general.smoothScroll" = true; - }; - - extraConfig = '' - user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); - // user_pref("full-screen-api.ignore-widgets", true); - user_pref("media.ffmpeg.vaapi.enabled", true); - user_pref("media.rdd-vpx.enabled", true); - ''; - - userChrome = '' - #TabsToolbar { - visibility: collapse; - } - - #webrtcIndicator { - display: none; - } - - #main-window[tabsintitlebar="true"]:not([extradragspace="true"]) #TabsToolbar>.toolbar-items { - opacity: 0; - pointer-events: none; - } - - #main-window:not([tabsintitlebar="true"]) #TabsToolbar { - visibility: collapse !important; - } - ''; - - # userContent = '' - # ''; - }; - - }; - }; - - # wayland.windowManager.sway = { - # enable = true; - # }; # TODO: would be nice to have my sway config declared here instead of symlinked in by dotfiles scripts? - # maybe we can share somehow so things for nix-y systems and non-nix-y systems alike - # am I going to _have_ non-nix systems anymore? -} diff --git a/home.nix b/home.nix index e6f9488..9e6c1ca 100644 --- a/home.nix +++ b/home.nix @@ -1,15 +1,30 @@ -inputs @ { nixpkgs, home-manager, ... }: +inputs: let - system = "x86_64-linux"; - overlay = final: prev: { + overlay = system: final: prev: { helix = prev.helix // inputs.helix.packages.${system}.helix; rtx = prev.rtx // inputs.rtx.packages.${system}.rtx; }; - pkgs = import nixpkgs { inherit system; overlays = [ overlay ]; }; + # TODO: be functional - have a mkHome function? in { - # TODO: per arch? - daniel = home-manager.lib.homeManagerConfiguration { + daniel = let + system = "x86_64-linux"; + pkgs = import inputs.nixpkgs { inherit system; overlays = [ (overlay system) ]; }; + in inputs.home-manager.lib.homeManagerConfiguration { inherit pkgs; - modules = [ import ./daniel.nix pkgs ]; + modules = [ + (import ./home/user.nix pkgs) + (import ./home/linux.nix pkgs) + ]; + }; + + daniel-work = let + system = "aarch64-darwin"; + pkgs = import inputs.nixpkgs { inherit system; overlays = [ (overlay system) ]; }; + in inputs.home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ + (import ./home/user.nix pkgs) + (import ./home/work.nix pkgs) + ]; }; } diff --git a/home/linux.nix b/home/linux.nix new file mode 100644 index 0000000..cf8674f --- /dev/null +++ b/home/linux.nix @@ -0,0 +1,73 @@ +{ pkgs, ... }: { + home.pointerCursor = { + name = "Catppuccin-Mocha-Sapphire-Cursors"; + package = pkgs.catppuccin-cursors.mochaSapphire; + size = 64; # TODO: this doesn't seem to work -- at least in Sway + }; + + gtk = { + enable = true; + theme = { + name = "Catppuccin-Mocha-Compact-Sapphire-dark"; + package = pkgs.catppuccin-gtk.override { + accents = [ "sapphire" ]; + size = "compact"; + tweaks = [ "rimless" "black" ]; + variant = "mocha"; + }; + }; + }; + + home.packages = [ + (pkgs.buildEnv { name = "my-linux-scripts"; paths = [ ../scripts/linux ]; }) + ]; + + programs.firefox = { + # TODO: enable dark theme by default + enable = true; + + package = (pkgs.firefox.override { extraNativeMessagingHosts = [ pkgs.passff-host ]; }); + + # extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + # ublock-origin + # ]; # TODO: would be nice to have _all_ my firefox stuff managed here instead of Firefox Sync maybe? + + profiles = { + daniel = { + id = 0; + settings = { + "general.smoothScroll" = true; + }; + + extraConfig = '' + user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); + // user_pref("full-screen-api.ignore-widgets", true); + user_pref("media.ffmpeg.vaapi.enabled", true); + user_pref("media.rdd-vpx.enabled", true); + ''; + + userChrome = '' + #TabsToolbar { + visibility: collapse; + } + + #webrtcIndicator { + display: none; + } + + #main-window[tabsintitlebar="true"]:not([extradragspace="true"]) #TabsToolbar>.toolbar-items { + opacity: 0; + pointer-events: none; + } + + #main-window:not([tabsintitlebar="true"]) #TabsToolbar { + visibility: collapse !important; + } + ''; + + # userContent = '' + # ''; + }; + }; + }; +} diff --git a/home/user.nix b/home/user.nix new file mode 100644 index 0000000..cc5b5cb --- /dev/null +++ b/home/user.nix @@ -0,0 +1,595 @@ +{ pkgs, lib, ... }: +let + email = "daniel@lyte.dev"; + name = "Daniel Flanagan"; +in +{ + # TODO: email access? + # accounts.email.accounts = { + # google = { + # address = "wraithx2@gmail.com"; + # }; + # }; + + home = { + username = lib.mkDefault "daniel"; + homeDirectory = lib.mkDefault "/home/daniel/.home"; + stateVersion = "23.05"; + + packages = [ + # I use rtx for managing the following programs' versions instead of nix: + # kubectl, aws + pkgs.rtx + + # text editor + pkgs.helix + + # I need gawk for my fish prompt + pkgs.gawk + + pkgs.nil + pkgs.nixpkgs-fmt + + # TODO: os-specific scripts? macOS versus Linux (arch or nixos? do I need to distinguish at that point?) + (pkgs.buildEnv { name = "my-scripts"; paths = [ ../scripts ]; }) + ]; + + file = { + ".iex.exs" = { + enable = true; + text = '' + Application.put_env(:elixir, :ansi_enabled, true) + + # PROTIP: to break, `#iex:break` + + IEx.configure( + colors: [enabled: true], + inspect: [ + pretty: true, + printable_limit: :infinity, + limit: :infinity + ], + default_prompt: + [ + # ANSI CHA, move cursor to column 1 + "\e[G", + :magenta, + # IEx prompt variable + "%prefix", + "#", + # IEx prompt variable + "%counter", + # plain string + ">", + :reset + ] + |> IO.ANSI.format() + |> IO.chardata_to_string() + ) + ''; + }; + }; + }; + + programs = { + password-store = { + enable = true; + package = (pkgs.pass.withExtensions (exts: [ exts.pass-otp ])); + }; + + git = { + enable = true; + + userEmail = email; + userName = name; + + delta = { + enable = true; + options = { }; + }; + + lfs = { + enable = true; + }; + + signing = { + signByDefault = true; + key = "daniel@lyte.dev"; + }; + + extraConfig = { + push = { + autoSetupRemote = true; + }; + + branch = { + autoSeupMerge = true; + }; + + sendemail = { + smtpserver = "smtp.mailgun.org"; + smtpuser = "daniel@lyte.dev"; + smtrpencryption = "tls"; + smtpserverport = 587; + }; + + url = { + "git@git.hq.bill.com:" = { + insteadOf = "https://git.hq.bill.com"; + }; + }; + + aliases = { + a = "add"; + A = "add - A"; + ac = "commit - a"; + b = "rev-parse - -symbolic-full-name HEAD"; + c = "commit"; + cm = "commit - m"; + cnv = "commit - -no-verify"; + co = "checkoutd"; + d = "diff"; + ds = "diff - -staged"; + dt = "difftool "; + f = "fetch"; + l = "log - -graph - -abbrev-commit - -decorate - -oneline - -all"; + plainlog = " log - -pretty=format:'%h %ad%x09%an%x09%s' --date=short --decorate"; + ls = "ls-files"; + mm = "merge master"; + p = "push"; + pf = "push --force-with-lease"; + pl = "pull"; + rim = "rebase -i master"; + s = "status"; + sur = "submodule update --remote"; + }; + }; + }; + + gitui = { + enable = true; + }; + + helix = { + enable = true; + package = pkgs.helix; + languages = { + language-server = { + lexical = { + command = "lexical"; + args = [ "start" ]; + }; + }; + + language = [ + { + name = "elixir"; + language-servers = [ "elixir-ls" "lexical" ]; + auto-format = true; + } + { + name = "html"; + auto-format = false; + } + { + name = "nix"; + auto-format = true; + formatter = { + command = "nixpkgs-fmt"; + args = [ ]; + }; + } + { + name = "fish"; + auto-format = true; + indent = { + tab-width = 2; + unit = "\t"; + }; + } + # TODO: deno: + #[[language]] + #name = "javascript" + #scope = "source.js" + #injection-regex = "^(js|javascript)$" + #file-types = [ "js", "jsx", "mjs" ] + #shebangs = [ "deno", "node" ] + #roots = [ "deno.jsonc", "deno.json", "package.json", "tsconfig.json" ] + #comment-token = "//" + # config = { enable = true, lint = true, unstable = true } + # language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "javascript" } + #indent = { + #tab-width = 2, unit = "\t" } + #auto-format = true + + # [[language]] + # name = "jsx" + # scope = "source.jsx" + # injection-regex = "jsx" + # file-types = ["jsx"] + # shebangs = ["deno", "node"] + # roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"] + # comment-token = "//" + # config = { enable = true, lint = true, unstable = true } + # language-server = { command = "deno", args = ["lsp"], language-id = "javascriptreact" } + # indent = { tab-width = 2, unit = " " } + # grammar = "javascript" + # auto-format = true + + # [[language]] + # name = "typescript" + # scope = "source.ts" + # injection-regex = "^(ts|typescript)$" + # file-types = ["ts"] + # shebangs = ["deno", "node"] + # roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"] + # config = { enable = true, lint = true, unstable = true } + # language-server = { command = "deno", args = ["lsp"], language-id = "typescript" } + # indent = { tab-width = 2, unit = " " } + # auto-format = true + + # [[language]] + # name = "tsx" + # scope = "source.tsx" + # injection-regex = "^(tsx)$" # |typescript + # file-types = ["tsx"] + # shebangs = ["deno", "node"] + # roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"] + # config = { enable = true, lint = true, unstable = true } + # language-server = { command = "deno", args = ["lsp"], language-id = "typescriptreact" } + # indent = { tab-width = 2, unit = " " } + # auto-format = true + + # [[language]] + # name = "jsonc" + # scope = "source.jsonc" + # injection-regex = "^(jsonc)$" + # file-types = ["jsonc"] + # shebangs = ["deno", "node"] + # roots = ["deno.jsonc", "deno.json", "package.json", "tsconfig.json"] + # config = { enable = true, lint = true, unstable = true } + # language-server = { command = "deno", args = ["lsp"], language-id = "jsonc" } + # indent = { tab-width = 2, unit = " " } + # auto-format = true + ]; + }; + + settings = { + theme = "custom"; + + editor = { + soft-wrap.enable = true; + auto-pairs = false; + auto-save = false; + completion-trigger-len = 1; + color-modes = false; + bufferline = "multiple"; + scrolloff = 8; + rulers = [ 80 120 ]; + cursorline = true; + + cursor-shape = { + normal = "block"; + insert = "bar"; + select = "underline"; + }; + + file-picker.hidden = false; + indent-guides = { + render = true; + character = "▏"; + }; + + lsp = { + display-messages = true; + display-inlay-hints = true; + }; + statusline = { + left = [ "mode" "spinner" "selections" "primary-selection-length" "position" "position-percentage" "diagnostics" "workspace-diagnostics" ]; + center = [ "file-name" ]; + right = [ "version-control" "total-line-numbers" "file-encoding" ]; + }; + + }; + keys = { + + insert = { + j = { k = "normal_mode"; j = "normal_mode"; K = "normal_mode"; J = "normal_mode"; }; + }; + + normal = { + D = "kill_to_line_end"; + "^" = "goto_line_start"; + "C-k" = "jump_view_up"; + "C-j" = "jump_view_down"; + "C-h" = "jump_view_left"; + "C-l" = "jump_view_right"; + "C-q" = ":quit-all!"; + "L" = "repeat_last_motion"; + space = { + q = ":reflow 80"; + Q = ":reflow 120"; + v = ":run-shell-command fish -c 'env > /tmp/env'"; + C = ":bc!"; + h = ":toggle lsp.display-inlay-hints"; + # O = ["select_textobject_inner WORD", ":pipe-to xargs xdg-open"]; + }; + }; + + + select = { + space = { q = ":reflow 80"; Q = ":reflow 120"; }; + "L" = "repeat_last_motion"; + }; + }; + }; + + themes = { + custom = { + "inherits" = "catppuccin_mocha"; + + "ui.background" = "default"; + + # "ui.cursorline.primary" = { bg = "default" } + # "ui.cursorline.secondary" = { bg = "default" } + # "ui.cursorcolumn.primary" = { bg = "default" } + # "ui.cursorcolumn.secondary" = { bg = "default" } + # "ui.virtual.ruler" = { bg = "default" } + + "ui.bufferline.active" = { + fg = "sapphire"; + bg = "base"; + underline = { + color = "sapphire"; + style = ""; + }; + }; + }; + }; + }; + + bat = { + enable = true; + config = { + theme = "Catppuccin-mocha"; + }; + themes = { + "Catppuccin-mocha" = builtins.readFile (pkgs.fetchFromGitHub + { + owner = "catppuccin"; + repo = "bat"; + rev = "477622171ec0529505b0ca3cada68fc9433648c6"; + sha256 = "6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw="; + } + "/Catppuccin-mocha.tmTheme"); + }; + }; + + zellij = { + # TODO: enable after port config + enable = false; + enableFishIntegration = true; + settings = { + # TODO: port config + }; + }; + + broot = { + enable = true; + enableFishIntegration = true; + settings = { + modal = true; + skin = { + # this is a crappy copy of broot's catppuccin mocha theme + input = "rgb(205, 214, 244) none"; + selected_line = "none rgb(88, 91, 112)"; + default = "rgb(205, 214, 244) none"; + tree = "rgb(108, 112, 134) none"; + parent = "rgb(116, 199, 236) none"; + file = "none none"; + + perm__ = "rgb(186, 194, 222) none"; + perm_r = "rgb(250, 179, 135) none"; + perm_w = "rgb(235, 160, 172) none"; + perm_x = "rgb(166, 227, 161) none"; + owner = "rgb(148, 226, 213) none"; + group = "rgb(137, 220, 235) none"; + + dates = "rgb(186, 194, 222) none"; + + directory = "rgb(180, 190, 254) none Bold"; + exe = "rgb(166, 227, 161) none"; + link = "rgb(249, 226, 175) none"; + pruning = "rgb(166, 173, 200) none Italic"; + + preview_title = "rgb(205, 214, 244) rgb(24, 24, 37)"; + preview = "rgb(205, 214, 244) rgb(24, 24, 37)"; + preview_line_number = "rgb(108, 112, 134) none"; + + char_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic"; + content_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic"; + preview_match = "rgb(249, 226, 175) rgb(69, 71, 90) Bold Italic"; + + count = "rgb(249, 226, 175) none"; + sparse = "rgb(243, 139, 168) none"; + content_extract = "rgb(243, 139, 168) none Italic"; + + git_branch = "rgb(250, 179, 135) none"; + git_insertions = "rgb(250, 179, 135) none"; + git_deletions = "rgb(250, 179, 135) none"; + git_status_current = "rgb(250, 179, 135) none"; + git_status_modified = "rgb(250, 179, 135) none"; + git_status_new = "rgb(250, 179, 135) none Bold"; + git_status_ignored = "rgb(250, 179, 135) none"; + git_status_conflicted = "rgb(250, 179, 135) none"; + git_status_other = "rgb(250, 179, 135) none"; + staging_area_title = "rgb(250, 179, 135) none"; + + flag_label = "rgb(243, 139, 168) none"; + flag_value = "rgb(243, 139, 168) none Bold"; + + status_normal = "none rgb(24, 24, 37)"; + status_italic = "rgb(243, 139, 168) rgb(24, 24, 37) Italic"; + status_bold = "rgb(235, 160, 172) rgb(24, 24, 37) Bold"; + status_ellipsis = "rgb(235, 160, 172) rgb(24, 24, 37) Bold"; + status_error = "rgb(205, 214, 244) rgb(243, 139, 168)"; + status_job = "rgb(235, 160, 172) rgb(40, 38, 37)"; + status_code = "rgb(235, 160, 172) rgb(24, 24, 37) Italic"; + mode_command_mark = "rgb(235, 160, 172) rgb(24, 24, 37) Bold"; + + help_paragraph = "rgb(205, 214, 244) none"; + help_headers = "rgb(243, 139, 168) none Bold"; + help_bold = "rgb(250, 179, 135) none Bold"; + help_italic = "rgb(249, 226, 175) none Italic"; + help_code = "rgb(166, 227, 161) rgb(49, 50, 68)"; + help_table_border = "rgb(108, 112, 134) none"; + + hex_null = "rgb(205, 214, 244) none"; + hex_ascii_graphic = "rgb(250, 179, 135) none"; + hex_ascii_whitespace = "rgb(166, 227, 161) none"; + hex_ascii_other = "rgb(148, 226, 213) none"; + hex_non_ascii = "rgb(243, 139, 168) none"; + + file_error = "rgb(251, 73, 52) none"; + + purpose_normal = "none none"; + purpose_italic = "rgb(177, 98, 134) none Italic"; + purpose_bold = "rgb(177, 98, 134) none Bold"; + purpose_ellipsis = "none none"; + + scrollbar_track = "rgb(49, 50, 68) none"; + scrollbar_thumb = "rgb(88, 91, 112) none"; + + good_to_bad_0 = "rgb(166, 227, 161) none"; + good_to_bad_1 = "rgb(148, 226, 213) none"; + good_to_bad_2 = "rgb(137, 220, 235) none"; + good_to_bad_3 = "rgb(116, 199, 236) none"; + good_to_bad_4 = "rgb(137, 180, 250) none"; + good_to_bad_5 = "rgb(180, 190, 254) none"; + good_to_bad_6 = "rgb(203, 166, 247) none"; + good_to_bad_7 = "rgb(250, 179, 135) none"; + good_to_bad_8 = "rgb(235, 160, 172) none"; + good_to_bad_9 = "rgb(243, 139, 168) none"; + }; + + verbs = [ + { invocation = "edit"; shortcut = "e"; execution = "$EDITOR {file}"; } + ]; + }; + }; + + direnv = { + enable = true; + nix-direnv.enable = true; + }; + + fish = { + enable = true; + # I load long scripts from files for a better editing experience + shellInit = builtins.readFile ../fish/shellInit.fish; + interactiveShellInit = builtins.readFile ../fish/interactiveShellInit.fish; + loginShellInit = ""; + functions = { + # I think these should be loaded from fish files too for better editor experience + d = '' + # --wraps=cd --description "Quickly jump to NICE_HOME (or given relative or absolute path) and list files." + if count $argv > /dev/null + cd $argv + else + cd $NICE_HOME + end + la + ''; + + c = '' + if count $argv > /dev/null + cd $NICE_HOME && d $argv + else + d $NICE_HOME + end + ''; + + g = '' + if count $argv > /dev/null + git $argv + else + git status + end + ''; + + ltl = '' + set d $argv[1] . + set -l l "" + for f in $d[1]/* + if test -z $l; set l $f; continue; end + if command test $f -nt $l; and test ! -d $f + set l $f + end + end + echo $l + ''; + + has_command = "command --quiet --search $argv[1]"; + }; + shellAbbrs = { }; + shellAliases = { + l = "br"; + ls = "exa --group-directories-first --classify"; + la = "exa -la --group-directories-first --classify"; + lA = "exa -la --all --group-directories-first --classify"; + tree = "exa --tree --level=3"; + lt = "exa -l --sort=modified"; + lat = "exa -la --sort=modified"; + lc = "lt --sort=accessed"; + lT = "lt --reverse"; + lC = "lc --reverse"; + lD = "la --only-dirs"; + "cd.." = "d .."; + "cdd" = "d $DOTFILES_PATH"; + "cde" = "d $XDG_CONFIG_HOME/lytedev-env"; + "cdc" = "d $XDG_CONFIG_HOME"; + "cdn" = "d $NOTES_PATH"; + "cdl" = "d $XDG_DOWNLOAD_DIR"; + "cdg" = "d $XDG_GAMES_DIR"; + ".." = "d .."; + "..." = "d ../.."; + "...." = "d ../../.."; + "....." = "d ../../../.."; + "......" = "d ../../../../.."; + "......." = "d ../../../../../.."; + "........" = "d ../../../../../../.."; + "........." = "d ../../../../../../../.."; + cat = "bat"; + p = "ping"; + dc = "docker compose"; + k = "kubectl"; + kg = "kubectl get"; + v = "$EDITOR"; + sv = "sudo $EDITOR"; + kssh = "kitty +kitten ssh"; + }; + }; + + exa = { + enable = true; + }; + + skim = { + enable = true; + enableFishIntegration = true; + }; + + nix-index = { + enable = true; + enableFishIntegration = true; + }; + }; + + # wayland.windowManager.sway = { + # enable = true; + # }; # TODO: would be nice to have my sway config declared here instead of symlinked in by dotfiles scripts? + # maybe we can share somehow so things for nix-y systems and non-nix-y systems alike + # am I going to _have_ non-nix systems anymore? +} + + + diff --git a/home/work.nix b/home/work.nix new file mode 100644 index 0000000..c41f5c9 --- /dev/null +++ b/home/work.nix @@ -0,0 +1,6 @@ +{ lib, ... }: let + username = "daniel.flanagan@divvypay.com"; +in { + home.username = username; + home.homeDirectory = "/Users/${username}"; +} diff --git a/modules/sway.nix b/modules/sway.nix index 409848e..ce7df16 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -68,19 +68,6 @@ in enable = true; }; - gtk = { - enable = true; - theme = { - name = "Catppuccin-Mocha-Compact-Sapphire-dark"; - package = pkgs.catppuccin-gtk.override { - accents = [ "sapphire" ]; - size = "compact"; - tweaks = [ "rimless" "black" ]; - variant = "mocha"; - }; - }; - }; - environment = { variables = { GTK_THEME = "hx"; diff --git a/nixos.nix b/nixos.nix index 44daed6..614af4e 100644 --- a/nixos.nix +++ b/nixos.nix @@ -3,7 +3,7 @@ let daniel = { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.daniel = import ./daniel.nix; + home-manager.users.daniel = import ./home/user.nix; }; hms = [ inputs.home-manager.nixosModules.home-manager diff --git a/scripts/bin/? b/scripts/common/bin/? similarity index 100% rename from scripts/bin/? rename to scripts/common/bin/? diff --git a/scripts/bin/N b/scripts/common/bin/N similarity index 100% rename from scripts/bin/N rename to scripts/common/bin/N diff --git a/scripts/bin/archive b/scripts/common/bin/archive similarity index 100% rename from scripts/bin/archive rename to scripts/common/bin/archive diff --git a/scripts/bin/archupdate b/scripts/common/bin/archupdate similarity index 100% rename from scripts/bin/archupdate rename to scripts/common/bin/archupdate diff --git a/scripts/bin/at b/scripts/common/bin/at similarity index 100% rename from scripts/bin/at rename to scripts/common/bin/at diff --git a/scripts/bin/bp b/scripts/common/bin/bp similarity index 100% rename from scripts/bin/bp rename to scripts/common/bin/bp diff --git a/scripts/bin/check-domain-availability b/scripts/common/bin/check-domain-availability similarity index 100% rename from scripts/bin/check-domain-availability rename to scripts/common/bin/check-domain-availability diff --git a/scripts/bin/check-port b/scripts/common/bin/check-port similarity index 100% rename from scripts/bin/check-port rename to scripts/common/bin/check-port diff --git a/scripts/bin/clip b/scripts/common/bin/clip similarity index 100% rename from scripts/bin/clip rename to scripts/common/bin/clip diff --git a/scripts/bin/clipshot b/scripts/common/bin/clipshot similarity index 100% rename from scripts/bin/clipshot rename to scripts/common/bin/clipshot diff --git a/scripts/bin/copy-git-forge-url b/scripts/common/bin/copy-git-forge-url similarity index 100% rename from scripts/bin/copy-git-forge-url rename to scripts/common/bin/copy-git-forge-url diff --git a/scripts/bin/countdown b/scripts/common/bin/countdown similarity index 100% rename from scripts/bin/countdown rename to scripts/common/bin/countdown diff --git a/scripts/bin/dns b/scripts/common/bin/dns similarity index 100% rename from scripts/bin/dns rename to scripts/common/bin/dns diff --git a/scripts/bin/dns-cleaner b/scripts/common/bin/dns-cleaner similarity index 100% rename from scripts/bin/dns-cleaner rename to scripts/common/bin/dns-cleaner diff --git a/scripts/bin/dns-deleter b/scripts/common/bin/dns-deleter similarity index 100% rename from scripts/bin/dns-deleter rename to scripts/common/bin/dns-deleter diff --git a/scripts/bin/dns-deleter-matching b/scripts/common/bin/dns-deleter-matching similarity index 100% rename from scripts/bin/dns-deleter-matching rename to scripts/common/bin/dns-deleter-matching diff --git a/scripts/bin/editscrot b/scripts/common/bin/editscrot similarity index 100% rename from scripts/bin/editscrot rename to scripts/common/bin/editscrot diff --git a/scripts/bin/email-via-mailgun-smtp b/scripts/common/bin/email-via-mailgun-smtp similarity index 100% rename from scripts/bin/email-via-mailgun-smtp rename to scripts/common/bin/email-via-mailgun-smtp diff --git a/scripts/bin/emoji b/scripts/common/bin/emoji similarity index 100% rename from scripts/bin/emoji rename to scripts/common/bin/emoji diff --git a/scripts/bin/ezln b/scripts/common/bin/ezln similarity index 100% rename from scripts/bin/ezln rename to scripts/common/bin/ezln diff --git a/scripts/bin/field b/scripts/common/bin/field similarity index 100% rename from scripts/bin/field rename to scripts/common/bin/field diff --git a/scripts/bin/getip b/scripts/common/bin/getip similarity index 100% rename from scripts/bin/getip rename to scripts/common/bin/getip diff --git a/scripts/bin/git-authors b/scripts/common/bin/git-authors similarity index 100% rename from scripts/bin/git-authors rename to scripts/common/bin/git-authors diff --git a/scripts/bin/gitforge-url.ts b/scripts/common/bin/gitforge-url.ts similarity index 100% rename from scripts/bin/gitforge-url.ts rename to scripts/common/bin/gitforge-url.ts diff --git a/scripts/bin/glancepath b/scripts/common/bin/glancepath similarity index 100% rename from scripts/bin/glancepath rename to scripts/common/bin/glancepath diff --git a/scripts/bin/good-morning b/scripts/common/bin/good-morning similarity index 100% rename from scripts/bin/good-morning rename to scripts/common/bin/good-morning diff --git a/scripts/bin/has_command b/scripts/common/bin/has_command similarity index 100% rename from scripts/bin/has_command rename to scripts/common/bin/has_command diff --git a/scripts/bin/install-firefox-user-chrome-css.fish b/scripts/common/bin/install-firefox-user-chrome-css.fish similarity index 100% rename from scripts/bin/install-firefox-user-chrome-css.fish rename to scripts/common/bin/install-firefox-user-chrome-css.fish diff --git a/scripts/bin/is_wayland b/scripts/common/bin/is_wayland similarity index 100% rename from scripts/bin/is_wayland rename to scripts/common/bin/is_wayland diff --git a/scripts/bin/k8s-yaml-diff b/scripts/common/bin/k8s-yaml-diff similarity index 100% rename from scripts/bin/k8s-yaml-diff rename to scripts/common/bin/k8s-yaml-diff diff --git a/scripts/bin/k8s-yaml-sort b/scripts/common/bin/k8s-yaml-sort similarity index 100% rename from scripts/bin/k8s-yaml-sort rename to scripts/common/bin/k8s-yaml-sort diff --git a/scripts/bin/keyrepeat b/scripts/common/bin/keyrepeat similarity index 100% rename from scripts/bin/keyrepeat rename to scripts/common/bin/keyrepeat diff --git a/scripts/bin/kubeline b/scripts/common/bin/kubeline similarity index 100% rename from scripts/bin/kubeline rename to scripts/common/bin/kubeline diff --git a/scripts/bin/kubfc b/scripts/common/bin/kubfc similarity index 100% rename from scripts/bin/kubfc rename to scripts/common/bin/kubfc diff --git a/scripts/bin/kubfn b/scripts/common/bin/kubfn similarity index 100% rename from scripts/bin/kubfn rename to scripts/common/bin/kubfn diff --git a/scripts/bin/launch b/scripts/common/bin/launch similarity index 100% rename from scripts/bin/launch rename to scripts/common/bin/launch diff --git a/scripts/bin/linewise b/scripts/common/bin/linewise similarity index 100% rename from scripts/bin/linewise rename to scripts/common/bin/linewise diff --git a/scripts/bin/maybe_source_env_file b/scripts/common/bin/maybe_source_env_file similarity index 100% rename from scripts/bin/maybe_source_env_file rename to scripts/common/bin/maybe_source_env_file diff --git a/scripts/bin/nd b/scripts/common/bin/nd similarity index 100% rename from scripts/bin/nd rename to scripts/common/bin/nd diff --git a/scripts/bin/nf b/scripts/common/bin/nf similarity index 100% rename from scripts/bin/nf rename to scripts/common/bin/nf diff --git a/scripts/bin/note b/scripts/common/bin/note similarity index 100% rename from scripts/bin/note rename to scripts/common/bin/note diff --git a/scripts/bin/nsync b/scripts/common/bin/nsync similarity index 100% rename from scripts/bin/nsync rename to scripts/common/bin/nsync diff --git a/scripts/bin/nvimdiff b/scripts/common/bin/nvimdiff similarity index 100% rename from scripts/bin/nvimdiff rename to scripts/common/bin/nvimdiff diff --git a/scripts/bin/open-in-git-forge b/scripts/common/bin/open-in-git-forge similarity index 100% rename from scripts/bin/open-in-git-forge rename to scripts/common/bin/open-in-git-forge diff --git a/scripts/bin/optimize-photo-for-web b/scripts/common/bin/optimize-photo-for-web similarity index 100% rename from scripts/bin/optimize-photo-for-web rename to scripts/common/bin/optimize-photo-for-web diff --git a/scripts/bin/pass-migrate-to-pass-otp b/scripts/common/bin/pass-migrate-to-pass-otp similarity index 100% rename from scripts/bin/pass-migrate-to-pass-otp rename to scripts/common/bin/pass-migrate-to-pass-otp diff --git a/scripts/bin/pipeline b/scripts/common/bin/pipeline similarity index 100% rename from scripts/bin/pipeline rename to scripts/common/bin/pipeline diff --git a/scripts/bin/poll b/scripts/common/bin/poll similarity index 100% rename from scripts/bin/poll rename to scripts/common/bin/poll diff --git a/scripts/bin/pr-for-commit b/scripts/common/bin/pr-for-commit similarity index 100% rename from scripts/bin/pr-for-commit rename to scripts/common/bin/pr-for-commit diff --git a/scripts/bin/readme.md b/scripts/common/bin/readme.md similarity index 100% rename from scripts/bin/readme.md rename to scripts/common/bin/readme.md diff --git a/scripts/bin/remote b/scripts/common/bin/remote similarity index 100% rename from scripts/bin/remote rename to scripts/common/bin/remote diff --git a/scripts/bin/resource-usage b/scripts/common/bin/resource-usage similarity index 100% rename from scripts/bin/resource-usage rename to scripts/common/bin/resource-usage diff --git a/scripts/bin/s b/scripts/common/bin/s similarity index 100% rename from scripts/bin/s rename to scripts/common/bin/s diff --git a/scripts/bin/scn b/scripts/common/bin/scn similarity index 100% rename from scripts/bin/scn rename to scripts/common/bin/scn diff --git a/scripts/bin/screenshot b/scripts/common/bin/screenshot similarity index 100% rename from scripts/bin/screenshot rename to scripts/common/bin/screenshot diff --git a/scripts/bin/script-opts b/scripts/common/bin/script-opts similarity index 100% rename from scripts/bin/script-opts rename to scripts/common/bin/script-opts diff --git a/scripts/bin/scrup b/scripts/common/bin/scrup similarity index 100% rename from scripts/bin/scrup rename to scripts/common/bin/scrup diff --git a/scripts/bin/scwd b/scripts/common/bin/scwd similarity index 100% rename from scripts/bin/scwd rename to scripts/common/bin/scwd diff --git a/scripts/bin/setbg b/scripts/common/bin/setbg similarity index 100% rename from scripts/bin/setbg rename to scripts/common/bin/setbg diff --git a/scripts/bin/simple-otp b/scripts/common/bin/simple-otp similarity index 100% rename from scripts/bin/simple-otp rename to scripts/common/bin/simple-otp diff --git a/scripts/bin/source_if_exists b/scripts/common/bin/source_if_exists similarity index 100% rename from scripts/bin/source_if_exists rename to scripts/common/bin/source_if_exists diff --git a/scripts/bin/sw b/scripts/common/bin/sw similarity index 100% rename from scripts/bin/sw rename to scripts/common/bin/sw diff --git a/scripts/bin/tdf b/scripts/common/bin/tdf similarity index 100% rename from scripts/bin/tdf rename to scripts/common/bin/tdf diff --git a/scripts/bin/tenv b/scripts/common/bin/tenv similarity index 100% rename from scripts/bin/tenv rename to scripts/common/bin/tenv diff --git a/scripts/bin/terminal-rendering-test b/scripts/common/bin/terminal-rendering-test similarity index 100% rename from scripts/bin/terminal-rendering-test rename to scripts/common/bin/terminal-rendering-test diff --git a/scripts/bin/termrec b/scripts/common/bin/termrec similarity index 100% rename from scripts/bin/termrec rename to scripts/common/bin/termrec diff --git a/scripts/bin/tls b/scripts/common/bin/tls similarity index 100% rename from scripts/bin/tls rename to scripts/common/bin/tls diff --git a/scripts/bin/tmux-edit-buffer b/scripts/common/bin/tmux-edit-buffer similarity index 100% rename from scripts/bin/tmux-edit-buffer rename to scripts/common/bin/tmux-edit-buffer diff --git a/scripts/bin/tmux-lyte-session b/scripts/common/bin/tmux-lyte-session similarity index 100% rename from scripts/bin/tmux-lyte-session rename to scripts/common/bin/tmux-lyte-session diff --git a/scripts/bin/tmux-save-buffer b/scripts/common/bin/tmux-save-buffer similarity index 100% rename from scripts/bin/tmux-save-buffer rename to scripts/common/bin/tmux-save-buffer diff --git a/scripts/bin/tmux-session-dir b/scripts/common/bin/tmux-session-dir similarity index 100% rename from scripts/bin/tmux-session-dir rename to scripts/common/bin/tmux-session-dir diff --git a/scripts/bin/tmux-session-preview b/scripts/common/bin/tmux-session-preview similarity index 100% rename from scripts/bin/tmux-session-preview rename to scripts/common/bin/tmux-session-preview diff --git a/scripts/bin/tmuxswitcher b/scripts/common/bin/tmuxswitcher similarity index 100% rename from scripts/bin/tmuxswitcher rename to scripts/common/bin/tmuxswitcher diff --git a/scripts/bin/unarchive b/scripts/common/bin/unarchive similarity index 100% rename from scripts/bin/unarchive rename to scripts/common/bin/unarchive diff --git a/scripts/bin/unbackupify b/scripts/common/bin/unbackupify similarity index 100% rename from scripts/bin/unbackupify rename to scripts/common/bin/unbackupify diff --git a/scripts/bin/weather b/scripts/common/bin/weather similarity index 100% rename from scripts/bin/weather rename to scripts/common/bin/weather diff --git a/scripts/bin/work-journal-entry b/scripts/common/bin/work-journal-entry similarity index 100% rename from scripts/bin/work-journal-entry rename to scripts/common/bin/work-journal-entry diff --git a/scripts/bin/yamldiff b/scripts/common/bin/yamldiff similarity index 100% rename from scripts/bin/yamldiff rename to scripts/common/bin/yamldiff diff --git a/scripts/bin/restartbar b/scripts/linux/bin/restartbar similarity index 100% rename from scripts/bin/restartbar rename to scripts/linux/bin/restartbar diff --git a/scripts/bin/startbar b/scripts/linux/bin/startbar similarity index 100% rename from scripts/bin/startbar rename to scripts/linux/bin/startbar diff --git a/scripts/bin/stopbar b/scripts/linux/bin/stopbar similarity index 100% rename from scripts/bin/stopbar rename to scripts/linux/bin/stopbar