summaryrefslogtreecommitdiff
path: root/common/home/programs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-09-18 18:58:59 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-09-18 18:58:59 +0200
commitebb67feeb46226dff0d384c7800dab4e42a03912 (patch)
treed3e91ce8dace5770792f4633b31ecea93988bc5c /common/home/programs
parent04e96de97689d1b78437df4173ece9857d9c6a61 (diff)
refactor home
Diffstat (limited to 'common/home/programs')
-rw-r--r--common/home/programs/alacritty/default.nix79
-rw-r--r--common/home/programs/btop/default.nix9
-rw-r--r--common/home/programs/firefox/default.nix69
-rw-r--r--common/home/programs/git/default.nix6
-rw-r--r--common/home/programs/gpg/default.nix5
-rw-r--r--common/home/programs/hyprlock/default.nix48
-rw-r--r--common/home/programs/nixvim/default.nix210
-rw-r--r--common/home/programs/opam/default.nix5
-rw-r--r--common/home/programs/password-store/default.nix7
-rw-r--r--common/home/programs/ssh/default.nix5
-rw-r--r--common/home/programs/waybar/default.nix44
-rw-r--r--common/home/programs/waybar/style.css88
-rw-r--r--common/home/programs/wofi/default.nix5
-rw-r--r--common/home/programs/wofi/style.css47
-rw-r--r--common/home/programs/zsh/default.nix27
15 files changed, 654 insertions, 0 deletions
diff --git a/common/home/programs/alacritty/default.nix b/common/home/programs/alacritty/default.nix
new file mode 100644
index 0000000..85b539f
--- /dev/null
+++ b/common/home/programs/alacritty/default.nix
@@ -0,0 +1,79 @@
+{ ... }:
+{
+ enable = true;
+
+ settings = {
+ colors = {
+ primary = {
+ background = "#282828";
+ foreground = "#ebdbb2";
+ };
+
+ search = {
+ focused_match = {
+ background = "#689d6a";
+ foreground = "#ebdbb2";
+ };
+
+ matches = {
+ background = "#3c3836";
+ foreground = "#ebdbb2";
+ };
+ };
+
+ bright = {
+ black = "#928374";
+ blue = "#83a598";
+ cyan = "#8ec07c";
+ green = "#b8bb26";
+ magenta = "#d3869b";
+ red = "#fb4934";
+ white = "#fbf1c7";
+ yellow = "#fadb2f";
+ };
+
+ normal = {
+ black = "#282828";
+ blue = "#458588";
+ cyan = "#689d6a";
+ green = "#98971a";
+ magenta = "#b16286";
+ red = "#cc241d";
+ white = "#ebdbb2";
+ yellow = "#d79921";
+ };
+ };
+
+ font = {
+ size = 11.0;
+
+ normal = {
+ family = "SauceCodePro NF";
+ style = "Regular";
+ };
+
+ bold = {
+ family = "SauceCodePro NF";
+ style = "Bold";
+ };
+
+ italic = {
+ family = "SauceCodePro NF";
+ style = "Italic";
+ };
+
+ bold_italic = {
+ family = "SauceCodePro NF";
+ style = "Bold Italic";
+ };
+ };
+
+ window = {
+ dynamic_title = true;
+ padding = {
+ x = 5;
+ y = 5;
+ };
+ };
+ };
+}
diff --git a/common/home/programs/btop/default.nix b/common/home/programs/btop/default.nix
new file mode 100644
index 0000000..949b5f8
--- /dev/null
+++ b/common/home/programs/btop/default.nix
@@ -0,0 +1,9 @@
+{ ... }:
+{
+ enable = true;
+ settings = {
+ color_theme = "Default";
+ truecolor = true;
+ update_ms = 100;
+ };
+}
diff --git a/common/home/programs/firefox/default.nix b/common/home/programs/firefox/default.nix
new file mode 100644
index 0000000..674384f
--- /dev/null
+++ b/common/home/programs/firefox/default.nix
@@ -0,0 +1,69 @@
+{ ... }:
+let
+ lock-false = {
+ Value = false;
+ Status = "locked";
+ };
+ lock-true = {
+ Value = true;
+ Status = "locked";
+ };
+in
+{
+ enable = true;
+
+ policies = {
+ DisableTelemetry = true;
+ DisableFirefoxStudies = true;
+ EnableTrackingProtection = {
+ Value = true;
+ Locked = true;
+ Cryptomining = true;
+ Fingerprinting = true;
+ };
+ DisablePocket = true;
+ DisableFirefoxAccounts = true;
+ DisableAccounts = true;
+ DisableFirefoxScreenshots = true;
+ OverrideFirstRunPage = "";
+ OverridePostUpdatePage = "";
+ DontCheckDefaultBrowser = true;
+ DisplayBookmarksToolbar = "never";
+ DisplayMenuBar = "default-off";
+ SearchBar = "unified";
+
+ ExtensionSettings = {
+ "*".installation_mode = "blocked";
+ "uBlock0@raymondhill.net" = {
+ install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
+ installation_mode = "force_installed";
+ };
+ };
+
+ Preferences = {
+ "browser.contentblocking.category" = {
+ Value = "strict";
+ Status = "locked";
+ };
+ "extensions.pocket.enabled" = lock-false;
+ "extensions.screenshots.disabled" = lock-true;
+ "browser.topsites.contile.enabled" = lock-false;
+ "browser.formfill.enable" = lock-false;
+ "browser.search.suggest.enabled" = lock-false;
+ "browser.search.suggest.enabled.private" = lock-false;
+ "browser.search.defaultenginename" = "DuckDuckGo";
+ "browser.search.order.1" = "DuckDuckGo";
+ "browser.urlbar.suggest.searches" = lock-false;
+ "browser.urlbar.showSearchSuggestionsFirst" = lock-false;
+ "browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
+ "browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
+ "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
+ "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
+ "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
+ "browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
+ "browser.newtabpage.activity-stream.showSponsored" = lock-false;
+ "browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
+ "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
+ };
+ };
+}
diff --git a/common/home/programs/git/default.nix b/common/home/programs/git/default.nix
new file mode 100644
index 0000000..91878ea
--- /dev/null
+++ b/common/home/programs/git/default.nix
@@ -0,0 +1,6 @@
+{ ... }:
+{
+ enable = true;
+ userEmail = "nathan@nathanreiner.xyz";
+ userName = "Nathan Reiner";
+}
diff --git a/common/home/programs/gpg/default.nix b/common/home/programs/gpg/default.nix
new file mode 100644
index 0000000..2c1ec57
--- /dev/null
+++ b/common/home/programs/gpg/default.nix
@@ -0,0 +1,5 @@
+{ home, ... }:
+{
+ enable = true;
+ homedir = "${home.homeDirectory}/global/.local/share/gnupg";
+}
diff --git a/common/home/programs/hyprlock/default.nix b/common/home/programs/hyprlock/default.nix
new file mode 100644
index 0000000..91a28ea
--- /dev/null
+++ b/common/home/programs/hyprlock/default.nix
@@ -0,0 +1,48 @@
+{ ... }:
+{
+ enable = true;
+ settings = {
+ general = {
+ disable_loading_bar = false;
+ hide_cursor = true;
+ no_fade_in = true;
+ };
+
+ background = [
+ {
+ blur_passes = 3;
+ blur_size = 8;
+ }
+ ];
+
+ input-field = [
+ {
+ size = "250, 50";
+ position = "0, -80";
+ monitor = "";
+ dots_center = true;
+ fade_on_empty = false;
+ font_color = "rgb(235, 219, 178)";
+ inner_color = "rgb(40, 40, 40)";
+ outer_color = "rgb(177, 98, 134)";
+ outline_thickness = 2;
+ placeholder_text = "<span foreground='##ebbdb2'>/password/</span>";
+ shadow_passes = 2;
+ }
+ ];
+
+ label = [
+ {
+ text = "$USER";
+ text_algin = "center";
+ position = "0, 60";
+ font_color = "rgb(235, 219, 178)";
+ font_size = 70;
+ font_family = "SauceCodePro NF";
+ rotate = 0;
+ halign = "center";
+ valign = "center";
+ }
+ ];
+ };
+}
diff --git a/common/home/programs/nixvim/default.nix b/common/home/programs/nixvim/default.nix
new file mode 100644
index 0000000..628b8d0
--- /dev/null
+++ b/common/home/programs/nixvim/default.nix
@@ -0,0 +1,210 @@
+{ pkgs, ... }:
+{
+ enable = true;
+ defaultEditor = true;
+
+ enableMan = true;
+
+ package = pkgs.unstable.neovim-unwrapped;
+
+ extraConfigLua = ''
+ local signs = { Error = "󰀨 ", Warn = " ", Hint = " ", Info = " " }
+ for type, icon in pairs(signs) do
+ local hl = "DiagnosticSign" .. type
+ vim.fn.sign_define(hl, { text = icon, texthl= hl, numhl = hl })
+ end'';
+
+ diagnostics = {
+ virtual_text = {
+ prefix = "󰬨";
+ };
+ };
+
+ opts = {
+ mouse = "a";
+ number = true;
+ softtabstop = 0;
+ expandtab = false;
+ tabstop = 2;
+ shiftwidth = 2;
+ smartindent = true;
+ list = true;
+ listchars = {
+ tab = "> ";
+ eol = "¬";
+ trail = "·";
+ nbsp = "•";
+ };
+ splitright = true;
+ splitbelow = true;
+ showcmd = true;
+ wildmenu = true;
+ hlsearch = true;
+ autoread = true;
+ swapfile = false;
+ };
+
+ clipboard = {
+ register = "unnamedplus";
+ providers.wl-copy.enable = true;
+ };
+
+ colorschemes.base16 = {
+ enable = true;
+ colorscheme = "gruvbox-dark-pale";
+ };
+
+ plugins = {
+ nvim-tree = {
+ enable = true;
+ autoClose = true;
+ disableNetrw = true;
+ hijackCursor = true;
+ };
+
+ telescope = {
+ enable = true;
+ };
+
+ lualine = {
+ enable = true;
+ };
+
+ treesitter = {
+ enable = true;
+ settings = {
+ auto_install = false;
+ ensure_installed = "all";
+ highlight = {
+ additional_vim_regex_highlighting = true;
+ enable = true;
+ };
+ ignore_install = [ "rust" ];
+ incremental_selection = {
+ enable = true;
+ keymaps = {
+ init_selection = false;
+ node_decremental = "grm";
+ node_incremental = "grn";
+ scope_incremental = "grc";
+ };
+ };
+ indent = {
+ enable = true;
+ };
+ sync_install = false;
+ };
+ };
+
+ luasnip = {
+ enable = true;
+ };
+
+ friendly-snippets = {
+ enable = true;
+ };
+
+ cmp = {
+ enable = true;
+ autoEnableSources = true;
+ settings = {
+ mapping = {
+ "<C-b>" = "cmp.mapping.scroll_docs(-4)";
+ "<C-f>" = "cmp.mapping.scroll_docs(4)";
+ "<C-Space>" = "cmp.mapping.complete()";
+ "<C-e>" = "cmp.mapping.abort()";
+ "<CR>" = "cmp.mapping.confirm({ 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("<Plugin>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("<Plugin>luasnip-jump-prev", true, true, true), "")
+ else
+ fallback()
+ end
+ end, { "i", "s" })
+ '';
+ };
+ snippet = {
+ expand = "function(args) require('luasnip').lsp_expand(args.body) end";
+ };
+ sources = [
+ { name = "nvim_lsp"; }
+ { name = "luasnip"; }
+ { name = "path"; }
+ { name = "buffer"; }
+ ];
+ };
+ };
+
+ lsp = {
+ enable = true;
+ servers = {
+ bashls = {
+ enable = true;
+ package = pkgs.unstable.bash-language-server;
+ };
+ clangd.enable = true;
+ nixd = {
+ enable = true;
+ settings.formatting.command = [ "nixfmt" ];
+ };
+ rust-analyzer = {
+ enable = true;
+ installCargo = true;
+ installRustc = true;
+ };
+ pyright.enable = true;
+ ocamllsp.enable = true;
+ };
+ keymaps.lspBuf = {
+ "gd" = "definition";
+ "gD" = "references";
+ "gt" = "type_definition";
+ "gi" = "implementation";
+ "K" = "hover";
+ "rn" = "rename";
+ "<space>ca" = "code_action";
+ "<space>f" = "format";
+ };
+ };
+
+ lsp-format = {
+ enable = true;
+ };
+ };
+
+ globals = {
+ mapleader = ",";
+ };
+
+ keymaps = [
+ {
+ key = "<leader>tf";
+ action = "<cmd>NvimTreeToggle<cr>";
+ mode = "n";
+ }
+ {
+ key = "<leader>f";
+ action = "<cmd>lua require('telescope.builtin').find_files()<cr>";
+ mode = "n";
+ }
+ {
+ key = "<space>d";
+ action = "<cmd>lua vim.diagnostic.open_float()<cr>";
+ mode = "n";
+ }
+ ];
+}
diff --git a/common/home/programs/opam/default.nix b/common/home/programs/opam/default.nix
new file mode 100644
index 0000000..d0baee2
--- /dev/null
+++ b/common/home/programs/opam/default.nix
@@ -0,0 +1,5 @@
+{ ... }:
+{
+ enable = true;
+ enableZshIntegration = true;
+}
diff --git a/common/home/programs/password-store/default.nix b/common/home/programs/password-store/default.nix
new file mode 100644
index 0000000..29bbfb3
--- /dev/null
+++ b/common/home/programs/password-store/default.nix
@@ -0,0 +1,7 @@
+{ ... }:
+{
+ enable = true;
+ settings = {
+ PASSWORD_STORE_DIR = "$HOME/global/.local/share/pass/";
+ };
+}
diff --git a/common/home/programs/ssh/default.nix b/common/home/programs/ssh/default.nix
new file mode 100644
index 0000000..da761d5
--- /dev/null
+++ b/common/home/programs/ssh/default.nix
@@ -0,0 +1,5 @@
+{ home, ... }:
+{
+ enable = true;
+ includes = [ "${home.homeDirectory}/global/.ssh/config" ];
+}
diff --git a/common/home/programs/waybar/default.nix b/common/home/programs/waybar/default.nix
new file mode 100644
index 0000000..7e59bf2
--- /dev/null
+++ b/common/home/programs/waybar/default.nix
@@ -0,0 +1,44 @@
+{ ... }:
+{
+ enable = true;
+ systemd.enable = true;
+ settings = {
+ mainBar = {
+ layer = "top";
+ position = "left";
+ width = 50;
+ outputs = "*";
+ spacing = 10;
+ modules-left = [ "hyprland/workspaces" ];
+ modules-center = [ ];
+ modules-right = [
+ "bluetooth"
+ "battery"
+ "tray"
+ ];
+
+ "hyprland/workspaces" = {
+ format = "{icon}";
+ };
+
+ "hyprland/window" = {
+ separate-outputs = true;
+ };
+
+ bluetooth = {
+ format = "";
+ format-disabled = "󰂲";
+ format-off = "󰂲";
+ format-on = "";
+ format-connected = "󰂱";
+ on-click = "blueberry";
+ };
+
+ tray = {
+ icon-size = 15;
+ spacing = 10;
+ };
+ };
+ };
+ style = ./style.css;
+}
diff --git a/common/home/programs/waybar/style.css b/common/home/programs/waybar/style.css
new file mode 100644
index 0000000..d3dc7a1
--- /dev/null
+++ b/common/home/programs/waybar/style.css
@@ -0,0 +1,88 @@
+* {
+ font-family: 'SauceCodePro NF';
+}
+
+window {
+ background: transparent;
+}
+
+#workspaces {
+ background: #282828;
+ border-radius: 5px;
+ margin-left: 10px;
+ padding: 5px;
+}
+
+#workspaces button {
+ border: 5px solid #282828;
+ padding: 0px;
+}
+
+#workspaces button.active {
+ border-right: 5px solid #b16286;
+ border-radius: 0px;
+}
+
+#workspaces button:hover {
+ border-radius: 20px;
+ border: 5px solid #1d2021;
+ background: #1d2021;
+ padding: 0px;
+}
+
+#workspaces button.active:hover {
+ border: 5px solid #1d2021;
+ border-right: 5px solid #b16286;
+ border-radius: 20px;
+ background: #1d2021;
+ padding: 0px;
+}
+
+#tray, #bluetooth {
+ background: #282828;
+ border-radius: 5px;
+ margin-left: 10px;
+ padding: 10px 5px;
+}
+
+#tray window {
+ border-radius: 5px;
+}
+
+#battery {
+ background: #458588;
+ color: #282828;
+ border-radius: 5px;
+ margin-left: 10px;
+ padding: 10px 5px;
+}
+
+#battery.charging {
+ background: #689d6a;
+}
+
+#battery.warning:not(.charging) {
+ background: #cc241d;
+}
+
+.modules-left {
+ margin-top: 10px;
+}
+
+.modules-right {
+ margin-bottom: 10px;
+}
+
+.popup menu {
+ border: 3px solid #3c3836;
+ border-radius: 10px;
+ padding: 10px;
+}
+
+.popup menu menuitem {
+ border-radius: 5px;
+}
+
+.popup decoration {
+ background: transparent;
+}
diff --git a/common/home/programs/wofi/default.nix b/common/home/programs/wofi/default.nix
new file mode 100644
index 0000000..d8cf5a9
--- /dev/null
+++ b/common/home/programs/wofi/default.nix
@@ -0,0 +1,5 @@
+{ ... }:
+{
+ enable = true;
+ style = builtins.readFile ./style.css;
+}
diff --git a/common/home/programs/wofi/style.css b/common/home/programs/wofi/style.css
new file mode 100644
index 0000000..7e38346
--- /dev/null
+++ b/common/home/programs/wofi/style.css
@@ -0,0 +1,47 @@
+* {
+ font-family: "SauceCodePro NF";
+}
+
+window {
+ background: transparent;
+ color: #ebdbb2;
+}
+
+#outer-box {
+ border-radius: 10px;
+ background: transparent;
+}
+
+entry#input {
+ background: #1d2021;
+ border: 2px solid #b16286;
+ margin-bottom: 10px;
+ padding: 10px;
+ border-radius: 10px;
+}
+#scroll {
+ border-radius: 10px;
+ border: 2px solid #3c3836;
+ background: #1d2021;
+}
+
+#entry {
+ border: none;
+ background: transparent;
+}
+
+.entry {
+ border-radius: 5px;
+ border: none;
+ padding: 8px;
+ margin: 2px;
+}
+
+.entry#selected {
+ border: none;
+ background: #b16286;
+}
+
+.entry#selected label {
+ background: #b16286;
+}
diff --git a/common/home/programs/zsh/default.nix b/common/home/programs/zsh/default.nix
new file mode 100644
index 0000000..ef08f7f
--- /dev/null
+++ b/common/home/programs/zsh/default.nix
@@ -0,0 +1,27 @@
+{ ... }:
+{
+ enable = true;
+ syntaxHighlighting.enable = true;
+ enableCompletion = true;
+ defaultKeymap = "viins";
+ autocd = true;
+ shellAliases = {
+ v = "nvim";
+ };
+ initExtra = ''
+ prompt_git_status() {
+ if [ -n "$(git branch 2>/dev/null)" ]; then
+ sign="";
+ [[ -n "$(git status -s)" ]] && sign="";
+ git_branch=$(git branch);
+ echo "%F{5}%f%F{0}%K{5}''${sign} ''${git_branch##*\* }%k%F{5}%k";
+ fi;
+ }
+
+ update_prompt() {
+ export RPROMPT="$(prompt_git_status)"
+ }
+
+ PROMPT="%F{cyan}%F{0}%K{cyan}%n%k%f%F{cyan}%k%f %F{cyan}%f%k%K{cyan}%F{0}%m%k%f%F{cyan}%k %f%k%F{magenta}%F{0}%K{magenta}%~%f%k%F{magenta}%k%f "
+ '';
+}