diff options
55 files changed, 868 insertions, 1102 deletions
diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix index bc599c9..6d5552e 100644 --- a/modules/darwin/default.nix +++ b/modules/darwin/default.nix @@ -7,7 +7,6 @@ ./defaults ./mixins ./profiles - ./users ]; }; }; diff --git a/modules/darwin/users/default.nix b/modules/darwin/users/default.nix deleted file mode 100644 index df767b4..0000000 --- a/modules/darwin/users/default.nix +++ /dev/null @@ -1 +0,0 @@ -{ imports = [ ./seth.nix ]; } diff --git a/modules/darwin/users/seth.nix b/modules/darwin/users/seth.nix deleted file mode 100644 index 44eb4d3..0000000 --- a/modules/darwin/users/seth.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ config, lib, ... }: - -let - cfg = config.borealis.users.seth; -in - -{ - config = lib.mkMerge [ - (lib.mkIf cfg.enable { - home-manager.users.seth = { - # NOTE: this module is for linux, not mac - seth.desktop.enable = false; - }; - }) - ]; -} diff --git a/modules/shared/users/seth.nix b/modules/shared/users/seth.nix index 89203c1..796171d 100644 --- a/modules/shared/users/seth.nix +++ b/modules/shared/users/seth.nix @@ -17,32 +17,30 @@ in enable = lib.mkEnableOption "Seth's user & home configurations"; }; - config = lib.mkMerge [ - (lib.mkIf cfg.enable { - users.users.seth.shell = pkgs.fish; + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + users.users.seth.shell = pkgs.fish; - programs.fish.enable = true; + programs.fish.enable = true; - home-manager.users.seth = { - imports = [ (inputs.self + "/users/seth") ]; - seth = { - enable = true; - programs.fish.enable = true; + home-manager.users.seth = { + imports = [ (inputs.self + "/users/seth") ]; }; - }; - }) - - (lib.mkIf (cfg.enable && isDarwin) { - users.users.seth = { - home = lib.mkDefault "/Users/seth"; - }; - }) - - (lib.mkIf (cfg.enable && isLinux) { - users.users.seth = { - extraGroups = [ "wheel" ]; - isNormalUser = true; - }; - }) - ]; + } + + (lib.mkIf isDarwin { + users.users.seth = { + home = lib.mkDefault "/Users/seth"; + }; + }) + + (lib.mkIf isLinux { + users.users.seth = { + extraGroups = [ "wheel" ]; + isNormalUser = true; + }; + }) + ] + ); } 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"; - }; - }; -} |
