Partial split into module files

This commit is contained in:
Joe Frikker
2026-02-15 22:56:32 -05:00
parent 0082cb1b33
commit 390b6d522b
2 changed files with 369 additions and 278 deletions

View File

@@ -42,15 +42,16 @@
in home-manager.lib.homeManagerConfiguration { in home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
modules = [ modules =
"${modules}/home.nix" (pkgs.lib.filter
{ (n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive modules)) ++
[{
home.stateVersion = "22.05"; home.stateVersion = "22.05";
home.username = "jfrikker"; home.username = "jfrikker";
home.homeDirectory = "/Users/jfrikker"; home.homeDirectory = "/Users/jfrikker";
home.packages = [ pkgs.pinentry_mac ]; home.packages = [ pkgs.pinentry_mac ];
} }];
];
extraSpecialArgs = { kube = kube.packages.aarch64-darwin.default; }; extraSpecialArgs = { kube = kube.packages.aarch64-darwin.default; };
}; };

636
home.org
View File

@@ -28,10 +28,6 @@ This is the basic structure of the home.nix file. Individual sections are define
} }
#+END_SRC #+END_SRC
* Packages * Packages
:PROPERTIES:
:header-args: :noweb-ref packages
:END:
Home-manager "packages" are simply binaries that are placed on the path, without any attached Home-manager "packages" are simply binaries that are placed on the path, without any attached
configuration. The code blocks in this section contain package lists that go under the packages configuration. The code blocks in this section contain package lists that go under the packages
section above. section above.
@@ -42,42 +38,47 @@ in a ~nix~ devshell I think I'd also like to use it for scripting / exploratory
so I'm installing it globally with a useful set of libraries. I should curate this somewhat so I'm installing it globally with a useful set of libraries. I should curate this somewhat
carefully so it doesn't get carried away... carefully so it doesn't get carried away...
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/common-lisp.nix
rlwrap {pkgs, ...}:
(sbcl.withPackages (ps: with ps; [ {
alexandria home.packages = with pkgs; [
cl-markup rlwrap
cl-mock (sbcl.withPackages (ps: with ps; [
cl-rdkafka alexandria
clack cl-markup
clack-handler-woo cl-mock
dbd-mysql cl-rdkafka
dbi clack
dexador clack-handler-woo
fare-csv dbd-mysql
group-by dbi
lack-request dexador
lack-response fare-csv
local-time group-by
log4cl lack-request
mito lack-response
myway local-time
prove log4cl
prove-asdf mito
replic myway
serapeum prove
shasht prove-asdf
slynk replic
smug serapeum
split-sequence shasht
str slynk
sxql-composer smug
trivia split-sequence
trivial-ws str
trivial-open-browser sxql-composer
trivial-timeout trivia
uuid trivial-ws
])) trivial-open-browser
trivial-timeout
uuid
]))
];
}
#+END_SRC #+END_SRC
[[https://github.com/str4d/rage][~rage~]] is a rust implementation of [[https://pkg.go.dev/filippo.io/age][~age~]]. It implements a simple system for generating public / [[https://github.com/str4d/rage][~rage~]] is a rust implementation of [[https://pkg.go.dev/filippo.io/age][~age~]]. It implements a simple system for generating public /
@@ -86,9 +87,15 @@ the name implies, allows generating and storing ~age~ keys on a Yubikey. ~rage~
~age~ when using ~age.el~, because it supports ~pinentry~. That allows it to prompt for yubikey pins ~age~ when using ~age.el~, because it supports ~pinentry~. That allows it to prompt for yubikey pins
using a dialog, rather than a command line prompt. using a dialog, rather than a command line prompt.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/crypto.nix
rage {pkgs, ...}:
age-plugin-yubikey {
home.packages = with pkgs; [
rage
age-plugin-yubikey
yubikey-manager
];
}
#+END_SRC #+END_SRC
~dust~, ~fd~, ~ripgrep~, and ~xh~ are rust re-implementations of a few longtime Linux command-line ~dust~, ~fd~, ~ripgrep~, and ~xh~ are rust re-implementations of a few longtime Linux command-line
@@ -100,54 +107,74 @@ tools. They boost better speed, or simply more streamlined features.
| ~ripgrep~ | ~grep~ | | ~ripgrep~ | ~grep~ |
| ~xh~ | ~curl~ | | ~xh~ | ~curl~ |
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/rust-reimpls.nix
dust {pkgs, ...}:
fd {
ripgrep home.packages = with pkgs; [
xh dust
fd
ripgrep
xh
];
}
#+END_SRC #+END_SRC
[[https://ledger-cli.org/][~ledger~]] is how I manage my budget. It's a plain-text accounting tool that's really awesome. [[https://ledger-cli.org/][~ledger~]] is how I manage my budget. It's a plain-text accounting tool that's really awesome.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/ledger.nix
ledger {pkgs, ...}:
{
home.packages = with pkgs; [
ledger
];
}
#+END_SRC #+END_SRC
~nil~ is an LSP server for nix files. ~nil~ is an LSP server for nix files.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/nil.nix
nil {pkgs, ...}:
{
home.packages = with pkgs; [
nil
];
}
#+END_SRC #+END_SRC
[[https://github.com/magic-wormhole/magic-wormhole][Magic Wormhole]] is a quick-and-easy way to securely transfer a file or directory between any two [[https://github.com/magic-wormhole/magic-wormhole][Magic Wormhole]] is a quick-and-easy way to securely transfer a file or directory between any two
computers in the world, assuming that you have an out-of-band way to communicate a passphrase computers in the world, assuming that you have an out-of-band way to communicate a passphrase
between them. Once installed, the actual command is ~wormhole~. between them. Once installed, the actual command is ~wormhole~.
#+begin_src nix #+begin_src nix :tangle target/magic-wormhole.nix
magic-wormhole {pkgs, ...}:
{
home.packages = with pkgs; [
magic-wormhole
];
}
#+end_src #+end_src
These are the other programs I have installed globally. A few (like ~awscli~, ~mysql-client~, etc.) These are the other programs I have installed globally. A few (like ~awscli~, ~mysql-client~, etc.)
are still Shibumi-specific; ideally I'd find another way to install them. are still Shibumi-specific; ideally I'd find another way to install them.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/other-packages.nix
aws-iam-authenticator {pkgs, kube, ...}:
awscli2 {
iosevka home.packages = with pkgs; [
kube aws-iam-authenticator
kubectl awscli2
mariadb.client iosevka
nerd-fonts.jetbrains-mono kube
openssh kubectl
tokei mariadb.client
yubikey-manager nerd-fonts.jetbrains-mono
openssh
tokei
];
}
#+END_SRC #+END_SRC
* Program Configurations * Program Configurations
:PROPERTIES:
:header-args:nix: :noweb-ref programs :noweb no-export
:END:
This section contains applications whose config files will be generated by Home Manager. Home This section contains applications whose config files will be generated by Home Manager. Home
Manager calls these "programs" (as opposed to "packages", which are just binaries to put on the Manager calls these "programs" (as opposed to "packages", which are just binaries to put on the
path). path).
@@ -158,13 +185,17 @@ Although Home-Manager generates config files for these programs, they don't need
configuration. I'm not sure what benefit there is to enabling ~jq~ as a Home Manager program, rather configuration. I'm not sure what benefit there is to enabling ~jq~ as a Home Manager program, rather
than just as an available package, but there doesn't seem to be a downside. than just as an available package, but there doesn't seem to be a downside.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/simple-programs.nix
bash.enable = true; {
gh.enable = true; programs = {
home-manager.enable = true; bash.enable = true;
jq.enable = true; gh.enable = true;
lazygit.enable = true; home-manager.enable = true;
zoxide.enable = true; jq.enable = true;
lazygit.enable = true;
zoxide.enable = true;
};
}
#+END_SRC #+END_SRC
** Bat ** Bat
@@ -173,9 +204,13 @@ than just as an available package, but there doesn't seem to be a downside.
provides syntax-highlighting versions of a few other commands. It's honestly not incredibly useful, provides syntax-highlighting versions of a few other commands. It's honestly not incredibly useful,
but still nice to have. but still nice to have.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/bat.nix
bat.enable = true; {
bat.config.style = "numbers"; programs.bat = {
enable = true;
config.style = "numbers";
};
}
#+END_SRC #+END_SRC
** Direnv ** Direnv
@@ -183,20 +218,28 @@ but still nice to have.
~direnv~ allows loading per-project paths as I navigate to their directories on the command line. I ~direnv~ allows loading per-project paths as I navigate to their directories on the command line. I
leverage this with the emacs ~envrc~ package. leverage this with the emacs ~envrc~ package.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/direnv.nix
direnv.enable = true; {
direnv.nix-direnv.enable = true; programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
}
#+END_SRC #+END_SRC
** Eza ** Eza
~eza~ is an ~ls~ replacement that offers icons, colors, and some easier command-line options. ~eza~ is an ~ls~ replacement that offers icons, colors, and some easier command-line options.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/eza.nix
eza.enable = true; {
eza.enableBashIntegration = true; programs.eza = {
eza.enableZshIntegration = true; enable = true;
eza.icons = "auto"; enableBashIntegration = true;
enableZshIntegration = true;
icons = "auto";
};
}
#+END_SRC #+END_SRC
** Fzf ** Fzf
@@ -204,97 +247,112 @@ leverage this with the emacs ~envrc~ package.
~fzf~ offers a variety of fuzzy finders right from the shell. I haven't been using this, so I'll ~fzf~ offers a variety of fuzzy finders right from the shell. I haven't been using this, so I'll
turn it off for now. turn it off for now.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/fzf.nix
fzf.defaultCommand = "fd --type f"; {
fzf.fileWidgetCommand = "fd --type f"; programs.fzf = {
fzf.fileWidgetOptions = ["--preview" "'bat --color=always --style=numbers --line-range=:500 {}'"]; defaultCommand = "fd --type f";
fzf.changeDirWidgetCommand = "fd --type d"; fileWidgetCommand = "fd --type f";
fzf.tmux.enableShellIntegration = true; fileWidgetOptions = ["--preview" "'bat --color=always --style=numbers --line-range=:500 {}'"];
changeDirWidgetCommand = "fd --type d";
tmux.enableShellIntegration = true;
};
}
#+END_SRC #+END_SRC
** Git ** Git
We all know what ~git~ does. We all know what ~git~ does.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/git.nix
git.enable = true; {
git.settings.user.name = "Joe Frikker"; programs.git = {
git.settings.user.email = "joe.frikker@shibumi.com"; enable = true;
delta.enable = true; settings.user.name = "Joe Frikker";
delta.enableGitIntegration = true; settings.user.email = "joe.frikker@shibumi.com";
};
programs.delta = {
enable = true;
enableGitIntegration = true;
};
}
#+END_SRC #+END_SRC
** Helix ** Helix
The best text editor ever? Heresy! The best text editor ever? Heresy!
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/helix.nix
helix.enable = true; {
helix.defaultEditor = true; programs.helix = {
enable = true;
defaultEditor = true;
helix.settings.editor = { settings.editor = {
auto-format = false; auto-format = false;
auto-pairs = false; auto-pairs = false;
auto-save.after-delay.enable = true; auto-save.after-delay.enable = true;
auto-save.after-delay.timeout = 1000; auto-save.after-delay.timeout = 1000;
cursorline = true; cursorline = true;
idle-timeout = 0; idle-timeout = 0;
rulers = [100]; rulers = [100];
text-width = 100; text-width = 100;
lsp.goto-reference-include-declaration = false; lsp.goto-reference-include-declaration = false;
cursor-shape.insert = "bar"; cursor-shape.insert = "bar";
smart-tab.supersede-menu = true; smart-tab.supersede-menu = true;
whitespace.render.newline = "all"; whitespace.render.newline = "all";
}; };
helix.settings.keys.normal.space = { settings.keys.normal.space = {
space = "file_picker"; space = "file_picker";
"," = "buffer_picker"; "," = "buffer_picker";
# b = "@:sh wezterm cli spawn --cwd . -- tig blame <C-r>%<ret>"; # b = "@:sh wezterm cli spawn --cwd . -- tig blame <C-r>%<ret>";
}; };
helix.languages.language-server.eslint = { languages.language-server.eslint = {
args = ["--stdio"]; args = ["--stdio"];
command = "vscode-eslint-language-server"; command = "vscode-eslint-language-server";
config.nodePath = ""; config.nodePath = "";
config.quiet = false; config.quiet = false;
config.rulesCustomizations = []; config.rulesCustomizations = [];
config.run = "onType"; config.run = "onType";
config.validate = "on"; config.validate = "on";
config.codeAction.disableRuleComment.enable = true; config.codeAction.disableRuleComment.enable = true;
config.codeAction.disableRuleComment.location = "separateLine"; config.codeAction.disableRuleComment.location = "separateLine";
config.codeAction.showDocumentation.enable = true; config.codeAction.showDocumentation.enable = true;
config.problems.shortenToSingleLine = false; config.problems.shortenToSingleLine = false;
}; };
helix.languages.language-server.jdtls.config.java = { languages.language-server.jdtls.config.java = {
autobuild.enabled = true; autobuild.enabled = true;
completion.maxResults = 1000; completion.maxResults = 1000;
format.settings.url = "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml"; format.settings.url = "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml";
}; };
helix.languages.language-server.rust-analyzer.config.files.watcher = "client"; languages.language-server.rust-analyzer.config.files.watcher = "client";
helix.languages.language = [ languages.language = [
{ {
name = "typescript"; name = "typescript";
language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ]; language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ];
indent.tab-width = 4; indent.tab-width = 4;
indent.unit = " "; indent.unit = " ";
} }
{ {
name = "tsx"; name = "tsx";
language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ]; language-servers = [ "typescript-language-server" "vscode-eslint-language-server" ];
indent.tab-width = 4; indent.tab-width = 4;
indent.unit = " "; indent.unit = " ";
} }
{ {
name = "java"; name = "java";
indent.tab-width = 4; indent.tab-width = 4;
indent.unit = " "; indent.unit = " ";
} }
]; ];
};
}
#+END_SRC #+END_SRC
** Starship ** Starship
@@ -302,30 +360,32 @@ The best text editor ever? Heresy!
~starship~ gives me a nice shell prompt, mostly showing the versions of relevant software I have ~starship~ gives me a nice shell prompt, mostly showing the versions of relevant software I have
installed. It's shell-agnostic, so it works with both bash and zsh. installed. It's shell-agnostic, so it works with both bash and zsh.
#+BEGIN_SRC nix :noweb no-export #+BEGIN_SRC nix :tangle target/starship.nix
starship.enable = true; {
starship.settings = { programs.starship = {
add_newline = false; enable = true;
container.disabled = true; settings = {
git_branch.symbol = " "; add_newline = false;
git_status.ahead = "\${count}"; container.disabled = true;
git_status.behind = "\${count}"; git_branch.symbol = " ";
git_status.diverged = "\${ahead_count}\${behind_count}"; git_status.ahead = "\${count}";
git_status.format = "([\\[\$conflicted\$staged\$ahead_behind\\]](\$style) )"; git_status.behind = "\${count}";
java.symbol = " "; git_status.diverged = "\${ahead_count}\${behind_count}";
line_break.disabled = true; git_status.format = "([\\[\$conflicted\$staged\$ahead_behind\\]](\$style) )";
nix_shell.symbol = " "; java.symbol = " ";
nodejs.symbol = " "; line_break.disabled = true;
package.disabled = true; nix_shell.symbol = " ";
palette = "catppuccin_frappe"; nodejs.symbol = " ";
python.symbol = " "; package.disabled = true;
package.symbol = " "; palette = "catppuccin_frappe";
rust.symbol = " "; python.symbol = " ";
docker_context.disabled = true; package.symbol = " ";
shell.disabled = false; rust.symbol = " ";
} // docker_context.disabled = true;
<<starship_colors>> shell.disabled = false;
; };
};
}
#+END_SRC #+END_SRC
** Tmux ** Tmux
@@ -333,27 +393,32 @@ installed. It's shell-agnostic, so it works with both bash and zsh.
I'm using ~wezterm~ instead of ~tmux~ for now, so this is disabled, but I'm keeping the config here I'm using ~wezterm~ instead of ~tmux~ for now, so this is disabled, but I'm keeping the config here
in case I need it later. in case I need it later.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/tmux.nix
tmux.baseIndex = 1; {pkgs, ...}:
tmux.clock24 = true; {
tmux.customPaneNavigationAndResize = true; programs.tmux = {
tmux.historyLimit = 50000; baseIndex = 1;
tmux.enable = true; clock24 = true;
tmux.escapeTime = 0; customPaneNavigationAndResize = true;
tmux.keyMode = "vi"; historyLimit = 50000;
tmux.mouse = true; enable = true;
tmux.shell = pkgs.zsh + "/bin/zsh"; escapeTime = 0;
tmux.shortcut = "Space"; keyMode = "vi";
tmux.tmuxinator.enable = true; mouse = true;
tmux.terminal = "xterm-256color"; shell = pkgs.zsh + "/bin/zsh";
tmux.extraConfig = '' shortcut = "Space";
bind-key -T copy-mode-vi 'v' send -X begin-selection tmuxinator.enable = true;
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel terminal = "xterm-256color";
extraConfig = ''
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
bind-key -T launcher g popup -h 100% -w 100% -E lazygit bind-key -T launcher g popup -h 100% -w 100% -E lazygit
bind-key g switch-client -Tlauncher bind-key g switch-client -Tlauncher
set -g default-command "" set -g default-command ""
''; '';
};
}
#+END_SRC #+END_SRC
** Wezterm ** Wezterm
:PROPERTIES: :PROPERTIES:
@@ -363,9 +428,13 @@ set -g default-command ""
~wezterm~ is a fast terminal emulator and multiplexer. It is configured using lua. We'll define its ~wezterm~ is a fast terminal emulator and multiplexer. It is configured using lua. We'll define its
config in two blocks, so we can get lua syntax highlighting in org. First, the nix configuration: config in two blocks, so we can get lua syntax highlighting in org. First, the nix configuration:
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/wezterm.nix
wezterm.enable = true; {
wezterm.extraConfig = builtins.readFile ./wezterm.lua; programs.wezterm = {
enable = true;
extraConfig = builtins.readFile ./wezterm.lua;
};
}
#+END_SRC #+END_SRC
Then the real lua config: Then the real lua config:
@@ -565,31 +634,38 @@ Now we'll set up some keybindings:
This is my default shell for now. Unfortunately, nix requires a posix-compliant shell, so bash or This is my default shell for now. Unfortunately, nix requires a posix-compliant shell, so bash or
zsh it is. zsh it is.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/zsh.nix
zsh.enable = true; {
zsh.oh-my-zsh.enable = true; programs.zsh = {
zsh.syntaxHighlighting.enable = true; enable = true;
zsh.autosuggestion.enable = true; oh-my-zsh.enable = true;
zsh.historySubstringSearch.enable = true; syntaxHighlighting.enable = true;
zsh.history.share = false; autosuggestion.enable = true;
zsh.cdpath = ["~/source"]; historySubstringSearch.enable = true;
history.share = false;
cdpath = ["~/source"];
};
}
#+END_SRC #+END_SRC
Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh from nix-shell. Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh from nix-shell.
#+BEGIN_SRC nix #+BEGIN_SRC nix :tangle target/zsh-nix-shell.nix
zsh.plugins = [ {pkgs, ...}:
{ {
name = "zsh-nix-shell"; programs.zsh.plugins = [
file = "nix-shell.plugin.zsh"; {
src = pkgs.fetchFromGitHub { name = "zsh-nix-shell";
owner = "chisui"; file = "nix-shell.plugin.zsh";
repo = "zsh-nix-shell"; src = pkgs.fetchFromGitHub {
rev = "v0.7.0"; owner = "chisui";
sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1"; repo = "zsh-nix-shell";
}; rev = "v0.7.0";
} sha256 = "149zh2rm59blr2q458a5irkfh82y3dwdich60s9670kl3cl5h2m1";
]; };
}
];
}
#+END_SRC #+END_SRC
* Emacs * Emacs
@@ -603,12 +679,16 @@ breaking it out into its own top-level section. Many of the sections here have t
nix code block listing the emacs packages to include, and an elisp code block to configure them in nix code block listing the emacs packages to include, and an elisp code block to configure them in
emacs. emacs.
#+BEGIN_SRC nix :noweb-ref programs #+BEGIN_SRC nix :tangle target/emacs.nix :noweb-ref
emacs.enable = true; {
emacs.extraPackages = epkgs: with epkgs; [ programs.emacs = {
<<emacs_packages>> enable = true;
]; extraPackages = epkgs: with epkgs; [
emacs.extraConfig = builtins.readFile ./emacs.el; <<emacs_packages>>
];
extraConfig = builtins.readFile ./emacs.el;
};
}
#+END_SRC #+END_SRC
We'll put the actual emacs config into a separate file, rather than into a nix string literal. This We'll put the actual emacs config into a separate file, rather than into a nix string literal. This
@@ -1635,77 +1715,88 @@ age
#+END_SRC #+END_SRC
* Theme * Theme
I like Catppuccin Frappe as my theme. Let's use it in as many places as we can. I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
** Bat ** Bat
#+BEGIN_SRC nix :tangle target/bat-theme.nix
#+BEGIN_SRC nix :noweb-ref programs {pkgs, ...}:
bat.config.theme = "catppuccin-frappe"; {
bat.themes = { programs.bat = {
catppuccin-frappe = { config.theme = "catppuccin-frappe";
src = pkgs.fetchFromGitHub { themes = {
owner = "catppuccin"; catppuccin-frappe = {
repo = "sublime-text"; # Bat uses sublime syntax for its themes src = pkgs.fetchFromGitHub {
rev = "3d8625d937d89869476e94bc100192aa220ce44a"; owner = "catppuccin";
sha256 = "3ABUsfJpb6RO6AiuuSL5gwDofJIwC5tlEMzBrlY9/s0="; repo = "sublime-text"; # Bat uses sublime syntax for its themes
}; rev = "3d8625d937d89869476e94bc100192aa220ce44a";
file = "Frappe.tmTheme"; sha256 = "3ABUsfJpb6RO6AiuuSL5gwDofJIwC5tlEMzBrlY9/s0=";
};
file = "Frappe.tmTheme";
};
};
}; };
}; }
#+END_SRC #+END_SRC
** Helix ** Helix
#+BEGIN_SRC nix :tangle target/helix-theme.nix
#+BEGIN_SRC nix :noweb-ref programs {
helix.settings.theme = "catppuccin_frappe"; programs.helix.settings.theme = "catppuccin_frappe";
}
#+END_SRC #+END_SRC
** Tmux ** Tmux
#+BEGIN_SRC nix :tangle target/tmux-theme.nix
#+BEGIN_SRC nix :noweb-ref programs {pkgs, ...}:
tmux.plugins = [ {
{ programs.tmux.plugins = [
plugin = pkgs.tmuxPlugins.catppuccin; {
extraConfig = ''set -g @catppuccin_window_tabs_enabled on plugin = pkgs.tmuxPlugins.catppuccin;
extraConfig = ''set -g @catppuccin_window_tabs_enabled on
set -g @catppuccin_window_default_text "#W" set -g @catppuccin_window_default_text "#W"
set -g @catppuccin_window_current_text "#W"''; set -g @catppuccin_window_current_text "#W"'';
} }
]; ];
}
#+END_SRC #+END_SRC
** Lazygit ** Lazygit
#+BEGIN_SRC nix :tangle target/lazygit.nix
#+BEGIN_SRC nix :noweb-ref extra_xdg {pkgs, ...}:
configFile."lazygit/config.yml" = { {
enable = true; xdg = {
source = pkgs.fetchFromGitHub enable = true;
{ configFile."lazygit/config.yml" = {
owner = "catppuccin"; enable = true;
repo = "lazygit"; source = pkgs.fetchFromGitHub
rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash {
sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw="; owner = "catppuccin";
} + /themes/frappe.yml; repo = "lazygit";
}; rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash
sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw=";
} + /themes/frappe.yml;
};
};
}
#+END_SRC #+END_SRC
** Starship ** Starship
#+BEGIN_SRC nix :tangle target/starship_colors.nix
#+NAME: starship_colors {pkgs, ...}:
#+BEGIN_SRC nix {
builtins.fromTOML (builtins.readFile programs.starship.settings = builtins.fromTOML (builtins.readFile
(pkgs.fetchFromGitHub (pkgs.fetchFromGitHub
{ {
owner = "catppuccin"; owner = "catppuccin";
repo = "starship"; repo = "starship
rev = "3e3e54410c3189053f4da7a7043261361a1ed1bc"; # Replace with the latest commit hash ";
sha256 = "soEBVlq3ULeiZFAdQYMRFuswIIhI9bclIU8WXjxd7oY="; rev = "3e3e54410c3189053f4da7a7043261361a1ed1bc"; # Replace with the latest commit hash
} + /palettes/frappe.toml)) sha256 = "soEBVlq3ULeiZFAdQYMRFuswIIhI9bclIU8WXjxd7oY=";
} + /palettes/frappe.toml));
}
#+END_SRC #+END_SRC
** Wezterm ** Wezterm
#+NAME: wezterm_colors
#+BEGIN_SRC lua :tangle target/wezterm.lua #+BEGIN_SRC lua :tangle target/wezterm.lua
config.color_scheme = 'Catppuccin Frappe' config.color_scheme = 'Catppuccin Frappe'
@@ -1713,7 +1804,6 @@ I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
#+END_SRC #+END_SRC
** Emacs ** Emacs
#+BEGIN_SRC nix :noweb-ref "emacs_packages" #+BEGIN_SRC nix :noweb-ref "emacs_packages"
catppuccin-theme catppuccin-theme
#+END_SRC #+END_SRC