Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
16f5a0a9a5
22
common/frogarized/default.nix
Normal file
22
common/frogarized/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
let
|
||||
generator = pkgs.writers.writePython3 "frogarized"
|
||||
{
|
||||
libraries = [ pkgs.python3Packages.colorspacious ];
|
||||
}
|
||||
(builtins.readFile ./frogarized.py);
|
||||
frogarized_json = polarity: pkgs.runCommand "frogarized-${polarity}.json" { } "${generator} --polarity ${polarity} --output json > $out";
|
||||
frogarized_nix = polarity: builtins.fromJSON (builtins.readFile (frogarized_json polarity));
|
||||
in
|
||||
{
|
||||
config = {
|
||||
stylix = {
|
||||
base16Scheme = frogarized_nix config.stylix.polarity;
|
||||
# On purpose also enable without a DE because stylix complains otherwise
|
||||
image = builtins.fetchurl {
|
||||
url = "https://get.wallhere.com/photo/sunlight-abstract-minimalism-green-simple-circle-light-leaf-wave-material-line-wing-computer-wallpaper-font-close-up-macro-photography-124350.png";
|
||||
sha256 = "sha256:1zfq3f3v34i45mi72pkfqphm8kbhczsg260xjfl6dbydy91d7y93";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
112
common/frogarized/frogarized.py
Executable file
112
common/frogarized/frogarized.py
Executable file
|
@ -0,0 +1,112 @@
|
|||
import argparse
|
||||
import json
|
||||
|
||||
import colorspacious
|
||||
import numpy as np
|
||||
|
||||
# Original values for the Solarized color scheme,
|
||||
# created by Ethan Schoonover (https://ethanschoonover.com/solarized/)
|
||||
SOLARIZED_LAB = np.array(
|
||||
[
|
||||
[15, -12, -12],
|
||||
[20, -12, -12],
|
||||
[45, -7, -7],
|
||||
[50, -7, -7],
|
||||
[60, -6, -3],
|
||||
[65, -5, -2],
|
||||
[92, -0, 10],
|
||||
[97, 0, 10],
|
||||
[50, 65, 45],
|
||||
[50, 50, 55],
|
||||
[60, 10, 65],
|
||||
[60, -20, 65],
|
||||
[60, -35, -5],
|
||||
[55, -10, -45],
|
||||
[50, 15, -45],
|
||||
[50, 65, -5],
|
||||
]
|
||||
)
|
||||
|
||||
# I couldn't get a perfect translation of Solarized L*a*b values into sRGB,
|
||||
# so here is upstream's translation for reference
|
||||
SOLARIZED_RGB = np.array(
|
||||
[
|
||||
[0, 43, 54],
|
||||
[7, 54, 66],
|
||||
[88, 110, 117],
|
||||
[101, 123, 131],
|
||||
[131, 148, 150],
|
||||
[147, 161, 161],
|
||||
[238, 232, 213],
|
||||
[253, 246, 227],
|
||||
[220, 50, 47],
|
||||
[203, 75, 22],
|
||||
[181, 137, 0],
|
||||
[133, 153, 0],
|
||||
[42, 161, 152],
|
||||
[38, 139, 210],
|
||||
[108, 113, 196],
|
||||
[211, 54, 130],
|
||||
]
|
||||
)
|
||||
|
||||
# Parse arguments
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Generate a base16-theme based derived from Solarized"
|
||||
)
|
||||
parser.add_argument("--source", choices=["lab", "rgb"], default="lab")
|
||||
parser.add_argument("--lightness_factor", type=float, default=1.0)
|
||||
parser.add_argument("--chroma-factor", type=float, default=1.0)
|
||||
parser.add_argument("--hue_shift", type=float, default=-75.0)
|
||||
parser.add_argument("--polarity", choices=["dark", "light"], default="dark")
|
||||
parser.add_argument(
|
||||
"--output", choices=["json", "truecolor"], default="truecolor"
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
# Convert source to JCh color space
|
||||
if args.source == "lab":
|
||||
solarized_jch = colorspacious.cspace_convert(
|
||||
SOLARIZED_LAB, "CIELab", "JCh"
|
||||
)
|
||||
elif args.source == "rgb":
|
||||
solarized_jch = colorspacious.cspace_convert(
|
||||
SOLARIZED_RGB, "sRGB255", "JCh"
|
||||
)
|
||||
|
||||
# Build frogarized theme
|
||||
jch_factor = [args.lightness_factor, args.chroma_factor, 1]
|
||||
jch_shift = [0, 0, args.hue_shift]
|
||||
frogarzied_jch = np.vstack(
|
||||
[solarized_jch[:8] * jch_factor + jch_shift, solarized_jch[8:]]
|
||||
)
|
||||
|
||||
# Convert frogarized to RGB
|
||||
frogarized_srgb = colorspacious.cspace_convert(
|
||||
frogarzied_jch, "JCh", "sRGB255"
|
||||
)
|
||||
frogarized_rgb = np.uint8(np.rint(np.clip(frogarized_srgb, 0, 255)))
|
||||
if args.polarity == "light":
|
||||
frogarized_rgb = np.vstack([frogarized_rgb[7::-1], frogarized_rgb[8:]])
|
||||
|
||||
# Output
|
||||
palette = dict()
|
||||
for i in range(16):
|
||||
rgb = frogarized_rgb[i]
|
||||
r, g, b = rgb
|
||||
hex = f"#{r:02x}{g:02x}{b:02x}"
|
||||
palette[f"base{i:02X}"] = hex
|
||||
if args.output == "truecolor":
|
||||
print(f"\033[48;2;{r};{g};{b}m{hex}\033[0m") # ]]
|
||||
# treesitter is silly and will consider brackets in strings
|
||||
# as indentation, hence the comment above
|
||||
if args.output == "json":
|
||||
scheme = palette.copy()
|
||||
scheme.update(
|
||||
{
|
||||
"slug": f"frogarized-{args.polarity}",
|
||||
"scheme": f"Frogarized {args.polarity.title()}",
|
||||
"author": "Geoffrey Frogeye (with work from Ethan Schoonover)",
|
||||
}
|
||||
)
|
||||
print(json.dumps(scheme, indent=4))
|
|
@ -1,4 +1,4 @@
|
|||
{ ... }:
|
||||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
imports = [
|
||||
./options.nix
|
||||
|
@ -9,7 +9,6 @@
|
|||
|
||||
networking.hostName = "curacao";
|
||||
boot = {
|
||||
initrd.luks.reusePassphrases = true;
|
||||
loader = {
|
||||
efi.efiSysMountPoint = "/efi";
|
||||
};
|
||||
|
|
149
flake.lock
149
flake.lock
|
@ -311,6 +311,56 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-formatter-pack": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nix-on-droid",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nmd": "nmd",
|
||||
"nmt": "nmt"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1666720474,
|
||||
"narHash": "sha256-iWojjDS1D19zpeZXbBdjWb9MiKmVVFQCqtJmtTXgPx8=",
|
||||
"owner": "Gerschtli",
|
||||
"repo": "nix-formatter-pack",
|
||||
"rev": "14876cc8fe94a3d329964ecb073b4c988c7b61f5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Gerschtli",
|
||||
"repo": "nix-formatter-pack",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-on-droid": {
|
||||
"inputs": {
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nix-formatter-pack": "nix-formatter-pack",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-for-bootstrap": "nixpkgs-for-bootstrap",
|
||||
"nmd": "nmd_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1688144254,
|
||||
"narHash": "sha256-8KL1l/7eP2Zm1aJjdVaSOk0W5kTnJo9kcgW03gqWuiI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-on-droid",
|
||||
"rev": "2301e01d48c90b60751005317de7a84a51a87eb6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.05",
|
||||
"repo": "nix-on-droid",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixgl": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
|
@ -348,11 +398,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1705183652,
|
||||
"narHash": "sha256-rnfkyUH0x72oHfiSDhuCHDHg3gFgF+lF8zkkg5Zihsw=",
|
||||
"lastModified": 1706098335,
|
||||
"narHash": "sha256-r3dWjT8P9/Ah5m5ul4WqIWD8muj5F+/gbCdjiNVBKmU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "428544ae95eec077c7f823b422afae5f174dee4b",
|
||||
"rev": "a77ab169a83a4175169d78684ddd2e54486ac651",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -361,6 +411,22 @@
|
|||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs-for-bootstrap": {
|
||||
"locked": {
|
||||
"lastModified": 1686921029,
|
||||
"narHash": "sha256-J1bX9plPCFhTSh6E3TWn9XSxggBh/zDD4xigyaIQBy8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c7ff1b9b95620ce8728c0d7bd501c458e6da9e04",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c7ff1b9b95620ce8728c0d7bd501c458e6da9e04",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1685801374,
|
||||
|
@ -386,17 +452,80 @@
|
|||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1702044539,
|
||||
"narHash": "sha256-TNmEd6MipLxsrWromxqNfU4y17MoBr15QF7iEOagPy8=",
|
||||
"owner": "nix-community",
|
||||
"lastModified": 1705700164,
|
||||
"narHash": "sha256-YAWtzc+5KDOHDGz/NBB7ysIusXbYYKtsbDOsRhSWKYk=",
|
||||
"owner": "GeoffreyFrogeye",
|
||||
"repo": "nixvim",
|
||||
"rev": "c96d7b46d05a78e695ed1c725d1596b65509b4f9",
|
||||
"rev": "2e5f7781fccba0472277cad5d383d10d50772234",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "GeoffreyFrogeye",
|
||||
"ref": "frogeye-23.11",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nmd": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1666190571,
|
||||
"narHash": "sha256-Z1hc7M9X6L+H83o9vOprijpzhTfOBjd0KmUTnpHAVjA=",
|
||||
"owner": "rycee",
|
||||
"repo": "nmd",
|
||||
"rev": "b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rycee",
|
||||
"repo": "nmd",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"nmd_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1666190571,
|
||||
"narHash": "sha256-Z1hc7M9X6L+H83o9vOprijpzhTfOBjd0KmUTnpHAVjA=",
|
||||
"owner": "rycee",
|
||||
"repo": "nmd",
|
||||
"rev": "b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rycee",
|
||||
"repo": "nmd",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"nmt": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1648075362,
|
||||
"narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=",
|
||||
"owner": "rycee",
|
||||
"repo": "nmt",
|
||||
"rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rycee",
|
||||
"repo": "nmt",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1705693547,
|
||||
"narHash": "sha256-/6rVfbj1oaycjvYJeZRqL+ApzNL2FNf6pmfWuk+9Bhs=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "868aa9b52241ad7c8cb89cdd207f8d0149ebf95b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "c96d7b46d05a78e695ed1c725d1596b65509b4f9",
|
||||
"repo": "NUR",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
|
@ -429,10 +558,12 @@
|
|||
"inputs": {
|
||||
"disko": "disko",
|
||||
"home-manager": "home-manager",
|
||||
"nix-on-droid": "nix-on-droid",
|
||||
"nixgl": "nixgl",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim",
|
||||
"nur": "nur",
|
||||
"stylix": "stylix"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -25,8 +25,9 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim/c96d7b46d05a78e695ed1c725d1596b65509b4f9";
|
||||
# 24.05 Anything after this commit works
|
||||
url = "github:GeoffreyFrogeye/nixvim/frogeye-23.11";
|
||||
# 24.05 Ensure merged: https://github.com/nix-community/nixvim/pull/953
|
||||
# url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixgl = {
|
||||
|
@ -81,6 +82,7 @@
|
|||
./os
|
||||
disko.nixosModules.disko
|
||||
home-manager.nixosModules.home-manager
|
||||
stylix.nixosModules.stylix
|
||||
];
|
||||
};
|
||||
nixOnDroidModules.dotfiles = {
|
||||
|
|
|
@ -58,6 +58,11 @@
|
|||
newestFile = ''${pkgs.findutils}/bin/find -type f -printf '%T+ %p\n' | sort | tail'';
|
||||
oldestFile = ''${pkgs.findutils}/bin/find -type f -printf '%T+ %p\n' | sort | head'';
|
||||
};
|
||||
thefuck = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
lsd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
../common/frogarized
|
||||
../options.nix
|
||||
./brightness
|
||||
./common.nix
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
{
|
||||
config = {
|
||||
# On purpose also enable without a DE because stylix complains otherwise
|
||||
stylix.image = builtins.fetchurl {
|
||||
url = "https://get.wallhere.com/photo/sunlight-abstract-minimalism-green-simple-circle-light-leaf-wave-material-line-wing-computer-wallpaper-font-close-up-macro-photography-124350.png";
|
||||
sha256 = "sha256:1zfq3f3v34i45mi72pkfqphm8kbhczsg260xjfl6dbydy91d7y93";
|
||||
};
|
||||
# This correctly sets the background on some occasions, below does the rest
|
||||
programs.autorandr.hooks.postswitch = {
|
||||
background = "${pkgs.feh}/bin/feh --no-fehbg --bg-fill ${config.stylix.image}";
|
||||
|
|
|
@ -108,6 +108,7 @@
|
|||
inv = invidious;
|
||||
nixos = "https://search.nixos.org/options?channel=${config.home.version.release}&query={}";
|
||||
nixpkgs = "https://search.nixos.org/packages?channel=${config.home.version.release}&query={}";
|
||||
noogle = "https://noogle.dev/q?term={}";
|
||||
npm = "https://www.npmjs.com/search?q={}";
|
||||
os = nixos;
|
||||
pkgs = nixpkgs;
|
||||
|
|
|
@ -144,6 +144,8 @@ in
|
|||
|
||||
# misc
|
||||
gnome.gedit
|
||||
xfce.thunar
|
||||
nomacs
|
||||
feh
|
||||
zbar
|
||||
zathura
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
./common.nix
|
||||
./go.nix
|
||||
./node.nix
|
||||
./prose.nix
|
||||
./python.nix
|
||||
];
|
||||
}
|
||||
|
|
38
hm/dev/prose.nix
Normal file
38
hm/dev/prose.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
# Prose is a programming language, fight me
|
||||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
config = lib.mkIf config.frogeye.dev.prose {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
hunspell
|
||||
hunspellDicts.en_GB-ize
|
||||
hunspellDicts.en_US
|
||||
hunspellDicts.fr-moderne
|
||||
hunspellDicts.nl_NL
|
||||
# TODO libreoffice-extension-languagetool or libreoffice-extension-grammalecte-fr
|
||||
];
|
||||
};
|
||||
programs.nixvim = {
|
||||
autoCmd = [
|
||||
# vim-easy-align: Align Markdown tables with |
|
||||
{ event = "FileType"; pattern = "markdown"; command = "vmap <Bar> :EasyAlign*<Bar><Enter>"; }
|
||||
];
|
||||
extraPlugins = with pkgs.vimPlugins; lib.optionals config.programs.pandoc.enable [
|
||||
vim-pandoc # Pandoc-specific stuff because there's no LSP for it
|
||||
vim-pandoc-syntax
|
||||
];
|
||||
extraConfigVim = lib.optionalString config.programs.pandoc.enable ''
|
||||
let g:pandoc#modules#disabled = ["folding"]
|
||||
let g:pandoc#spell#enabled = 0
|
||||
let g:pandoc#syntax#conceal#use = 0
|
||||
'';
|
||||
plugins.none-ls = {
|
||||
enable = true;
|
||||
sources = {
|
||||
code_actions.ltrs.enable = true;
|
||||
diagnostics.ltrs.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -34,12 +34,6 @@
|
|||
# TODO Convert existing LaTeX documents into using Nix build system
|
||||
# texlive is big and not that much used, sooo
|
||||
pdftk
|
||||
hunspell
|
||||
hunspellDicts.en_GB-ize
|
||||
hunspellDicts.en_US
|
||||
hunspellDicts.fr-moderne
|
||||
hunspellDicts.nl_NL
|
||||
# TODO libreoffice-extension-languagetool or libreoffice-extension-grammalecte-fr
|
||||
|
||||
] ++ lib.optionals config.frogeye.desktop.xorg [
|
||||
|
||||
|
|
|
@ -14,9 +14,10 @@
|
|||
else
|
||||
(
|
||||
cd "${r.path}"
|
||||
${pkgs.git}/bin/git diff --quiet || echo "Repository is dirty!"
|
||||
${pkgs.git}/bin/git --no-optional-locks diff --quiet || echo "Repository is dirty!"
|
||||
${pkgs.git}/bin/git pull || true
|
||||
${pkgs.git}/bin/git push || true
|
||||
# Only push if there's something to push. Also prevents from trying to push on repos where we don't have rights.
|
||||
(${pkgs.git}/bin/git --no-optional-locks status --porcelain -b --ignore-submodules | grep ' \[ahead [0-9]\+\]' && ${pkgs.git}/bin/git push) || true
|
||||
)
|
||||
fi
|
||||
'')
|
||||
|
|
|
@ -34,6 +34,10 @@
|
|||
services.gpg-agent = {
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
pinentryFlavor = "gnome3";
|
||||
# gnome3 is nicer, but requires gcr as a dbus package.
|
||||
# Which is in my NixOS config, and on non-NixOS too.
|
||||
# It will fall back to ncurses when running in non-graphics mode.
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,16 +1,8 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
basetheme = "solarized";
|
||||
in
|
||||
{
|
||||
config = {
|
||||
# Setting a custom base16 theme via nixvim is required so feline works, and
|
||||
# because stylix makes a config that otherwise only works with dark
|
||||
# polarity.
|
||||
programs.nixvim.colorschemes.base16.colorscheme = "${basetheme}-${config.frogeye.polarity}";
|
||||
|
||||
stylix = {
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/${basetheme}-${config.frogeye.polarity}.yaml";
|
||||
polarity = config.frogeye.polarity;
|
||||
fonts = {
|
||||
monospace = {
|
||||
package = pkgs.nerdfonts.override {
|
||||
|
|
|
@ -44,6 +44,12 @@ in
|
|||
showbreak = "↪";
|
||||
};
|
||||
plugins = {
|
||||
# Underline all instances of the underlined word
|
||||
cursorline = {
|
||||
enable = true;
|
||||
cursorline.enable = false;
|
||||
};
|
||||
|
||||
# Catches attention when cursor changed position
|
||||
specs = {
|
||||
enable = true;
|
||||
|
@ -61,7 +67,6 @@ in
|
|||
};
|
||||
# indent = true; # Not very working last time I tried apparently
|
||||
};
|
||||
# TODO Investigate https://github.com/nvim-treesitter/nvim-treesitter-textobjects
|
||||
indent-blankline.enable = true; # Show indent guides
|
||||
rainbow-delimiters.enable = true; # Randomly colore paired brackets
|
||||
|
||||
|
|
|
@ -1,48 +1,159 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
config = {
|
||||
programs.nixvim = {
|
||||
autoCmd = [
|
||||
# Turn off relativenumber only for insert mode
|
||||
{ event = "InsertEnter"; pattern = "*"; command = "set norelativenumber"; }
|
||||
{ event = "InsertLeave"; pattern = "*"; command = "set relativenumber"; }
|
||||
];
|
||||
extraConfigLua = builtins.readFile ./feline.lua;
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
nvim-scrollview # Scroll bar
|
||||
# Status line
|
||||
feline-nvim # Customizable status line.
|
||||
# TODO Abandonned. Maybe use lualine?
|
||||
];
|
||||
keymaps = [
|
||||
# barbar
|
||||
{ key = "<C-H>"; action = "<Cmd>BufferPrevious<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-L>"; action = "<Cmd>BufferNext<CR>"; options = { silent = true; }; }
|
||||
# TODO https://www.reddit.com/r/neovim/comments/mbj8m5/how_to_setup_ctrlshiftkey_mappings_in_neovim_and/
|
||||
{ key = "<Space><C-H>"; action = "<Cmd>BufferMovePrevious<CR>"; options = { silent = true; }; }
|
||||
{ key = "<Space><C-L>"; action = "<Cmd>BufferMoveNext<CR>"; options = { silent = true; }; }
|
||||
# TODO gotos don't work
|
||||
{ key = "<C-1>"; action = "<Cmd>BufferGoto 1<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-2>"; action = "<Cmd>BufferGoto 2<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-3>"; action = "<Cmd>BufferGoto 3<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-4>"; action = "<Cmd>BufferGoto 4<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-5>"; action = "<Cmd>BufferGoto 5<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-6>"; action = "<Cmd>BufferGoto 6<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-7>"; action = "<Cmd>BufferGoto 7<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-8>"; action = "<Cmd>BufferGoto 8<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-9>"; action = "<Cmd>BufferGoto 9<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-0>"; action = "<Cmd>BufferLast<CR>"; options = { silent = true; }; }
|
||||
{ key = "gb"; action = "<Cmd>BufferPick<CR>"; options = { silent = true; }; }
|
||||
# TODO Other useful options?
|
||||
];
|
||||
options = {
|
||||
title = true;
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
};
|
||||
plugins = {
|
||||
# Tabline
|
||||
barbar.enable = true;
|
||||
programs = {
|
||||
# https://www.reddit.com/r/neovim/comments/mbj8m5/how_to_setup_ctrlshiftkey_mappings_in_neovim_and/
|
||||
alacritty.settings.key_bindings = [
|
||||
{ key = "H"; mods = "Control|Shift"; chars = "\\x1b[72;5u"; }
|
||||
{ key = "L"; mods = "Control|Shift"; chars = "\\x1b[76;5u"; }
|
||||
] ++ (map
|
||||
(n: { key = "Key${builtins.toString n}"; mods = "Control"; chars = "\\x1b[${builtins.toString (48+n)};5u"; })
|
||||
(lib.lists.range 0 9));
|
||||
# Ctrl+<number> doesn't get interpreted, but Ctrl+Shift+<number> does, so let's use that
|
||||
nixvim = {
|
||||
autoCmd = [
|
||||
# Turn off relativenumber only for insert mode
|
||||
{ event = "InsertEnter"; pattern = "*"; command = "set norelativenumber"; }
|
||||
{ event = "InsertLeave"; pattern = "*"; command = "set relativenumber"; }
|
||||
];
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
nvim-scrollview # Scroll bar
|
||||
];
|
||||
keymaps =
|
||||
let
|
||||
options = { silent = true; };
|
||||
in
|
||||
[
|
||||
# barbar
|
||||
{ key = "gb"; action = "<Cmd>BufferPick<CR>"; inherit options; }
|
||||
{ key = "<C-H>"; action = "<Cmd>BufferPrevious<CR>"; inherit options; }
|
||||
{ key = "<C-L>"; action = "<Cmd>BufferNext<CR>"; inherit options; }
|
||||
{ key = "<C-S-H>"; action = "<Cmd>BufferMovePrevious<CR>"; inherit options; }
|
||||
{ key = "<C-S-L>"; action = "<Cmd>BufferMoveNext<CR>"; inherit options; }
|
||||
{ key = "<C-0>"; action = "<Cmd>BufferLast<CR>"; inherit options; }
|
||||
] ++ (map
|
||||
(n: { key = "<C-${builtins.toString n}>"; action = "<Cmd>BufferGoto ${builtins.toString n}<CR>"; inherit options; })
|
||||
(lib.lists.range 1 9));
|
||||
options = {
|
||||
showmode = false;
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
title = true;
|
||||
};
|
||||
plugins = {
|
||||
# Tabline
|
||||
barbar.enable = true;
|
||||
# TODO Reload make it use the preset colorscheme
|
||||
# Status line
|
||||
lualine = with config.lib.stylix.colors.withHashtag; let
|
||||
normal = { fg = base05; bg = base01; };
|
||||
inverted = { fg = base00; bg = base03; };
|
||||
normal_ina = { fg = base02; bg = base01; };
|
||||
inverted_ina = { fg = base00; bg = base02; };
|
||||
in
|
||||
rec {
|
||||
enable = true;
|
||||
inactiveSections = sections;
|
||||
sections = {
|
||||
lualine_a = [{
|
||||
name = ''string.format('%d', vim.fn.line('$'))'';
|
||||
}];
|
||||
lualine_b = [
|
||||
"mode"
|
||||
];
|
||||
lualine_c = [{
|
||||
name = "filename";
|
||||
color = {
|
||||
__raw = ''
|
||||
function(section)
|
||||
return { fg = vim.bo.modified and '${base08}' or '${normal.fg}' }
|
||||
end
|
||||
'';
|
||||
};
|
||||
extraConfig = {
|
||||
path = 1; # Relative path
|
||||
symbols = {
|
||||
modified = "●";
|
||||
newfile = "";
|
||||
readonly = "";
|
||||
unnamed = "";
|
||||
};
|
||||
};
|
||||
}
|
||||
"location"];
|
||||
lualine_x = [{
|
||||
name = ''(next(vim.lsp.buf_get_clients()) == nil) and " " or ""'';
|
||||
extraConfig.separator = { left = ""; right = ""; };
|
||||
}] ++ (lib.mapAttrsToList
|
||||
(diag_name: diag_color: {
|
||||
name = "diagnostics";
|
||||
extraConfig = {
|
||||
color.bg = diag_color;
|
||||
colored = false;
|
||||
separator = { left = ""; right = ""; };
|
||||
sections = [ diag_name ];
|
||||
};
|
||||
})
|
||||
{
|
||||
error = base08;
|
||||
warn = base0A;
|
||||
hint = base0C;
|
||||
info = base0B;
|
||||
});
|
||||
lualine_y = [{
|
||||
name = "diff";
|
||||
extraConfig = {
|
||||
diff_color = {
|
||||
added.fg = base0B;
|
||||
modified.fg = base0A;
|
||||
removed.fg = base08;
|
||||
};
|
||||
symbols = {
|
||||
added = " ";
|
||||
modified = " ";
|
||||
removed = " ";
|
||||
};
|
||||
};
|
||||
}
|
||||
"branch"];
|
||||
lualine_z = [
|
||||
"filetype"
|
||||
"fileformat"
|
||||
"encoding"
|
||||
];
|
||||
};
|
||||
theme = (lib.mapAttrs
|
||||
(mode_name: mode_color: {
|
||||
a = inverted;
|
||||
b = inverted // { bg = mode_color; gui = "bold"; };
|
||||
c = normal;
|
||||
x = inverted;
|
||||
y = normal;
|
||||
z = inverted // { bg = mode_color; };
|
||||
})
|
||||
{
|
||||
normal = base0D;
|
||||
insert = base0B;
|
||||
visual = base0F;
|
||||
replace = base08;
|
||||
command = base0E;
|
||||
}) // {
|
||||
inactive = {
|
||||
a = inverted_ina;
|
||||
b = normal_ina // { bg = base00; gui = "bold"; };
|
||||
c = normal_ina;
|
||||
x = inverted_ina;
|
||||
y = normal_ina;
|
||||
z = normal_ina // { bg = base00; };
|
||||
};
|
||||
};
|
||||
};
|
||||
# Show context on top if scrolled out
|
||||
treesitter-context = {
|
||||
enable = true;
|
||||
maxLines = 5;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -12,6 +12,9 @@
|
|||
vim = "nvim";
|
||||
};
|
||||
programs.nixvim = {
|
||||
# Required, otherwise light mode becomes a default dark theme.
|
||||
colorschemes.base16.colorscheme = "solarized-${config.stylix.polarity}";
|
||||
|
||||
options = {
|
||||
ignorecase = true;
|
||||
smartcase = true;
|
||||
|
@ -50,13 +53,6 @@
|
|||
gH = "command_history";
|
||||
gS = "search_history";
|
||||
gC = "commands";
|
||||
gr = "lsp_references";
|
||||
ge = "diagnostics";
|
||||
# ga = "lsp_code_actions";
|
||||
# gE = "lsp_workspace_diagnostics";
|
||||
# TODO Above makes nvim crash on startup, action is not provided
|
||||
gd = "lsp_definitions";
|
||||
gs = "lsp_document_symbols";
|
||||
};
|
||||
defaults = {
|
||||
vimgrep_arguments = [
|
||||
|
@ -77,16 +73,14 @@
|
|||
overrideGenericSorter = true;
|
||||
};
|
||||
};
|
||||
# TODO Go to any symbol in the current working directory, for when LSP doesn't support it.
|
||||
# Or at least something to live_grep the curent word.
|
||||
|
||||
# Surrounding pairs
|
||||
surround.enable = true; # Change surrounding pairs (e.g. brackets, quotes)
|
||||
|
||||
undotree.enable = true; # Navigate edition history
|
||||
|
||||
# Git
|
||||
fugitive.enable = true; # Git basics
|
||||
gitsigns.enable = true; # Show changed lines in the gutter
|
||||
|
||||
};
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
# Search/replace
|
||||
|
@ -96,62 +90,20 @@
|
|||
# Surrounding pairs
|
||||
targets-vim # Better interaction with surrounding pairs
|
||||
|
||||
# Registers
|
||||
registers-nvim # Show register content when pressing "
|
||||
# TODO Doesn't work. Didn't work on Arch either
|
||||
|
||||
# Tags
|
||||
vim-gutentags # Generate tags
|
||||
symbols-outline-nvim # Show a symbol panel on the right
|
||||
# TODO Fails on startup. Same on Arch. Config issue?
|
||||
|
||||
# Git
|
||||
fugitive-gitlab-vim # Open files in GitLab
|
||||
# TODO Connect it!
|
||||
|
||||
# Language-specific
|
||||
tcomment_vim # Language-aware (un)commenting
|
||||
] ++ lib.optionals config.frogeye.extra [
|
||||
vim-LanguageTool # Check grammar for human languages
|
||||
] ++ lib.optionals config.programs.pandoc.enable [
|
||||
vim-pandoc # Pandoc-specific stuff because there's no LSP for it
|
||||
vim-pandoc-syntax
|
||||
] ++ lib.optionals config.frogeye.dev.ansible [
|
||||
ansible-vim # TODO Doesn't have snippets
|
||||
ansible-vim
|
||||
# Doesn't generate snippets, but those are for UltiSnip anyways
|
||||
];
|
||||
extraConfigLua = builtins.readFile ./symbols-outline-nvim.lua;
|
||||
extraConfigVim = ''
|
||||
" GENERAL
|
||||
|
||||
" Avoid showing message extra message when using completion
|
||||
set shortmess+=c
|
||||
|
||||
command Reload source $MYVIMRC
|
||||
|
||||
" PLUGINS
|
||||
|
||||
" vim-gutentags
|
||||
let g:gutentags_cache_dir = expand('~/.cache/nvim/tags')
|
||||
'' + lib.optionalString config.frogeye.extra ''
|
||||
" languagetool
|
||||
let g:languagetool_cmd = "${pkgs.languagetool}/bin/languagetool-commandline"
|
||||
" TODO Doesn't work
|
||||
|
||||
'' + lib.optionalString config.programs.pandoc.enable ''
|
||||
" vim-pandox
|
||||
let g:pandoc#modules#disabled = ["folding"]
|
||||
let g:pandoc#spell#enabled = 0
|
||||
let g:pandoc#syntax#conceal#use = 0
|
||||
|
||||
'';
|
||||
autoCmd = [
|
||||
# vim-easy-align: Align Markdown tables
|
||||
{ event = "FileType"; pattern = "markdown"; command = "vmap <Bar> :EasyAlign*<Bar><Enter>"; }
|
||||
];
|
||||
|
||||
userCommands = {
|
||||
# Reload = { command = "source $MYVIRMC"; };
|
||||
# TODO Is not working, options is set to nil even though it shouldn't
|
||||
Reload = { command = "source ${config.xdg.configHome}/nvim/init.lua"; force = false; };
|
||||
# 24.05 force=false was for https://github.com/nix-community/nixvim/issues/954
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
|
@ -175,9 +127,6 @@
|
|||
|
||||
# PLUGINS
|
||||
|
||||
# symbols-outline-nvim
|
||||
{ key = "<Space>s"; action = "<Cmd>SymbolsOutline<CR>"; options = { silent = true; }; }
|
||||
|
||||
# undotree
|
||||
{ key = "<Space>u"; action = "<Cmd>UndotreeToggle<CR>"; options = { silent = true; }; }
|
||||
|
||||
|
@ -189,6 +138,7 @@
|
|||
./code.nix
|
||||
./completion.nix
|
||||
./decoration.nix
|
||||
./git.nix
|
||||
./lsp.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,165 +0,0 @@
|
|||
vim.cmd([[
|
||||
set noshowmode
|
||||
set laststatus=2
|
||||
]])
|
||||
local base16_colors = require('base16-colorscheme').colors
|
||||
local vi_mode_utils = require('feline.providers.vi_mode')
|
||||
local lsp = require('feline.providers.lsp')
|
||||
require('feline').setup({
|
||||
default_bg = 'base01',
|
||||
default_fg = 'base04',
|
||||
theme = {
|
||||
base00 = base16_colors.base00,
|
||||
base01 = base16_colors.base01,
|
||||
base02 = base16_colors.base02,
|
||||
base03 = base16_colors.base03,
|
||||
base04 = base16_colors.base04,
|
||||
base05 = base16_colors.base05,
|
||||
base06 = base16_colors.base06,
|
||||
base07 = base16_colors.base07,
|
||||
base08 = base16_colors.base08,
|
||||
base09 = base16_colors.base09,
|
||||
base0A = base16_colors.base0A,
|
||||
base0B = base16_colors.base0B,
|
||||
base0C = base16_colors.base0C,
|
||||
base0D = base16_colors.base0D,
|
||||
base0E = base16_colors.base0E,
|
||||
base0F = base16_colors.base0F,
|
||||
},
|
||||
components = {
|
||||
active = {
|
||||
{
|
||||
{
|
||||
provider = function() return string.format(' %d ', vim.fn.line('$')) end,
|
||||
-- If you can, make it depend on the actual bar size
|
||||
left_sep = {
|
||||
{str = 'block', fg = 'base05'}
|
||||
},
|
||||
hl = {
|
||||
fg = 'base01',
|
||||
bg = 'base04',
|
||||
},
|
||||
},
|
||||
{
|
||||
provider = 'vi_mode',
|
||||
hl = function()
|
||||
return {
|
||||
name = vi_mode_utils.get_mode_highlight_name(),
|
||||
bg = vi_mode_utils.get_mode_color(),
|
||||
fg = 'white',
|
||||
style = 'bold',
|
||||
}
|
||||
end,
|
||||
left_sep = {'█'},
|
||||
right_sep = {'█'},
|
||||
},
|
||||
{
|
||||
provider='',
|
||||
hl = function()
|
||||
return {
|
||||
bg = vi_mode_utils.get_mode_color(),
|
||||
fg = (vim.bo.modified and 'base09') or 'base0D',
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
provider = 'file_info',
|
||||
type = 'relative',
|
||||
hl = function()
|
||||
return {
|
||||
fg = 'base06',
|
||||
bg = (vim.bo.modified and 'base09') or 'base0D',
|
||||
style = 'bold',
|
||||
}
|
||||
end,
|
||||
left_sep = {'█'},
|
||||
right_sep = {'█'},
|
||||
},
|
||||
{
|
||||
provider='',
|
||||
hl = function()
|
||||
return {
|
||||
bg = 'base02',
|
||||
fg = (vim.bo.modified and 'base09') or 'base0D',
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
provider = 'position',
|
||||
hl = { fg = 'base05', bg = 'base02' },
|
||||
right_sep = {'█'},
|
||||
},
|
||||
-- If it miraculously became easy to do, add LSP position here
|
||||
{
|
||||
provider='',
|
||||
hl = { bg = 'base01', fg = 'base02' },
|
||||
},
|
||||
},
|
||||
{
|
||||
{
|
||||
provider='',
|
||||
hl = { bg = 'base03', fg = 'base01', },
|
||||
},
|
||||
{
|
||||
provider='z',
|
||||
enabled = function() return next(vim.lsp.buf_get_clients()) == nil end,
|
||||
hl = { bg = 'base03', fg = 'base01', },
|
||||
left_sep = '█',
|
||||
},
|
||||
{
|
||||
provider = 'diagnostic_errors',
|
||||
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.ERROR) end,
|
||||
hl = { fg = 'red', bg = 'base03', },
|
||||
left_sep = '█',
|
||||
},
|
||||
{
|
||||
provider = 'diagnostic_warnings',
|
||||
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.WARN) end,
|
||||
hl = { fg = 'yellow', bg = 'base03', },
|
||||
left_sep = '█',
|
||||
},
|
||||
{
|
||||
provider = 'diagnostic_hints',
|
||||
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.HINT) end,
|
||||
hl = { fg = 'cyan', bg = 'base03', },
|
||||
left_sep = '█',
|
||||
},
|
||||
{
|
||||
provider = 'diagnostic_info',
|
||||
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.INFO) end,
|
||||
hl = { fg = 'skyblue', bg = 'base03', },
|
||||
left_sep = '█',
|
||||
},
|
||||
{
|
||||
provider='█',
|
||||
hl = { bg = 'base02', fg = 'base03', },
|
||||
},
|
||||
{
|
||||
provider = 'git_diff_added',
|
||||
hl = { fg = 'green', bg = 'base02', },
|
||||
left_sep = '█',
|
||||
enabled = function() return vim.b.gitsigns_status_dict end,
|
||||
},
|
||||
{
|
||||
provider = 'git_diff_changed',
|
||||
hl = { fg = 'orange', bg = 'base02', },
|
||||
left_sep = '█',
|
||||
enabled = function() return vim.b.gitsigns_status_dict end,
|
||||
},
|
||||
{
|
||||
provider = 'git_diff_removed',
|
||||
hl = { fg = 'red', bg = 'base02', },
|
||||
left_sep = '█',
|
||||
enabled = function() return vim.b.gitsigns_status_dict end,
|
||||
},
|
||||
{
|
||||
provider = 'git_branch',
|
||||
hl = { fg = 'base05', bg = 'base02', style = 'bold', },
|
||||
right_sep = '█',
|
||||
left_sep = '█',
|
||||
enabled = function() return vim.b.gitsigns_status_dict end,
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
})
|
31
hm/vim/git.nix
Normal file
31
hm/vim/git.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
config = {
|
||||
programs.nixvim = {
|
||||
keymaps = [
|
||||
{
|
||||
mode = [ "n" ];
|
||||
key = "gG";
|
||||
action = ''<cmd>lua require"gitlinker".get_buf_range_url("n")<cr>'';
|
||||
}
|
||||
{
|
||||
mode = [ "v" ];
|
||||
key = "gG";
|
||||
action = ''<cmd>lua require"gitlinker".get_buf_range_url("v")<cr>'';
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
fugitive.enable = true; # Git basics
|
||||
gitsigns.enable = true; # Show changed lines in the gutter
|
||||
gitlinker = {
|
||||
enable = true; # Copy URL of forge corresponding to cursor
|
||||
callbacks = {
|
||||
"code.techinc.nl" = "get_gitea_type_url";
|
||||
"git.frogeye.fr" = "get_gitea_type_url";
|
||||
};
|
||||
mappings = null; # This option doesn't work, hence manual mappings
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -12,25 +12,28 @@
|
|||
lsp_signature-nvim # Show argument definition when typing a function
|
||||
];
|
||||
keymaps = [
|
||||
# barbar
|
||||
{ key = "<C-H>"; action = "<Cmd>BufferPrevious<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-L>"; action = "<Cmd>BufferNext<CR>"; options = { silent = true; }; }
|
||||
# TODO https://www.reddit.com/r/neovim/comments/mbj8m5/how_to_setup_ctrlshiftkey_mappings_in_neovim_and/
|
||||
{ key = "<Space><C-H>"; action = "<Cmd>BufferMovePrevious<CR>"; options = { silent = true; }; }
|
||||
{ key = "<Space><C-L>"; action = "<Cmd>BufferMoveNext<CR>"; options = { silent = true; }; }
|
||||
# TODO gotos don't work
|
||||
{ key = "<C-1>"; action = "<Cmd>BufferGoto 1<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-2>"; action = "<Cmd>BufferGoto 2<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-3>"; action = "<Cmd>BufferGoto 3<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-4>"; action = "<Cmd>BufferGoto 4<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-5>"; action = "<Cmd>BufferGoto 5<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-6>"; action = "<Cmd>BufferGoto 6<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-7>"; action = "<Cmd>BufferGoto 7<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-8>"; action = "<Cmd>BufferGoto 8<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-9>"; action = "<Cmd>BufferGoto 9<CR>"; options = { silent = true; }; }
|
||||
{ key = "<C-0>"; action = "<Cmd>BufferLast<CR>"; options = { silent = true; }; }
|
||||
{ key = "gb"; action = "<Cmd>BufferPick<CR>"; options = { silent = true; }; }
|
||||
# TODO Other useful options?
|
||||
{
|
||||
mode = "n";
|
||||
key = "<space>wl";
|
||||
lua = true;
|
||||
action = ''
|
||||
function()
|
||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||
end
|
||||
'';
|
||||
options.silent = true;
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<space>f";
|
||||
lua = true;
|
||||
action = ''
|
||||
function()
|
||||
vim.lsp.buf.format { async = true }
|
||||
end
|
||||
'';
|
||||
options.silent = true;
|
||||
}
|
||||
];
|
||||
plugins = {
|
||||
# Language Server
|
||||
|
@ -50,17 +53,18 @@
|
|||
"<C-S-k>" = "signature_help";
|
||||
"<space>wa" = "add_workspace_folder";
|
||||
"<space>wr" = "remove_workspace_folder";
|
||||
# "<space>wl" = "list_workspace_folder";
|
||||
# TODO Full thing was function() print(vim.inspect(vim.lsp.buf.list_workspace_folder())) end but not sure I'm ever really using this
|
||||
# Also makes nvim crash like this, so uncommented
|
||||
"<space>D" = "type_definition";
|
||||
"<space>rn" = "rename";
|
||||
"<space>f" = "format";
|
||||
# TODO Full thing was function() vim.lsp.buf.format { async = true } end, so async while this isn't
|
||||
# Maybe replace this with lsp-format?
|
||||
"<space>ca" = "code_action"; # Reference has a binding for visual mode, but it doesn't work
|
||||
};
|
||||
};
|
||||
};
|
||||
telescope.keymaps = {
|
||||
gr = "lsp_references";
|
||||
ge = "diagnostics";
|
||||
gd = "lsp_definitions";
|
||||
gs = "lsp_document_symbols";
|
||||
};
|
||||
nvim-lightbulb = {
|
||||
# Shows a lightbulb whenever a codeAction is available under the cursor
|
||||
enable = true;
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
vim.g.symbols_outline = {
|
||||
highlight_hovered_item = true,
|
||||
show_guides = true,
|
||||
auto_preview = true,
|
||||
position = 'right',
|
||||
show_numbers = false,
|
||||
show_relative_numbers = false,
|
||||
show_symbol_details = true,
|
||||
keymaps = {
|
||||
close = "<Esc>",
|
||||
goto_location = "<Cr>",
|
||||
focus_location = "o",
|
||||
hover_symbol = "<C-space>",
|
||||
rename_symbol = "r",
|
||||
code_actions = "a",
|
||||
},
|
||||
lsp_blacklist = {},
|
||||
}
|
||||
-- TODO Should be hierarchical, doesn't seem to be :/
|
|
@ -40,6 +40,7 @@
|
|||
node = lib.mkEnableOption "NodeJS dev stuff";
|
||||
perl = lib.mkEnableOption "Perl dev stuff";
|
||||
php = lib.mkEnableOption "PHP dev stuff";
|
||||
prose = lib.mkEnableOption "Writing stuff";
|
||||
python = lib.mkEnableOption "Python dev stuff";
|
||||
};
|
||||
};
|
||||
|
@ -47,7 +48,7 @@
|
|||
config = {
|
||||
frogeye = {
|
||||
dev = {
|
||||
ansible = lib.mkDefault true;
|
||||
prose = lib.mkDefault true;
|
||||
python = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
{
|
||||
imports = [
|
||||
../options.nix
|
||||
../common/frogarized
|
||||
./battery.nix
|
||||
./ccc
|
||||
./common.nix
|
||||
|
@ -9,6 +10,7 @@
|
|||
./gaming
|
||||
./geoffrey.nix
|
||||
./printing
|
||||
./style
|
||||
./wireless.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -41,5 +41,8 @@
|
|||
pulseaudio.enable = true;
|
||||
# TODO Try pipewire
|
||||
};
|
||||
|
||||
# So we can use gnome3 pinentry flavour
|
||||
services.dbus.packages = [ pkgs.gcr ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -19,7 +19,9 @@
|
|||
|
||||
home-manager = {
|
||||
users.geoffrey = { pkgs, ... }: {
|
||||
frogeye = config.frogeye;
|
||||
frogeye = lib.mkDefault config.frogeye;
|
||||
# Propagating options that way doesn't seem to conserve priority info,
|
||||
# this is not great. Hopefully mkDefault resolve conflicts.
|
||||
};
|
||||
# Makes VMs able to re-run
|
||||
useUserPackages = true;
|
||||
|
|
25
os/style/bg.svg
Normal file
25
os/style/bg.svg
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1" height="1" enable-background="new" version="1.1" viewBox="0 0 1 1" xml:space="preserve">
|
||||
<defs>
|
||||
<linearGradient id="a" x1="559.8" x2="559.8" y1=".0125" y2="834.89" gradientTransform="matrix(.002 0 0 .002 -2962.3 128.19)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#CCE474" offset="0"/>
|
||||
<stop stop-color="#CBE372" offset=".21961"/>
|
||||
<stop stop-color="#C8E26B" offset=".29804"/>
|
||||
<stop stop-color="#C3DE60" offset=".35686"/>
|
||||
<stop stop-color="#BBD94F" offset=".4"/>
|
||||
<stop stop-color="#B1D339" offset=".43922"/>
|
||||
<stop stop-color="#A4CB1E" offset=".47451"/>
|
||||
<stop stop-color="#99C405" offset=".49804"/>
|
||||
<stop stop-color="#A2CC18" offset=".54118"/>
|
||||
<stop stop-color="#AAD329" offset=".59216"/>
|
||||
<stop stop-color="#B0D834" offset=".6549"/>
|
||||
<stop stop-color="#B3DB3B" offset=".74902"/>
|
||||
<stop stop-color="#B4DC3D" offset="1"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(559.29 -691.3)">
|
||||
<g transform="matrix(.44657 0 0 .59891 763.59 614.53)">
|
||||
<path d="m-2960.1 129.86v-1.6697h-2.2393v1.6697z" fill="url(#a)"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
19
os/style/default.nix
Normal file
19
os/style/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
config = {
|
||||
boot = {
|
||||
plymouth.enable = true;
|
||||
initrd.systemd.enable = true;
|
||||
};
|
||||
stylix = {
|
||||
homeManagerIntegration.autoImport = false; # Makes config reuse easier
|
||||
polarity = "dark";
|
||||
targets.plymouth.logo = pkgs.runCommand "flower.png" { } "${pkgs.inkscape}/bin/inkscape ${pkgs.substituteAll {
|
||||
src = ./flower.svg;
|
||||
color = config.lib.stylix.colors.withHashtag.base07;
|
||||
}} -w 256 -o $out";
|
||||
# UPST Default grub font is sansSerif, which doesn't work.
|
||||
# Maybe because people patch mono with nerdfonts and that isn't compatible?
|
||||
};
|
||||
};
|
||||
}
|
8
os/style/flower.svg
Normal file
8
os/style/flower.svg
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32.638" height="33.067" enable-background="new" version="1.1" viewBox="0 0 32.638 33.067" xml:space="preserve">
|
||||
<g transform="translate(587.12 -740.77)">
|
||||
<g transform="matrix(.57741 0 0 -.57741 -575.42 770.38)" fill="@color@">
|
||||
<path d="m0 0c-0.977-2.42-2.724-3.975-5.139-3.018-2.419 0.957-3.087 3.466-2.009 7.53 2.051 6.483 8.06 10.28 14.171 15.72 2.007-7.532 4.018-15.062 1.968-21.548-0.205-3.289-3.595-4.748-5.24-4.662-2.415 0.957-3.187 1.824-3.751 5.978m-15.43 17.332c-3.287 0.177-4.829 1.911-4.729 3.555-0.669 2.508 1.951 4.84 4.466 5.531 6.68 1.284 13.925-1.586 21.172-4.454-6.111-5.439-11.448-11.744-17.254-12.254-3.389-1.463-6.577 0.359-7.25 2.872-0.668 2.506 0.204 3.284 3.595 4.75m8.001 22.651c-1.44 3.377-2.109 5.888-0.364 7.443 1.749 1.551 4.934-0.271 7.246-2.87 3.858-4.332 5.868-11.865 7.002-20.171-8.118 2.091-16.238 4.184-20.096 8.515-2.313 2.601-2.882 6.753-1.135 8.307 1.746 1.555 4.161 0.598 7.347-1.224m23.428 5.321c0.976 2.422 2.724 3.973 5.137 3.018 2.412-0.956 3.084-3.466 2.01-7.53-2.052-6.485-8.063-10.28-14.172-15.721-2.011 7.531-4.019 15.064-1.968 21.547 0.205 3.289 3.591 4.75 5.236 4.664 2.415-0.96 3.19-1.825 3.757-5.978m15.427-17.333c3.284-0.177 4.831-1.909 4.729-3.554 0.667-2.509-1.95-4.841-4.466-5.529-6.68-1.285-13.927 1.583-21.173 4.453 6.111 5.438 11.45 11.744 17.257 12.253 3.389 1.463 6.574-0.36 7.245-2.87 0.67-2.509-0.204-3.287-3.592-4.753m-8.002-22.651c1.439-3.378 2.113-5.885 0.368-7.442-1.747-1.552-4.935 0.27-7.251 2.87-3.857 4.332-5.865 11.864-6.999 20.173 8.117-2.094 16.237-4.185 20.095-8.518 2.313-2.599 2.883-6.754 1.136-8.309-1.746-1.554-4.161-0.595-7.349 1.226" fill="@color@" fill-rule="evenodd"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
Loading…
Reference in a new issue