1
0
Fork 0

Initial configuration

This commit is contained in:
Avery 2024-03-18 23:39:38 +01:00
commit 294fd9dcf3
Signed by: Avery
GPG key ID: B684FD451B692E04
35 changed files with 5369 additions and 0 deletions

19
common/home.nix Normal file
View file

@ -0,0 +1,19 @@
{
pkgs,
config,
inputs,
...
}: {
home = {
username = "avery";
homeDirectory = "/home/avery";
stateVersion = "24.05";
packages = with pkgs; [
python3
rclone
xdg-user-dirs
xdg-utils
];
};
programs.home-manager.enable = true;
}

50
common/zsh/default.nix Normal file
View file

@ -0,0 +1,50 @@
{ config, pkgs, ...}:
let
normalTheme = ./powerline10k/p10k.zsh;
ttyTheme = ./powerline10k/p10k-tty.zsh;
in {
programs.zsh = {
enable = true;
initExtra = ''
bindkey "^[OA" history-beginning-search-backward-end
bindkey "^[OB" history-beginning-search-forward-end
bindkey "^r" history-incremental-search-backward
zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST
zstyle ':completion:*' menu select=1 _complete _ignored _approximate
zstyle ':completion:*' verbose yes
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format 'No matches for: %d'
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
zstyle ':completion:*' group-name \'\'
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
if zmodload zsh/terminfo && (( terminfo[colors] >= 256 )); then
[[ ! -f ${normalTheme} ]] || source ${normalTheme}
else
[[ ! -f ${ttyTheme} ]] || source ${ttyTheme}
fi
fastfetch
'';
initExtraFirst = ''
setopt AUTO_PUSHD
setopt SHARE_HISTORY
setopt MENUCOMPLETE
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
'';
history.path = "${config.xdg.dataHome}/zhistory";
plugins = [
{
name = "powerlevel10k";
src = pkgs.zsh-powerlevel10k;
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
}
];
syntaxHighlighting.enable = true;
};
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

306
flake.lock generated Normal file
View file

@ -0,0 +1,306 @@
{
"nodes": {
"devshell": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1710156081,
"narHash": "sha256-4PMY6aumJi5dLFjBzF5O4flKXmadMNq3AGUHKYfchh0=",
"owner": "numtide",
"repo": "devshell",
"rev": "bc68b058dc7e6d4d6befc4ec6c60082b6e844b7d",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-compat": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709336216,
"narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"nixvim",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1703887061,
"narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1710532761,
"narHash": "sha256-SUXGZNrXX05YA9G6EmgupxhOr3swI1gcxLUeDMUhrEY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "206f457fffdb9a73596a4cb2211a471bd305243d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1710281778,
"narHash": "sha256-bvWr9vvBrAxb44kHM3H3cY/uQg+4pYP1BM/Nu3e/7V8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "49a266d2ca59df8a03249550e73a54626181b65d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1710281379,
"narHash": "sha256-uFo9hxt982L3nFJeweW4Gip2esiGrIQlbvEGrNTh4AY=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "d9ea313bc4851670dc99c5cc979cb79750e7d670",
"type": "github"
},
"original": {
"owner": "lnl7",
"repo": "nix-darwin",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1710451336,
"narHash": "sha256-pP86Pcfu3BrAvRO7R64x7hs+GaQrjFes+mEPowCfkxY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d691274a972b3165335d261cc4671335f5c67de9",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"home-manager": "home-manager_2",
"nix-darwin": "nix-darwin",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
"lastModified": 1710634405,
"narHash": "sha256-e+EHQGqqjpvkln6vYmiAcafFKbTaze3XF7DEjDZyXGY=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "939530edca29b44e65d8bd606ef3485346510ebe",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_2",
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1708018599,
"narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"nixvim": "nixvim"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

47
flake.nix Normal file
View file

@ -0,0 +1,47 @@
{
description = "System configurations";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, nixvim }@inputs: {
nixosConfigurations = {
totsugeki = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# ./common/nixos.nix
./hosts/totsugeki/nixos.nix
home-manager.nixosModules.home-manager
{
home-manager.useUserPackages = true;
home-manager.users.avery = {
imports = [
nixvim.homeManagerModules.nixvim
./common/home.nix
./common/zsh
./hosts/totsugeki/desktop
./hosts/totsugeki/development
];
};
}
];
};
greatyamada = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# ./common/nixos.nix
./hosts/greatyamada/nixos.nix
];
};
};
};
}

