graphical: Move config to a module
|
@ -23,6 +23,7 @@
|
||||||
whois
|
whois
|
||||||
htop
|
htop
|
||||||
restic
|
restic
|
||||||
|
fend
|
||||||
] ++ lib.optionals config.kyouma.machine-type.graphical [
|
] ++ lib.optionals config.kyouma.machine-type.graphical [
|
||||||
linux-manual
|
linux-manual
|
||||||
colmena
|
colmena
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-x1-extreme-gen4
|
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-x1-extreme-gen4
|
||||||
../../common
|
../../common
|
||||||
../../profiles/graphical
|
|
||||||
../../profiles/physical.nix
|
../../profiles/physical.nix
|
||||||
./disko.nix
|
./disko.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
@ -41,7 +40,13 @@
|
||||||
extraBackends = [ pkgs.utsushi ];
|
extraBackends = [ pkgs.utsushi ];
|
||||||
};
|
};
|
||||||
|
|
||||||
kyouma.machine-type.portable = true;
|
kyouma = {
|
||||||
|
graphical = {
|
||||||
|
enable = true;
|
||||||
|
compositor = "hyprland";
|
||||||
|
};
|
||||||
|
machine-type.portable = true;
|
||||||
|
};
|
||||||
|
|
||||||
networking.hostName = "ryuuko";
|
networking.hostName = "ryuuko";
|
||||||
networking.firewall.allowedTCPPorts = [ 22000 ];
|
networking.firewall.allowedTCPPorts = [ 22000 ];
|
||||||
|
|
|
@ -1,218 +0,0 @@
|
||||||
{ config, pkgs, lib, inputs, ... }: {
|
|
||||||
imports = [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
inputs.stylix.nixosModules.stylix
|
|
||||||
./files.nix
|
|
||||||
./hyprland.nix
|
|
||||||
./nixvim.nix
|
|
||||||
./waybar.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
kyouma.machine-type.graphical = true;
|
|
||||||
|
|
||||||
boot.plymouth.enable = true;
|
|
||||||
|
|
||||||
security.pam.services.hyprlock = {};
|
|
||||||
|
|
||||||
services.dbus.packages = [ pkgs.gcr ];
|
|
||||||
services.geoclue2.enable = true;
|
|
||||||
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.udisks2.enable = true;
|
|
||||||
|
|
||||||
environment.variables = {
|
|
||||||
CLUTTER_BACKEND = "wayland";
|
|
||||||
GDK_BACKEND = "wayland,x11";
|
|
||||||
MOZ_ENABLE_WAYLAND = "1";
|
|
||||||
QT_QPA_PLATFORM = "wayland;xcb";
|
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
||||||
SDL_VIDEODRIVER = "wayland";
|
|
||||||
LIBVA_DRIVER_NAME = "radeonsi";
|
|
||||||
MESA_VK_DEVICE_SELECT = "1002:73df";
|
|
||||||
WLR_DRM_DEVICES = "$HOME/.config/hypr/external-gpu:$HOME/.config/hypr/internal-gpu";
|
|
||||||
};
|
|
||||||
xdg.icons.enable = true;
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
wlr.enable = true;
|
|
||||||
configPackages = [ pkgs.xdg-desktop-portal-hyprland ];
|
|
||||||
};
|
|
||||||
|
|
||||||
stylix= {
|
|
||||||
image = pkgs.fetchurl {
|
|
||||||
url = "https://kyouma.net/wallpaper.png";
|
|
||||||
sha256 = "1f46b439a864cd28b8ea93563b4762f1efb2648bae0148fd6b45f3033b10b0e8";
|
|
||||||
};
|
|
||||||
polarity = "dark";
|
|
||||||
#base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-macchiato.yaml";
|
|
||||||
fonts = {
|
|
||||||
sansSerif = {
|
|
||||||
package = pkgs.noto-fonts;
|
|
||||||
name = "Noto Sans";
|
|
||||||
};
|
|
||||||
serif = config.stylix.fonts.sansSerif;
|
|
||||||
monospace = {
|
|
||||||
package = pkgs.jetbrains-mono;
|
|
||||||
name = "JetBrains Mono Regular";
|
|
||||||
};
|
|
||||||
sizes.terminal = 11;
|
|
||||||
};
|
|
||||||
cursor = {
|
|
||||||
package = pkgs.capitaine-cursors;
|
|
||||||
name = "capitaine";
|
|
||||||
size = 24;
|
|
||||||
};
|
|
||||||
targets = {
|
|
||||||
console.enable = false;
|
|
||||||
gnome.enable = true;
|
|
||||||
fish.enable = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.emily = {
|
|
||||||
stylix.targets = {
|
|
||||||
hyprland.enable = false;
|
|
||||||
kitty.enable = false;
|
|
||||||
mako.enable = false;
|
|
||||||
rofi.enable = false;
|
|
||||||
swaylock.enable = false;
|
|
||||||
waybar.enable = false;
|
|
||||||
nixvim.enable = false;
|
|
||||||
fish.enable = false;
|
|
||||||
};
|
|
||||||
home.keyboard = {
|
|
||||||
layout = "de";
|
|
||||||
variant = "neo_qwerty";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.imv.enable = true;
|
|
||||||
|
|
||||||
programs.wpaperd = {
|
|
||||||
enable = true;
|
|
||||||
settings.default = {
|
|
||||||
path = "/home/emily/Pictures/wallpapers/sylviaritter/";
|
|
||||||
duration = "60m";
|
|
||||||
sorting = "random";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
font.size = 13;
|
|
||||||
font.name = "JetBrains Mono";
|
|
||||||
settings = {
|
|
||||||
enable_audio_bell = false;
|
|
||||||
scrollback_lines = 65536;
|
|
||||||
remember_window_size = false;
|
|
||||||
initial_window_width = 1200;
|
|
||||||
initial_window_height = 800;
|
|
||||||
|
|
||||||
bold_font = "auto";
|
|
||||||
italic_font = "auto";
|
|
||||||
bold_italic_font = "auto";
|
|
||||||
|
|
||||||
background = "#090312";
|
|
||||||
background_opacity = "0.7";
|
|
||||||
};
|
|
||||||
keybindings = {
|
|
||||||
"shift+right" = "next_tab";
|
|
||||||
"ctrl+l" = "next_tab";
|
|
||||||
"shift+left" = "previous_tab";
|
|
||||||
"ctrl+h" = "previous_tab";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.rofi = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.rofi-wayland;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zoxide = {
|
|
||||||
enable = true;
|
|
||||||
options = [ "--cmd cd" ];
|
|
||||||
};
|
|
||||||
programs.fzf.enable = true;
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme.name = "qtct";
|
|
||||||
style.name = "kvantum-dark";
|
|
||||||
style.package = with pkgs; [
|
|
||||||
libsForQt5.qtstyleplugin-kvantum
|
|
||||||
qt6Packages.qtstyleplugin-kvantum
|
|
||||||
(catppuccin-kvantum.override { accent = "Mauve"; variant = "Macchiato"; })
|
|
||||||
];
|
|
||||||
};
|
|
||||||
gtk.iconTheme.name = "Adwaita";
|
|
||||||
gtk.iconTheme.package = pkgs.gnome.adwaita-icon-theme;
|
|
||||||
|
|
||||||
services.gammastep = {
|
|
||||||
enable = true;
|
|
||||||
provider = "geoclue2";
|
|
||||||
temperature.day = 6500;
|
|
||||||
temperature.night = 3700;
|
|
||||||
settings.general.adjustment-method = "wayland";
|
|
||||||
};
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
anchor = "top-right";
|
|
||||||
backgroundColor = "#24273a";
|
|
||||||
borderColor = "#c6a0f6";
|
|
||||||
borderRadius = 15;
|
|
||||||
borderSize = 2;
|
|
||||||
defaultTimeout = 5000;
|
|
||||||
layer = "overlay";
|
|
||||||
maxIconSize = 48;
|
|
||||||
padding = "15";
|
|
||||||
progressColor = "over #B4A1DB";
|
|
||||||
sort = "-time";
|
|
||||||
textColor = "#cad3f5";
|
|
||||||
extraConfig = ''
|
|
||||||
max-history=100
|
|
||||||
on-button-left=dismiss
|
|
||||||
on-button-right=dismiss-all
|
|
||||||
on-notify=exec ${pkgs.mpv}/bin/mpv /usr/share/sounds/freedesktop/stereo/message.oga
|
|
||||||
|
|
||||||
[urgency=low]
|
|
||||||
border-color=#B4A1DB
|
|
||||||
default-timeout=2000
|
|
||||||
|
|
||||||
[urgency=normal]
|
|
||||||
border-color=#B4A1DB
|
|
||||||
default-timeout=5000
|
|
||||||
|
|
||||||
[urgency=high]
|
|
||||||
border-color=#D04E9D
|
|
||||||
text-color=#D04E9D
|
|
||||||
default-timeout=0
|
|
||||||
|
|
||||||
[category=mpd]
|
|
||||||
border-color=#E49186
|
|
||||||
default-timeout=2000
|
|
||||||
group-by=category
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
services.gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSshSupport = true;
|
|
||||||
pinentryPackage = pkgs.pinentry-gnome3;
|
|
||||||
};
|
|
||||||
services.syncthing = {
|
|
||||||
enable = true;
|
|
||||||
tray.enable = true;
|
|
||||||
tray.command = "syncthingtray --replace";
|
|
||||||
};
|
|
||||||
services.udiskie = {
|
|
||||||
enable = true;
|
|
||||||
automount = false;
|
|
||||||
};
|
|
||||||
systemd.user.services.syncthingtray.Service = {
|
|
||||||
ExecStartPre = "${pkgs.coreutils-full}/bin/sleep 2";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = "1s";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,219 +0,0 @@
|
||||||
{ pkgs, inputs, ... }: {
|
|
||||||
home-manager.users.emily.imports = [
|
|
||||||
inputs.nixvim.homeManagerModules.nixvim
|
|
||||||
];
|
|
||||||
home-manager.users.emily.programs.nixvim = {
|
|
||||||
enable = true;
|
|
||||||
extraPlugins = [
|
|
||||||
pkgs.vimPlugins.molokai
|
|
||||||
pkgs.vimPlugins.vim-airline-themes
|
|
||||||
];
|
|
||||||
colorscheme = "molokai";
|
|
||||||
vimAlias = true;
|
|
||||||
highlightOverride.Normal = {
|
|
||||||
ctermbg = "NONE";
|
|
||||||
bg = "NONE";
|
|
||||||
};
|
|
||||||
opts = {
|
|
||||||
number = true;
|
|
||||||
expandtab = true;
|
|
||||||
autoindent = true;
|
|
||||||
mouse = "";
|
|
||||||
encoding = "utf-8";
|
|
||||||
shiftwidth = 2;
|
|
||||||
smartindent = true;
|
|
||||||
tabstop = 2;
|
|
||||||
|
|
||||||
ignorecase = true;
|
|
||||||
incsearch = true;
|
|
||||||
smartcase = true;
|
|
||||||
};
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
action = "<cmd>Neotree toggle<CR>";
|
|
||||||
key = "<C-n>";
|
|
||||||
mode = "n";
|
|
||||||
options.silent = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<C-\\><C-n>";
|
|
||||||
key = "<esc>";
|
|
||||||
mode = "t";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
plugins.cmp = {
|
|
||||||
enable = true;
|
|
||||||
settings.sources = [
|
|
||||||
{ name = "nvim_lsp"; }
|
|
||||||
{ name = "luasnip"; }
|
|
||||||
{ name = "buffer"; }
|
|
||||||
{ name = "nvim_lua"; }
|
|
||||||
{ name = "path"; }
|
|
||||||
];
|
|
||||||
settings.formatting = {
|
|
||||||
fields = [ "abbr" "kind" "menu" ];
|
|
||||||
format = ''
|
|
||||||
function(_, item)
|
|
||||||
local icons = {
|
|
||||||
Namespace = "",
|
|
||||||
Text = "",
|
|
||||||
Method = "",
|
|
||||||
Function = "",
|
|
||||||
Constructor = "",
|
|
||||||
Field = "",
|
|
||||||
Variable = "",
|
|
||||||
Class = "",
|
|
||||||
Interface = "",
|
|
||||||
Module = "",
|
|
||||||
Property = "",
|
|
||||||
Unit = "",
|
|
||||||
Value = "",
|
|
||||||
Enum = "",
|
|
||||||
Keyword = "",
|
|
||||||
Snippet = "",
|
|
||||||
Color = "",
|
|
||||||
File = "",
|
|
||||||
Reference = "",
|
|
||||||
Folder = "",
|
|
||||||
EnumMember = "",
|
|
||||||
Constant = "",
|
|
||||||
Struct = "",
|
|
||||||
Event = "",
|
|
||||||
Operator = "",
|
|
||||||
TypeParameter = "",
|
|
||||||
Table = "",
|
|
||||||
Object = "",
|
|
||||||
Tag = "",
|
|
||||||
Array = "[]",
|
|
||||||
Boolean = "",
|
|
||||||
Number = "",
|
|
||||||
Null = "",
|
|
||||||
String = "",
|
|
||||||
Calendar = "",
|
|
||||||
Watch = "",
|
|
||||||
Package = "",
|
|
||||||
Copilot = "",
|
|
||||||
Codeium = "",
|
|
||||||
TabNine = "",
|
|
||||||
}
|
|
||||||
|
|
||||||
local icon = icons[item.kind] or ""
|
|
||||||
item.kind = string.format("%s %s", icon, item.kind or "")
|
|
||||||
return item
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
settings.snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end";
|
|
||||||
settings.window = {
|
|
||||||
completion = {
|
|
||||||
winhighlight = "FloatBorder:CmpBorder,Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel";
|
|
||||||
scrollbar = false;
|
|
||||||
sidePadding = 0;
|
|
||||||
border = [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ];
|
|
||||||
};
|
|
||||||
documentation = {
|
|
||||||
border = [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ];
|
|
||||||
winhighlight = "FloatBorder:CmpBorder,Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
settings.mapping = {
|
|
||||||
"<C-n>" = "cmp.mapping.select_next_item()";
|
|
||||||
"<C-p>" = "cmp.mapping.select_prev_item()";
|
|
||||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
|
||||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
|
||||||
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
|
|
||||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
|
||||||
"<C-Space>" = "cmp.mapping.complete()";
|
|
||||||
"<C-e>" = "cmp.mapping.close()";
|
|
||||||
"<CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true })";
|
|
||||||
"<Tab>" = ''
|
|
||||||
cmp.mapping(function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_next_item()
|
|
||||||
elseif require("luasnip").expand_or_jumpable() then
|
|
||||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end,{"i","s"})
|
|
||||||
'';
|
|
||||||
"<S-Tab>" = ''
|
|
||||||
cmp.mapping(function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_prev_item()
|
|
||||||
elseif require("luasnip").jumpable(-1) then
|
|
||||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end,{"i","s"})
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
plugins.lsp = {
|
|
||||||
enable = true;
|
|
||||||
keymaps.lspBuf = {
|
|
||||||
"K" = "hover";
|
|
||||||
"gd" = "definition";
|
|
||||||
"gD" = "references";
|
|
||||||
"gt" = "type_definition";
|
|
||||||
"gi" = "implementation";
|
|
||||||
};
|
|
||||||
servers = {
|
|
||||||
bashls.enable = true;
|
|
||||||
lua-ls.enable = true;
|
|
||||||
nil-ls = {
|
|
||||||
enable = true;
|
|
||||||
settings.formatting.command = [ "nixfmt" "-w" "140" ];
|
|
||||||
};
|
|
||||||
nixd = {
|
|
||||||
enable = false;
|
|
||||||
settings = {
|
|
||||||
eval.depth = 5;
|
|
||||||
eval.workers = 6;
|
|
||||||
formatting.command = [ "nixfmt" "-w" "140" ];
|
|
||||||
options.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
ruff-lsp.enable = true;
|
|
||||||
rust-analyzer = {
|
|
||||||
enable = true;
|
|
||||||
installRustc = true;
|
|
||||||
installCargo = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
plugins.none-ls = {
|
|
||||||
enable = true;
|
|
||||||
sources.diagnostics = {
|
|
||||||
pylint.enable = true;
|
|
||||||
statix.enable = true;
|
|
||||||
};
|
|
||||||
sources.formatting = {
|
|
||||||
nixfmt.enable = true;
|
|
||||||
markdownlint.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
plugins.neo-tree = {
|
|
||||||
enable = true;
|
|
||||||
closeIfLastWindow = true;
|
|
||||||
};
|
|
||||||
plugins.treesitter = {
|
|
||||||
enable = true;
|
|
||||||
nixGrammars = true;
|
|
||||||
settings.indent.enable = true;
|
|
||||||
};
|
|
||||||
plugins.airline.enable = true;
|
|
||||||
plugins.cmp-buffer.enable = true;
|
|
||||||
plugins.cmp-emoji.enable = true;
|
|
||||||
plugins.cmp-nvim-lsp.enable = true;
|
|
||||||
plugins.cmp-path.enable = true;
|
|
||||||
plugins.cmp_luasnip.enable = true;
|
|
||||||
plugins.luasnip.enable = true;
|
|
||||||
plugins.nvim-autopairs.enable = true;
|
|
||||||
plugins.rainbow-delimiters.enable = true;
|
|
||||||
# Broken
|
|
||||||
plugins.rustaceanvim.enable = false;
|
|
||||||
plugins.treesitter-context.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,6 +1,7 @@
|
||||||
{ ... }: {
|
{ ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
./deployment
|
./deployment
|
||||||
|
./graphical
|
||||||
./machine-type
|
./machine-type
|
||||||
./nginx
|
./nginx
|
||||||
./update-nixfiles
|
./update-nixfiles
|
||||||
|
|
238
modules/graphical/default.nix
Normal file
|
@ -0,0 +1,238 @@
|
||||||
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.kyouma.graphical;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
kyouma.graphical = {
|
||||||
|
enable = lib.mkEnableOption "graphical profile";
|
||||||
|
compositor = lib.mkOption {
|
||||||
|
type = with lib.types; nullOr (enum [ "hyprland" "niri" ]);
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
./files.nix
|
||||||
|
./hyprland.nix
|
||||||
|
./waybar-hyprland.nix
|
||||||
|
./hyprlock.nix
|
||||||
|
./nixvim.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
kyouma.machine-type.graphical = true;
|
||||||
|
|
||||||
|
boot.plymouth.enable = true;
|
||||||
|
|
||||||
|
security.pam.services.hyprlock = {};
|
||||||
|
|
||||||
|
services.dbus.packages = [ pkgs.gcr ];
|
||||||
|
services.geoclue2.enable = true;
|
||||||
|
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.udisks2.enable = true;
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
CLUTTER_BACKEND = "wayland";
|
||||||
|
GDK_BACKEND = "wayland,x11";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
QT_QPA_PLATFORM = "wayland;xcb";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
SDL_VIDEODRIVER = "wayland";
|
||||||
|
LIBVA_DRIVER_NAME = "radeonsi";
|
||||||
|
MESA_VK_DEVICE_SELECT = "1002:73df";
|
||||||
|
WLR_DRM_DEVICES = "$HOME/.config/hypr/external-gpu:$HOME/.config/hypr/internal-gpu";
|
||||||
|
};
|
||||||
|
xdg.icons.enable = true;
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
wlr.enable = true;
|
||||||
|
configPackages = [ (if cfg.compositor == "hyprland"
|
||||||
|
then pkgs.xdg-desktop-portal-hyprland
|
||||||
|
else pkgs.xdg-desktop-portal-wlr
|
||||||
|
) ];
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix= {
|
||||||
|
image = pkgs.fetchurl {
|
||||||
|
url = "https://kyouma.net/wallpaper.png";
|
||||||
|
sha256 = "1f46b439a864cd28b8ea93563b4762f1efb2648bae0148fd6b45f3033b10b0e8";
|
||||||
|
};
|
||||||
|
polarity = "dark";
|
||||||
|
#base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-macchiato.yaml";
|
||||||
|
fonts = {
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.noto-fonts;
|
||||||
|
name = "Noto Sans";
|
||||||
|
};
|
||||||
|
serif = config.stylix.fonts.sansSerif;
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.jetbrains-mono;
|
||||||
|
name = "JetBrains Mono Regular";
|
||||||
|
};
|
||||||
|
sizes.terminal = 11;
|
||||||
|
};
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.capitaine-cursors;
|
||||||
|
name = "capitaine";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
targets = {
|
||||||
|
console.enable = false;
|
||||||
|
gnome.enable = true;
|
||||||
|
fish.enable = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.emily = {
|
||||||
|
stylix.targets = {
|
||||||
|
hyprland.enable = false;
|
||||||
|
sway.enable = false;
|
||||||
|
kitty.enable = false;
|
||||||
|
mako.enable = false;
|
||||||
|
rofi.enable = false;
|
||||||
|
swaylock.enable = false;
|
||||||
|
waybar.enable = false;
|
||||||
|
nixvim.enable = false;
|
||||||
|
fish.enable = false;
|
||||||
|
};
|
||||||
|
home.keyboard = {
|
||||||
|
layout = "de";
|
||||||
|
variant = "neo_qwerty";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.imv.enable = true;
|
||||||
|
|
||||||
|
programs.wpaperd = {
|
||||||
|
enable = true;
|
||||||
|
settings.default = {
|
||||||
|
path = "/home/emily/Pictures/wallpapers/sylviaritter/";
|
||||||
|
duration = "60m";
|
||||||
|
sorting = "random";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
font.size = 13;
|
||||||
|
font.name = "JetBrains Mono";
|
||||||
|
settings = {
|
||||||
|
enable_audio_bell = false;
|
||||||
|
scrollback_lines = 65536;
|
||||||
|
remember_window_size = false;
|
||||||
|
initial_window_width = 1200;
|
||||||
|
initial_window_height = 800;
|
||||||
|
|
||||||
|
bold_font = "auto";
|
||||||
|
italic_font = "auto";
|
||||||
|
bold_italic_font = "auto";
|
||||||
|
|
||||||
|
background = "#090312";
|
||||||
|
background_opacity = "0.7";
|
||||||
|
};
|
||||||
|
keybindings = {
|
||||||
|
"shift+right" = "next_tab";
|
||||||
|
"ctrl+l" = "next_tab";
|
||||||
|
"shift+left" = "previous_tab";
|
||||||
|
"ctrl+h" = "previous_tab";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.rofi-wayland;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
options = [ "--cmd cd" ];
|
||||||
|
};
|
||||||
|
programs.fzf.enable = true;
|
||||||
|
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme.name = "qtct";
|
||||||
|
style.name = "kvantum-dark";
|
||||||
|
style.package = with pkgs; [
|
||||||
|
libsForQt5.qtstyleplugin-kvantum
|
||||||
|
qt6Packages.qtstyleplugin-kvantum
|
||||||
|
(catppuccin-kvantum.override { accent = "Mauve"; variant = "Macchiato"; })
|
||||||
|
];
|
||||||
|
};
|
||||||
|
gtk.iconTheme.name = "Adwaita";
|
||||||
|
gtk.iconTheme.package = pkgs.gnome.adwaita-icon-theme;
|
||||||
|
|
||||||
|
services.gammastep = {
|
||||||
|
enable = true;
|
||||||
|
provider = "geoclue2";
|
||||||
|
temperature.day = 6500;
|
||||||
|
temperature.night = 3700;
|
||||||
|
settings.general.adjustment-method = "wayland";
|
||||||
|
};
|
||||||
|
services.mako = {
|
||||||
|
enable = true;
|
||||||
|
anchor = "top-right";
|
||||||
|
backgroundColor = "#24273a";
|
||||||
|
borderColor = "#c6a0f6";
|
||||||
|
borderRadius = 15;
|
||||||
|
borderSize = 2;
|
||||||
|
defaultTimeout = 5000;
|
||||||
|
layer = "overlay";
|
||||||
|
maxIconSize = 48;
|
||||||
|
padding = "15";
|
||||||
|
progressColor = "over #B4A1DB";
|
||||||
|
sort = "-time";
|
||||||
|
textColor = "#cad3f5";
|
||||||
|
extraConfig = ''
|
||||||
|
max-history=100
|
||||||
|
on-button-left=dismiss
|
||||||
|
on-button-right=dismiss-all
|
||||||
|
on-notify=exec ${pkgs.mpv}/bin/mpv /usr/share/sounds/freedesktop/stereo/message.oga
|
||||||
|
|
||||||
|
[urgency=low]
|
||||||
|
border-color=#B4A1DB
|
||||||
|
default-timeout=2000
|
||||||
|
|
||||||
|
[urgency=normal]
|
||||||
|
border-color=#B4A1DB
|
||||||
|
default-timeout=5000
|
||||||
|
|
||||||
|
[urgency=high]
|
||||||
|
border-color=#D04E9D
|
||||||
|
text-color=#D04E9D
|
||||||
|
default-timeout=0
|
||||||
|
|
||||||
|
[category=mpd]
|
||||||
|
border-color=#E49186
|
||||||
|
default-timeout=2000
|
||||||
|
group-by=category
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSshSupport = true;
|
||||||
|
pinentryPackage = pkgs.pinentry-gnome3;
|
||||||
|
};
|
||||||
|
services.syncthing = {
|
||||||
|
enable = true;
|
||||||
|
tray.enable = true;
|
||||||
|
tray.command = "syncthingtray --replace";
|
||||||
|
};
|
||||||
|
services.udiskie = {
|
||||||
|
enable = true;
|
||||||
|
automount = false;
|
||||||
|
};
|
||||||
|
systemd.user.services.syncthingtray.Service = {
|
||||||
|
ExecStartPre = "${pkgs.coreutils-full}/bin/sleep 2";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "1s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
{ config, pkgs, ... }: {
|
{ config, lib, pkgs, ... }: {
|
||||||
home-manager.users.emily = {
|
config.home-manager.users.emily = lib.mkIf config.kyouma.graphical.enable {
|
||||||
home.file.".local/bin/hypr/playerctl.sh" = let
|
home.file.".local/bin/hypr/playerctl.sh" = let
|
||||||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||||
title = "$(${playerctl} metadata --format '{{markup_escape(title)}}')";
|
title = "$(${playerctl} metadata --format '{{markup_escape(title)}}')";
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
home.file."./local/bin/hypr/colorpicker.sh" = {
|
home.file.".local/bin/hypr/colorpicker.sh" = {
|
||||||
enable = true;
|
enable = true;
|
||||||
executable = true;
|
executable = true;
|
||||||
source = pkgs.writeShellApplication {
|
source = pkgs.writeShellApplication {
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
runtimeInputs = with pkgs; [ coreutils grim slurp imagemagick_light wl-clipboard libnotify ];
|
runtimeInputs = with pkgs; [ coreutils grim slurp imagemagick_light wl-clipboard libnotify ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.file."./local/bin/hypr/rofi_powermenu.sh" = {
|
home.file.".local/bin/hypr/rofi_powermenu.sh" = {
|
||||||
enable = true;
|
enable = true;
|
||||||
executable = true;
|
executable = true;
|
||||||
source = pkgs.writeShellApplication {
|
source = pkgs.writeShellApplication {
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
runtimeInputs = with pkgs; [ rofi hyprlock coreutils-full toybox xdg-user-dirs ];
|
runtimeInputs = with pkgs; [ rofi hyprlock coreutils-full toybox xdg-user-dirs ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.file."./local/bin/hypr/rofi_screenshot.sh" = {
|
home.file.".local/bin/hypr/rofi_screenshot.sh" = {
|
||||||
enable = true;
|
enable = true;
|
||||||
executable = true;
|
executable = true;
|
||||||
source = pkgs.writeShellApplication {
|
source = pkgs.writeShellApplication {
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
runtimeInputs = with pkgs; [ coreutils grim hyprland imv slurp wl-clipboard libnotify pulseaudio toybox rofi xdg-user-dirs ];
|
runtimeInputs = with pkgs; [ coreutils grim hyprland imv slurp wl-clipboard libnotify pulseaudio toybox rofi xdg-user-dirs ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.file."./local/bin/hypr/screenshot.sh" = {
|
home.file.".local/bin/hypr/screenshot.sh" = {
|
||||||
enable = true;
|
enable = true;
|
||||||
executable = true;
|
executable = true;
|
||||||
source = pkgs.writeShellApplication {
|
source = pkgs.writeShellApplication {
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
@ -1,57 +1,5 @@
|
||||||
{ pkgs, ... }: {
|
{ config, lib, pkgs, ... }: {
|
||||||
home-manager.users.emily = {
|
config.home-manager.users.emily = lib.mkIf (config.kyouma.graphical.compositor == "hyprland") {
|
||||||
programs.hyprlock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
hide_cursor = true;
|
|
||||||
disable_loading_bar = true;
|
|
||||||
};
|
|
||||||
background = [{
|
|
||||||
path = "screenshot";
|
|
||||||
#path = "$HOME/Pictures/wallpapers/lockscreen.png";
|
|
||||||
blur_passes = 3;
|
|
||||||
contrast = 1.25;
|
|
||||||
}];
|
|
||||||
input-field = [{
|
|
||||||
size = "250, 60";
|
|
||||||
outline_thickness = 2;
|
|
||||||
dots_size = 0.2;
|
|
||||||
dots_spacing = 0.2;
|
|
||||||
dots_center = true;
|
|
||||||
outer_color = "rgba(0, 0, 0, 0)";
|
|
||||||
inner_color = "rgba(0, 0, 0, 0.5)";
|
|
||||||
font_color = "rgb(200, 200, 200)";
|
|
||||||
fade_on_empty = true;
|
|
||||||
fade_timeout = 5000;
|
|
||||||
font_family = "JetBrains Mono Nerd Font Mono";
|
|
||||||
fail_text = "<i>$FAIL <b>$ATTEMPTS</b></i>";
|
|
||||||
position = "0, 200";
|
|
||||||
halign = "center";
|
|
||||||
valign = "bottom";
|
|
||||||
}];
|
|
||||||
label = [{
|
|
||||||
text = "cmd[update:250] date +%X";
|
|
||||||
color = "rgba(255, 255, 255, 0.6)";
|
|
||||||
font_size = "100";
|
|
||||||
font_family = "JetBrains Mono Nerd Font Mono ExtraBold";
|
|
||||||
position = "0, -300";
|
|
||||||
halign = "center";
|
|
||||||
valign = "top";
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.swayidle =
|
|
||||||
let
|
|
||||||
hyprlock = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
systemdTarget = "hyprland-session.target";
|
|
||||||
events = [
|
|
||||||
{ event = "before-sleep"; command = hyprlock; }
|
|
||||||
{ event = "lock"; command = hyprlock; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = let
|
settings = let
|
||||||
|
@ -170,7 +118,7 @@
|
||||||
"eDP-1, 3840x2400@60, 0x0, 1, bitdepth, 10"
|
"eDP-1, 3840x2400@60, 0x0, 1, bitdepth, 10"
|
||||||
#"eDP-1, 2560x1600@60, 0x0, 1, bitdepth, 10"
|
#"eDP-1, 2560x1600@60, 0x0, 1, bitdepth, 10"
|
||||||
#"eDP-1, 1920x1200@60, 0x0, 1, bitdepth, 10"
|
#"eDP-1, 1920x1200@60, 0x0, 1, bitdepth, 10"
|
||||||
"desc:Dell Inc. AW3225QF FXK2YZ3, 3840x2160@120,5280x0,1, bitdepth,10, vrr,2"
|
"desc:Dell Inc. AW3225QF FXK2YZ3, 3840x2160@240,5280x0,1, bitdepth,10, vrr,2"
|
||||||
"desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455, 2560x1440@144,3840x-350,1, bitdepth,10, transform,1"
|
"desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455, 2560x1440@144,3840x-350,1, bitdepth,10, transform,1"
|
||||||
",preferred,auto,1"
|
",preferred,auto,1"
|
||||||
];
|
];
|
56
modules/graphical/hyprlock.nix
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{ config, lib, pkgs, ... }: {
|
||||||
|
config.home-manager.users.emily = lib.mkIf config.kyouma.graphical.enable {
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
hide_cursor = true;
|
||||||
|
disable_loading_bar = true;
|
||||||
|
};
|
||||||
|
background = [{
|
||||||
|
path = "screenshot";
|
||||||
|
#path = "$HOME/Pictures/wallpapers/lockscreen.png";
|
||||||
|
blur_passes = 3;
|
||||||
|
contrast = 1.25;
|
||||||
|
}];
|
||||||
|
input-field = [{
|
||||||
|
size = "250, 60";
|
||||||
|
outline_thickness = 2;
|
||||||
|
dots_size = 0.2;
|
||||||
|
dots_spacing = 0.2;
|
||||||
|
dots_center = true;
|
||||||
|
outer_color = "rgba(0, 0, 0, 0)";
|
||||||
|
inner_color = "rgba(0, 0, 0, 0.5)";
|
||||||
|
font_color = "rgb(200, 200, 200)";
|
||||||
|
fade_on_empty = true;
|
||||||
|
fade_timeout = 5000;
|
||||||
|
font_family = "JetBrains Mono Nerd Font Mono";
|
||||||
|
fail_text = "<i>$FAIL <b>$ATTEMPTS</b></i>";
|
||||||
|
position = "0, 200";
|
||||||
|
halign = "center";
|
||||||
|
valign = "bottom";
|
||||||
|
}];
|
||||||
|
label = [{
|
||||||
|
text = "cmd[update:250] date +%X";
|
||||||
|
color = "rgba(255, 255, 255, 0.6)";
|
||||||
|
font_size = "100";
|
||||||
|
font_family = "JetBrains Mono Nerd Font Mono ExtraBold";
|
||||||
|
position = "0, -300";
|
||||||
|
halign = "center";
|
||||||
|
valign = "top";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.swayidle =
|
||||||
|
let
|
||||||
|
hyprlock = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
systemdTarget = "${config.kyouma.graphical.compositor}-session.target";
|
||||||
|
events = [
|
||||||
|
{ event = "before-sleep"; command = hyprlock; }
|
||||||
|
{ event = "lock"; command = hyprlock; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
220
modules/graphical/nixvim.nix
Normal file
|
@ -0,0 +1,220 @@
|
||||||
|
{ config, lib, pkgs, inputs, ... }: {
|
||||||
|
config = lib.mkIf config.kyouma.graphical.enable {
|
||||||
|
home-manager.users.emily.imports = [
|
||||||
|
inputs.nixvim.homeManagerModules.nixvim
|
||||||
|
];
|
||||||
|
home-manager.users.emily.programs.nixvim = {
|
||||||
|
enable = true;
|
||||||
|
extraPlugins = [
|
||||||
|
pkgs.vimPlugins.molokai
|
||||||
|
pkgs.vimPlugins.vim-airline-themes
|
||||||
|
];
|
||||||
|
colorscheme = "molokai";
|
||||||
|
vimAlias = true;
|
||||||
|
highlightOverride.Normal = {
|
||||||
|
ctermbg = "NONE";
|
||||||
|
bg = "NONE";
|
||||||
|
};
|
||||||
|
opts = {
|
||||||
|
number = true;
|
||||||
|
expandtab = true;
|
||||||
|
autoindent = true;
|
||||||
|
mouse = "";
|
||||||
|
encoding = "utf-8";
|
||||||
|
shiftwidth = 2;
|
||||||
|
smartindent = true;
|
||||||
|
tabstop = 2;
|
||||||
|
ignorecase = true;
|
||||||
|
incsearch = true;
|
||||||
|
smartcase = true;
|
||||||
|
};
|
||||||
|
keymaps = [
|
||||||
|
{
|
||||||
|
action = "<cmd>Neotree toggle<CR>";
|
||||||
|
key = "<C-n>";
|
||||||
|
mode = "n";
|
||||||
|
options.silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<C-\\><C-n>";
|
||||||
|
key = "<esc>";
|
||||||
|
mode = "t";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
plugins.cmp = {
|
||||||
|
enable = true;
|
||||||
|
settings.sources = [
|
||||||
|
{ name = "nvim_lsp"; }
|
||||||
|
{ name = "luasnip"; }
|
||||||
|
{ name = "buffer"; }
|
||||||
|
{ name = "nvim_lua"; }
|
||||||
|
{ name = "path"; }
|
||||||
|
];
|
||||||
|
settings.formatting = {
|
||||||
|
fields = [ "abbr" "kind" "menu" ];
|
||||||
|
format = ''
|
||||||
|
function(_, item)
|
||||||
|
local icons = {
|
||||||
|
Namespace = "",
|
||||||
|
Text = "",
|
||||||
|
Method = "",
|
||||||
|
Function = "",
|
||||||
|
Constructor = "",
|
||||||
|
Field = "",
|
||||||
|
Variable = "",
|
||||||
|
Class = "",
|
||||||
|
Interface = "",
|
||||||
|
Module = "",
|
||||||
|
Property = "",
|
||||||
|
Unit = "",
|
||||||
|
Value = "",
|
||||||
|
Enum = "",
|
||||||
|
Keyword = "",
|
||||||
|
Snippet = "",
|
||||||
|
Color = "",
|
||||||
|
File = "",
|
||||||
|
Reference = "",
|
||||||
|
Folder = "",
|
||||||
|
EnumMember = "",
|
||||||
|
Constant = "",
|
||||||
|
Struct = "",
|
||||||
|
Event = "",
|
||||||
|
Operator = "",
|
||||||
|
TypeParameter = "",
|
||||||
|
Table = "",
|
||||||
|
Object = "",
|
||||||
|
Tag = "",
|
||||||
|
Array = "[]",
|
||||||
|
Boolean = "",
|
||||||
|
Number = "",
|
||||||
|
Null = "",
|
||||||
|
String = "",
|
||||||
|
Calendar = "",
|
||||||
|
Watch = "",
|
||||||
|
Package = "",
|
||||||
|
Copilot = "",
|
||||||
|
Codeium = "",
|
||||||
|
TabNine = "",
|
||||||
|
}
|
||||||
|
|
||||||
|
local icon = icons[item.kind] or ""
|
||||||
|
item.kind = string.format("%s %s", icon, item.kind or "")
|
||||||
|
return item
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
settings.snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end";
|
||||||
|
settings.window = {
|
||||||
|
completion = {
|
||||||
|
winhighlight = "FloatBorder:CmpBorder,Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel";
|
||||||
|
scrollbar = false;
|
||||||
|
sidePadding = 0;
|
||||||
|
border = [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ];
|
||||||
|
};
|
||||||
|
documentation = {
|
||||||
|
border = [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ];
|
||||||
|
winhighlight = "FloatBorder:CmpBorder,Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings.mapping = {
|
||||||
|
"<C-n>" = "cmp.mapping.select_next_item()";
|
||||||
|
"<C-p>" = "cmp.mapping.select_prev_item()";
|
||||||
|
"<C-j>" = "cmp.mapping.select_next_item()";
|
||||||
|
"<C-k>" = "cmp.mapping.select_prev_item()";
|
||||||
|
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
|
||||||
|
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||||
|
"<C-Space>" = "cmp.mapping.complete()";
|
||||||
|
"<C-e>" = "cmp.mapping.close()";
|
||||||
|
"<CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true })";
|
||||||
|
"<Tab>" = ''
|
||||||
|
cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif require("luasnip").expand_or_jumpable() then
|
||||||
|
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,{"i","s"})
|
||||||
|
'';
|
||||||
|
"<S-Tab>" = ''
|
||||||
|
cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif require("luasnip").jumpable(-1) then
|
||||||
|
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,{"i","s"})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
plugins.lsp = {
|
||||||
|
enable = true;
|
||||||
|
keymaps.lspBuf = {
|
||||||
|
"K" = "hover";
|
||||||
|
"gd" = "definition";
|
||||||
|
"gD" = "references";
|
||||||
|
"gt" = "type_definition";
|
||||||
|
"gi" = "implementation";
|
||||||
|
};
|
||||||
|
servers = {
|
||||||
|
bashls.enable = true;
|
||||||
|
lua-ls.enable = true;
|
||||||
|
nil-ls = {
|
||||||
|
enable = true;
|
||||||
|
settings.formatting.command = [ "nixfmt" "-w" "140" ];
|
||||||
|
};
|
||||||
|
nixd = {
|
||||||
|
enable = false;
|
||||||
|
settings = {
|
||||||
|
eval.depth = 5;
|
||||||
|
eval.workers = 6;
|
||||||
|
formatting.command = [ "nixfmt" "-w" "140" ];
|
||||||
|
options.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ruff-lsp.enable = true;
|
||||||
|
rust-analyzer = {
|
||||||
|
enable = true;
|
||||||
|
installRustc = true;
|
||||||
|
installCargo = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
plugins.none-ls = {
|
||||||
|
enable = true;
|
||||||
|
sources.diagnostics = {
|
||||||
|
pylint.enable = true;
|
||||||
|
statix.enable = true;
|
||||||
|
};
|
||||||
|
sources.formatting = {
|
||||||
|
nixfmt.enable = true;
|
||||||
|
markdownlint.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
plugins.neo-tree = {
|
||||||
|
enable = true;
|
||||||
|
closeIfLastWindow = true;
|
||||||
|
};
|
||||||
|
plugins.treesitter = {
|
||||||
|
enable = true;
|
||||||
|
nixGrammars = true;
|
||||||
|
settings.indent.enable = true;
|
||||||
|
};
|
||||||
|
plugins.airline.enable = true;
|
||||||
|
plugins.cmp-buffer.enable = true;
|
||||||
|
plugins.cmp-emoji.enable = true;
|
||||||
|
plugins.cmp-nvim-lsp.enable = true;
|
||||||
|
plugins.cmp-path.enable = true;
|
||||||
|
plugins.cmp_luasnip.enable = true;
|
||||||
|
plugins.luasnip.enable = true;
|
||||||
|
plugins.nvim-autopairs.enable = true;
|
||||||
|
plugins.rainbow-delimiters.enable = true;
|
||||||
|
# Broken
|
||||||
|
plugins.rustaceanvim.enable = false;
|
||||||
|
plugins.treesitter-context.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
{ pkgs, ... }: {
|
{ config, lib, pkgs, ... }: {
|
||||||
home-manager.users.emily = {
|
config.home-manager.users.emily = lib.mkIf config.kyouma.graphical.enable {
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
style = ./files/waybar-style.css;
|
style = ./files/waybar-style.css;
|