base vs desktop configurations

This commit is contained in:
Joe Frikker
2026-03-13 15:08:37 -04:00
parent e37bd642bb
commit de1cad39d8
2 changed files with 79 additions and 59 deletions

View File

@@ -45,7 +45,10 @@
modules = modules =
(pkgs.lib.filter (pkgs.lib.filter
(n: pkgs.lib.strings.hasSuffix ".nix" n) (n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive modules)) ++ (pkgs.lib.filesystem.listFilesRecursive "${modules}/base")) ++
(pkgs.lib.filter
(n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive "${modules}/desktop")) ++
[{ [{
home.stateVersion = "22.05"; home.stateVersion = "22.05";
home.username = "jfrikker"; home.username = "jfrikker";
@@ -61,14 +64,15 @@
in home-manager.lib.homeManagerConfiguration { in home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
modules = [ modules =
"${modules}/home.nix" (pkgs.lib.filter
{ (n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive "${modules}/base")) ++
[{
home.stateVersion = "22.05"; home.stateVersion = "22.05";
home.username = "jfrikker"; home.username = "jfrikker";
home.homeDirectory = "/home/jfrikker"; home.homeDirectory = "/home/jfrikker";
} }];
];
extraSpecialArgs = { kube = kube.packages.x86_64-linux.default; }; extraSpecialArgs = { kube = kube.packages.x86_64-linux.default; };
}; };

122
home.org
View File

@@ -64,7 +64,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/crypto.nix #+BEGIN_SRC nix :tangle target/base/crypto.nix
{pkgs, ...}: {pkgs, ...}:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
@@ -84,7 +84,7 @@ tools. They boost better speed, or simply more streamlined features.
| ~ripgrep~ | ~grep~ | | ~ripgrep~ | ~grep~ |
| ~xh~ | ~curl~ | | ~xh~ | ~curl~ |
#+BEGIN_SRC nix :tangle target/rust-reimpls.nix #+BEGIN_SRC nix :tangle target/base/rust-reimpls.nix
{pkgs, ...}: {pkgs, ...}:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
@@ -98,7 +98,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/ledger.nix #+BEGIN_SRC nix :tangle target/base/ledger.nix
{pkgs, ...}: {pkgs, ...}:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
@@ -109,7 +109,7 @@ 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/nil.nix #+BEGIN_SRC nix :tangle target/base/nil.nix
{pkgs, ...}: {pkgs, ...}:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
@@ -122,7 +122,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/magic-wormhole.nix #+begin_src nix :tangle target/base/magic-wormhole.nix
{pkgs, ...}: {pkgs, ...}:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
@@ -134,7 +134,7 @@ 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 Shibumi-specific; ideally I'd find another way to install them. are still Shibumi-specific; ideally I'd find another way to install them.
#+BEGIN_SRC nix :tangle target/other-packages.nix #+BEGIN_SRC nix :tangle target/base/other-packages.nix
{pkgs, kube, ...}: {pkgs, kube, ...}:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
@@ -153,6 +153,22 @@ are still Shibumi-specific; ideally I'd find another way to install them.
} }
#+END_SRC #+END_SRC
These programs require a full desktop environment:
#+BEGIN_SRC nix :tangle target/desktop/desktop-packages.nix
{pkgs, ...}:
{
home.packages = with pkgs; [
google-chrome
keymapp
proton-pass
protonmail-desktop
slack
wireshark
];
}
#+END_SRC
* Program Configurations * Program Configurations
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
@@ -164,7 +180,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/simple-programs.nix #+BEGIN_SRC nix :tangle target/base/simple-programs.nix
{ {
programs = { programs = {
bash.enable = true; bash.enable = true;
@@ -183,7 +199,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/bat.nix #+BEGIN_SRC nix :tangle target/base/bat.nix
{ {
programs.bat = { programs.bat = {
enable = true; enable = true;
@@ -197,7 +213,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/direnv.nix #+BEGIN_SRC nix :tangle target/base/direnv.nix
{ {
programs.direnv = { programs.direnv = {
enable = true; enable = true;
@@ -210,7 +226,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/eza.nix #+BEGIN_SRC nix :tangle target/base/eza.nix
{ {
programs.eza = { programs.eza = {
enable = true; enable = true;
@@ -226,7 +242,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/fzf.nix #+BEGIN_SRC nix :tangle target/base/fzf.nix
{ {
programs.fzf = { programs.fzf = {
defaultCommand = "fd --type f"; defaultCommand = "fd --type f";
@@ -242,7 +258,7 @@ turn it off for now.
We all know what ~git~ does. We all know what ~git~ does.
#+BEGIN_SRC nix :tangle target/git.nix #+BEGIN_SRC nix :tangle target/base/git.nix
{ {
programs.git = { programs.git = {
enable = true; enable = true;
@@ -261,7 +277,7 @@ We all know what ~git~ does.
The best text editor ever? Heresy! The best text editor ever? Heresy!
#+BEGIN_SRC nix :tangle target/helix.nix #+BEGIN_SRC nix :tangle target/base/helix.nix
{ {
programs.helix = { programs.helix = {
enable = true; enable = true;
@@ -339,7 +355,7 @@ The best text editor ever? Heresy!
~starship~ gives me a nice shell prompt, mostly showing the versions of relevant software I have ~starship~ gives me a nice shell prompt, mostly showing the versions of relevant software I have
installed. It's shell-agnostic, so it works with both bash and zsh. installed. It's shell-agnostic, so it works with both bash and zsh.
#+BEGIN_SRC nix :tangle target/starship.nix #+BEGIN_SRC nix :tangle target/base/starship.nix
{ {
programs.starship = { programs.starship = {
enable = true; enable = true;
@@ -372,7 +388,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/tmux.nix #+BEGIN_SRC nix :tangle target/base/tmux.nix
{pkgs, ...}: {pkgs, ...}:
{ {
programs.tmux = { programs.tmux = {
@@ -401,13 +417,13 @@ in case I need it later.
#+END_SRC #+END_SRC
** Wezterm ** Wezterm
:PROPERTIES: :PROPERTIES:
:header-args:lua: :tangle target/wezterm.lua :header-args:lua: :tangle target/desktop/wezterm.lua
: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/wezterm.nix #+BEGIN_SRC nix :tangle target/desktop/wezterm.nix
{ {
programs.wezterm = { programs.wezterm = {
enable = true; enable = true;
@@ -613,7 +629,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/zsh.nix #+BEGIN_SRC nix :tangle target/base/zsh.nix
{ {
programs.zsh = { programs.zsh = {
enable = true; enable = true;
@@ -629,7 +645,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/zsh-nix-shell.nix #+BEGIN_SRC nix :tangle target/base/zsh-nix-shell.nix
{pkgs, ...}: {pkgs, ...}:
{ {
programs.zsh.plugins = [ programs.zsh.plugins = [
@@ -649,7 +665,7 @@ Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh f
** Claude Code ** Claude Code
#+BEGIN_SRC nix :tangle target/claude-code.nix #+BEGIN_SRC nix :tangle target/base/claude-code.nix
{ {
programs.claude-code = { programs.claude-code = {
enable = true; enable = true;
@@ -691,11 +707,11 @@ to track them.
** Global Settings ** Global Settings
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-global.el :header-args:elisp: :tangle target/desktop/emacs-global.el
:END: :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/emacs-global.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-global.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -949,12 +965,12 @@ content to be.
** Editing ** Editing
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-editing.el :header-args:elisp: :tangle target/desktop/emacs-editing.el
:END: :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/emacs-editing.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-editing.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1075,10 +1091,10 @@ Just "silently" wrap when searching at the bottom of a document.
** Language Support ** Language Support
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-languages.el :header-args:elisp: :tangle target/desktop/emacs-languages.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-languages.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-languages.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1274,10 +1290,10 @@ available? It seems to work for now anyway...
** Envrc ** Envrc
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-envrc.el :header-args:elisp: :tangle target/desktop/emacs-envrc.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-envrc.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-envrc.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1296,10 +1312,10 @@ available? It seems to work for now anyway...
** Magit ** Magit
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-magit.el :header-args:elisp: :tangle target/desktop/emacs-magit.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-magit.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-magit.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1339,10 +1355,10 @@ available? It seems to work for now anyway...
** Vertico ** Vertico
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-vertico.el :header-args:elisp: :tangle target/desktop/emacs-vertico.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-vertico.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-vertico.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1445,10 +1461,10 @@ available? It seems to work for now anyway...
** Org ** Org
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-org.el :header-args:elisp: :tangle target/desktop/emacs-org.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-org.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-org.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1581,10 +1597,10 @@ available? It seems to work for now anyway...
** Terminal ** Terminal
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-terminal.el :header-args:elisp: :tangle target/desktop/emacs-terminal.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-terminal.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-terminal.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1602,10 +1618,10 @@ available? It seems to work for now anyway...
** Slack ** Slack
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-slack.el :header-args:elisp: :tangle target/desktop/emacs-slack.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-slack.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-slack.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1625,10 +1641,10 @@ available? It seems to work for now anyway...
** Kubernetes ** Kubernetes
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-kubernetes.el :header-args:elisp: :tangle target/desktop/emacs-kubernetes.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-kubernetes.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-kubernetes.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1648,7 +1664,7 @@ available? It seems to work for now anyway...
** Ledger ** Ledger
#+BEGIN_SRC nix :tangle target/emacs-ledger.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-ledger.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1661,10 +1677,10 @@ available? It seems to work for now anyway...
** Age ** Age
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-age.el :header-args:elisp: :tangle target/desktop/emacs-age.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-age.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-age.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;
@@ -1685,10 +1701,10 @@ available? It seems to work for now anyway...
** Claude Code ** Claude Code
:PROPERTIES: :PROPERTIES:
:header-args:elisp: :tangle target/emacs-claude-code.el :header-args:elisp: :tangle target/desktop/emacs-claude-code.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-claude-code.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-claude-code.nix
{pkgs, ...}: {pkgs, ...}:
{ {
programs.emacs = { programs.emacs = {
@@ -1720,7 +1736,7 @@ available? It seems to work for now anyway...
I like Catppuccin Frappe as my theme. Let's use it in as many places as we can. I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
** Bat ** Bat
#+BEGIN_SRC nix :tangle target/bat-theme.nix #+BEGIN_SRC nix :tangle target/base/bat-theme.nix
{pkgs, ...}: {pkgs, ...}:
{ {
programs.bat = { programs.bat = {
@@ -1741,14 +1757,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/helix-theme.nix #+BEGIN_SRC nix :tangle target/base/helix-theme.nix
{ {
programs.helix.settings.theme = "catppuccin_frappe"; programs.helix.settings.theme = "catppuccin_frappe";
} }
#+END_SRC #+END_SRC
** Tmux ** Tmux
#+BEGIN_SRC nix :tangle target/tmux-theme.nix #+BEGIN_SRC nix :tangle target/base/tmux-theme.nix
{pkgs, ...}: {pkgs, ...}:
{ {
programs.tmux.plugins = [ programs.tmux.plugins = [
@@ -1763,7 +1779,7 @@ 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/lazygit.nix #+BEGIN_SRC nix :tangle target/base/lazygit.nix
{pkgs, ...}: {pkgs, ...}:
{ {
xdg = { xdg = {
@@ -1784,7 +1800,7 @@ I like Catppuccin Frappe as my theme. Let's use it in as many places as we can.
#+END_SRC #+END_SRC
** Starship ** Starship
#+BEGIN_SRC nix :tangle target/starship_colors.nix #+BEGIN_SRC nix :tangle target/base/starship_colors.nix
{pkgs, ...}: {pkgs, ...}:
{ {
programs.starship.settings = builtins.fromTOML (builtins.readFile programs.starship.settings = builtins.fromTOML (builtins.readFile
@@ -1799,7 +1815,7 @@ 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/wezterm.lua #+BEGIN_SRC lua :tangle target/base/wezterm.lua
config.color_scheme = 'Catppuccin Frappe' config.color_scheme = 'Catppuccin Frappe'
return config return config
@@ -1807,10 +1823,10 @@ 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/emacs-theme.el :header-args:elisp: :tangle target/desktop/emacs-theme.el
:END: :END:
#+BEGIN_SRC nix :tangle target/emacs-theme.nix #+BEGIN_SRC nix :tangle target/desktop/emacs-theme.nix
{ {
programs.emacs = { programs.emacs = {
enable = true; enable = true;