View file

@ -0,0 +1 @@

View file

View file

@ -0,0 +1,56 @@
{ config, pkgs, ... }: {
imports = [
./dunst.nix
./firefox.nix
./gtk.nix
./hyprland.nix
./kitty.nix
./qt.nix
./rofi.nix
./waybar.nix
];
home = {
packages = with pkgs; [
gimp
fastfetch
inkscape
libreoffice-qt
libsForQt5.qt5ct
obs-studio
picard
protonup-qt
grim
libsForQt5.ark
libsForQt5.dolphin
libsForQt5.dolphin-plugins
libsForQt5.kio
libsForQt5.kio-extras
libsForQt5.kimageformats
libsForQt5.qt5.qtimageformats
mpv
noto-fonts-cjk-sans
nsxiv
pamixer
playerctl
qbittorrent
r2modman
slurp
swww
wl-clipboard
(import ./scripts/colorpicker.nix { inherit pkgs; })
(import ./scripts/currently-playing.nix { inherit pkgs; })
(pkgs.buildEnv {
name = "desktop-scripts";
paths = [ ./scripts_legacy ];
})
];
pointerCursor = {
gtk.enable = true;
package = pkgs.phinger-cursors;
name = "phinger-cursors";
size = 32;
};
};
services.easyeffects.enable = true;
xdg.enable = true;
}

View file

@ -0,0 +1,31 @@
{ ... }: {
services.dunst = {
enable = true;
settings = {
global = {
timeout = 3;
corner_radius = 12;
frame_width = 2;
font = "Iosevka Nerd Font 10";
format = "<span font='Iosevka Nerd Font 12'><b>%s</b></span>\n%b";
icon_position = "left";
max_icon_size = 48;
icon_corner_radius = 4;
origin = "bottom-right";
offset = "8x8";
width = "(100, 400)";
background = "#11111b";
foreground = "#cdd6f4";
frame_color = "#cba6f7";
highlight = "#cba6f7";
separator_color = "frame";
progress_bar = true;
progress_bar_corner_radius = 4;
};
volumectl = {
appname = "volumectl";
alignment = "center";
};
};
};
}

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

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

View file

