From bbec58acbaece44cbb2df39cdcc477715306d8f3 Mon Sep 17 00:00:00 2001 From: Joe Frikker Date: Thu, 18 Jun 2026 11:08:34 -0400 Subject: [PATCH] wip --- flake.nix | 6 +-- home.org | 128 +++++++++++++++++++++++++++--------------------------- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/flake.nix b/flake.nix index 5d77e93..77ffda1 100644 --- a/flake.nix +++ b/flake.nix @@ -50,16 +50,14 @@ modules = [ nix-index-database.homeModules.default - "${modules}/base.nix" - "${modules}/desktop.nix" - "${modules}/shibumi.nix" - "${modules}/shibumi-desktop.nix" + "${modules}" ] ++ [{ home.stateVersion = "22.05"; home.username = "jfrikker"; home.homeDirectory = "/Users/jfrikker"; home.packages = [ pkgs.pinentry_mac ]; + jfrikker.desktop.enable = true; }]; extraSpecialArgs = { kube = kube.packages.aarch64-darwin.default; }; diff --git a/home.org b/home.org index bdb04d9..8885f99 100644 --- a/home.org +++ b/home.org @@ -1,36 +1,32 @@ #+PROPERTY: header-args :mkdirp yes #+PROPERTY: header-args:elisp :lexical t -* Categories +* Base -#+BEGIN_SRC nix :tangle target/base.nix - {lib, ...}: { - imports = lib.filter - (n: lib.strings.hasSuffix ".nix" n) - (lib.filesystem.listFilesRecursive ./base); +#+BEGIN_SRC nix :tangle target/default.nix + { + imports = [ + ./base_options.nix + ./sbcl.nix + ./crypto.nix + ./rust-reimpls.nix + ./ledger.nix + ./nil.nix + ./magic-wormhole.nix + ./desktop-packages.nix + ./shibumi.nix + ./slack.nix + ]; } #+END_SRC -#+BEGIN_SRC nix :tangle target/desktop.nix - {lib, ...}: { - imports = lib.filter - (n: lib.strings.hasSuffix ".nix" n) - (lib.filesystem.listFilesRecursive ./desktop); - } -#+END_SRC - -#+BEGIN_SRC nix :tangle target/shibumi.nix - {lib, ...}: { - imports = lib.filter - (n: lib.strings.hasSuffix ".nix" n) - (lib.filesystem.listFilesRecursive ./shibumi); - } -#+END_SRC - -#+BEGIN_SRC nix :tangle target/shibumi-desktop.nix - {lib, ...}: { - imports = lib.filter - (n: lib.strings.hasSuffix ".nix" n) - (lib.filesystem.listFilesRecursive ./shibumi-desktop); +#+BEGIN_SRC nix :tangle target/base_options.nix + {lib, ...}: + with lib; + { + options = { + jfrikker.desktop.enable = mkEnableOption "desktop tools"; + jfrikker.shibumi.enable = mkEnableOption "shibumi-specific tools"; + }; } #+END_SRC @@ -45,7 +41,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 +#+BEGIN_SRC nix :tangle target/sbcl.nix {pkgs, ...}: { home.packages = with pkgs; [ @@ -96,7 +92,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 +#+BEGIN_SRC nix :tangle target/crypto.nix {pkgs, ...}: { home.packages = with pkgs; [ @@ -116,7 +112,7 @@ tools. They boost better speed, or simply more streamlined features. | ~ripgrep~ | ~grep~ | | ~xh~ | ~curl~ | -#+BEGIN_SRC nix :tangle target/base/rust-reimpls.nix +#+BEGIN_SRC nix :tangle target/rust-reimpls.nix {pkgs, ...}: { home.packages = with pkgs; [ @@ -131,7 +127,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 +#+BEGIN_SRC nix :tangle target/ledger.nix {pkgs, ...}: { home.packages = with pkgs; [ @@ -142,7 +138,7 @@ 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 +#+BEGIN_SRC nix :tangle target/nil.nix {pkgs, ...}: { home.packages = with pkgs; [ @@ -155,11 +151,11 @@ 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 +#+begin_src nix :tangle target/magic-wormhole.nix {pkgs, ...}: { home.packages = with pkgs; [ - magic-wormhole + magic-wormhole ]; } #+end_src @@ -167,46 +163,52 @@ 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 Shibumi-specific; ideally I'd find another way to install them. - #+BEGIN_SRC nix :tangle target/shibumi/other-packages.nix - {pkgs, kube, ...}: + #+BEGIN_SRC nix :tangle target/shibumi.nix + {lib, pkgs, kube, config, ...}: { - home.packages = with pkgs; [ - aws-iam-authenticator - awscli2 - kube - kubectl - mariadb.client - openssh - ]; - - fonts.fontconfig.enable = true; + config = lib.mkIf config.jfrikker.shibumi.enable { + home.packages = with pkgs; [ + aws-iam-authenticator + awscli2 + kube + kubectl + mariadb.client + openssh + ]; + }; } #+END_SRC These programs require a full desktop environment: -#+BEGIN_SRC nix :tangle target/desktop/desktop-packages.nix - {pkgs, ...}: +#+BEGIN_SRC nix :tangle target/desktop-packages.nix + {lib, pkgs, config, ...}: { - home.packages = with pkgs; [ - google-chrome - nerd-fonts.jetbrains-mono - (iosevka-bin.override { variant = "Aile"; }) - (iosevka-bin.override { variant = "Etoile"; }) - (iosevka-bin.override { variant = "SGr-IosevkaTerm"; }) - keymapp - proton-pass - wireshark - ]; + config = lib.mkIf config.jfrikker.desktop.enable { + home.packages = with pkgs; [ + google-chrome + nerd-fonts.jetbrains-mono + (iosevka-bin.override { variant = "Aile"; }) + (iosevka-bin.override { variant = "Etoile"; }) + (iosevka-bin.override { variant = "SGr-IosevkaTerm"; }) + keymapp + proton-pass + wireshark + ]; + + fonts.fontconfig.enable = true; + }; } #+END_SRC -#+BEGIN_SRC nix :tangle target/shibumi-desktop/desktop-packages.nix - {pkgs, ...}: +#+BEGIN_SRC nix :tangle target/slack.nix + {lib, pkgs, config, ...}: { - home.packages = with pkgs; [ - slack - ]; + config = lib.mkIf (config.jfrikker.shibumi.enable && config.jfrikker.desktop.enable) { + home.packages = with pkgs; [ + slack + ]; + }; } #+END_SRC