Compare commits
16 Commits
redbook
...
ce222ef2b1
| Author | SHA1 | Date | |
|---|---|---|---|
| ce222ef2b1 | |||
| 13c8c4432f | |||
| 41bd32951d | |||
| acc0385350 | |||
| 7ecbf30138 | |||
| 61b30f5062 | |||
| 83b70c6c81 | |||
| 0ea18214a5 | |||
| 57db7a1db8 | |||
| c695346b3c | |||
| 914d548d9f | |||
| 8ee9c32d9c | |||
| 04b08dee44 | |||
| 7d03e428bc | |||
| d80478e4e9 | |||
| 53bb5718f3 |
Generated
+13
-13
@@ -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": {
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user