@ -0,0 +1,180 @@
{ config, pkgs, ... }: {
home.packages = with pkgs; [ hyprpicker hyprlock ];
wayland.windowManager.hyprland = {
enable = true;
settings = {
monitor = "DP-1, 2560x1440@165, 0x0, 1";
env = [ "XCURSOR_SIZE, 32" "QT_QPA_PLATFORMTHEME, qt5ct" ];
exec-once = [
"hyprlock"
"waybar"
"swww init; swww img ~/.local/share/wallpapers/.current_image"
"[workspace 1 silent] firefox"
"[workspace 10 silent] qbittorrent"
];
general = {
border_size = 0;
gaps_in = 2;
gaps_out = 2;
};
decoration = {
rounding = 0;
dim_inactive = true;
dim_strength = 0.3;
drop_shadow = false;
blur = {
enabled = true;
size = 3;
passes = 3;
noise = 5.0e-2;
vibrancy = 0.25;
vibrancy_darkness = 0.3;
};
};
dwindle = {
pseudotile = true;
force_split = 2;
use_active_for_splits = true;
preserve_split = true;
};
bind = [
"SUPER SHIFT CTRL ALT, Q, exit,"
"SUPER, W, killactive"
"SUPER, F, togglefloating, "
"SUPER, C, centerwindow"
"SUPER, F11, fullscreen, 0"
"CTRL ALT, T, exec, kitty"
"SUPER, Space, exec, rofi -show drun"
"SUPER, E, exec, zsh -c dolphin"
"SUPER, k, movefocus, u"
"SUPER, j, movefocus, d"
"SUPER, h, movefocus, l"
"SUPER, l, movefocus, r"
"SUPER, 1, workspace, 1"
"SUPER, 2, workspace, 2"
"SUPER, 3, workspace, 3"
"SUPER, 4, workspace, 4"
"SUPER, 5, workspace, 5"
"SUPER, 6, workspace, 6"
"SUPER, 7, workspace, 7"
"SUPER, 8, workspace, 8"
"SUPER, 9, workspace, 9"
"SUPER, 0, workspace, 10"
"SUPER SHIFT, 1, movetoworkspace, 1"
"SUPER SHIFT, 2, movetoworkspace, 2"
"SUPER SHIFT, 3, movetoworkspace, 3"
"SUPER SHIFT, 4, movetoworkspace, 4"
"SUPER SHIFT, 5, movetoworkspace, 5"
"SUPER SHIFT, 6, movetoworkspace, 6"
"SUPER SHIFT, 7, movetoworkspace, 7"
"SUPER SHIFT, 8, movetoworkspace, 8"
"SUPER SHIFT, 9, movetoworkspace, 9"
"SUPER SHIFT, 0, movetoworkspace, 10"
"SUPER, S, exec, screenshot.sh full"
"SUPER + SHIFT, S, exec, screenshot.sh section"
"MOD3, C, exec, colorpicker"
"MOD3, S, exec, hyprlock"
"MOD3, 1, exec, play_to_soundboard.sh $HOME/soundboard/fireball.webm"
"MOD3, 2, exec, play_to_soundboard.sh $HOME/soundboard/turret.webm"
"MOD3, 3, exec, play_to_soundboard.sh $HOME/soundboard/elhormiguero.webm --volume=70"
"MOD3, 4, exec, play_to_soundboard.sh $HOME/soundboard/america.webm --volume=70"
"MOD3 SHIFT, P, exec, pkill mpv"
];
bindl = [
"MOD3, m, submap, Música"
"MOD3, w, submap, Fondo de pantalla"
", XF86AudioMute, exec, volumectl.sh output toggle-mute"
"SHIFT, XF86AudioMute, exec, volumectl.sh input toggle-mute"
];
bindle = [
", XF86AudioRaiseVolume, exec, volumectl.sh output +5"
", XF86AudioLowerVolume, exec, volumectl.sh output -5"
"SHIFT, XF86AudioRaiseVolume, exec, volumectl.sh input +5"
"SHIFT, XF86AudioLowerVolume, exec, volumectl.sh input -5"
];
bindm =
[ "SUPER, mouse:272, movewindow" "SUPER, mouse:273, resizewindow" ];
animations = {
enabled = true;
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 50, liner, loop"
"fade, 1, 8, default"
"workspaces, 1, 5, wind"
];
bezier = [
"wind, 0.05, 0.92, 0.1, 1"
"winIn, 0.1, 1.1, 0.1, 1"
"winOut, 0.3, -0.3, 0, 1"
"liner, 1, 1, 1, 1"
];
};
windowrulev2 = [
"tile, class:^(ichi Client)$"
"opacity 0.999 0.999, class: ^(org.kde.dolphin)$"
"nofocus, title:^()$,class:^(steam)$"
"minsize 1 1, title:^()$,class:^(steam)$"
];
layerrule = [ "blur, waybar" "blur, rofi" "ignorezero, rofi" ];
input = {
kb_layout = "es";
kb_variant = "dvorak";
kb_options = "lv5:caps_switch";
follow_mouse = 1;
sensitivity = -1;
};
misc = {
animate_manual_resizes = true;
animate_mouse_windowdragging = true;
key_press_enables_dpms = true;
};
};
extraConfig = ''
submap = Fondo de pantalla
bind = , H, exec, change_wallpaper.sh previous
bind = , L, exec, change_wallpaper.sh next
bind = , M, exec, change_wallpaper.sh open-menu
bindl = , escape, submap, reset
bindl = MOD3, w, submap, reset
submap = reset
submap = Música
bindl = , h, exec, playerctl previous
bindl = , l, exec, playerctl next
bindl = , p, exec, playerctl play-pause
bindl = , escape, submap, reset
bindl = MOD3, m, submap, reset
submap = reset
'';
};
}

View file

@ -0,0 +1,37 @@
{ ... }: {
programs.kitty = {
enable = true;
font = {
name = "Iosevka Nerd Font";
size = 14;
};
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.75";
"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";
};
}

View file

@ -0,0 +1,7 @@
{ pkgs, ... }: {
home.packages = with pkgs; [ catppuccin-kde lightly-qt ];
qt = {
enable = true;
platformTheme = "qtct";
};
}

View file

