Compare commits
14 Commits
redbook
...
41bd32951d
| Author | SHA1 | Date | |
|---|---|---|---|
| 41bd32951d | |||
| acc0385350 | |||
| 7ecbf30138 | |||
| 61b30f5062 | |||
| 83b70c6c81 | |||
| 0ea18214a5 | |||
| 57db7a1db8 | |||
| c695346b3c | |||
| 914d548d9f | |||
| 8ee9c32d9c | |||
| 04b08dee44 | |||
| 7d03e428bc | |||
| d80478e4e9 | |||
| 53bb5718f3 |
Generated
+13
-13
@@ -8,11 +8,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787169825,
|
"lastModified": 1789074092,
|
||||||
"narHash": "sha256-3MmWHAzeoFHfwjUCQC01olBN+MC4xoSuR7D0bpPr+EE=",
|
"narHash": "sha256-QCXTUbd4FuwOHO7LgJws78YTRcco4xgR8RoYgKLvd9w=",
|
||||||
"owner": "sadjow",
|
"owner": "sadjow",
|
||||||
"repo": "claude-code-nix",
|
"repo": "claude-code-nix",
|
||||||
"rev": "f575914388682670df73e80c9caf82063b659699",
|
"rev": "1f88b393ac054378c393f914dc83d08a6ef5daeb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -28,16 +28,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787176219,
|
"lastModified": 1789267039,
|
||||||
"narHash": "sha256-djoRr6jBpe35q/0JwAvXpFXg1Ktf+X54NU2RLR7wnHw=",
|
"narHash": "sha256-LWiBv9yAYFi2LPbUhDGHPGKYskJQjj2fw12OlyO1uQo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "c53d643b3737e2fcd04e6cb3b3580ef50b2087a0",
|
"rev": "ec172013fa62135f58fb58dd17ae9651e8f39727",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "master",
|
"ref": "release-26.05",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -49,11 +49,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1786852476,
|
"lastModified": 1788680125,
|
||||||
"narHash": "sha256-IM5CYtf86W4w8eUPpKcY/LpdHElmVBtJhaKnoTKxZEA=",
|
"narHash": "sha256-amGSoDobwmp4CFvCn841ws2iuitus+HUJdD/gKgsrJA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "c7962dc97b45129df8d751bedaf37beb5a17706e",
|
"rev": "116ad1c2adb642405ef8916f6a94c8626f971344",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -64,11 +64,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787101114,
|
"lastModified": 1789009968,
|
||||||
"narHash": "sha256-gwrPcFf/rDjHPaVflbDZ040ZDmBTRj/7+s8ZmE2SaIM=",
|
"narHash": "sha256-GB16oaxpsrnGNnGIE+0uYBqMRzB9X6FYDUvjvnJAYew=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b18a4b905f8d028dc4476412e6d6891728695379",
|
"rev": "d58a46e3bc02d91ebe04667f8397752a749c0024",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/master";
|
url = "github:nix-community/home-manager/release-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
# kube = {
|
# kube = {
|
||||||
@@ -24,8 +24,18 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { nixpkgs, home-manager, claude-code, nix-index-database, ... }:
|
outputs =
|
||||||
let modules-for-system = pkgs: pkgs.stdenv.mkDerivation {
|
{
|
||||||
|
nixpkgs,
|
||||||
|
home-manager,
|
||||||
|
claude-code,
|
||||||
|
nix-index-database,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
modules-for-system =
|
||||||
|
pkgs:
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
name = "home-manager-modules";
|
name = "home-manager-modules";
|
||||||
src = pkgs.lib.fileset.toSource {
|
src = pkgs.lib.fileset.toSource {
|
||||||
root = ./.;
|
root = ./.;
|
||||||
@@ -45,50 +55,137 @@
|
|||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
homeConfigurations.redbook =
|
homeConfigurations.redbook =
|
||||||
let pkgs = import nixpkgs { system = "aarch64-darwin"; config.allowUnfree = true; };
|
let
|
||||||
modules = modules-for-system pkgs;
|
pkgs = import nixpkgs {
|
||||||
in home-manager.lib.homeManagerConfiguration {
|
system = "aarch64-darwin";
|
||||||
inherit pkgs;
|
config.allowUnfree = true;
|
||||||
|
|
||||||
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;
|
modules = modules-for-system pkgs;
|
||||||
in home-manager.lib.homeManagerConfiguration {
|
in
|
||||||
|
home-manager.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
nix-index-database.homeModules.default
|
nix-index-database.homeModules.default
|
||||||
] ++
|
"${modules}"
|
||||||
(pkgs.lib.filter
|
]
|
||||||
(n: pkgs.lib.strings.hasSuffix ".nix" n)
|
++ [
|
||||||
(pkgs.lib.filesystem.listFilesRecursive "${modules}/base")) ++
|
{
|
||||||
[{
|
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;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
extraSpecialArgs = {
|
||||||
|
claude-code = claude-code.packages.aarch64-darwin.default;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
homeConfigurations.home =
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
modules = modules-for-system pkgs;
|
||||||
|
in
|
||||||
|
home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
|
||||||
|
modules = [
|
||||||
|
nix-index-database.homeModules.default
|
||||||
|
"${modules}"
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
{
|
||||||
home.stateVersion = "22.05";
|
home.stateVersion = "22.05";
|
||||||
home.username = "jfrikker";
|
home.username = "jfrikker";
|
||||||
home.homeDirectory = "/home/jfrikker";
|
home.homeDirectory = "/home/jfrikker";
|
||||||
}];
|
jfrikker.enable = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
extraSpecialArgs = { claude-code = claude-code.packages.x86_64-linux.default; };
|
extraSpecialArgs = {
|
||||||
|
claude-code = claude-code.packages.x86_64-linux.default;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
homeConfigurations.home-laptop =
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
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; };
|
||||||
|
extraSpecialArgs = {
|
||||||
|
claude-code = claude-code.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;
|
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
|
#+PROPERTY: header-args:elisp :lexical t
|
||||||
* Categories
|
* Categories
|
||||||
|
#+begin_src nix :tangle target/default.nix
|
||||||
|
{lib, pkgs, config, claude-code, ...}: 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
|
<<nix-options>>
|
||||||
{lib, ...}: {
|
};
|
||||||
imports = lib.filter
|
|
||||||
(n: lib.strings.hasSuffix ".nix" n)
|
|
||||||
(lib.filesystem.listFilesRecursive ./base);
|
|
||||||
}
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop.nix
|
config = mkIf cfg.enable (mkMerge [
|
||||||
{lib, ...}: {
|
<<nix-configs>>
|
||||||
imports = lib.filter
|
]);
|
||||||
(n: lib.strings.hasSuffix ".nix" n)
|
|
||||||
(lib.filesystem.listFilesRecursive ./desktop);
|
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+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
|
|
||||||
|
|
||||||
* Packages
|
* 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
|
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.
|
||||||
@@ -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
|
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 :tangle target/base/sbcl.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
rlwrap
|
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
|
~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 :tangle target/base/crypto.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
rage
|
rage
|
||||||
@@ -114,8 +105,7 @@ tools. They boost better speed, or simply more streamlined features.
|
|||||||
| ~ripgrep~ | ~grep~ |
|
| ~ripgrep~ | ~grep~ |
|
||||||
| ~xh~ | ~curl~ |
|
| ~xh~ | ~curl~ |
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/base/rust-reimpls.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
dust
|
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.
|
[[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
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
ledger
|
ledger
|
||||||
@@ -140,11 +129,11 @@ tools. They boost better speed, or simply more streamlined features.
|
|||||||
|
|
||||||
~nil~ is an LSP server for nix files.
|
~nil~ is an LSP server for nix files.
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/base/nil.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
nil
|
nil
|
||||||
|
nixfmt
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+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
|
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 :tangle target/base/magic-wormhole.nix
|
#+begin_src nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
magic-wormhole
|
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.)
|
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.
|
are still Redbook-specific; ideally I'd find another way to install them.
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/redbook/other-packages.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
(mkIf cfg.redbook.enable {
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
postgresql
|
|
||||||
openssh
|
openssh
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
}
|
})
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
These programs require a full desktop environment:
|
These programs require a full desktop environment:
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/desktop-packages.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
(mkIf cfg.desktop.enable {
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
google-chrome
|
google-chrome
|
||||||
nerd-fonts.jetbrains-mono
|
nerd-fonts.jetbrains-mono
|
||||||
@@ -189,18 +174,19 @@ These programs require a full desktop environment:
|
|||||||
(iosevka-bin.override { variant = "Aile"; })
|
(iosevka-bin.override { variant = "Aile"; })
|
||||||
(iosevka-bin.override { variant = "Etoile"; })
|
(iosevka-bin.override { variant = "Etoile"; })
|
||||||
(iosevka-bin.override { variant = "SGr-IosevkaTermSS14"; })
|
(iosevka-bin.override { variant = "SGr-IosevkaTermSS14"; })
|
||||||
|
nerd-fonts.symbols-only
|
||||||
keymapp
|
keymapp
|
||||||
proton-pass
|
proton-pass
|
||||||
wireshark
|
wireshark
|
||||||
];
|
];
|
||||||
}
|
})
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/redbook-desktop/desktop-packages.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
linear
|
linear
|
||||||
|
notion-app
|
||||||
(slack.overrideAttrs {
|
(slack.overrideAttrs {
|
||||||
version = "4.50.143";
|
version = "4.50.143";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
@@ -210,10 +196,14 @@ These programs require a full desktop environment:
|
|||||||
})
|
})
|
||||||
teams
|
teams
|
||||||
];
|
];
|
||||||
}
|
})
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Program Configurations
|
* 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
|
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).
|
||||||
@@ -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
|
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 :tangle target/base/simple-programs.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs = {
|
programs = {
|
||||||
bash.enable = true;
|
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,
|
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 :tangle target/base/bat.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.bat = {
|
programs.bat = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -254,7 +244,7 @@ but still nice to have.
|
|||||||
|
|
||||||
** Comma
|
** Comma
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/base/comma.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.nix-index.enable = true;
|
programs.nix-index.enable = true;
|
||||||
programs.nix-index-database.comma.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
|
~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 :tangle target/base/direnv.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
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.
|
~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 = {
|
programs.eza = {
|
||||||
enable = true;
|
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
|
~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 :tangle target/base/fzf.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.fzf = {
|
programs.fzf = {
|
||||||
defaultCommand = "fd --type f";
|
defaultCommand = "fd --type f";
|
||||||
@@ -311,7 +301,7 @@ turn it off for now.
|
|||||||
|
|
||||||
We all know what ~git~ does.
|
We all know what ~git~ does.
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/base/git.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -332,7 +322,7 @@ We all know what ~git~ does.
|
|||||||
|
|
||||||
The best text editor ever? Heresy!
|
The best text editor ever? Heresy!
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/base/helix.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.helix = {
|
programs.helix = {
|
||||||
enable = true;
|
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
|
~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.
|
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 = {
|
programs.nh = {
|
||||||
enable = true;
|
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
|
~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 :tangle target/base/starship.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.starship = {
|
programs.starship = {
|
||||||
enable = true;
|
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
|
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 :tangle target/base/tmux.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
programs.tmux = {
|
programs.tmux = {
|
||||||
baseIndex = 1;
|
baseIndex = 1;
|
||||||
@@ -486,25 +475,36 @@ in case I need it later.
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
** Wezterm
|
** Wezterm
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:lua: :tangle target/desktop/wezterm.lua
|
:header-args:lua: :noweb-ref wezterm-config
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
~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 :tangle target/desktop/wezterm.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
(mkIf cfg.desktop.enable {
|
||||||
programs.wezterm = {
|
programs.wezterm = {
|
||||||
enable = true;
|
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
|
#+END_SRC
|
||||||
|
|
||||||
Then the real lua config:
|
Then the real lua config:
|
||||||
|
|
||||||
#+BEGIN_SRC lua
|
#+begin_src lua :tangle target/wezterm.lua :noweb-ref nil
|
||||||
local config = {}
|
local config = {}
|
||||||
|
|
||||||
|
<<wezterm-config>>
|
||||||
|
|
||||||
|
return config
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+BEGIN_SRC lua
|
||||||
config.default_prog = { '/Users/jfrikker/.nix-profile/bin/zsh', '-l' }
|
config.default_prog = { '/Users/jfrikker/.nix-profile/bin/zsh', '-l' }
|
||||||
config.font = wezterm.font 'Iosevka Term SS14'
|
config.font = wezterm.font 'Iosevka Term SS14'
|
||||||
config.font_size = 13.0
|
config.font_size = 13.0
|
||||||
@@ -695,8 +695,8 @@ Now we'll set up some keybindings:
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Kitty
|
** Kitty
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/kitty.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}: {
|
(mkIf cfg.desktop.enable {
|
||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
font = {
|
font = {
|
||||||
@@ -717,15 +717,16 @@ Now we'll set up some keybindings:
|
|||||||
"ctrl+9" = "goto_tab 9";
|
"ctrl+9" = "goto_tab 9";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Ghostty
|
** 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
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}: {
|
{
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = true;
|
enable = false;
|
||||||
package = pkgs.ghostty-bin;
|
package = pkgs.ghostty-bin;
|
||||||
settings = {
|
settings = {
|
||||||
adjust-cell-height = "15%";
|
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
|
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 :tangle target/base/zsh.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
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.
|
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
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
programs.zsh.plugins = [
|
programs.zsh.plugins = [
|
||||||
{
|
{
|
||||||
@@ -777,8 +777,8 @@ Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh f
|
|||||||
|
|
||||||
** Claude Code
|
** Claude Code
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/base/claude-code.nix
|
#+BEGIN_SRC nix
|
||||||
{claude-code, ...}: {
|
{
|
||||||
programs.claude-code = {
|
programs.claude-code = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = claude-code;
|
package = claude-code;
|
||||||
@@ -787,6 +787,11 @@ Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh f
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Emacs
|
* 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
|
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
|
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
|
nix code block listing the emacs packages to include, and an elisp code block to configure them in
|
||||||
@@ -795,6 +800,15 @@ emacs.
|
|||||||
We'll put the actual emacs configs into separate files, rather than into nix string literals. This
|
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.
|
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
|
** Keybindings
|
||||||
These keybindings are scattered throughout this file, I'm collecting them all here to make it easier
|
These keybindings are scattered throughout this file, I'm collecting them all here to make it easier
|
||||||
to track them.
|
to track them.
|
||||||
@@ -819,15 +833,11 @@ to track them.
|
|||||||
| C-c M-g | | [[id:4F426E77-CE03-4BF8-8D1B-7791C7C02B28][Magit file dispatch]] | |
|
| C-c M-g | | [[id:4F426E77-CE03-4BF8-8D1B-7791C7C02B28][Magit file dispatch]] | |
|
||||||
|
|
||||||
** Global Settings
|
** 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:
|
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 = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
ace-window
|
ace-window
|
||||||
doom-modeline
|
doom-modeline
|
||||||
@@ -836,7 +846,6 @@ These are just some general settings that apply everywhere. First, a few package
|
|||||||
mixed-pitch
|
mixed-pitch
|
||||||
popper
|
popper
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-global.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -965,6 +974,28 @@ repeats set up that only apply in that mode.
|
|||||||
(savehist-mode)
|
(savehist-mode)
|
||||||
#+END_SRC
|
#+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
|
||||||
|
(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
|
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
|
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
|
I have the tab bar at the top of the window. The other settings just clear up some space, and make
|
||||||
@@ -1263,18 +1294,12 @@ content to be.
|
|||||||
(setopt split-width-threshold 200)
|
(setopt split-width-threshold 200)
|
||||||
(setopt split-height-threshold nil)
|
(setopt split-height-threshold nil)
|
||||||
(setopt display-buffer-base-action
|
(setopt display-buffer-base-action
|
||||||
'((display-buffer-reuse-window display-buffer-same-window
|
'((display-buffer-reuse-window
|
||||||
display-buffer-in-previous-window
|
display-buffer-reuse-mode-window
|
||||||
display-buffer-use-some-window)))
|
display-buffer-use-some-window)))
|
||||||
|
|
||||||
(setq display-buffer-alist
|
(setq display-buffer-alist
|
||||||
'(((or "magit: *"
|
'(((or "\\*Flymake diagnostics .*"
|
||||||
"magit-log*"
|
|
||||||
"\\*Messages\\*"
|
|
||||||
"\\*trace-output\\*"
|
|
||||||
"\\*EGLOT connections\\*")
|
|
||||||
(jf/display-buffer-fullscreen))
|
|
||||||
((or "\\*Flymake diagnostics .*"
|
|
||||||
"\\*Embark Export: .*"
|
"\\*Embark Export: .*"
|
||||||
"\\*Embark Collect .*"
|
"\\*Embark Collect .*"
|
||||||
"\\*xref\\*"
|
"\\*xref\\*"
|
||||||
@@ -1288,10 +1313,13 @@ content to be.
|
|||||||
(display-buffer-in-side-window)
|
(display-buffer-in-side-window)
|
||||||
(side . bottom)
|
(side . bottom)
|
||||||
(slot . 0)
|
(slot . 0)
|
||||||
(window-height . 0.33)
|
(window-height . 0.33))
|
||||||
(window-parameters (no-delete-other-windows . t)
|
((or "magit: *"
|
||||||
(no-other-window . t)))
|
"magit-log*"
|
||||||
((or "magit-revision: .*"
|
"\\*Messages\\*"
|
||||||
|
"\\*trace-output\\*"
|
||||||
|
"\\*EGLOT connections\\*"
|
||||||
|
"magit-revision: .*"
|
||||||
"\\*Help\\*"
|
"\\*Help\\*"
|
||||||
"\\*rustfmt\\*"
|
"\\*rustfmt\\*"
|
||||||
"\\*slack: .*"
|
"\\*slack: .*"
|
||||||
@@ -1302,7 +1330,9 @@ content to be.
|
|||||||
"\\*List .*"
|
"\\*List .*"
|
||||||
"\\*Embark Actions\\*"
|
"\\*Embark Actions\\*"
|
||||||
"\\*eldoc\\*")
|
"\\*eldoc\\*")
|
||||||
(jf/display-buffer-right))))
|
(display-buffer-reuse-window
|
||||||
|
display-buffer-reuse-mode-window
|
||||||
|
jf/display-buffer-right))))
|
||||||
|
|
||||||
(setopt window-persistent-parameters
|
(setopt window-persistent-parameters
|
||||||
(cl-list* '(no-delete-other-windows . writable)
|
(cl-list* '(no-delete-other-windows . writable)
|
||||||
@@ -1312,28 +1342,22 @@ content to be.
|
|||||||
|
|
||||||
|
|
||||||
** Editing
|
** Editing
|
||||||
:PROPERTIES:
|
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-editing.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
This configuration affects general text editing, across all modes. First, some packages:
|
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 = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
|
apheleia
|
||||||
avy
|
avy
|
||||||
edit-indirect
|
edit-indirect
|
||||||
embark
|
embark
|
||||||
format-all
|
|
||||||
god-mode
|
god-mode
|
||||||
# evil
|
# evil
|
||||||
# evil-collection
|
# evil-collection
|
||||||
# evil-org
|
# evil-org
|
||||||
string-inflection
|
string-inflection
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-editing.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+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))
|
(bind-keys ("C-x 4 n" . edit-indirect-region))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Workflow
|
Some auto-formatting stuff
|
||||||
:PROPERTIES:
|
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-workflow.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+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 = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
buffer-terminator
|
buffer-terminator
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-workflow.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -1465,14 +1490,9 @@ Just "silently" wrap when searching at the bottom of a document.
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Language Support
|
** Language Support
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-languages.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-languages.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
consult-eglot
|
consult-eglot
|
||||||
graphql-ts-mode
|
graphql-ts-mode
|
||||||
@@ -1534,7 +1554,6 @@ Just "silently" wrap when searching at the bottom of a document.
|
|||||||
]))
|
]))
|
||||||
yaml-pro
|
yaml-pro
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-languages.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -1800,18 +1819,12 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Envrc
|
** Envrc
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-envrc.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-envrc.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
envrc
|
envrc
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-envrc.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -1822,14 +1835,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Magit
|
** Magit
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-magit.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-magit.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
consult-gh
|
consult-gh
|
||||||
diff-hl
|
diff-hl
|
||||||
@@ -1837,7 +1845,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
git-timemachine
|
git-timemachine
|
||||||
magit
|
magit
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-magit.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -1866,14 +1873,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Vertico
|
** Vertico
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-vertico.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-vertico.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
cape
|
cape
|
||||||
consult
|
consult
|
||||||
@@ -1883,7 +1885,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
orderless
|
orderless
|
||||||
vertico
|
vertico
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-vertico.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -1972,14 +1973,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Org
|
** Org
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-org.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-org.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
org-modern
|
org-modern
|
||||||
org-present
|
org-present
|
||||||
@@ -1988,7 +1984,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
verb
|
verb
|
||||||
visual-fill-column
|
visual-fill-column
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-org.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -2111,18 +2106,12 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Terminal
|
** Terminal
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-terminal.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-terminal.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
eat
|
eat
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-terminal.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -2134,18 +2123,12 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Slack
|
** Slack
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-slack.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-slack.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
slack
|
slack
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-slack.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -2164,11 +2147,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Ledger
|
** Ledger
|
||||||
|
#+BEGIN_SRC nix
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-ledger.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
ledger-mode
|
ledger-mode
|
||||||
];
|
];
|
||||||
@@ -2177,18 +2158,12 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Age
|
** Age
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-age.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-age.nix
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
age
|
age
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-age.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -2204,15 +2179,9 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Claude Code
|
** Claude Code
|
||||||
:PROPERTIES:
|
#+BEGIN_SRC nix
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-claude-code.el
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-claude-code.nix
|
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
(epkgs.trivialBuild {
|
(epkgs.trivialBuild {
|
||||||
pname = "claude-code";
|
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 ];
|
packageRequires = [ epkgs.inheritenv ];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-claude-code.el;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+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))
|
:custom (claude-code-optimize-window-resize nil))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
* Theme
|
* 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.
|
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/base/bat-theme.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
programs.bat = {
|
programs.bat = {
|
||||||
config.theme = "catppuccin-frappe";
|
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
|
#+END_SRC
|
||||||
|
|
||||||
** Helix
|
** Helix
|
||||||
#+BEGIN_SRC nix :tangle target/base/helix-theme.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.helix.settings.theme = "catppuccin_frappe";
|
programs.helix.settings.theme = "catppuccin_frappe";
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Tmux
|
** Tmux
|
||||||
#+BEGIN_SRC nix :tangle target/base/tmux-theme.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
programs.tmux.plugins = [
|
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
|
#+END_SRC
|
||||||
|
|
||||||
** Lazygit
|
** Lazygit
|
||||||
#+BEGIN_SRC nix :tangle target/base/lazygit.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
xdg = {
|
xdg = {
|
||||||
enable = false
|
enable = false
|
||||||
;
|
;
|
||||||
configFile."lazygit/config.yml" = {
|
# configFile."lazygit/config.yml" = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
source = pkgs.fetchFromGitHub
|
# source = pkgs.fetchFromGitHub
|
||||||
{
|
# {
|
||||||
owner = "catppuccin";
|
# owner = "catppuccin";
|
||||||
repo = "lazygit";
|
# repo = "lazygit";
|
||||||
rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash
|
# rev = "b2ecb6d41b6f54a82104879573c538e8bdaeb0bf"; # Replace with the latest commit hash
|
||||||
sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw=";
|
# sha256 = "9BBmWRcjNaJE9T0RKVEJaSnkrbMom0CLYE8PzAT6yFw=";
|
||||||
} + /themes/frappe.yml;
|
# } + /themes/frappe.yml;
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Starship
|
** Starship
|
||||||
#+BEGIN_SRC nix :tangle target/base/starship_colors.nix
|
#+BEGIN_SRC nix
|
||||||
{pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
programs.starship.settings = builtins.fromTOML (builtins.readFile
|
programs.starship.settings = builtins.fromTOML (builtins.readFile
|
||||||
(pkgs.fetchFromGitHub
|
(pkgs.fetchFromGitHub
|
||||||
@@ -2319,14 +2287,16 @@ I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Wezterm
|
** Wezterm
|
||||||
#+BEGIN_SRC lua :tangle target/desktop/wezterm.lua
|
:PROPERTIES:
|
||||||
config.color_scheme = 'Catppuccin Frappe'
|
:header-args:lua: :noweb-ref wezterm-config
|
||||||
|
:END:
|
||||||
|
|
||||||
return config
|
#+BEGIN_SRC lua
|
||||||
|
config.color_scheme = 'Catppuccin Frappe'
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Ghostty
|
** Ghostty
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/ghostty-theme.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.ghostty.settings.theme = "Catppuccin Frappe";
|
programs.ghostty.settings.theme = "Catppuccin Frappe";
|
||||||
}
|
}
|
||||||
@@ -2334,17 +2304,16 @@ I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
|
|||||||
|
|
||||||
** Emacs
|
** Emacs
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:elisp: :tangle target/desktop/emacs-theme.el
|
:header-args:elisp: :tangle target/emacs.el
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
#+BEGIN_SRC nix :tangle target/desktop/emacs-theme.nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
extraPackages = epkgs: with epkgs; [
|
||||||
catppuccin-theme
|
catppuccin-theme
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./emacs-theme.el;
|
extraConfig = "(defvar my-base-font-size ${if pkgs.stdenv.isDarwin then "130" else "100"})";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -2356,7 +2325,7 @@ I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
|
|||||||
|
|
||||||
;; (set-face-attribute 'default nil :font "JetBrainsMono Nerd Font" :height 130)
|
;; (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 'fixed-pitch nil :font "JetBrainsMono Nerd Font" :height 130)
|
||||||
(set-face-attribute 'default nil :font "Iosevka Term SS14" :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 130)
|
(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 130)
|
(set-face-attribute 'variable-pitch nil :font "Iosevka Etoile" :height my-base-font-size)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|||||||
Reference in New Issue
Block a user