diff options
Diffstat (limited to 'users/seth/module/programs')
| -rw-r--r-- | users/seth/module/programs/bat.nix | 18 | ||||
| -rw-r--r-- | users/seth/module/programs/chromium.nix | 35 | ||||
| -rw-r--r-- | users/seth/module/programs/default.nix | 62 | ||||
| -rw-r--r-- | users/seth/module/programs/eza.nix | 19 | ||||
| -rw-r--r-- | users/seth/module/programs/firefox/arkenfox.nix | 73 | ||||
| -rw-r--r-- | users/seth/module/programs/firefox/default.nix | 54 | ||||
| -rw-r--r-- | users/seth/module/programs/git.nix | 54 | ||||
| -rw-r--r-- | users/seth/module/programs/gpg.nix | 26 | ||||
| -rw-r--r-- | users/seth/module/programs/mangohud.nix | 31 | ||||
| -rw-r--r-- | users/seth/module/programs/neovim.nix | 30 | ||||
| -rw-r--r-- | users/seth/module/programs/ssh.nix | 51 | ||||
| -rw-r--r-- | users/seth/module/programs/starship/default.nix | 28 | ||||
| -rw-r--r-- | users/seth/module/programs/starship/starship.toml | 272 | ||||
| -rw-r--r-- | users/seth/module/programs/vim.nix | 43 | ||||
| -rw-r--r-- | users/seth/module/programs/vscode.nix | 23 |
15 files changed, 819 insertions, 0 deletions
diff --git a/users/seth/module/programs/bat.nix b/users/seth/module/programs/bat.nix new file mode 100644 index 0000000..267eb57 --- /dev/null +++ b/users/seth/module/programs/bat.nix @@ -0,0 +1,18 @@ +{ + config, + lib, + ... +}: let + cfg = config.seth.programs.bat; +in { + options.seth.programs.bat = { + enable = lib.mkEnableOption "bat configuration" // {default = true;}; + }; + + config = lib.mkIf cfg.enable { + programs.bat = { + enable = true; + catppuccin.enable = true; + }; + }; +} diff --git a/users/seth/module/programs/chromium.nix b/users/seth/module/programs/chromium.nix new file mode 100644 index 0000000..5c44dec --- /dev/null +++ b/users/seth/module/programs/chromium.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.seth.programs.chromium; +in { + options.seth.programs.chromium = { + enable = + lib.mkEnableOption "Chromium configuration" + // { + default = config.seth.desktop.enable; + }; + }; + + config = lib.mkIf cfg.enable { + programs.chromium = { + enable = true; + + dictionaries = [pkgs.hunspellDictsChromium.en_US]; + + extensions = [ + # ublock origin + {id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} + # bitwarden + {id = "nngceckbapebfimnlniiiahkandclblb";} + # floccus bookmark sync + {id = "fnaicdffflnofjppbagibeoednhnbjhg";} + # tabby cat + {id = "mefhakmgclhhfbdadeojlkbllmecialg";} + ]; + }; + }; +} diff --git a/users/seth/module/programs/default.nix b/users/seth/module/programs/default.nix new file mode 100644 index 0000000..38556cf --- /dev/null +++ b/users/seth/module/programs/default.nix @@ -0,0 +1,62 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: let + cfg = config.seth.programs; +in { + options.seth.programs = { + basePrograms.enable = lib.mkEnableOption "Base programs and configurations" // {default = true;}; + }; + + imports = [ + inputs.catppuccin.homeManagerModules.catppuccin + inputs.nix-index-database.hmModules.nix-index + ./bat.nix + ./chromium.nix + ./eza.nix + ./firefox + ./git.nix + ./gpg.nix + ./mangohud.nix + ./neovim.nix + ./ssh.nix + ./starship + ./vim.nix + ./vscode.nix + ]; + + config = lib.mkIf cfg.basePrograms.enable { + home.packages = with pkgs; [ + fd + nix-output-monitor + nurl + rclone + restic + ]; + + catppuccin.flavour = "mocha"; + + programs = { + btop = { + enable = true; + catppuccin.enable = true; + }; + + direnv = { + enable = true; + nix-direnv.enable = true; + }; + + glamour.catppuccin.enable = true; + + ripgrep.enable = true; + + nix-index-database.comma.enable = true; + }; + + xdg.enable = true; + }; +} diff --git a/users/seth/module/programs/eza.nix b/users/seth/module/programs/eza.nix new file mode 100644 index 0000000..32fd664 --- /dev/null +++ b/users/seth/module/programs/eza.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: let + cfg = config.seth.programs.eza; +in { + options.seth.programs.eza = { + enable = lib.mkEnableOption "eza configuration" // {default = true;}; + }; + + config = lib.mkIf cfg.enable { + programs.eza = { + enable = true; + enableAliases = true; + icons = true; + }; + }; +} diff --git a/users/seth/module/programs/firefox/arkenfox.nix b/users/seth/module/programs/firefox/arkenfox.nix new file mode 100644 index 0000000..eb17666 --- /dev/null +++ b/users/seth/module/programs/firefox/arkenfox.nix @@ -0,0 +1,73 @@ +{ + config, + lib, + inputs, + ... +}: let + cfg = config.seth.programs.firefox.arkenfox; +in { + imports = [inputs.arkenfox.hmModules.arkenfox]; + + options.seth.programs.firefox.arkenfox = { + enable = + lib.mkEnableOption "Arkenfox settings for Firefox" + // { + default = config.seth.programs.firefox.enable; + }; + }; + + config = lib.mkIf cfg.enable { + programs.firefox = { + arkenfox = { + enable = true; + version = "119.0"; + }; + + profiles.arkenfox.arkenfox = let + enableSections = sections: lib.genAttrs sections (_: {enable = true;}); + in + lib.recursiveUpdate { + enable = true; + + # enable safe browsing + "0400"."0403"."browser.safebrowsing.downloads.remote.enabled".value = true; + + # fix hulu + "1200"."1201"."security.ssl.require_safe_negotiation".value = false; + + "2600"."2651"."browser.download.useDownloadDir" = { + enable = true; + value = true; + }; + + # disable rfp letterboxing + "4500"."4504"."privacy.resistFingerprinting.letterboxing".value = false; + + "5000" = { + "5003"."signon.rememberSignons".enable = true; + # enable search autocomplete + "5021"."keyword.enabled".value = true; + }; + } (enableSections [ + "0100" + "0200" + "0300" + "0400" + "0600" + "0700" + "0800" + "0900" + "1000" + "1200" + "1600" + "1700" + "2000" + "2400" + "2600" + "2700" + "2800" + "4500" + ]); + }; + }; +} diff --git a/users/seth/module/programs/firefox/default.nix b/users/seth/module/programs/firefox/default.nix new file mode 100644 index 0000000..fed31c5 --- /dev/null +++ b/users/seth/module/programs/firefox/default.nix @@ -0,0 +1,54 @@ +{ + config, + lib, + inputs, + pkgs, + ... +}: let + cfg = config.seth.programs.firefox; + + inherit (pkgs.stdenv.hostPlatform) system; +in { + options.seth.programs.firefox = { + enable = + lib.mkEnableOption "Firefox configuration" + // { + default = config.seth.desktop.enable; + }; + }; + + imports = [ + ./arkenfox.nix + ]; + + config = lib.mkIf cfg.enable { + home.sessionVariables = { + MOZ_ENABLE_WAYLAND = "1"; + }; + + programs.firefox = { + enable = true; + profiles.arkenfox = { + extensions = with inputs.firefox-addons.packages.${system}; [ + bitwarden + floccus + ublock-origin + ]; + + isDefault = true; + + settings = { + # disable firefox accounts & pocket + "extensions.pocket.enabled" = false; + "identity.fxaccounts.enabled" = false; + + # hw accel + "media.ffmpeg.vaapi.enabled" = true; + + # widevine drm + "media.gmp-widevinecdm.enabled" = true; + }; + }; + }; + }; +} diff --git a/users/seth/module/programs/git.nix b/users/seth/module/programs/git.nix new file mode 100644 index 0000000..8ba6587 --- /dev/null +++ b/users/seth/module/programs/git.nix @@ -0,0 +1,54 @@ +{ + config, + lib, + ... +}: let + cfg = config.seth.programs.git; +in { + options.seth.programs.git = { + enable = lib.mkEnableOption "Git configuration settings" // {default = true;}; + gh.enable = lib.mkEnableOption "GitHub CLI support" // {default = true;}; + }; + + config = lib.mkIf cfg.enable { + programs = { + gh = lib.mkIf cfg.gh.enable { + enable = true; + settings = { + git_protocol = "https"; + editor = "nvim"; + prompt = "enabled"; + # workaround for https://github.com/nix-community/home-manager/issues/474 + version = 1; + }; + + gitCredentialHelper = { + enable = true; + hosts = ["https://github.com" "https://github.example.com"]; + }; + }; + + git = { + enable = true; + + difftastic = { + enable = true; + background = "dark"; + display = "inline"; + }; + + extraConfig = { + init = {defaultBranch = "main";}; + }; + + signing = { + key = "D31BD0D494BBEE86"; + signByDefault = true; + }; + + userEmail = "[email protected]"; + userName = "seth"; + }; + }; + }; +} diff --git a/users/seth/module/programs/gpg.nix b/users/seth/module/programs/gpg.nix new file mode 100644 index 0000000..b259525 --- /dev/null +++ b/users/seth/module/programs/gpg.nix @@ -0,0 +1,26 @@ +{ + config, + lib, + pkgs, + osConfig, + ... +}: let + cfg = config.seth.programs.gpg; +in { + options.seth.programs.gpg = { + enable = lib.mkEnableOption "GnuPG configuration" // {default = true;}; + }; + + config = lib.mkIf cfg.enable { + programs.gpg.enable = true; + + services.gpg-agent = lib.mkIf pkgs.stdenv.isLinux { + enable = true; + + pinentryFlavor = + if osConfig ? programs + then osConfig.programs.gnupg.agent.pinentryFlavor or "curses" + else "curses"; + }; + }; +} diff --git a/users/seth/module/programs/mangohud.nix b/users/seth/module/programs/mangohud.nix new file mode 100644 index 0000000..f104823 --- /dev/null +++ b/users/seth/module/programs/mangohud.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + ... +}: let + cfg = config.seth.programs.mangohud; +in { + options.seth.programs.mangohud = { + enable = + lib.mkEnableOption "MangoHud configuration" + // { + default = config.seth.desktop.enable; + }; + }; + + config = lib.mkIf cfg.enable { + programs.mangohud = { + enable = true; + settings = { + cpu_stats = true; + cpu_temp = true; + gpu_stats = true; + gpu_temp = true; + fps = true; + frametime = true; + media_player = true; + media_player_name = "spotify"; + }; + }; + }; +} diff --git a/users/seth/module/programs/neovim.nix b/users/seth/module/programs/neovim.nix new file mode 100644 index 0000000..6220853 --- /dev/null +++ b/users/seth/module/programs/neovim.nix @@ -0,0 +1,30 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: let + cfg = config.seth.programs.neovim; + inherit (pkgs.stdenv.hostPlatform) system; +in { + options.seth.programs.neovim = { + enable = lib.mkEnableOption "Neovim configuration" // {default = true;}; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ + (let + getchvim = inputs.getchvim.packages.${system}.default; + in + # remove desktop file + pkgs.symlinkJoin { + name = "${getchvim.name}-nodesktop"; + paths = [getchvim]; + postBuild = '' + rm -rf $out/share/{applications,icons} + ''; + }) + ]; + }; +} diff --git a/users/seth/module/programs/ssh.nix b/users/seth/module/programs/ssh.nix new file mode 100644 index 0000000..48f167c --- /dev/null +++ b/users/seth/module/programs/ssh.nix @@ -0,0 +1,51 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.seth.programs.ssh; +in { + options.seth.programs.ssh = { + enable = lib.mkEnableOption "SSH configuration" // {default = true;}; + }; + + config = lib.mkIf cfg.enable { + programs.ssh = { + enable = true; + package = pkgs.openssh; + + matchBlocks = let + sshDir = "${config.home.homeDirectory}/.ssh"; + in { + # git forges + "codeberg.org" = { + identityFile = "${sshDir}/codeberg"; + user = "git"; + }; + + # linux packaging + "aur.archlinux.org" = { + identityFile = "${sshDir}/aur"; + user = "aur"; + }; + + "pagure.io" = { + identityFile = "${sshDir}/copr"; + user = "git"; + }; + + # router + "192.168.1.1" = { + identityFile = "${sshDir}/openwrt"; + user = "root"; + }; + + # servers + "atlas".user = "atlas"; + }; + }; + + services.ssh-agent.enable = pkgs.stdenv.isLinux; + }; +} diff --git a/users/seth/module/programs/starship/default.nix b/users/seth/module/programs/starship/default.nix new file mode 100644 index 0000000..8f6e78c --- /dev/null +++ b/users/seth/module/programs/starship/default.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + ... +}: let + cfg = config.seth.programs.starship; +in { + options.seth.programs.starship = { + enable = lib.mkEnableOption "Starship configuration" // {default = true;}; + }; + + config = lib.mkIf cfg.enable { + programs.starship = { + enable = true; + + enableBashIntegration = false; + enableZshIntegration = false; + + settings = + { + format = "$all"; + palette = "catppuccin_mocha"; + command_timeout = 250; + } + // fromTOML (builtins.readFile ./starship.toml); + }; + }; +} diff --git a/users/seth/module/programs/starship/starship.toml b/users/seth/module/programs/starship/starship.toml new file mode 100644 index 0000000..db66325 --- /dev/null +++ b/users/seth/module/programs/starship/starship.toml @@ -0,0 +1,272 @@ +# part of this is from catppuccin's starship port + +# MIT License +# +# Copyright (c) 2021 Catppuccin +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +[aws] +symbol = " " + +[buf] +format = "via [$symbol]($style)" +symbol = " " + +[bun] +format = "via [$symbol]($style)" + +[c] +symbol = " " + +[cmake] +format = "via [$symbol]($style)" + +[cobol] +format = "via [$symbol]($style)" + +[conda] +symbol = " " + +[crystal] +format = "via [$symbol]($style)" + +[daml] +format = "via [$symbol]($style)" + +[dart] +format = "via [$symbol]($style)" +symbol = " " + +[deno] +format = "via [$symbol]($style)" + +[directory] +read_only = " " + +[docker_context] +symbol = " " + +[dotnet] +format = "[$symbol(🎯 $tfm )]($style)" + +[elixir] +format = "via [$symbol]($style)" +symbol = " " + +[elm] +format = "via [$symbol]($style)" +symbol = " " + +[erlang] +format = "via [$symbol]($style)" + +[fennel] +format = "via [$symbol]($style)" + +[fossil_branch] +symbol = " " + +[git_branch] +symbol = " " + +[golang] +format = "via [$symbol]($style)" +symbol = " " + +[gradle] +format = "via [$symbol]($style)" + +[guix_shell] +symbol = " " + +[haskell] +symbol = " " + +[haxe] +format = "via [$symbol]($style)" +symbol = "⌘ " + +[helm] +format = "via [$symbol]($style)" + +[hg_branch] +symbol = " " + +[java] +symbol = " " + +[julia] +format = "via [$symbol]($style)" +symbol = " " + +[kotlin] +format = "via [$symbol]($style)" + +[lua] +format = "via [$symbol]($style)" +symbol = " " + +[memory_usage] +symbol = " " + +[meson] +format = "via [$symbol]($style)" +symbol = "喝 " + +[nim] +format = "via [$symbol]($style)" +symbol = " " + +[nix_shell] +symbol = " " + +[nodejs] +format = "via [$symbol]($style)" +symbol = " " + +[ocaml] +format = "via [$symbol(\\($switch_indicator$switch_name\\) )]($style)" + +[opa] +format = "via [$symbol]($style)" + +[os.symbols] +Alpine = " " +Amazon = " " +Android = " " +Arch = " " +CentOS = " " +Debian = " " +DragonFly = " " +Emscripten = " " +EndeavourOS = " " +Fedora = " " +FreeBSD = " " +Garuda = " " +Gentoo = " " +HardenedBSD = "ﲊ " +Illumos = " " +Linux = " " +Macos = " " +Manjaro = " " +Mariner = " " +MidnightBSD = " " +Mint = " " +NetBSD = " " +NixOS = " " +OpenBSD = " " +OracleLinux = " " +Pop = " " +Raspbian = " " +RedHatEnterprise = " " +Redhat = " " +Redox = " " +SUSE = " " +Solus = "ﴱ " +Ubuntu = " " +Unknown = " " +Windows = " " +openSUSE = " " + +[package] +symbol = " " + +[palettes.catppuccin_mocha] +base = "#1e1e2e" +blue = "#89b4fa" +crust = "#11111b" +flamingo = "#f2cdcd" +green = "#a6e3a1" +lavender = "#b4befe" +mantle = "#181825" +maroon = "#eba0ac" +mauve = "#cba6f7" +overlay0 = "#6c7086" +overlay1 = "#7f849c" +overlay2 = "#9399b2" +peach = "#fab387" +pink = "#f5c2e7" +red = "#f38ba8" +rosewater = "#f5e0dc" +sapphire = "#74c7ec" +sky = "#89dceb" +subtext0 = "#a6adc8" +subtext1 = "#bac2de" +surface0 = "#313244" +surface1 = "#45475a" +surface2 = "#585b70" +teal = "#94e2d5" +text = "#cdd6f4" +yellow = "#f9e2af" + +[perl] +format = "via [$symbol]($style)" + +[php] +format = "via [$symbol]($style)" + +[pijul_channel] +symbol = "🪺 " + +[pulumi] +format = "via [$symbol$stack]($style)" + +[purescript] +format = "via [$symbol]($style)" + +[python] +format = "via [$symbol]($style)" +symbol = " " + +[raku] +format = "via [$symbol]($style)" + +[red] +format = "via [$symbol]($style)" + +[rlang] +format = "via [$symbol]($style)" +symbol = "ﳒ " + +[ruby] +format = "via [$symbol]($style)" +symbol = " " + +[rust] +format = "via [$symbol]($style)" +symbol = " " + +[scala] +symbol = " " + +[spack] +symbol = "🅢 " + +[swift] +format = "via [$symbol]($style)" + +[vagrant] +format = "via [$symbol]($style)" + +[vlang] +format = "via [$symbol]($style)" + +[zig] +format = "via [$symbol]($style)" diff --git a/users/seth/module/programs/vim.nix b/users/seth/module/programs/vim.nix new file mode 100644 index 0000000..b8a198e --- /dev/null +++ b/users/seth/module/programs/vim.nix @@ -0,0 +1,43 @@ +{ + config, + lib, + ... +}: let + cfg = config.seth.programs.vim; + inherit (config.xdg) configHome dataHome stateHome; +in { + options.seth.programs.vim = { + enable = lib.mkEnableOption "Vim configuration" // {default = true;}; + }; + + config = lib.mkIf cfg.enable { + programs.vim = { + enable = true; + settings = { + expandtab = false; + shiftwidth = 2; + tabstop = 2; + }; + extraConfig = '' + " https://wiki.archlinux.org/title/XDG_Base_Directory + set runtimepath^=${configHome}/vim + set runtimepath+=${dataHome}/vim + set runtimepath+=${configHome}/vim/after + + set packpath^=${dataHome}/vim,${configHome}/vim + set packpath+=${configHome}/vim/after,${dataHome}/vim/after + set packpath^=${dataHome}/vim,${configHome}/vim + set packpath+=${configHome}/vim/after,${dataHome}/vim/after + + let g:netrw_home = "${dataHome}/vim" + call mkdir("${dataHome}/vim/spell", 'p') + + set backupdir=${stateHome}/vim/backup | call mkdir(&backupdir, 'p') + set directory=${stateHome}/vim/swap | call mkdir(&directory, 'p') + set undodir=${stateHome}/vim/undo | call mkdir(&undodir, 'p') + set viewdir=${stateHome}/vim/view | call mkdir(&viewdir, 'p') + set viminfofile=${stateHome}/vim/viminfo + ''; + }; + }; +} diff --git a/users/seth/module/programs/vscode.nix b/users/seth/module/programs/vscode.nix new file mode 100644 index 0000000..a2be13c --- /dev/null +++ b/users/seth/module/programs/vscode.nix @@ -0,0 +1,23 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.seth.programs.vscode; +in { + options.seth.programs.vscode = { + enable = + lib.mkEnableOption "VSCode configuration" + // { + default = config.seth.desktop.enable; + }; + }; + + config = lib.mkIf cfg.enable { + programs.vscode = { + enable = true; + package = pkgs.vscode.fhs; + }; + }; +} |