@ -0,0 +1,176 @@
{ config, pkgs, ... }:
let inherit (config.lib.formats.rasi) mkLiteral;
in {
programs.rofi = {
enable = true;
extraConfig = {
drun-display-format = "{name}";
display-drun = " ";
show-icons = true;
icon-theme = "kora";
steal-focus = true;
};
package = pkgs.rofi-wayland;
font = "Iosevka Nerd Font 11";
terminal = "kitty";
theme = {
"*" = {
background = mkLiteral "#1e1d2f";
background-alt = mkLiteral "#282839";
foreground = mkLiteral "#d9e0ee";
selected = mkLiteral "#7aa2f7";
active = mkLiteral "#abe9b3";
urgent = mkLiteral "#f28fad";
};
window = {
transparency = "real";
location = mkLiteral "center";
anchor = mkLiteral "center";
fullscreen = false;
width = mkLiteral "500px";
x-offset = mkLiteral "0px";
y-offset = mkLiteral "0px";
enabled = true;
margin = mkLiteral "0px";
padding = mkLiteral "0px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "12px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "#1e1e2e99";
cursor = "default";
};
mainbox = {
enabled = true;
spacing = mkLiteral "20px";
margin = mkLiteral "0px";
padding = mkLiteral "12px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "0px 0px 0px 0px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "transparent";
children = map mkLiteral [ "inputbar" "listview" ];
};
inputbar = {
enabled = true;
spacing = mkLiteral "8px";
margin = mkLiteral "0px";
padding = mkLiteral "4px 8px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "12px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
children = map mkLiteral [ "prompt" "entry" ];
};
prompt = {
enabled = true;
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
};
textbox-prompt-colon = {
enabled = true;
expand = false;
str = "::";
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
};
entry = {
enabled = true;
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
cursor = mkLiteral "text";
placeholder = "";
placeholder-color = mkLiteral "inherit";
};
listview = {
enabled = true;
columns = 1;
lines = 18;
cycle = true;
dynamic = true;
scrollbar = false;
layout = "vertical";
reverse = false;
fixed-height = false;
fixed-columns = true;
spacing = mkLiteral "0px";
margin = mkLiteral "0px";
padding = mkLiteral "0px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "0px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
cursor = mkLiteral "default";
};
scrollbar = {
handle-width = mkLiteral "5px";
handle-color = mkLiteral "@selected";
border-radius = mkLiteral "0px";
background-color = mkLiteral "@background-alt";
};
element = {
enabled = true;
spacing = mkLiteral "4px";
margin = mkLiteral "0px";
padding = mkLiteral "4px 8px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "12px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
orientation = mkLiteral "horizontal";
cursor = mkLiteral "pointer";
};
"element normal.normal" = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
};
"element selected.normal" = {
background-color = mkLiteral "#cdd6f422";
text-color = mkLiteral "@foreground";
};
element-icon = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
size = mkLiteral "24px";
cursor = mkLiteral "inherit";
};
element-text = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
highlight = mkLiteral "inherit";
cursor = mkLiteral "inherit";
vertical-align = mkLiteral "0.5";
horizontal-align = 0;
};
error-message = {
padding = mkLiteral "15px";
border = mkLiteral "2px solid";
border-radius = mkLiteral "10px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "black / 10%";
text-color = mkLiteral "@foreground";
};
textbox = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
vertical-align = mkLiteral "0.5";
horizontal-align = 0;
highlight = mkLiteral "none";
};
};
};
}

View file

@ -0,0 +1,12 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "colorpicker";
runtimeInputs = with pkgs; [ dunst hyprpicker imagemagick wl-clipboard ];
text = ''
COLOR=$(hyprpicker --no-fancy --autocopy)
convert -size 1x1 xc:"$COLOR" "$HOME/.cache/.tmp_colorpicker.jpg"
dunstify -i "$HOME/.cache/.tmp_colorpicker.jpg" "Color copiado" "$COLOR"
rm "$HOME/.cache/.tmp_colorpicker.jpg"
'';
}

View file

@ -0,0 +1,29 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "get_fancy_currently_playing";
runtimeInputs = [ pkgs.playerctl ];
text = ''
STRING=""
case $(playerctl status 2> /dev/stdout) in
"Playing")
STRING+=" "
;;
"Paused")
STRING+=" "
;;
"No players found")
exit 1
;;
esac
ARTIST=$(playerctl metadata xesam:artist)
if [[ -n $ARTIST ]]; then
STRING+="$ARTIST // "
fi
TITLE=$(playerctl metadata xesam:title)
if [[ -n $TITLE ]]; then
STRING+="$TITLE"
fi
echo -e "$STRING"
'';
}

