summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/darwin/default.nix1
-rw-r--r--modules/darwin/users/default.nix1
-rw-r--r--modules/darwin/users/seth.nix16
-rw-r--r--modules/shared/users/seth.nix48
-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
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";
- };
- };
-}