diff --git a/flake.nix b/flake.nix
index 5eeecd9..53c16f1 100644
--- a/flake.nix
+++ b/flake.nix
@@ -210,28 +210,31 @@
{
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
-
- users.users.jdoe.password = "example";
- users.users.jdoe.isNormalUser = true;
- users.users.jdoe.extraGroups = [
- "wheel"
- "video"
- "networkmanager"
- ];
-
- home-manager.users.jdoe = {
- home.username = "jdoe";
- home.homeDirectory = "/home/jdoe";
-
- jhome.enable = true;
- jhome.gui.enable = true;
- jhome.dev.rust.enable = true;
+ users.users.jdoe = {
+ password = "example";
+ isNormalUser = true;
+ extraGroups = [
+ "wheel"
+ "video"
+ "networkmanager"
+ ];
+ };
+ home-manager.users.jdoe = {
+ home = {
+ username = "jdoe";
+ homeDirectory = "/home/jdoe";
+ };
+ jhome = {
+ enable = true;
+ gui.enable = true;
+ dev.rust.enable = true;
+ };
};
-
nix.registry.nixpkgs.flake = nixpkgs;
-
- jconfig.enable = true;
- jconfig.gui.enable = true;
+ jconfig = {
+ enable = true;
+ gui.enable = true;
+ };
}
];
};
@@ -251,11 +254,11 @@
home-manager.nixosModules.home-manager
]
++ nixpkgs.lib.optional (lix != null && lix-module != null) lix-module.nixosModules.default;
-
- home-manager.useGlobalPkgs = true;
- home-manager.useUserPackages = true;
- home-manager.sharedModules = [homeManagerModuleNixOS];
-
+ home-manager = {
+ useGlobalPkgs = true;
+ useUserPackages = true;
+ sharedModules = [homeManagerModuleNixOS];
+ };
# Pin nixpkgs
nix.registry.nixpkgs.flake = nixpkgs;
};
diff --git a/home/default.nix b/home/default.nix
index 14ffc99..10c5fff 100644
--- a/home/default.nix
+++ b/home/default.nix
@@ -36,135 +36,164 @@ in {
config = lib.mkMerge [
(lib.mkIf cfg.enable {
- programs.bat = {
+ programs = {
# Better cat (bat)
- enable = true;
- config.style = "plain"; # Disable headers and numbers
+ bat = {
+ enable = true;
+ # Disable headers and numbers
+ config.style = "plain";
+ };
+ # Direnv
+ direnv = {
+ enable = true;
+ nix-direnv.enable = true;
+ };
+ # ls replacement
+ eza = {
+ enable = true;
+ git = true;
+ icons = true;
+ };
+ # GnuPG
+ gpg = {
+ enable = true;
+ homedir = "${config.xdg.dataHome}/gnupg";
+ };
+ # Mail client
+ himalaya.enable = true;
+ # Another shell
+ nushell.enable = true;
+ # Password manager
+ password-store = {
+ enable = true;
+ package = pkgs.pass-nodmenu;
+ settings.PASSWORD_STORE_DIR = "${config.xdg.dataHome}/pass";
+ };
+ # SSH
+ ssh.enable = true;
+ # cd replacement
+ zoxide.enable = true;
+ # Shell
+ zsh = {
+ enable = true;
+ autosuggestion.enable = true;
+ enableCompletion = true;
+ autocd = true;
+ dotDir = ".config/zsh";
+ history.path = "${config.xdg.dataHome}/zsh/zsh_history";
+ syntaxHighlighting.enable = true;
+ };
};
- # Direnv
- programs.direnv.enable = true;
- programs.direnv.nix-direnv.enable = true;
- # ls replacement
- programs.eza.enable = true;
- programs.eza.git = true;
- programs.eza.icons = true;
- # GnuPG
- programs.gpg.enable = true;
- programs.gpg.homedir = "${config.xdg.dataHome}/gnupg";
- # Mail client
- programs.himalaya.enable = true;
- # Another shell
- programs.nushell.enable = true;
- # Password manager
- programs.password-store.enable = true;
- programs.password-store.package = pkgs.pass-nodmenu;
- programs.password-store.settings.PASSWORD_STORE_DIR = "${config.xdg.dataHome}/pass";
- # SSH
- programs.ssh.enable = true;
- # cd replacement
- programs.zoxide.enable = true;
- # Shell
- programs.zsh.enable = true;
- programs.zsh.autosuggestion.enable = true;
- programs.zsh.enableCompletion = true;
- programs.zsh.autocd = true;
- programs.zsh.dotDir = ".config/zsh";
- programs.zsh.history.path = "${config.xdg.dataHome}/zsh/zsh_history";
- programs.zsh.syntaxHighlighting.enable = true;
-
- # GPG Agent
- services.gpg-agent.enable = true;
- services.gpg-agent.maxCacheTtl = 86400;
- services.gpg-agent.pinentryPackage =
- if config.jhome.gui.enable
- then pkgs.pinentry-qt
- else pkgs.pinentry-curses;
- services.gpg-agent.extraConfig = "allow-preset-passphrase";
- # Spotifyd
- services.spotifyd.enable = true;
- services.spotifyd.settings.global.device_name = config.jhome.hostName;
- services.spotifyd.settings.global.device_type = "computer";
- services.spotifyd.settings.global.backend = "pulseaudio";
- services.spotifyd.settings.global.zeroconf_port = 2020;
-
- home.stateVersion = "22.11";
-
- # Extra packages
- home.packages = [
- pkgs.gopass
- pkgs.sshfs
- pkgs.gitoxide
- pkgs.xplr
- ];
-
- # Extra variables
- home.sessionVariables = {
- CARGO_HOME = "${config.xdg.dataHome}/cargo";
- RUSTUP_HOME = "${config.xdg.dataHome}/rustup";
- GOPATH = "${config.xdg.dataHome}/go";
+ services = {
+ # GPG Agent
+ gpg-agent = {
+ enable = true;
+ maxCacheTtl = 86400;
+ pinentryPackage =
+ if config.jhome.gui.enable
+ then pkgs.pinentry-qt
+ else pkgs.pinentry-curses;
+ extraConfig = "allow-preset-passphrase";
+ };
+ # Spotifyd
+ spotifyd = {
+ inherit (config.jhome.gui) enable;
+ settings.global = {
+ device_name = config.jhome.hostName;
+ device_type = "computer";
+ backend = "pulseaudio";
+ zeroconf_port = 2020;
+ };
+ };
};
- home.shellAliases = {
- # Verbose Commands
- cp = "cp --verbose";
- ln = "ln --verbose";
- mv = "mv --verbose";
- mkdir = "mkdir --verbose";
- rename = "rename --verbose";
- rm = "rm --verbose";
- # Add Color
- grep = "grep --color=auto";
- ip = "ip --color=auto";
- # Use exa/eza
- tree = "eza --tree";
+ home = {
+ stateVersion = "22.11";
+ # Extra packages
+ packages = [
+ pkgs.gopass
+ pkgs.sshfs
+ pkgs.gitoxide
+ pkgs.xplr
+ ];
+ # Extra variables
+ sessionVariables = {
+ CARGO_HOME = "${config.xdg.dataHome}/cargo";
+ RUSTUP_HOME = "${config.xdg.dataHome}/rustup";
+ GOPATH = "${config.xdg.dataHome}/go";
+ };
+ shellAliases = {
+ # Verbose Commands
+ cp = "cp --verbose";
+ ln = "ln --verbose";
+ mv = "mv --verbose";
+ mkdir = "mkdir --verbose";
+ rename = "rename --verbose";
+ rm = "rm --verbose";
+ # Add Color
+ grep = "grep --color=auto";
+ ip = "ip --color=auto";
+ # Use exa/eza
+ tree = "eza --tree";
+ };
};
-
# XDG directories
- xdg.enable = true;
- xdg.userDirs.enable = true;
- xdg.userDirs.createDirectories = true;
+ xdg = {
+ enable = true;
+ userDirs = {
+ enable = true;
+ createDirectories = true;
+ };
+ };
})
(lib.mkIf (cfg.enable && devcfg.enable) {
home = {
sessionVariables.MANPAGER = lib.optionalString devcfg.neovimAsManPager "nvim -c 'Man!' -o -";
packages = devcfg.extraPackages;
};
-
# Github CLI
- programs.gh.enable = true;
- programs.gh-dash.enable = true;
- # Git
- programs.git = {
- enable = true;
- difftastic.enable = true;
- difftastic.background = "dark";
- lfs.enable = true;
- # Add diff to the commit message editor
- extraConfig.commit.verbose = true;
- # Improve submodule diff
- extraConfig.diff.submodule = "log";
- # Set the default branch name for new branches
- extraConfig.init.defaultBranch = "main";
- # Better conflicts (also shows parent commit state)
- extraConfig.merge.conflictStyle = "zdiff3";
- # Do not create merge commits when pulling (rebase but abort on conflict)
- extraConfig.pull.ff = "only";
- # Use `--set-upstream` if the remote does not have the branch
- extraConfig.push.autoSetupRemote = true;
- # If there are uncommitted changes, stash them before rebasing
- extraConfig.rebase.autoStash = true;
- # If there are fixup! commits, squash them while rebasing
- extraConfig.rebase.autoSquash = true;
- # Enable ReReRe (Reuse Recovered Resolution) auto resolve previously resolved conflicts
- extraConfig.rerere.enabled = true;
- # Improve submodule status
- extraConfig.status.submoduleSummary = true;
- };
- programs.lazygit.enable = true;
- # Jujutsu (alternative DVCS (git-compatible))
- programs.jujutsu = {
- enable = true;
- settings = {
- ui.pager = "bat";
+ programs = {
+ gh.enable = true;
+ gh-dash.enable = true;
+ # Git
+ git = {
+ enable = true;
+ difftastic = {
+ enable = true;
+ background = "dark";
+ };
+ lfs.enable = true;
+ extraConfig = {
+ # Add diff to the commit message editor
+ commit.verbose = true;
+ # Improve submodule diff
+ diff.submodule = "log";
+ # Set the default branch name for new branches
+ init.defaultBranch = "main";
+ # Better conflicts (also shows parent commit state)
+ merge.conflictStyle = "zdiff3";
+ # Do not create merge commits when pulling (rebase but abort on conflict)
+ pull.ff = "only";
+ # Use `--set-upstream` if the remote does not have the branch
+ push.autoSetupRemote = true;
+ rebase = {
+ # If there are uncommitted changes, stash them before rebasing
+ autoStash = true;
+ # If there are fixup! commits, squash them while rebasing
+ autoSquash = true;
+ };
+ # Enable ReReRe (Reuse Recovered Resolution) auto resolve previously resolved conflicts
+ rerere.enabled = true;
+ # Improve submodule status
+ status.submoduleSummary = true;
+ };
+ };
+ lazygit.enable = true;
+ # Jujutsu (alternative DVCS (git-compatible))
+ jujutsu = {
+ enable = true;
+ settings = {
+ ui.pager = "bat";
+ };
};
};
})
diff --git a/home/gui/default.nix b/home/gui/default.nix
index 5b28e8b..47fc172 100644
--- a/home/gui/default.nix
+++ b/home/gui/default.nix
@@ -36,80 +36,84 @@ in {
++ lib.optional flatpakEnabled flatpak;
fonts.fontconfig.enable = true;
-
# Browser
- programs.firefox.enable = true;
- # Dynamic Menu
- programs.fuzzel = {
- enable = true;
- settings.main = {
- icon-theme = "Papirus-Dark";
- terminal = cfg.terminal;
+ programs = {
+ firefox.enable = true;
+ # Dynamic Menu
+ fuzzel = {
+ enable = true;
+ settings.main = {
+ icon-theme = "Papirus-Dark";
+ inherit (cfg) terminal;
+ layer = "overlay";
+ };
+ };
+ # Video player
+ mpv = {
+ enable = true;
+ scripts = builtins.attrValues {inherit (pkgs.mpvScripts) uosc thumbfast;};
+ };
+ # Status bar
+ waybar = {
+ enable = true;
+ systemd.enable = true;
+ settings = import ./waybar-settings.nix {inherit config lib;};
+ style = ''
+ .modules-left #workspaces button {
+ border-bottom: 3px solid @base01;
+ }
+ .modules-left #workspaces button.persistent {
+ border-bottom: 3px solid transparent;
+ }
+ '';
+ };
+ # Terminal
+ wezterm = {
+ enable = cfg.terminal == "wezterm";
+ extraConfig = ''
+ config = {}
+ config.hide_tab_bar_if_only_one_tab = true
+ config.window_padding = { left = 1, right = 1, top = 1, bottom = 1 }
+ return config
+ '';
+ };
+ alacritty.enable = cfg.terminal == "alacritty";
+ zellij.enable = cfg.terminal == "alacritty"; # alacritty has no terminal multiplexerr built in
+ # PDF reader
+ zathura.enable = true;
+ # Auto start sway
+ zsh.loginExtra = lib.optionalString cfg.sway.autostart ''
+ # Start Sway on login to TTY 1
+ if [ "$TTY" = /dev/tty1 ]; then
+ exec sway
+ fi
+ '';
+ };
+ services = {
+ # Volume/Backlight control and notifications
+ avizo = {
+ enable = true;
+ settings.default = {
+ time = 0.8;
+ border-width = 0;
+ height = 176;
+ y-offset = 0.1;
+ block-spacing = 1;
+ };
+ };
+ # Sound tuning
+ easyeffects.enable = true;
+ # Auto configure displays
+ kanshi.enable = lib.mkDefault true;
+ # Notifications
+ mako = {
+ enable = true;
layer = "overlay";
+ borderRadius = 8;
+ defaultTimeout = 15000;
};
};
- # Video player
- programs.mpv = {
- enable = true;
- scripts = builtins.attrValues {inherit (pkgs.mpvScripts) uosc thumbfast;};
- };
- # Status bar
- programs.waybar = {
- enable = true;
- systemd.enable = true;
- settings = import ./waybar-settings.nix {inherit config lib;};
- style = ''
- .modules-left #workspaces button {
- border-bottom: 3px solid @base01;
- }
- .modules-left #workspaces button.persistent {
- border-bottom: 3px solid transparent;
- }
- '';
- };
- # Terminal
- programs.wezterm = {
- enable = cfg.terminal == "wezterm";
- extraConfig = ''
- config = {}
- config.hide_tab_bar_if_only_one_tab = true
- config.window_padding = { left = 1, right = 1, top = 1, bottom = 1 }
- return config
- '';
- };
- programs.alacritty.enable = cfg.terminal == "alacritty";
- programs.zellij.enable = cfg.terminal == "alacritty"; # alacritty has no terminal multiplexerr built in
- # PDF reader
- programs.zathura.enable = true;
- # Auto start sway
- programs.zsh.loginExtra = lib.optionalString cfg.sway.autostart ''
- # Start Sway on login to TTY 1
- if [ "$TTY" = /dev/tty1 ]; then
- exec sway
- fi
- '';
- # Volume/Backlight control and notifications
- services.avizo = {
- enable = true;
- settings.default = {
- time = 0.8;
- border-width = 0;
- height = 176;
- y-offset = 0.1;
- block-spacing = 1;
- };
- };
- # Sound tuning
- services.easyeffects.enable = true;
- # Auto configure displays
- services.kanshi.enable = lib.mkDefault true;
- # Notifications
- services.mako = {
- enable = true;
- layer = "overlay";
- borderRadius = 8;
- defaultTimeout = 15000;
- };
+
# Window Manager
wayland.windowManager.sway = {
enable = true;
@@ -123,7 +127,7 @@ in {
# Set Gtk theme
gtk = {
enable = true;
- iconTheme = iconTheme;
+ inherit iconTheme;
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
};
diff --git a/home/gui/sway-config.nix b/home/gui/sway-config.nix
index c3d48f6..1302086 100644
--- a/home/gui/sway-config.nix
+++ b/home/gui/sway-config.nix
@@ -4,7 +4,7 @@
}: let
cfg = config.jhome.gui.sway;
modifier = "Mod4";
- terminal = config.jhome.gui.terminal;
+ inherit (config.jhome.gui) terminal;
termCmd =
if terminal == "wezterm"
then "wezterm start"
diff --git a/home/gui/waybar-settings.nix b/home/gui/waybar-settings.nix
index b2a0968..24d4a9c 100644
--- a/home/gui/waybar-settings.nix
+++ b/home/gui/waybar-settings.nix
@@ -4,103 +4,96 @@
}: let
cfg = config.jhome.gui;
in {
- mainBar.layer = "top";
- mainBar.position = "top";
- mainBar.margin = "2 2 2 2";
- # Choose the order of the modules
- mainBar.modules-left = ["sway/workspaces"];
- mainBar.modules-center = ["clock"];
- mainBar.modules-right =
- [
- "pulseaudio"
- "backlight"
- "battery"
- "sway/language"
- "memory"
- ]
- ++ lib.optional (cfg.tempInfo != null) "temperature"
- ++ ["tray"];
- mainBar."sway/workspaces".disable-scroll = true;
- mainBar."sway/workspaces".persistent-workspaces."1" = [];
- mainBar."sway/workspaces".persistent-workspaces."2" = [];
- mainBar."sway/workspaces".persistent-workspaces."3" = [];
- mainBar."sway/workspaces".persistent-workspaces."4" = [];
- mainBar."sway/workspaces".persistent-workspaces."5" = [];
- mainBar."sway/workspaces".persistent-workspaces."6" = [];
- mainBar."sway/workspaces".persistent-workspaces."7" = [];
- mainBar."sway/workspaces".persistent-workspaces."8" = [];
- mainBar."sway/workspaces".persistent-workspaces."9" = [];
- mainBar."sway/language".format = "{} ";
- mainBar."sway/language".min-length = 5;
- mainBar."sway/language".tooltip = false;
- mainBar.memory.format = "{used:0.1f}/{total:0.1f}GiB ";
- mainBar.memory.interval = 3;
- mainBar.clock.timezone = "Europe/Berlin";
- mainBar.clock.tooltip-format = "{:%Y %B}\n{calendar}";
- mainBar.clock.format = "{:%a, %d %b, %H:%M}";
- mainBar.pulseaudio.reverse-scrolling = 1;
- mainBar.pulseaudio.format = "{volume}% {icon} {format_source}";
- mainBar.pulseaudio.format-bluetooth = "{volume}% {icon} {format_source}";
- mainBar.pulseaudio.format-bluetooth-muted = "{volume}% {icon} {format_source}";
- mainBar.pulseaudio.format-muted = "{volume}% {format_source}";
- mainBar.pulseaudio.format-source = "{volume}% ";
- mainBar.pulseaudio.format-source-muted = "{volume}% ";
- mainBar.pulseaudio.format-icons.headphone = "";
- mainBar.pulseaudio.format-icons.hands-free = "";
- mainBar.pulseaudio.format-icons.headset = "";
- mainBar.pulseaudio.format-icons.phone = "";
- mainBar.pulseaudio.format-icons.portable = "";
- mainBar.pulseaudio.format-icons.car = "";
- mainBar.pulseaudio.format-icons.default = [
- ""
- ""
- ""
- ];
- mainBar.pulseaudio.on-click = "pavucontrol";
- mainBar.pulseaudio.min-length = 13;
- mainBar.temperature = lib.optionalAttrs (cfg.tempInfo != null) {
- inherit (cfg.tempInfo) hwmon-path;
- critical-threshold = 80;
- format = "{temperatureC}°C {icon}";
- format-icons = [
- ""
- ""
- ""
- ""
- ""
- ];
- tooltip = false;
+ mainBar = {
+ layer = "top";
+ position = "top";
+ margin = "2 2 2 2";
+ # Choose the order of the modules
+ modules-left = ["sway/workspaces"];
+ modules-center = ["clock"];
+ modules-right =
+ [
+ "pulseaudio"
+ "backlight"
+ "battery"
+ "sway/language"
+ "memory"
+ ]
+ ++ lib.optional (cfg.tempInfo != null) "temperature"
+ ++ ["tray"];
+ "sway/workspaces" = {
+ disable-scroll = true;
+ persistent-workspaces = {
+ "1" = [];
+ "2" = [];
+ "3" = [];
+ "4" = [];
+ "5" = [];
+ "6" = [];
+ "7" = [];
+ "8" = [];
+ "9" = [];
+ };
+ };
+ "sway/language" = {
+ format = "{} ";
+ min-length = 5;
+ tooltip = false;
+ };
+ memory = {
+ format = "{used:0.1f}/{total:0.1f}GiB ";
+ interval = 3;
+ };
+ clock = {
+ timezone = "Europe/Berlin";
+ tooltip-format = "{:%Y %B}\n{calendar}";
+ format = "{:%a, %d %b, %H:%M}";
+ };
+ pulseaudio = {
+ reverse-scrolling = 1;
+ format = "{volume}% {icon} {format_source}";
+ format-bluetooth = "{volume}% {icon} {format_source}";
+ format-bluetooth-muted = "{volume}% {icon} {format_source}";
+ format-muted = "{volume}% {format_source}";
+ format-source = "{volume}% ";
+ format-source-muted = "{volume}% ";
+ format-icons = {
+ headphone = "";
+ hands-free = "";
+ headset = "";
+ phone = "";
+ portable = "";
+ car = "";
+ default = ["" "" ""];
+ };
+ on-click = "pavucontrol";
+ min-length = 13;
+ };
+ temperature = lib.optionalAttrs (cfg.tempInfo != null) {
+ inherit (cfg.tempInfo) hwmon-path;
+ critical-threshold = 80;
+ format = "{temperatureC}°C {icon}";
+ format-icons = ["" "" "" "" ""];
+ tooltip = false;
+ };
+ backlight = {
+ device = "intel_backlight";
+ format = "{percent}% {icon}";
+ format-icons = ["" "" "" "" "" "" ""];
+ min-length = 7;
+ };
+ battery = {
+ states.warning = 30;
+ states.critical = 15;
+ format = "{capacity}% {icon}";
+ format-charging = "{capacity}% ";
+ format-plugged = "{capacity}% ";
+ format-alt = "{time} {icon}";
+ format-icons = ["" "" "" "" "" "" "" "" "" ""];
+ };
+ tray = {
+ icon-size = 16;
+ spacing = 0;
+ };
};
- mainBar.backlight.device = "intel_backlight";
- mainBar.backlight.format = "{percent}% {icon}";
- mainBar.backlight.format-icons = [
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ];
- mainBar.backlight.min-length = 7;
- mainBar.battery.states.warning = 30;
- mainBar.battery.states.critical = 15;
- mainBar.battery.format = "{capacity}% {icon}";
- mainBar.battery.format-charging = "{capacity}% ";
- mainBar.battery.format-plugged = "{capacity}% ";
- mainBar.battery.format-alt = "{time} {icon}";
- mainBar.battery.format-icons = [
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ""
- ];
- mainBar.tray.icon-size = 16;
- mainBar.tray.spacing = 0;
}
diff --git a/home/options.nix b/home/options.nix
index 4b85acb..fe21d7a 100644
--- a/home/options.nix
+++ b/home/options.nix
@@ -155,28 +155,30 @@ in {
description = "Setup development environment for programming languages.";
default = {};
type = types.submodule {
- options.enable = lib.mkEnableOption "development settings";
- options.neovimAsManPager = lib.mkEnableOption "neovim as the man pager";
- options.extraPackages = mkExtraPackagesOption "dev" [
- ["jq"] # json parser
- ["just"] # just a command runner
- ["typos"] # low false positive rate typo checker
- ["git-absorb"] # fixup! but automatic
- ["man-pages"] # gimme the man pages
- ["man-pages-posix"] # I said gimme the man pages!!!
- ];
- options.rust = lib.mkOption {
- description = "Jalil's default rust configuration.";
- default = {};
- type = types.submodule {
- options.enable = lib.mkEnableOption "rust development settings";
- options.extraPackages = mkExtraPackagesOption "Rust" [
- ["cargo-kcov"] # code coverage
- ["cargo-msrv"] # minimum supported version
- ["cargo-nextest"] # better testing harness
- ["cargo-sort"] # sort deps and imports
- ["cargo-watch"] # watch for file changes and run commands
- ];
+ options = {
+ enable = lib.mkEnableOption "development settings";
+ neovimAsManPager = lib.mkEnableOption "neovim as the man pager";
+ extraPackages = mkExtraPackagesOption "dev" [
+ ["jq"] # json parser
+ ["just"] # just a command runner
+ ["typos"] # low false positive rate typo checker
+ ["git-absorb"] # fixup! but automatic
+ ["man-pages"] # gimme the man pages
+ ["man-pages-posix"] # I said gimme the man pages!!!
+ ];
+ rust = lib.mkOption {
+ description = "Jalil's default rust configuration.";
+ default = {};
+ type = types.submodule {
+ options.enable = lib.mkEnableOption "rust development settings";
+ options.extraPackages = mkExtraPackagesOption "Rust" [
+ ["cargo-kcov"] # code coverage
+ ["cargo-msrv"] # minimum supported version
+ ["cargo-nextest"] # better testing harness
+ ["cargo-sort"] # sort deps and imports
+ ["cargo-watch"] # watch for file changes and run commands
+ ];
+ };
};
};
};
diff --git a/machines/capricorn/default.nix b/machines/capricorn/default.nix
index 1960898..67afc47 100644
--- a/machines/capricorn/default.nix
+++ b/machines/capricorn/default.nix
@@ -7,32 +7,39 @@
nixos-hardware.nixosModules.common-pc-laptop-ssd
nixos-hardware.nixosModules.common-cpu-intel
];
-
- # Setup extra filesystem options
- fileSystems."/".options = ["compress=zstd"];
- fileSystems."/home".options = ["compress=zstd"];
- fileSystems."/nix".options = [
- "compress=zstd"
- "noatime"
- ];
+ fileSystems = {
+ # Setup extra filesystem options
+ "/".options = ["compress=zstd"];
+ "/home".options = ["compress=zstd"];
+ "/nix".options = [
+ "compress=zstd"
+ "noatime"
+ ];
+ };
hardware.bluetooth.enable = true;
-
- # Bootloader
- boot.loader.systemd-boot.enable = true;
- boot.loader.systemd-boot.configurationLimit = 10;
- boot.loader.efi.canTouchEfiVariables = true;
-
+ boot.loader = {
+ # Bootloader
+ systemd-boot = {
+ enable = true;
+ configurationLimit = 10;
+ };
+ efi.canTouchEfiVariables = true;
+ };
# Network configuration
- networking.hostName = "capricorn";
- networking.networkmanager.enable = true;
- networking.networkmanager.wifi.backend = "iwd";
- networking.networkmanager.appendNameservers = [
- "1.1.1.1"
- "1.0.0.1"
- "8.8.8.8"
- "8.4.4.8"
- ];
+ networking = {
+ hostName = "capricorn";
+ networkmanager = {
+ enable = true;
+ wifi.backend = "iwd";
+ appendNameservers = [
+ "1.1.1.1"
+ "1.0.0.1"
+ "8.8.8.8"
+ "8.4.4.8"
+ ];
+ };
+ };
console.useXkbConfig = true;
diff --git a/machines/capricorn/hardware-configuration.nix b/machines/capricorn/hardware-configuration.nix
index c622743..f7ecf9d 100644
--- a/machines/capricorn/hardware-configuration.nix
+++ b/machines/capricorn/hardware-configuration.nix
@@ -8,37 +8,41 @@
...
}: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
-
- boot.initrd.availableKernelModules = [
- "xhci_pci"
- "ahci"
- "usb_storage"
- "sd_mod"
- ];
- boot.initrd.kernelModules = [];
- boot.kernelModules = ["kvm-intel"];
- boot.extraModulePackages = [];
-
- fileSystems."/" = {
- device = "/dev/disk/by-label/NIXROOT";
- fsType = "btrfs";
- options = ["subvol=root"];
+ boot = {
+ initrd = {
+ availableKernelModules = [
+ "xhci_pci"
+ "ahci"
+ "usb_storage"
+ "sd_mod"
+ ];
+ kernelModules = [];
+ };
+ kernelModules = ["kvm-intel"];
+ extraModulePackages = [];
};
+ fileSystems = {
+ "/" = {
+ device = "/dev/disk/by-label/NIXROOT";
+ fsType = "btrfs";
+ options = ["subvol=root"];
+ };
- fileSystems."/nix" = {
- device = "/dev/disk/by-label/NIXROOT";
- fsType = "btrfs";
- options = ["subvol=nix"];
- };
+ "/nix" = {
+ device = "/dev/disk/by-label/NIXROOT";
+ fsType = "btrfs";
+ options = ["subvol=nix"];
+ };
- fileSystems."/home" = {
- device = "/dev/disk/by-label/NIXHOME";
- fsType = "btrfs";
- };
+ "/home" = {
+ device = "/dev/disk/by-label/NIXHOME";
+ fsType = "btrfs";
+ };
- fileSystems."/boot" = {
- device = "/dev/disk/by-label/NIXBOOT";
- fsType = "vfat";
+ "/boot" = {
+ device = "/dev/disk/by-label/NIXBOOT";
+ fsType = "vfat";
+ };
};
swapDevices = [{device = "/dev/disk/by-label/NIXSWAP";}];
diff --git a/machines/gemini/default.nix b/machines/gemini/default.nix
index 55f6968..d4680b6 100644
--- a/machines/gemini/default.nix
+++ b/machines/gemini/default.nix
@@ -11,40 +11,46 @@
nixos-hardware.nixosModules.common-cpu-amd
nixos-hardware.nixosModules.common-gpu-amd
];
-
- fileSystems."/".options = ["compress=zstd"];
- fileSystems."/steam".options = ["compress=zstd"];
- fileSystems."/home".options = ["compress=zstd"];
- fileSystems."/nix".options = [
- "compress=zstd"
- "noatime"
- ];
-
- # Use the systemd-boot EFI boot loader.
- boot.loader.systemd-boot.enable = true;
- boot.loader.systemd-boot.configurationLimit = 3;
- boot.loader.efi.canTouchEfiVariables = true;
+ fileSystems = {
+ "/".options = ["compress=zstd"];
+ "/steam".options = ["compress=zstd"];
+ "/home".options = ["compress=zstd"];
+ "/nix".options = [
+ "compress=zstd"
+ "noatime"
+ ];
+ };
+ boot.loader = {
+ systemd-boot = {
+ # Use the systemd-boot EFI boot loader.
+ enable = true;
+ configurationLimit = 3;
+ };
+ efi.canTouchEfiVariables = true;
+ };
# Enable bluetooth
hardware.bluetooth.enable = true;
-
- networking.hostName = "gemini";
- networking.networkmanager.enable = true;
- networking.interfaces.enp4s0.wakeOnLan.enable = true;
+ networking = {
+ hostName = "gemini";
+ networkmanager.enable = true;
+ interfaces.enp4s0.wakeOnLan.enable = true;
+ };
console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
useXkbConfig = true; # use xkbOptions in tty.
};
-
- # Configure keymap in X11
- # services.xserver.xkbOptions = {
- # "caps:swapescape" # map caps to escape.
- # };
- services.openssh.enable = true;
- services.openssh.startWhenNeeded = true;
- services.openssh.settings.AllowUsers = ["jalil"];
+ services.openssh = {
+ # Configure keymap in X11
+ # services.xserver.xkbOptions = {
+ # "caps:swapescape" # map caps to escape.
+ # };
+ enable = true;
+ startWhenNeeded = true;
+ settings.AllowUsers = ["jalil"];
+ };
# Enable CUPS to print documents.
services.printing.enable = true;
diff --git a/machines/gemini/hardware-configuration.nix b/machines/gemini/hardware-configuration.nix
index 4482eba..045b0e4 100644
--- a/machines/gemini/hardware-configuration.nix
+++ b/machines/gemini/hardware-configuration.nix
@@ -8,46 +8,50 @@
...
}: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
-
- boot.initrd.availableKernelModules = [
- "nvme"
- "xhci_pci"
- "ahci"
- "usbhid"
- "usb_storage"
- "sd_mod"
- ];
- boot.initrd.kernelModules = [];
- boot.kernelModules = ["kvm-amd"];
- boot.extraModulePackages = [];
-
- fileSystems."/" = {
- # device = "/dev/disk/by-label/NIXOSROOT";
- device = "/dev/disk/by-label/NIXOSHOME";
- fsType = "btrfs";
- options = ["subvol=root"];
+ boot = {
+ initrd = {
+ availableKernelModules = [
+ "nvme"
+ "xhci_pci"
+ "ahci"
+ "usbhid"
+ "usb_storage"
+ "sd_mod"
+ ];
+ kernelModules = [];
+ };
+ kernelModules = ["kvm-amd"];
+ extraModulePackages = [];
};
+ fileSystems = {
+ "/" = {
+ # device = "/dev/disk/by-label/NIXOSROOT";
+ device = "/dev/disk/by-label/NIXOSHOME";
+ fsType = "btrfs";
+ options = ["subvol=root"];
+ };
- fileSystems."/steam" = {
- device = "/dev/disk/by-label/STEAM";
- fsType = "btrfs";
- };
+ "/steam" = {
+ device = "/dev/disk/by-label/STEAM";
+ fsType = "btrfs";
+ };
- fileSystems."/home" = {
- device = "/dev/disk/by-label/NIXOSHOME";
- fsType = "btrfs";
- options = ["subvol=home"];
- };
+ "/home" = {
+ device = "/dev/disk/by-label/NIXOSHOME";
+ fsType = "btrfs";
+ options = ["subvol=home"];
+ };
- fileSystems."/nix" = {
- device = "/dev/disk/by-label/NIXOSROOT";
- fsType = "btrfs";
- options = ["subvol=nix"];
- };
+ "/nix" = {
+ device = "/dev/disk/by-label/NIXOSROOT";
+ fsType = "btrfs";
+ options = ["subvol=nix"];
+ };
- fileSystems."/boot" = {
- device = "/dev/disk/by-label/BOOT";
- fsType = "vfat";
+ "/boot" = {
+ device = "/dev/disk/by-label/BOOT";
+ fsType = "vfat";
+ };
};
swapDevices = [{device = "/dev/disk/by-label/SWAP";}];
diff --git a/machines/libra/default.nix b/machines/libra/default.nix
index 3a16dd2..e4d4972 100644
--- a/machines/libra/default.nix
+++ b/machines/libra/default.nix
@@ -20,39 +20,49 @@
"noatime"
];
};
+ boot = {
+ kernelPackages = pkgs.linuxPackages_latest;
+ kernelParams = ["amdgpu.dcdebugmask=0x10"];
+ loader = {
+ # Use the systemd-boot EFI boot loader.
+ timeout = 0; # Press Space to show the menu
+ efi.canTouchEfiVariables = true;
+ systemd-boot.enable = true;
+ systemd-boot.configurationLimit = 10;
+ };
+ };
+ # Fixes graphical issues
+ hardware = {
+ opengl.enable = true;
+ bluetooth.enable = true;
+ tuxedo-rs = {
+ enable = true;
+ tailor-gui.enable = true;
+ };
+ };
+ networking = {
+ hostName = "libra";
+ networkmanager = {
+ enable = true; # Easiest to use and most distros use this by default.
+ # networking.networkmanager.wifi.backend = "iwd"; # Seems to cause problems
+ appendNameservers = [
+ "1.1.1.1"
+ "1.0.0.1"
+ "8.8.8.8"
+ "8.4.4.8"
+ ];
+ };
+ };
- boot.kernelPackages = pkgs.linuxPackages_latest;
- boot.kernelParams = ["amdgpu.dcdebugmask=0x10"]; # Fixes graphical issues
+ # use xkb.options in tty.
+ console.useXkbConfig = true;
+ services = {
+ # Enable CUPS to print documents.
+ printing.enable = true;
- hardware.opengl.enable = true;
- hardware.bluetooth.enable = true;
- hardware.tuxedo-rs.enable = true;
- hardware.tuxedo-rs.tailor-gui.enable = true;
-
- # Use the systemd-boot EFI boot loader.
- boot.loader.timeout = 0; # Press Space to show the menu
- boot.loader.efi.canTouchEfiVariables = true;
- boot.loader.systemd-boot.enable = true;
- boot.loader.systemd-boot.configurationLimit = 10;
-
- networking.hostName = "libra";
- networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
- # networking.networkmanager.wifi.backend = "iwd"; # Seems to cause problems
- networking.networkmanager.appendNameservers = [
- "1.1.1.1"
- "1.0.0.1"
- "8.8.8.8"
- "8.4.4.8"
- ];
-
- # Select internationalisation properties.
- console.useXkbConfig = true; # use xkb.options in tty.
-
- # Enable CUPS to print documents.
- services.printing.enable = true;
-
- # Enable the OpenSSH daemon.
- services.openssh.enable = true;
+ # Enable the OpenSSH daemon.
+ openssh.enable = true;
+ };
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
diff --git a/machines/libra/hardware-configuration.nix b/machines/libra/hardware-configuration.nix
index cd5d174..928cbbe 100644
--- a/machines/libra/hardware-configuration.nix
+++ b/machines/libra/hardware-configuration.nix
@@ -9,38 +9,42 @@
...
}: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
-
- boot.initrd.availableKernelModules = [
- "nvme"
- "xhci_pci"
- "usb_storage"
- "sd_mod"
- ];
- boot.initrd.kernelModules = [];
- boot.kernelModules = ["kvm-amd"];
- boot.extraModulePackages = [];
-
- fileSystems."/" = {
- device = "/dev/disk/by-uuid/efbda7f0-c286-4fb1-b780-d3128e4d1a3e";
- fsType = "btrfs";
- options = ["subvol=root"];
+ boot = {
+ initrd = {
+ availableKernelModules = [
+ "nvme"
+ "xhci_pci"
+ "usb_storage"
+ "sd_mod"
+ ];
+ kernelModules = [];
+ };
+ kernelModules = ["kvm-amd"];
+ extraModulePackages = [];
};
+ fileSystems = {
+ "/" = {
+ device = "/dev/disk/by-uuid/efbda7f0-c286-4fb1-b780-d3128e4d1a3e";
+ fsType = "btrfs";
+ options = ["subvol=root"];
+ };
- fileSystems."/home" = {
- device = "/dev/disk/by-uuid/efbda7f0-c286-4fb1-b780-d3128e4d1a3e";
- fsType = "btrfs";
- options = ["subvol=home"];
- };
+ "/home" = {
+ device = "/dev/disk/by-uuid/efbda7f0-c286-4fb1-b780-d3128e4d1a3e";
+ fsType = "btrfs";
+ options = ["subvol=home"];
+ };
- fileSystems."/nix" = {
- device = "/dev/disk/by-uuid/efbda7f0-c286-4fb1-b780-d3128e4d1a3e";
- fsType = "btrfs";
- options = ["subvol=nix"];
- };
+ "/nix" = {
+ device = "/dev/disk/by-uuid/efbda7f0-c286-4fb1-b780-d3128e4d1a3e";
+ fsType = "btrfs";
+ options = ["subvol=nix"];
+ };
- fileSystems."/boot" = {
- device = "/dev/disk/by-uuid/4E80-8B60";
- fsType = "vfat";
+ "/boot" = {
+ device = "/dev/disk/by-uuid/4E80-8B60";
+ fsType = "vfat";
+ };
};
swapDevices = [];
diff --git a/machines/vm/default.nix b/machines/vm/default.nix
index b50326b..e9c6397 100644
--- a/machines/vm/default.nix
+++ b/machines/vm/default.nix
@@ -1,4 +1,4 @@
-{...}: {
+_: {
services.qemuGuest.enable = true;
boot.initrd.availableKernelModules = [
diff --git a/nvim/augroups.nix b/nvim/augroups.nix
index 1f8b4ca..868fb20 100644
--- a/nvim/augroups.nix
+++ b/nvim/augroups.nix
@@ -1,7 +1,9 @@
{
- autoGroups."highlightOnYank" = {};
- autoGroups."lspConfig" = {};
- autoGroups."restoreCursorPosition" = {};
+ autoGroups = {
+ "highlightOnYank" = {};
+ "lspConfig" = {};
+ "restoreCursorPosition" = {};
+ };
autoCmd = [
{
group = "highlightOnYank";
diff --git a/nvim/nixvim.nix b/nvim/nixvim.nix
index fc4b86d..bbac212 100644
--- a/nvim/nixvim.nix
+++ b/nvim/nixvim.nix
@@ -20,12 +20,15 @@ in {
package = pkgs.neovim;
globals.mapleader = " ";
# Appearance
- colorschemes = {
- gruvbox.enable = true;
- gruvbox.settings.bold = true;
- gruvbox.settings.transparent_mode = true;
- gruvbox.settings.terminal_colors = true;
+ colorschemes.gruvbox = {
+ enable = true;
+ settings = {
+ bold = true;
+ transparent_mode = true;
+ terminal_colors = true;
+ };
};
+
opts = {
number = true;
relativenumber = true;
diff --git a/system/default.nix b/system/default.nix
index 05d6e6f..6ff101b 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -51,20 +51,29 @@ in {
# Enable dev documentation
documentation.dev.enable = cfg.dev.enable;
-
- # Shell prompt
- programs.starship.enable = true;
- programs.starship.settings = lib.mkIf cfg.styling.enable {
- format = "$time$all";
- add_newline = false;
- cmd_duration.min_time = 500;
- cmd_duration.show_milliseconds = true;
- time.format = "[$time](bold yellow) ";
- time.disabled = false;
- status.format = "[$signal_name$common_meaning$maybe_int](red)";
- status.symbol = "[✗](bold red)";
- status.disabled = false;
- sudo.disabled = false;
+ programs = {
+ # Shell prompt
+ starship = {
+ enable = true;
+ settings = lib.mkIf cfg.styling.enable {
+ format = "$time$all";
+ add_newline = false;
+ cmd_duration.min_time = 500;
+ cmd_duration.show_milliseconds = true;
+ time = {
+ format = "[$time](bold yellow) ";
+ disabled = false;
+ };
+ status = {
+ format = "[$signal_name$common_meaning$maybe_int](red)";
+ symbol = "[✗](bold red)";
+ disabled = false;
+ };
+ sudo.disabled = false;
+ };
+ };
+ # Default shell
+ zsh.enable = true;
};
environment.etc = keysFromGithub;
@@ -74,29 +83,32 @@ in {
# Enable printer autodiscovery if printing is enabled
services.avahi = {
- enable = config.services.printing.enable;
+ inherit (config.services.printing) enable;
nssmdns4 = true;
openFirewall = true;
};
-
- # Default shell
- programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
-
# Open ports for spotifyd
- networking.firewall.allowedUDPPorts = [5353];
- networking.firewall.allowedTCPPorts = [2020];
-
+ networking.firewall = {
+ allowedUDPPorts = [5353];
+ allowedTCPPorts = [2020];
+ };
# Nix Settings
- nix.gc.automatic = true;
- nix.gc.dates = "weekly";
- nix.gc.options = "--delete-older-than 30d";
- # run between 0 and 45min after boot if run was missed
- nix.gc.randomizedDelaySec = "45min";
- nix.settings.auto-optimise-store = true;
- nix.settings.experimental-features = [
- "nix-command"
- "flakes"
- ];
+ nix = {
+ gc = {
+ automatic = true;
+ dates = "weekly";
+ options = "--delete-older-than 30d";
+ # run between 0 and 45min after boot if run was missed
+ randomizedDelaySec = "45min";
+ };
+ settings = {
+ auto-optimise-store = true;
+ experimental-features = [
+ "nix-command"
+ "flakes"
+ ];
+ };
+ };
};
}
diff --git a/system/gui/default.nix b/system/gui/default.nix
index 9f8723f..7163712 100644
--- a/system/gui/default.nix
+++ b/system/gui/default.nix
@@ -17,65 +17,80 @@ in {
pkgs.pinentry-qt
]
++ lib.optional cfg.ydotool.enable pkgs.ydotool;
-
- systemd.user.services.ydotool = lib.mkIf cfg.ydotool.enable {
- enable = cfg.ydotool.autoStart;
- wantedBy = ["default.target"];
- description = "Generic command-line automation tool";
- documentation = [
- "man:ydotool(1)"
- "man:ydotoold(8)"
- ];
- serviceConfig = {
- Type = "simple";
- Restart = "always";
- ExecStart = "${pkgs.ydotool}/bin/ydotoold";
- ExecReload = "${pkgs.util-linux}/bin/kill -HUP $MAINPID";
- KillMode = "process";
- TimeoutSec = 180;
+ systemd = {
+ user.services.ydotool = lib.mkIf cfg.ydotool.enable {
+ enable = cfg.ydotool.autoStart;
+ wantedBy = ["default.target"];
+ description = "Generic command-line automation tool";
+ documentation = [
+ "man:ydotool(1)"
+ "man:ydotoold(8)"
+ ];
+ serviceConfig = {
+ Type = "simple";
+ Restart = "always";
+ ExecStart = "${pkgs.ydotool}/bin/ydotoold";
+ ExecReload = "${pkgs.util-linux}/bin/kill -HUP $MAINPID";
+ KillMode = "process";
+ TimeoutSec = 180;
+ };
};
+ # Fix xdg-portals issue issue: https://github.com/NixOS/nixpkgs/issues/189851
+ user.extraConfig = ''
+ DefaultEnvironment="PATH=/run/wrappers/bin:/etc/profiles/per-user/%u/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin"
+ '';
};
- # Fix xdg-portals issue issue: https://github.com/NixOS/nixpkgs/issues/189851
- systemd.user.extraConfig = ''
- DefaultEnvironment="PATH=/run/wrappers/bin:/etc/profiles/per-user/%u/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin"
- '';
fonts.fontDir.enable = true;
-
- programs.dconf.enable = true;
-
- programs.sway.enable = cfg.sway;
- programs.sway.extraPackages = []; # No extra packages (by default it adds foot, dmenu, and other stuff)
- programs.sway.wrapperFeatures.base = true;
- programs.sway.wrapperFeatures.gtk = true;
-
- security.polkit.enable = true;
- security.rtkit.enable = true; # Recommended for pipewire
-
- services.flatpak.enable = true;
- # Audio
- services.pipewire.enable = true;
- services.pipewire.alsa.enable = true;
- services.pipewire.alsa.support32Bit = true;
- services.pipewire.pulse.enable = true;
- services.pipewire.wireplumber.enable = true;
- # Dbus
- services.dbus.enable = true;
-
- # XDG portals
- xdg.portal.enable = true;
- xdg.portal.wlr.enable = true;
- xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
- # Default to the gtk portal
- xdg.portal.config.preferred.default = "gtk";
- # Use wlr for screenshots and screen recording
- xdg.portal.config.preferred."org.freedesktop.impl.portal.Screenshot" = "wlr";
- xdg.portal.config.preferred."org.freedesktop.impl.portal.ScreenCast" = "wlr";
- # Consider using darkman like upstream
-
- hardware.opengl.enable = true;
- hardware.uinput.enable = true;
- hardware.steam-hardware.enable = cfg.steamHardwareSupport;
+ programs = {
+ dconf.enable = true;
+ sway = {
+ enable = cfg.sway;
+ # No extra packages (by default it adds foot, dmenu, and other stuff)
+ extraPackages = [];
+ wrapperFeatures = {
+ base = true;
+ gtk = true;
+ };
+ };
+ };
+ security = {
+ polkit.enable = true;
+ rtkit.enable = true; # Recommended for pipewire
+ };
+ services = {
+ flatpak.enable = true;
+ # Audio
+ pipewire = {
+ enable = true;
+ alsa = {
+ enable = true;
+ support32Bit = true;
+ };
+ pulse.enable = true;
+ wireplumber.enable = true;
+ };
+ # Dbus
+ dbus.enable = true;
+ };
+ xdg.portal = {
+ # XDG portals
+ enable = true;
+ wlr.enable = true;
+ extraPortals = [pkgs.xdg-desktop-portal-gtk];
+ config.preferred = {
+ # Default to the gtk portal
+ default = "gtk";
+ # Use wlr for screenshots and screen recording
+ "org.freedesktop.impl.portal.Screenshot" = "wlr";
+ };
+ # Consider using darkman like upstream
+ };
+ hardware = {
+ opengl.enable = true;
+ uinput.enable = true;
+ steam-hardware.enable = cfg.steamHardwareSupport;
+ };
})
(lib.mkIf (enable && cfg."8bitdoFix") {
# Udev rules to start or stop systemd service when controller is connected or disconnected
diff --git a/system/stylix-config.nix b/system/stylix-config.nix
index f15c672..76792eb 100644
--- a/system/stylix-config.nix
+++ b/system/stylix-config.nix
@@ -13,32 +13,36 @@ in {
image = cfg.wallpaper;
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
polarity = "dark";
- fonts.monospace = [
- {
- name = "JetBrains Mono";
- package = pkgs.jetbrains-mono;
- }
- fallbackSymbols
- ];
- fonts.sansSerif = [
- {
- name = "Noto Sans";
- package = pkgs.noto-fonts;
- }
- fallbackSymbols
- ];
- fonts.serif = [
- {
- name = "Noto Serif";
- package = pkgs.noto-fonts;
- }
- fallbackSymbols
- ];
- fonts.emoji = {
- package = pkgs.noto-fonts-emoji;
- name = "Noto Color Emoji";
+ fonts = {
+ monospace = [
+ {
+ name = "JetBrains Mono";
+ package = pkgs.jetbrains-mono;
+ }
+ fallbackSymbols
+ ];
+ sansSerif = [
+ {
+ name = "Noto Sans";
+ package = pkgs.noto-fonts;
+ }
+ fallbackSymbols
+ ];
+ serif = [
+ {
+ name = "Noto Serif";
+ package = pkgs.noto-fonts;
+ }
+ fallbackSymbols
+ ];
+ emoji = {
+ package = pkgs.noto-fonts-emoji;
+ name = "Noto Color Emoji";
+ };
+ sizes.popups = 12;
+ };
+ targets.plymouth = {
+ logoAnimated = false;
+ logo = cfg.bootLogo;
};
- fonts.sizes.popups = 12;
- targets.plymouth.logoAnimated = false;
- targets.plymouth.logo = cfg.bootLogo;
}