View file

@ -0,0 +1,74 @@
#!/bin/sh
shopt -s nullglob
WALLPAPER_PATH=~/.local/share/wallpapers
WALLPAPERS=($WALLPAPER_PATH/*)
if [ ! -f "$WALLPAPER_PATH/.current_path" ]; then
# Current wallpaper file does not exist, create it
echo ${WALLPAPERS[0]} > "$WALLPAPER_PATH/.current_path"
fi
CURRENT_WALLPAPER=$(cat "$WALLPAPER_PATH/.current_path")
# Get the current wallpaper's index
for index in ${!WALLPAPERS[@]}; do
if [ "${WALLPAPERS[$index]}" = "$CURRENT_WALLPAPER" ]; then
CURRENT_WP_INDEX=$index
fi
done
if [ -z $CURRENT_WP_INDEX ]; then
CURRENT_WP_INDEX=0
fi
if [ $1 = "previous" ]; then
WALLPAPER=${WALLPAPERS[$CURRENT_WP_INDEX - 1]}
TRANSITION_ANGLE=300
elif [ $1 = "next" ]; then
NEXT_INDEX=$((CURRENT_WP_INDEX + 1))
if [ $NEXT_INDEX = ${#WALLPAPERS[@]} ]; then
NEXT_INDEX=0
fi
WALLPAPER=${WALLPAPERS[$NEXT_INDEX]}
TRANSITION_ANGLE=120
elif [ $1 = "open-menu" ]; then
INPUT=$''
for index in ${!WALLPAPERS[@]}; do
if [ $index = $CURRENT_WP_INDEX ]; then
continue
fi
_WALLPAPER="${WALLPAPERS[$index]}"
_WALLPAPER_NAME=$(basename "$_WALLPAPER")
INPUT+="$_WALLPAPER_NAME\0icon\x1f$_WALLPAPER"
if [ ! $(($index + 1)) = ${#WALLPAPERS[@]} ]; then
INPUT+=$'\n'
fi
done
WALLPAPER=$(echo -en "$INPUT" | rofi -dmenu -mesg "Cambiar fondo de pantalla" -p "" -i -theme ~/.config/rofi/wallpaper_selector.rasi)
if [ ! $? = 0 ]; then
exit 1
fi
WALLPAPER="${WALLPAPER_PATH}/${WALLPAPER}"
TRANSITION_ANGLE=270
else
echo "Unknown first argument: $1"
exit 1
fi
if [ -z $WALLPAPER ]; then
exit 1
fi
WALLPAPER_NAME=$(basename "$WALLPAPER")
echo "Setting wallpaper to $WALLPAPER, args: $@"
echo "$WALLPAPER" > "$WALLPAPER_PATH/.current_path"
ln -sf "$WALLPAPER" "$WALLPAPER_PATH/.current_image"
dunstify -i "$WALLPAPER" -t 2800 "Cambiando fondo de pantalla" "Cambiando a $WALLPAPER_NAME"
swww img\
--transition-type wipe\
--transition-angle $TRANSITION_ANGLE\
--transition-step 90\
--transition-duration 1\
--transition-fps 165\
"$WALLPAPER"

View file

@ -0,0 +1,18 @@
#!/bin/bash
RPC_HOST=http://localhost:6680/mopidy/rpc
TRACK=$(curl -s -X POST -H Content-Type:application/json -d '{ "method": "core.playback.get_current_track", "jsonrpc": "2.0", "params": {}, "id": 1 }' $RPC_HOST)
TRACK_URI=$(echo $TRACK | jq -r '.result.uri')
IMAGES=$(curl -s -X POST -H Content-Type:application/json -d '{ "method": "core.library.get_images", "jsonrpc": "2.0", "params": { "uris": ["'"$TRACK_URI"'"] }, "id": 1}' $RPC_HOST)
IMAGE_URI=$(echo $IMAGES | jq -r 'first(.result[] | sort_by(.width) | reverse | .[].uri)')
if [[ -n "$IMAGE_URI" ]]; then
if [[ "$IMAGE_URI" == *"local/"* ]]; then
# Image is local
IMAGE="$HOME/.local/share/mopidy/local/images${IMAGE_URI/local\//}"
else
curl -o /tmp/cover.png $IMAGE_URI &> /dev/null
IMAGE="/tmp/cover.png"
fi
fi
dunstify -r 99902 -I $IMAGE "Reproduciendo" "$(mpc --format '<b>%artist% - %album%</b>\n%title%' current 2> /dev/null)"

View file

@ -0,0 +1,5 @@
#!/usr/bin/env sh
while true; do
waybar
done

View file

@ -0,0 +1,3 @@
#!/bin/sh
mpv --no-video --audio-device=pipewire/Soundboard --audio-client-name="Soundboard" $@

View file

@ -0,0 +1,24 @@
#!/bin/sh
missing_params() {
echo "Missing parameters, usage: screenshot.sh <type>"
exit 1
}
test -n 1 || missing_params
FILE_NAME=$(date +'Screenshot_%Y%m%d_%H%M%S')
TEMPORARY_PATH="/tmp/$FILE_NAME.png"
SCREENSHOT_PATH=$(xdg-user-dir PICTURES)/$FILE_NAME.jxl
if [ $1 == "full" ]; then
grim $TEMPORARY_PATH
elif [ $1 == "section" ]; then
grim -g "$(slurp -b '#000000aa' -w 0)" $TEMPORARY_PATH
fi
if [ $? == 0 ]; then
wl-copy < $TEMPORARY_PATH
cjxl $TEMPORARY_PATH $SCREENSHOT_PATH
dunstify --raw_icon=$TEMPORARY_PATH "Captura de pantalla realizada" "Guardada como $FILE_NAME.jxl"
rm $TEMPORARY_PATH
fi

View file

@ -0,0 +1,7 @@
#!/bin/sh
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

View file

@ -0,0 +1,72 @@
#!/bin/sh
VOLUME_REGEX="^(-*|\+*)[0-9]+$"
if [ "$1" == "output" ]; then
if [[ $2 =~ $VOLUME_REGEX ]]; then
if [ $(pamixer --get-mute) == "true" ]; then
pamixer --unmute > /dev/null
fi
if [ "${2:0:1}" == "-" ]; then
pamixer --allow-boost -d "${2:1}" > /dev/null
elif [ "${2:0:1}" == "+" ]; then
pamixer --allow-boost -i "${2:1}" > /dev/null
fi
volume="$(pamixer --get-volume-human)"
message="$volume"
elif [ $2 == "toggle-mute" ]; then
if [ $(pamixer --get-mute) == "true" ]; then
pamixer --unmute > /dev/null
volume="$(pamixer --get-volume-human)"
message="$volume"
else
pamixer --mute > /dev/null
message="󰖁 Silenciado"
fi
else
message="volumectl error: Unknown second argument"
fi
elif [ "$1" == "input" ]; then
if [[ $2 =~ $VOLUME_REGEX ]]; then
if [ $(pamixer --default-source --get-mute) == "true" ]; then
pamixer --default-source --unmute > /dev/null
fi
if [ "${2:0:1}" == "-" ];then
pamixer --default-source --allow-boost -d "${2:1}" > /dev/null
elif [ "${2:0:1}" == "+" ]; then
pamixer --default-source --allow-boost -i "${2:1}" > /dev/null
fi
volume="$(pamixer --default-source --get-volume-human)"
message="$volume"
elif [ $2 == "toggle-mute" ]; then
if [ $(pamixer --default-source --get-mute) == "true" ]; then
pamixer --default-source --unmute > /dev/null
volume="$(pamixer --default-source --get-volume-human)"
message="$volume"
else
pamixer --default-source --mute > /dev/null
message=" Silenciado"
fi
else
message="volumectl error: Unknown second argument"
fi
elif [ "$1" == "mpd" ]; then
if [[ $2 =~ $VOLUME_REGEX ]]; then
mpc volume $2 > /dev/null
icon="󰝚"
volume="$(perl -e "print ('$(mpc 2>/dev/null)' =~ /volume:[ ]*([0-9]*%)/);")"
if [ "$volume" == "0%" ]; then
icon="󰝛"
volume="Silenciado"
fi
message="$icon $volume"
else
message="volumectl error: Unknown second argument"
fi
else
message="volumectl error: Unknown first argument"
fi
volume=$(echo $volume | tr -d "%")
dunstify --appname "volumectl" --replace 9001 --urgency low --timeout 1250 --hints int:value:$volume "$message"

View file

@ -0,0 +1,197 @@
{ pkgs, ... }: {
programs.waybar = {
enable = true;
settings = {
primary = {
layer = "top";
spacing = 0;
position = "bottom";
mode = "dock";
modules-left = [
"clock"
"pulseaudio"
"cpu"
"temperature"
"custom/gpu"
"temperature#gpu"
"memory"
];
modules-center = [ "hyprland/workspaces" "hyprland/submap" ];
modules-right = [ "mpris" ];
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
"1" = " ";
"2" = " ";
"3" = " ";
"8" = " ";
"9" = " ";
"10" = " ";
default = " ";
};
persistent-workspaces = { "*" = 10; };
sort-by-number = true;
};
"hyprland/submap" = { format = " {}"; };
temperature = {
hwmon-path-abs = "/sys/devices/pci0000:00/0000:00:18.3/hwmon";
input-filename = "temp1_input";
};
"temperature#gpu" = {
hwmon-path-abs =
"/sys/devices/pci0000:00/0000:00:03.1/0000:05:00.0/0000:06:00.0/0000:07:00.0/hwmon";
input-filename = "temp1_input";
};
"custom/gpu" = {
exec = "cat /sys/class/drm/card*/device/gpu_busy_percent";
format = "GPU {}%";
restart-interval = 2;
};
mpris = {
format = "{player_icon}{status_icon} {artist} // {title}";
interval = 0.2;
player-icons = {
default = "";
firefox = "󰈹 ";
};
status-icons = {
paused = "";
playing = "";
};
};
clock = {
tooltip-format = "<tt><small>{calendar}</small></tt>";
format = " {:%Y-%m-%d %H:%M:%S}";
interval = 1;
calendar = {
mode = "year";
mode-mon-col = 2;
weeks-pos = "right";
on-scroll = 1;
on-click-right = "mode";
format = {
days = "<span color='#e0def4'>{}</span>";
today = "<span color='#eb6f92'><b><u>{}</u></b></span>";
weeks = "";
weekdays = "<span color='#9ccfd8'><b>{}</b></span>";
months = "<span color='#31748f'><b>{}</b></span>";
};
};
};
cpu = {
format = "CPU {usage}%";
tooltip = false;
interval = 2;
on-click = "kitty htop";
};
memory = {
format = "MEM {used}GB";
interval = 1;
tooltip-format = "{percentage}%";
};
pulseaudio = {
scroll-step = 5;
format = "{icon} {volume}% {format_source}";
format-muted = "󰖁 {format_source}";
format-source = " {volume}%";
format-source-muted = "";
format-icons = { default = [ "" "" ]; };
ignored-sinks = [ "Easy Effects Sink" ];
};
};
};
style = ''
* {
border: none;
background-color: transparent;
font-family: Iosevka Nerd Font;
font-weight: bold;
font-size: 14px;
}
window#waybar {
background: rgba(30, 30, 46, 0.8);
color: #cdd6f4;
margin: 4px;
}
tooltip {
background: #1e1e2e;
border: 2px solid #313244;
}
#mpris {
color: #f5c2e7;
padding-right: 20px;
}
#workspaces button {
padding: 1px;
color: #cdd6f4;
margin-right: 6px;
}
#workspaces button.persistent {
color: #cdd6f4;
}
#workspaces button.focused {
border: 0;
}
#workspaces button.urgent {
color: #f38ba8;
}
#workspaces button.empty {
color: #313244;
}
#workspaces button.active {
color: #cba6f7;
}
#submap {
color: #cba6f7;
margin-left: 4px;
padding: 0 8px;
}
#cpu {
color: #f9e2af;
padding-right: 6px;
}
#temperature {
color: #f9e2af;
padding-right: 12px;
}
#custom-gpu {
color: #94e2d5;
padding-right: 6px;
}
#temperature.gpu {
color: #94e2d5;
padding-right: 12px;
}
#memory {
color: #a6e3a1;
padding-right: 12px;
}
#pulseaudio {
color: #fab387;
padding-right: 12px;
}
#clock {
color: #f38ba8;
padding-left: 20px;
padding-right: 12px;
}
'';
};
}

