-
Notifications
You must be signed in to change notification settings - Fork 2
/
flake.nix
75 lines (63 loc) · 2.06 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{
description = "tmuxist - Self contained tmux poweruser config. Including remote awereness for nesting.";
inputs = {
nixpkgs = {
url = "github:nixos/nixpkgs/nixpkgs-unstable";
};
flake-utils = {
url = "github:numtide/flake-utils";
};
};
outputs = {
nixpkgs,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (
system: let
pkgs = import nixpkgs {
inherit system;
};
plugins = import ./plugins.nix {inherit pkgs;};
dependencies = import ./dependencies.nix {inherit pkgs;};
pluginConfig = pkgs.lib.concatMapStringsSep "\n" (plugin: "run-shell ${plugin.rtp}") plugins;
# Replace plugin config for installation using git with plugin config using this flake.
tmuxConfig =
builtins.replaceStrings
["# NIX PLUGIN CONFIG PLACEHOLDER" "run-shell ~/"]
[pluginConfig "# run-shell ~/"]
(builtins.readFile ./tmux/.tmux.conf);
tmuxConfigPath = pkgs.writeText "tmux.conf" tmuxConfig;
tmuxWrapped = pkgs.tmux.overrideAttrs (oldAttrs: {
buildInputs = (oldAttrs.buildInputs or []) ++ [pkgs.makeWrapper];
postInstall =
(oldAttrs.postInstall or "")
+ ''
wrapProgram $out/bin/tmux \
--add-flags "-f ${tmuxConfigPath}" \
--prefix PATH : "${pkgs.lib.makeBinPath dependencies}"
'';
});
in rec {
# Use wrapper to add plugins and custom configuration.
packages.tmux = tmuxWrapped;
apps.tmux = {
type = "app";
program = "${defaultPackage}/bin/tmux";
};
defaultApp = apps.tmux;
defaultPackage = packages.tmux;
formatter = pkgs.alejandra;
devShells = {
default = pkgs.mkShell {
NIX_CONFIG = "extra-experimental-features = nix-command flakes repl-flake";
nativeBuildInputs = with pkgs; [
git
pre-commit
ruby
];
};
};
}
);
}