Compare commits

..

84 Commits

Author SHA1 Message Date
ae8390c431 🔧 doom: now with llm tool 2025-05-09 17:27:20 -04:00
edee508882 🔧 add zed config 2025-05-07 16:27:18 -04:00
6185de0a49 🔧 k8s context in prompt 2025-04-08 19:53:05 -04:00
48e6614a51 🔧 zsh: add python plugin 2025-04-02 21:19:57 -04:00
2a06d68dfd 🔧 emacs config updates 2025-03-29 13:02:55 -04:00
3eb47b35d5 🎨 clean up formatting 2025-03-29 12:54:45 -04:00
58323fbb9d 🔧 git config tweaks
via https://blog.gitbutler.com/how-git-core-devs-configure-git/
2025-03-24 19:05:03 -07:00
55c50243e1 🔧 zsh: ghostty integration 2025-02-15 17:37:41 -05:00
4b1c957f9c 🔥 tmux config cleanup 2025-02-15 17:37:16 -05:00
4493fd1a63 🔧 omz plugin now supports asdf 0.16 2025-02-13 22:32:27 -05:00
f7c5c699b5 🔧 asdf 0.16 config 2025-02-07 13:56:40 -05:00
582e057a88 🔧 ghostty: change quick terminal key 2025-02-01 21:23:16 -05:00
b5472e52f2 ghostty: quick terminal 2025-01-31 12:21:56 -05:00
9551996914 🔧 make sure doom has SSH env 2025-01-18 19:38:23 -05:00
cb3754c79f 🔥 remove unused doom configs 2025-01-18 19:38:02 -05:00
bd8b8b96c8 🔧 adding ghostty config 2025-01-07 21:40:40 -05:00
fde1f32af8 🔧 tmux config (network is fixed) 2025-01-05 13:48:43 -05:00
0bd22877fb 🔧 change asdf installation 2025-01-03 21:55:08 -05:00
a11ea65861 🔥 major clean up of old stuff 2024-11-19 22:19:59 -05:00
bfafeb9450 🔧 asdf(nodejs): more flexible .nvmrc matching 2024-11-18 17:21:31 -05:00
147dbab750 🔧 more asdf config 2024-11-15 15:50:30 -05:00
b20126495e 🔧 add asdfrc 2024-11-12 20:25:14 -05:00
578b220288 🗑️ clean up tmux.conf 2024-10-21 11:43:09 -04:00
38cc471fee 🔧 tmux: tweak dracula plugins 2024-10-10 15:43:59 -04:00
2822d6efed add bat config 2024-10-02 18:51:52 -04:00
3223227eee 🔧 omz plugin tweaks 2024-10-02 18:51:38 -04:00
4af88f7422 trying chezmoi 2024-09-13 17:35:03 -04:00
2de443f050 🔧 nix lsp: use nixd 2024-08-02 13:15:51 -04:00
c328c8962c 🔧 sync static configs with nix 2024-07-29 11:48:49 -04:00
82cbe6a16b 🐛 starship: battery works again 2024-07-21 16:27:53 -04:00
bf9fa63654 🔧 tmux: set mouse on 2024-06-21 10:51:03 -04:00
e3ae68f7a0 🗑️another day, another deprecated option 2024-03-16 11:14:06 -04:00
3fd926a84b 🗑️remove deprecated eza option 2024-03-13 09:47:38 -04:00
5238493e10 🔧 add .npmrc for global installs in ~/.local 2024-02-27 18:25:18 -05:00
130d5dc39b 🔧 doom config updates 2024-02-09 15:55:53 -05:00
f88d10043d 🐛 fix for emacs-macport title-bar-mode 2024-01-17 22:33:16 -05:00
902607d3f2 🔥 remove ssh-agent zsh plugin 2024-01-17 22:31:56 -05:00
3bed6ab7e8 📦️ emacs 29 is now default 2023-12-22 16:36:26 -05:00
df5e2e152a ⬆️ back to emacs29 2023-11-30 15:35:09 -05:00
eb3d37cbd8 🔧 emacs config tweaks 2023-11-29 22:13:17 -05:00
0e7be442ab 💥 switch ssh git commit signing 2023-10-13 21:38:41 -04:00
05a036a07b 📦 back to emacs 28 2023-10-13 21:36:02 -04:00
115f8f5bfa 🚨 statix fix 2023-10-13 21:27:42 -04:00
52b24a13eb ⚰️ remove darwin configs 2023-10-13 21:25:49 -04:00
0c37402829 🐛 starship battery error on mac mini 2023-09-09 14:23:32 -04:00
59c60e9b09 🗑️ exa deprecated, long live eza 2023-09-08 17:51:16 -04:00
cca43233b1 🚚 move doom/emacs install path 2023-09-01 10:24:50 -04:00
c122f90a78 🔧 exa configs 2023-08-04 17:22:45 -04:00
223e1d8556 🐛 fix invalid packages definition 2023-08-04 17:22:18 -04:00
fcaf64f19f 🔧 bat and exa configs 2023-07-26 17:33:44 -04:00
35cf87eb2e 🎨 add pre-commit-hooks and cleanup 2023-07-26 13:04:43 -04:00
63b05b74b4 🔨 add devshell 2023-07-24 16:50:53 -04:00
a2b4835be3 📌 emacs: use emacs29 2023-07-24 16:50:21 -04:00
c365471cc6 emacs: add tree-sitter 2023-07-24 16:49:40 -04:00
65e0539591 📌 bump home.stateVersion 2023-02-20 13:38:28 -05:00
10b7035a6c 🩹 fix standalone config 2023-02-18 14:24:13 -05:00
b3125f777a 🚚 move packages to athens
trying to keep dotfiles just for... dotfiles in home-manager
2023-02-15 12:11:18 -05:00
b65cc863e6 📦️ add pulumi-bin 2023-01-28 14:34:30 -05:00
69ef6ad5de 📦️ add awscli2 2022-11-21 17:51:02 -05:00
4d05de816a 🔥 emacs: don't always doom sync 2022-09-23 17:05:56 -04:00
c5aae9f656 ⚰️ no more :ui fill-mode 2022-09-18 19:46:00 -04:00
65a2cc2cf5 🔧 btop has a module now 2022-09-07 20:15:00 -04:00
94b2a83bc8 🔥 remove dev languages / tools (again)
dear future me: you don't want all this stuff on all machines where your
dotfiles are.
2022-09-02 19:23:29 -04:00
52aedf330d 🔧 zsh: add dircolors 2022-09-02 14:37:52 -04:00
f502ae1cf2 🐛 deno marked broken 2022-08-27 11:45:16 -04:00
ec4fb9acf5 lsp for javascript / web 2022-08-27 11:15:24 -04:00
b919168c44 ♻️ refactor nix configs 2022-08-27 10:57:48 -04:00
8e8ce37574 doom nix +lsp (and re-enable format on save) 2022-08-17 20:14:14 -04:00
4534a5e1f6 add fzf
closes #4
2022-08-09 23:02:41 -04:00
9c94f13ffb 📦 add btop and drone-cli 2022-07-12 18:30:18 -04:00
6b49860346 ♻️ homeManagerConfiguration changes 2022-06-30 15:45:46 -04:00
84b9bb3558 📌 update stateVersion 2022-06-28 21:54:25 -04:00
4586ccbb2a 📦 rename gh package 2022-06-27 19:32:01 -04:00
0570532add 📦 add rnix-lsp (for vscode) 2022-06-22 17:27:28 -04:00
010c74b1b7 🔥 remove old doom whitelist 2022-06-22 17:27:10 -04:00
e8d4263e65 🔧 clean up flake.nix 2022-06-22 16:32:51 -04:00
d4218579ce 📦 adding cachix 2022-06-14 21:00:11 -04:00
3c9dc77735 🔧 messing with deno 2022-06-13 22:12:56 -04:00
a9e9c0a2e8 Merge pull request #4 from bgins/nix-channel-update
Add nix-channel update
2022-06-08 10:13:35 -04:00
da0141cab8 Add nix-channel update 2022-06-07 14:26:19 -07:00
213260ff94 💄 dracula for tmux 2022-05-10 22:20:33 -04:00
5fbf4f71a9 🩹 disable format on save for now. 2022-05-09 11:32:03 -04:00
8009def878 🔧 use nixpkgs-fmt 2022-05-06 19:56:16 -04:00
9cfdb5b109 💄 dracula theme 2022-05-06 19:55:26 -04:00
33 changed files with 520 additions and 774 deletions

