mirror of
https://github.com/kittywitch/nixfiles.git
synced 2026-02-09 04:19:19 -08:00
feat: lurching towards relative usability
This commit is contained in:
parent
a0fb7eb402
commit
961ec369ba
51 changed files with 1349 additions and 407 deletions
41
home/base16.nix
Normal file
41
home/base16.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
base16 = {
|
||||
vim.enable = false;
|
||||
vim.template = data: let
|
||||
drv = pkgs.base16-templates.vim.withTemplateData data;
|
||||
in drv.overrideAttrs (old: {
|
||||
src = pkgs.fetchFromGitHub {
|
||||
repo = "base16-vim";
|
||||
owner = "fnune";
|
||||
rev = "52e4ce93a6234d112bc88e1ad25458904ffafe61";
|
||||
sha256 = "10y8z0ycmdjk47dpxf6r2pc85k0y19a29aww99vgnxp31wrkc17h";
|
||||
};
|
||||
patches = old.patches or [ ] ++ [
|
||||
(pkgs.fetchurl {
|
||||
# base16background=none
|
||||
url = "https://github.com/arcnmx/base16-vim/commit/fe16eaaa1de83b649e6867c61494276c1f35c3c3.patch";
|
||||
sha256 = "1c0n7mf6161mvxn5xlabhyxzha0m1c41csa6i43ng8zybbspipld";
|
||||
})
|
||||
(pkgs.fetchurl {
|
||||
# fix unreadable error highlights under cursor
|
||||
url = "https://github.com/arcnmx/base16-vim/commit/807e442d95c57740dd3610c9f9c07c9aae8e0995.patch";
|
||||
sha256 = "1l3qmk15v8d389363adkmfg8cpxppyhlk215yq3rdcasvw7r8bla";
|
||||
})
|
||||
];
|
||||
});
|
||||
shell.enable = true;
|
||||
schemes = lib.mkMerge [
|
||||
{
|
||||
light = "atelier.atelier-cave-light";
|
||||
dark = "atelier.atelier-cave";
|
||||
}
|
||||
{
|
||||
dark.ansi.palette.background.alpha = "ee00";
|
||||
light.ansi.palette.background.alpha = "d000";
|
||||
}
|
||||
];
|
||||
defaultSchemeName = "dark";
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{ config, ... }: {
|
||||
_: {
|
||||
home = {
|
||||
username = "kat";
|
||||
stateVersion = "22.11";
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
{ config, lib, pkgs, ... }: let
|
||||
inherit (lib.modules) mkIf;
|
||||
in {
|
||||
config = mkIf config.role.development {
|
||||
home.packages = [
|
||||
pkgs.deadnix
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,87 +1,93 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.strings) fixedWidthNumber hasInfix;
|
||||
inherit (lib.attrsets) mapAttrs filterAttrs;
|
||||
packDir = builtins.toString(pkgs.vimUtils.packDir config.programs.neovim.generatedConfigViml.configure.packages);
|
||||
initLua = pkgs.substituteAll ({
|
||||
name = "init.lua";
|
||||
src = ./init.lua;
|
||||
inherit packDir;
|
||||
base16ShellPath = config.base16.shell.package;
|
||||
defaultSchemeName = config.base16.defaultSchemeName;
|
||||
defaultSchemeSlug = config.base16.defaultScheme.slug;
|
||||
} // mapAttrs (_: col: fixedWidthNumber 2 col.ansiIndex)
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.strings) fixedWidthNumber hasInfix;
|
||||
inherit (lib.attrsets) mapAttrs filterAttrs;
|
||||
packDir = builtins.toString (pkgs.vimUtils.packDir config.programs.neovim.generatedConfigViml.configure.packages);
|
||||
initLua = pkgs.substituteAll ({
|
||||
name = "init.lua";
|
||||
src = ./init.lua;
|
||||
inherit packDir;
|
||||
base16ShellPath = config.base16.shell.package;
|
||||
inherit (config.base16) defaultSchemeName;
|
||||
defaultSchemeSlug = config.base16.defaultScheme.slug;
|
||||
}
|
||||
// mapAttrs (_: col: fixedWidthNumber 2 col.ansiIndex)
|
||||
(filterAttrs (var: _: hasInfix "base" var) config.base16.defaultScheme));
|
||||
in mkIf config.programs.neovim.enable {
|
||||
home.sessionVariables.EDITOR = "nvim";
|
||||
in
|
||||
mkIf config.programs.neovim.enable {
|
||||
home.sessionVariables.EDITOR = "nvim";
|
||||
|
||||
programs.neovim = {
|
||||
vimAlias = true;
|
||||
viAlias = true;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# Libraries
|
||||
plenary-nvim
|
||||
# Disables and re-enables highlighting when searching
|
||||
vim-cool
|
||||
# Colour highlighting
|
||||
vim-hexokinase
|
||||
# Git porcelain
|
||||
vim-fugitive
|
||||
# Start screen
|
||||
vim-startify
|
||||
# Re-open with cursor at the same place
|
||||
vim-lastplace
|
||||
# Status Bar
|
||||
lualine-nvim
|
||||
# EasyMotion Equivalent
|
||||
hop-nvim
|
||||
# base16
|
||||
config.base16.vim.plugin
|
||||
# Fonts
|
||||
nvim-web-devicons
|
||||
# Completion
|
||||
nvim-cmp
|
||||
# Fuzzy Finder
|
||||
telescope-nvim
|
||||
# Buffers
|
||||
bufferline-nvim
|
||||
# Language Server
|
||||
nvim-lspconfig
|
||||
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_: with pkgs.tree-sitter-grammars; [
|
||||
tree-sitter-c
|
||||
tree-sitter-lua
|
||||
tree-sitter-rust
|
||||
#tree-sitter-bash
|
||||
tree-sitter-css
|
||||
tree-sitter-dockerfile
|
||||
tree-sitter-go
|
||||
tree-sitter-hcl
|
||||
tree-sitter-html
|
||||
tree-sitter-javascript
|
||||
tree-sitter-markdown
|
||||
tree-sitter-nix
|
||||
tree-sitter-norg
|
||||
tree-sitter-python
|
||||
tree-sitter-regex
|
||||
tree-sitter-scss
|
||||
]))
|
||||
# Treesitter Plugins
|
||||
nvim-ts-rainbow
|
||||
nvim-treesitter-context
|
||||
twilight-nvim
|
||||
];
|
||||
extraPackages = with pkgs; [
|
||||
# For nvim-lspconfig, Terraform Language Server
|
||||
terraform-ls
|
||||
# For tree-sitter
|
||||
programs.neovim = {
|
||||
vimAlias = true;
|
||||
viAlias = true;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# Libraries
|
||||
plenary-nvim
|
||||
# Disables and re-enables highlighting when searching
|
||||
vim-cool
|
||||
# Colour highlighting
|
||||
vim-hexokinase
|
||||
# Git porcelain
|
||||
vim-fugitive
|
||||
# Start screen
|
||||
vim-startify
|
||||
# Re-open with cursor at the same place
|
||||
vim-lastplace
|
||||
# Status Bar
|
||||
lualine-nvim
|
||||
# EasyMotion Equivalent
|
||||
hop-nvim
|
||||
# base16
|
||||
config.base16.vim.plugin
|
||||
# Fonts
|
||||
nvim-web-devicons
|
||||
# Completion
|
||||
nvim-cmp
|
||||
# Fuzzy Finder
|
||||
telescope-nvim
|
||||
# Buffers
|
||||
bufferline-nvim
|
||||
# Language Server
|
||||
nvim-lspconfig
|
||||
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_:
|
||||
with pkgs.tree-sitter-grammars; [
|
||||
tree-sitter-c
|
||||
tree-sitter-lua
|
||||
tree-sitter-rust
|
||||
#tree-sitter-bash
|
||||
tree-sitter-css
|
||||
tree-sitter-dockerfile
|
||||
tree-sitter-go
|
||||
tree-sitter-hcl
|
||||
tree-sitter-html
|
||||
tree-sitter-javascript
|
||||
tree-sitter-markdown
|
||||
tree-sitter-nix
|
||||
tree-sitter-norg
|
||||
tree-sitter-python
|
||||
tree-sitter-regex
|
||||
tree-sitter-scss
|
||||
]))
|
||||
# Treesitter Plugins
|
||||
nvim-ts-rainbow
|
||||
nvim-treesitter-context
|
||||
twilight-nvim
|
||||
];
|
||||
extraPackages = with pkgs; [
|
||||
# For nvim-lspconfig, Terraform Language Server
|
||||
terraform-ls
|
||||
# For tree-sitter
|
||||
tree-sitter
|
||||
nodejs
|
||||
clang
|
||||
clangStdenv.cc
|
||||
];
|
||||
};
|
||||
];
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/init.lua".source = initLua;
|
||||
}
|
||||
xdg.configFile."nvim/init.lua".source = initLua;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ config, lib, pkgs, ... }: let
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.options) mkEnableOption;
|
||||
in {
|
||||
|
|
@ -9,12 +14,5 @@ in {
|
|||
home.packages = [
|
||||
pkgs.wezterm
|
||||
];
|
||||
xdg.configFile."wezterm/wezterm.lua".text = ''
|
||||
local = wezterm = require 'wezterm'
|
||||
return {
|
||||
check_for_updates = false,
|
||||
enable_tab_bar = true
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
{ config, ... }: {
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{ config, ... }: {
|
||||
role.development = true;
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{ config, ... }: {
|
||||
programs.wezterm.enable = true;
|
||||
}
|
||||
12
home/shell/bitw.nix
Normal file
12
home/shell/bitw.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{ config, pkgs, meta, lib, ... }: {
|
||||
programs.rbw = {
|
||||
enable = true;
|
||||
package = lib.mkIf (meta.trusted ? secrets) (pkgs.writeShellScriptBin "bitw" ''${pkgs.rbw-bitw}/bin/bitw -p gpg://${config.secrets.repo.bitw.source} "$@"'');
|
||||
settings = {
|
||||
email = "kat@kittywit.ch";
|
||||
base_url = "https://vault.kittywit.ch";
|
||||
identity_url = null;
|
||||
lock_timeout = 3600;
|
||||
};
|
||||
};
|
||||
}
|
||||
6
home/shell/direnv.nix
Normal file
6
home/shell/direnv.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{ config, ... }: {
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
}
|
||||
11
home/shell/exa.nix
Normal file
11
home/shell/exa.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{ config, pkgs, ... }: {
|
||||
home.packages = [ pkgs.exa ];
|
||||
|
||||
programs.zsh.shellAliases = {
|
||||
exa = "exa --time-style long-iso";
|
||||
ls = "exa -G";
|
||||
la = "exa -Ga";
|
||||
ll = "exa -l";
|
||||
lla = "exa -lga";
|
||||
};
|
||||
}
|
||||
10
home/shell/fzf.nix
Normal file
10
home/shell/fzf.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{ config, pkgs, lib, ... }: {
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
programs.zsh.plugins = lib.optional (pkgs.hostPlatform == pkgs.buildPlatform) {
|
||||
name = "fzf-tab";
|
||||
src = "${pkgs.zsh-fzf-tab}/share/fzf-tab";
|
||||
};
|
||||
}
|
||||
29
home/shell/git.nix
Normal file
29
home/shell/git.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
gitAndTools.git-remote-gcrypt
|
||||
git-crypt
|
||||
git-revise
|
||||
];
|
||||
|
||||
programs.git = {
|
||||
package = pkgs.gitAndTools.gitFull;
|
||||
enable = true;
|
||||
userName = "Kat Inskip";
|
||||
userEmail = "kat@inskip.me";
|
||||
extraConfig = {
|
||||
init = { defaultBranch = "main"; };
|
||||
protocol.gcrypt.allow = "always";
|
||||
annex = {
|
||||
autocommit = false;
|
||||
backend = "BLAKE2B512";
|
||||
synccontent = true;
|
||||
};
|
||||
};
|
||||
signing = {
|
||||
key = "0xE8DDE3ED1C90F3A0";
|
||||
signByDefault = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
21
home/shell/inputrc.nix
Normal file
21
home/shell/inputrc.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
xdg.configFile."inputrc".text = ''
|
||||
set editing-mode vi
|
||||
set keyseq-timeout 1
|
||||
set mark-symlinked-directories on
|
||||
set completion-prefix-display-length 8
|
||||
set show-all-if-ambiguous on
|
||||
set show-all-if-unmodified on
|
||||
set visible-stats on
|
||||
set colored-stats on
|
||||
set bell-style audible
|
||||
set meta-flag on
|
||||
set input-meta on
|
||||
set convert-meta off
|
||||
set output-meta on
|
||||
'';
|
||||
|
||||
home.sessionVariables.INPUTRC = "${config.xdg.configHome}/inputrc";
|
||||
}
|
||||
19
home/shell/lc.nix
Normal file
19
home/shell/lc.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{ config, ... }: {
|
||||
home.language = let
|
||||
ca = "en_CA.UTF-8";
|
||||
dk = "en_DK.UTF-8";
|
||||
in {
|
||||
base = ca;
|
||||
ctype = ca;
|
||||
time = ca;
|
||||
numeric = ca;
|
||||
collate = ca;
|
||||
monetary = ca;
|
||||
messages = ca;
|
||||
paper = ca;
|
||||
name = ca;
|
||||
address = ca;
|
||||
telephone = ca;
|
||||
measurement = ca;
|
||||
};
|
||||
}
|
||||
32
home/shell/packages.nix
Normal file
32
home/shell/packages.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{ config, pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
# task managers
|
||||
htop
|
||||
btop
|
||||
# disk usage
|
||||
duc-cli
|
||||
# nix formatting
|
||||
nixpkgs-fmt
|
||||
# show type of files
|
||||
file
|
||||
# command monitoring
|
||||
pv
|
||||
# cat but better
|
||||
bat
|
||||
# ls replacement
|
||||
exa
|
||||
# sed replacement
|
||||
sd
|
||||
# find replacement
|
||||
fd
|
||||
# ripgrep / grep replacement
|
||||
ripgrep
|
||||
# remote tmux
|
||||
tmate
|
||||
# remote utilities
|
||||
socat
|
||||
rsync
|
||||
wget
|
||||
whois
|
||||
];
|
||||
}
|
||||
39
home/shell/rink.nix
Normal file
39
home/shell/rink.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
#rink-readline TODO: wait for fix
|
||||
rink
|
||||
];
|
||||
|
||||
xdg.configFile."rink/config.toml".text = lib.toTOML {
|
||||
colors = {
|
||||
enabled = true;
|
||||
theme = "my_theme";
|
||||
};
|
||||
currency = {
|
||||
cache_duration = "1h";
|
||||
enabled = true;
|
||||
endpoint = "https://rinkcalc.app/data/currency.json";
|
||||
timeout = "2s";
|
||||
};
|
||||
rink = {
|
||||
long_output = true;
|
||||
prompt = "> ";
|
||||
};
|
||||
themes = {
|
||||
my_theme = {
|
||||
date_time = "default";
|
||||
doc_string = "italic";
|
||||
error = "red";
|
||||
number = "default";
|
||||
plain = "default";
|
||||
pow = "default";
|
||||
prop_name = "cyan";
|
||||
quantity = "dimmed cyan";
|
||||
unit = "cyan";
|
||||
user_input = "bold";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
11
home/shell/ssh.nix
Normal file
11
home/shell/ssh.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{ meta, config, pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
controlMaster = "auto";
|
||||
controlPersist = "10m";
|
||||
hashKnownHosts = true;
|
||||
compression = true;
|
||||
};
|
||||
}
|
||||
6
home/shell/starship.nix
Normal file
6
home/shell/starship.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{ config, ... }: {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
}
|
||||
50
home/shell/tmux.nix
Normal file
50
home/shell/tmux.nix
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.zsh.shellAliases = {
|
||||
tt = "tmux new -AD -s";
|
||||
};
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
terminal = "tmux-256color";
|
||||
keyMode = "vi";
|
||||
baseIndex = 1;
|
||||
extraConfig = with lib.mapAttrs (_: v: "colour${toString v}") pkgs.base16.shell.shell256; ''
|
||||
# proper title handling
|
||||
set -g set-titles on
|
||||
set -g set-titles-string "#T"
|
||||
set -ga terminal-overrides ",xterm-256color:Tc"
|
||||
|
||||
# modes
|
||||
setw -g clock-mode-colour colour8
|
||||
setw -g mode-style 'fg=${base07} bg=${base02} bold'
|
||||
|
||||
# panes
|
||||
set -g pane-border-style 'fg=${base06} bg=${base02}'
|
||||
set -g pane-active-border-style 'bg=${base0D} fg=${base07}'
|
||||
|
||||
# statusbar
|
||||
set -g status-position bottom
|
||||
set -g status-justify left
|
||||
set -g status-style 'bg=${base00} fg=${base06}'
|
||||
set -g status-left '#[fg=${base06} bg=${base01}] #S@#h '
|
||||
set -g status-right '#[fg=${base07},bg=${base01}] %F #[fg=${base07},bg=${base02}] %H:%M:%S %Z '
|
||||
set -g status-right-length 50
|
||||
set -g status-left-length 20
|
||||
|
||||
setw -g window-status-current-style 'fg=${base07} bg=${base0D} bold'
|
||||
setw -g window-status-current-format ' #I#[fg=${base07}]:#[fg=${base07}]#W#[fg=${base07}]#F '
|
||||
|
||||
setw -g window-status-style 'fg=${base06} bg=${base03}'
|
||||
setw -g window-status-format ' #I#[fg=${base07}]:#[fg=${base06}]#W#[${base06}]#F '
|
||||
|
||||
setw -g window-status-bell-style 'fg=colour255 bg=colour1 bold'
|
||||
|
||||
# messages
|
||||
set -g message-style 'fg=colour232 bg=colour16 bold'
|
||||
|
||||
# mouse
|
||||
set -g mouse on
|
||||
'';
|
||||
};
|
||||
}
|
||||
16
home/shell/z.nix
Normal file
16
home/shell/z.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{ config, pkgs, ... }: {
|
||||
# ensure .local/share/z is created
|
||||
xdg.dataFile."z/.keep".text = "";
|
||||
|
||||
programs.zsh = {
|
||||
localVariables = {
|
||||
_Z_DATA = "${config.xdg.dataHome}/z/data";
|
||||
};
|
||||
plugins = map (plugin: (with pkgs.${plugin}; {
|
||||
name = pname;
|
||||
inherit src;
|
||||
})) [
|
||||
"zsh-z"
|
||||
];
|
||||
};
|
||||
}
|
||||
107
home/shell/zsh.nix
Normal file
107
home/shell/zsh.nix
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# programs.zsh.enableAutosuggestions only includes nix-zsh-autocompletions
|
||||
zsh-completions
|
||||
];
|
||||
|
||||
xdg.configFile."kattheme_immutable.json".text = builtins.toJSON rec {
|
||||
default = config.base16.defaultSchemeName;
|
||||
current = default;
|
||||
};
|
||||
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableSyntaxHighlighting = true;
|
||||
enableAutosuggestions = true;
|
||||
initExtra =
|
||||
let
|
||||
zshOpts = [
|
||||
"auto_pushd"
|
||||
"pushd_ignore_dups"
|
||||
"pushdminus"
|
||||
"rmstarsilent"
|
||||
"nonomatch"
|
||||
"long_list_jobs"
|
||||
"interactivecomments"
|
||||
"append_history"
|
||||
"hist_ignore_space"
|
||||
"hist_verify"
|
||||
"inc_append_history"
|
||||
"nosharehistory"
|
||||
"nomenu_complete"
|
||||
"auto_menu"
|
||||
"no_auto_remove_slash"
|
||||
"complete_in_word"
|
||||
"always_to_end"
|
||||
"nolistbeep"
|
||||
"autolist"
|
||||
"listrowsfirst"
|
||||
]; in
|
||||
''
|
||||
${if pkgs.hostPlatform.isLinux then ''
|
||||
eval $(dircolors -b | sd "\*#=00;90" "*\#=00;90")
|
||||
'' else ''
|
||||
''}
|
||||
PROMPT_EOL_MARK='''
|
||||
ZSH_TAB_TITLE_ADDITIONAL_TERMS='wezterm'
|
||||
ZSH_TAB_TITLE_ENABLE_FULL_COMMAND=true
|
||||
zmodload -i zsh/complist
|
||||
h=()
|
||||
if [[ -r ~/.ssh/config ]]; then
|
||||
h=($h ''${''${''${(@M)''${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
|
||||
fi
|
||||
if [[ $#h -gt 0 ]]; then
|
||||
zstyle ':completion:*:ssh:*' hosts $h
|
||||
zstyle ':completion:*:slogin:*' hosts $h
|
||||
fi
|
||||
unset h
|
||||
u=(root ${config.home.username})
|
||||
zstyle ':completion:*:ssh:*' users $u
|
||||
unset u
|
||||
zstyle ':completion:*:*:*:*:*' menu select
|
||||
zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories
|
||||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
|
||||
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w"
|
||||
zstyle ':completion:*:complete:pass:*:*' matcher 'r:|[./_-]=** r:|=*' 'l:|=* r:|=*'
|
||||
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
||||
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'exa -1lb --color=always $realpath'
|
||||
${lib.concatStringsSep "\n" (map (opt: "setopt ${opt}") zshOpts)}
|
||||
bindkey '^ ' autosuggest-accept
|
||||
${if pkgs.hostPlatform.isDarwin then ''
|
||||
export PATH="''${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
|
||||
'' else ""
|
||||
}
|
||||
'';
|
||||
shellAliases = lib.mkMerge [
|
||||
{
|
||||
nixdirfmt = "nixpkgs-fmt $(fd -e nix)";
|
||||
dmesg = "dmesg -HP";
|
||||
hg = "history 0 | rg";
|
||||
}
|
||||
(lib.mkIf pkgs.hostPlatform.isLinux {
|
||||
sys = "systemctl";
|
||||
sysu = "systemctl --user";
|
||||
logu = "journalctl --user";
|
||||
log = "journalctl";
|
||||
lg = "log --no-pager | rg";
|
||||
})
|
||||
];
|
||||
localVariables = {
|
||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=3,bold";
|
||||
ZSH_AUTOSUGGEST_USE_ASYNC = 1;
|
||||
};
|
||||
plugins = with pkgs.zsh-plugins; (map (plugin: plugin.zshPlugin) [
|
||||
tab-title
|
||||
vim-mode
|
||||
evil-registers
|
||||
]);
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
XDG_DATA_HOME = "${config.xdg.dataHome}";
|
||||
};
|
||||
}
|
||||
19
home/system.nix
Normal file
19
home/system.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
config,
|
||||
tree,
|
||||
machine,
|
||||
...
|
||||
}: {
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
sharedModules = with tree; [
|
||||
home.modules
|
||||
home.common
|
||||
];
|
||||
extraSpecialArgs = {
|
||||
inherit tree machine;
|
||||
nixos = config;
|
||||
};
|
||||
};
|
||||
}
|
||||
89
home/vim/default.nix
Normal file
89
home/vim/default.nix
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
{ config, lib, pkgs, nixos, ... }:
|
||||
|
||||
let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.strings) concatStringsSep fixedWidthNumber hasInfix;
|
||||
inherit (lib.attrsets) mapAttrs filterAttrs;
|
||||
packDir = builtins.toString(pkgs.vimUtils.packDir config.programs.neovim.generatedConfigViml.configure.packages);
|
||||
initLua = pkgs.substituteAll ({
|
||||
name = "init.lua";
|
||||
src = ./init.lua;
|
||||
inherit packDir;
|
||||
base16ShellPath = config.base16.shell.package;
|
||||
inherit (config.base16) defaultSchemeName;
|
||||
defaultSchemeSlug = config.base16.defaultScheme.slug;
|
||||
} // mapAttrs (_: col: fixedWidthNumber 2 col.ansiIndex)
|
||||
(filterAttrs (var: _: hasInfix "base" var) config.base16.defaultScheme));
|
||||
in {
|
||||
home.sessionVariables = mkIf config.programs.neovim.enable { EDITOR = "nvim"; };
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
vimAlias = true;
|
||||
viAlias = true;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# Libraries
|
||||
plenary-nvim
|
||||
# Disables and re-enables highlighting when searching
|
||||
vim-cool
|
||||
# Colour highlighting
|
||||
vim-hexokinase
|
||||
# Git porcelain
|
||||
vim-fugitive
|
||||
# Start screen
|
||||
vim-startify
|
||||
# Re-open with cursor at the same place
|
||||
vim-lastplace
|
||||
# Status Bar
|
||||
lualine-nvim
|
||||
# EasyMotion Equivalent
|
||||
hop-nvim
|
||||
# org-mode for vim
|
||||
# neorg
|
||||
# base16
|
||||
config.base16.vim.plugin
|
||||
# Fonts
|
||||
nvim-web-devicons
|
||||
# Completion
|
||||
nvim-cmp
|
||||
# Fuzzy Finder
|
||||
telescope-nvim
|
||||
# Buffers
|
||||
bufferline-nvim
|
||||
# Language Server
|
||||
nvim-lspconfig
|
||||
(pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins: with pkgs.tree-sitter-grammars; [
|
||||
tree-sitter-c
|
||||
tree-sitter-lua
|
||||
tree-sitter-rust
|
||||
#tree-sitter-bash
|
||||
tree-sitter-css
|
||||
tree-sitter-dockerfile
|
||||
tree-sitter-go
|
||||
tree-sitter-hcl
|
||||
tree-sitter-html
|
||||
tree-sitter-javascript
|
||||
tree-sitter-markdown
|
||||
tree-sitter-nix
|
||||
tree-sitter-norg
|
||||
tree-sitter-python
|
||||
tree-sitter-regex
|
||||
tree-sitter-scss
|
||||
]))
|
||||
# Treesitter Plugins
|
||||
nvim-ts-rainbow
|
||||
nvim-treesitter-context
|
||||
twilight-nvim
|
||||
];
|
||||
extraPackages = with pkgs; [
|
||||
# For nvim-lspconfig, Terraform Language Server
|
||||
terraform-ls
|
||||
# For tree-sitter
|
||||
tree-sitter
|
||||
nodejs
|
||||
clang
|
||||
clangStdenv.cc
|
||||
];
|
||||
};
|
||||
xdg.configFile."nvim/init.lua".source = initLua;
|
||||
}
|
||||
345
home/vim/init.lua
Normal file
345
home/vim/init.lua
Normal file
|
|
@ -0,0 +1,345 @@
|
|||
-----------------------------------------------------------
|
||||
-- Variables
|
||||
-----------------------------------------------------------
|
||||
local g = vim.g -- Global variables
|
||||
local opt = vim.opt -- Set options (global/buffer/windows-scoped)
|
||||
local wo = vim.wo -- Window local variables
|
||||
local api = vim.api -- Lua API
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- Nix Fuckery
|
||||
-----------------------------------------------------------
|
||||
opt.packpath:prepend{"@packDir@"}
|
||||
opt.runtimepath:prepend{"@packDir@"}
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- Base16
|
||||
-----------------------------------------------------------
|
||||
vim.g.base16colorspace = 256
|
||||
vim.g.base16background = "@defaultSchemeName@"
|
||||
g.base16_shell_path = "@base16ShellPath@"
|
||||
vim.cmd("colorscheme base16-@defaultSchemeSlug@")
|
||||
g.colors_name = "@defaultSchemeSlug@"
|
||||
|
||||
local base16 = {
|
||||
base00 = "@base00@",
|
||||
base01 = "@base01@",
|
||||
base02 = "@base02@",
|
||||
base03 = "@base03@",
|
||||
base04 = "@base04@",
|
||||
base05 = "@base05@",
|
||||
base06 = "@base06@",
|
||||
base07 = "@base07@",
|
||||
base08 = "@base08@",
|
||||
base09 = "@base09@",
|
||||
base0A = "@base0A@",
|
||||
base0B = "@base0B@",
|
||||
base0C = "@base0C@",
|
||||
base0D = "@base0D@",
|
||||
base0E = "@base0E@",
|
||||
base0F = "@base0F@"
|
||||
}
|
||||
|
||||
api.nvim_create_autocmd("vimenter", {
|
||||
command = "highlight Normal guibg=NONE ctermbg=NONE"
|
||||
})
|
||||
api.nvim_create_autocmd("SourcePost", {
|
||||
command = "highlight Normal ctermbg=NONE guibg=NONE | " ..
|
||||
"highlight LineNr ctermbg=NONE guibg=NONE | " ..
|
||||
"highlight SignColumn ctermbg=NONE guibg=NONE"
|
||||
})
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- General
|
||||
-----------------------------------------------------------
|
||||
opt.mouse = 'a' -- Enable mouse support
|
||||
opt.clipboard = 'unnamedplus' -- Copy/paste to system clipboard
|
||||
opt.completeopt = 'longest,menuone' -- Autocomplete options
|
||||
opt.backup = false -- Disable backup
|
||||
opt.writebackup = false -- Disable backup
|
||||
opt.ttimeoutlen = 100 -- Mapping timeout
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- Neovim UI
|
||||
-----------------------------------------------------------
|
||||
opt.number = true -- Show line number
|
||||
opt.relativenumber = true -- Relative line numbers
|
||||
opt.showmatch = true -- Highlight matching parenthesis
|
||||
opt.foldmethod = 'marker' -- Enable folding (default 'foldmarker')
|
||||
opt.colorcolumn = '80' -- Line length marker at 80 columns
|
||||
opt.splitright = true -- Vertical split to the right
|
||||
opt.splitbelow = true -- Horizontal split to the bottom
|
||||
opt.ignorecase = true -- Ignore case letters when search
|
||||
opt.smartcase = true -- Ignore lowercase for the whole pattern
|
||||
opt.wrap = true -- Wrap on word boundary
|
||||
opt.linebreak = true -- Wrap on word boundary
|
||||
opt.showbreak = " ↳" -- Character to use to display word boundary
|
||||
opt.termguicolors = false -- Enable 24-bit RGB colors
|
||||
opt.laststatus = 3 -- Set global statusline
|
||||
opt.cursorline = true -- Highlight cursor screenline
|
||||
opt.cmdheight = 1 -- Command entry line height
|
||||
opt.hlsearch = true -- Highlight matches with last search pattern
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- Tabs, indent
|
||||
-----------------------------------------------------------
|
||||
opt.expandtab = true -- Use spaces instead of tabs
|
||||
opt.shiftwidth = 2 -- Shift 2 spaces when tab
|
||||
opt.tabstop = 2 -- 1 tab == 2 spaces
|
||||
opt.smartindent = true -- Autoindent new lines
|
||||
opt.list = true -- List chars
|
||||
opt.listchars = {
|
||||
tab = '» ',
|
||||
extends = '›',
|
||||
precedes= '‹',
|
||||
nbsp = '·',
|
||||
trail = '✖'
|
||||
}
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- Memory, CPU
|
||||
-----------------------------------------------------------
|
||||
opt.hidden = true -- Enable background buffers
|
||||
opt.history = 100 -- Remember N lines in history
|
||||
opt.lazyredraw = true -- Faster scrolling
|
||||
opt.synmaxcol = 240 -- Max column for syntax highlight
|
||||
opt.updatetime = 700 -- ms to wait for trigger an event
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- Plugins
|
||||
-----------------------------------------------------------
|
||||
|
||||
-- Remove perl
|
||||
g.loaded_perl_provider = 0
|
||||
|
||||
-- Hexokinaise
|
||||
g.Hexokinase_highlighters = {'virtual'}
|
||||
g.Hexokinase_optInPatterns = {
|
||||
'full_hex',
|
||||
'rgb',
|
||||
'rgba',
|
||||
'hsl',
|
||||
'hsla',
|
||||
'colour_names'
|
||||
}
|
||||
|
||||
-- Lastplace
|
||||
g.lastplace_ignore = 'gitcommit,gitrebase,svn,hgcommit'
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- Startup
|
||||
-----------------------------------------------------------
|
||||
|
||||
-- Disable builtins plugins
|
||||
local disabled_built_ins = {
|
||||
"netrw",
|
||||
"netrwPlugin",
|
||||
"netrwSettings",
|
||||
"netrwFileHandlers",
|
||||
"gzip",
|
||||
"zip",
|
||||
"zipPlugin",
|
||||
"tar",
|
||||
"tarPlugin",
|
||||
"getscript",
|
||||
"getscriptPlugin",
|
||||
"vimball",
|
||||
"vimballPlugin",
|
||||
"2html_plugin",
|
||||
"logipat",
|
||||
"rrhelper",
|
||||
"spellfile_plugin",
|
||||
"matchit"
|
||||
}
|
||||
|
||||
for _, plugin in pairs(disabled_built_ins) do
|
||||
g["loaded_" .. plugin] = 1
|
||||
end
|
||||
|
||||
-----------------------------------------------------------
|
||||
-- Plugins
|
||||
-----------------------------------------------------------
|
||||
|
||||
-- lualine
|
||||
require('lualine').setup{}
|
||||
|
||||
-- nvim-cmp
|
||||
local cmp = require('cmp')
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
vim.fn["vsnip#anonymous"](args.body)
|
||||
end,
|
||||
},
|
||||
mapping = {
|
||||
['<C-y>'] = cmp.mapping.confirm({ select = true }),
|
||||
},
|
||||
sources = {
|
||||
-- { name = 'neorg' },
|
||||
}
|
||||
})
|
||||
|
||||
-- lspconfig
|
||||
require('lspconfig').terraformls.setup{}
|
||||
|
||||
api.nvim_create_autocmd('BufWritePre', {
|
||||
pattern = '*.tf',
|
||||
command = 'lua vim.lsp.buf.formatting_sync()'
|
||||
})
|
||||
|
||||
--[[
|
||||
-- neorg
|
||||
require('neorg').setup {
|
||||
-- Tell Neorg what modules to load
|
||||
load = {
|
||||
['core.defaults'] = {}, -- Load all the default modules
|
||||
['core.norg.concealer'] = {}, -- Allows for use of icons
|
||||
['core.norg.dirman'] = { -- Manage your directories with Neorg
|
||||
config = {
|
||||
engine = 'nvim-cmp',
|
||||
workspaces = {
|
||||
home = '~/neorg'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}]]--
|
||||
|
||||
-- telescope
|
||||
local telescope = require('telescope.builtin')
|
||||
|
||||
vim.keymap.set("n", "<leader>ff", function()
|
||||
telescope.find_files()
|
||||
end, { silent = true })
|
||||
|
||||
vim.keymap.set("n", "<leader>fg", function()
|
||||
telescope.live_grep()
|
||||
end, { silent = true })
|
||||
|
||||
vim.keymap.set("n", "<leader>fb", function()
|
||||
telescope.buffers()
|
||||
end, { silent = true })
|
||||
|
||||
vim.keymap.set("n", "<leader>fh", function()
|
||||
telescope.help_tags()
|
||||
end, { silent = true })
|
||||
|
||||
-- treesitter
|
||||
require('nvim-treesitter.configs').setup {
|
||||
-- A list of parser names, or "all"
|
||||
ensure_installed = {
|
||||
},
|
||||
|
||||
sync_install = false,
|
||||
auto_install = false,
|
||||
ignore_install = {},
|
||||
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false,
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
rainbow = {
|
||||
enable = true,
|
||||
extended_mode = true
|
||||
},
|
||||
}
|
||||
|
||||
-- twilight
|
||||
require("twilight").setup {
|
||||
dimming = {
|
||||
alpha = 0.5,
|
||||
},
|
||||
context = 10,
|
||||
expand = {
|
||||
"function",
|
||||
"method",
|
||||
"table",
|
||||
"if_statement",
|
||||
},
|
||||
}
|
||||
|
||||
-- bufferline
|
||||
require('bufferline').setup {
|
||||
options = {
|
||||
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
||||
numbers = "ordinal",
|
||||
close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
||||
right_mouse_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
||||
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
|
||||
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
|
||||
indicator = {
|
||||
icon = '▎',
|
||||
style = 'icon',
|
||||
},
|
||||
buffer_close_icon = '',
|
||||
modified_icon = '●',
|
||||
close_icon = '',
|
||||
left_trunc_marker = '',
|
||||
right_trunc_marker = '',
|
||||
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
|
||||
-- remove extension from markdown files for example
|
||||
if buf.name:match('%.md') then
|
||||
return vim.fn.fnamemodify(buf.name, ':t:r')
|
||||
end
|
||||
end,
|
||||
max_name_length = 18,
|
||||
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
|
||||
tab_size = 18,
|
||||
diagnostics = "nvim_lsp",
|
||||
diagnostics_update_in_insert = false,
|
||||
color_icons = true,
|
||||
show_buffer_icons = true, -- disable filetype icons for buffers
|
||||
show_buffer_close_icons = true,
|
||||
show_close_icon = false,
|
||||
show_tab_indicators = true,
|
||||
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
|
||||
separator_style = "slant",
|
||||
always_show_bufferline = true,
|
||||
}
|
||||
}
|
||||
|
||||
local barColor = base16.base00;
|
||||
|
||||
local highlightItems = {
|
||||
BufferLineFill = "bg",
|
||||
BufferLineBackground = "bg",
|
||||
BufferLineSeparator = "fg",
|
||||
BufferLineSeparatorSelected = "fg",
|
||||
BufferLineSeparatorVisible = "fg",
|
||||
}
|
||||
|
||||
local commandString = ""
|
||||
|
||||
for item, ground in pairs(highlightItems) do
|
||||
commandString = "highlight " .. item .. " cterm" .. ground .. "=" .. barColor .. " | " .. commandString
|
||||
end
|
||||
|
||||
api.nvim_create_autocmd("ColorScheme", {
|
||||
command = commandString;
|
||||
})
|
||||
|
||||
-- hop
|
||||
local hop = require('hop')
|
||||
local directions = require("hop.hint").HintDirection
|
||||
hop.setup()
|
||||
|
||||
vim.keymap.set("", "t", function()
|
||||
hop.hint_words()
|
||||
end, {})
|
||||
|
||||
vim.keymap.set("", "T", function()
|
||||
hop.hint_lines_skip_whitespace()
|
||||
end, {remap=true})
|
||||
|
||||
vim.keymap.set("", "f", function()
|
||||
hop.hint_char1({ direction = directions.AFTER_CURSOR, current_line_only = true })
|
||||
end, {remap=true})
|
||||
|
||||
vim.keymap.set("", "F", function()
|
||||
hop.hint_char1({ direction = directions.BEFORE_CURSOR, current_line_only = true })
|
||||
end, {remap=true})
|
||||
10
home/wezterm.nix
Normal file
10
home/wezterm.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
_: {
|
||||
programs.wezterm.enable = true;
|
||||
xdg.configFile."wezterm/wezterm.lua".text = ''
|
||||
local = wezterm = require 'wezterm'
|
||||
return {
|
||||
check_for_updates = false,
|
||||
enable_tab_bar = true
|
||||
}
|
||||
'';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue