2 last months
This commit is contained in:
parent
f845745874
commit
15b909473e
63 changed files with 963 additions and 1103 deletions
1
hosts/totsugeki/home-manager/default.nix
Normal file
1
hosts/totsugeki/home-manager/default.nix
Normal file
|
@ -0,0 +1 @@
|
|||
{ ... }: { imports = [ ./desktop ./development ./scripts ]; }
|
36
hosts/totsugeki/home-manager/desktop/default.nix
Normal file
36
hosts/totsugeki/home-manager/desktop/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ config, pkgs, ... }: {
|
||||
imports = [ ./plasma ./firefox.nix ./gtk.nix ./kitty.nix ];
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
gimp
|
||||
fastfetch
|
||||
inkscape
|
||||
libreoffice-qt
|
||||
obs-studio
|
||||
picard
|
||||
protonup-qt
|
||||
kdePackages.ark
|
||||
kdePackages.dolphin
|
||||
kdePackages.dolphin-plugins
|
||||
kdePackages.kio
|
||||
kdePackages.kio-extras
|
||||
kdePackages.kimageformats
|
||||
kdePackages.qtimageformats
|
||||
kdePackages.sddm-kcm
|
||||
mpv
|
||||
noto-fonts-cjk-sans
|
||||
nsxiv
|
||||
osu-lazer-bin
|
||||
playerctl
|
||||
prismlauncher
|
||||
qbittorrent
|
||||
r2modman
|
||||
wl-clipboard
|
||||
element-desktop
|
||||
vesktop
|
||||
];
|
||||
};
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
services.easyeffects.enable = true;
|
||||
xdg.enable = true;
|
||||
}
|
223
hosts/totsugeki/home-manager/desktop/firefox.nix
Normal file
223
hosts/totsugeki/home-manager/desktop/firefox.nix
Normal file
|
@ -0,0 +1,223 @@
|
|||
{ pkgs, config, ... }: {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
profiles.Avery = {
|
||||
isDefault = true;
|
||||
search = {
|
||||
default = "SearXNG";
|
||||
engines = {
|
||||
SearXNG = {
|
||||
urls = [{
|
||||
template = "https://searxng.rcia.dev/search";
|
||||
params = [{
|
||||
name = "q";
|
||||
value = "{searchTerms}";
|
||||
}];
|
||||
icon =
|
||||
"https://searxng.rcia.dev/static/themes/simple/img/favicon.png";
|
||||
}];
|
||||
};
|
||||
Google.metaData.hidden = true;
|
||||
Bing.metaData.hidden = true;
|
||||
DuckDuckGo.metaData.hidden = true;
|
||||
"Wikipedia (en)".metaData.hidden = true;
|
||||
};
|
||||
force = true;
|
||||
order = [ "SearXNG" ];
|
||||
};
|
||||
settings = {
|
||||
"app.normandy.api_url" = "";
|
||||
"app.normandy.enabled" = false;
|
||||
"app.shield.optoutstudies.enabled" = false;
|
||||
"app.update.auto" = false;
|
||||
"beacon.enabled" = false;
|
||||
"breakpad.reportURL" = "";
|
||||
"browser.aboutConfig.showWarning" = false;
|
||||
"browser.cache.offline.enable" = false;
|
||||
"browser.crashReports.unsubmittedCheck.autoSubmit" = false;
|
||||
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
|
||||
"browser.crashReports.unsubmittedCheck.enabled" = false;
|
||||
"browser.disableResetPrompt" = true;
|
||||
"browser.display.use_document_fonts" = 0;
|
||||
"browser.fixup.alternate.enabled" = false;
|
||||
"browser.newtab.preload" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" =
|
||||
false;
|
||||
"browser.newtabpage.enabled" = false;
|
||||
"browser.newtabpage.enhanced" = false;
|
||||
"browser.newtabpage.introShown" = true;
|
||||
"browser.safebrowsing.appRepURL" = "";
|
||||
"browser.safebrowsing.blockedURIs.enabled" = false;
|
||||
"browser.safebrowsing.downloads.enabled" = false;
|
||||
"browser.safebrowsing.downloads.remote.enabled" = false;
|
||||
"browser.safebrowsing.downloads.remote.url" = "";
|
||||
"browser.safebrowsing.enabled" = false;
|
||||
"browser.safebrowsing.malware.enabled" = false;
|
||||
"browser.safebrowsing.phishing.enabled" = false;
|
||||
"browser.selfsupport.url" = "";
|
||||
"browser.send_pings" = false;
|
||||
"browser.sessionstore.privacy_level" = 0;
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
"browser.startup.homepage_override.mstone" = "ignore";
|
||||
"browser.tabs.crashReporting.sendReport" = false;
|
||||
"browser.tabs.firefox-view-next" = false;
|
||||
"browser.urlbar.groupLabels.enabled" = false;
|
||||
"browser.urlbar.quicksuggest.enabled" = false;
|
||||
"browser.urlbar.speculativeConnect.enabled" = false;
|
||||
"browser.urlbar.trimURLs" = false;
|
||||
"browser.uidensity" = 1;
|
||||
"datareporting.healthreport.service.enabled" = false;
|
||||
"datareporting.healthreport.uploadEnabled" = false;
|
||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||
"device.sensors.ambientLight.enabled" = false;
|
||||
"device.sensors.enabled" = false;
|
||||
"device.sensors.motion.enabled" = false;
|
||||
"device.sensors.orientation.enabled" = false;
|
||||
"device.sensors.proximity.enabled" = false;
|
||||
"devtools.theme" = "dark";
|
||||
"dom.battery.enabled" = false;
|
||||
"dom.security.https_only_mode" = true;
|
||||
"dom.security.https_only_mode_ever_enabled" = true;
|
||||
"dom.webaudio.enabled" = true;
|
||||
"experiments.activeExperiment" = false;
|
||||
"experiments.enabled" = false;
|
||||
"experiments.manifest.uri" = "";
|
||||
"experiments.supported" = false;
|
||||
"extensions.getAddons.cache.enabled" = false;
|
||||
"extensions.getAddons.showPane" = false;
|
||||
"extensions.pocket.enabled" = false;
|
||||
"extensions.shield-recipe-client.api_url" = "";
|
||||
"extensions.shield-recipe-client.enabled" = false;
|
||||
"extensions.webservice.discoverURL" = "";
|
||||
"font.name.serif.x-western" = "Inter";
|
||||
"media.autoplay.default" = 2;
|
||||
"media.eme.enabled" = false;
|
||||
"media.gmp-widevinecdm.enabled" = false;
|
||||
"media.navigator.enabled" = false;
|
||||
"media.video_stats.enabled" = false;
|
||||
"network.allow-experiments" = false;
|
||||
"network.captive-portal-service.enabled" = false;
|
||||
"network.cookie.cookieBehavior" = 1;
|
||||
"network.dns.disablePrefetch" = true;
|
||||
"network.dns.disablePrefetchFromHTTPS" = true;
|
||||
"network.dns.echconfig.enabled" = true;
|
||||
"network.dns.use_https_rr_as_altsvc" = true;
|
||||
"network.http.speculative-parallel-limit" = 0;
|
||||
"network.predictor.enable-prefetch" = false;
|
||||
"network.predictor.enabled" = false;
|
||||
"network.prefetch-next" = false;
|
||||
"privacy.donottrackheader.enabled" = true;
|
||||
"privacy.donottrackheader.value" = 1;
|
||||
"privacy.firstparty.isolate" = true;
|
||||
"privacy.globalprivacycontrol.enabled" = true;
|
||||
"privacy.query_stripping.enabled" = true;
|
||||
"privacy.resistFingerprinting" = true;
|
||||
"privacy.resistFingerprinting.letterboxing" = false;
|
||||
"privacy.trackingprotection.cryptomining.enabled" = true;
|
||||
"privacy.trackingprotection.enabled" = true;
|
||||
"privacy.trackingprotection.fingerprinting.enabled" = true;
|
||||
"privacy.trackingprotection.pbmode.enabled" = true;
|
||||
"privacy.usercontext.about_newtab_segregation.enabled" = true;
|
||||
"security.ssl.disable_session_identifiers" = true;
|
||||
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" =
|
||||
false;
|
||||
"signon.autofillForms" = false;
|
||||
"toolkit.telemetry.archive.enabled" = false;
|
||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||
"toolkit.telemetry.cachedClientID" = "";
|
||||
"toolkit.telemetry.enabled" = false;
|
||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||
"toolkit.telemetry.prompted" = 2;
|
||||
"toolkit.telemetry.rejected" = true;
|
||||
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
||||
"toolkit.telemetry.server" = "";
|
||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||
"toolkit.telemetry.unified" = false;
|
||||
"toolkit.telemetry.unifiedIsOptIn" = false;
|
||||
"toolkit.telemetry.updatePing.enabled" = false;
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
"svg.context-properties.content.enabled" = true;
|
||||
"browser.compactmode.show" = true;
|
||||
"browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar" =
|
||||
false;
|
||||
"layout.css.has-selector.enabled" = true;
|
||||
"userChrome.tab.connect_to_window" = true;
|
||||
"userChrome.tab.color_like_toolbar" = true;
|
||||
"userChrome.tab.lepton_like_padding" = true;
|
||||
"userChrome.tab.photon_like_padding" = false;
|
||||
"userChrome.tab.dynamic_separator" = true;
|
||||
"userChrome.tab.static_separator" = false;
|
||||
"userChrome.tab.static_separator.selected_accent" = false;
|
||||
"userChrome.tab.bar_separator" = false;
|
||||
"userChrome.tab.newtab_button_like_tab" = true;
|
||||
"userChrome.tab.newtab_button_smaller" = false;
|
||||
"userChrome.tab.newtab_button_proton" = false;
|
||||
"userChrome.icon.panel_full" = true;
|
||||
"userChrome.icon.panel_photon" = false;
|
||||
"userChrome.tab.box_shadow" = true;
|
||||
"userChrome.tab.bottom_rounded_corner" = true;
|
||||
"userChrome.tab.photon_like_contextline" = false;
|
||||
"userChrome.rounding.square_tab" = false;
|
||||
"userChrome.compatibility.theme" = true;
|
||||
"userChrome.compatibility.os" = true;
|
||||
"userChrome.theme.built_in_contrast" = true;
|
||||
"userChrome.theme.system_default" = true;
|
||||
"userChrome.theme.proton_color" = true;
|
||||
"userChrome.theme.proton_chrome" = true;
|
||||
"userChrome.theme.fully_color" = true;
|
||||
"userChrome.theme.fully_dark" = true;
|
||||
"userChrome.decoration.cursor" = true;
|
||||
"userChrome.decoration.field_border" = true;
|
||||
"userChrome.decoration.download_panel" = true;
|
||||
"userChrome.decoration.animate" = true;
|
||||
"userChrome.padding.tabbar_width" = true;
|
||||
"userChrome.padding.tabbar_height" = true;
|
||||
"userChrome.padding.toolbar_button" = true;
|
||||
"userChrome.padding.navbar_width" = true;
|
||||
"userChrome.padding.urlbar" = true;
|
||||
"userChrome.padding.bookmarkbar" = true;
|
||||
"userChrome.padding.infobar" = true;
|
||||
"userChrome.padding.menu" = true;
|
||||
"userChrome.padding.bookmark_menu" = true;
|
||||
"userChrome.padding.global_menubar" = true;
|
||||
"userChrome.padding.panel" = true;
|
||||
"userChrome.padding.popup_panel" = true;
|
||||
"userChrome.tab.multi_selected" = true;
|
||||
"userChrome.tab.unloaded" = true;
|
||||
"userChrome.tab.letters_cleary" = true;
|
||||
"userChrome.tab.close_button_at_hover" = true;
|
||||
"userChrome.tab.sound_hide_label" = true;
|
||||
"userChrome.tab.sound_with_favicons" = true;
|
||||
"userChrome.tab.pip" = true;
|
||||
"userChrome.tab.container" = true;
|
||||
"userChrome.tab.crashed" = true;
|
||||
"userChrome.fullscreen.overlap" = true;
|
||||
"userChrome.fullscreen.show_bookmarkbar" = true;
|
||||
"userChrome.icon.library" = true;
|
||||
"userChrome.icon.panel" = true;
|
||||
"userChrome.icon.menu" = true;
|
||||
"userChrome.icon.context_menu" = true;
|
||||
"userChrome.icon.global_menu" = true;
|
||||
"userChrome.icon.global_menubar" = true;
|
||||
"userContent.player.ui" = true;
|
||||
"userContent.player.icon" = true;
|
||||
"userContent.player.noaudio" = true;
|
||||
"userContent.player.size" = true;
|
||||
"userContent.player.click_to_play" = true;
|
||||
"userContent.player.animate" = true;
|
||||
"userContent.newTab.full_icon" = true;
|
||||
"userContent.newTab.animate" = true;
|
||||
"userContent.newTab.pocket_to_last" = true;
|
||||
"userContent.newTab.searchbar" = true;
|
||||
"userContent.page.field_border" = true;
|
||||
"userContent.page.illustration" = true;
|
||||
"userContent.page.proton_color" = true;
|
||||
"userContent.page.dark_mode" = true;
|
||||
"userContent.page.proton" = true;
|
||||
"browser.urlbar.suggest.calculator" = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
22
hosts/totsugeki/home-manager/desktop/gtk.nix
Normal file
22
hosts/totsugeki/home-manager/desktop/gtk.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ pkgs, ... }: {
|
||||
gtk = {
|
||||
enable = true;
|
||||
iconTheme = {
|
||||
package = pkgs.kora-icon-theme;
|
||||
name = "kora";
|
||||
};
|
||||
font = {
|
||||
package = pkgs.inter;
|
||||
name = "Inter";
|
||||
size = 10;
|
||||
};
|
||||
theme = {
|
||||
name = "Catppuccin-Mocha-Compact-Mauve-Dark";
|
||||
package = pkgs.catppuccin-gtk.override {
|
||||
accents = [ "mauve" ];
|
||||
size = "compact";
|
||||
variant = "mocha";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
38
hosts/totsugeki/home-manager/desktop/kitty.nix
Normal file
38
hosts/totsugeki/home-manager/desktop/kitty.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{ ... }: {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
font = {
|
||||
name = "Iosevka Nerd Font";
|
||||
size = 12;
|
||||
};
|
||||
keybindings = {
|
||||
"ctrl+alt+1" = "goto_tab 1";
|
||||
"ctrl+alt+2" = "goto_tab 2";
|
||||
"ctrl+alt+3" = "goto_tab 3";
|
||||
"ctrl+alt+4" = "goto_tab 4";
|
||||
"ctrl+alt+5" = "goto_tab 5";
|
||||
"ctrl+alt+6" = "goto_tab 6";
|
||||
"ctrl+alt+7" = "goto_tab 7";
|
||||
"ctrl+alt+8" = "goto_tab 8";
|
||||
"ctrl+alt+9" = "goto_tab 9";
|
||||
};
|
||||
settings = {
|
||||
"background_opacity" = "0.90";
|
||||
"dynamic_background_opacity" = true;
|
||||
"force_ltr" = "yes";
|
||||
"disable_ligatures" = "never";
|
||||
"cursor_shape" = "beam";
|
||||
"scrollback_lines" = 8000;
|
||||
"enable_audio_bell" = "no";
|
||||
"window_padding_width" = 8;
|
||||
"tab_bar_min_tabs" = 2;
|
||||
"tab_bar_edge" = "bottom";
|
||||
"tab_bar_style" = "powerline";
|
||||
"tab_powerline_style" = "round";
|
||||
"tab_title_template" =
|
||||
"{title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}";
|
||||
"background" = "#1E1E2F";
|
||||
};
|
||||
theme = "Catppuccin-Mocha";
|
||||
};
|
||||
}
|
16
hosts/totsugeki/home-manager/desktop/plasma/default.nix
Normal file
16
hosts/totsugeki/home-manager/desktop/plasma/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ ... }: {
|
||||
imports = [ ./input.nix ./hotkeys.nix ./krohnkite.nix ./theme.nix ];
|
||||
programs.plasma = {
|
||||
enable = true;
|
||||
overrideConfig = true;
|
||||
workspace.clickItemTo = "open";
|
||||
kwin = {
|
||||
virtualDesktops = {
|
||||
rows = 1;
|
||||
number = 10;
|
||||
};
|
||||
effects.desktopSwitching.animation = "slide";
|
||||
};
|
||||
configFile = { "kded5rc" = { Module-gtkconfig.autoload = false; }; };
|
||||
};
|
||||
}
|
27
hosts/totsugeki/home-manager/desktop/plasma/hotkeys.nix
Normal file
27
hosts/totsugeki/home-manager/desktop/plasma/hotkeys.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ ... }: {
|
||||
programs.plasma.shortcuts = {
|
||||
kwin = {
|
||||
"Switch to Desktop 1" = "Meta+1";
|
||||
"Window to Desktop 1" = "Meta+!";
|
||||
"Switch to Desktop 2" = "Meta+2";
|
||||
"Window to Desktop 2" = ''Meta+"'';
|
||||
"Switch to Desktop 3" = "Meta+3";
|
||||
"Window to Desktop 3" = "Meta+·";
|
||||
"Switch to Desktop 4" = "Meta+4";
|
||||
"Window to Desktop 4" = "Meta+$";
|
||||
"Switch to Desktop 5" = "Meta+5";
|
||||
"Window to Desktop 5" = "Meta+%";
|
||||
"Switch to Desktop 6" = "Meta+6";
|
||||
"Window to Desktop 6" = "Meta+&";
|
||||
"Switch to Desktop 7" = "Meta+7";
|
||||
"Window to Desktop 7" = "Meta+/";
|
||||
"Switch to Desktop 8" = "Meta+8";
|
||||
"Window to Desktop 8" = "Meta+(";
|
||||
"Switch to Desktop 9" = "Meta+9";
|
||||
"Window to Desktop 9" = "Meta+)";
|
||||
"Switch to Desktop 10" = "Meta+0";
|
||||
"Window to Desktop 10" = "Meta+=";
|
||||
};
|
||||
"services/kitty.desktop"."_launch" = "Ctrl+Alt+T";
|
||||
};
|
||||
}
|
15
hosts/totsugeki/home-manager/desktop/plasma/input.nix
Normal file
15
hosts/totsugeki/home-manager/desktop/plasma/input.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ ... }: {
|
||||
programs.plasma.configFile = {
|
||||
kcminputrc."Libinput/9610/54/Glorious Model O" = {
|
||||
PointerAcceleration = -0.4;
|
||||
PointerAccelerationProfile = 1;
|
||||
};
|
||||
kxkbrc.Layout = {
|
||||
LayoutList = "es";
|
||||
Use = true;
|
||||
VariantList = "dvorak";
|
||||
Options = "caps:menu";
|
||||
ResetOldOptions = true;
|
||||
};
|
||||
};
|
||||
}
|
23
hosts/totsugeki/home-manager/desktop/plasma/krohnkite.nix
Normal file
23
hosts/totsugeki/home-manager/desktop/plasma/krohnkite.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
# TODO: find a way to automatically install krohnkite
|
||||
{ ... }: {
|
||||
programs.plasma.configFile.kwinrc = {
|
||||
Plugins.krohnkiteEnabled = true;
|
||||
Script-krohnkite = {
|
||||
enableMonocleLayout = false;
|
||||
enableSpreadLayout = false;
|
||||
enableStairLayout = false;
|
||||
enableThreeColumnLayout = false;
|
||||
enableTileLayout = false;
|
||||
ignoreClass = "krunner,yakuake,spectacle,kded5,plasmashell";
|
||||
layoutPerActivity = false;
|
||||
layoutPerDesktop = false;
|
||||
limitTileWidthRatio = 0.6;
|
||||
noTileBorder = true;
|
||||
screenGapBottom = 20;
|
||||
screenGapLeft = 8;
|
||||
screenGapRight = 8;
|
||||
screenGapTop = 8;
|
||||
tileLayoutGap = 2;
|
||||
};
|
||||
};
|
||||
}
|
59
hosts/totsugeki/home-manager/desktop/plasma/theme.nix
Normal file
59
hosts/totsugeki/home-manager/desktop/plasma/theme.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
{ pkgs, ... }:
|
||||
let cursorThemeName = "catppuccin-mocha-mauve-cursors";
|
||||
in {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
(catppuccin-kde.override {
|
||||
flavour = [ "mocha" ];
|
||||
accents = [ "mauve" ];
|
||||
})
|
||||
catppuccin-cursors.mochaMauve
|
||||
];
|
||||
pointerCursor = {
|
||||
gtk.enable = true;
|
||||
package = pkgs.catppuccin-cursors.mochaMauve;
|
||||
name = cursorThemeName;
|
||||
size = 32;
|
||||
};
|
||||
};
|
||||
programs.plasma = {
|
||||
fonts = {
|
||||
general = {
|
||||
family = "Inter Display";
|
||||
pointSize = 11;
|
||||
weight = "medium";
|
||||
};
|
||||
fixedWidth = {
|
||||
family = "Iosevka Nerd Font";
|
||||
pointSize = 12;
|
||||
};
|
||||
small = {
|
||||
family = "Inter Display";
|
||||
pointSize = 8;
|
||||
};
|
||||
toolbar = {
|
||||
family = "Inter Display";
|
||||
pointSize = 11;
|
||||
weight = "medium";
|
||||
};
|
||||
menu = {
|
||||
family = "Inter Display";
|
||||
pointSize = 11;
|
||||
weight = "medium";
|
||||
};
|
||||
windowTitle = {
|
||||
family = "Inter Display";
|
||||
pointSize = 11;
|
||||
weight = "medium";
|
||||
};
|
||||
};
|
||||
workspace = {
|
||||
colorScheme = "CatppuccinMochaMauve";
|
||||
lookAndFeel = "Catppuccin-Mocha-Mauve";
|
||||
cursor = {
|
||||
theme = cursorThemeName;
|
||||
size = 32;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
59
hosts/totsugeki/home-manager/development/default.nix
Normal file
59
hosts/totsugeki/home-manager/development/default.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
{ inputs, pkgs, ... }: {
|
||||
imports = [ ./nixvim ];
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
git-credential-manager
|
||||
gnupg
|
||||
pass
|
||||
# dotnet-sdk_7
|
||||
dotnet-sdk_8 # tModLoader
|
||||
unityhub
|
||||
];
|
||||
};
|
||||
programs = {
|
||||
git = {
|
||||
enable = true;
|
||||
extraConfig = {
|
||||
credential = {
|
||||
credentialStore = "gpg";
|
||||
helper = "${pkgs.git-credential-manager}/bin/git-credential-manager";
|
||||
"https://codeberg.org".provider = "generic";
|
||||
"https://git.rcia.dev".provider = "generic";
|
||||
};
|
||||
merge.tool = "nvim -d";
|
||||
};
|
||||
signing = {
|
||||
key = "B684FD451B692E04";
|
||||
signByDefault = true;
|
||||
};
|
||||
userEmail = "aveeryy@protonmail.com";
|
||||
userName = "Avery";
|
||||
};
|
||||
lazygit = {
|
||||
enable = true;
|
||||
settings = {
|
||||
gui.theme = {
|
||||
activeBorderColor = [ "#89b4fa" "bold" ];
|
||||
inactiveBorderColor = [ "#a6adc8" ];
|
||||
optionsTextColor = [ "#89b4fa" ];
|
||||
selectedLineBgColor = [ "#313244" ];
|
||||
selectedRangeBgColor = [ "#313244" ];
|
||||
cherryPickedCommitBgColor = [ "#45475a" ];
|
||||
cherryPickedCommitFgColor = [ "#89b4fa" ];
|
||||
unstagedChangesColor = [ "#f38ba8" ];
|
||||
defaultFgColor = [ "#cdd6f4" ];
|
||||
searchingActiveBorderColor = [ "#f9e2af" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
services = {
|
||||
gpg-agent = {
|
||||
defaultCacheTtl = 3600;
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
enableZshIntegration = true;
|
||||
pinentryPackage = pkgs.pinentry-qt;
|
||||
};
|
||||
};
|
||||
}
|
104
hosts/totsugeki/home-manager/development/nixvim/completion.nix
Normal file
104
hosts/totsugeki/home-manager/development/nixvim/completion.nix
Normal file
|
@ -0,0 +1,104 @@
|
|||
{ inputs, lib, ... }: {
|
||||
programs.nixvim = {
|
||||
extraConfigLua = ''
|
||||
function has_words_before()
|
||||
unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0
|
||||
and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
function leave_snippet()
|
||||
if
|
||||
((vim.v.event.old_mode == "s" and vim.v.event.new_mode == "n") or vim.v.event.old_mode == "i")
|
||||
and require("luasnip").session.current_nodes[vim.api.nvim_get_current_buf()]
|
||||
and not require("luasnip").session.jump_active
|
||||
then
|
||||
require("luasnip").unlink_current()
|
||||
end
|
||||
end
|
||||
|
||||
-- stop snippets when you leave to normal mode
|
||||
vim.api.nvim_command([[
|
||||
autocmd ModeChanged * lua leave_snippet()
|
||||
]])
|
||||
'';
|
||||
plugins = {
|
||||
cmp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
formatting.format = lib.mkForce ''
|
||||
function(entry, vim_item)
|
||||
if vim.tbl_contains({ "path" }, entry.source.name) then
|
||||
local icon, hl_group =
|
||||
require("nvim-web-devicons").get_icon(entry:get_completion_item().label)
|
||||
if icon then
|
||||
vim_item.kind = icon
|
||||
vim_item.kind_hl_group = hl_group
|
||||
return vim_item
|
||||
end
|
||||
end
|
||||
return require("lspkind").cmp_format({ with_text = true })(entry, vim_item)
|
||||
end
|
||||
'';
|
||||
mapping = {
|
||||
"<CR>" = "cmp.mapping.confirm({ select = false })";
|
||||
"<Tab>" = ''
|
||||
cmp.mapping(
|
||||
function(callback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif require("luasnip").expand_or_locally_jumpable() then
|
||||
require("luasnip").expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
callback()
|
||||
end
|
||||
end
|
||||
, {"i", "s"})
|
||||
'';
|
||||
"<S-Tab>" = ''
|
||||
cmp.mapping(
|
||||
function(callback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif require("luasnip").jumpable(-1) then
|
||||
require("luasnip").jump(-1)
|
||||
else
|
||||
callback()
|
||||
end
|
||||
end
|
||||
, {"i", "s"})
|
||||
'';
|
||||
};
|
||||
snippet.expand = ''
|
||||
function(args)
|
||||
require("luasnip").lsp_expand(args.body)
|
||||
end
|
||||
'';
|
||||
sources = [
|
||||
{
|
||||
name = "luasnip";
|
||||
priority = 40;
|
||||
}
|
||||
{
|
||||
name = "nvim_lsp";
|
||||
priority = 30;
|
||||
entry_filter = ''
|
||||
function(entry, _)
|
||||
return entry:get_kind() ~= require("cmp").lsp.CompletionItemKind.Text
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
lspkind = { enable = true; };
|
||||
luasnip = {
|
||||
enable = true;
|
||||
fromVscode = [ { } ];
|
||||
};
|
||||
friendly-snippets.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
43
hosts/totsugeki/home-manager/development/nixvim/default.nix
Normal file
43
hosts/totsugeki/home-manager/development/nixvim/default.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ inputs, pkgs, ... }: {
|
||||
imports = [
|
||||
./completion.nix
|
||||
./lsp.nix
|
||||
./lualine.nix
|
||||
./neo-tree.nix
|
||||
./none-ls.nix
|
||||
./treesitter.nix
|
||||
];
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings = {
|
||||
flavour = "mocha";
|
||||
no_italic = true;
|
||||
integrations = {
|
||||
cmp = true;
|
||||
neotree = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
globals.mapleader = " ";
|
||||
|
||||
opts = {
|
||||
number = true;
|
||||
cursorline = true;
|
||||
tabstop = 4;
|
||||
shiftwidth = 4;
|
||||
expandtab = true;
|
||||
ttyfast = true;
|
||||
wrap = false;
|
||||
mousemoveevent = true;
|
||||
signcolumn = "yes";
|
||||
};
|
||||
|
||||
plugins.nvim-autopairs.enable = true;
|
||||
|
||||
extraPlugins = with pkgs.vimPlugins; [ nvim-web-devicons ];
|
||||
};
|
||||
}
|
17
hosts/totsugeki/home-manager/development/nixvim/lsp.nix
Normal file
17
hosts/totsugeki/home-manager/development/nixvim/lsp.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ inputs, ... }: {
|
||||
programs.nixvim.plugins = {
|
||||
lsp = {
|
||||
enable = true;
|
||||
|
||||
servers = {
|
||||
pyright.enable = true;
|
||||
rust-analyzer = {
|
||||
enable = true;
|
||||
installCargo = false;
|
||||
installRustc = false;
|
||||
};
|
||||
svelte.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
14
hosts/totsugeki/home-manager/development/nixvim/lualine.nix
Normal file
14
hosts/totsugeki/home-manager/development/nixvim/lualine.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ ... }: {
|
||||
programs.nixvim.plugins.lualine = {
|
||||
enable = true;
|
||||
componentSeparators = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
sectionSeparators = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
disabledFiletypes.statusline = [ "neo-tree" ];
|
||||
};
|
||||
}
|
161
hosts/totsugeki/home-manager/development/nixvim/neo-tree.nix
Normal file
161
hosts/totsugeki/home-manager/development/nixvim/neo-tree.nix
Normal file
|
@ -0,0 +1,161 @@
|
|||
{ ... }: {
|
||||
programs.nixvim = {
|
||||
keymaps = [
|
||||
{
|
||||
action = "<cmd>Neotree toggle<CR>";
|
||||
key = "<leader>fi";
|
||||
}
|
||||
];
|
||||
plugins.neo-tree = {
|
||||
enable = true;
|
||||
closeIfLastWindow = true;
|
||||
enableGitStatus = true;
|
||||
enableDiagnostics = true;
|
||||
sourceSelector = {
|
||||
winbar = true;
|
||||
statusline = false;
|
||||
tabsLayout = "equal";
|
||||
sources = [
|
||||
{ source = "filesystem"; displayName = " Archivos "; }
|
||||
];
|
||||
};
|
||||
defaultComponentConfigs = {
|
||||
container = {
|
||||
enableCharacterFade = true;
|
||||
};
|
||||
indent = {
|
||||
indentSize = 2;
|
||||
padding = 1;
|
||||
withMarkers = true;
|
||||
indentMarker = "│";
|
||||
lastIndentMarker = "└";
|
||||
highlight = "NeoTreeIndentMarker";
|
||||
withExpanders = true;
|
||||
expanderCollapsed = "";
|
||||
expanderExpanded = "";
|
||||
expanderHighlight = "NeoTreeExpander";
|
||||
};
|
||||
icon = {
|
||||
folderClosed = "";
|
||||
folderOpen = "";
|
||||
folderEmpty = "";
|
||||
default = " ";
|
||||
highlight = "NeoTreeFileIcon";
|
||||
};
|
||||
modified = {
|
||||
symbol = "[+]";
|
||||
highlight = "NeoTreeModified";
|
||||
};
|
||||
name = {
|
||||
trailingSlash = false;
|
||||
useGitStatusColors = true;
|
||||
highlight = "NeoTreeFileName";
|
||||
};
|
||||
gitStatus = {
|
||||
symbols = {
|
||||
added = "";
|
||||
modified = "";
|
||||
deleted = "";
|
||||
renamed = "";
|
||||
untracked = "";
|
||||
ignored = "";
|
||||
unstaged = "U";
|
||||
staged = "";
|
||||
conflict = "";
|
||||
};
|
||||
};
|
||||
diagnostics = {
|
||||
symbols = {
|
||||
error = "";
|
||||
warn = "";
|
||||
hint = "";
|
||||
info = "";
|
||||
};
|
||||
highlights = {
|
||||
hint = "DiagnosticSignHint";
|
||||
info = "DiagnosticSignInfo";
|
||||
warn = "DiagnosticSignWarn";
|
||||
error = "DiagnosticSignError";
|
||||
};
|
||||
};
|
||||
};
|
||||
window = {
|
||||
position = "left";
|
||||
width = 40;
|
||||
mappingOptions = {
|
||||
noremap = true;
|
||||
nowait = true;
|
||||
};
|
||||
};
|
||||
filesystem = {
|
||||
bindToCwd = true;
|
||||
filteredItems = {
|
||||
visible = false;
|
||||
hideDotfiles = false;
|
||||
hideGitignored = false;
|
||||
hideByName = [
|
||||
"nodeModules"
|
||||
];
|
||||
};
|
||||
groupEmptyDirs = false;
|
||||
useLibuvFileWatcher = true;
|
||||
};
|
||||
buffers = {
|
||||
groupEmptyDirs = true;
|
||||
};
|
||||
renderers = {
|
||||
directory = [
|
||||
"indent"
|
||||
"icon"
|
||||
"current_filter"
|
||||
{
|
||||
name = "container";
|
||||
content = [
|
||||
{
|
||||
name = "name";
|
||||
zindex = 10;
|
||||
}
|
||||
{
|
||||
name = "symlink_target";
|
||||
zindex = 10;
|
||||
highlight = "NeoTreeSymbolicLinkTarget";
|
||||
}
|
||||
{
|
||||
name = "clipboard";
|
||||
zindex = 10;
|
||||
}
|
||||
{
|
||||
name = "diagnostics";
|
||||
errorsOnly = true;
|
||||
zindex = 20;
|
||||
align = "right";
|
||||
hideWhenExpanded = false;
|
||||
}
|
||||
{
|
||||
name = "git_status";
|
||||
zindex = 10;
|
||||
align = "right";
|
||||
hideWhenExpanded = true;
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
file = [
|
||||
"indent"
|
||||
"icon"
|
||||
{
|
||||
name = "container";
|
||||
content = [
|
||||
{ name = "name"; zindex = 10; }
|
||||
{ name = "clipboard"; zindex = 10;}
|
||||
{ name = "bufnr"; zindex = 10;}
|
||||
{ name = "modified"; zindex = 20; align = "right";}
|
||||
{ name = "diagnostics"; zindex = 20; align = "right";}
|
||||
{ name = "git_status"; zindex = 15; align = "right";}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
31
hosts/totsugeki/home-manager/development/nixvim/none-ls.nix
Normal file
31
hosts/totsugeki/home-manager/development/nixvim/none-ls.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ ... }: {
|
||||
programs.nixvim.plugins.none-ls = {
|
||||
enable = true;
|
||||
onAttach = ''
|
||||
function(client, bufnr)
|
||||
if client.supports_method("textDocument/formatting") then
|
||||
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
group = augroup,
|
||||
buffer = bufnr,
|
||||
callback = function()
|
||||
vim.lsp.buf.format({ async = false })
|
||||
end,
|
||||
})
|
||||
end
|
||||
end
|
||||
'';
|
||||
sources = {
|
||||
formatting = {
|
||||
black.enable = true;
|
||||
nixfmt.enable = true;
|
||||
prettier = {
|
||||
enable = true;
|
||||
withArgs = ''
|
||||
{extra_filetypes = {"svelte"}}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{ ... }: {
|
||||
programs.nixvim.plugins.treesitter = {
|
||||
enable = true;
|
||||
indent = true;
|
||||
nixvimInjections = true;
|
||||
};
|
||||
}
|
6
hosts/totsugeki/home-manager/scripts/default.nix
Normal file
6
hosts/totsugeki/home-manager/scripts/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
(import ./play-on-soundboard.nix { inherit pkgs; })
|
||||
(import ./setup-soundboard.nix { inherit pkgs; })
|
||||
];
|
||||
}
|
16
hosts/totsugeki/home-manager/scripts/play-on-soundboard.nix
Normal file
16
hosts/totsugeki/home-manager/scripts/play-on-soundboard.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ pkgs }:
|
||||
|
||||
pkgs.writeShellApplication {
|
||||
name = "play-on-soundboard";
|
||||
runtimeInputs = with pkgs; [ mpv ];
|
||||
text = ''
|
||||
if [ ! -f "/run/user/$UID/soundboard.init" ]; then
|
||||
setup-soundboard
|
||||
fi
|
||||
mpv \
|
||||
--no-video\
|
||||
--audio-device=pipewire/Soundboard\
|
||||
--audio-client-name="Soundboard"\
|
||||
"$@"
|
||||
'';
|
||||
}
|
13
hosts/totsugeki/home-manager/scripts/setup-soundboard.nix
Normal file
13
hosts/totsugeki/home-manager/scripts/setup-soundboard.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ pkgs }:
|
||||
|
||||
pkgs.writeShellApplication {
|
||||
name = "setup-soundboard";
|
||||
text = ''
|
||||
touch "/run/user/$UID/soundboard.init"
|
||||
pw-cli create-node adapter '{ factory.name=support.null-audio-sink node.name="Soundboard" node.description="Soundboard" media.class=Audio/Sink object.linger=true audio.position=[FL FR] }'
|
||||
pw-link Soundboard:monitor_FL easyeffects_source:input_FL
|
||||
pw-link Soundboard:monitor_FR easyeffects_source:input_FR
|
||||
pw-link Soundboard:monitor_FL easyeffects_sink:playback_FL
|
||||
pw-link Soundboard:monitor_FR easyeffects_sink:playback_FR
|
||||
'';
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue