diff options
| author | Seth Flynn <[email protected]> | 2025-02-14 01:18:47 -0500 |
|---|---|---|
| committer | Seth Flynn <[email protected]> | 2025-02-14 01:29:06 -0500 |
| commit | 3e208d20934bedd8cd7769f23f35cfae9d8e7d0d (patch) | |
| tree | 452399d770df6be2589be3c92771b1999dd1b93a /users | |
| parent | c1bea770122a7cf2dea5113387265f59010d5a7f (diff) | |
seth: simplify module structure
Moving to mixins generally reduces the boilerplate in all
configurations, and less custom "stuff"
These are then enabled by the regular options in programs.nix for
example
Many of the other options (like desktops) also had little use in being
abstracted as there's no situation where I'd *not* want them to be
applied when said desktop is in use
Diffstat (limited to 'users')
51 files changed, 845 insertions, 1059 deletions
diff --git a/users/seth/custom/adw-gtk3.nix b/users/seth/custom/adw-gtk3.nix new file mode 100644 index 0000000..aad0d1a --- /dev/null +++ b/users/seth/custom/adw-gtk3.nix @@ -0,0 +1,44 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.seth.adw-gtk3; +in + +{ + options.seth.adw-gtk3 = { + enable = lib.mkEnableOption "the use of the `adw-gtk3` GTK theme"; + + mode = lib.mkOption { + type = lib.types.enum [ + "light" + "dark" + ]; + default = "dark"; + description = "Mode of the adw-gtk3 theme"; + example = "light"; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = config.gtk.enable; + message = "`gtk.enable` must be `true` to apply the adw-gtk3 theme"; + } + ]; + + gtk = { + enable = true; + + theme = { + name = "adw-gtk3-dark"; + package = pkgs.adw-gtk3; + }; + }; + }; +} diff --git a/users/seth/tweaks/default.nix b/users/seth/custom/default.nix index 5fe72e7..f7545cb 100644 --- a/users/seth/tweaks/default.nix +++ b/users/seth/custom/default.nix @@ -1,7 +1,7 @@ { imports = [ - ./adwaita-ize.nix - ./catppuccin.nix + ./adw-gtk3.nix ./nix-override.nix + ./standalone.nix ]; } diff --git a/users/seth/tweaks/nix-override.nix b/users/seth/custom/nix-override.nix index 47f5c69..7457cdd 100644 --- a/users/seth/tweaks/nix-override.nix +++ b/users/seth/custom/nix-override.nix @@ -4,11 +4,13 @@ pkgs, ... }: + let - cfg = config.seth.tweaks.nix-override; + cfg = config.seth.nix-override; in + { - options.seth.tweaks.nix-override = { + options.seth.nix-override = { enable = lib.mkEnableOption "the use of a non-default implementation of Nix"; package = lib.mkPackageOption pkgs "lix" { }; }; diff --git a/users/seth/custom/standalone.nix b/users/seth/custom/standalone.nix new file mode 100644 index 0000000..6bb85a1 --- /dev/null +++ b/users/seth/custom/standalone.nix @@ -0,0 +1,36 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.seth.standalone; + + inherit (pkgs.stdenv.hostPlatform) isDarwin; +in + +{ + + options.seth.standalone = { + enable = lib.mkEnableOption "standalone configuration mode"; + }; + + config = lib.mkIf cfg.enable { + # This won't be set in standalone configurations + _module.args.osConfig = { }; + + # Make sure we can switch & update + programs.home-manager.enable = true; + + home = { + username = "seth"; + homeDirectory = (if isDarwin then "/Users" else "/home") + "/${config.home.username}"; + }; + + nix = { + package = lib.mkDefault pkgs.nix; + }; + }; +} diff --git a/users/seth/default.nix b/users/seth/default.nix index 2afbbce..31df645 100644 --- a/users/seth/default.nix +++ b/users/seth/default.nix @@ -1,69 +1,11 @@ { - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth; -in -{ - options.seth = { - enable = lib.mkEnableOption "Seth's home configuration"; - - shellAliases.enable = lib.mkEnableOption "shell aliases" // { - default = config.seth.enable; - defaultText = lib.literalExpression "config.seth.enable"; - }; - - shellVariables.enable = lib.mkEnableOption "shell variables" // { - default = config.seth.enable; - defaultText = lib.literalExpression "config.seth.enable"; - }; - - standalone.enable = lib.mkEnableOption "standalone configuration mode"; - }; - imports = [ - ./desktop - ./programs - ./services - ./tweaks + ./custom + ./mixins + ./profiles + ./programs.nix + ./shell.nix ]; - config = lib.mkIf cfg.enable ( - lib.mkMerge [ - { home.stateVersion = "23.11"; } - - (lib.mkIf cfg.shellAliases.enable { - home.shellAliases = { - diff = "diff --color=auto"; - g = "git"; - gs = "g status"; - }; - }) - - (lib.mkIf cfg.shellVariables.enable { - home.sessionVariables = { - EDITOR = "nvim"; - VISUAL = config.home.sessionVariables.EDITOR; - CARGO_HOME = "${config.xdg.dataHome}/cargo"; - LESSHISTFILE = "${config.xdg.stateHome}/less/history"; - }; - }) - - (lib.mkIf cfg.standalone.enable { - # This won't be set in standalone configurations - _module.args.osConfig = { }; - - # Make sure we can switch & update - programs.home-manager.enable = true; - - home = { - username = "seth"; - homeDirectory = (if pkgs.stdenv.isDarwin then "/Users" else "/home") + "/${config.home.username}"; - }; - }) - ] - ); + home.stateVersion = "23.11"; } diff --git a/users/seth/home.nix b/users/seth/home.nix index a6f2537..26cc5fc 100644 --- a/users/seth/home.nix +++ b/users/seth/home.nix @@ -1,16 +1,7 @@ { - config, - lib, - pkgs, - ... -}: -{ imports = [ ./default.nix ]; seth = { - enable = true; standalone.enable = true; }; - - nix = lib.mkIf config.seth.standalone.enable { package = pkgs.nix; }; } diff --git a/users/seth/mixins/bash.nix b/users/seth/mixins/bash.nix new file mode 100644 index 0000000..b278d05 --- /dev/null +++ b/users/seth/mixins/bash.nix @@ -0,0 +1,33 @@ +{ config, lib, ... }: + +{ + config = lib.mkMerge [ + { + programs.bash = { + historyFile = "${config.xdg.stateHome}/bash/history"; + historyFileSize = 1000; + historySize = 100; + + shellOptions = [ + "cdspell" + "checkjobs" + "checkwinsize" + "dirspell" + "globstar" + "histappend" + "no_empty_cmd_completion" + ]; + }; + } + + # TODO: find out if i need this anymore with standalone HM + (lib.mkIf config.seth.standalone.enable { + programs.bash = { + bashrcExtra = '' + nixfile=${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.sh + [ -e "$nixfile" ] && source "$nixfile" + ''; + }; + }) + ]; +} diff --git a/users/seth/desktop/budgie.nix b/users/seth/mixins/budgie.nix index beda82f..c0b1709 100644 --- a/users/seth/desktop/budgie.nix +++ b/users/seth/mixins/budgie.nix @@ -1,7 +1,9 @@ { lib, osConfig, ... }: + let enable = osConfig.services.xserver.desktopManager.budgie.enable or false; in + { config = lib.mkIf enable { dconf = { diff --git a/users/seth/mixins/catppuccin.nix b/users/seth/mixins/catppuccin.nix new file mode 100644 index 0000000..b719c28 --- /dev/null +++ b/users/seth/mixins/catppuccin.nix @@ -0,0 +1,14 @@ +{ inputs, ... }: + +{ + imports = [ + inputs.catppuccin.homeManagerModules.catppuccin + ]; + + catppuccin = { + accent = "mauve"; + flavor = "mocha"; + + chromium.enable = false; + }; +} diff --git a/users/seth/mixins/chromium.nix b/users/seth/mixins/chromium.nix new file mode 100644 index 0000000..e744eb3 --- /dev/null +++ b/users/seth/mixins/chromium.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +{ + programs.chromium = { + dictionaries = [ pkgs.hunspellDictsChromium.en_US ]; + + extensions = [ + # uBlock Origin Lite + { id = "ddkjiahejlhfcafbddmgiahcphecmpfh"; } + # Bitwarden + { id = "nngceckbapebfimnlniiiahkandclblb"; } + # Floccus Bookmark Sync + { id = "fnaicdffflnofjppbagibeoednhnbjhg"; } + # Tabby Cat + { id = "mefhakmgclhhfbdadeojlkbllmecialg"; } + # Startpage + { id = "fgmjlmbojbkmdpofahffgcpkhkngfpef"; } + ]; + }; +} diff --git a/users/seth/mixins/default.nix b/users/seth/mixins/default.nix new file mode 100644 index 0000000..e898b0e --- /dev/null +++ b/users/seth/mixins/default.nix @@ -0,0 +1,23 @@ +{ + imports = [ + ./bash.nix + ./budgie.nix + ./catppuccin.nix + ./chromium.nix + ./firefox + ./fish.nix + ./gh.nix + ./ghostty.nix + ./git.nix + ./gnome.nix + ./gpg.nix + ./mangohud.nix + ./niri.nix + ./nu.nix + ./plasma.nix + ./spotifyd.nix + ./ssh.nix + ./vim.nix + ./zsh.nix + ]; +} diff --git a/users/seth/mixins/firefox/arkenfox.nix b/users/seth/mixins/firefox/arkenfox.nix new file mode 100644 index 0000000..cfb2a0d --- /dev/null +++ b/users/seth/mixins/firefox/arkenfox.nix @@ -0,0 +1,69 @@ +{ + lib, + inputs, + ... +}: + +{ + imports = [ inputs.arkenfox.hmModules.arkenfox ]; + + programs.firefox = { + arkenfox = { + enable = true; + version = "128.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/mixins/firefox/default.nix b/users/seth/mixins/firefox/default.nix new file mode 100644 index 0000000..7d5fb7e --- /dev/null +++ b/users/seth/mixins/firefox/default.nix @@ -0,0 +1,56 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: + +let + inherit (pkgs.stdenv.hostPlatform) isLinux; +in + +{ + imports = [ + inputs.getchpkgs.nixosModules.firefox-addons + # Requires `github:dwarfmaster/arkenfox-nixos` + # ./arkenfox.nix + ]; + + config = lib.mkMerge [ + { + programs.firefox = { + addons = [ + # uBlock Origin + # Bitwarden + "{446900e4-71c2-419f-a6a7-df9c091e268b}" + # Floccus + ]; + + profiles.arkenfox = { + 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; + }; + }; + }; + } + + (lib.mkIf (config.programs.firefox.enable && isLinux) { + home.sessionVariables = { + MOZ_ENABLE_WAYLAND = "1"; + }; + }) + ]; +} diff --git a/users/seth/mixins/fish.nix b/users/seth/mixins/fish.nix new file mode 100644 index 0000000..e02c736 --- /dev/null +++ b/users/seth/mixins/fish.nix @@ -0,0 +1,55 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + config = lib.mkMerge [ + { + programs.fish = { + functions = { + last_history_item.body = "echo $history[1]"; + }; + + interactiveShellInit = '' + set --global hydro_symbol_prompt ">" + + set --global hydro_color_duration $fish_color_end + set --global hydro_color_error $fish_color_error + set --global hydro_color_git cba6f7 + set --global hydro_color_prompt $fish_color_cwd + set --global hydro_color_pwd $fish_color_user + ''; + + plugins = [ + { + name = "hydro"; + inherit (pkgs.fishPlugins.hydro) src; + } + ]; + + shellAbbrs = { + nixgc = "sudo nix-collect-garbage -d && nix-collect-garbage -d"; + "!!" = { + position = "anywhere"; + function = "last_history_item"; + }; + }; + }; + } + + # TODO: Do i still need this weird sourcing? + (lib.mkIf config.seth.standalone.enable { + programs.fish = { + interactiveShellInit = '' + set -l nixfile ${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.fish + if test -e $nixfile + source $nixfile + end + ''; + }; + }) + ]; +} diff --git a/users/seth/mixins/gh.nix b/users/seth/mixins/gh.nix new file mode 100644 index 0000000..f0ee96b --- /dev/null +++ b/users/seth/mixins/gh.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + ... +}: + +{ + programs.gh = { + enable = lib.mkDefault config.programs.git.enable; + + settings = { + git_protocol = "https"; + editor = "nvim"; + prompt = "enabled"; + }; + + gitCredentialHelper = { + enable = true; + hosts = [ + "https://github.com" + "https://github.example.com" + ]; + }; + }; +} diff --git a/users/seth/mixins/ghostty.nix b/users/seth/mixins/ghostty.nix new file mode 100644 index 0000000..aa2a1b8 --- /dev/null +++ b/users/seth/mixins/ghostty.nix @@ -0,0 +1,10 @@ +{ + programs.ghostty = { + enableBashIntegration = true; + enableFishIntegration = true; + + settings = { + bold-is-bright = true; + }; + }; +} diff --git a/users/seth/mixins/git.nix b/users/seth/mixins/git.nix new file mode 100644 index 0000000..9746425 --- /dev/null +++ b/users/seth/mixins/git.nix @@ -0,0 +1,37 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: + +{ + imports = [ inputs.getchpkgs.homeModules.riff ]; + + config = lib.mkMerge [ + { + programs.git = { + riff.enable = true; + + extraConfig = { + init = { + defaultBranch = "main"; + }; + }; + + signing = { + key = "D31BD0D494BBEE86"; + signByDefault = true; + }; + + userEmail = "[email protected]"; + userName = "Seth Flynn"; + }; + } + + (lib.mkIf config.programs.git.enable { + home.packages = [ pkgs.git-branchless ]; + }) + ]; +} diff --git a/users/seth/desktop/gnome.nix b/users/seth/mixins/gnome.nix index 60c3bf9..2214718 100644 --- a/users/seth/desktop/gnome.nix +++ b/users/seth/mixins/gnome.nix @@ -4,9 +4,11 @@ osConfig, ... }: + let enable = osConfig.services.xserver.desktopManager.gnome.enable or false; in + { config = lib.mkIf enable { dconf = { @@ -48,9 +50,6 @@ in }; }; - # Required for adwaita-ize - gtk.enable = true; - home.packages = [ # Torrent client pkgs.fragments @@ -65,9 +64,6 @@ in pkgs.tuba ]; - # The regular Spotify client is weird sometimes - services.spotifyd.enable = true; - - seth.tweaks.adwaita-ize.enable = true; + seth.adw-gtk3.enable = true; }; } diff --git a/users/seth/mixins/gpg.nix b/users/seth/mixins/gpg.nix new file mode 100644 index 0000000..eb36cdc --- /dev/null +++ b/users/seth/mixins/gpg.nix @@ -0,0 +1,22 @@ +{ + config, + lib, + pkgs, + osConfig, + ... +}: + +let + inherit (pkgs.stdenv.hostPlatform) isLinux; +in + +{ + config = lib.mkMerge [ + (lib.mkIf isLinux { + services.gpg-agent = { + enable = lib.mkDefault config.programs.gpg.enable; + pinentryPackage = osConfig.programs.gnupg.agent.pinentryPackage or pkgs.pinentry-curses; + }; + }) + ]; +} diff --git a/users/seth/mixins/mangohud.nix b/users/seth/mixins/mangohud.nix new file mode 100644 index 0000000..2ad6c70 --- /dev/null +++ b/users/seth/mixins/mangohud.nix @@ -0,0 +1,14 @@ +{ + programs.mangohud = { + 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/desktop/niri.nix b/users/seth/mixins/niri.nix index 9ec7d36..22411dd 100644 --- a/users/seth/desktop/niri.nix +++ b/users/seth/mixins/niri.nix @@ -4,9 +4,11 @@ osConfig, ... }: + let enable = osConfig.programs.niri.enable or false; in + { config = lib.mkIf enable { # Set dark theme for Flatpak apps @@ -20,9 +22,6 @@ in }; }; - # Required for adwaita-ize - gtk.enable = true; - home.packages = [ # Torrent client pkgs.fragments @@ -51,12 +50,7 @@ in }; seth = { - # See comment about ncspot - services.spotifyd.enable = true; - - tweaks = { - adwaita-ize.enable = true; - }; + adw-gtk3.enable = true; }; }; } diff --git a/users/seth/mixins/nu.nix b/users/seth/mixins/nu.nix new file mode 100644 index 0000000..ad25ce6 --- /dev/null +++ b/users/seth/mixins/nu.nix @@ -0,0 +1,45 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + theme = "catppuccin-${config.catppuccin.flavor}"; +in + +{ + config = lib.mkMerge [ + { + programs.nushell = { + configFile.text = '' + def "nixgc" [] { + sudo nix-collect-garbage -d; nix-collect-garbage -d + } + ''; + + envFile.text = '' + use ${pkgs.nu_scripts}/share/nu_scripts/themes/nu-themes/${theme}.nu + $env.config.color_config = (${theme}) + ''; + + inherit (config.home) shellAliases; + }; + } + + (lib.mkIf config.programs.nushell.enable { + programs = { + # Wrap it with bash + bash.initExtra = lib.mkAfter '' + if [[ $(ps --no-header --pid=$PPID --format=comm) != "nu" && -z ''${BASH_EXECUTION_STRING} ]]; then + exec ${lib.getExe config.programs.nushell.package} + fi + ''; + + # builtin `ls` is good here! + eza.enable = lib.mkForce false; + }; + }) + ]; +} diff --git a/users/seth/desktop/plasma.nix b/users/seth/mixins/plasma.nix index f3acc36..fe9d69f 100644 --- a/users/seth/desktop/plasma.nix +++ b/users/seth/mixins/plasma.nix @@ -4,9 +4,11 @@ osConfig, ... }: + let enable = osConfig.services.desktopManager.plasma6.enable or false; in + { config = lib.mkIf enable { home.packages = [ diff --git a/users/seth/mixins/spotifyd.nix b/users/seth/mixins/spotifyd.nix new file mode 100644 index 0000000..e2b0972 --- /dev/null +++ b/users/seth/mixins/spotifyd.nix @@ -0,0 +1,12 @@ +{ + services.spotifyd = { + settings = { + # Implicitly use zeroconf + global = { + autoplay = true; + backend = "pulseaudio"; + bitrate = 320; + }; + }; + }; +} diff --git a/users/seth/mixins/ssh.nix b/users/seth/mixins/ssh.nix new file mode 100644 index 0000000..3ae26b2 --- /dev/null +++ b/users/seth/mixins/ssh.nix @@ -0,0 +1,67 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + inherit (pkgs.stdenv.hostPlatform) isLinux; +in + +{ + config = lib.mkMerge [ + { + programs.ssh = { + package = pkgs.openssh; + + matchBlocks = + let + sshDir = "${config.home.homeDirectory}/.ssh"; + in + { + # git forges + "codeberg.org" = { + identityFile = "${sshDir}/codeberg"; + user = "git"; + }; + + "github.com" = { + identityFile = "${sshDir}/github"; + user = "git"; + }; + + # linux packaging + "aur.archlinux.org" = { + identityFile = "${sshDir}/aur"; + user = "aur"; + }; + + "pagure.io" = { + identityFile = "${sshDir}/copr"; + user = "git"; + }; + + # macstadium m1 + "mini.scrumplex.net" = { + identityFile = "${sshDir}/macstadium"; + user = "bob-the-builder"; + }; + + # router + "192.168.1.1" = { + identityFile = "${sshDir}/openwrt"; + user = "root"; + }; + + # servers + "atlas".user = "atlas"; + }; + }; + } + + (lib.mkIf config.programs.ssh.enable { + services.ssh-agent.enable = lib.mkDefault isLinux; + }) + ]; +} diff --git a/users/seth/mixins/vim.nix b/users/seth/mixins/vim.nix new file mode 100644 index 0000000..e3269fc --- /dev/null +++ b/users/seth/mixins/vim.nix @@ -0,0 +1,42 @@ +{ + config, + pkgs, + ... +}: + +let + inherit (config.xdg) configHome dataHome stateHome; +in + +{ + programs.vim = { + packageConfigurable = pkgs.vim; + + 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/mixins/zsh.nix b/users/seth/mixins/zsh.nix new file mode 100644 index 0000000..87b04cb --- /dev/null +++ b/users/seth/mixins/zsh.nix @@ -0,0 +1,100 @@ +{ + config, + pkgs, + ... +}: + +{ + programs.zsh = { + defaultKeymap = "emacs"; + dotDir = ".config/zsh"; + + history = { + expireDuplicatesFirst = true; + path = "${config.xdg.stateHome}/zsh/zsh_history"; + save = 1000; + size = 100; + }; + + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + plugins = [ + { + name = "nix-zsh-completions"; + src = pkgs.nix-zsh-completions; + file = "share/zsh/plugins/nix/nix-zsh-completions.plugin.zsh"; + } + + { + name = "powerlevel10k"; + src = pkgs.zsh-powerlevel10k; + file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; + } + + { + name = "zsh-autopair"; + src = pkgs.zsh-autopair; + file = "share/zsh/zsh-autopair/autopair.zsh"; + } + + { + name = "zsh-completions"; + src = pkgs.zsh-completions; + file = "share/zsh-completions/zsh-completions.plugin.zsh"; + } + ]; + + completionInit = '' + autoload -Uz bashcompinit compinit + local zdump="${config.xdg.cacheHome}/zsh/zdump" + bashcompinit + compinit -d "$zdump" + if [[ ! "$zdump.zwc" -nt "$zdump" ]] + then + zcompile "$zdump" + fi + unset zdump + ''; + + initExtra = '' + if [[ -r "$XDG_CACHE_HOME/p10k-instant-prompt-*.zsh" ]]; then + source "$XDG_CACHE_HOME/p10k-instant-prompt-*.zsh" + fi + autoload -Uz promptinit colors + promptinit + colors + + zmodload zsh/zutil + zmodload zsh/complist + zstyle ":completion::*" group-name "" + zstyle ":completion:*" menu "select" + zstyle ":completion:*" squeeze-slashes "true" + zstyle ":completion::*" use-cache "true" + zstyle ":completion::*" cache-path "$zdump" + + unsetopt beep + unsetopt hist_beep + unsetopt ignore_braces + unsetopt list_beep + setopt always_to_end + setopt prompt_subst + setopt share_history + + # clear backbuffer with ctrl-l + function clear-screen-and-scrollback() { + echoti civis >"$TTY" + printf '%b' '\e[H\e[2J' >"$TTY" + zle .reset-prompt + zle -R + printf '%b' '\e[3J' >"$TTY" + echoti cnorm >"$TTY" + } + + zle -N clear-screen-and-scrollback + bindkey '^L' clear-screen-and-scrollback + + [[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh + ''; + }; +} diff --git a/users/seth/services/default.nix b/users/seth/profiles/default.nix index 5683675..d9e4a2c 100644 --- a/users/seth/services/default.nix +++ b/users/seth/profiles/default.nix @@ -1,5 +1,5 @@ { imports = [ - ./spotifyd.nix + ./nixos.nix ]; } diff --git a/users/seth/desktop/default.nix b/users/seth/profiles/nixos.nix index f4c0126..2a91946 100644 --- a/users/seth/desktop/default.nix +++ b/users/seth/profiles/nixos.nix @@ -5,28 +5,23 @@ osConfig, ... }: + let - cfg = config.seth.desktop; + cfg = config.seth.profiles.nixos; + + isNixOSDesktop = osConfig.services.xserver.enable or false; + hasSteam = osConfig.programs.steam.enable or false; in + { - options.seth.desktop = { - enable = lib.mkEnableOption "desktop (Linux) settings" // { - default = osConfig.services.xserver.enable or false; - defaultText = lib.literalExpression "osConfig.desktop.enable or false"; + options.seth.profiles.nixos = { + enable = lib.mkEnableOption "NixOS profile" // { + default = isNixOSDesktop; + defaultText = lib.literalExpression "osConfig.services.xserver.enable or false"; }; }; - imports = [ - ./budgie.nix - ./gnome.nix - ./niri.nix - ./plasma.nix - ]; - config = lib.mkIf cfg.enable { - # This is meant for Linux - assertions = [ (lib.hm.assertions.assertPlatform "seth.desktop" pkgs lib.platforms.linux) ]; - home.packages = [ (pkgs.discord-canary.overrideAttrs (old: { preInstall = @@ -48,5 +43,11 @@ in ''; }) ]; + + programs = { + chromium.enable = true; + ghostty.enable = true; + mangohud.enable = hasSteam; + }; }; } diff --git a/users/seth/programs.nix b/users/seth/programs.nix new file mode 100644 index 0000000..bd69647 --- /dev/null +++ b/users/seth/programs.nix @@ -0,0 +1,64 @@ +{ + config, + pkgs, + inputs, + inputs', + ... +}: + +{ + imports = [ + inputs.nix-index-database.hmModules.nix-index + ]; + + config = { + catppuccin.enable = true; + + home.packages = with pkgs; [ + ( + let + getchvim = inputs'.getchvim.packages.default; + in + # remove desktop file + pkgs.symlinkJoin { + name = "${getchvim.name}-nodesktop"; + paths = [ getchvim ]; + postBuild = '' + rm -rf $out/share/{applications,icons} + ''; + } + ) + (nurl.override { nix = config.nix.package; }) + + hydra-check + nixfmt-rfc-style + ]; + + programs = { + bat.enable = true; + bash.enable = true; + btop.enable = true; + + direnv = { + enable = true; + nix-direnv.enable = true; + }; + + eza = { + enable = true; + icons = "auto"; + }; + + fd.enable = true; + fish.enable = true; + git.enable = true; + gpg.enable = true; + nix-index-database.comma.enable = true; + ripgrep.enable = true; + ssh.enable = true; + vim.enable = true; + }; + + xdg.enable = true; + }; +} diff --git a/users/seth/programs/bash.nix b/users/seth/programs/bash.nix deleted file mode 100644 index 692ec58..0000000 --- a/users/seth/programs/bash.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.seth.programs.bash; -in -{ - options.seth.programs.bash = { - enable = lib.mkEnableOption "Bash configuration" // { - default = config.seth.enable; - defaultText = lib.literalExpression "config.seth.enable"; - }; - }; - - config = lib.mkIf cfg.enable ( - lib.mkMerge [ - { - programs.bash = { - enable = true; - - historyFile = "${config.xdg.stateHome}/bash/history"; - historyFileSize = 1000; - historySize = 100; - - shellOptions = [ - "cdspell" - "checkjobs" - "checkwinsize" - "dirspell" - "globstar" - "histappend" - "no_empty_cmd_completion" - ]; - }; - } - - # TODO: find out if i need this anymore with standalone HM - (lib.mkIf config.seth.standalone.enable { - programs.bash = { - - bashrcExtra = '' - nixfile=${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.sh - [ -e "$nixfile" ] && source "$nixfile" - ''; - }; - }) - ] - ); -} diff --git a/users/seth/programs/chromium.nix b/users/seth/programs/chromium.nix deleted file mode 100644 index 31b1988..0000000 --- a/users/seth/programs/chromium.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth.programs.chromium; -in -{ - options.seth.programs.chromium = { - enable = lib.mkEnableOption "Chromium configuration" // { - default = config.seth.desktop.enable; - defaultText = lib.literalExpression "config.seth.desktop.enable"; - }; - }; - - config = lib.mkIf cfg.enable { - catppuccin.chromium.enable = false; - - programs.chromium = { - enable = true; - - dictionaries = [ pkgs.hunspellDictsChromium.en_US ]; - - extensions = [ - # uBlock Origin Lite - { id = "ddkjiahejlhfcafbddmgiahcphecmpfh"; } - # Bitwarden - { id = "nngceckbapebfimnlniiiahkandclblb"; } - # Floccus Bookmark Sync - { id = "fnaicdffflnofjppbagibeoednhnbjhg"; } - # Tabby Cat - { id = "mefhakmgclhhfbdadeojlkbllmecialg"; } - # Startpage - { id = "fgmjlmbojbkmdpofahffgcpkhkngfpef"; } - ]; - }; - }; -} diff --git a/users/seth/programs/default.nix b/users/seth/programs/default.nix deleted file mode 100644 index 6900766..0000000 --- a/users/seth/programs/default.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: -{ - imports = [ - inputs.nix-index-database.hmModules.nix-index - - ./bash.nix - ./chromium.nix - ./firefox - ./fish.nix - ./gh.nix - ./ghostty.nix - ./git.nix - ./gpg.nix - ./mangohud.nix - ./neovim.nix - ./nu.nix - ./ssh.nix - ./vim.nix - ./vscode.nix - ./zsh.nix - ]; - - config = lib.mkIf config.seth.enable { - home.packages = with pkgs; [ - hydra-check - nixfmt-rfc-style - (nurl.override { nix = config.nix.package; }) - ]; - - programs = { - bat.enable = lib.mkDefault true; - btop.enable = lib.mkDefault true; - - direnv = { - enable = lib.mkDefault true; - nix-direnv = { - enable = true; - package = pkgs.nix-direnv.override { nix = config.nix.package; }; - }; - }; - - eza = { - enable = lib.mkDefault true; - icons = "auto"; - }; - - fd.enable = lib.mkDefault true; - ripgrep.enable = lib.mkDefault true; - nix-index-database.comma.enable = true; - }; - - xdg.enable = true; - }; -} diff --git a/users/seth/programs/firefox/arkenfox.nix b/users/seth/programs/firefox/arkenfox.nix deleted file mode 100644 index 8ae4af3..0000000 --- a/users/seth/programs/firefox/arkenfox.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - 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 = true; - }; - }; - - config = lib.mkIf cfg.enable { - programs.firefox = { - arkenfox = { - enable = true; - version = "128.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/programs/firefox/default.nix b/users/seth/programs/firefox/default.nix deleted file mode 100644 index 3eff2f3..0000000 --- a/users/seth/programs/firefox/default.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - config, - lib, - inputs, - ... -}: -let - cfg = config.seth.programs.firefox; -in -{ - options.seth.programs.firefox = { - enable = lib.mkEnableOption "Firefox configuration"; - }; - - imports = [ - inputs.getchpkgs.nixosModules.firefox-addons - # Requires `github:dwarfmaster/arkenfox-nixos` - # ./arkenfox.nix - ]; - - config = lib.mkIf cfg.enable { - home.sessionVariables = { - MOZ_ENABLE_WAYLAND = "1"; - }; - - programs.firefox = { - enable = true; - - addons = [ - # uBlock Origin - # Bitwarden - "{446900e4-71c2-419f-a6a7-df9c091e268b}" - # Floccus - ]; - - profiles.arkenfox = { - 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/programs/fish.nix b/users/seth/programs/fish.nix deleted file mode 100644 index f853b1b..0000000 --- a/users/seth/programs/fish.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth.programs.fish; -in -{ - options.seth.programs.fish = { - enable = lib.mkEnableOption "Fish configuration"; - hydro.enable = lib.mkEnableOption "Hydra prompt" // { - default = true; - }; - }; - - config = lib.mkIf cfg.enable ( - lib.mkMerge [ - { - programs.fish = { - enable = true; - - functions = { - last_history_item.body = "echo $history[1]"; - }; - - shellAbbrs = { - nixgc = "sudo nix-collect-garbage -d && nix-collect-garbage -d"; - "!!" = { - position = "anywhere"; - function = "last_history_item"; - }; - }; - }; - } - - (lib.mkIf cfg.hydro.enable { - programs.fish = { - interactiveShellInit = '' - set --global hydro_symbol_prompt ">" - - set --global hydro_color_duration $fish_color_end - set --global hydro_color_error $fish_color_error - set --global hydro_color_git cba6f7 - set --global hydro_color_prompt $fish_color_cwd - set --global hydro_color_pwd $fish_color_user - ''; - - plugins = [ - { - name = "hydro"; - inherit (pkgs.fishPlugins.hydro) src; - } - ]; - }; - }) - - # TODO: do i still need this weird sourcing? - (lib.mkIf config.seth.standalone.enable { - programs.fish = { - interactiveShellInit = '' - set -l nixfile ${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.fish - if test -e $nixfile - source $nixfile - end - ''; - }; - }) - ] - ); -} diff --git a/users/seth/programs/gh.nix b/users/seth/programs/gh.nix deleted file mode 100644 index 8b33162..0000000 --- a/users/seth/programs/gh.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.seth.programs.gh; -in -{ - options.seth.programs.gh = { - enable = lib.mkEnableOption "GitHub CLI" // { - default = config.seth.programs.git.enable; - defaultText = "config.seth.programs.git.enable"; - }; - }; - - config = lib.mkIf cfg.enable { - programs.gh = { - enable = true; - - settings = { - git_protocol = "https"; - editor = "nvim"; - prompt = "enabled"; - }; - - gitCredentialHelper = { - enable = true; - hosts = [ - "https://github.com" - "https://github.example.com" - ]; - }; - }; - }; -} diff --git a/users/seth/programs/ghostty.nix b/users/seth/programs/ghostty.nix deleted file mode 100644 index 0bf480b..0000000 --- a/users/seth/programs/ghostty.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, lib, ... }: - -let - cfg = config.seth.programs.ghostty; -in - -{ - options.seth.programs.ghostty = { - enable = lib.mkEnableOption "Ghostty configuration" // { - default = config.seth.desktop.enable; - defaultText = lib.literalExample "config.seth.desktop.enable"; - }; - }; - - config = lib.mkIf cfg.enable { - programs.ghostty = { - enable = true; - - enableBashIntegration = true; - enableFishIntegration = true; - - settings = { - bold-is-bright = true; - }; - }; - }; -} diff --git a/users/seth/programs/git.nix b/users/seth/programs/git.nix deleted file mode 100644 index e2f7ab0..0000000 --- a/users/seth/programs/git.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: -let - cfg = config.seth.programs.git; -in -{ - imports = [ inputs.getchpkgs.homeModules.riff ]; - - options.seth.programs.git = { - enable = lib.mkEnableOption "Git configuration settings" // { - default = config.seth.enable; - defaultText = lib.literalExpression "config.seth.enable"; - }; - }; - - config = lib.mkIf cfg.enable { - home.packages = [ pkgs.git-branchless ]; - - programs.git = { - enable = true; - - riff.enable = true; - - extraConfig = { - init = { - defaultBranch = "main"; - }; - }; - - signing = { - key = "D31BD0D494BBEE86"; - signByDefault = true; - }; - - userEmail = "[email protected]"; - userName = "Seth Flynn"; - }; - }; -} diff --git a/users/seth/programs/gpg.nix b/users/seth/programs/gpg.nix deleted file mode 100644 index bd4428e..0000000 --- a/users/seth/programs/gpg.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - pkgs, - osConfig, - ... -}: -let - cfg = config.seth.programs.gpg; -in -{ - options.seth.programs.gpg = { - enable = lib.mkEnableOption "GnuPG configuration" // { - default = config.seth.enable; - defaultText = lib.literalExpression "config.seth.enable"; - }; - }; - - config = lib.mkIf cfg.enable { - programs.gpg.enable = true; - - services.gpg-agent = lib.mkIf pkgs.stdenv.isLinux { - enable = true; - pinentryPackage = osConfig.programs.gnupg.agent.pinentryPackage or pkgs.pinentry-curses; - }; - }; -} diff --git a/users/seth/programs/mangohud.nix b/users/seth/programs/mangohud.nix deleted file mode 100644 index eecb780..0000000 --- a/users/seth/programs/mangohud.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.seth.programs.mangohud; -in -{ - options.seth.programs.mangohud = { - enable = lib.mkEnableOption "MangoHud configuration" // { - default = config.seth.desktop.enable; - defaultText = lib.literalExpression "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/programs/neovim.nix b/users/seth/programs/neovim.nix deleted file mode 100644 index 13f0d96..0000000 --- a/users/seth/programs/neovim.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - pkgs, - inputs', - ... -}: -let - cfg = config.seth.programs.neovim; -in -{ - options.seth.programs.neovim = { - enable = lib.mkEnableOption "Neovim configuration" // { - default = config.seth.enable; - defaultText = lib.literalExpression "config.seth.enable"; - }; - }; - - config = lib.mkIf cfg.enable { - home.packages = [ - ( - let - getchvim = inputs'.getchvim.packages.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/programs/nu.nix b/users/seth/programs/nu.nix deleted file mode 100644 index 89a6803..0000000 --- a/users/seth/programs/nu.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth.programs.nushell; - theme = "catppuccin-${config.catppuccin.flavor}"; -in -{ - options.seth.programs.nushell = { - enable = lib.mkEnableOption "Nushell configuration"; - }; - - config = lib.mkIf cfg.enable { - programs = { - nushell = { - enable = true; - - configFile.text = '' - def "nixgc" [] { - sudo nix-collect-garbage -d; nix-collect-garbage -d - } - ''; - - envFile.text = '' - use ${pkgs.nu_scripts}/share/nu_scripts/themes/nu-themes/${theme}.nu - $env.config.color_config = (${theme}) - ''; - - inherit (config.home) shellAliases; - }; - - bash.initExtra = lib.mkAfter '' - if [[ $(ps --no-header --pid=$PPID --format=comm) != "nu" && -z ''${BASH_EXECUTION_STRING} ]]; then - exec ${lib.getExe config.programs.nushell.package} - fi - ''; - - # builtin `ls` is good here! - eza.enable = lib.mkForce false; - }; - }; -} diff --git a/users/seth/programs/ssh.nix b/users/seth/programs/ssh.nix deleted file mode 100644 index 9cef7ff..0000000 --- a/users/seth/programs/ssh.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth.programs.ssh; -in -{ - options.seth.programs.ssh = { - enable = lib.mkEnableOption "SSH configuration" // { - default = config.seth.enable; - defaultText = lib.literalExpression "config.seth.enable"; - }; - }; - - 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"; - }; - - "github.com" = { - identityFile = "${sshDir}/github"; - user = "git"; - }; - - # linux packaging - "aur.archlinux.org" = { - identityFile = "${sshDir}/aur"; - user = "aur"; - }; - - "pagure.io" = { - identityFile = "${sshDir}/copr"; - user = "git"; - }; - - # macstadium m1 - "mini.scrumplex.net" = { - identityFile = "${sshDir}/macstadium"; - user = "bob-the-builder"; - }; - - # 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/programs/vim.nix b/users/seth/programs/vim.nix deleted file mode 100644 index 157e9fb..0000000 --- a/users/seth/programs/vim.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth.programs.vim; - inherit (config.xdg) configHome dataHome stateHome; -in -{ - options.seth.programs.vim = { - enable = lib.mkEnableOption "Vim configuration" // { - default = config.seth.enable; - defaultText = lib.literalExpression "config.seth.enable"; - }; - }; - - config = lib.mkIf cfg.enable { - programs.vim = { - enable = true; - packageConfigurable = pkgs.vim; - - 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/programs/vscode.nix b/users/seth/programs/vscode.nix deleted file mode 100644 index 91aa1a5..0000000 --- a/users/seth/programs/vscode.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth.programs.vscode; -in -{ - options.seth.programs.vscode = { - enable = lib.mkEnableOption "VSCode configuration"; - }; - - config = lib.mkIf cfg.enable { - programs.vscode = { - enable = true; - package = pkgs.vscode.fhs; - }; - }; -} diff --git a/users/seth/programs/zsh.nix b/users/seth/programs/zsh.nix deleted file mode 100644 index 7a7f935..0000000 --- a/users/seth/programs/zsh.nix +++ /dev/null @@ -1,118 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth.programs.zsh; -in -{ - options.seth.programs.zsh = { - enable = lib.mkEnableOption "Zsh configuration"; - withPlugins = lib.mkEnableOption "Zsh plugins" // { - default = true; - }; - }; - - config = lib.mkIf cfg.enable { - programs.zsh = lib.mkMerge [ - { - enable = true; - - completionInit = '' - autoload -Uz bashcompinit compinit - local zdump="${config.xdg.cacheHome}/zsh/zdump" - bashcompinit - compinit -d "$zdump" - if [[ ! "$zdump.zwc" -nt "$zdump" ]] - then - zcompile "$zdump" - fi - unset zdump - ''; - - defaultKeymap = "emacs"; - dotDir = ".config/zsh"; - - initExtra = '' - if [[ -r "$XDG_CACHE_HOME/p10k-instant-prompt-*.zsh" ]]; then - source "$XDG_CACHE_HOME/p10k-instant-prompt-*.zsh" - fi - autoload -Uz promptinit colors - promptinit - colors - - zmodload zsh/zutil - zmodload zsh/complist - zstyle ":completion::*" group-name "" - zstyle ":completion:*" menu "select" - zstyle ":completion:*" squeeze-slashes "true" - zstyle ":completion::*" use-cache "true" - zstyle ":completion::*" cache-path "$zdump" - - unsetopt beep - unsetopt hist_beep - unsetopt ignore_braces - unsetopt list_beep - setopt always_to_end - setopt prompt_subst - setopt share_history - - # clear backbuffer with ctrl-l - function clear-screen-and-scrollback() { - echoti civis >"$TTY" - printf '%b' '\e[H\e[2J' >"$TTY" - zle .reset-prompt - zle -R - printf '%b' '\e[3J' >"$TTY" - echoti cnorm >"$TTY" - } - - zle -N clear-screen-and-scrollback - bindkey '^L' clear-screen-and-scrollback - - [[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh - ''; - - history = { - expireDuplicatesFirst = true; - path = "${config.xdg.stateHome}/zsh/zsh_history"; - save = 1000; - size = 100; - }; - } - - (lib.mkIf cfg.withPlugins { - plugins = [ - { - name = "nix-zsh-completions"; - src = pkgs.nix-zsh-completions; - file = "share/zsh/plugins/nix/nix-zsh-completions.plugin.zsh"; - } - - { - name = "powerlevel10k"; - src = pkgs.zsh-powerlevel10k; - file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; - } - - { - name = "zsh-autopair"; - src = pkgs.zsh-autopair; - file = "share/zsh/zsh-autopair/autopair.zsh"; - } - - { - name = "zsh-completions"; - src = pkgs.zsh-completions; - file = "share/zsh-completions/zsh-completions.plugin.zsh"; - } - ]; - - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - }) - ]; - }; -} diff --git a/users/seth/services/spotifyd.nix b/users/seth/services/spotifyd.nix deleted file mode 100644 index 6fe2b35..0000000 --- a/users/seth/services/spotifyd.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.seth.services.spotifyd; -in -{ - options.seth.services.spotifyd = { - enable = lib.mkEnableOption "spotifyd"; - }; - - config = lib.mkIf cfg.enable { - services.spotifyd = { - enable = true; - - settings = { - # Implicitly use zeroconf - global = { - autoplay = true; - backend = "pulseaudio"; - bitrate = 320; - }; - }; - }; - }; -} diff --git a/users/seth/shell.nix b/users/seth/shell.nix new file mode 100644 index 0000000..6c5537c --- /dev/null +++ b/users/seth/shell.nix @@ -0,0 +1,18 @@ +{ config, ... }: + +{ + home = { + sessionVariables = { + EDITOR = "nvim"; + VISUAL = config.home.sessionVariables.EDITOR; + CARGO_HOME = "${config.xdg.dataHome}/cargo"; + LESSHISTFILE = "${config.xdg.stateHome}/less/history"; + }; + + shellAliases = { + diff = "diff --color=auto"; + g = "git"; + gs = "g status"; + }; + }; +} diff --git a/users/seth/tweaks/adwaita-ize.nix b/users/seth/tweaks/adwaita-ize.nix deleted file mode 100644 index 7a41959..0000000 --- a/users/seth/tweaks/adwaita-ize.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.seth.tweaks.adwaita-ize; -in -{ - options.seth.tweaks.adwaita-ize = { - enable = lib.mkEnableOption "libadwaita themeing for non-libadwaita apps"; - - adw-gtk3 = lib.mkEnableOption "adw-gtk3 theme for GTK3 apps" // { - default = true; - }; - }; - - config = lib.mkIf cfg.enable ( - lib.mkMerge [ - (lib.mkIf cfg.adw-gtk3 { - assertions = [ - { - assertion = config.gtk.enable; - message = "`gtk.enable` must be `true` to apply the adw-gtk3 theme"; - } - ]; - - gtk.theme = { - name = "adw-gtk3-dark"; - package = pkgs.adw-gtk3; - }; - }) - ] - ); -} diff --git a/users/seth/tweaks/catppuccin.nix b/users/seth/tweaks/catppuccin.nix deleted file mode 100644 index c0a1d5e..0000000 --- a/users/seth/tweaks/catppuccin.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - lib, - inputs, - ... -}: -let - cfg = config.seth.tweaks.catppuccin; -in -{ - options.seth.tweaks.catppuccin = { - enable = lib.mkEnableOption "catppuccin themeing" // { - default = config.seth.enable; - defaultText = "config.seth.enable"; - }; - }; - - imports = [ - inputs.catppuccin.homeManagerModules.catppuccin - ]; - - config = lib.mkIf cfg.enable { - catppuccin = { - enable = true; - accent = "mauve"; - flavor = "mocha"; - }; - }; -} |
