graphical: Move config to a module

This commit is contained in:
emily 2024-09-10 12:02:18 +02:00
parent bd246c4022
commit 1b2c329422
Signed by: emily
GPG key ID: F6F4C66207FCF995
38 changed files with 534 additions and 502 deletions

View file

@ -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

View file

@ -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 ];

View file

@ -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";
};
};
}

View file

@ -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;
};
}

View file

@ -1,6 +1,7 @@
{ ... }: { { ... }: {
imports = [ imports = [
./deployment ./deployment
./graphical
./machine-type ./machine-type
./nginx ./nginx
./update-nixfiles ./update-nixfiles

View 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";
};
};
};
}

View file

@ -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 {

View file

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View file

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View file

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -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"
]; ];

View 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; }
];
};
};
}

View 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;
};
};
}

View file

@ -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;