1
.chezmoiroot Normal file
View File

@ -0,0 +1 @@
chezmoi

1
.envrc Normal file
View File

@ -0,0 +1 @@
use flake

2
.gitignore vendored
View File

@ -1 +1,3 @@
result
.direnv
/.pre-commit-config.yaml

View File

@ -8,6 +8,8 @@ This is how I manage my workstations. Currently using [nix](https://nixos.org) (
1. Install nix-darwin:
* `nix-build https://github.com/LnL7/nix-darwin/archive/master.tar.gz -A installer`
* `./result/bin/darwin-installer`
1. Add home-manager channel: `nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager`
1. Add home-manager channel:
* `nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager`
* `nix-channel --update`
1. Link `./darwin/configuration.nix` to `~/.nixpkgs/darwin-configuration.nix`
1. Run `darwin-rebuild switch`

View File

@ -0,0 +1,24 @@
[".config/emacs"]
type = "git-repo"
url = "https://github.com/doomemacs/doomemacs"
exact = true
stripComponents = 1
refreshPeriod = "24h"
[".config/tmux/plugins/tpm"]
type = "git-repo"
url = "https://github.com/tmux-plugins/tpm.git"
exact = true
stripComponents = 1
refreshPeriod = "24h"
[".oh-my-zsh"]
type = "git-repo"
url = "https://github.com/ohmyzsh/ohmyzsh.git"
exact = true
stripComponents = 1
refreshPeriod = "24h"
[".oh-my-zsh/custom/plugins/zsh-autosuggestions"]
type = "git-repo"
url = "https://github.com/zsh-users/zsh-autosuggestions.git"
exact = true
stripComponents = 1
refreshPeriod = "24h"

1
chezmoi/dot_asdfrc Normal file
View File

@ -0,0 +1 @@
legacy_version_file = yes

View File

@ -0,0 +1,26 @@
# This is `bat`s configuration file. Each line either contains a comment or
# a command-line option that you want to pass to `bat` by default. You can
# run `bat --help` to get a list of all possible configuration options.
# Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes`
# for a list of all available themes
#--theme="TwoDark"
--theme="Dracula"
# Enable this to use italic text on the terminal. This is not supported on all
# terminal emulators (like tmux, by default):
#--italic-text=always
# Uncomment the following line to disable automatic paging:
#--paging=never
# Uncomment the following line if you are using less version >= 551 and want to
# enable mouse scrolling support in `bat` when running inside tmux. This might
# disable text selection, unless you press shift.
#--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse"
# Syntax mappings: map a certain filename pattern to a language.
# Example 1: use the C++ syntax for Arduino .ino files
# Example 2: Use ".gitignore"-style highlighting for ".ignore" files
#--map-syntax "*.ino:C++"
#--map-syntax ".ignore:Git Ignore"

View File

@ -26,13 +26,13 @@
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
(setq doom-theme 'doom-one)
(setq doom-theme 'doom-dracula)
;; If you use `org' and don't want your org files in the default location below,
;; change `org-directory'. It must be set before org loads!
(setq deft-directory "~/Sync/Notes"
deft-default-extension "md"
deft-recursive t)
;; (setq deft-directory "~/Sync/Notes"
;; deft-default-extension "md"
;; deft-recursive t)
;; This determines the style of line numbers in effect. If set to `nil', line
;; numbers are disabled. For relative line numbers, set this to `relative'.
@ -57,7 +57,31 @@
;; they are implemented.
;;
(global-wakatime-mode)
(pinentry-start)
(add-to-list 'auto-mode-alist '("\\.njk" . web-mode))
;; haskell
(setq lsp-haskell-formatting-provider "stylish-haskell")
;; llm
(gptel-make-ollama "Ollama"
:host "localhost:11434"
:stream t
:models '(mistral:latest))
;; nix-mode
(with-eval-after-load 'lsp-mode
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection "nixd")
:major-modes '(nix-mode)
:priority 0
:server-id 'nixd)))
;; obsidian
(use-package obsidian
:config
(global-obsidian-mode t)
:custom
(obsidian-directory "~/Documents/Notes")
(markdown-enable-wiki-links t))
;; web-mode
(add-to-list 'auto-mode-alist '("\\.njk" . web-mode))

View File

@ -1,12 +1,11 @@
;;; init.el -*- lexical-binding: t; -*-
;;;
;; This file controls what Doom modules are enabled and what order they load
;; in. Remember to run 'doom sync' after modifying it!
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
;; documentation. There you'll find a "Module Index" link where you'll find
;; a comprehensive list of Doom's modules and what flags they support.
;; documentation. There you'll find a link to Doom's Module Index where all
;; of our modules are listed, including what flags they support.
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
;; 'C-c c k' for non-vim users) to view its documentation. This works on
@ -16,25 +15,26 @@
;; directory (for easy access to its source code).
(doom! :input
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
;;chinese
;;japanese
;;layout ; auie,ctsrnm is the superior home row
:completion
company ; the ultimate code completion backend
;; company ; the ultimate code completion backend
(corfu +orderless) ; complete with cap(f), cape and a flying feather!
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
ivy ; a search engine for love and life
;;ivy ; a search engine for love and life
vertico ; the search engine of the future
:ui
deft ; notational velocity for Emacs
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
doom-quit ; DOOM quit-message prompts when you quit Emacs
(emoji +unicode) ; 🙂
fill-column ; a `fill-column' indicator
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;hydra
;;indent-guides ; highlighted indent columns
ligatures ; ligatures and symbols to make your code pretty again
minimap ; show a map of the code on the side
@ -46,14 +46,14 @@
;;tabs ; a tab bar for Emacs
treemacs ; a project drawer, like neotree but cooler
unicode ; extended unicode support for various languages
vc-gutter ; vcs diff in the fringe
(vc-gutter +pretty) ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
;;window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces
;;zen ; distraction-free coding or writing
:editor
(evil +everywhere) ; come to the dark side, we have cookies
(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
(format +onsave) ; automated prettiness
@ -69,6 +69,7 @@
:emacs
dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
;;eww ; the internet is gross
;;ibuffer ; interactive buffer management
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
@ -81,38 +82,40 @@
:checkers
syntax ; tasing you for every semicolon you forget
;;spell ; tasing you for misspelling mispelling
;;(spell +flyspell) ; tasing you for misspelling mispelling
;;grammar ; tasing grammar mistake every you make
:tools
;;ansible
;;biblio ; Writes a PhD for you (citation needed)
;;collab ; buffers with friends
;;debugger ; FIXME stepping through code, to help you add bugs
direnv
docker
;;editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
gist ; interacting with github gists
lookup ; navigate your code and its documentation
lsp
llm ; when I said you needed friends, I didn't mean...
lsp ; M-x vscode
magit ; a git porcelain for Emacs
make ; run make tasks from Emacs
;;make ; run make tasks from Emacs
;;pass ; password manager for nerds
;;pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
;;rgb ; creating color strings
;;taskrunner ; taskrunner for all your projects
;;terraform ; infrastructure as code
terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
tree-sitter ; syntax and parsing, sitting in a tree...
;;upload ; map local to remote projects via ssh/ftp
:os
(:if IS-MAC macos) ; improve compatibility with macOS
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
;;tty ; improve the terminal Emacs experience
:lang
;;agda ; types of types of types of types...
;;cc ; C/C++/Obj-C madness
;;beancount ; mind the GAAP
;;(cc +lsp) ; C > C++ == 1
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
@ -120,7 +123,7 @@
;;csharp ; unity, .NET, and mono shenanigans
;;data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
(elixir +lsp) ; erlang done right
(elixir +lsp +tree-sitter) ; erlang done right
(elm +lsp) ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
@ -129,13 +132,14 @@
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
;;gdscript ; the language you waited for
(go +lsp) ; the hipster dialect
(graphql +lsp) ; Give queries a REST
(go +lsp +tree-sitter) ; the hipster dialect
(haskell +lsp) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ; a language you can depend on
json ; At least it ain't XML
;;(java +meghanada) ; the poster child for carpal tunnel syndrome
javascript ; all(hope(abandon(ye(who(enter(here))))))
(javascript +lsp +tree-sitter) ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
;;latex ; writing papers in Emacs has never been so fun
@ -145,7 +149,7 @@
;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
nix ; I hereby declare "nix geht mehr!"
(nix +lsp +tree-sitter) ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
;;(org +roam) ; organize your plain life in plain text
;;php ; perl's insecure younger brother
@ -158,7 +162,7 @@
rest ; Emacs as a REST client
;;rst ; ReST in peace
(ruby +rails +lsp) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
(rust +lsp +tree-sitter) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
;;scheme ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
@ -166,7 +170,7 @@
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
web ; the tubes
(web +lsp +tree-sitter) ; the tubes
yaml ; JSON, but readable
:email
@ -184,5 +188,5 @@
;;literate
(default +bindings +smartparens))
(when noninteractive
(add-to-list 'doom-env-whitelist "^SSH_"))
(after! doom-cli-env
(add-to-list 'doom-env-allow "^SSH_"))

View File

@ -3,51 +3,50 @@
;; To install a package with Doom you must declare them here and run 'doom sync'
;; on the command line, then restart Emacs for the changes to take effect -- or
;; use 'M-x doom/reload'.
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
;(package! some-package)
;; (package! some-package)
(package! obsidian)
(package! wakatime-mode)
(package! pinentry)
;; To install a package directly from a remote git repo, you must specify a
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
;; https://github.com/raxod502/straight.el#the-recipe-format
;(package! another-package
; :recipe (:host github :repo "username/repo"))
;; https://github.com/radian-software/straight.el#the-recipe-format
;; (package! another-package
;; :recipe (:host github :repo "username/repo"))
;; If the package you are trying to install does not contain a PACKAGENAME.el
;; file, or is located in a subdirectory of the repo, you'll need to specify
;; `:files' in the `:recipe':
;(package! this-package
; :recipe (:host github :repo "username/repo"
; :files ("some-file.el" "src/lisp/*.el")))
;; (package! this-package
;; :recipe (:host github :repo "username/repo"
;; :files ("some-file.el" "src/lisp/*.el")))
;; If you'd like to disable a package included with Doom, you can do so here
;; with the `:disable' property:
;(package! builtin-package :disable t)
;; (package! builtin-package :disable t)
;; You can override the recipe of a built in package without having to specify
;; all the properties for `:recipe'. These will inherit the rest of its recipe
;; from Doom or MELPA/ELPA/Emacsmirror:
;(package! builtin-package :recipe (:nonrecursive t))
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
;; (package! builtin-package :recipe (:nonrecursive t))
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
;; Specify a `:branch' to install a package from a particular branch or tag.
;; This is required for some packages whose default branch isn't 'master' (which
;; our package manager can't deal with; see raxod502/straight.el#279)
;(package! builtin-package :recipe (:branch "develop"))
;; our package manager can't deal with; see radian-software/straight.el#279)
;; (package! builtin-package :recipe (:branch "develop"))
;; Use `:pin' to specify a particular commit to install.
;(package! builtin-package :pin "1a2b3c4d5e")
;; (package! builtin-package :pin "1a2b3c4d5e")
;; Doom's packages are pinned to a specific commit and updated from release to
;; release. The `unpin!' macro allows you to unpin single packages...
;(unpin! pinned-package)
;; (unpin! pinned-package)
;; ...or multiple packages
;(unpin! pinned-package another-pinned-package)
;; (unpin! pinned-package another-pinned-package)
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
;(unpin! t)
;; (unpin! t)

View File

@ -0,0 +1,29 @@
font-family = "JetBrainsMono Nerd Font Mono"
font-size = 14
background-opacity = 1.0
palette = 0=#21222c
palette = 1=#ff5555
palette = 2=#50fa7b
palette = 3=#f1fa8c
palette = 4=#bd93f9
palette = 5=#ff79c6
palette = 6=#8be9fd
palette = 7=#f8f8f2
palette = 8=#6272a4
palette = 9=#ff6e6e
palette = 10=#69ff94
palette = 11=#ffffa5
palette = 12=#d6acff
palette = 13=#ff92df
palette = 14=#a4ffff
palette = 15=#ffffff
background = 282a36
foreground = f8f8f2
cursor-color = f8f8f2
selection-background = 44475a
selection-foreground = f8f8f2
keybind = global:ctrl+escape=toggle_quick_terminal

View File

@ -0,0 +1,50 @@
[alias]
lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
st = "status -s"
undo = "reset HEAD~1 --mixed"
smu = "submodule update --init --recursive"
ignore = "!gi() { curl -L -s https://www.gitignore.io/api/$@ ;}; gi"
up = "pull --rebase --autostash"
cleanup = "!git branch -vv|grep ': gone]'|awk '{print $1}'|xargs git branch -D"
[commit]
gpgsign = true
[diff]
algorithm = histogram
colorMoved = plain
mnemonicPrefix = true
renames = true
[fetch]
prune = true
pruneTags = true
all = true
[github]
user = "walkah"
[gpg]
format = "ssh"
[gpg "ssh"]
allowedSignersFile = "~/.ssh/allowed_signers"
[init]
defaultBranch = "main"
[pull]
rebase = true
[push]
default = simple
autoSetupRemote = true
followTags = true
[rebase]
autoStash = true
[user]
email = "walkah@walkah.net"
name = "James Walker"
signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOxgkaPcUYkMjk7SEBFrYpJ2mGK+8iPgLYwV+XpNp5Nl"

View File

@ -13,5 +13,8 @@ disabled=true
ssh_only = false
format = "[$hostname]($style):"
[kubernetes]
disabled = false
[username]
format = "[$user]($style)@"

View File

@ -0,0 +1,19 @@
unbind C-b
set -g prefix C-o
set -g mouse on
set -g set-titles on
set -g set-titles-string "[#S] #W@#h (#I)"
bind-key X kill-session
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'dracula/tmux'
# dracula: https://draculatheme.com/tmux
set -g @dracula-plugins "network battery ssh-session"
set -g @dracula-show-left-icon session
set -g @dracula-show-powerline true
run '~/.config/tmux/plugins/tpm/tpm'

View File

@ -0,0 +1,37 @@
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run the `open default settings` command
// from the command palette or from `Zed` application menu.
{
"features": {
"edit_prediction_provider": "zed"
},
"agent": {
"default_model": {
"provider": "copilot_chat",
"model": "claude-3-7-sonnet"
},
"version": "2"
},
"auto_install_extensions": {
"dockerfile": true,
"docker-compose": true,
"dracula": true,
"html": true,
"nix": true,
"terraform": true
},
"theme": "Dracula",
"buffer_font_family": "JetBrainsMono Nerd Font",
"buffer_font_size": 14,
"format_on_save": "on",
"languages": {
"Nix": {
"language_servers": ["nixd", "!nil"]
}
}
}

1
chezmoi/dot_npmrc Normal file
View File

@ -0,0 +1 @@
prefix = ${HOME}/.local

6
chezmoi/dot_zshenv Normal file
View File

@ -0,0 +1,6 @@
export EDITOR="vim"
export GOPATH="$HOME/.go"
export PATH="$PATH${PATH:+:}$HOME/.cargo/bin:$HOME/.deno/bin:$HOME/.config/emacs/bin:$HOME/.go/bin:$HOME/.local/bin"

47
chezmoi/dot_zshrc Normal file
View File

@ -0,0 +1,47 @@
# Path to your oh-my-zsh configuration.
export ZSH=$HOME/.oh-my-zsh
plugins=(
asdf
aws
bgnotify
command-not-found
direnv
docker
docker-compose
eza
extract
gcloud
git
github
mix
python
tmux
zsh-autosuggestions
)
# asdf config
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
export ASDF_NODEJS_LEGACY_FILE_DYNAMIC_STRATEGY=latest_installed
# eza plugin config
zstyle ':omz:plugins:eza' 'git-status' yes
zstyle ':omz:plugins:eza' 'header' yes
# python plugin config
export PYTHON_AUTO_VRUN=true
# OH MY ZSH!
source $ZSH/oh-my-zsh.sh
# Load starship
eval "$(starship init zsh)"
# Aliases
if command -v bat &> /dev/null; then
alias -- cat=bat
fi
if [[ -n $GHOSTTY_RESOURCES_DIR ]]; then
source "$GHOSTTY_RESOURCES_DIR"/shell-integration/zsh/ghostty-integration
fi

View File

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ0mE4MyMnfd1b2nlBJT7kpZ6Vov+ILuGNfzdp5ZBNQe

View File

@ -1,45 +0,0 @@
# ~/.Brewfile
# taps
tap 'homebrew/cask-drivers'
tap 'homebrew/cask-fonts'
# brews
brew 'coreutils'
brew 'mas'
# casks
cask '1password'
cask 'alfred'
cask 'brave-browser'
cask 'dash'
cask 'discord'
cask 'docker'
cask 'fantastical'
cask 'figma'
cask 'firefox'
cask 'font-jetbrains-mono'
cask 'google-chrome'
cask 'hazel'
cask 'iterm2'
cask 'keybase'
cask 'microsoft-edge'
cask 'slack'
cask 'sonos'
cask 'spotify'
cask 'stats'
cask 'syncthing'
cask 'synology-drive'
cask 'visual-studio-code'
cask 'zoomus'
# mac app store
mas 'Bumpr', id: 1166066070
mas 'Day One', id: 1055511498
mas 'Drafts', id: 1435957248
mas 'Magnet', id: 441258766
mas 'Parcel', id: 639968404
mas 'Reeder', id: 1529448980
mas 'Todoist', id: 585829637
mas 'UlyssesMac', id: 1225570693
mas 'Xcode', id: 497799835

View File

@ -1,31 +0,0 @@
[user]
name = James Walker
email = walkah@walkah.net
signingkey = 4D47A81C
[color]
diff = auto
status = auto
branch = auto
ui = auto
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
st = status -s
smu = submodule update --init --recursive
ignore = "!gi() { curl -L -s https://www.gitignore.io/api/$@ ;}; gi"
up = pull --rebase --autostash
cleanup = "!git branch --merged | grep -v '\\*\\|master\\|develop' | xargs -n 1 git branch -d"
[github]
user = walkah
[git-up "bundler"]
check = true
autoinstall = true
[filter "lfs"]
clean = git lfs clean %f
smudge = git lfs smudge %f
required = true
[commit]
gpgsign = true
[pull]
rebase = false
[init]
defaultBranch = main

View File

@ -1,16 +0,0 @@
unbind C-b
set -g prefix C-o
set -g set-titles on
set -g set-titles-string "[#S] #W@#h (#I)"
set -g status-right ""
set -g default-terminal "screen-256color"
set-option -g status-left-length 60
set -g status-bg black
set -g status-fg white
bind-key X kill-session
#set-option -g default-command "reattach-to-user-namespace -l zsh"

View File

@ -1,45 +0,0 @@
"
" walkah's vimrc (vim 6)
"
" $Id: .vimrc,v 1.2 2005-11-08 20:17:32 walkah Exp $
" no compatible
set nocp
" don't wrap lines
set nowrap
" don't keep backups
set nobackup
" visual bell
set visualbell
set laststatus=2
" indenting stuff
set expandtab
set tabstop=2
set shiftwidth=2
set smarttab
set autoindent
set smartindent
set title
" folding
set foldmethod=marker
" search
set nohlsearch
set incsearch
set ignorecase
set showmatch
" syntax hilighting
syntax on
" mappings
map <PageUp> <C-B>
map <PageDown> <C-F>

View File

@ -1,25 +0,0 @@
# ignore system zsh
IGNORE_SYSTEM_ZSH=1
# unique path... and put my stuff first
typeset -U path
path=(~/bin ~/local/bin ~/local/sbin /usr/local/bin /usr/local/sbin /usr/bin /usr/X11R6/bin /bin /usr/sbin /sbin /usr/games)
### environment
export PAGER=less
export RSYNC_RSH=ssh
export CVS_RSH=ssh
#export CVSROOT=/home/cvs
[ -f $HOME/.environment ] && . $HOME/.environment
# Load asdf
if command -v brew &> /dev/null; then
. $(brew --prefix asdf)/asdf.sh
else
. ~/.asdf/asdf.sh
fi
[ -e $HOME/.nix-profile/etc/profile.d/nix.sh ] && . $HOME/.nix-profile/etc/profile.d/nix.sh

View File

@ -1,69 +0,0 @@
# Path to your oh-my-zsh configuration.
export ZSH=$HOME/.oh-my-zsh
# Set to the name theme to load.
# Look in ~/.oh-my-zsh/themes/
# export ZSH_THEME="walkah"
# My custom directory
export ZSH_CUSTOM=$HOME/.zsh/custom
# Set to this to use case-sensitive completion
# export CASE_SENSITIVE="true"
# Comment this out to disable weekly auto-update checks
# export DISABLE_AUTO_UPDATE="true"
# Uncomment following line if you want to disable colors in ls
# export DISABLE_LS_COLORS="true"
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(asdf direnv aws gcloud extract command-not-found tmux git github ssh-agent docker docker-compose mix)
# ruby
if [ -x ruby ]; then
plugins=($plugins ruby gem rails bundler heroku)
fi
# node
plugins=($plugins npm yarn react-native)
# python
plugins=($plugins pip pipenv)
# Platform specific settings
case "$OSTYPE" in
darwin*)
plugins=($plugins osx)
;;
linux*)
plugins=($plugins debian)
export PATH=/snap/bin:$PATH
;;
esac
# OH MY ZSH!
source $ZSH/oh-my-zsh.sh
# Android Studio
if [ -d ~/Library/Android/sdk ]; then
export ANDROID_SDK=~/Library/Android/sdk
export PATH=~/Library/Android/sdk/platform-tools:$PATH
fi
# zsh autosuggestions
if command -v brew &> /dev/null; then
zsh_autosuggestions=$(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh
if [ -f $zsh_autosuggestions ]; then
source $zsh_autosuggestions
fi
fi
if [ $TERM = "screen" ]; then
export DISABLE_AUTO_TITLE="true"
fi
export EDITOR="vim"
export LSCOLORS="ExGxFxdxCxDxDxhbadExEx"
eval "$(starship init zsh)"

View File

@ -1,47 +0,0 @@
#!/bin/bash
function install_latest() {
version=$(asdf list-all $1 | grep -v '[a-z]' | tail -1)
asdf install $1 $version
asdf global $1 $version
}
echo "* Updating homesick..."
homesick pull
homesick symlink
case "$OSTYPE" in
darwin*)
echo "* Restoring mackup..."
mackup restore
echo "* Homebrew updates..."
brew bundle --global --no-lock
brew upgrade
echo "* Upgrading mac app store apps..."
mas upgrade
;;
linux*)
sudo apt update && sudo apt upgrade
sudo snap refresh
;;
esac
echo "* asdf update..."
export R_CONFIGURE_OPTIONS="--with-x=no"
for plugin in $(cat ~/.tool-versions | awk '{print $1}'); do asdf plugin-add $plugin; done
asdf update
asdf plugin-update --all
asdf install
for plugin in $(cat ~/.tool-versions | awk '{print $1}'); do install_latest $plugin; done
echo "* Syncing repositories..."
mr -j 5 update
echo "* Upgrading oh-my-zsh..."
cd ~/.oh-my-zsh
git pull --rebase --stat origin master

View File

@ -1,21 +0,0 @@
#!/bin/sh
echo "* Shutdown vagrant..."
for box in $(vagrant global-status|grep running|awk '{ print $1 }'); do vagrant halt $box; done
echo "* Shutdown docker..."
# for machine in $(docker-machine ls -q); do docker-machine stop $machine; done
for container in $(docker ps -a -q); do docker stop $container; done
docker system prune -f
echo "* Stop running services..."
brew services stop --all
echo "* Kill tmux sessions..."
tmux kill-server
echo "* Uncommitted projects..."
mr -m status
echo "* Homesick status..."
homesick status

View File

@ -1,42 +0,0 @@
#!/bin/sh
# Inspired by https://github.com/mathiasbynens/dotfiles/blob/master/.macos
# Dock settings
defaults write com.apple.dock 'orientation' -string 'left'
defaults write com.apple.dock autohide -bool true
killall Dock
# Finder settings
# TODO: turn on stacks?
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true
defaults write com.apple.finder ShowMountedServersOnDesktop -bool true
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true
killall Finder
# Safari
# Enable the Develop menu
defaults write -app Safari IncludeDevelopMenu -bool true
defaults write -app Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true
defaults write -app Safari WebKitPreferences.developerExtrasEnabled -bool true
# Disable AutoFill
defaults write -app Safari AutoFillFromAddressBook -bool false
defaults write -app Safari AutoFillPasswords -bool false
defaults write -app Safari AutoFillCreditCardData -bool false
defaults write -app Safari AutoFillMiscellaneousForms -bool false
# Mail
# TODO: notifications for contacts only
# TODO: disable sounds
# Sharing
# Turn on SSH
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
# TODO: turn on VNC?
# iTerm 2
# Specify the preferences directory
defaults write com.googlecode.iterm2.plist PrefsCustomFolder -string "~/SynologyDrive/Config/iTerm/"
# Tell iTerm2 to use the custom preferences in the directory
defaults write com.googlecode.iterm2.plist LoadPrefsFromCustomFolder -bool true

View File

@ -1,85 +0,0 @@
{ config, pkgs, ... }:
{
imports = [ <home-manager/nix-darwin> ./homebrew.nix ];
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages = with pkgs; [
deno
elixir
emacs
exercism
go
niv
nodejs
rustup
];
# Use a custom configuration.nix location.
# $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix
# environment.darwinConfig = "$HOME/.config/nixpkgs/darwin/configuration.nix";
# Auto upgrade nix package and the daemon service.
services.nix-daemon.enable = true;
nix.package = pkgs.nix;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
nix.distributedBuilds = true;
nix.buildMachines = [{
hostName = "plato";
systems = [ "x86_64-linux" "aarch64-linux" ];
maxJobs = 12;
speedFactor = 2;
supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
}];
# Binary Cache for Haskell.nix
nix.binaryCachePublicKeys =
[ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ];
nix.binaryCaches = [ "https://hydra.iohk.io" ];
# Create /etc/bashrc that loads the nix-darwin environment.
programs = {
zsh = {
enable = true;
promptInit = "";
};
};
# programs.fish.enable = true;
users.nix.configureBuildUsers = true;
users.users.walkah = {
home = "/Users/walkah";
shell = pkgs.zsh;
};
home-manager.users.walkah = import ../home.nix;
services.lorri.enable = true;
system = {
defaults = {
dock = {
autohide = true;
orientation = "left";
};
};
};
system.activationScripts.applications.text = pkgs.lib.mkForce (
''
rm -rf /Applications/Nix
mkdir -p /Applications/Nix
for app in $(find ${config.system.build.applications}/Applications -maxdepth 1 -type l); do
src="$(/usr/bin/stat -f%Y "$app")"
cp -r "$src" /Applications/Nix
done
''
);
# Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog
system.stateVersion = 4;
}

View File

@ -1,81 +0,0 @@
{ config, lib, pkgs, ... }:
{
homebrew = {
enable = true;
autoUpdate = true;
cleanup = "zap";
global = {
brewfile = true;
noLock = true;
};
taps = [
"homebrew/cask"
"homebrew/cask-drivers"
"homebrew/cask-fonts"
"homebrew/cask-versions"
];
brews = [ "coreutils" ];
casks = [
"1password"
"adobe-acrobat-reader"
"balenaetcher"
"bartender"
"brave-browser"
"bunch"
"calibre"
"dash"
"discord"
"docker"
"element"
"fantastical"
"figma"
"firefox"
"firefox-developer-edition"
"font-jetbrains-mono"
"font-jetbrains-mono-nerd-font"
"gather"
"google-chrome"
"gpg-suite"
"hazel"
"ipfs"
"iterm2"
"keybase"
"logitech-options"
"logseq"
"microsoft-edge"
"minecraft"
"obsidian"
"plexamp"
"r"
"raycast"
"rescuetime"
"rocket"
"rstudio"
"slack"
"sonos"
"spotify"
"stats"
"steam"
"syncthing"
"synology-drive"
"visual-studio-code"
"zoom"
];
masApps = {
Bumpr = 1166066070;
"Day One" = 1055511498;
Drafts = 1435957248;
Parcel = 639968404;
Reeder = 1529448980;
Tailscale = 1475387142;
Todoist = 585829637;
UlyssesMac = 1225570693;
Xcode = 497799835;
};
};
}

108
flake.lock generated
View File

@ -1,5 +1,60 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -7,11 +62,11 @@
]
},
"locked": {
"lastModified": 1640592198,
"narHash": "sha256-F5dWVGQMscmGyLTzNLocPB1v8Ijp8ONx8Nq9Dmi5PSw=",
"lastModified": 1746798521,
"narHash": "sha256-axfz/jBEH9XHpS7YSumstV7b2PrPf7L8bhWUtLBv3nA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0b197562ab7bf114dd5f6716f41d4b5be6ccd357",
"rev": "e95a7c5b6fa93304cd2fd78cf676c4f6d23c422c",
"type": "github"
},
"original": {
@ -22,11 +77,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1640418986,
"narHash": "sha256-a8GGtxn2iL3WAkY5H+4E0s3Q7XJt6bTOvos9qqxT5OQ=",
"lastModified": 1746576598,
"narHash": "sha256-FshoQvr6Aor5SnORVvh/ZdJ1Sa2U4ZrIMwKBX5k2wu0=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5c37ad87222cfc1ec36d6cd1364514a9efc2f7f2",
"rev": "b3582c75c7f21ce0b429898980eddbbf05c68e55",
"type": "github"
},
"original": {
@ -36,10 +91,49 @@
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1746537231,
"narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "fa466640195d38ec97cf0493d6d6882bc4d14969",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},

View File

@ -3,49 +3,58 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
pre-commit-hooks = {
url = "github:cachix/pre-commit-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, home-manager }: {
};
outputs = { self, nixpkgs, home-manager, flake-utils, pre-commit-hooks, ... }:
flake-utils.lib.eachSystem [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ]
(system:
let pkgs = nixpkgs.legacyPackages.${system};
in
{
homeConfigurations = {
aarch64-darwin = home-manager.lib.homeManagerConfiguration {
system = "aarch64-darwin";
homeDirectory = "/Users/walkah";
username = "walkah";
stateVersion = "21.03";
configuration = { config, pkgs, ... }: {
imports = [
./home.nix
];
};
};
x86_64-darwin = home-manager.lib.homeManagerConfiguration {
system = "x86_64-darwin";
homeDirectory = "/Users/walkah";
username = "walkah";
stateVersion = "21.03";
configuration = { config, pkgs, ... }: {
imports = [
./home.nix
];
};
};
x86_64-linux = home-manager.lib.homeManagerConfiguration {
system = "x86_64-linux";
homeDirectory = "/home/walkah";
username = "walkah";
stateVersion = "21.03";
configuration = { config, pkgs, ... }: {
imports = [
walkah = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
./home.nix
];
};
};
packages.default = self.homeConfigurations.${system}.walkah.activationPackage;
checks = {
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
deadnix.enable = true;
nixpkgs-fmt.enable = true;
statix.enable = true;
};
defaultPackage.aarch64-darwin = self.homeConfigurations.aarch64-darwin.activationPackage;
defaultPackage.x86_64-darwin = self.homeConfigurations.x86_64-darwin.activationPackage;
defaultPackage.x86_64-linux = self.homeConfigurations.x86_64-linux.activationPackage;
};
};
devShells.default = pkgs.mkShell {
name = "dotfiles";
buildInputs = with pkgs; [
deadnix
nil
nixpkgs-fmt
statix
];
inherit (self.checks.${system}.pre-commit-check) shellHook;
};
});
}

159
home.nix
View File

@ -1,157 +1,30 @@
{ config, pkgs, ... }: {
# Let Home Manager install and manage itself.
{ lib, pkgs, ... }: {
programs.home-manager.enable = true;
# Home Manager needs a bit of information about you and the
# paths it should manage.
# home.username = builtins.getEnv "USER";
# home.homeDirectory = builtins.getEnv "HOME";
home.sessionPath = [
"$HOME/.cargo/bin"
"$HOME/.emacs.d/bin"
"$HOME/.go/bin"
"$HOME/.local/bin"
];
home.packages = with pkgs; [
home = {
username = "walkah";
homeDirectory = if pkgs.stdenv.isDarwin then "/Users/walkah" else "/home/walkah";
packages = with pkgs; [
chezmoi
bat
direnv
exa
eza
fd
fzf
git
gitAndTools.gh
htop
jq
mr
nixpkgs-fmt
nixfmt
ripgrep
tea
wakatime
starship
tmux
];
home.file.".doom.d" = {
onChange = ''
#!/bin/sh
DOOM=$HOME/.emacs.d
if [ ! -d $DOOM ]; then
git clone --depth 1 https://github.com/hlissner/doom-emacs $DOOM
activation.chezmoi = lib.hm.dag.entryAfter [ "installPackages" ] ''
export PATH="${pkgs.git}/bin:$PATH"
if [ ! -d $HOME/.local/share/chezmoi ]; then
$DRY_RUN_CMD ${pkgs.chezmoi}/bin/chezmoi init --apply walkah/dotfiles
fi
$DOOM/bin/doom sync
'';
source = ./config/.doom.d;
recursive = true;
};
home.file.".ghci".text = ''
:set prompt "λ> "
'';
programs = {
zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
oh-my-zsh = {
enable = true;
plugins = [
"bundler"
"direnv"
"docker"
"docker-compose"
"git"
"golang"
"mix"
"rails"
"ssh-agent"
"tmux"
];
stateVersion = "24.05";
};
sessionVariables = {
EDITOR = "vim";
GOPATH = "$HOME/.go";
};
shellAliases = {
ls = "exa --git";
ll = "exa -lh --git";
};
};
starship = {
enable = true;
enableZshIntegration = true;
settings = {
character = {
success_symbol = "[»](bold green) ";
error_symbol = "[](bold red) ";
};
directory = {
fish_style_pwd_dir_length = 1;
truncation_length = 1;
};
hostname = {
ssh_only = false;
format = "[$hostname]($style):";
};
gcloud = { disabled = true; };
kubernetes = { disabled = false; };
username = { format = "[$user]($style)@"; };
};
};
git = {
enable = true;
userName = "James Walker";
userEmail = "walkah@walkah.net";
aliases = {
lg =
"log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
st = "status -s";
undo = "reset HEAD~1 --mixed";
};
extraConfig = {
github.user = "walkah";
init.defaultBranch = "main";
pull.rebase = true;
rebase.autoStash = true;
};
signing = {
key = "8896FEC44D47A81C";
signByDefault = true;
};
};
tmux = {
enable = true;
extraConfig = ''
set -g set-titles on
set -g set-titles-string "[#S] #W@#h (#I)"
set -g status-bg black
set -g status-fg white
'';
shortcut = "o";
terminal = "screen-256color";
};
emacs = {
enable = true;
package = pkgs.emacs-nox;
extraPackages = epkgs: [ epkgs.vterm ];
};
vim = { enable = true; };
};
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "21.03";
}