View file

@ -0,0 +1,50 @@
{ inputs, pkgs, ... }: {
imports = [ ./nixvim ];
home = { packages = with pkgs; [ git-credential-manager gnupg pass ]; };
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;
};
};
}

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

View file

@ -0,0 +1,40 @@
{ inputs, pkgs, ... }: {
imports = [
./completion.nix
./lsp.nix
./neo-tree.nix
./none-ls.nix
./treesitter.nix
];
programs.nixvim = {
enable = true;
colorschemes.catppuccin = {
enable = true;
flavour = "mocha";
disableItalic = true;
integrations = {
cmp = true;
neotree = true;
};
};
globals.mapleader = " ";
options = {
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 ];
};
}

View file

@ -0,0 +1,9 @@
{ inputs, ... }: {
programs.nixvim.plugins = {
lsp = {
enable = true;
servers = { pyright.enable = true; };
};
};
}

View file

@ -0,0 +1 @@
{ ... }: { programs.nixvim.plugins.lualine = { enable = true; }; }

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

View file

@ -0,0 +1,25 @@
{ ... }: {
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;
};
};
};
}

View file

@ -0,0 +1,7 @@
{ ... }: {
programs.nixvim.plugins.treesitter = {
enable = true;
indent = true;
nixvimInjections = true;
};
}

