16 Commits

Author SHA1 Message Date
Joe Frikker ce222ef2b1 Switch to claude code overlay 2026-09-17 08:27:18 -04:00
Joe Frikker 13c8c4432f Fixing emacs config 2026-09-17 08:27:10 -04:00
Joe Frikker 41bd32951d Aligning home manager and nixpkgs versions 2026-09-16 10:55:51 -04:00
Joe Frikker acc0385350 Formatting flake 2026-09-16 10:53:47 -04:00
Joe Frikker 7ecbf30138 Initial switch back to one file + config options 2026-09-16 10:46:56 -04:00
Joe Frikker 61b30f5062 Adding notion, removing postgres 2026-09-16 08:37:01 -04:00
Joe Frikker 83b70c6c81 Some unbinds 2026-09-15 16:32:54 -04:00
Joe Frikker 0ea18214a5 Fixing apheleia error on load 2026-09-14 16:35:30 -04:00
Joe Frikker 57db7a1db8 nix flake update 2026-09-14 16:35:22 -04:00
Joe Frikker c695346b3c Merge branch 'redbook' 2026-09-11 13:03:02 -04:00
Joe Frikker 914d548d9f No more git fullscreen? 2026-09-11 13:02:14 -04:00
Joe Frikker 8ee9c32d9c Merge remote-tracking branch 'origin/redbook' 2026-09-06 22:50:16 +00:00
Joe Frikker 04b08dee44 Fixing laptop 2026-08-19 22:02:15 -04:00
Joe Frikker 7d03e428bc Merge remote-tracking branch 'origin/redbook' into laptop 2026-08-19 21:38:05 -04:00
Joe Frikker d80478e4e9 wip 2026-06-07 14:00:09 -04:00
Joe Frikker 53bb5718f3 wtf 2026-06-06 01:25:44 +00:00
3 changed files with 496 additions and 448 deletions
Generated
+13 -13
View File
@@ -8,11 +8,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1787169825,
"narHash": "sha256-3MmWHAzeoFHfwjUCQC01olBN+MC4xoSuR7D0bpPr+EE=",
"lastModified": 1789074092,
"narHash": "sha256-QCXTUbd4FuwOHO7LgJws78YTRcco4xgR8RoYgKLvd9w=",
"owner": "sadjow",
"repo": "claude-code-nix",
"rev": "f575914388682670df73e80c9caf82063b659699",
"rev": "1f88b393ac054378c393f914dc83d08a6ef5daeb",
"type": "github"
},
"original": {
@@ -28,16 +28,16 @@
]
},
"locked": {
"lastModified": 1787176219,
"narHash": "sha256-djoRr6jBpe35q/0JwAvXpFXg1Ktf+X54NU2RLR7wnHw=",
"lastModified": 1789267039,
"narHash": "sha256-LWiBv9yAYFi2LPbUhDGHPGKYskJQjj2fw12OlyO1uQo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c53d643b3737e2fcd04e6cb3b3580ef50b2087a0",
"rev": "ec172013fa62135f58fb58dd17ae9651e8f39727",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"ref": "release-26.05",
"repo": "home-manager",
"type": "github"
}
@@ -49,11 +49,11 @@
]
},
"locked": {
"lastModified": 1786852476,
"narHash": "sha256-IM5CYtf86W4w8eUPpKcY/LpdHElmVBtJhaKnoTKxZEA=",
"lastModified": 1788680125,
"narHash": "sha256-amGSoDobwmp4CFvCn841ws2iuitus+HUJdD/gKgsrJA=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "c7962dc97b45129df8d751bedaf37beb5a17706e",
"rev": "116ad1c2adb642405ef8916f6a94c8626f971344",
"type": "github"
},
"original": {
@@ -64,11 +64,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1787101114,
"narHash": "sha256-gwrPcFf/rDjHPaVflbDZ040ZDmBTRj/7+s8ZmE2SaIM=",
"lastModified": 1789009968,
"narHash": "sha256-GB16oaxpsrnGNnGIE+0uYBqMRzB9X6FYDUvjvnJAYew=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "b18a4b905f8d028dc4476412e6d6891728695379",
"rev": "d58a46e3bc02d91ebe04667f8397752a749c0024",
"type": "github"
},
"original": {
+122 -37
View File
@@ -10,7 +10,7 @@
};
home-manager = {
url = "github:nix-community/home-manager/master";
url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
# kube = {
@@ -24,8 +24,26 @@
};
};
outputs = { nixpkgs, home-manager, claude-code, nix-index-database, ... }:
let modules-for-system = pkgs: pkgs.stdenv.mkDerivation {
outputs =
{
nixpkgs,
home-manager,
claude-code,
nix-index-database,
...
}:
let
pkgs-for-system = (
system:
import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [ claude-code.overlays.default ];
}
);
modules-for-system =
pkgs:
pkgs.stdenv.mkDerivation {
name = "home-manager-modules";
src = pkgs.lib.fileset.toSource {
root = ./.;
@@ -45,50 +63,117 @@
runHook postInstall
'';
};
in {
in
{
homeConfigurations.redbook =
let pkgs = import nixpkgs { system = "aarch64-darwin"; config.allowUnfree = true; };
let
pkgs = pkgs-for-system "aarch64-darwin";
modules = modules-for-system pkgs;
in home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules =
[
nix-index-database.homeModules.default
"${modules}/base.nix"
"${modules}/desktop.nix"
"${modules}/redbook.nix"
"${modules}/redbook-desktop.nix"
] ++
[{
home.stateVersion = "22.05";
home.username = "jfrikker";
home.homeDirectory = "/Users/jfrikker";
home.packages = [ pkgs.pinentry_mac ];
}];
extraSpecialArgs = { claude-code = claude-code.packages.aarch64-darwin.default; };
};
homeConfigurations.home =
let pkgs = nixpkgs.legacyPackages.x86_64-linux;
modules = modules-for-system pkgs;
in home-manager.lib.homeManagerConfiguration {
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
nix-index-database.homeModules.default
] ++
(pkgs.lib.filter
(n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive "${modules}/base")) ++
[{
"${modules}"
]
++ [
{
home.stateVersion = "22.05";
home.username = "jfrikker";
home.homeDirectory = "/Users/jfrikker";
home.packages = [ pkgs.pinentry_mac ];
jfrikker.enable = true;
jfrikker.desktop.enable = true;
jfrikker.redbook.enable = true;
}
];
};
homeConfigurations.home =
let
pkgs = pkgs-for-system "x86_64-linux";
modules = modules-for-system pkgs;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
nix-index-database.homeModules.default
"${modules}"
]
++ [
{
home.stateVersion = "22.05";
home.username = "jfrikker";
home.homeDirectory = "/home/jfrikker";
}];
extraSpecialArgs = { claude-code = claude-code.packages.x86_64-linux.default; };
jfrikker.enable = true;
}
];
};
homeConfigurations.home-laptop =
let
pkgs = pkgs-for-system "x86_64-linux";
modules = modules-for-system pkgs;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
nix-index-database.homeModules.default
"${modules}"
]
++ [
{
home.stateVersion = "22.05";
home.username = "jfrikker";
home.homeDirectory = "/home/jfrikker";
# home.packages = [ pkgs.pinentry ];
jfrikker.enable = true;
jfrikker.desktop.enable = true;
programs.ghostty = {
enable = true;
settings = {
font-family = "Iosevka Term Extended";
font-size = 10;
};
};
programs.foot = {
enable = true;
settings = {
main = {
font = "Iosevka Term:size=10:width=expanded";
};
};
};
home.pointerCursor = {
enable = true;
package = pkgs.vanilla-dmz;
name = "Vanilla-DMZ";
sway.enable = true;
gtk.enable = true;
};
wayland.windowManager.sway = {
enable = true;
config.modifier = "Mod4";
# config.terminal = "${pkgs.ghostty}/bin/ghostty";
config.input = {
"1452:628:bcm5974" = {
scroll_factor = "0.4";
};
};
};
programs.emacs.package = pkgs.emacs-pgtk;
}
];
# extraSpecialArgs = { kube = kube.packages.x86_64-linux.default; };
};
packages.x86_64-linux.default = modules-for-system nixpkgs.legacyPackages.x86_64-linux;
packages.aarch64-darwin.default = modules-for-system nixpkgs.legacyPackages.aarch64-darwin;
};
}
+189 -226
View File
@@ -1,40 +1,33 @@
#+PROPERTY: header-args :mkdirp yes
#+PROPERTY: header-args :mkdirp yes :noweb yes
#+PROPERTY: header-args:elisp :lexical t
* Categories
#+begin_src nix :tangle target/default.nix
{lib, pkgs, config, ...}: let
inherit (lib)
mkIf
mkMerge
;
cfg = config.jfrikker;
in {
options.jfrikker = {
enable = lib.mkEnableOption "Joe Frikker's configuration";
desktop.enable = lib.mkEnableOption "Desktop (GUI) applications";
redbook.enable = lib.mkEnableOption "Redbook-specific configuration";
#+BEGIN_SRC nix :tangle target/base.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./base);
}
#+END_SRC
<<nix-options>>
};
#+BEGIN_SRC nix :tangle target/desktop.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./desktop);
config = mkIf cfg.enable (mkMerge [
<<nix-configs>>
]);
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/redbook.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./redbook);
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/redbook-desktop.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./redbook-desktop);
}
#+END_SRC
#+end_src
* Packages
:PROPERTIES:
:header-args:nix: :noweb-ref nix-configs
:END:
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
section above.
@@ -45,8 +38,7 @@ 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
carefully so it doesn't get carried away...
#+BEGIN_SRC nix :tangle target/base/sbcl.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
home.packages = with pkgs; [
rlwrap
@@ -94,8 +86,7 @@ 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
using a dialog, rather than a command line prompt.
#+BEGIN_SRC nix :tangle target/base/crypto.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
home.packages = with pkgs; [
rage
@@ -114,8 +105,7 @@ tools. They boost better speed, or simply more streamlined features.
| ~ripgrep~ | ~grep~ |
| ~xh~ | ~curl~ |
#+BEGIN_SRC nix :tangle target/base/rust-reimpls.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
home.packages = with pkgs; [
dust
@@ -129,8 +119,7 @@ tools. They boost better speed, or simply more streamlined features.
[[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 :tangle target/base/ledger.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
home.packages = with pkgs; [
ledger
@@ -140,11 +129,11 @@ tools. They boost better speed, or simply more streamlined features.
~nil~ is an LSP server for nix files.
#+BEGIN_SRC nix :tangle target/base/nil.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
home.packages = with pkgs; [
nil
nixfmt
];
}
#+END_SRC
@@ -153,8 +142,7 @@ tools. They boost better speed, or simply more streamlined features.
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~.
#+begin_src nix :tangle target/base/magic-wormhole.nix
{pkgs, ...}:
#+begin_src nix
{
home.packages = with pkgs; [
magic-wormhole
@@ -165,23 +153,20 @@ between them. Once installed, the actual command is ~wormhole~.
These are the other programs I have installed globally. A few (like ~awscli~, ~mysql-client~, etc.)
are still Redbook-specific; ideally I'd find another way to install them.
#+BEGIN_SRC nix :tangle target/redbook/other-packages.nix
{pkgs, ...}:
{
#+BEGIN_SRC nix
(mkIf cfg.redbook.enable {
home.packages = with pkgs; [
postgresql
openssh
];
fonts.fontconfig.enable = true;
}
})
#+END_SRC
These programs require a full desktop environment:
#+BEGIN_SRC nix :tangle target/desktop/desktop-packages.nix
{pkgs, ...}:
{
#+BEGIN_SRC nix
(mkIf cfg.desktop.enable {
home.packages = with pkgs; [
google-chrome
nerd-fonts.jetbrains-mono
@@ -189,18 +174,19 @@ These programs require a full desktop environment:
(iosevka-bin.override { variant = "Aile"; })
(iosevka-bin.override { variant = "Etoile"; })
(iosevka-bin.override { variant = "SGr-IosevkaTermSS14"; })
nerd-fonts.symbols-only
keymapp
proton-pass
wireshark
];
}
})
#+END_SRC
#+BEGIN_SRC nix :tangle target/redbook-desktop/desktop-packages.nix
{pkgs, ...}:
{
#+BEGIN_SRC nix
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
home.packages = with pkgs; [
linear
notion-app
(slack.overrideAttrs {
version = "4.50.143";
src = pkgs.fetchurl {
@@ -210,10 +196,14 @@ These programs require a full desktop environment:
})
teams
];
}
})
#+END_SRC
* Program Configurations
:PROPERTIES:
:header-args:nix: :noweb-ref nix-configs
:END:
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
path).
@@ -224,7 +214,7 @@ 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
than just as an available package, but there doesn't seem to be a downside.
#+BEGIN_SRC nix :tangle target/base/simple-programs.nix
#+BEGIN_SRC nix
{
programs = {
bash.enable = true;
@@ -243,7 +233,7 @@ 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,
but still nice to have.
#+BEGIN_SRC nix :tangle target/base/bat.nix
#+BEGIN_SRC nix
{
programs.bat = {
enable = true;
@@ -254,7 +244,7 @@ but still nice to have.
** Comma
#+BEGIN_SRC nix :tangle target/base/comma.nix
#+BEGIN_SRC nix
{
programs.nix-index.enable = true;
programs.nix-index-database.comma.enable = true;
@@ -266,7 +256,7 @@ but still nice to have.
~direnv~ allows loading per-project paths as I navigate to their directories on the command line. I
leverage this with the emacs ~envrc~ package.
#+BEGIN_SRC nix :tangle target/base/direnv.nix
#+BEGIN_SRC nix
{
programs.direnv = {
enable = true;
@@ -279,7 +269,7 @@ leverage this with the emacs ~envrc~ package.
~eza~ is an ~ls~ replacement that offers icons, colors, and some easier command-line options.
#+BEGIN_SRC nix :tangle target/base/eza.nix
#+BEGIN_SRC nix
{
programs.eza = {
enable = true;
@@ -295,7 +285,7 @@ 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
turn it off for now.
#+BEGIN_SRC nix :tangle target/base/fzf.nix
#+BEGIN_SRC nix
{
programs.fzf = {
defaultCommand = "fd --type f";
@@ -311,7 +301,7 @@ turn it off for now.
We all know what ~git~ does.
#+BEGIN_SRC nix :tangle target/base/git.nix
#+BEGIN_SRC nix
{
programs.git = {
enable = true;
@@ -332,7 +322,7 @@ We all know what ~git~ does.
The best text editor ever? Heresy!
#+BEGIN_SRC nix :tangle target/base/helix.nix
#+BEGIN_SRC nix
{
programs.helix = {
enable = true;
@@ -410,7 +400,7 @@ The best text editor ever? Heresy!
~nh~ is an alternative frontend to home-manager and a few other nix tools that I'm trying out. It
shows what's changing when you update your config, which is nice.
#+BEGIN_SRC nix :tangle target/base/nh.nix
#+BEGIN_SRC nix
{
programs.nh = {
enable = true;
@@ -424,7 +414,7 @@ shows what's changing when you update your config, which is nice.
~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.
#+BEGIN_SRC nix :tangle target/base/starship.nix
#+BEGIN_SRC nix
{
programs.starship = {
enable = true;
@@ -457,8 +447,7 @@ 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
in case I need it later.
#+BEGIN_SRC nix :tangle target/base/tmux.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
programs.tmux = {
baseIndex = 1;
@@ -486,25 +475,36 @@ in case I need it later.
#+END_SRC
** Wezterm
:PROPERTIES:
:header-args:lua: :tangle target/desktop/wezterm.lua
:header-args:lua: :noweb-ref wezterm-config
:END:
~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:
#+BEGIN_SRC nix :tangle target/desktop/wezterm.nix
{
#+BEGIN_SRC nix
(mkIf cfg.desktop.enable {
programs.wezterm = {
enable = true;
extraConfig = builtins.readFile ./wezterm.lua;
extraConfig = ''
local config = {}
config.default_prog = { '${pkgs.zsh}/bin/zsh', '-l'}
config.font_size = ${if pkgs.stdenv.isDarwin then "13.0" else "10.0"}
'' + builtins.readFile ./wezterm.lua;
};
}
})
#+END_SRC
Then the real lua config:
#+BEGIN_SRC lua
#+begin_src lua :tangle target/wezterm.lua :noweb-ref nil
local config = {}
<<wezterm-config>>
return config
#+end_src
#+BEGIN_SRC lua
config.default_prog = { '/Users/jfrikker/.nix-profile/bin/zsh', '-l' }
config.font = wezterm.font 'Iosevka Term SS14'
config.font_size = 13.0
@@ -695,8 +695,8 @@ Now we'll set up some keybindings:
#+END_SRC
** Kitty
#+BEGIN_SRC nix :tangle target/desktop/kitty.nix
{pkgs, ...}: {
#+BEGIN_SRC nix
(mkIf cfg.desktop.enable {
programs.kitty = {
enable = true;
font = {
@@ -717,15 +717,16 @@ Now we'll set up some keybindings:
"ctrl+9" = "goto_tab 9";
};
};
}
})
#+END_SRC
** Ghostty
Disabled until I can get it working on both linux and mac (if I want to).
#+BEGIN_SRC nix :tangle target/desktop/ghostty.nix
{pkgs, ...}: {
#+BEGIN_SRC nix
{
programs.ghostty = {
enable = true;
enable = false;
package = pkgs.ghostty-bin;
settings = {
adjust-cell-height = "15%";
@@ -741,7 +742,7 @@ Now we'll set up some keybindings:
This is my default shell for now. Unfortunately, nix requires a posix-compliant shell, so bash or
zsh it is.
#+BEGIN_SRC nix :tangle target/base/zsh.nix
#+BEGIN_SRC nix
{
programs.zsh = {
enable = true;
@@ -757,8 +758,7 @@ zsh it is.
Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh from nix-shell.
#+BEGIN_SRC nix :tangle target/base/zsh-nix-shell.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
programs.zsh.plugins = [
{
@@ -777,16 +777,20 @@ Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh f
** Claude Code
#+BEGIN_SRC nix :tangle target/base/claude-code.nix
{claude-code, ...}: {
#+BEGIN_SRC nix
{
programs.claude-code = {
enable = true;
package = claude-code;
};
}
#+END_SRC
* Emacs
:PROPERTIES:
:header-args:nix: :noweb-ref nix-configs
:header-args:elisp: :tangle target/emacs.el
:END:
Emacs is a huge portion of this configuration, so although it's a home-manager "program", I'm
breaking it out into its own top-level section. Many of the sections here have two code blocks: a
nix code block listing the emacs packages to include, and an elisp code block to configure them in
@@ -795,6 +799,15 @@ emacs.
We'll put the actual emacs configs into separate files, rather than into nix string literals. This
helps with a few places where nix's string interpolation was causing problems.
#+BEGIN_SRC nix
(mkIf cfg.desktop.enable {
programs.emacs = {
enable = true;
extraConfig = builtins.readFile ./emacs.el;
};
})
#+END_SRC
** Keybindings
These keybindings are scattered throughout this file, I'm collecting them all here to make it easier
to track them.
@@ -819,15 +832,11 @@ to track them.
| C-c M-g | | [[id:4F426E77-CE03-4BF8-8D1B-7791C7C02B28][Magit file dispatch]] | |
** Global Settings
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-global.el
:END:
These are just some general settings that apply everywhere. First, a few packages:
#+BEGIN_SRC nix :tangle target/desktop/emacs-global.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
ace-window
doom-modeline
@@ -836,7 +845,6 @@ These are just some general settings that apply everywhere. First, a few package
mixed-pitch
popper
];
extraConfig = builtins.readFile ./emacs-global.el;
};
}
#+END_SRC
@@ -965,6 +973,29 @@ repeats set up that only apply in that mode.
(savehist-mode)
#+END_SRC
Let's unbind some builtin keys that I don't use. I'm not sure if I'll replace them with anything or not, but at a minimum it'll avoid accidental keypresses and clean up which-key output.
#+begin_src elisp
(require 'bind-key)
(unbind-key "C-x RET")
(unbind-key "C-x #")
(unbind-key "C-x 5")
(unbind-key "C-x 6")
(unbind-key "C-x \\")
(unbind-key "C-x `")
(unbind-key "C-x m")
(unbind-key "C-x l")
(unbind-key "C-x i")
(unbind-key "C-x u")
(unbind-key "C-x @")
(unbind-key "C-x C-b")
(unbind-key "C-x C-d")
(unbind-key "C-x C-l")
(unbind-key "C-x C-p")
(unbind-key "C-x C-u")
(unbind-key "C-x C-z")
#+end_src
The doom modeline looks nice. I'm turning off IRC notifications, because it was slow to update (and
it would update after every command, slowing down everything). I don't need the workspace name when
I have the tab bar at the top of the window. The other settings just clear up some space, and make
@@ -982,7 +1013,7 @@ Ligature mode combines character sequences like <= into a single on-screen glyph
cool, so I'm turning it on in prog mode. The enabled ligatures are font-specific, taken from [[https://github.com/mickeynp/ligature.el/wiki#jetbrains-mono][the
ligature wiki]].
#+BEGIN_SRC elisp
#+BEGIN_SRC elisp :noweb no
(ligature-set-ligatures 'prog-mode
'("--" "---" "==" "===" "!=" "!==" "=!="
"=:=" "=/=" "<=" ">=" "&&" "&&&" "&=" "++" "+++" "***" ";;" "!!"
@@ -1263,18 +1294,12 @@ content to be.
(setopt split-width-threshold 200)
(setopt split-height-threshold nil)
(setopt display-buffer-base-action
'((display-buffer-reuse-window display-buffer-same-window
display-buffer-in-previous-window
'((display-buffer-reuse-window
display-buffer-reuse-mode-window
display-buffer-use-some-window)))
(setq display-buffer-alist
'(((or "magit: *"
"magit-log*"
"\\*Messages\\*"
"\\*trace-output\\*"
"\\*EGLOT connections\\*")
(jf/display-buffer-fullscreen))
((or "\\*Flymake diagnostics .*"
'(((or "\\*Flymake diagnostics .*"
"\\*Embark Export: .*"
"\\*Embark Collect .*"
"\\*xref\\*"
@@ -1288,10 +1313,13 @@ content to be.
(display-buffer-in-side-window)
(side . bottom)
(slot . 0)
(window-height . 0.33)
(window-parameters (no-delete-other-windows . t)
(no-other-window . t)))
((or "magit-revision: .*"
(window-height . 0.33))
((or "magit: *"
"magit-log*"
"\\*Messages\\*"
"\\*trace-output\\*"
"\\*EGLOT connections\\*"
"magit-revision: .*"
"\\*Help\\*"
"\\*rustfmt\\*"
"\\*slack: .*"
@@ -1302,7 +1330,9 @@ content to be.
"\\*List .*"
"\\*Embark Actions\\*"
"\\*eldoc\\*")
(jf/display-buffer-right))))
(display-buffer-reuse-window
display-buffer-reuse-mode-window
jf/display-buffer-right))))
(setopt window-persistent-parameters
(cl-list* '(no-delete-other-windows . writable)
@@ -1312,28 +1342,22 @@ content to be.
** Editing
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-editing.el
:END:
This configuration affects general text editing, across all modes. First, some packages:
#+BEGIN_SRC nix :tangle target/desktop/emacs-editing.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
apheleia
avy
edit-indirect
embark
format-all
god-mode
# evil
# evil-collection
# evil-org
string-inflection
];
extraConfig = builtins.readFile ./emacs-editing.el;
};
}
#+END_SRC
@@ -1440,19 +1464,20 @@ Just "silently" wrap when searching at the bottom of a document.
(bind-keys ("C-x 4 n" . edit-indirect-region))
#+END_SRC
** Workflow
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-workflow.el
:END:
Some auto-formatting stuff
#+BEGIN_SRC nix :tangle target/desktop/emacs-workflow.nix
#+begin_src elisp
(with-eval-after-load 'apheleia
(push '(prisma-format "prisma" "format" "--schema" filepath) apheleia-formatters))
#+end_src
** Workflow
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
buffer-terminator
];
extraConfig = builtins.readFile ./emacs-workflow.el;
};
}
#+END_SRC
@@ -1465,14 +1490,9 @@ Just "silently" wrap when searching at the bottom of a document.
#+END_SRC
** Language Support
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-languages.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-languages.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
consult-eglot
graphql-ts-mode
@@ -1534,7 +1554,6 @@ Just "silently" wrap when searching at the bottom of a document.
]))
yaml-pro
];
extraConfig = builtins.readFile ./emacs-languages.el;
};
}
#+END_SRC
@@ -1800,18 +1819,12 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Envrc
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-envrc.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-envrc.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
envrc
];
extraConfig = builtins.readFile ./emacs-envrc.el;
};
}
#+END_SRC
@@ -1822,14 +1835,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Magit
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-magit.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-magit.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
consult-gh
diff-hl
@@ -1837,7 +1845,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
git-timemachine
magit
];
extraConfig = builtins.readFile ./emacs-magit.el;
};
}
#+END_SRC
@@ -1866,14 +1873,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Vertico
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-vertico.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-vertico.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
cape
consult
@@ -1883,7 +1885,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
orderless
vertico
];
extraConfig = builtins.readFile ./emacs-vertico.el;
};
}
#+END_SRC
@@ -1972,14 +1973,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Org
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-org.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-org.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
org-modern
org-present
@@ -1988,7 +1984,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
verb
visual-fill-column
];
extraConfig = builtins.readFile ./emacs-org.el;
};
}
#+END_SRC
@@ -2111,18 +2106,12 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Terminal
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-terminal.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-terminal.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
eat
];
extraConfig = builtins.readFile ./emacs-terminal.el;
};
}
#+END_SRC
@@ -2134,18 +2123,12 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Slack
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-slack.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-slack.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
slack
];
extraConfig = builtins.readFile ./emacs-slack.el;
};
}
#+END_SRC
@@ -2164,11 +2147,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Ledger
#+BEGIN_SRC nix :tangle target/desktop/emacs-ledger.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
ledger-mode
];
@@ -2177,18 +2158,12 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Age
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-age.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-age.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
age
];
extraConfig = builtins.readFile ./emacs-age.el;
};
}
#+END_SRC
@@ -2204,15 +2179,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
** Claude Code
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-claude-code.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-claude-code.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
(epkgs.trivialBuild {
pname = "claude-code";
@@ -2226,7 +2195,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
packageRequires = [ epkgs.inheritenv ];
})
];
extraConfig = builtins.readFile ./emacs-claude-code.el;
};
}
#+END_SRC
@@ -2237,11 +2205,14 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
:custom (claude-code-optimize-window-resize nil))
#+END_SRC
* Theme
:PROPERTIES:
:header-args:nix: :noweb-ref nix-configs
:END:
I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
** Bat
#+BEGIN_SRC nix :tangle target/base/bat-theme.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
programs.bat = {
config.theme = "catppuccin-frappe";
@@ -2261,15 +2232,14 @@ I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
#+END_SRC
** Helix
#+BEGIN_SRC nix :tangle target/base/helix-theme.nix
#+BEGIN_SRC nix
{
programs.helix.settings.theme = "catppuccin_frappe";
}
#+END_SRC
** Tmux
#+BEGIN_SRC nix :tangle target/base/tmux-theme.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
programs.tmux.plugins = [
{
@@ -2283,29 +2253,27 @@ I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
#+END_SRC
** Lazygit
#+BEGIN_SRC nix :tangle target/base/lazygit.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
xdg = {
enable = false
;
configFile."lazygit/config.yml" = {
enable = true;
source = pkgs.fetchFromGitHub
{
owner = "catppuccin";
repo = "lazygit";
rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash
sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw=";
} + /themes/frappe.yml;
};
# configFile."lazygit/config.yml" = {
# enable = true;
# source = pkgs.fetchFromGitHub
# {
# owner = "catppuccin";
# repo = "lazygit";
# rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash
# sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw=";
# } + /themes/frappe.yml;
# };
};
}
#+END_SRC
** Starship
#+BEGIN_SRC nix :tangle target/base/starship_colors.nix
{pkgs, ...}:
#+BEGIN_SRC nix
{
programs.starship.settings = builtins.fromTOML (builtins.readFile
(pkgs.fetchFromGitHub
@@ -2319,44 +2287,39 @@ I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
#+END_SRC
** Wezterm
#+BEGIN_SRC lua :tangle target/desktop/wezterm.lua
config.color_scheme = 'Catppuccin Frappe'
:PROPERTIES:
:header-args:lua: :noweb-ref wezterm-config
:END:
return config
#+BEGIN_SRC lua
config.color_scheme = 'Catppuccin Frappe'
#+END_SRC
** Ghostty
#+BEGIN_SRC nix :tangle target/desktop/ghostty-theme.nix
#+BEGIN_SRC nix
{
programs.ghostty.settings.theme = "Catppuccin Frappe";
}
#+END_SRC
** Emacs
:PROPERTIES:
:header-args:elisp: :tangle target/desktop/emacs-theme.el
:END:
#+BEGIN_SRC nix :tangle target/desktop/emacs-theme.nix
#+BEGIN_SRC nix
{
programs.emacs = {
enable = true;
extraPackages = epkgs: with epkgs; [
catppuccin-theme
];
extraConfig = builtins.readFile ./emacs-theme.el;
};
}
#+END_SRC
#+BEGIN_SRC elisp
extraConfig = ''(defvar my-base-font-size ${if pkgs.stdenv.isDarwin then "130" else "100"})
(require 'catppuccin-theme)
(setopt catppuccin-flavor 'frappe)
(load-theme 'catppuccin :no-confirm)
;; (set-face-attribute 'default nil :font "JetBrainsMono Nerd Font" :height 130)
;; (set-face-attribute 'fixed-pitch nil :font "JetBrainsMono Nerd Font" :height 130)
(set-face-attribute 'default nil :font "Iosevka Term SS14" :height 130)
(set-face-attribute 'fixed-pitch nil :font "Iosevka Term SS14" :height 130)
(set-face-attribute 'variable-pitch nil :font "Iosevka Etoile" :height 130)
(set-face-attribute 'default nil :font "Iosevka Term SS14" :height my-base-font-size)
(set-face-attribute 'fixed-pitch nil :font "Iosevka Term SS14" :height my-base-font-size)
(set-face-attribute 'variable-pitch nil :font "Iosevka Etoile" :height my-base-font-size)
'';
};
}
#+END_SRC