diff --git a/dotfiles/Passwords.kdbx b/dotfiles/Passwords.kdbx new file mode 100644 index 0000000..8261ecf Binary files /dev/null and b/dotfiles/Passwords.kdbx differ diff --git a/dotfiles/kak-lsp/kak-lsp.toml b/dotfiles/kak-lsp/kak-lsp.toml new file mode 100644 index 0000000..286505e --- /dev/null +++ b/dotfiles/kak-lsp/kak-lsp.toml @@ -0,0 +1,447 @@ +snippet_support = true +verbosity = 2 + +[server] +# exit session if no requests were received during given period in seconds +# set to 0 to disable +timeout = 1800 # seconds = 30 minutes + +[language.bash] +filetypes = ["sh"] +roots = [".git", ".hg"] +command = "bash-language-server" +args = ["start"] + +[language.c_cpp] +filetypes = ["c", "cpp"] +roots = ["compile_commands.json", ".clangd", ".git", ".hg"] +command = "clangd" + +[language.clojure] +filetypes = ["clojure"] +roots = ["project.clj", ".git", ".hg"] +command = "clojure-lsp" +settings_section = "_" +[language.clojure.settings._] +# See https://clojure-lsp.io/settings/#all-settings +# source-paths-ignore-regex = ["resources.*", "target.*"] + +[language.cmake] +filetypes = ["cmake"] +roots = ["CMakeLists.txt", ".git", ".hg"] +command = "cmake-language-server" + +[language.crystal] +filetypes = ["crystal"] +roots = ["shard.yml"] +command = "crystalline" + +[language.css] +filetypes = ["css"] +roots = ["package.json", ".git", ".hg"] +command = "vscode-css-languageserver" +args = ["--stdio"] + +[language.less] +filetypes = ["less"] +roots = ["package.json", ".git", ".hg"] +command = "vscode-css-languageserver" +args = ["--stdio"] + +[language.scss] +filetypes = ["scss"] +roots = ["package.json", ".git", ".hg"] +command = "vscode-css-languageserver" +args = ["--stdio"] + +[language.d] +filetypes = ["d", "di"] +roots = [".git", "dub.sdl", "dub.json"] +command = "dls" + +[language.dart] +# start shell to find path to dart analysis server source +filetypes = ["dart"] +roots = ["pubspec.yaml", ".git", ".hg"] +command = "dart" +args = ["language-server"] +[language.dart.settings.dart] +lineLength = 120 + +[language.elixir] +filetypes = ["elixir"] +roots = ["mix.exs"] +command = "elixir-ls" +settings_section = "elixirLS" +[language.elixir.settings.elixirLS] +# See https://github.com/elixir-lsp/elixir-ls/blob/master/apps/language_server/lib/language_server/server.ex +# dialyzerEnable = true + +[language.elm] +filetypes = ["elm"] +roots = ["elm.json"] +command = "elm-language-server" +args = ["--stdio"] +settings_section = "elmLS" +[language.elm.settings.elmLS] +# See https://github.com/elm-tooling/elm-language-server#server-settings +runtime = "node" +elmPath = "elm" +elmFormatPath = "elm-format" +elmTestPath = "elm-test" + +[language.elvish] +filetypes = ["elvish"] +roots = [".git", ".hg"] +command = "elvish" +args = ["-lsp"] + +[language.erlang] +filetypes = ["erlang"] +# See https://github.com/erlang-ls/erlang_ls.git for more information and +# how to configure. This default config should work in most cases though. +roots = ["rebar.config", "erlang.mk", ".git", ".hg"] +command = "erlang_ls" + +[language.go] +filetypes = ["go"] +roots = ["Gopkg.toml", "go.mod", ".git", ".hg"] +command = "gopls" +settings_section = "gopls" +[language.go.settings.gopls] +# See https://github.com/golang/tools/blob/master/gopls/doc/settings.md +# "build.buildFlags" = [] + +[language.haskell] +filetypes = ["haskell"] +roots = ["hie.yaml", "cabal.project", "Setup.hs", "stack.yaml", "*.cabal"] +command = "haskell-language-server-wrapper" +args = ["--lsp"] +settings_section = "_" +[language.haskell.settings._] +# See https://haskell-language-server.readthedocs.io/en/latest/configuration.html +# haskell.formattingProvider = "ormolu" + +[language.html] +filetypes = ["html"] +roots = ["package.json"] +command = "vscode-html-languageserver" +args = ["--stdio"] + +# # Commented out by default because you still need to set the paths in the JDT +# # Language Server arguments below before this can become a valid configuration. +# [language.java] +# filetypes = ["java"] +# roots = [".git", "mvnw", "gradlew"] +# command = "java" +# args = [ +# "-Declipse.application=org.eclipse.jdt.ls.core.id1", +# "-Dosgi.bundles.defaultStartLevel=4", +# "-Declipse.product=org.eclipse.jdt.ls.core.product", +# "-Dlog.level=ALL", +# "-Dfile.encoding=utf-8", +# "--add-modules=ALL-SYSTEM", +# "--add-opens", +# "java.base/java.util=ALL-UNNAMED", +# "--add-opens", +# "java.base/java.lang=ALL-UNNAMED", +# "-noverify", +# "-Xmx1G", +# "-jar", +# "/path/to/eclipse.jdt.ls/repository/plugins/org.eclipse.equinox.launcher_1.6.100.v20201223-0822.jar", +# "-configuration", +# "/path/to/eclipse.jdt.ls/repository/config_linux", +# "-data", +# "/path/to/eclipse-workspace", +# ] +# [language.java.settings] +# # See https://github.dev/eclipse/eclipse.jdt.ls +# # "java.format.insertSpaces" = true + +[language.javascriptreact] +filetypes = ["javascript"] +roots = ["package.json", "tsconfig.json", ".git", ".hg"] +command = "typescript-language-server" +args = ["--stdio"] +settings_section = "_" +[language.javascriptreact.settings._] +# quotePreference = "single" +# javascript.format.semicolons = "insert" + +[language.json] +filetypes = ["json"] +roots = ["package.json"] +command = "vscode-json-language-server" +args = ["--stdio"] + +# Requires Julia package "LanguageServer" +# Run: `julia --project=@kak-lsp -e 'import Pkg; Pkg.add("LanguageServer")'` to install it +# Configuration adapted from https://github.com/neovim/nvim-lspconfig/blob/bcebfac7429cd8234960197dca8de1767f3ef5d3/lua/lspconfig/julials.lua +[language.julia] +filetypes = ["julia"] +roots = ["Project.toml", ".git", ".hg"] +command = "julia" +args = [ + "--startup-file=no", + "--history-file=no", + "-e", + """ + ls_install_path = joinpath(get(DEPOT_PATH, 1, joinpath(homedir(), ".julia")), "environments", "kak-lsp"); + pushfirst!(LOAD_PATH, ls_install_path); + using LanguageServer; + popfirst!(LOAD_PATH); + depot_path = get(ENV, "JULIA_DEPOT_PATH", ""); + buffer_file = ENV["kak_buffile"]; + project_path = let + dirname(something( + # 1. Check if there is an explicitly set project + Base.load_path_expand(( + p = get(ENV, "JULIA_PROJECT", nothing); + p === nothing ? nothing : isempty(p) ? nothing : p + )), + # 2. Check for Project.toml in current working directory + Base.current_project(pwd()), + # 3. Check for Project.toml from buffer's full file path excluding the file name + Base.current_project(dirname(buffer_file)), + # 4. Fallback to global environment + Base.active_project() + )) + end + server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path); + server.runlinter = true; + run(server); + """, +] +[language.julia.settings] +# See https://github.com/julia-vscode/LanguageServer.jl/blob/master/src/requests/workspace.jl +# Format options. See https://github.com/julia-vscode/DocumentFormat.jl/blob/master/src/DocumentFormat.jl +# "julia.format.indent" = 4 +# Lint options. See https://github.com/julia-vscode/StaticLint.jl/blob/master/src/linting/checks.jl +# "julia.lint.call" = true +# Other options, see https://github.com/julia-vscode/LanguageServer.jl/blob/master/src/requests/workspace.jl +# "julia.lint.run" = "true" + +[language.latex] +filetypes = ["latex"] +roots = [".git", ".hg"] +command = "texlab" +settings_section = "texlab" +[language.latex.settings.texlab] +# See https://github.com/latex-lsp/texlab/wiki/Configuration +# +# Preview configuration for zathura with SyncTeX search. +# For other PDF viewers see https://github.com/latex-lsp/texlab/wiki/Previewing +forwardSearch.executable = "zathura" +forwardSearch.args = [ + "%p", + "--synctex-forward", # Support texlab-forward-search + "%l:1:%f", + "--synctex-editor-command", # Inverse search: use Control+Left-Mouse-Button to jump to source. + """ + sh -c ' + echo " + evaluate-commands -client %opt{texlab_client} %{ + evaluate-commands -try-client %opt{jumpclient} %{ + edit -- %{input} %{line} + } + } + " | kak -p $kak_session + ' + """, +] + +[language.lua] +filetypes = ["lua"] +roots = [".git", ".hg"] +command = "lua-language-server" +[language.lua.settings.Lua] +# See https://github.com/sumneko/vscode-lua/blob/master/setting/schema.json +# diagnostics.enable = true + +[language.markdown] +filetype = ["md", "markdown"] +roots = [".git", ".hg"] +command = "vscode-markdown-language-server" +args = ["--stdio"] + +# [[language]] +# name = "markdown" +# scope = "source.md" +# injection-regex = "md|markdown" +# file-types = ["md", "markdown", "PULLREQ_EDITMSG", "mkd", "mdwn", "mdown", "markdn", "mdtxt", "mdtext", "workbook"] +# roots = [".marksman.toml"] +# language-servers = [ "marksman" ] +# indent = { tab-width = 2, unit = " " } + +[language.nim] +filetypes = ["nim"] +roots = ["*.nimble", ".git", ".hg"] +command = "nimlsp" + +[language.nix] +filetypes = ["nix"] +roots = ["flake.nix", "shell.nix", ".git", ".hg"] +command = "rnix-lsp" + +[language.ocaml] +filetypes = ["ocaml"] +# Often useful to simply do a `touch dune-workspace` in your project root folder if you have problems with root detection +roots = ["dune-workspace", "dune-project", "Makefile", "opam", "*.opam", "esy.json", ".git", ".hg", "dune"] +command = "ocamllsp" + +[language.php] +filetypes = ["php"] +roots = [".htaccess", "composer.json"] +command = "intelephense" +args = ["--stdio"] +settings_section = "intelephense" +[language.php.settings] +intelephense.storagePath = "/tmp/intelephense" + +[language.proto] +filetypes = ["protobuf"] +roots = [".git", ".hg"] +command = "pls" # https://github.com/lasorda/protobuf-language-server + +[language.python] +filetypes = ["python"] +roots = ["requirements.txt", "setup.py", ".git", ".hg"] +command = "pylsp" +settings_section = "_" +[language.python.settings._] +# See https://github.com/python-lsp/python-lsp-server#configuration +# pylsp.configurationSources = ["flake8"] +pylsp.plugins.jedi_completion.include_params = true + +[language.r] +filetypes = ["r"] +roots = ["DESCRIPTION", ".git", ".hg"] +command = "R" +args = ["--slave", "-e", "languageserver::run()"] + +[language.racket] +filetypes = ["racket"] +roots = ["info.rkt"] +command = "racket" +args = ["-l", "racket-langserver"] + +[language.reason] +filetypes = ["reason"] +roots = ["package.json", "Makefile", ".git", ".hg"] +command = "ocamllsp" + +[language.ruby] +filetypes = ["ruby"] +roots = ["Gemfile"] +command = "solargraph" +args = ["stdio"] +settings_section = "_" +[language.ruby.settings._] +# See https://github.com/castwide/solargraph/blob/master/lib/solargraph/language_server/host.rb +# diagnostics = false + +# [language.rust] +# filetypes = ["rust"] +# roots = ["Cargo.toml"] +# command = "sh" +# args = [ +# "-c", +# """ +# if path=$(rustup which rls 2>/dev/null); then +# "$path" +# else +# rls +# fi +# """, +# ] +# [language.rust.settings.rust] +# # See https://github.com/rust-lang/rls#configuration +# # features = [] + +[language.rust] +filetypes = ["rust"] +roots = ["Cargo.toml"] +command = "sh" +args = [ + "-c", + """ + if path=$(rustup which rust-analyzer 2>/dev/null); then + "$path" + else + rust-analyzer + fi + """, +] +settings_section = "rust-analyzer" +[language.rust.settings.rust-analyzer] +# See https://rust-analyzer.github.io/manual.html#configuration +hoverActions.enable = false # kak-lsp doesn't support this at the moment +# cargo.features = [] + +[language.terraform] +filetypes = ["terraform"] +roots = ["*.tf"] +command = "terraform-ls" +args = ["serve"] +[language.terraform.settings.terraform-ls] +# See https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md +# rootModulePaths = [] + +# [language.typescriptreact] +# filetypes = ["typescript"] +# roots = ["package.json", "tsconfig.json", ".git", ".hg"] +# command = "typescript-language-server" +# args = ["--stdio"] +# settings_section = "_" +# [language.typescriptreact.settings._] +# quotePreference = "double" +# typescript.format.semicolons = "insert" + +[language.tsx] +filetypes = ["typescript"] +roots = ["package.json", "tsconfig.json", ".git", ".hg"] +command = "typescript-language-server" +args = ["--stdio"] +settings_section = "_" + +# [language.typescript.settings.deno] +# enable = true +# lint = true + +[language.yaml] +filetypes = ["yaml"] +roots = [".git", ".hg"] +command = "yaml-language-server" +args = ["--stdio"] +[language.yaml.settings] +# See https://github.com/redhat-developer/yaml-language-server#language-server-settings +# Defaults are at https://github.com/redhat-developer/yaml-language-server/blob/master/src/yamlSettings.ts +# yaml.format.enable = true + +[language.zig] +filetypes = ["zig"] +roots = ["build.zig"] +command = "zls" + +# Semantic tokens support +# See https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens +# for the default list of tokens and modifiers. +# However, many language servers implement their own values. +# Make sure to check the output of `lsp-capabilities` and each server's documentation and source code as well. +# Examples: +# - TypeScript: https://github.com/microsoft/vscode-languageserver-node/blob/main/client/src/common/semanticTokens.ts +# - Rust Analyzer: https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ide/src/syntax_highlighting.rs +[semantic_tokens] +faces = [ + {face="documentation", token="comment", modifiers=["documentation"]}, + {face="comment", token="comment"}, + {face="function", token="function"}, + {face="keyword", token="keyword"}, + {face="module", token="namespace"}, + {face="operator", token="operator"}, + {face="string", token="string"}, + {face="type", token="type"}, + {face="default+d", token="variable", modifiers=["readonly"]}, + {face="default+d", token="variable", modifiers=["constant"]}, + {face="variable", token="variable"}, +] diff --git a/dotfiles/kak/colors/catppuccin_frappe.kak b/dotfiles/kak/colors/catppuccin_frappe.kak new file mode 100644 index 0000000..ec43367 --- /dev/null +++ b/dotfiles/kak/colors/catppuccin_frappe.kak @@ -0,0 +1,83 @@ +# Catppuccin theme for Kakoune + +# Color palette +declare-option str rosewater 'rgb:f2d5cf' +declare-option str red 'rgb:e78284' +declare-option str mauve 'rgb:ca9ee6' +declare-option str maroon 'rgb:ea999c' +declare-option str pink 'rgb:f4b8e4' +declare-option str cyan 'rgb:85c1dc' +declare-option str yellow 'rgb:e5c890' +declare-option str green 'rgb:a6d189' +declare-option str white 'rgb:c6d0f5' +declare-option str blue 'rgb:8caaee' +declare-option str sky 'rgb:99d1db' +declare-option str lavender 'rgb:babbf1' +declare-option str black1 'rgb:292c3c' +declare-option str black2 'rgb:303446' +declare-option str black3 'rgb:414559' +declare-option str orange 'rgb:ef9f76' +declare-option str teal 'rgb:81c8be' +declare-option str gray0 'rgb:626880' +declare-option str gray1 'rgb:737994' +declare-option str bright_red %opt{red} +declare-option str bright_green %opt{green} +declare-option str bright_yellow %opt{yellow} +declare-option str bright_blue %opt{blue} +declare-option str bright_cyan %opt{cyan} +declare-option str bright_white %opt{white} +declare-option str foreground %opt{white} +declare-option str background %opt{black2} + +# Markup +set-face global title "%opt{rosewater}" +set-face global header "%opt{bright_red}" +set-face global bold "%opt{mauve}" +set-face global italic "%opt{lavender}" +set-face global mono "%opt{green}" +set-face global block "%opt{cyan}" +set-face global link "%opt{green}" +set-face global bullet "%opt{green}" +set-face global list "%opt{white}" + +# Builtins +set-face global Default "%opt{white},%opt{background}" +set-face global PrimarySelection "%opt{gray0},%opt{lavender}" +set-face global SecondarySelection "%opt{lavender},%opt{gray0}" +set-face global PrimaryCursor "%opt{background},%opt{rosewater}" +set-face global SecondaryCursor "%opt{black1},%opt{teal}" +set-face global PrimaryCursorEol "%opt{gray0},%opt{mauve}" +set-face global SecondaryCursorEol "%opt{gray0},%opt{maroon}" +set-face global LineNumbers "%opt{gray1},%opt{background}" +set-face global LineNumberCursor "%opt{lavender},%opt{gray0}+b" +set-face global LineNumbersWrapped "%opt{teal},%opt{black1}+i" +set-face global MenuForeground "%opt{white},%opt{gray0}+b" +set-face global MenuBackground "%opt{white},%opt{black3}" +set-face global MenuInfo "%opt{black1},%opt{blue}" +set-face global Information "%opt{black1},%opt{lavender}" +set-face global Error "%opt{red},%opt{black2}" +set-face global StatusLine "%opt{white},%opt{black1}" +set-face global StatusLineMode "%opt{black2},%opt{yellow}" +set-face global StatusLineInfo "%opt{background},%opt{green}" +set-face global StatusLineValue "%opt{orange},%opt{gray0}" +set-face global StatusCursor "%opt{black1},%opt{lavender}" +set-face global Prompt "%opt{green},%opt{black2}" +set-face global MatchingChar "%opt{maroon},%opt{black2}" +set-face global Whitespace "%opt{gray1},%opt{background}+f" +set-face global WrapMarker Whitespace +set-face global BufferPadding "%opt{background},%opt{background}" + +# Code +set-face global value "%opt{orange}" +set-face global type "%opt{rosewater}" +set-face global variable "%opt{white}" +set-face global module "%opt{maroon}" +set-face global function "%opt{sky}" +set-face global string "%opt{green}" +set-face global keyword "%opt{blue}" +set-face global operator "%opt{blue}" +set-face global attribute "%opt{green}" +set-face global comment "%opt{gray1}" +set-face global documentation comment +set-face global meta "%opt{pink}" +set-face global builtin "%opt{lavender}+b" diff --git a/dotfiles/kak/colors/catppuccin_latte.kak b/dotfiles/kak/colors/catppuccin_latte.kak new file mode 100644 index 0000000..f547168 --- /dev/null +++ b/dotfiles/kak/colors/catppuccin_latte.kak @@ -0,0 +1,83 @@ +# Catppuccin theme for Kakoune + +# Color palette +declare-option str rosewater 'rgb:dc8a78' +declare-option str red 'rgb:d20f39' +declare-option str mauve 'rgb:8839ef' +declare-option str maroon 'rgb:e64553' +declare-option str pink 'rgb:ea76cb' +declare-option str cyan 'rgb:209fb5' +declare-option str yellow 'rgb:df8e1d' +declare-option str green 'rgb:40a02b' +declare-option str white 'rgb:4c4f69' +declare-option str blue 'rgb:1e66f5' +declare-option str sky 'rgb:04a5e5' +declare-option str lavender 'rgb:7287fd' +declare-option str black1 'rgb:e6e9ef' +declare-option str black2 'rgb:eff1f5' +declare-option str black3 'rgb:ccd0da' +declare-option str orange 'rgb:fe640b' +declare-option str teal 'rgb:179299' +declare-option str gray0 'rgb:acb0be' +declare-option str gray1 'rgb:9ca0b0' +declare-option str bright_red %opt{red} +declare-option str bright_green %opt{green} +declare-option str bright_yellow %opt{yellow} +declare-option str bright_blue %opt{blue} +declare-option str bright_cyan %opt{cyan} +declare-option str bright_white %opt{white} +declare-option str foreground %opt{white} +declare-option str background %opt{black2} + +# Markup +set-face global title "%opt{rosewater}" +set-face global header "%opt{bright_red}" +set-face global bold "%opt{mauve}" +set-face global italic "%opt{lavender}" +set-face global mono "%opt{green}" +set-face global block "%opt{cyan}" +set-face global link "%opt{green}" +set-face global bullet "%opt{green}" +set-face global list "%opt{white}" + +# Builtins +set-face global Default "%opt{white},%opt{background}" +set-face global PrimarySelection "%opt{gray0},%opt{lavender}" +set-face global SecondarySelection "%opt{lavender},%opt{gray0}" +set-face global PrimaryCursor "%opt{background},%opt{rosewater}" +set-face global SecondaryCursor "%opt{black1},%opt{teal}" +set-face global PrimaryCursorEol "%opt{gray0},%opt{mauve}" +set-face global SecondaryCursorEol "%opt{gray0},%opt{maroon}" +set-face global LineNumbers "%opt{gray1},%opt{background}" +set-face global LineNumberCursor "%opt{lavender},%opt{gray0}+b" +set-face global LineNumbersWrapped "%opt{teal},%opt{black1}+i" +set-face global MenuForeground "%opt{white},%opt{gray0}+b" +set-face global MenuBackground "%opt{white},%opt{black3}" +set-face global MenuInfo "%opt{black1},%opt{blue}" +set-face global Information "%opt{black1},%opt{lavender}" +set-face global Error "%opt{red},%opt{black2}" +set-face global StatusLine "%opt{white},%opt{black1}" +set-face global StatusLineMode "%opt{black2},%opt{yellow}" +set-face global StatusLineInfo "%opt{background},%opt{green}" +set-face global StatusLineValue "%opt{orange},%opt{gray0}" +set-face global StatusCursor "%opt{black1},%opt{lavender}" +set-face global Prompt "%opt{green},%opt{black2}" +set-face global MatchingChar "%opt{maroon},%opt{black2}" +set-face global Whitespace "%opt{gray1},%opt{background}+f" +set-face global WrapMarker Whitespace +set-face global BufferPadding "%opt{background},%opt{background}" + +# Code +set-face global value "%opt{orange}" +set-face global type "%opt{rosewater}" +set-face global variable "%opt{white}" +set-face global module "%opt{maroon}" +set-face global function "%opt{sky}" +set-face global string "%opt{green}" +set-face global keyword "%opt{blue}" +set-face global operator "%opt{blue}" +set-face global attribute "%opt{green}" +set-face global comment "%opt{gray1}" +set-face global documentation comment +set-face global meta "%opt{pink}" +set-face global builtin "%opt{lavender}+b" diff --git a/dotfiles/kak/colors/catppuccin_macchiato.kak b/dotfiles/kak/colors/catppuccin_macchiato.kak new file mode 100644 index 0000000..e518715 --- /dev/null +++ b/dotfiles/kak/colors/catppuccin_macchiato.kak @@ -0,0 +1,83 @@ +# Catppuccin theme for Kakoune + +# Color palette +declare-option str rosewater 'rgb:f4dbd6' +declare-option str red 'rgb:ed8796' +declare-option str mauve 'rgb:c6a0f6' +declare-option str maroon 'rgb:ee99a0' +declare-option str pink 'rgb:f5bde6' +declare-option str cyan 'rgb:7dc4e4' +declare-option str yellow 'rgb:eed49f' +declare-option str green 'rgb:a6da95' +declare-option str white 'rgb:cad3f5' +declare-option str blue 'rgb:8aadf4' +declare-option str sky 'rgb:91d7e3' +declare-option str lavender 'rgb:b7bdf8' +declare-option str black1 'rgb:1e2030' +declare-option str black2 'rgb:24273a' +declare-option str black3 'rgb:363a4f' +declare-option str orange 'rgb:f5a97f' +declare-option str teal 'rgb:8bd5ca' +declare-option str gray0 'rgb:5b6078' +declare-option str gray1 'rgb:6e738d' +declare-option str bright_red %opt{red} +declare-option str bright_green %opt{green} +declare-option str bright_yellow %opt{yellow} +declare-option str bright_blue %opt{blue} +declare-option str bright_cyan %opt{cyan} +declare-option str bright_white %opt{white} +declare-option str foreground %opt{white} +declare-option str background %opt{black2} + +# Markup +set-face global title "%opt{rosewater}" +set-face global header "%opt{bright_red}" +set-face global bold "%opt{mauve}" +set-face global italic "%opt{lavender}" +set-face global mono "%opt{green}" +set-face global block "%opt{cyan}" +set-face global link "%opt{green}" +set-face global bullet "%opt{green}" +set-face global list "%opt{white}" + +# Builtins +set-face global Default "%opt{white},%opt{background}" +set-face global PrimarySelection "%opt{gray0},%opt{lavender}" +set-face global SecondarySelection "%opt{lavender},%opt{gray0}" +set-face global PrimaryCursor "%opt{background},%opt{rosewater}" +set-face global SecondaryCursor "%opt{black1},%opt{teal}" +set-face global PrimaryCursorEol "%opt{gray0},%opt{mauve}" +set-face global SecondaryCursorEol "%opt{gray0},%opt{maroon}" +set-face global LineNumbers "%opt{gray1},%opt{background}" +set-face global LineNumberCursor "%opt{lavender},%opt{gray0}+b" +set-face global LineNumbersWrapped "%opt{teal},%opt{black1}+i" +set-face global MenuForeground "%opt{white},%opt{gray0}+b" +set-face global MenuBackground "%opt{white},%opt{black3}" +set-face global MenuInfo "%opt{black1},%opt{blue}" +set-face global Information "%opt{black1},%opt{lavender}" +set-face global Error "%opt{red},%opt{black2}" +set-face global StatusLine "%opt{white},%opt{black1}" +set-face global StatusLineMode "%opt{black2},%opt{yellow}" +set-face global StatusLineInfo "%opt{background},%opt{green}" +set-face global StatusLineValue "%opt{orange},%opt{gray0}" +set-face global StatusCursor "%opt{black1},%opt{lavender}" +set-face global Prompt "%opt{green},%opt{black2}" +set-face global MatchingChar "%opt{maroon},%opt{black2}" +set-face global Whitespace "%opt{gray1},%opt{background}+f" +set-face global WrapMarker Whitespace +set-face global BufferPadding "%opt{background},%opt{background}" + +# Code +set-face global value "%opt{orange}" +set-face global type "%opt{pink}" +set-face global variable "%opt{white}" +set-face global module "%opt{mauve}" +set-face global function "%opt{sky}" +set-face global string "%opt{green}" +set-face global keyword "%opt{blue}" +set-face global operator "%opt{blue}" +set-face global attribute "%opt{green}" +set-face global comment "%opt{gray1}" +set-face global documentation comment +set-face global meta "%opt{pink}" +set-face global builtin "%opt{lavender}+b" diff --git a/dotfiles/kak/colors/catppuccin_mocha.kak b/dotfiles/kak/colors/catppuccin_mocha.kak new file mode 100644 index 0000000..6191160 --- /dev/null +++ b/dotfiles/kak/colors/catppuccin_mocha.kak @@ -0,0 +1,83 @@ +# Catppuccin theme for Kakoune + +# Color palette +declare-option str rosewater 'rgb:f5e0dc' +declare-option str red 'rgb:f38ba8' +declare-option str mauve 'rgb:cba6f7' +declare-option str maroon 'rgb:eba0ac' +declare-option str pink 'rgb:f5c2e7' +declare-option str cyan 'rgb:74c7ec' +declare-option str yellow 'rgb:f9e2af' +declare-option str green 'rgb:a6e3a1' +declare-option str white 'rgb:cdd6f4' +declare-option str blue 'rgb:89b4fa' +declare-option str sky 'rgb:89dceb' +declare-option str lavender 'rgb:b4befe' +declare-option str black1 'rgb:181825' +declare-option str black2 'rgb:1e1e2e' +declare-option str black3 'rgb:313244' +declare-option str orange 'rgb:fab387' +declare-option str teal 'rgb:94e2d5' +declare-option str gray0 'rgb:585b70' +declare-option str gray1 'rgb:6c7086' +declare-option str bright_red %opt{red} +declare-option str bright_green %opt{green} +declare-option str bright_yellow %opt{yellow} +declare-option str bright_blue %opt{blue} +declare-option str bright_cyan %opt{cyan} +declare-option str bright_white %opt{white} +declare-option str foreground %opt{white} +declare-option str background %opt{black2} + +# Markup +set-face global title "%opt{rosewater}" +set-face global header "%opt{bright_red}" +set-face global bold "%opt{mauve}" +set-face global italic "%opt{lavender}" +set-face global mono "%opt{green}" +set-face global block "%opt{cyan}" +set-face global link "%opt{green}" +set-face global bullet "%opt{green}" +set-face global list "%opt{white}" + +# Builtins +set-face global Default "%opt{white},%opt{background}" +set-face global PrimarySelection "%opt{gray0},%opt{lavender}" +set-face global SecondarySelection "%opt{lavender},%opt{gray0}" +set-face global PrimaryCursor "%opt{background},%opt{rosewater}" +set-face global SecondaryCursor "%opt{black1},%opt{teal}" +set-face global PrimaryCursorEol "%opt{gray0},%opt{mauve}" +set-face global SecondaryCursorEol "%opt{gray0},%opt{maroon}" +set-face global LineNumbers "%opt{gray1},%opt{background}" +set-face global LineNumberCursor "%opt{lavender},%opt{gray0}+b" +set-face global LineNumbersWrapped "%opt{teal},%opt{black1}+i" +set-face global MenuForeground "%opt{white},%opt{gray0}+b" +set-face global MenuBackground "%opt{white},%opt{black3}" +set-face global MenuInfo "%opt{black1},%opt{blue}" +set-face global Information "%opt{black1},%opt{lavender}" +set-face global Error "%opt{red},%opt{black2}" +set-face global StatusLine "%opt{white},%opt{black1}" +set-face global StatusLineMode "%opt{black2},%opt{yellow}" +set-face global StatusLineInfo "%opt{background},%opt{green}" +set-face global StatusLineValue "%opt{orange},%opt{gray0}" +set-face global StatusCursor "%opt{black1},%opt{lavender}" +set-face global Prompt "%opt{green},%opt{black2}" +set-face global MatchingChar "%opt{maroon},%opt{black2}" +set-face global Whitespace "%opt{gray1},%opt{background}+f" +set-face global WrapMarker Whitespace +set-face global BufferPadding "%opt{background},%opt{background}" + +# Code +set-face global value "%opt{orange}" +set-face global type "%opt{rosewater}" +set-face global variable "%opt{white}" +set-face global module "%opt{maroon}" +set-face global function "%opt{sky}" +set-face global string "%opt{green}" +set-face global keyword "%opt{blue}" +set-face global operator "%opt{blue}" +set-face global attribute "%opt{green}" +set-face global comment "%opt{gray1}" +set-face global documentation comment +set-face global meta "%opt{pink}" +set-face global builtin "%opt{lavender}+b" diff --git a/dotfiles/kak/kakrc b/dotfiles/kak/kakrc new file mode 100644 index 0000000..ec330c2 --- /dev/null +++ b/dotfiles/kak/kakrc @@ -0,0 +1,252 @@ +# ------------------ +# Plugin Setup +# ------------------ + +# IMORTANT NOTE: +# I needed to open kakoune and type ':plug-install' to actually +# install the plugins listed in this file. I did not see this +# mentioned in wikis or anything, so make sure to do this to +# avoid searching github wikis and reddit needlessly. + +# Creates the /plugins folder if it doesnt exist each startup +evaluate-commands %sh{ + plugins="$kak_config/plugins" + mkdir -p "$plugins" + [ ! -e "$plugins/plug.kak" ] && \ + git clone -q https://github.com/andreyorst/plug.kak.git "$plugins/plug.kak" + printf "%s\n" "source '$plugins/plug.kak/rc/plug.kak'" +} +plug "andreyorst/plug.kak" noload + +# ------------------ +# Editor Settings +# ------------------ + +# Disables startup message showing +set-option global startup_info_version 30000000 + +set-option global tabstop 4 +set-option global indentwidth 4 +set-option global scrolloff 5,3 +declare-option str kakrc_path "~/.config/kak/kakrc" +declare-option str sway_conf_path "~/.config/sway/config.d/default" +declare-option str shell_config "~/.zshrc" + +# plug "catppuccin/kakoune" theme config %{ +# colorscheme catppuccin_macchiato +# } +colorscheme catppuccin_macchiato +# relative line numbers +hook global BufCreate .* %{ + add-highlighter buffer/ number-lines -hlcursor +} + +# Git Gutters +hook global WinCreate .* %{ evaluate-commands %sh{ + if [ $kak_buffile != $kak_bufname ] && git ls-files --error-unmatch "$kak_buffile" > /dev/null 2>&1; then + echo "git show-diff" + fi +}} + +# Write on unfocus +hook global FocusOut .* %{ try %{ + write +}} + +hook global BufWritePost .* %{ evaluate-commands 'git update-diff' } +hook global BufReload .* %{ evaluate-commands 'git update-diff' } + +# Add default,red and bold style to these regex matches +add-highlighter global/ regex \b(TODO|FIXME|XXX|NOTE)\b 0:default,red+rb + +# ------------------ +# Key bindings +# ------------------ + +# Remap hjkl navigation to colemak-dh layout +map global normal n h +map global normal e k +map global normal i j +map global normal o l + +map global normal N H +map global normal E K +map global normal I J +map global normal O L + +# Remap insert command +map global normal h i + +# Insert line above or below +map global normal l o +map global normal L O + +# No alt, remap +map global normal -docstring 'same as [f] but in the other direction' +map global normal -docstring 'same as [t] but in the other direction' +map global normal -docstring 'select to beginning of line' +map global normal -docstring 'select to end of line' +map global normal -docstring 'split selections on line boundaries' +map global normal -docstring 'select first and last character of each selection' +map global normal '' '' -docstring 'flip direction of each selection' +map global normal -docstring 'ensure selections are in forward direction (cursor then anchor)' +map global normal -docstring 'clear the main selection' + +# Scrolling remap +map global normal -docstring 'Scroll screen up' +map global normal -docstring 'Scroll screen down' + +map global normal ':comment-line' -docstring 'comment selected lines' + +# Ctrl-s to save +map global normal ':w' -docstring 'write buffer' +# Ctrl-x to save and exit +map global normal ':w:db' -docstring 'write close buffer' + +# Colemak goto remappings +map global goto n h -docstring 'line start' +map global goto o l -docstring 'line end' +map global goto e k -docstring 'buffer top' +map global goto i j -docstring 'buffer bottom' + +map global goto h n +map global goto l o +map global goto k e +map global goto j i + +# Remap view keys +map global view n h +map global view o l +map global view e k +map global view i j + +map global normal ( ': buffer-previous' -docstring 'prev buffer' +map global normal ) ': buffer-next' -docstring 'next buffer' + +# map global normal [ ( -docstring 'rotate main selection' + +# map global normal ] ) -docstring 'rotate main selection backwards' +# Make x select lines up and down +def -params 1 extend-line-down %{ + exec "%arg{1}J" +} + +def -params 1 extend-line-up %{ + exec "%arg{1}K" + try %{ + exec -draft ';\n' + exec X + } + exec '' +} + + +map global normal x ':extend-line-down %val{count}' +map global normal X ':extend-line-up %val{count}' + +map global normal k n -docstring 'next result' +map global normal K N -docstring 'next result add selection' + +map global normal -docstring 'prev result' +map global normal -docstring 'prev result add selection' + +map global insert -docstring 'next completion' +map global insert -docstring 'prev completion' + +# User Mode Bindings +# Accessed with +declare-user-mode git +map global user g ': enter-user-mode git' -docstring "Git mode" +map global user p 'wl-paste -n' -docstring 'paste from system clip board' +hook global RegisterModified '"' %{ nop %sh{ + printf %s "$kak_main_reg_dquote" | wl-copy > /dev/null 2>&1 & +}} + +# Open kakrc, double quotes needed to ecsape the kakrc_path option +map global user o ":edit %opt{kakrc_path}" -docstring 'open kakrc' +map global user z ":edit %opt{shell_config}" -docstring 'open shell config' +map global user S ":edit %opt{sway_conf_path}" -docstring 'open wm config' +# Git Mode Bindings +map global git d ':git show-diff' -docstring "Show diff" + +# ----------------- +# LSP Configuration +# ----------------- + +plug "kak-lsp/kak-lsp" do %{ + cargo install --locked --force --path . + mkdir -p ~/.config/kak-lsp + cp -n kak-lsp.toml ~/.config/kak-lsp/ +} config %{ + + # enable inlay hints + lsp-inlay-hints-enable global + lsp-inlay-diagnostics-enable global + + # set global lsp_diagnostic_line_error_sign '║' + # set global lsp_diagnostic_line_warning_sign '┊' + + define-command lsp-restart -docstring 'restart lsp server' %{ lsp-stop; lsp-start } + + map global insert ':try lsp-snippets-select-next-placeholders catch %{ execute-keys -with-hooks tab> }' -docstring 'Select next snippet placeholder' + map global object a 'lsp-object' -docstring 'LSP any symbol' + map global object 'lsp-object' -docstring 'LSP any symbol' + map global object e 'lsp-object Function Method' -docstring 'LSP function or method' + map global object k 'lsp-object Class Interface Struct' -docstring 'LSP class interface or struct' + map global object d 'lsp-diagnostic-object --include-warnings' -docstring 'LSP errors and warnings' + map global object D 'lsp-diagnostic-object' -docstring 'LSP errors' + + # load lsp for supported filetypes + set-option global lsp_cmd "kak-lsp -s %val{session} -vvv --log /tmp/kak-lsp.log" + hook global WinSetOption filetype=(rust|python|go|javascript|typescript|c|cpp|zig|dart|ruby) %{ + lsp-enable-window + # lsp-auto-hover-enable + map global user l ': enter-user-mode lsp' -docstring 'lsp mode' + map global user h ': enter-user-mode lsph' -docstring 'lsp help' + map global user a ': enter-user-mode lspa' -docstring 'lsp code action' + set-option global lsp_hover_anchor false + } + + hook global KakEnd .* lsp-exit +} + + +# ----------------- +# Other Plugins +# ----------------- + +map global goto f ':prompt -shell-script-candidates %{ fd --type f --hidden } file: %{ edit %val{text} }' -docstring "file" +map global goto b ':prompt -buffer-completion buffer: %{ buffer %val{text} }' -docstring "buffer" + +# Fzf Plugin +plug "andreyorst/fzf.kak" config %{ + # map global user f ':fzf-modev' -docstring 'fzf file in project' + map global user b ':fzf-modeb' -docstring 'fzf current buffers' + + map global user / ':fzf-modeg' -docstring 'fzf search in project' + + # def fzf_file %{ + # evaluate-commands %sh{ + # printf "%s\n" ":fzf-mode:fzf -items-cmd fd" + # } + # } + +# Change FZF colors +# FZF_DEFAULT_OPTS=" \ +# --color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \ +# --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \ +# --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8" +} + + + +plug "alexherbo2/auto-pairs.kak" %{ + enable-auto-pairs +} + +plug "https://github.com/h-youhei/kakoune-surround" + +map global normal ':surround' + +# Custom scripts +source "~/.config/kak/rc/fzf_git.kak" diff --git a/dotfiles/kak/rc/fzf_git.kak b/dotfiles/kak/rc/fzf_git.kak new file mode 100644 index 0000000..df816dc --- /dev/null +++ b/dotfiles/kak/rc/fzf_git.kak @@ -0,0 +1,60 @@ + +define-command fzzf -params .. %{ evaluate-commands %sh{ + + while [ $# -gt 0 ]; do + case $1 in + (-items-cmd) shift; items_cmd="$1" ;; + esac + shift + done + + # fzf_tmp=$(mktemp -d "${TMPDIR:-/tmp}"/fzfgit.kak.XXXXXX) + # fzfcmd="${fzf_tmp}/fzfcmd" + # result="${fzf_tmp}/result" + + # ( + # shell_path="$(command -v sh)" + # if [ -n "${shell_path}" ]; then + # # portable shebang + # printf "%s\n" "#!${shell_path}" + # # set SHELL because fzf preview uses it + # printf "%s\n" "SHELL=${shell_path}" + # fi + # # compose entire fzf command with all args into single file which will be executed later + # # printf "%s\n" "export FZF_DEFAULT_OPTS=\"${kak_opt_fzf_default_opts:-}\"" + # printf "%s\n" "cd \"${PWD}\" && $items_cmd | fzf > $result" + # printf "%s\n" "evaluate-commands -client ${kak_client} edit -existing $file" | kak -p "${kak_session}" + # printf "%s\n" "rm ${fzfcmd}" + # printf "%s\n" "fg" + # ) >> "${fzfcmd}" + # chmod 755 "${fzfcmd}" + + kill -TSTP $kak_client_pid + cd `pwd` && $items_cmd | \ + fzf | \ + xargs printf "evaluate-commands -client ${kak_client} edit -existing %s\n" | \ + kak -p + fg + + # cmd="terminal $fzfcmd" + + # Tells kakoune to open a terminal and run $fzfcmd + # printf "%s\n" "$fzfcmd" + + # ( while [ -e "${fzfcmd}" ]; do sleep 0.1; done + # # printf "%s\n" "evaluate-commands -client ${kak_client} edit -existing ~/out.txt" | kak -p "${kak_session}" + # if [ -s "${result}" ]; then + # file=$(cat $result) + # printf "%s\n" "evaluate-commands -client ${kak_client} edit -existing $file" | kak -p "${kak_session}" + + # fi + # rm -rf $fzf_temp + # ) > /dev/null 2>&1 < /dev/null & + + # Bring kakoune back into the foreground +}} + +# define-command fzf-project %{ fzzf -items-cmd 'fd -tfile' } + +# map global user f ':fzf-project' -docstring 'fzf current project' + diff --git a/dotfiles/keepassxc/keepassxc.ini b/dotfiles/keepassxc/keepassxc.ini index a2ca54b..7973d0c 100644 --- a/dotfiles/keepassxc/keepassxc.ini +++ b/dotfiles/keepassxc/keepassxc.ini @@ -17,5 +17,5 @@ QuietSuccess=true [PasswordGenerator] AdditionalChars= ExcludedChars= -Length=20 +Length=25 SpecialChars=false diff --git a/dotfiles/mako/config b/dotfiles/mako/config new file mode 100644 index 0000000..ae4922a --- /dev/null +++ b/dotfiles/mako/config @@ -0,0 +1,23 @@ +font=UbuntuMono 12.5 + +background-color=#404552 +text-color=#e5e9f0 +width=315 +height=200 +padding=10 +margin=10 +progress-color=over #eceff480 +icon-path=/usr/share/icons/Arc-X-D +max-icon-size=70 +layer=overlay + +border-size=5 +border-radius=0 +border-color=#5294e2 + +default-timeout=5000 + +[urgency=high] + +ignore-timeout=1 + diff --git a/dotfiles/waybar/scripts/power-menu.sh b/dotfiles/waybar/scripts/power-menu.sh index edaa5d6..02fb20f 100755 --- a/dotfiles/waybar/scripts/power-menu.sh +++ b/dotfiles/waybar/scripts/power-menu.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash entries="Logout Suspend Reboot Shutdown" diff --git a/flake.lock b/flake.lock index 8b4ed22..50cfd9a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,43 +1,5 @@ { "nodes": { - "firefox-addons": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "dir": "pkgs/firefox-addons", - "lastModified": 1702612985, - "narHash": "sha256-dnlw/lHJO2Fk/jUHzkz4dYKHF4nQxmHps9Jx8zldoo4=", - "owner": "rycee", - "repo": "nur-expressions", - "rev": "ae18cb76153e8dda888a313daac932ba358002ae", - "type": "gitlab" - }, - "original": { - "dir": "pkgs/firefox-addons", - "owner": "rycee", - "repo": "nur-expressions", - "type": "gitlab" - } - }, - "flake-utils": { - "locked": { - "lastModified": 1629284811, - "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -45,11 +7,11 @@ ] }, "locked": { - "lastModified": 1702538064, - "narHash": "sha256-At5GwJPu2tzvS9dllhBoZmqK6lkkh/sOp2YefWRlaL8=", + "lastModified": 1702735279, + "narHash": "sha256-SztEzDOE/6bDNnWWvnRbSHPVrgewLwdSei1sxoZFejM=", "owner": "nix-community", "repo": "home-manager", - "rev": "0e2e443ff24f9d75925e91b89d1da44b863734af", + "rev": "e9b9ecef4295a835ab073814f100498716b05a96", "type": "github" }, "original": { @@ -90,12 +52,27 @@ "type": "github" } }, + "nur": { + "locked": { + "lastModified": 1702770334, + "narHash": "sha256-MVILxIF9ZVIk0f9w3yYZpy8auwxgey0MFzdoIFFvQNU=", + "owner": "nix-community", + "repo": "NUR", + "rev": "1d37444620523278aa163bb9e30104f5d1152061", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "root": { "inputs": { - "firefox-addons": "firefox-addons", "home-manager": "home-manager", "nixpkgs": "nixpkgs", - "nixpkgs-stable": "nixpkgs-stable" + "nixpkgs-stable": "nixpkgs-stable", + "nur": "nur" } } }, diff --git a/flake.nix b/flake.nix index ef896b4..33b790d 100644 --- a/flake.nix +++ b/flake.nix @@ -6,18 +6,20 @@ nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11"; + nur.url = "github:nix-community/NUR"; + home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - firefox-addons = { - url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + # firefox-addons = { + # url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + # inputs.nixpkgs.follows = "nixpkgs"; + # }; }; - outputs = { self, nixpkgs, nixpkgs-stable, home-manager, ... } @ inputs: + outputs = { self, nixpkgs, nixpkgs-stable, nur, home-manager, ... } @ inputs: let inherit (self) outputs; system = "x86_64-linux"; @@ -37,6 +39,7 @@ nixServer = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ + # nixpkgs.overlays = [ nur.overlay ]; ./nixos/server_configuration.nix inputs.home-manager.nixosModules.default ]; diff --git a/modules/apps/firefox/firefox.nix b/modules/apps/firefox/firefox.nix new file mode 100644 index 0000000..0f4758b --- /dev/null +++ b/modules/apps/firefox/firefox.nix @@ -0,0 +1,63 @@ +{lib, config, pkgs, inputs, ...}: +let + cfg = config.firefoxApp; +in +{ + # imports = [ + # inputs.nur.hmModules.nur + # ]; + + options.firefoxApp = { + enable = lib.mkEnableOption "enable firefox browser"; + }; + config = lib.mkIf cfg.enable { + programs.firefox = { + enable = true; + profiles = { + default = { + id = 0; + name = "default"; + isDefault = true; + extensions = with pkgs; [ + nur.repos.rycee.firefox-addons.darkreader + nur.repos.rycee.firefox-addons.keepassxc-browser + nur.repos.crazazy.firefox-addons.ublock-origin + ]; + search = { + # Replace default firefox search engine config with this one + force = true; + default = "Startpage"; + engines = { + "Startpage" = { + urls = [{ + template = "https://www.startpage.com/sp/search?query={searchTerms}"; + }]; + }; + }; + }; + settings = { + "browser.startup.blankWindow" = true; + "browser.startup.homepage" = "about:blank"; + "browser.search.region" = "US"; + "browser.search.isUS" = true; + "distribution.searchplugins.defaultLocale" = "en-US"; + "general.useragent.locale" = "en-US"; + "extensions.activeThemeID" = "{831b8843-7251-4306-9521-e688f18b4aeb}"; + "privacy.trackingprotection.enable" = true; + "privacy.trackingprotection.emailtracking.enable" = true; + "privacy.trackingprotection.socialtracking.enable" = true; + "privacy.clearOnShutdown.cookies" = true; + "browser.safebrowsing.passwords.enabled" = false; + "browser.migrate.interactions.passwords" = false; + "pref.privacy.disable_button.view_passwords" = false; + # "browser.bookmarks.showMobileBookmarks" = true; + # "browser.newtabpage.pinned" = [{ + # title = "NixOS"; + # url = "https://nixos.org"; + # }]; + }; + }; + }; + }; + }; +} diff --git a/modules/home-manager/home.nix b/modules/home-manager/home.nix index fda6f86..49407d2 100644 --- a/modules/home-manager/home.nix +++ b/modules/home-manager/home.nix @@ -4,8 +4,15 @@ # manage. # + # nixpkgs.overlays = [ + # inputs.nur.overlay + # ]; + # nixpkgs.config.allowUnfree = true; # inputs.nixpkgs-stable.config.allowUnfree = true; + imports = [ + ../apps/firefox/firefox.nix + ]; home.username = userName; home.homeDirectory = "/home/${userName}"; @@ -16,29 +23,20 @@ # The home.packages option allows you to install Nix packages into your # environment. + firefoxApp.enable = true; fonts.fontconfig.enable = true; home.packages = with pkgs; [ - bat - inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl - fd - firefox - foot - fzf - htop - kakoune + # nur.repos.crazazy.js.eslint + # inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl + # kakoune keepassxc - libnotify - mako - networkmanagerapplet obs-studio signal-desktop - # steam waybar wofi xfce.thunar # Install fonts (nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; }) - overpass # # You can also create simple shell scripts directly inside your # # configuration. For example, this adds a command 'my-hello' to your @@ -83,6 +81,7 @@ # home.sessionVariables = { EDITOR = "kak"; + XDG_CURRENT_DESKTOP="sway"; }; wayland.windowManager.sway = { @@ -121,6 +120,26 @@ plugins = [ "git" ]; theme = "half-life"; }; + initExtra = '' + alias ask="nix-shell -p python310Packages.openai --run 'python ~/source/python/chat.py'" + + fzf_projects() { + DIR=` + fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \ + xargs dirname | \ + sed 's|$HOME||g' | \ + sort | \ + uniq | \ + fzf --preview 'ls $HOME/{}/README.md 2>/dev/null && bat $HOME/{}/README.md || printf "No README.md file found in this directory\n%s" {}' --preview-window=top | \ + xargs printf "$HOME/%s/" + ` + cd $DIR + } + alias p="fzf_projects source/" + + ### Busykid Bash Functions + + ''; }; } diff --git a/modules/sway/sway_conf.nix b/modules/sway/sway_conf.nix index 8845c5c..3ac499b 100644 --- a/modules/sway/sway_conf.nix +++ b/modules/sway/sway_conf.nix @@ -19,6 +19,10 @@ }; + ### + ## Configuration + ### + config = lib.mkIf config.swaywm.enable { nixpkgs.config.allowUnfree = config.swaywm.useNonFree; @@ -48,9 +52,15 @@ ### environment.systemPackages = with pkgs; lib.lists.flatten [ [ + bash + foot git glib # gsettings grim + libnotify + mako + ncspot + networkmanagerapplet pavucontrol slurp swaylock @@ -58,14 +68,8 @@ wl-clipboard xdg-utils zsh - # Add to gaming only installs - lutris - wine-wayland - # Video utils - davinci-resolve-studio - imv - mpv - gimp + # Fonts + ] config.swaywm.systemPackages # (lib.mkIf config.swaywm.installGaming [ @@ -90,17 +94,6 @@ # kdeconnect setup programs.kdeconnect.enable = true; - # Firewall - # networking.firewall = { - # enable = true; - # allowedTCPPortRanges = [ - # {from = 1714; to = 1764;} # KDE Connnect - # ]; - # allowedUDPPortRanges = [ - # {from = 1714; to = 1764;} # KDE Connnect - # ]; - # }; - ### ## Misc ### diff --git a/modules/user/main_user.nix b/modules/user/main_user.nix index efced75..a2489b7 100644 --- a/modules/user/main_user.nix +++ b/modules/user/main_user.nix @@ -44,6 +44,8 @@ in cfg.userName "video" "audio" + # For android + "adbusers" ]; }) ]; diff --git a/nixos/desktop_configuration.nix b/nixos/desktop_configuration.nix index f96533d..e2c0b39 100644 --- a/nixos/desktop_configuration.nix +++ b/nixos/desktop_configuration.nix @@ -12,10 +12,15 @@ in } ]; + nixpkgs.overlays = [ + inputs.nur.overlay + ]; + imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ../modules/user/main_user.nix ../modules/sway/sway_conf.nix + # inputs.nur.hmModules.nur ]; # Enable flakes feature @@ -44,10 +49,54 @@ in enable = desktop == "sway"; useNonFree = true; installGaming = gaming; - systemPackages = [ - pkgs.libreoffice + systemPackages = with pkgs; [ + # Dev Tools + dbeaver + cargo + kakoune + # flutter + docker + docker-compose + python310 + nodejs_21 + ### LSP's + rnix-lsp # Nix LSP + nodePackages.typescript-language-server + vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp + rubyPackages.solargraph + python310Packages.python-lsp-server + ### Misc + # android-udev-rules + # android-tools + # sdkmanager + + # Productivity + libreoffice + + # Gaming + wine-wayland + + # Better Unix + bat + duf + fd + fzf + lsd + ripgrep + gtop + + # Photo / Video + davinci-resolve-studio + imv + mpv + gimp + + # Work + slack ]; }; + + programs.adb.enable = true; system.stateVersion = "23.11"; # Did you read the comment? }