Compare commits
	
		
			No commits in common. "16de891fc7a7e416f8962fcddd53f0bf3323a7bd" and "47365d05f5cf035271c69c6899fd88957cabf075" have entirely different histories.
		
	
	
		
			16de891fc7
			...
			47365d05f5
		
	
		
							
								
								
									
										12
									
								
								default.nix
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								default.nix
									
									
									
									
									
								
							| @ -1,11 +1,11 @@ | |||||||
| { ... }: | { ... }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   imports = [ |     imports = [ | ||||||
|     # Import modules |         # Import modules | ||||||
|     ./modules/default.nix |         ./modules/default.nix | ||||||
| 
 | 
 | ||||||
|     # Import custom packages |         # Import custom packages | ||||||
|     ./pkgs/default.nix |         ./pkgs/default.nix | ||||||
|   ]; |     ]; | ||||||
| } | } | ||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.base; |   cfg = config.modules.base; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.base = { |   options.modules.base = { | ||||||
|     enable = mkEnableOption "base"; |     enable = mkEnableOption "base"; | ||||||
|   }; |   }; | ||||||
| @ -21,6 +15,7 @@ in | |||||||
|       wget |       wget | ||||||
|       curl |       curl | ||||||
|       dig |       dig | ||||||
|  |       nix-tree | ||||||
|       procps |       procps | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,18 +1,14 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.clean-tmp; |   cfg = config.modules.clean-tmp; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.clean-tmp = { |   options.modules.clean-tmp = { | ||||||
|     enable = mkEnableOption "clean-tmp"; |     enable = mkEnableOption "clean-tmp"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { boot.tmp.cleanOnBoot = true; }; |   config = mkIf cfg.enable { | ||||||
|  |     boot.tmp.cleanOnBoot = true; | ||||||
|  |   }; | ||||||
| } | } | ||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.silent-boot; |   cfg = config.modules.silent-boot; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.silent-boot = { |   options.modules.silent-boot = { | ||||||
|     enable = mkEnableOption "silent-boot"; |     enable = mkEnableOption "silent-boot"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.systemd-boot; |   cfg = config.modules.systemd-boot; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.systemd-boot = { |   options.modules.systemd-boot = { | ||||||
|     enable = mkEnableOption "systemd-boot"; |     enable = mkEnableOption "systemd-boot"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,18 +1,16 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.brightnessctl; |   cfg = config.modules.brightnessctl; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.brightnessctl = { |   options.modules.brightnessctl = { | ||||||
|     enable = mkEnableOption "brightnessctl"; |     enable = mkEnableOption "brightnessctl"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { environment.systemPackages = [ pkgs.brightnessctl ]; }; |   config = mkIf cfg.enable { | ||||||
|  |     environment.systemPackages = [ | ||||||
|  |         pkgs.brightnessctl | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
| } | } | ||||||
| @ -1,12 +1,6 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; { | ||||||
| { |  | ||||||
|   imports = [ |   imports = [ | ||||||
|     # Import modules |     # Import modules | ||||||
|     ./base/default.nix |     ./base/default.nix | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.fontconfig; |   cfg = config.modules.fontconfig; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.fontconfig = { |   options.modules.fontconfig = { | ||||||
|     enable = mkEnableOption "fontconfig"; |     enable = mkEnableOption "fontconfig"; | ||||||
|   }; |   }; | ||||||
| @ -18,10 +12,10 @@ in | |||||||
|     fonts.fontconfig.enable = cfg.enable; |     fonts.fontconfig.enable = cfg.enable; | ||||||
|     fonts.enableDefaultPackages = false; |     fonts.enableDefaultPackages = false; | ||||||
|     fonts.fontconfig.defaultFonts = { |     fonts.fontconfig.defaultFonts = { | ||||||
|       serif = mkDefault [ ]; |         serif = mkDefault []; | ||||||
|       sansSerif = mkDefault [ ]; |         sansSerif = mkDefault []; | ||||||
|       monospace = mkDefault [ ]; |         monospace = mkDefault []; | ||||||
|       emoji = mkDefault [ ]; |         emoji = mkDefault []; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   config = { |   config = { | ||||||
| @ -11,7 +6,7 @@ | |||||||
|     # Set up graphics |     # Set up graphics | ||||||
|     hardware.graphics.enable32Bit = true; |     hardware.graphics.enable32Bit = true; | ||||||
|     hardware.graphics.enable = true; |     hardware.graphics.enable = true; | ||||||
|     services.xserver.videoDrivers = [ "nvidia" ]; |     services.xserver.videoDrivers = ["nvidia"]; | ||||||
|     hardware.nvidia = { |     hardware.nvidia = { | ||||||
|       modesetting.enable = true; |       modesetting.enable = true; | ||||||
|       powerManagement.enable = false; |       powerManagement.enable = false; | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.greetd; |   cfg = config.modules.greetd; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.greetd = { |   options.modules.greetd = { | ||||||
|     enable = mkEnableOption "greetd"; |     enable = mkEnableOption "greetd"; | ||||||
|     command = mkOption { |     command = mkOption { | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.tuigreet; |   cfg = config.modules.tuigreet; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.tuigreet = {  |   options.modules.tuigreet = {  | ||||||
|     enable = mkEnableOption "tuigreet";  |     enable = mkEnableOption "tuigreet";  | ||||||
|     greeting = mkOption { |     greeting = mkOption { | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   config = { |   config = { | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.neovim; |   cfg = config.modules.neovim; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.neovim = { |   options.modules.neovim = { | ||||||
|     enable = mkEnableOption "neovim"; |     enable = mkEnableOption "neovim"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.pipewire; |   cfg = config.modules.pipewire; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.pipewire = { |   options.modules.pipewire = { | ||||||
|     enable = mkEnableOption "pipewire"; |     enable = mkEnableOption "pipewire"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,20 +1,14 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let  | let  | ||||||
|   cfg = config.modules.unfree; |   cfg = config.modules.unfree; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.unfree = { |   options.modules.unfree = { | ||||||
|     enable = mkEnableOption "unfree"; |     enable = mkEnableOption "unfree"; | ||||||
|     allowedPackages = mkOption { |     allowedPackages = mkOption { | ||||||
|       type = types.listOf types.str; |       type = types.listOf types.str; | ||||||
|       default = [ ]; |       default = []; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,24 +1,19 @@ | |||||||
| { | { config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   # Nixvim |   # Nixvim | ||||||
|   nixvim = import (builtins.fetchGit { url = "https://github.com/nix-community/nixvim"; }); |   nixvim = import (builtins.fetchGit { | ||||||
|  |     url = "https://github.com/nix-community/nixvim"; | ||||||
|  |   }); | ||||||
| 
 | 
 | ||||||
|   # Stylix |   # Stylix | ||||||
|   stylix = import ( |   stylix = import (pkgs.fetchFromGitHub { | ||||||
|     pkgs.fetchFromGitHub { |     owner = "danth"; | ||||||
|       owner = "danth"; |     repo = "stylix"; | ||||||
|       repo = "stylix"; |     rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116"; | ||||||
|       rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116"; |     sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5"; | ||||||
|       sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5"; |   }); | ||||||
|     } |  | ||||||
|   ); |  | ||||||
| 
 | 
 | ||||||
|   # User configuration |   # User configuration | ||||||
|   userModule = types.submodule { |   userModule = types.submodule { | ||||||
| @ -41,8 +36,7 @@ let | |||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   imports = [ |   imports = [ | ||||||
|     # Import home manager |     # Import home manager | ||||||
|     <home-manager/nixos> |     <home-manager/nixos> | ||||||
| @ -54,7 +48,7 @@ in | |||||||
|   options = { |   options = { | ||||||
|     machine.users = mkOption { |     machine.users = mkOption { | ||||||
|       type = types.attrsOf userModule; |       type = types.attrsOf userModule; | ||||||
|       default = { }; |       default = {}; | ||||||
|       description = "Users configured on this system."; |       description = "Users configured on this system."; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { input, pkgs, config, ... }: | ||||||
|   input, |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| {  | {  | ||||||
|   imports = [ |   imports = [ | ||||||
| @ -14,8 +9,6 @@ | |||||||
|     ./firefox/default.nix |     ./firefox/default.nix | ||||||
|     ./fontconfig/default.nix |     ./fontconfig/default.nix | ||||||
|     ./foot/default.nix |     ./foot/default.nix | ||||||
|     ./language/nix.nix |  | ||||||
|     ./language/rust.nix |  | ||||||
|     ./mako/default.nix |     ./mako/default.nix | ||||||
|     ./neovim/default.nix |     ./neovim/default.nix | ||||||
|     ./obsidian/default.nix |     ./obsidian/default.nix | ||||||
|  | |||||||
| @ -1,17 +1,11 @@ | |||||||
| { | { lib, config, pkgs, ... }:  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.waybar; |   cfg = config.modules.waybar; | ||||||
|   theme = config.theming; |   theme = config.theming; | ||||||
|   colors = theme.colors; |   colors = theme.colors; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.waybar = { |   options.modules.waybar = { | ||||||
|     enable = mkEnableOption "waybar"; |     enable = mkEnableOption "waybar"; | ||||||
|   }; |   }; | ||||||
| @ -28,7 +22,9 @@ in | |||||||
|         mainBar = { |         mainBar = { | ||||||
|           layer = "top"; |           layer = "top"; | ||||||
|           spacing = 16; |           spacing = 16; | ||||||
|           modules-left = [ "river/tags" ]; |           modules-left = [ | ||||||
|  |             "river/tags" | ||||||
|  |           ]; | ||||||
|           modules-center = [ |           modules-center = [ | ||||||
|             #"river/window" |             #"river/window" | ||||||
|             "mpris" |             "mpris" | ||||||
| @ -65,30 +61,14 @@ in | |||||||
|               #default = [ "" "" ]; |               #default = [ "" "" ]; | ||||||
|               headphone = ""; |               headphone = ""; | ||||||
|               headphone-muted = ""; |               headphone-muted = ""; | ||||||
|               default = [ |               default = [ "" "" "" ]; | ||||||
|                 "" |  | ||||||
|                 "" |  | ||||||
|                 "" |  | ||||||
|               ]; |  | ||||||
|             }; |             }; | ||||||
|           }; |           }; | ||||||
|           battery = { |           battery = { | ||||||
|             format = "{icon} {capacity}%"; # Spacing achieved using "Thin Space" |             format = "{icon} {capacity}%"; # Spacing achieved using "Thin Space" | ||||||
|             format-charging = " {capacity}%"; # Spacing achieved using "Thin Space" |             format-charging = " {capacity}%"; # Spacing achieved using "Thin Space" | ||||||
|             #format-icons = [ "" "" "" "" "" "" "" "" "" "" "" ]; |             #format-icons = [ "" "" "" "" "" "" "" "" "" "" "" ]; | ||||||
|             format-icons = [ |             format-icons = [ "" "" "" "" "" "" "" "" "" "" "" ]; | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|               "" |  | ||||||
|             ]; |  | ||||||
|             interval = 1; |             interval = 1; | ||||||
|           }; |           }; | ||||||
|           clock = { |           clock = { | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, pkgs, config, ... }: | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.desktop; |   cfg = config.modules.desktop; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   imports = [ |   imports = [ | ||||||
|     # Import desktop environment modules |     # Import desktop environment modules | ||||||
|     ./bar/waybar.nix |     ./bar/waybar.nix | ||||||
| @ -27,23 +21,18 @@ in | |||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = { |   config = { | ||||||
|     home.packages = optionals cfg.wayland ( |     home.packages = optionals cfg.wayland (with pkgs; [ | ||||||
|       with pkgs; |       pkgs.wl-clipboard | ||||||
|       [ |       pkgs.wtype | ||||||
|         pkgs.wl-clipboard |     ]); | ||||||
|         pkgs.wtype |  | ||||||
|       ] |  | ||||||
|     ); |  | ||||||
| 
 | 
 | ||||||
|     home.file.".initrc" = { |     home.file.".initrc" = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       executable = true; |       executable = true; | ||||||
|       text = |       text = '' | ||||||
|         '' |         #!${pkgs.bash}/bin/bash | ||||||
|           #!${pkgs.bash}/bin/bash |  | ||||||
| 
 | 
 | ||||||
|         '' |       '' + cfg.initScript; | ||||||
|         + cfg.initScript; |  | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,20 +1,16 @@ | |||||||
| { | { lib, pkgs, config, ... }: | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.waylock; |   cfg = config.modules.waylock; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.waylock = { |   options.modules.waylock = { | ||||||
|     enable = mkEnableOption "waylock"; |     enable = mkEnableOption "waylock"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = { |   config = { | ||||||
|     home.packages = mkIf cfg.enable (with pkgs; [ waylock ]); |     home.packages = mkIf cfg.enable (with pkgs; [ | ||||||
|  |       waylock | ||||||
|  |     ]); | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| @ -1,14 +1,8 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| let | let | ||||||
|   cfg = config.modules.river; |   cfg = config.modules.river; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.river.enable = lib.mkEnableOption "river"; |   options.modules.river.enable = lib.mkEnableOption "river"; | ||||||
| 
 | 
 | ||||||
|   # osConfig = lib.mkIf cfg.enable { |   # osConfig = lib.mkIf cfg.enable { | ||||||
| @ -19,9 +13,6 @@ in | |||||||
|     # Set desktop type to wayland |     # Set desktop type to wayland | ||||||
|     modules.desktop.wayland = true; |     modules.desktop.wayland = true; | ||||||
| 
 | 
 | ||||||
|     # TODO: Move elsewhere and make keybindings more configurable |  | ||||||
|     modules.rofi.enable = true; |  | ||||||
| 
 |  | ||||||
|     # Change desktop to execute river |     # Change desktop to execute river | ||||||
|     modules.desktop.initScript = '' |     modules.desktop.initScript = '' | ||||||
|       river |       river | ||||||
| @ -46,190 +37,152 @@ in | |||||||
|       enable = true; |       enable = true; | ||||||
|       systemd.enable = false; |       systemd.enable = false; | ||||||
|       xwayland.enable = true; |       xwayland.enable = true; | ||||||
|       settings = |       settings = let | ||||||
|         let |         layout = "rivertile"; | ||||||
|           layout = "rivertile"; |         layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}"; | ||||||
|           layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}"; |         modes = ["normal" "locked"]; | ||||||
|           modes = [ |         tags = [1 2 3 4 5 6 7 8 9]; | ||||||
|             "normal" |         waylockOptions = "-init-color 0x${colors.bg} -input-color 0x${colors.focused} -fail-color 0x${colors.bg}"; | ||||||
|             "locked" |  | ||||||
|           ]; |  | ||||||
|           tags = [ |  | ||||||
|             1 |  | ||||||
|             2 |  | ||||||
|             3 |  | ||||||
|             4 |  | ||||||
|             5 |  | ||||||
|             6 |  | ||||||
|             7 |  | ||||||
|             8 |  | ||||||
|             9 |  | ||||||
|           ]; |  | ||||||
|           waylockOptions = "-init-color 0x${colors.bg} -input-color 0x${colors.focused} -fail-color 0x${colors.bg}"; |  | ||||||
| 
 | 
 | ||||||
|           colors = config.theming.colors; |         colors = config.theming.colors; | ||||||
| 
 | 
 | ||||||
|           # Quick pow function |         # Quick pow function | ||||||
|           pow2 = power: if power != 0 then 2 * (pow2 (power - 1)) else 1; |         pow2 = power: | ||||||
|  |           if power != 0 | ||||||
|  |           then 2 * (pow2 (power - 1)) | ||||||
|  |           else 1; | ||||||
| 
 | 
 | ||||||
|           # Modifiers |         # Modifiers | ||||||
|           main = "Super"; |         main = "Super"; | ||||||
|           ssm = "Super+Shift"; |         ssm = "Super+Shift"; | ||||||
|           sas = "Super+Alt+Shift"; |         sas = "Super+Alt+Shift"; | ||||||
|           sam = "Super+Alt"; |         sam = "Super+Alt"; | ||||||
|           scm = "Super+Control"; |         scm = "Super+Control"; | ||||||
|           scam = "Super+Control+Alt"; |         scam = "Super+Control+Alt"; | ||||||
|           ssc = "Super+Shift+Control"; |         ssc = "Super+Shift+Control"; | ||||||
|         in |       in { | ||||||
|         { |         default-layout = "${layout}"; | ||||||
|           default-layout = "${layout}"; |         set-repeat = "50 300"; | ||||||
|           set-repeat = "50 300"; |         xcursor-theme = "BreezeX-RosePine-Linux 24"; | ||||||
|           xcursor-theme = "BreezeX-RosePine-Linux 24"; |         keyboard-layout = "-options \"caps:escape\" us"; | ||||||
|           keyboard-layout = "-options \"caps:escape\" us"; |  | ||||||
| 
 | 
 | ||||||
|           border-width = toString config.theming.layout.borderSize; |         border-width = toString config.theming.layout.borderSize; | ||||||
|           background-color = "0x${colors.bg}"; |         background-color = "0x${colors.bg}"; | ||||||
|           border-color-focused = "0x${colors.fg}"; |         border-color-focused = "0x${colors.fg}"; | ||||||
|           border-color-unfocused = "0x${colors.unfocused}"; # TODO: Change to use named color; |         border-color-unfocused = "0x${colors.unfocused}"; # TODO: Change to use named color; | ||||||
|           border-color-urgent = "0x${colors.fg}"; |         border-color-urgent = "0x${colors.fg}"; | ||||||
| 
 | 
 | ||||||
|           spawn = [ |         spawn = [ | ||||||
|             "\"${layout} ${layoutOptions}\"" |           "\"${layout} ${layoutOptions}\"" | ||||||
|             "waybar" |           "waybar" | ||||||
|           ]; |         ]; | ||||||
|           map = ( |         map = (lib.attrsets.recursiveUpdate ({ | ||||||
|             lib.attrsets.recursiveUpdate |           normal = { | ||||||
|               ({ |             "${main} Q" = "close"; | ||||||
|                 normal = |             "${ssm} E" = "exit"; | ||||||
|                   { |  | ||||||
|                     "${main} Q" = "close"; |  | ||||||
|                     "${ssm} E" = "exit"; |  | ||||||
| 
 | 
 | ||||||
|                     # Basic utilities |             # Basic utilities | ||||||
|                     "${main} X " = "spawn \"waylock -fork-on-lock ${waylockOptions}\""; |             "${main} X " = "spawn \"waylock -fork-on-lock ${waylockOptions}\""; | ||||||
|                     "${ssm} Return" = "spawn foot"; |             "${ssm} Return" = "spawn foot"; | ||||||
|                     "${main} P" = "spawn \"rofi -show drun\""; |             "${main} P" = "spawn \"rofi -show drun\""; | ||||||
|                     "${ssm} P" = "spawn rofi-rbw"; |             "${ssm} P" = "spawn rofi-rbw"; | ||||||
| 
 | 
 | ||||||
|                     # Window focus |             # Window focus | ||||||
|                     "${main} J" = "focus-view next"; |             "${main} J" = "focus-view next"; | ||||||
|                     "${main} K" = "focus-view previous"; |             "${main} K" = "focus-view previous"; | ||||||
| 
 | 
 | ||||||
|                     # Swap windows |             # Swap windows | ||||||
|                     "${ssm} J" = "swap next"; |             "${ssm} J" = "swap next"; | ||||||
|                     "${ssm} K" = "swap previous"; |             "${ssm} K" = "swap previous"; | ||||||
|                     "${main} Return" = "zoom"; |             "${main} Return" = "zoom"; | ||||||
| 
 | 
 | ||||||
|                     # Main ratio |             # Main ratio | ||||||
|                     "${main} H" = "send-layout-cmd rivertile 'main-ratio -0.05'"; |             "${main} H" = "send-layout-cmd rivertile 'main-ratio -0.05'"; | ||||||
|                     "${main} L" = "send-layout-cmd rivertile 'main-ratio +0.05'"; |             "${main} L" = "send-layout-cmd rivertile 'main-ratio +0.05'"; | ||||||
| 
 | 
 | ||||||
|                     # Main count |             # Main count | ||||||
|                     "${ssm} H" = "send-layout-cmd rivertile 'main-count +1'"; |             "${ssm} H" = "send-layout-cmd rivertile 'main-count +1'"; | ||||||
|                     "${ssm} L" = "send-layout-cmd rivertile 'main-count -1'"; |             "${ssm} L" = "send-layout-cmd rivertile 'main-count -1'"; | ||||||
| 
 | 
 | ||||||
|                     # Tags |             # Tags | ||||||
|                     "${main} 0" = "set-focused-tags ${toString (pow2 32 - 1)}"; |             "${main} 0" = "set-focused-tags ${toString (pow2 32 - 1)}"; | ||||||
|                     "${ssm} 0" = "set-view-tags ${toString (pow2 32 - 1)}"; |             "${ssm} 0" = "set-view-tags ${toString (pow2 32 - 1)}"; | ||||||
| 
 | 
 | ||||||
|                     # Orientation |             # Orientation | ||||||
|                     "${main} Up" = "send-layout-cmd rivertile \"main-location top\""; |             "${main} Up" = "send-layout-cmd rivertile \"main-location top\""; | ||||||
|                     "${main} Right" = "send-layout-cmd rivertile \"main-location right\""; |             "${main} Right" = "send-layout-cmd rivertile \"main-location right\""; | ||||||
|                     "${main} Down" = "send-layout-cmd rivertile \"main-location bottom\""; |             "${main} Down" = "send-layout-cmd rivertile \"main-location bottom\""; | ||||||
|                     "${main} Left" = "send-layout-cmd rivertile \"main-location left\""; |             "${main} Left" = "send-layout-cmd rivertile \"main-location left\""; | ||||||
| 
 | 
 | ||||||
|                     # Move floating windows |             # Move floating windows | ||||||
|                     "${sam} H" = "move left 100"; |             "${sam} H" = "move left 100"; | ||||||
|                     "${sam} J" = "move down 100"; |             "${sam} J" = "move down 100"; | ||||||
|                     "${sam} K" = "move up 100"; |             "${sam} K" = "move up 100"; | ||||||
|                     "${sam} L" = "move right 100"; |             "${sam} L" = "move right 100"; | ||||||
| 
 | 
 | ||||||
|                     # Snap floating windows |             # Snap floating windows | ||||||
|                     "${scam} H" = "snap left"; |             "${scam} H" = "snap left"; | ||||||
|                     "${scam} J" = "snap down"; |             "${scam} J" = "snap down"; | ||||||
|                     "${scam} K" = "snap up"; |             "${scam} K" = "snap up"; | ||||||
|                     "${scam} L" = "snap right"; |             "${scam} L" = "snap right"; | ||||||
| 
 | 
 | ||||||
|                     # Resize floating windows |             # Resize floating windows | ||||||
|                     "${sas} H" = "resize horizontal -100"; |             "${sas} H" = "resize horizontal -100"; | ||||||
|                     "${sas} J" = "resize vertical 100"; |             "${sas} J" = "resize vertical 100"; | ||||||
|                     "${sas} K" = "resize vertical -100"; |             "${sas} K" = "resize vertical -100"; | ||||||
|                     "${sas} L" = "resize horizontal 100"; |             "${sas} L" = "resize horizontal 100"; | ||||||
| 
 | 
 | ||||||
|                     # Toggle modes |             # Toggle modes | ||||||
|                     "${main} Space" = "toggle-float"; |             "${main} Space" = "toggle-float"; | ||||||
|                     "${main} F" = "toggle-fullscreen"; |             "${main} F" = "toggle-fullscreen"; | ||||||
|                   } |           } // builtins.listToAttrs (builtins.concatLists (map (tag: [ | ||||||
|                   // builtins.listToAttrs ( |             { name = "${main} ${toString tag}"; value = "set-focused-tags ${toString (pow2 (tag - 1))}"; } | ||||||
|                     builtins.concatLists ( |             { name = "${ssm} ${toString tag}"; value = "set-view-tags ${toString (pow2 (tag - 1))}"; } | ||||||
|                       map (tag: [ |             { name = "${scm} ${toString tag}"; value = "toggle-focused-tags ${toString (pow2 (tag - 1))}"; } | ||||||
|                         { |             { name = "${ssc} ${toString tag}"; value = "toggle-view-tags ${toString (pow2 (tag - 1))}"; } | ||||||
|                           name = "${main} ${toString tag}"; |           ]) tags));  | ||||||
|                           value = "set-focused-tags ${toString (pow2 (tag - 1))}"; |         }) (builtins.listToAttrs (map (mode: { | ||||||
|                         } |           name = "${mode}"; | ||||||
|                         { |           value = { | ||||||
|                           name = "${ssm} ${toString tag}"; |             # Control volume | ||||||
|                           value = "set-view-tags ${toString (pow2 (tag - 1))}"; |             "None XF86AudioRaiseVolume" = "spawn \"pulsemixer --change-volume +5\""; | ||||||
|                         } |             "None XF86AudioLowerVolume" = "spawn \"pulsemixer --change-volume -5\""; | ||||||
|                         { |             "None XF86AudioMute" = "spawn \"pulsemixer --toggle-mute\""; | ||||||
|                           name = "${scm} ${toString tag}"; |  | ||||||
|                           value = "toggle-focused-tags ${toString (pow2 (tag - 1))}"; |  | ||||||
|                         } |  | ||||||
|                         { |  | ||||||
|                           name = "${ssc} ${toString tag}"; |  | ||||||
|                           value = "toggle-view-tags ${toString (pow2 (tag - 1))}"; |  | ||||||
|                         } |  | ||||||
|                       ]) tags |  | ||||||
|                     ) |  | ||||||
|                   ); |  | ||||||
|               }) |  | ||||||
|               ( |  | ||||||
|                 builtins.listToAttrs ( |  | ||||||
|                   map (mode: { |  | ||||||
|                     name = "${mode}"; |  | ||||||
|                     value = { |  | ||||||
|                       # Control volume |  | ||||||
|                       "None XF86AudioRaiseVolume" = "spawn \"pulsemixer --change-volume +5\""; |  | ||||||
|                       "None XF86AudioLowerVolume" = "spawn \"pulsemixer --change-volume -5\""; |  | ||||||
|                       "None XF86AudioMute" = "spawn \"pulsemixer --toggle-mute\""; |  | ||||||
| 
 | 
 | ||||||
|                       # Control brightness |             # Control brightness | ||||||
|                       "None XF86MonBrightnessUp" = "spawn \"brightnessctl set +5%\""; |             "None XF86MonBrightnessUp" = "spawn \"brightnessctl set +5%\""; | ||||||
|                       "None XF86MonBrightnessDown" = "spawn \"brightnessctl set 5%-\""; |             "None XF86MonBrightnessDown" = "spawn \"brightnessctl set 5%-\""; | ||||||
| 
 | 
 | ||||||
|                       # Control music playback |             # Control music playback | ||||||
|                       "None XF86Messenger" = "spawn \"playerctl previous\""; |             "None XF86Messenger" = "spawn \"playerctl previous\""; | ||||||
|                       "None XF86Go" = "spawn \"playerctl play-pause\""; |             "None XF86Go" = "spawn \"playerctl play-pause\""; | ||||||
|                       "None Cancel" = "spawn \"playerctl next\""; |             "None Cancel" = "spawn \"playerctl next\""; | ||||||
|                     }; |  | ||||||
|                   }) modes |  | ||||||
|                 ) |  | ||||||
|               ) |  | ||||||
|           ); |  | ||||||
|           map-pointer = { |  | ||||||
|             normal = { |  | ||||||
|               "${main} BTN_LEFT" = "move-view"; |  | ||||||
|               "${main} BTN_RIGHT" = "resize-view"; |  | ||||||
|               "${main} BTN_MIDDLE" = "toggle-float"; |  | ||||||
|             }; |  | ||||||
|           }; |           }; | ||||||
|           input = { |         }) modes))); | ||||||
|             "'*'" = { |         map-pointer = { | ||||||
|               accel-profile = "adaptive"; |           normal = { | ||||||
|               pointer-accel = "0.5"; |             "${main} BTN_LEFT" = "move-view"; | ||||||
|               scroll-factor = "0.8"; |             "${main} BTN_RIGHT" = "resize-view"; | ||||||
|             }; |             "${main} BTN_MIDDLE" = "toggle-float"; | ||||||
|             "'*Synaptics*'" = { |  | ||||||
|               natural-scroll = "enabled"; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|           rule-add = { |  | ||||||
|             "-app-id" = { |  | ||||||
|               "'bar'" = "csd"; |  | ||||||
|               "'*'" = "ssd"; |  | ||||||
|             }; |  | ||||||
|           }; |           }; | ||||||
|         }; |         }; | ||||||
|  |         input = { | ||||||
|  |           "'*'" = { | ||||||
|  |             accel-profile = "adaptive"; | ||||||
|  |             pointer-accel = "0.5"; | ||||||
|  |             scroll-factor = "0.8"; | ||||||
|  |           }; | ||||||
|  |           "'*Synaptics*'" = { | ||||||
|  |             natural-scroll = "enabled"; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  |         rule-add = { | ||||||
|  |           "-app-id" = { | ||||||
|  |             "'bar'" = "csd"; | ||||||
|  |             "'*'" = "ssd"; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.discord; |   cfg = config.modules.discord; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.discord = { |   options.modules.discord = { | ||||||
|     enable = mkEnableOption "discord"; |     enable = mkEnableOption "discord"; | ||||||
|   }; |   }; | ||||||
| @ -17,6 +11,8 @@ in | |||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     modules.unfree.allowedPackages = [ "discord" ]; |     modules.unfree.allowedPackages = [ "discord" ]; | ||||||
| 
 | 
 | ||||||
|     home.packages = with pkgs; [ discord ]; |     home.packages = with pkgs; [ | ||||||
|  |       discord | ||||||
|  |     ]; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| @ -1,16 +1,14 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.feishin; |   cfg = config.modules.feishin; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.feishin.enable = mkEnableOption "feishin"; |   options.modules.feishin.enable = mkEnableOption "feishin"; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { home.packages = with pkgs; [ feishin ]; }; |   config = mkIf cfg.enable { | ||||||
|  |     home.packages = with pkgs; [ | ||||||
|  |       feishin | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
| } | } | ||||||
| @ -1,14 +1,8 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| let | let | ||||||
|   cfg = config.modules.firefox; |   cfg = config.modules.firefox; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.firefox.enable = lib.mkEnableOption "firefox"; |   options.modules.firefox.enable = lib.mkEnableOption "firefox"; | ||||||
| 
 | 
 | ||||||
|   config = lib.mkIf cfg.enable { |   config = lib.mkIf cfg.enable { | ||||||
| @ -38,9 +32,7 @@ in | |||||||
|         DisableTelemetry = true; |         DisableTelemetry = true; | ||||||
|         DisplayBookmarksToolbar = "never"; |         DisplayBookmarksToolbar = "never"; | ||||||
|         DisplayMenuBar = "never"; |         DisplayMenuBar = "never"; | ||||||
|         DNSOverHTTPS = { |         DNSOverHTTPS = { Enabled = false; }; | ||||||
|           Enabled = false; |  | ||||||
|         }; |  | ||||||
|         DontCheckDefaultBrowser = true; |         DontCheckDefaultBrowser = true; | ||||||
|         PasswordManagerEnabled = false; |         PasswordManagerEnabled = false; | ||||||
|         TranslateEnabled = true; |         TranslateEnabled = true; | ||||||
| @ -50,7 +42,9 @@ in | |||||||
|       profiles.nixos = { |       profiles.nixos = { | ||||||
|         search.default = "DuckDuckGo"; |         search.default = "DuckDuckGo"; | ||||||
| 
 | 
 | ||||||
|         extensions = with pkgs.nur.repos.rycee.firefox-addons; [ ublock-origin ]; |         extensions = with pkgs.nur.repos.rycee.firefox-addons; [ | ||||||
|  |           ublock-origin | ||||||
|  |         ]; | ||||||
| 
 | 
 | ||||||
|         settings = { |         settings = { | ||||||
|           "browser.tabs.inTitlebar" = 0; |           "browser.tabs.inTitlebar" = 0; | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
| @ -20,11 +15,8 @@ let | |||||||
|     </alias> |     </alias> | ||||||
|   ''; |   ''; | ||||||
| 
 | 
 | ||||||
|   configContent = concatStrings ( |   configContent = concatStrings (map (font: aliasConfig config.theming.fonts.pkgs.${font}) config.theming.fonts.installed); | ||||||
|     map (font: aliasConfig config.theming.fonts.pkgs.${font}) config.theming.fonts.installed | in { | ||||||
|   ); |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.modules.fontconfig = { |   options.modules.fontconfig = { | ||||||
|     enable = mkEnableOption "fontconfig"; |     enable = mkEnableOption "fontconfig"; | ||||||
|   }; |   }; | ||||||
| @ -34,10 +26,18 @@ in | |||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|       defaultFonts = { |       defaultFonts = { | ||||||
|         serif = [ config.theming.fonts.serif.name ]; |         serif = [ | ||||||
|         sansSerif = [ config.theming.fonts.sansSerif.name ]; |           config.theming.fonts.serif.name | ||||||
|         monospace = [ config.theming.fonts.monospace.name ]; |         ]; | ||||||
|         emoji = [ config.theming.fonts.emoji.name ]; |         sansSerif = [ | ||||||
|  |           config.theming.fonts.sansSerif.name | ||||||
|  |         ]; | ||||||
|  |         monospace = [ | ||||||
|  |           config.theming.fonts.monospace.name | ||||||
|  |         ]; | ||||||
|  |         emoji = [ | ||||||
|  |           config.theming.fonts.emoji.name | ||||||
|  |         ]; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,32 +1,24 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.foot; |   cfg = config.modules.foot; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.foot.enable = mkEnableOption "foot"; |   options.modules.foot.enable = mkEnableOption "foot"; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     programs.foot = { |     programs.foot = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       settings = { |       settings = { | ||||||
|         main = |         main = let | ||||||
|           let |           font = config.theming.fonts.monospace.name; | ||||||
|             font = config.theming.fonts.monospace.name; |           size = toString config.theming.fonts.monospace.recommendedSize; | ||||||
|             size = toString config.theming.fonts.monospace.recommendedSize; |         in { | ||||||
|           in |           font = mkForce "${font}:style=Regular:size=${size}"; | ||||||
|           { |           font-bold = "${font}:style=Bold:size=${size}"; | ||||||
|             font = mkForce "${font}:style=Regular:size=${size}"; |           font-italic = "${font}:style=Italic:size=${size}"; | ||||||
|             font-bold = "${font}:style=Bold:size=${size}"; |           font-bold-italic = "${font}:style=Bold Italic:size=${size}"; | ||||||
|             font-italic = "${font}:style=Italic:size=${size}"; |         }; | ||||||
|             font-bold-italic = "${font}:style=Bold Italic:size=${size}"; |  | ||||||
|           }; |  | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,50 +0,0 @@ | |||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 |  | ||||||
| with lib; |  | ||||||
| let |  | ||||||
|   cfg = config.modules.nix; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.modules.nix = { |  | ||||||
|     enable = mkEnableOption "nix"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     # Development packages |  | ||||||
|     home.packages = with pkgs; [ |  | ||||||
|       nix-tree |  | ||||||
|       nixfmt-rfc-style |  | ||||||
|       nixd |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     # VSCode configuration |  | ||||||
|     programs.vscode = { |  | ||||||
|       extensions = with pkgs.vscode-extensions; [ jnoortheen.nix-ide ]; |  | ||||||
| 
 |  | ||||||
|       userSettings = { |  | ||||||
|         "[nix]" = { |  | ||||||
|           "editor.tabSize" = 2; |  | ||||||
|         }; |  | ||||||
|         "nix.enableLanguageServer" = true; |  | ||||||
|         "nix.serverPath" = "nixd"; |  | ||||||
|         "nix.serverSettings" = { |  | ||||||
|           nixd = { |  | ||||||
|             formatting = { |  | ||||||
|               command = [ "nixfmt" ]; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # Neovim configuration |  | ||||||
|     programs.nixvim = { |  | ||||||
| 
 |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -1,42 +0,0 @@ | |||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 |  | ||||||
| with lib; |  | ||||||
| let |  | ||||||
|   cfg = config.modules.rust; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.modules.rust = { |  | ||||||
|     enable = mkEnableOption "rust"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     # Development packages |  | ||||||
|     home.packages = with pkgs; [ |  | ||||||
|       rustc |  | ||||||
|       cargo |  | ||||||
|       rust-analyzer |  | ||||||
|       rustfmt |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     # VSCode configuration |  | ||||||
|     programs.vscode = { |  | ||||||
|       extensions = with pkgs.vscode-extensions; [ rust-lang.rust-analyzer ]; |  | ||||||
| 
 |  | ||||||
|       userSettings = { |  | ||||||
|         "[rust]" = { }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # Neovim configuration |  | ||||||
|     programs.nixvim = { |  | ||||||
|       plugins.rust-tools = { |  | ||||||
|         enable = true; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -1,17 +1,11 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.mako; |   cfg = config.modules.mako; | ||||||
|   theme = config.theming; |   theme = config.theming; | ||||||
|   colors = theme.colors; |   colors = theme.colors; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.mako.enable = mkEnableOption "mako"; |   options.modules.mako.enable = mkEnableOption "mako"; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  | |||||||
| @ -1,17 +1,11 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.neovim; |   cfg = config.modules.neovim; | ||||||
|   theme = config.theming; |   theme = config.theming; | ||||||
|   colors = theme.colors; |   colors = theme.colors; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.neovim = { |   options.modules.neovim = { | ||||||
|     enable = mkEnableOption "neovim"; |     enable = mkEnableOption "neovim"; | ||||||
|   }; |   }; | ||||||
| @ -23,7 +17,8 @@ in | |||||||
|       viAlias = true; |       viAlias = true; | ||||||
|       vimAlias = true; |       vimAlias = true; | ||||||
| 
 | 
 | ||||||
|       extraPackages = with pkgs; [ ]; |       extraPackages = with pkgs; [ | ||||||
|  |       ]; | ||||||
| 
 | 
 | ||||||
|       opts = { |       opts = { | ||||||
|         number = true; |         number = true; | ||||||
| @ -174,6 +169,10 @@ in | |||||||
|       #  enable = true; |       #  enable = true; | ||||||
|       #}; |       #}; | ||||||
| 
 | 
 | ||||||
|  |       plugins.rust-tools = { | ||||||
|  |         enable = true; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|       plugins.vimtex = { |       plugins.vimtex = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         texlivePackage = null; |         texlivePackage = null; | ||||||
|  | |||||||
| @ -1,18 +1,16 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.obsidian; |   cfg = config.modules.obsidian; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.obsidian = { |   options.modules.obsidian = { | ||||||
|     enable = mkEnableOption "obsidian"; |     enable = mkEnableOption "obsidian"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { home.packages = with pkgs; [ obsidian ]; }; |   config = mkIf cfg.enable { | ||||||
|  |     home.packages = with pkgs; [ | ||||||
|  |       obsidian | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
| } | } | ||||||
| @ -1,16 +1,10 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.qutebrowser; |   cfg = config.modules.qutebrowser; | ||||||
|   theme = config.theming; |   theme = config.theming; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.qutebrowser.enable = mkEnableOption "qutebrowser"; |   options.modules.qutebrowser.enable = mkEnableOption "qutebrowser"; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  | |||||||
| @ -1,17 +1,11 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.rofi; |   cfg = config.modules.rofi; | ||||||
|   theme = config.theming; |   theme = config.theming; | ||||||
|   colors = theme.colors; |   colors = theme.colors; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.rofi.enable = mkEnableOption "rofi"; |   options.modules.rofi.enable = mkEnableOption "rofi"; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
| @ -19,43 +13,41 @@ in | |||||||
|       enable = true; |       enable = true; | ||||||
|       package = pkgs.rofi-wayland; |       package = pkgs.rofi-wayland; | ||||||
|       font = "${theme.fonts.monospace.name} ${toString theme.fonts.monospace.recommendedSize}"; |       font = "${theme.fonts.monospace.name} ${toString theme.fonts.monospace.recommendedSize}"; | ||||||
|       theme = |       theme = let | ||||||
|         let |         inherit (config.lib.formats.rasi) mkLiteral; | ||||||
|           inherit (config.lib.formats.rasi) mkLiteral; |       in { | ||||||
|         in |         "*" = { | ||||||
|         { |           background-color = mkLiteral "rgba(0, 0, 0, 0%)"; | ||||||
|           "*" = { |           border-color = mkLiteral "#${colors.fg}"; | ||||||
|             background-color = mkLiteral "rgba(0, 0, 0, 0%)"; |           text-color = mkLiteral "#${colors.fg}"; | ||||||
|             border-color = mkLiteral "#${colors.fg}"; |  | ||||||
|             text-color = mkLiteral "#${colors.fg}"; |  | ||||||
|           }; |  | ||||||
|           mainbox = { |  | ||||||
|             background-color = mkLiteral "#${colors.bg}"; |  | ||||||
|             border = mkLiteral "${toString theme.layout.borderSize}px"; |  | ||||||
|           }; |  | ||||||
|           element-text = { |  | ||||||
|             highlight = mkLiteral "#${colors.accent}"; |  | ||||||
|           }; |  | ||||||
|           inputbar = { |  | ||||||
|             children = mkLiteral "[textbox-search, entry]"; |  | ||||||
|           }; |  | ||||||
|           listview = { |  | ||||||
|             padding = mkLiteral "2px 0px"; |  | ||||||
|           }; |  | ||||||
|           textbox-search = { |  | ||||||
|             expand = false; |  | ||||||
|             content = "> "; |  | ||||||
|           }; |  | ||||||
|           "inputbar, message" = { |  | ||||||
|             padding = mkLiteral "2px"; |  | ||||||
|           }; |  | ||||||
|           element = { |  | ||||||
|             padding = mkLiteral "0px 2px"; |  | ||||||
|           }; |  | ||||||
|           "element selected" = { |  | ||||||
|             background-color = mkLiteral "#${colors.unfocused}"; |  | ||||||
|           }; |  | ||||||
|         }; |         }; | ||||||
|  |         mainbox = { | ||||||
|  |           background-color = mkLiteral "#${colors.bg}"; | ||||||
|  |           border = mkLiteral "${toString theme.layout.borderSize}px"; | ||||||
|  |         }; | ||||||
|  |         element-text = { | ||||||
|  |           highlight = mkLiteral "#${colors.accent}"; | ||||||
|  |         }; | ||||||
|  |         inputbar = { | ||||||
|  |           children = mkLiteral "[textbox-search, entry]"; | ||||||
|  |         }; | ||||||
|  |         listview = { | ||||||
|  |           padding = mkLiteral "2px 0px"; | ||||||
|  |         }; | ||||||
|  |         textbox-search = { | ||||||
|  |           expand = false; | ||||||
|  |           content = "> "; | ||||||
|  |         }; | ||||||
|  |         "inputbar, message" = { | ||||||
|  |           padding = mkLiteral "2px"; | ||||||
|  |         }; | ||||||
|  |         element = { | ||||||
|  |           padding = mkLiteral "0px 2px"; | ||||||
|  |         }; | ||||||
|  |         "element selected" = { | ||||||
|  |           background-color = mkLiteral "#${colors.unfocused}"; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| @ -1,21 +1,17 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.rofi-rbw; |   cfg = config.modules.rofi-rbw; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.rofi-rbw.enable = mkEnableOption "rofi-rbw"; |   options.modules.rofi-rbw.enable = mkEnableOption "rofi-rbw"; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     modules.rofi.enable = true; |     modules.rofi.enable = true; | ||||||
| 
 | 
 | ||||||
|     home.packages = [ pkgs.rofi-rbw ]; |     home.packages = [ | ||||||
|  |       pkgs.rofi-rbw | ||||||
|  |     ]; | ||||||
| 
 | 
 | ||||||
|     # TODO: Move to separate module and make configurable |     # TODO: Move to separate module and make configurable | ||||||
|     programs.rbw = { |     programs.rbw = { | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let  | let  | ||||||
|   cfg = config.modules.bash; |   cfg = config.modules.bash; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.bash = { |   options.modules.bash = { | ||||||
|     enable = mkEnableOption "bash"; |     enable = mkEnableOption "bash"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let  | let  | ||||||
|   cfg = config.modules.fish; |   cfg = config.modules.fish; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.fish = { |   options.modules.fish = { | ||||||
|     enable = mkEnableOption "fish"; |     enable = mkEnableOption "fish"; | ||||||
| 
 | 
 | ||||||
| @ -37,18 +31,9 @@ in | |||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|       plugins = [ |       plugins = [ | ||||||
|         (mkIf cfg.plugins.done { |         (mkIf cfg.plugins.done { name = "done"; src = pkgs.fishPlugins.done.src; }) | ||||||
|           name = "done"; |         (mkIf cfg.plugins.fzf { name = "fzf"; src = pkgs.fishPlugins.fzf-fish.src; }) | ||||||
|           src = pkgs.fishPlugins.done.src; |         (mkIf cfg.plugins.grc { name = "grc"; src = pkgs.fishPlugins.grc.src; }) | ||||||
|         }) |  | ||||||
|         (mkIf cfg.plugins.fzf { |  | ||||||
|           name = "fzf"; |  | ||||||
|           src = pkgs.fishPlugins.fzf-fish.src; |  | ||||||
|         }) |  | ||||||
|         (mkIf cfg.plugins.grc { |  | ||||||
|           name = "grc"; |  | ||||||
|           src = pkgs.fishPlugins.grc.src; |  | ||||||
|         }) |  | ||||||
|       ]; |       ]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,12 +1,6 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; { | ||||||
| { |  | ||||||
|   options.modules.steam = { |   options.modules.steam = { | ||||||
|     enable = mkEnableOption "steam"; |     enable = mkEnableOption "steam"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,14 +1,10 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   enabled = any (user: user.modules.river.enable) (attrValues config.home-manager.users); |   enabled = any (user: user.modules.river.enable) (attrValues config.home-manager.users); | ||||||
| in | in { | ||||||
| { |   config = mkIf enabled { | ||||||
|   config = mkIf enabled { programs.river.enable = true; }; |     programs.river.enable = true; | ||||||
|  |   }; | ||||||
| } | } | ||||||
| @ -1,14 +1,10 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   enabled = any (user: user.modules.steam.enable) (attrValues config.home-manager.users); |   enabled = any (user: user.modules.steam.enable) (attrValues config.home-manager.users); | ||||||
| in | in { | ||||||
| { |   config = mkIf enabled { | ||||||
|   config = mkIf enabled { programs.steam.enable = true; }; |     programs.steam.enable = true; | ||||||
|  |   }; | ||||||
| } | } | ||||||
| @ -1,14 +1,10 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   enabled = any (user: user.modules.waylock.enable) (attrValues config.home-manager.users); |   enabled = any (user: user.modules.waylock.enable) (attrValues config.home-manager.users); | ||||||
| in | in { | ||||||
| { |   config = mkIf enabled { | ||||||
|   config = mkIf enabled { security.pam.services.waylock = { }; }; |     security.pam.services.waylock = {}; | ||||||
|  |   }; | ||||||
| } | } | ||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { pkgs, lib, config, ... }: | ||||||
|   pkgs, |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
| @ -35,7 +30,7 @@ let | |||||||
|       }; |       }; | ||||||
|       fallbackFonts = mkOption { |       fallbackFonts = mkOption { | ||||||
|         type = types.listOf types.str; |         type = types.listOf types.str; | ||||||
|         default = [ ]; |         default = []; | ||||||
|         description = "Fallback fonts for specified font."; |         description = "Fallback fonts for specified font."; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| @ -68,35 +63,25 @@ let | |||||||
|   ] ++ map (font: font.name) cfg.fonts.extraFonts; |   ] ++ map (font: font.name) cfg.fonts.extraFonts; | ||||||
| 
 | 
 | ||||||
|   # Flatten dependencies of fonts |   # Flatten dependencies of fonts | ||||||
|   fontPackages = |   fontPackages = converge (fonts: | ||||||
|     converge |     listToAttrs (map (font: { | ||||||
|       ( |       name = font; | ||||||
|         fonts: |       value = true; | ||||||
|         listToAttrs ( |     }) ( | ||||||
|           map |       flatten (map (font:  | ||||||
|             (font: { |         [ font.name ] | ||||||
|               name = font; |         ++ cfg.fonts.pkgs.${font.name}.fallbackFonts | ||||||
|               value = true; |       ) (attrsToList fonts)) | ||||||
|             }) |     )) | ||||||
|             ( |   ) (listToAttrs (map (font: { | ||||||
|               flatten (map (font: [ font.name ] ++ cfg.fonts.pkgs.${font.name}.fallbackFonts) (attrsToList fonts)) |     name = font; | ||||||
|             ) |     value = true; | ||||||
|         ) |   }) enabledFonts)); | ||||||
|       ) |  | ||||||
|       ( |  | ||||||
|         listToAttrs ( |  | ||||||
|           map (font: { |  | ||||||
|             name = font; |  | ||||||
|             value = true; |  | ||||||
|           }) enabledFonts |  | ||||||
|         ) |  | ||||||
|       ); |  | ||||||
| 
 | 
 | ||||||
|   # Convert set of fonts to list of packages |   # Convert set of fonts to list of packages | ||||||
|   fontNameList = map (font: font.name) (attrsToList fontPackages); |   fontNameList = map (font: font.name) (attrsToList fontPackages); | ||||||
|   fontPackageList = map (font: cfg.fonts.pkgs.${font}.package) fontNameList; |   fontPackageList = map (font: cfg.fonts.pkgs.${font}.package) fontNameList; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   imports = [ |   imports = [ | ||||||
|     # Import all themes |     # Import all themes | ||||||
|     ./themes/gruvbox.nix |     ./themes/gruvbox.nix | ||||||
| @ -105,129 +90,123 @@ in | |||||||
| 
 | 
 | ||||||
|   options.modules.theming.enable = mkEnableOption "theming"; |   options.modules.theming.enable = mkEnableOption "theming"; | ||||||
| 
 | 
 | ||||||
|   options.theming = |   options.theming = let colors = config.theming.schemeColors; in { | ||||||
|     let |     darkMode = mkOption { | ||||||
|       colors = config.theming.schemeColors; |       type = types.bool; | ||||||
|     in |       default = false; | ||||||
|     { |       example = true; | ||||||
|       darkMode = mkOption { |       description = "Whether the app should use dark mode."; | ||||||
|         type = types.bool; |     }; | ||||||
|         default = false; | 
 | ||||||
|         example = true; |     colorScheme = mkOption { | ||||||
|         description = "Whether the app should use dark mode."; |       type = types.nullOr types.str; | ||||||
|  |       default = null; | ||||||
|  |       description = "Base 16 color scheme to use for styling. See stylix documentation for more information."; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     clientSideDecorations = mkOption { | ||||||
|  |       type = types.bool; | ||||||
|  |       default = false; | ||||||
|  |       description = "Whether to enable client side decorations for windows."; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     schemeColors = mkOption { | ||||||
|  |       type = types.attrsOf types.anything; | ||||||
|  |       default = config.lib.stylix.colors; | ||||||
|  |       description = "Generated colors from scheme"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     colors = { | ||||||
|  |       bg = mkOption { | ||||||
|  |         type = types.str; | ||||||
|  |         default = colors.base00; | ||||||
|       }; |       }; | ||||||
| 
 |       fg = mkOption { | ||||||
|       colorScheme = mkOption { |         type = types.str; | ||||||
|         type = types.nullOr types.str; |         default = colors.base05; | ||||||
|         default = null; |  | ||||||
|         description = "Base 16 color scheme to use for styling. See stylix documentation for more information."; |  | ||||||
|       }; |       }; | ||||||
| 
 |       accent = mkOption { | ||||||
|       clientSideDecorations = mkOption { |         type = types.str; | ||||||
|         type = types.bool; |         default = colors.base09; | ||||||
|         default = false; |  | ||||||
|         description = "Whether to enable client side decorations for windows."; |  | ||||||
|       }; |       }; | ||||||
| 
 |       focused = mkOption { | ||||||
|       schemeColors = mkOption { |         type = types.str; | ||||||
|         type = types.attrsOf types.anything; |         default = cfg.colors.fg; | ||||||
|         default = config.lib.stylix.colors; |  | ||||||
|         description = "Generated colors from scheme"; |  | ||||||
|       }; |       }; | ||||||
| 
 |       unfocused = mkOption { | ||||||
|       colors = { |         type = types.str; | ||||||
|         bg = mkOption { |         default = colors.base02; | ||||||
|           type = types.str; |  | ||||||
|           default = colors.base00; |  | ||||||
|         }; |  | ||||||
|         fg = mkOption { |  | ||||||
|           type = types.str; |  | ||||||
|           default = colors.base05; |  | ||||||
|         }; |  | ||||||
|         accent = mkOption { |  | ||||||
|           type = types.str; |  | ||||||
|           default = colors.base09; |  | ||||||
|         }; |  | ||||||
|         focused = mkOption { |  | ||||||
|           type = types.str; |  | ||||||
|           default = cfg.colors.fg; |  | ||||||
|         }; |  | ||||||
|         unfocused = mkOption { |  | ||||||
|           type = types.str; |  | ||||||
|           default = colors.base02; |  | ||||||
|         }; |  | ||||||
|         alert = mkOption { |  | ||||||
|           type = types.str; |  | ||||||
|           default = "ffffff"; # TODO: Derive color from theme |  | ||||||
|         }; |  | ||||||
|       }; |       }; | ||||||
| 
 |       alert = mkOption { | ||||||
|       layout = { |         type = types.str; | ||||||
|         borderRadius = mkOption { |         default = "ffffff"; # TODO: Derive color from theme | ||||||
|           type = types.int; |  | ||||||
|           default = 0; |  | ||||||
|           description = "Border radius of windows."; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         borderSize = mkOption { |  | ||||||
|           type = types.int; |  | ||||||
|           default = 1; |  | ||||||
|           description = "Size of borders used throughout UI."; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         windowPadding = mkOption { |  | ||||||
|           type = types.int; |  | ||||||
|           default = 2; |  | ||||||
|           description = "Margin of each window, actual space between windows will be twice this number."; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       fonts = { |  | ||||||
|         pkgs = mkOption { |  | ||||||
|           type = types.attrsOf fontModule; |  | ||||||
|           default = builtins.listToAttrs ( |  | ||||||
|             map (module: { |  | ||||||
|               name = module.name; |  | ||||||
|               value = module; |  | ||||||
|             }) (map (module: (import module) { inherit lib config pkgs; }) fontModules) |  | ||||||
|           ); |  | ||||||
|           description = "All available font modules."; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         installed = mkOption { |  | ||||||
|           type = types.listOf types.str; |  | ||||||
|           default = fontNameList; |  | ||||||
|           description = "List of installed fonts."; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         serif = mkOption { |  | ||||||
|           type = fontModule; |  | ||||||
|           description = "Default serif font"; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         sansSerif = mkOption { |  | ||||||
|           type = fontModule; |  | ||||||
|           description = "Default sansSerif font."; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         monospace = mkOption { |  | ||||||
|           type = fontModule; |  | ||||||
|           description = "Default monospace font."; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         emoji = mkOption { |  | ||||||
|           type = fontModule; |  | ||||||
|           description = "Default emoji font."; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         extraFonts = mkOption { |  | ||||||
|           type = types.listOf fontModule; |  | ||||||
|           default = [ ]; |  | ||||||
|           description = "Additional fonts to install."; |  | ||||||
|         }; |  | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     layout = { | ||||||
|  |       borderRadius = mkOption { | ||||||
|  |         type = types.int; | ||||||
|  |         default = 0; | ||||||
|  |         description = "Border radius of windows."; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       borderSize = mkOption { | ||||||
|  |         type = types.int; | ||||||
|  |         default = 1; | ||||||
|  |         description = "Size of borders used throughout UI."; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       windowPadding = mkOption { | ||||||
|  |         type = types.int; | ||||||
|  |         default = 2; | ||||||
|  |         description = "Margin of each window, actual space between windows will be twice this number."; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     fonts = { | ||||||
|  |       pkgs = mkOption { | ||||||
|  |         type = types.attrsOf fontModule; | ||||||
|  |         default = builtins.listToAttrs (map (module: { | ||||||
|  |           name = module.name; | ||||||
|  |           value = module; | ||||||
|  |         }) (map (module: (import module) { inherit lib config pkgs; }) fontModules)); | ||||||
|  |         description = "All available font modules."; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       installed = mkOption { | ||||||
|  |         type = types.listOf types.str; | ||||||
|  |         default = fontNameList; | ||||||
|  |         description = "List of installed fonts."; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       serif = mkOption { | ||||||
|  |         type = fontModule; | ||||||
|  |         description = "Default serif font"; | ||||||
|  |       }; | ||||||
|  |        | ||||||
|  |       sansSerif = mkOption { | ||||||
|  |         type = fontModule; | ||||||
|  |         description = "Default sansSerif font."; | ||||||
|  |       }; | ||||||
|  |        | ||||||
|  |       monospace = mkOption { | ||||||
|  |         type = fontModule; | ||||||
|  |         description = "Default monospace font."; | ||||||
|  |       }; | ||||||
|  |        | ||||||
|  |       emoji = mkOption { | ||||||
|  |         type = fontModule; | ||||||
|  |         description = "Default emoji font."; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       extraFonts = mkOption { | ||||||
|  |         type = types.listOf fontModule; | ||||||
|  |         default = []; | ||||||
|  |         description = "Additional fonts to install."; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   config = mkIf config.modules.theming.enable { |   config = mkIf config.modules.theming.enable { | ||||||
|     # Enable fontconfig |     # Enable fontconfig | ||||||
|     modules.fontconfig.enable = true; |     modules.fontconfig.enable = true; | ||||||
| @ -250,32 +229,30 @@ in | |||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     # Configure gtk theme |     # Configure gtk theme | ||||||
|     gtk = |     gtk = let | ||||||
|       let |       disableCSD = '' | ||||||
|         disableCSD = '' |         headerbar.default-decoration { | ||||||
|           headerbar.default-decoration { |           margin-bottom: 50px; | ||||||
|             margin-bottom: 50px; |           margin-top: -100px; | ||||||
|             margin-top: -100px; |         } | ||||||
|           } |  | ||||||
| 
 | 
 | ||||||
|           window.csd, |         window.csd, | ||||||
|           window.csd decoration { |         window.csd decoration { | ||||||
|             box-shadow: none; |           box-shadow: none; | ||||||
|           } |         } | ||||||
|         ''; |       ''; | ||||||
|       in |     in { | ||||||
|       { |       enable = true; | ||||||
|         enable = true; |  | ||||||
| 
 | 
 | ||||||
|         theme = { |       theme = { | ||||||
|           name = if cfg.darkMode then "Adwaita-dark" else "Adwaita-light"; |         name = if cfg.darkMode then "Adwaita-dark" else "Adwaita-light"; | ||||||
|           package = pkgs.gnome-themes-extra; |         package = pkgs.gnome-themes-extra; | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         gtk3.extraCss = mkIf (!cfg.clientSideDecorations) disableCSD; |  | ||||||
|         gtk4.extraCss = mkIf (!cfg.clientSideDecorations) disableCSD; |  | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|  |       gtk3.extraCss = mkIf (! cfg.clientSideDecorations) disableCSD; | ||||||
|  |       gtk4.extraCss = mkIf (! cfg.clientSideDecorations) disableCSD; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|     # TODO: This should just straight up not be here |     # TODO: This should just straight up not be here | ||||||
|     programs.direnv = { |     programs.direnv = { | ||||||
|       enable = true; |       enable = true; | ||||||
| @ -312,22 +289,10 @@ in | |||||||
|       polarity = if cfg.darkMode then "dark" else "light"; |       polarity = if cfg.darkMode then "dark" else "light"; | ||||||
| 
 | 
 | ||||||
|       fonts = { |       fonts = { | ||||||
|         serif = getAttrs [ |         serif = getAttrs [ "name" "package" ] cfg.fonts.serif; | ||||||
|           "name" |         sansSerif = getAttrs [ "name" "package" ] cfg.fonts.sansSerif; | ||||||
|           "package" |         monospace = getAttrs [ "name" "package" ] cfg.fonts.monospace; | ||||||
|         ] cfg.fonts.serif; |         emoji = getAttrs [ "name" "package" ] cfg.fonts.emoji; | ||||||
|         sansSerif = getAttrs [ |  | ||||||
|           "name" |  | ||||||
|           "package" |  | ||||||
|         ] cfg.fonts.sansSerif; |  | ||||||
|         monospace = getAttrs [ |  | ||||||
|           "name" |  | ||||||
|           "package" |  | ||||||
|         ] cfg.fonts.monospace; |  | ||||||
|         emoji = getAttrs [ |  | ||||||
|           "name" |  | ||||||
|           "package" |  | ||||||
|         ] cfg.fonts.emoji; |  | ||||||
| 
 | 
 | ||||||
|         sizes = { |         sizes = { | ||||||
|           applications = mkDefault cfg.fonts.serif.recommendedSize; |           applications = mkDefault cfg.fonts.serif.recommendedSize; | ||||||
|  | |||||||
| @ -4,5 +4,6 @@ | |||||||
|   name = "Cozette Vector"; |   name = "Cozette Vector"; | ||||||
|   package = pkgs.cozette; |   package = pkgs.cozette; | ||||||
|   recommendedSize = 9; |   recommendedSize = 9; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = [ | ||||||
|  |   ]; | ||||||
| } | } | ||||||
| @ -4,5 +4,7 @@ | |||||||
|   name = "Cozette"; |   name = "Cozette"; | ||||||
|   package = pkgs.cozette; |   package = pkgs.cozette; | ||||||
|   recommendedSize = 9; |   recommendedSize = 9; | ||||||
|   fallbackFonts = [ "Cozette Vector" ]; |   fallbackFonts = [ | ||||||
|  |     "Cozette Vector" | ||||||
|  |   ]; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "DejaVu Sans"; |   name = "DejaVu Sans"; | ||||||
|   package = pkgs.dejavu_fonts; |   package = pkgs.dejavu_fonts; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "DejaVu Serif"; |   name = "DejaVu Serif"; | ||||||
|   package = pkgs.dejavu_fonts; |   package = pkgs.dejavu_fonts; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,7 @@ | |||||||
|   name = "Fira Code"; |   name = "Fira Code"; | ||||||
|   package = pkgs.fira-code; |   package = pkgs.fira-code; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ "Symbols Nerd Font Mono" ]; |   fallbackFonts = [ | ||||||
|  |     "Symbols Nerd Font Mono" | ||||||
|  |   ]; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "Symbols Nerd Font Mono"; |   name = "Symbols Nerd Font Mono"; | ||||||
|   package = pkgs.nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; }; |   package = pkgs.nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; }; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "Noto Color Emoji"; |   name = "Noto Color Emoji"; | ||||||
|   package = pkgs.noto-fonts-color-emoji; |   package = pkgs.noto-fonts-color-emoji; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "wenquanyi bitmap song"; |   name = "wenquanyi bitmap song"; | ||||||
|   package = pkgs.wqy-bitmapsong; |   package = pkgs.wqy-bitmapsong; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "WenQuanYi Micro Hei Mono"; |   name = "WenQuanYi Micro Hei Mono"; | ||||||
|   package = pkgs.wqy-microhei; |   package = pkgs.wqy-microhei; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "WenQuanYi Micro Hei"; |   name = "WenQuanYi Micro Hei"; | ||||||
|   package = pkgs.wqy-microhei; |   package = pkgs.wqy-microhei; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "WenQuanYi Zen Hei Mono"; |   name = "WenQuanYi Zen Hei Mono"; | ||||||
|   package = pkgs.wqy-zenhei; |   package = pkgs.wqy-zenhei; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "WenQuanYi Zen Hei Sharp"; |   name = "WenQuanYi Zen Hei Sharp"; | ||||||
|   package = pkgs.wqy-zenhei; |   package = pkgs.wqy-zenhei; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -4,5 +4,5 @@ | |||||||
|   name = "WenQuanYi Zen Hei"; |   name = "WenQuanYi Zen Hei"; | ||||||
|   package = pkgs.wqy-zenhei; |   package = pkgs.wqy-zenhei; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ ]; |   fallbackFonts = []; | ||||||
| } | } | ||||||
| @ -1,25 +1,14 @@ | |||||||
| { | { config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.theming.themes.catppuccin; |   cfg = config.theming.themes.catppuccin; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options = { |   options = { | ||||||
|     theming.themes.catppuccin = { |     theming.themes.catppuccin = { | ||||||
|       enable = mkEnableOption "catppuccin"; |       enable = mkEnableOption "catppuccin"; | ||||||
|       flavor = mkOption { |       flavor = mkOption { | ||||||
|         type = types.enum [ |         type = types.enum [ "latte" "frappe" "macchiato" "mocha" ]; | ||||||
|           "latte" |  | ||||||
|           "frappe" |  | ||||||
|           "macchiato" |  | ||||||
|           "mocha" |  | ||||||
|         ]; |  | ||||||
|         default = "mocha"; |         default = "mocha"; | ||||||
|         description = "The flavor of catppuccin theme."; |         description = "The flavor of catppuccin theme."; | ||||||
|       }; |       }; | ||||||
|  | |||||||
| @ -1,26 +1,16 @@ | |||||||
| { | { config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.theming.themes.gruvbox; |   cfg = config.theming.themes.gruvbox; | ||||||
|   mode = if cfg.darkMode then "dark" else "light"; |   mode = if cfg.darkMode then "dark" else "light"; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options = { |   options = { | ||||||
|     theming.themes.gruvbox = { |     theming.themes.gruvbox = { | ||||||
|       enable = mkEnableOption "gruvbox-hard"; |       enable = mkEnableOption "gruvbox-hard"; | ||||||
|       darkMode = mkEnableOption "dark mode"; |       darkMode = mkEnableOption "dark mode"; | ||||||
|       contrast = mkOption { |       contrast = mkOption { | ||||||
|         type = types.enum [ |         type = types.enum [ "hard" "medium" "soft" ]; | ||||||
|           "hard" |  | ||||||
|           "medium" |  | ||||||
|           "soft" |  | ||||||
|         ]; |  | ||||||
|         default = "hard"; |         default = "hard"; | ||||||
|         description = "The contrast level of the theme."; |         description = "The contrast level of the theme."; | ||||||
|       }; |       }; | ||||||
|  | |||||||
| @ -1,16 +1,10 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.vscode; |   cfg = config.modules.vscode; | ||||||
|   theme = config.theming; |   theme = config.theming; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.vscode = { |   options.modules.vscode = { | ||||||
|     enable = mkEnableOption "vscode"; |     enable = mkEnableOption "vscode"; | ||||||
|     codeFont = mkOption { |     codeFont = mkOption { | ||||||
| @ -26,13 +20,21 @@ in | |||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     modules.unfree.allowedPackages = [ "vscode" ]; |     modules.unfree.allowedPackages = [ "vscode" ]; | ||||||
|      |      | ||||||
|     theming.fonts.extraFonts = [ cfg.codeFont ]; |     theming.fonts.extraFonts = [ | ||||||
|  |       cfg.codeFont | ||||||
|  |     ]; | ||||||
| 
 | 
 | ||||||
|     programs.vscode = { |     programs.vscode = { | ||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|       mutableExtensionsDir = false; |       extensions = with pkgs.vscode-extensions; [ | ||||||
|       extensions = with pkgs.vscode-extensions; [ eamodio.gitlens ]; |         eamodio.gitlens | ||||||
|  | 
 | ||||||
|  |         # Language support | ||||||
|  |         # TODO: Move to separate language modules | ||||||
|  |         bbenoist.nix | ||||||
|  |         rust-lang.rust-analyzer | ||||||
|  |       ]; | ||||||
| 
 | 
 | ||||||
|       userSettings = { |       userSettings = { | ||||||
|         # Font setup |         # Font setup | ||||||
| @ -43,9 +45,8 @@ in | |||||||
|         "terminal.integrated.fontFamily" = mkForce "'${cfg.codeFont.name}', '${cfg.fallbackFont.name}'"; |         "terminal.integrated.fontFamily" = mkForce "'${cfg.codeFont.name}', '${cfg.fallbackFont.name}'"; | ||||||
|         "terminal.integrated.fontSize" = mkForce (cfg.codeFont.recommendedSize); # Convert pt to px |         "terminal.integrated.fontSize" = mkForce (cfg.codeFont.recommendedSize); # Convert pt to px | ||||||
|          |          | ||||||
|         # Formatting |         # Autoformatting | ||||||
|         "editor.formatOnSave" = true; |         "editor.formatOnSave" = true; | ||||||
|         "editor.tabSize" = 4; |  | ||||||
| 
 | 
 | ||||||
|         # Layout |         # Layout | ||||||
|         "window.menuBarVisibility" = "hidden"; |         "window.menuBarVisibility" = "hidden"; | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.winbox; |   cfg = config.modules.winbox; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.winbox = { |   options.modules.winbox = { | ||||||
|     enable = mkEnableOption "winbox"; |     enable = mkEnableOption "winbox"; | ||||||
|   }; |   }; | ||||||
| @ -17,6 +11,8 @@ in | |||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     modules.unfree.allowedPackages = [ "winbox" ]; |     modules.unfree.allowedPackages = [ "winbox" ]; | ||||||
| 
 | 
 | ||||||
|     home.packages = with pkgs; [ winbox ]; |     home.packages = with pkgs; [ | ||||||
|  |       winbox | ||||||
|  |     ]; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| @ -1,14 +1,8 @@ | |||||||
| { | {config, lib, pkgs, ... }: | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| let | let | ||||||
|   cfg = config.modules.zathura; |   cfg = config.modules.zathura; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.zathura.enable = lib.mkEnableOption "zathura"; |   options.modules.zathura.enable = lib.mkEnableOption "zathura"; | ||||||
| 
 | 
 | ||||||
|   config = lib.mkIf cfg.enable { |   config = lib.mkIf cfg.enable { | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.tailscale; |   cfg = config.modules.tailscale; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.tailscale = { |   options.modules.tailscale = { | ||||||
|     enable = mkEnableOption "tailscale"; |     enable = mkEnableOption "tailscale"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,15 +1,9 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   cfg = config.modules.wpa_supplicant; |   cfg = config.modules.wpa_supplicant; | ||||||
| in | in { | ||||||
| { |  | ||||||
|   options.modules.wpa_supplicant = { |   options.modules.wpa_supplicant = { | ||||||
|     enable = mkEnableOption "wpa_supplicant"; |     enable = mkEnableOption "wpa_supplicant"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| # let | # let | ||||||
| @ -22,8 +17,8 @@ with lib; | |||||||
| # } | # } | ||||||
| { | { | ||||||
|   nixpkgs.config.packageOverrides = pkgs: rec { |   nixpkgs.config.packageOverrides = pkgs: rec { | ||||||
|     wqy-zenhei = pkgs.callPackage ./fonts/wqy-zenhei.nix { }; |     wqy-zenhei = pkgs.callPackage ./fonts/wqy-zenhei.nix {}; | ||||||
|     wqy-microhei = pkgs.callPackage ./fonts/wqy-microhei.nix { }; |     wqy-microhei = pkgs.callPackage ./fonts/wqy-microhei.nix {}; | ||||||
|     wqy-bitmapsong = pkgs.callPackage ./fonts/wqy-bitmapsong.nix { }; |     wqy-bitmapsong = pkgs.callPackage ./fonts/wqy-bitmapsong.nix {}; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| pkgs.stdenv.mkDerivation rec { | pkgs.stdenv.mkDerivation rec { | ||||||
|   pname = "wqy-bitmapsong-pcf"; |   pname = "wqy-bitmapsong-pcf"; | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| pkgs.stdenv.mkDerivation rec { | pkgs.stdenv.mkDerivation rec { | ||||||
|   pname = "wqy-microhei"; |   pname = "wqy-microhei"; | ||||||
| @ -11,7 +6,7 @@ pkgs.stdenv.mkDerivation rec { | |||||||
| 
 | 
 | ||||||
|   src = pkgs.fetchurl { |   src = pkgs.fetchurl { | ||||||
|     url = "mirror://sourceforge/wqy/${pname}-${version}.tar.gz"; |     url = "mirror://sourceforge/wqy/${pname}-${version}.tar.gz"; | ||||||
|     hash = "sha256-KAKsgCOqNqZupudEWFTjoHjTd///QhaTQb0jeHH3IT4="; |       hash = "sha256-KAKsgCOqNqZupudEWFTjoHjTd///QhaTQb0jeHH3IT4="; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   installPhase = '' |   installPhase = '' | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| { | { lib, config, pkgs, ... }: | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 | 
 | ||||||
| pkgs.stdenv.mkDerivation rec { | pkgs.stdenv.mkDerivation rec { | ||||||
|   pname = "wqy-zenhei"; |   pname = "wqy-zenhei"; | ||||||
|  | |||||||
| @ -29,33 +29,26 @@ | |||||||
|       discord.enable = true; |       discord.enable = true; | ||||||
|       qutebrowser.enable = true; |       qutebrowser.enable = true; | ||||||
|       neovim.enable = true; |       neovim.enable = true; | ||||||
| 
 |       rofi.enable = true; # TODO: Remove this, should be enabled by other modules that require rofi. | ||||||
|       # Programming languages |  | ||||||
|       nix.enable = true; |  | ||||||
|       rust.enable = true; |  | ||||||
| 
 | 
 | ||||||
|       # Enable unfree |       # Enable unfree | ||||||
|       unfree.enable = true; |       unfree.enable = true; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     # Theme configuration |     # Theme configuration | ||||||
|     theming = |     theming = let fontpkgs = config.theming.fonts.pkgs; in { | ||||||
|       let |       # Fonts | ||||||
|         fontpkgs = config.theming.fonts.pkgs; |       fonts.serif = fontpkgs."DejaVu Serif"; | ||||||
|       in |       fonts.sansSerif = fontpkgs."DejaVu Sans"; | ||||||
|       { |       fonts.monospace = fontpkgs."Dina"; | ||||||
|         # Fonts |       fonts.emoji = fontpkgs."Dina"; | ||||||
|         fonts.serif = fontpkgs."DejaVu Serif"; |       fonts.extraFonts = []; | ||||||
|         fonts.sansSerif = fontpkgs."DejaVu Sans"; |  | ||||||
|         fonts.monospace = fontpkgs."Dina"; |  | ||||||
|         fonts.emoji = fontpkgs."Dina"; |  | ||||||
|         fonts.extraFonts = [ ]; |  | ||||||
|        |        | ||||||
|         # Color scheme |       # Color scheme | ||||||
|         themes.catppuccin = { |       themes.catppuccin = { | ||||||
|           enable = true; |         enable = true; | ||||||
|           flavor = "frappe"; |         flavor = "frappe"; | ||||||
|         }; |  | ||||||
|       }; |       }; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user