From 6b224a9e314b6faedd25fc5361a5bb6ac8c3e0a3 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Fri, 27 Mar 2020 10:47:41 +0000 Subject: [PATCH] Drop support for lorri Lorri does not cleanly integrate with my corporate device, which cannot run NixOS. To expose dependencies to Emacs buffers, I will use nix-buffer.el, which reads its values from dir-locals.nix. To easily expose dependencies from my existing shell.nix files into dir-locals.nix, I wrote a Nix utility function. --- .envrc | 7 ++++++- configs/.config/nixpkgs/home.nix | 2 -- go/.envrc | 2 +- go/dir-locals.nix | 3 +++ go/shell.nix | 6 +++--- monzo_ynab/.envrc | 9 +-------- monzo_ynab/dir-locals.nix | 3 +++ monzo_ynab/shell.nix | 8 +++----- nixos/socrates/configuration.nix | 2 -- scratch/deepmind/part_two/.envrc | 1 - scratch/deepmind/part_two/dir-locals.nix | 3 +++ scratch/deepmind/part_two/shell.nix | 6 +++--- shell.nix | 13 ------------- tools/run/.envrc | 1 - tools/run/dir-locals.nix | 3 +++ tools/run/shell.nix | 8 +++++--- utils/default.nix | 6 ++++++ website/blog/.envrc | 1 - website/goals/dir-locals.nix | 3 +++ website/sandbox/nut-score/shell.nix | 8 -------- 20 files changed, 43 insertions(+), 52 deletions(-) create mode 100644 go/dir-locals.nix create mode 100644 monzo_ynab/dir-locals.nix create mode 100644 scratch/deepmind/part_two/dir-locals.nix delete mode 100644 shell.nix create mode 100644 tools/run/dir-locals.nix create mode 100644 website/goals/dir-locals.nix delete mode 100644 website/sandbox/nut-score/shell.nix diff --git a/.envrc b/.envrc index 051d09d29..76937ae6f 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,6 @@ -eval "$(lorri direnv)" +export BRIEFCASE="$(realpath ~/briefcase)" +export DEPOT="$(realpath ~/depot)" +export NIXPKGS="$(realpath ~/nixpkgs)" +export NIX_PATH="nixpkgs=${NIXPKGS}:depot=${DEPOT}:briefcase=${BRIEFCASE}"; +export DESKTOP="zeno.lon.corp.google.com"; +export LAPTOP="seneca"; diff --git a/configs/.config/nixpkgs/home.nix b/configs/.config/nixpkgs/home.nix index 2011381ab..9c7d44165 100644 --- a/configs/.config/nixpkgs/home.nix +++ b/configs/.config/nixpkgs/home.nix @@ -208,8 +208,6 @@ in { # Support mouseless workflows. services.keynav.enable = true; - services.lorri.enable = true; - services.gpg-agent = { enable = true; defaultCacheTtl = 8 * 60 * 60; # 8 hours diff --git a/go/.envrc b/go/.envrc index be81feddb..1abb058f6 100644 --- a/go/.envrc +++ b/go/.envrc @@ -1 +1 @@ -eval "$(lorri direnv)" \ No newline at end of file +source_up diff --git a/go/dir-locals.nix b/go/dir-locals.nix new file mode 100644 index 000000000..498f4b505 --- /dev/null +++ b/go/dir-locals.nix @@ -0,0 +1,3 @@ +let + briefcase = import {}; +in briefcase.utils.nixBufferFromShell ./shell.nix diff --git a/go/shell.nix b/go/shell.nix index e98da7d0f..aab4123bf 100644 --- a/go/shell.nix +++ b/go/shell.nix @@ -1,6 +1,6 @@ -{ pkgs, ... }: - -pkgs.mkShell { +let + pkgs = import {}; +in pkgs.mkShell { buildInputs = [ pkgs.go pkgs.goimports diff --git a/monzo_ynab/.envrc b/monzo_ynab/.envrc index 16fd7e76a..14829cb12 100644 --- a/monzo_ynab/.envrc +++ b/monzo_ynab/.envrc @@ -1,14 +1,7 @@ -# source_up traversing up directories until it finds the nearest .envrc file, -# which it uses to extend the environment in this .envrc. -# -# Since ../.envrc calls `eval "$(lorri direnv)"`, the buildInputs and variables -# definitions inside of the attribute set passed to pkgs.mkShell become -# available here as well. source_up export monzo_client_id="$(pass show finance/monzo/client-id)" export monzo_client_secret="$(pass show finance/monzo/client-secret)" -export store_path="$(pwd)" export ynab_personal_access_token="$(pass show finance/youneedabudget.com/personal-access-token)" export ynab_account_id="$(pass show finance/youneedabudget.com/personal-access-token)" export ynab_budget_id="$(pass show finance/youneedabudget.com/budget-id)" -eval "$(lorri direnv)" +export store_path="$(pwd)" diff --git a/monzo_ynab/dir-locals.nix b/monzo_ynab/dir-locals.nix new file mode 100644 index 000000000..498f4b505 --- /dev/null +++ b/monzo_ynab/dir-locals.nix @@ -0,0 +1,3 @@ +let + briefcase = import {}; +in briefcase.utils.nixBufferFromShell ./shell.nix diff --git a/monzo_ynab/shell.nix b/monzo_ynab/shell.nix index efdc5d3e4..aab4123bf 100644 --- a/monzo_ynab/shell.nix +++ b/monzo_ynab/shell.nix @@ -1,11 +1,9 @@ -{ pkgs, briefcase, ... }: - -pkgs.mkShell { +let + pkgs = import {}; +in pkgs.mkShell { buildInputs = [ pkgs.go pkgs.goimports pkgs.godef - briefcase.monzo_ynab.job - briefcase.monzo_ynab.tokens ]; } diff --git a/nixos/socrates/configuration.nix b/nixos/socrates/configuration.nix index 97a414cc4..a78da84d9 100644 --- a/nixos/socrates/configuration.nix +++ b/nixos/socrates/configuration.nix @@ -81,8 +81,6 @@ in { services.openssh.enable = true; - services.lorri.enable = true; - systemd.services.gogs = { enable = true; description = "Easy-to-use Git server written in golang"; diff --git a/scratch/deepmind/part_two/.envrc b/scratch/deepmind/part_two/.envrc index b80e28b4b..1abb058f6 100644 --- a/scratch/deepmind/part_two/.envrc +++ b/scratch/deepmind/part_two/.envrc @@ -1,2 +1 @@ source_up -eval "$(lorri direnv)" diff --git a/scratch/deepmind/part_two/dir-locals.nix b/scratch/deepmind/part_two/dir-locals.nix new file mode 100644 index 000000000..498f4b505 --- /dev/null +++ b/scratch/deepmind/part_two/dir-locals.nix @@ -0,0 +1,3 @@ +let + briefcase = import {}; +in briefcase.utils.nixBufferFromShell ./shell.nix diff --git a/scratch/deepmind/part_two/shell.nix b/scratch/deepmind/part_two/shell.nix index 606dd7167..65de88469 100644 --- a/scratch/deepmind/part_two/shell.nix +++ b/scratch/deepmind/part_two/shell.nix @@ -1,6 +1,6 @@ -{ pkgs ? import {}, ... }: - -pkgs.mkShell { +let + pkgs = import {}; +in pkgs.mkShell { buildInputs = with pkgs; [ nodejs python3 diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 674ae1da0..000000000 --- a/shell.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, ... }: - -pkgs.mkShell rec { - buildInputs = []; - # TODO(wpcarro): How does pkgs.mkShell handle exported and non-exported - # variable definitions? - BRIEFCASE = builtins.toPath ~/briefcase; - DEPOT = builtins.toPath ~/depot; - NIXPKGS = builtins.toPath ~/nixpkgs; - NIX_PATH="nixpkgs=${NIXPKGS}:depot=${DEPOT}:briefcase=${BRIEFCASE}"; - DESKTOP = "zeno.lon.corp.google.com"; - LAPTOP = "seneca"; -} diff --git a/tools/run/.envrc b/tools/run/.envrc index b80e28b4b..1abb058f6 100644 --- a/tools/run/.envrc +++ b/tools/run/.envrc @@ -1,2 +1 @@ source_up -eval "$(lorri direnv)" diff --git a/tools/run/dir-locals.nix b/tools/run/dir-locals.nix new file mode 100644 index 000000000..498f4b505 --- /dev/null +++ b/tools/run/dir-locals.nix @@ -0,0 +1,3 @@ +let + briefcase = import {}; +in briefcase.utils.nixBufferFromShell ./shell.nix diff --git a/tools/run/shell.nix b/tools/run/shell.nix index de192ae15..97d8ed61e 100644 --- a/tools/run/shell.nix +++ b/tools/run/shell.nix @@ -1,7 +1,9 @@ -{ pkgs, ... }: - -pkgs.mkShell { +let + pkgs = import {}; +in pkgs.mkShell { buildInputs = with pkgs; [ go + goimports + godef ]; } diff --git a/utils/default.nix b/utils/default.nix index df9673dae..d5130c10c 100644 --- a/utils/default.nix +++ b/utils/default.nix @@ -11,4 +11,10 @@ wrapNonNixProgram = { path, as }: pkgs.writeShellScriptBin as '' exec ${path} "$@" ''; + + # Expose the buildInputs from a Nix shell to an Emacs buffer. Intended to be + # called from dir-locals.nix files. + nixBufferFromShell = path: let + shell = import path; + in pkgs.nixBufferBuilders.withPackages shell.buildInputs; } diff --git a/website/blog/.envrc b/website/blog/.envrc index b80e28b4b..1abb058f6 100644 --- a/website/blog/.envrc +++ b/website/blog/.envrc @@ -1,2 +1 @@ source_up -eval "$(lorri direnv)" diff --git a/website/goals/dir-locals.nix b/website/goals/dir-locals.nix new file mode 100644 index 000000000..498f4b505 --- /dev/null +++ b/website/goals/dir-locals.nix @@ -0,0 +1,3 @@ +let + briefcase = import {}; +in briefcase.utils.nixBufferFromShell ./shell.nix diff --git a/website/sandbox/nut-score/shell.nix b/website/sandbox/nut-score/shell.nix deleted file mode 100644 index 501fc07c8..000000000 --- a/website/sandbox/nut-score/shell.nix +++ /dev/null @@ -1,8 +0,0 @@ -let - pkgs = import {}; -in pkgs.mkShell { - name = "nut-score"; - buildInputs = with pkgs; [ - yarn - ]; -}