summaryrefslogtreecommitdiff
path: root/users/seth
diff options
context:
space:
mode:
authorSeth Flynn <[email protected]>2025-02-14 01:18:47 -0500
committerSeth Flynn <[email protected]>2025-02-14 01:29:06 -0500
commit3e208d20934bedd8cd7769f23f35cfae9d8e7d0d (patch)
tree452399d770df6be2589be3c92771b1999dd1b93a /users/seth
parentc1bea770122a7cf2dea5113387265f59010d5a7f (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/seth')
-rw-r--r--users/seth/custom/adw-gtk3.nix44
-rw-r--r--users/seth/custom/default.nix (renamed from users/seth/tweaks/default.nix)4
-rw-r--r--users/seth/custom/nix-override.nix (renamed from users/seth/tweaks/nix-override.nix)6
-rw-r--r--users/seth/custom/standalone.nix36
-rw-r--r--users/seth/default.nix70
-rw-r--r--users/seth/home.nix9
-rw-r--r--users/seth/mixins/bash.nix33
-rw-r--r--users/seth/mixins/budgie.nix (renamed from users/seth/desktop/budgie.nix)2
-rw-r--r--users/seth/mixins/catppuccin.nix14
-rw-r--r--users/seth/mixins/chromium.nix20
-rw-r--r--users/seth/mixins/default.nix23
-rw-r--r--users/seth/mixins/firefox/arkenfox.nix69
-rw-r--r--users/seth/mixins/firefox/default.nix56
-rw-r--r--users/seth/mixins/fish.nix55
-rw-r--r--users/seth/mixins/gh.nix25
-rw-r--r--users/seth/mixins/ghostty.nix10
-rw-r--r--users/seth/mixins/git.nix37
-rw-r--r--users/seth/mixins/gnome.nix (renamed from users/seth/desktop/gnome.nix)10
-rw-r--r--users/seth/mixins/gpg.nix22
-rw-r--r--users/seth/mixins/mangohud.nix14
-rw-r--r--users/seth/mixins/niri.nix (renamed from users/seth/desktop/niri.nix)12
-rw-r--r--users/seth/mixins/nu.nix45
-rw-r--r--users/seth/mixins/plasma.nix (renamed from users/seth/desktop/plasma.nix)2
-rw-r--r--users/seth/mixins/spotifyd.nix12
-rw-r--r--users/seth/mixins/ssh.nix67
-rw-r--r--users/seth/mixins/vim.nix42
-rw-r--r--users/seth/mixins/zsh.nix100
-rw-r--r--users/seth/profiles/default.nix (renamed from users/seth/services/default.nix)2
-rw-r--r--users/seth/profiles/nixos.nix (renamed from users/seth/desktop/default.nix)31
-rw-r--r--users/seth/programs.nix64
-rw-r--r--users/seth/programs/bash.nix47
-rw-r--r--users/seth/programs/chromium.nix40
-rw-r--r--users/seth/programs/default.nix60
-rw-r--r--users/seth/programs/firefox/arkenfox.nix80
-rw-r--r--users/seth/programs/firefox/default.nix55
-rw-r--r--users/seth/programs/fish.nix72
-rw-r--r--users/seth/programs/gh.nix36
-rw-r--r--users/seth/programs/ghostty.nix27
-rw-r--r--users/seth/programs/git.nix44
-rw-r--r--users/seth/programs/gpg.nix27
-rw-r--r--users/seth/programs/mangohud.nix28
-rw-r--r--users/seth/programs/neovim.nix36
-rw-r--r--users/seth/programs/nu.nix45
-rw-r--r--users/seth/programs/ssh.nix69
-rw-r--r--users/seth/programs/vim.nix52
-rw-r--r--users/seth/programs/vscode.nix21
-rw-r--r--users/seth/programs/zsh.nix118
-rw-r--r--users/seth/services/spotifyd.nix28
-rw-r--r--users/seth/shell.nix18
-rw-r--r--users/seth/tweaks/adwaita-ize.nix36
-rw-r--r--users/seth/tweaks/catppuccin.nix29
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";
- };
- };
-}