150
hosts/totsugeki/nixos.nix Normal file
View file

@ -0,0 +1,150 @@
{ config, lib, pkgs, ... }: {
boot = {
kernelModules = [ "kvm-amd" ];
kernelPackages = pkgs.linuxKernel.packages.linux_zen;
kernelParams = [ "video=DP-1:2560x1440@165" ];
initrd.availableKernelModules =
[ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
loader = {
systemd-boot = { enable = true; };
efi.canTouchEfiVariables = true;
};
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/144857c7-877b-46c7-94d9-30a6d6d27cf0";
fsType = "btrfs";
options = [ "compress=zstd:9" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/8084-F762";
fsType = "vfat";
};
"/home" = {
device = "/dev/disk/by-uuid/4bbd6139-7caa-4617-a94f-b185c5f6ca45";
fsType = "btrfs";
options = [ "compress=zstd:9" ];
};
"/mnt/Datos" = {
device = "/dev/disk/by-uuid/994ef2bd-a9fb-4414-9a0a-19b150ffa452";
fsType = "btrfs";
options = [ "compress=zstd:9" "user" "x-systemd.automount" "exec" ];
};
};
networking = {
firewall = {
enable = true;
allowedTCPPorts = [ 1111 42595 ];
allowedUDPPorts = [ 24642 ];
};
hostName = "totsugeki";
networkmanager.enable = true;
useDHCP = lib.mkDefault true;
};
nix.settings.experimental-features = [ "nix-command" "flakes" ];
time.timeZone = "Europe/Madrid";
i18n.defaultLocale = "es_ES.UTF-8";
console = {
keyMap = lib.mkForce "dvorak-es";
useXkbConfig = true;
};
hardware = {
enableRedistributableFirmware = true;
cpu.amd.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware;
};
nixpkgs = {
config.allowUnfree = true;
hostPlatform = lib.mkDefault "x86_64-linux";
};
users = {
defaultUserShell = pkgs.zsh;
extraGroups.vboxusers.members = [ "avery" ];
users.avery = {
extraGroups = [ "wheel" ];
isNormalUser = true;
};
};
environment = {
shells = with pkgs; [ zsh ];
systemPackages = with pkgs; [ htop libjxl neovim ];
};
fonts = {
packages = with pkgs; [
inter
(nerdfonts.override { fonts = [ "Iosevka" ]; })
];
fontconfig = {
defaultFonts = {
serif = [ "Inter" ];
sansSerif = [ "Inter" ];
monospace = [ "Iosevka Nerd Font" ];
};
};
};
programs = {
hyprland.enable = true;
steam.enable = true;
zsh.enable = true;
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
};
security = {
doas = {
enable = true;
extraRules = [{
users = [ "avery" ];
keepEnv = true;
persist = true;
}];
};
rtkit.enable = true;
sudo.enable = false;
};
services = {
greetd = {
enable = true;
settings = rec {
initial_session = {
command = "${pkgs.hyprland}/bin/Hyprland";
user = "avery";
};
default_session = initial_session;
};
};
pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
};
openssh.enable = true;
udisks2.enable = true;
};
systemd = { services = { NetworkManager-wait-online.enable = false; }; };
system.stateVersion = "24.05";
}