Compare commits
	
		
			2 Commits
		
	
	
		
			47365d05f5
			...
			16de891fc7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 16de891fc7 | ||
|   | e1b1e7cc38 | 
							
								
								
									
										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,9 +1,15 @@ | |||||||
| { 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"; | ||||||
|   }; |   }; | ||||||
| @ -15,7 +21,6 @@ in { | |||||||
|       wget |       wget | ||||||
|       curl |       curl | ||||||
|       dig |       dig | ||||||
|       nix-tree |  | ||||||
|       procps |       procps | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,14 +1,18 @@ | |||||||
| { 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 { |   config = mkIf cfg.enable { boot.tmp.cleanOnBoot = true; }; | ||||||
|     boot.tmp.cleanOnBoot = true; |  | ||||||
|   }; |  | ||||||
| } | } | ||||||
| @ -1,9 +1,15 @@ | |||||||
| { 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,9 +1,15 @@ | |||||||
| { 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,16 +1,18 @@ | |||||||
| {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 { |   config = mkIf cfg.enable { environment.systemPackages = [ pkgs.brightnessctl ]; }; | ||||||
|     environment.systemPackages = [ |  | ||||||
|         pkgs.brightnessctl |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } | } | ||||||
| @ -1,6 +1,12 @@ | |||||||
| { lib, config, pkgs, ... }: | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| with lib; { | with lib; | ||||||
|  | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     # Import modules |     # Import modules | ||||||
|     ./base/default.nix |     ./base/default.nix | ||||||
|  | |||||||
| @ -1,9 +1,15 @@ | |||||||
| { 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"; | ||||||
|   }; |   }; | ||||||
| @ -12,10 +18,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,4 +1,9 @@ | |||||||
| { lib, config, pkgs, ... }: | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   config = { |   config = { | ||||||
| @ -6,7 +11,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,9 +1,15 @@ | |||||||
| {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,9 +1,15 @@ | |||||||
| {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,4 +1,9 @@ | |||||||
| { lib, config, pkgs, ... }: | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   config = { |   config = { | ||||||
|  | |||||||
| @ -1,9 +1,15 @@ | |||||||
| { 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,9 +1,15 @@ | |||||||
| { 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,14 +1,20 @@ | |||||||
| { 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,19 +1,24 @@ | |||||||
| { config, lib, pkgs, ... }: | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
|   # Nixvim |   # Nixvim | ||||||
|   nixvim = import (builtins.fetchGit { |   nixvim = import (builtins.fetchGit { url = "https://github.com/nix-community/nixvim"; }); | ||||||
|     url = "https://github.com/nix-community/nixvim"; |  | ||||||
|   }); |  | ||||||
| 
 | 
 | ||||||
|   # Stylix |   # Stylix | ||||||
|   stylix = import (pkgs.fetchFromGitHub { |   stylix = import ( | ||||||
|     owner = "danth"; |     pkgs.fetchFromGitHub { | ||||||
|     repo = "stylix"; |       owner = "danth"; | ||||||
|     rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116"; |       repo = "stylix"; | ||||||
|     sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5"; |       rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116"; | ||||||
|   }); |       sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5"; | ||||||
|  |     } | ||||||
|  |   ); | ||||||
| 
 | 
 | ||||||
|   # User configuration |   # User configuration | ||||||
|   userModule = types.submodule { |   userModule = types.submodule { | ||||||
| @ -36,7 +41,8 @@ let | |||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| in { | in | ||||||
|  | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     # Import home manager |     # Import home manager | ||||||
|     <home-manager/nixos> |     <home-manager/nixos> | ||||||
| @ -48,7 +54,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,4 +1,9 @@ | |||||||
| { input, pkgs, config, ... }: | { | ||||||
|  |   input, | ||||||
|  |   pkgs, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
| @ -9,6 +14,8 @@ | |||||||
|     ./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,11 +1,17 @@ | |||||||
| { 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"; | ||||||
|   }; |   }; | ||||||
| @ -22,9 +28,7 @@ in { | |||||||
|         mainBar = { |         mainBar = { | ||||||
|           layer = "top"; |           layer = "top"; | ||||||
|           spacing = 16; |           spacing = 16; | ||||||
|           modules-left = [ |           modules-left = [ "river/tags" ]; | ||||||
|             "river/tags" |  | ||||||
|           ]; |  | ||||||
|           modules-center = [ |           modules-center = [ | ||||||
|             #"river/window" |             #"river/window" | ||||||
|             "mpris" |             "mpris" | ||||||
| @ -61,14 +65,30 @@ 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,9 +1,15 @@ | |||||||
| { 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 | ||||||
| @ -21,18 +27,23 @@ in { | |||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = { |   config = { | ||||||
|     home.packages = optionals cfg.wayland (with pkgs; [ |     home.packages = optionals cfg.wayland ( | ||||||
|       pkgs.wl-clipboard |       with pkgs; | ||||||
|       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,16 +1,20 @@ | |||||||
| { 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; [ |     home.packages = mkIf cfg.enable (with pkgs; [ waylock ]); | ||||||
|       waylock |  | ||||||
|     ]); |  | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| @ -1,8 +1,14 @@ | |||||||
| {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 { | ||||||
| @ -13,6 +19,9 @@ 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 | ||||||
| @ -37,152 +46,190 @@ in { | |||||||
|       enable = true; |       enable = true; | ||||||
|       systemd.enable = false; |       systemd.enable = false; | ||||||
|       xwayland.enable = true; |       xwayland.enable = true; | ||||||
|       settings = let |       settings = | ||||||
|         layout = "rivertile"; |         let | ||||||
|         layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}"; |           layout = "rivertile"; | ||||||
|         modes = ["normal" "locked"]; |           layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}"; | ||||||
|         tags = [1 2 3 4 5 6 7 8 9]; |           modes = [ | ||||||
|         waylockOptions = "-init-color 0x${colors.bg} -input-color 0x${colors.focused} -fail-color 0x${colors.bg}"; |             "normal" | ||||||
|  |             "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: |           pow2 = power: if power != 0 then 2 * (pow2 (power - 1)) else 1; | ||||||
|           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}"; |         { | ||||||
|         set-repeat = "50 300"; |           default-layout = "${layout}"; | ||||||
|         xcursor-theme = "BreezeX-RosePine-Linux 24"; |           set-repeat = "50 300"; | ||||||
|         keyboard-layout = "-options \"caps:escape\" us"; |           xcursor-theme = "BreezeX-RosePine-Linux 24"; | ||||||
|  |           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 = (lib.attrsets.recursiveUpdate ({ |           map = ( | ||||||
|           normal = { |             lib.attrsets.recursiveUpdate | ||||||
|             "${main} Q" = "close"; |               ({ | ||||||
|             "${ssm} E" = "exit"; |                 normal = | ||||||
|  |                   { | ||||||
|  |                     "${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: [ |                   } | ||||||
|             { name = "${main} ${toString tag}"; value = "set-focused-tags ${toString (pow2 (tag - 1))}"; } |                   // builtins.listToAttrs ( | ||||||
|             { name = "${ssm} ${toString tag}"; value = "set-view-tags ${toString (pow2 (tag - 1))}"; } |                     builtins.concatLists ( | ||||||
|             { name = "${scm} ${toString tag}"; value = "toggle-focused-tags ${toString (pow2 (tag - 1))}"; } |                       map (tag: [ | ||||||
|             { name = "${ssc} ${toString tag}"; value = "toggle-view-tags ${toString (pow2 (tag - 1))}"; } |                         { | ||||||
|           ]) tags));  |                           name = "${main} ${toString tag}"; | ||||||
|         }) (builtins.listToAttrs (map (mode: { |                           value = "set-focused-tags ${toString (pow2 (tag - 1))}"; | ||||||
|           name = "${mode}"; |                         } | ||||||
|           value = { |                         { | ||||||
|             # Control volume |                           name = "${ssm} ${toString tag}"; | ||||||
|             "None XF86AudioRaiseVolume" = "spawn \"pulsemixer --change-volume +5\""; |                           value = "set-view-tags ${toString (pow2 (tag - 1))}"; | ||||||
|             "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"; | ||||||
|  |             }; | ||||||
|           }; |           }; | ||||||
|         }) modes))); |           input = { | ||||||
|         map-pointer = { |             "'*'" = { | ||||||
|           normal = { |               accel-profile = "adaptive"; | ||||||
|             "${main} BTN_LEFT" = "move-view"; |               pointer-accel = "0.5"; | ||||||
|             "${main} BTN_RIGHT" = "resize-view"; |               scroll-factor = "0.8"; | ||||||
|             "${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,9 +1,15 @@ | |||||||
| {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"; | ||||||
|   }; |   }; | ||||||
| @ -11,8 +17,6 @@ in { | |||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     modules.unfree.allowedPackages = [ "discord" ]; |     modules.unfree.allowedPackages = [ "discord" ]; | ||||||
| 
 | 
 | ||||||
|     home.packages = with pkgs; [ |     home.packages = with pkgs; [ discord ]; | ||||||
|       discord |  | ||||||
|     ]; |  | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| @ -1,14 +1,16 @@ | |||||||
| {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 { |   config = mkIf cfg.enable { home.packages = with pkgs; [ feishin ]; }; | ||||||
|     home.packages = with pkgs; [ |  | ||||||
|       feishin |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } | } | ||||||
| @ -1,8 +1,14 @@ | |||||||
| {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 { | ||||||
| @ -32,7 +38,9 @@ in { | |||||||
|         DisableTelemetry = true; |         DisableTelemetry = true; | ||||||
|         DisplayBookmarksToolbar = "never"; |         DisplayBookmarksToolbar = "never"; | ||||||
|         DisplayMenuBar = "never"; |         DisplayMenuBar = "never"; | ||||||
|         DNSOverHTTPS = { Enabled = false; }; |         DNSOverHTTPS = { | ||||||
|  |           Enabled = false; | ||||||
|  |         }; | ||||||
|         DontCheckDefaultBrowser = true; |         DontCheckDefaultBrowser = true; | ||||||
|         PasswordManagerEnabled = false; |         PasswordManagerEnabled = false; | ||||||
|         TranslateEnabled = true; |         TranslateEnabled = true; | ||||||
| @ -42,9 +50,7 @@ in { | |||||||
|       profiles.nixos = { |       profiles.nixos = { | ||||||
|         search.default = "DuckDuckGo"; |         search.default = "DuckDuckGo"; | ||||||
| 
 | 
 | ||||||
|         extensions = with pkgs.nur.repos.rycee.firefox-addons; [ |         extensions = with pkgs.nur.repos.rycee.firefox-addons; [ ublock-origin ]; | ||||||
|           ublock-origin |  | ||||||
|         ]; |  | ||||||
| 
 | 
 | ||||||
|         settings = { |         settings = { | ||||||
|           "browser.tabs.inTitlebar" = 0; |           "browser.tabs.inTitlebar" = 0; | ||||||
|  | |||||||
| @ -1,4 +1,9 @@ | |||||||
| { lib, config, pkgs, ... }: | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
| @ -15,8 +20,11 @@ let | |||||||
|     </alias> |     </alias> | ||||||
|   ''; |   ''; | ||||||
| 
 | 
 | ||||||
|   configContent = concatStrings (map (font: aliasConfig config.theming.fonts.pkgs.${font}) config.theming.fonts.installed); |   configContent = concatStrings ( | ||||||
| in { |     map (font: aliasConfig config.theming.fonts.pkgs.${font}) config.theming.fonts.installed | ||||||
|  |   ); | ||||||
|  | in | ||||||
|  | { | ||||||
|   options.modules.fontconfig = { |   options.modules.fontconfig = { | ||||||
|     enable = mkEnableOption "fontconfig"; |     enable = mkEnableOption "fontconfig"; | ||||||
|   }; |   }; | ||||||
| @ -26,18 +34,10 @@ in { | |||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|       defaultFonts = { |       defaultFonts = { | ||||||
|         serif = [ |         serif = [ config.theming.fonts.serif.name ]; | ||||||
|           config.theming.fonts.serif.name |         sansSerif = [ config.theming.fonts.sansSerif.name ]; | ||||||
|         ]; |         monospace = [ config.theming.fonts.monospace.name ]; | ||||||
|         sansSerif = [ |         emoji = [ config.theming.fonts.emoji.name ]; | ||||||
|           config.theming.fonts.sansSerif.name |  | ||||||
|         ]; |  | ||||||
|         monospace = [ |  | ||||||
|           config.theming.fonts.monospace.name |  | ||||||
|         ]; |  | ||||||
|         emoji = [ |  | ||||||
|           config.theming.fonts.emoji.name |  | ||||||
|         ]; |  | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,24 +1,32 @@ | |||||||
| {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 = let |         main = | ||||||
|           font = config.theming.fonts.monospace.name; |           let | ||||||
|           size = toString config.theming.fonts.monospace.recommendedSize; |             font = config.theming.fonts.monospace.name; | ||||||
|         in { |             size = toString config.theming.fonts.monospace.recommendedSize; | ||||||
|           font = mkForce "${font}:style=Regular:size=${size}"; |           in | ||||||
|           font-bold = "${font}:style=Bold:size=${size}"; |           { | ||||||
|           font-italic = "${font}:style=Italic:size=${size}"; |             font = mkForce "${font}:style=Regular:size=${size}"; | ||||||
|           font-bold-italic = "${font}:style=Bold Italic:size=${size}"; |             font-bold = "${font}:style=Bold:size=${size}"; | ||||||
|         }; |             font-italic = "${font}:style=Italic:size=${size}"; | ||||||
|  |             font-bold-italic = "${font}:style=Bold Italic:size=${size}"; | ||||||
|  |           }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | |||||||
							
								
								
									
										50
									
								
								modules/users/modules/language/nix.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								modules/users/modules/language/nix.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | |||||||
|  | { | ||||||
|  |   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 = { | ||||||
|  | 
 | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										42
									
								
								modules/users/modules/language/rust.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								modules/users/modules/language/rust.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | |||||||
|  | { | ||||||
|  |   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,11 +1,17 @@ | |||||||
| {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,11 +1,17 @@ | |||||||
| { 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"; | ||||||
|   }; |   }; | ||||||
| @ -17,8 +23,7 @@ in { | |||||||
|       viAlias = true; |       viAlias = true; | ||||||
|       vimAlias = true; |       vimAlias = true; | ||||||
| 
 | 
 | ||||||
|       extraPackages = with pkgs; [ |       extraPackages = with pkgs; [ ]; | ||||||
|       ]; |  | ||||||
| 
 | 
 | ||||||
|       opts = { |       opts = { | ||||||
|         number = true; |         number = true; | ||||||
| @ -169,10 +174,6 @@ in { | |||||||
|       #  enable = true; |       #  enable = true; | ||||||
|       #}; |       #}; | ||||||
| 
 | 
 | ||||||
|       plugins.rust-tools = { |  | ||||||
|         enable = true; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       plugins.vimtex = { |       plugins.vimtex = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         texlivePackage = null; |         texlivePackage = null; | ||||||
|  | |||||||
| @ -1,16 +1,18 @@ | |||||||
| {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 { |   config = mkIf cfg.enable { home.packages = with pkgs; [ obsidian ]; }; | ||||||
|     home.packages = with pkgs; [ |  | ||||||
|       obsidian |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } | } | ||||||
| @ -1,10 +1,16 @@ | |||||||
| {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,11 +1,17 @@ | |||||||
| {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 { | ||||||
| @ -13,41 +19,43 @@ 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 = let |       theme = | ||||||
|         inherit (config.lib.formats.rasi) mkLiteral; |         let | ||||||
|       in { |           inherit (config.lib.formats.rasi) mkLiteral; | ||||||
|         "*" = { |         in | ||||||
|           background-color = mkLiteral "rgba(0, 0, 0, 0%)"; |         { | ||||||
|           border-color = mkLiteral "#${colors.fg}"; |           "*" = { | ||||||
|           text-color = mkLiteral "#${colors.fg}"; |             background-color = mkLiteral "rgba(0, 0, 0, 0%)"; | ||||||
|  |             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,17 +1,21 @@ | |||||||
| {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 = [ |     home.packages = [ pkgs.rofi-rbw ]; | ||||||
|       pkgs.rofi-rbw |  | ||||||
|     ]; |  | ||||||
| 
 | 
 | ||||||
|     # TODO: Move to separate module and make configurable |     # TODO: Move to separate module and make configurable | ||||||
|     programs.rbw = { |     programs.rbw = { | ||||||
|  | |||||||
| @ -1,9 +1,15 @@ | |||||||
| { 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,9 +1,15 @@ | |||||||
| { 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"; | ||||||
| 
 | 
 | ||||||
| @ -31,9 +37,18 @@ in { | |||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|       plugins = [ |       plugins = [ | ||||||
|         (mkIf cfg.plugins.done { name = "done"; src = pkgs.fishPlugins.done.src; }) |         (mkIf cfg.plugins.done { | ||||||
|         (mkIf cfg.plugins.fzf { name = "fzf"; src = pkgs.fishPlugins.fzf-fish.src; }) |           name = "done"; | ||||||
|         (mkIf cfg.plugins.grc { name = "grc"; src = pkgs.fishPlugins.grc.src; }) |           src = pkgs.fishPlugins.done.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,6 +1,12 @@ | |||||||
| {config, lib, pkgs, ... }: | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| with lib; { | with lib; | ||||||
|  | { | ||||||
|   options.modules.steam = { |   options.modules.steam = { | ||||||
|     enable = mkEnableOption "steam"; |     enable = mkEnableOption "steam"; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -1,10 +1,14 @@ | |||||||
| { 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 { | { | ||||||
|     programs.river.enable = true; |   config = mkIf enabled { programs.river.enable = true; }; | ||||||
|   }; |  | ||||||
| } | } | ||||||
| @ -1,10 +1,14 @@ | |||||||
| { 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 { | { | ||||||
|     programs.steam.enable = true; |   config = mkIf enabled { programs.steam.enable = true; }; | ||||||
|   }; |  | ||||||
| } | } | ||||||
| @ -1,10 +1,14 @@ | |||||||
| { 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 { | { | ||||||
|     security.pam.services.waylock = {}; |   config = mkIf enabled { security.pam.services.waylock = { }; }; | ||||||
|   }; |  | ||||||
| } | } | ||||||
| @ -1,4 +1,9 @@ | |||||||
| { pkgs, lib, config, ... }: | { | ||||||
|  |   pkgs, | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| let | let | ||||||
| @ -30,7 +35,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."; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| @ -63,25 +68,35 @@ let | |||||||
|   ] ++ map (font: font.name) cfg.fonts.extraFonts; |   ] ++ map (font: font.name) cfg.fonts.extraFonts; | ||||||
| 
 | 
 | ||||||
|   # Flatten dependencies of fonts |   # Flatten dependencies of fonts | ||||||
|   fontPackages = converge (fonts: |   fontPackages = | ||||||
|     listToAttrs (map (font: { |     converge | ||||||
|       name = font; |       ( | ||||||
|       value = true; |         fonts: | ||||||
|     }) ( |         listToAttrs ( | ||||||
|       flatten (map (font:  |           map | ||||||
|         [ font.name ] |             (font: { | ||||||
|         ++ cfg.fonts.pkgs.${font.name}.fallbackFonts |               name = font; | ||||||
|       ) (attrsToList fonts)) |               value = true; | ||||||
|     )) |             }) | ||||||
|   ) (listToAttrs (map (font: { |             ( | ||||||
|     name = font; |               flatten (map (font: [ font.name ] ++ cfg.fonts.pkgs.${font.name}.fallbackFonts) (attrsToList fonts)) | ||||||
|     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 | ||||||
| @ -90,123 +105,129 @@ in { | |||||||
| 
 | 
 | ||||||
|   options.modules.theming.enable = mkEnableOption "theming"; |   options.modules.theming.enable = mkEnableOption "theming"; | ||||||
| 
 | 
 | ||||||
|   options.theming = let colors = config.theming.schemeColors; in { |   options.theming = | ||||||
|     darkMode = mkOption { |     let | ||||||
|       type = types.bool; |       colors = config.theming.schemeColors; | ||||||
|       default = false; |     in | ||||||
|       example = true; |     { | ||||||
|       description = "Whether the app should use dark mode."; |       darkMode = mkOption { | ||||||
|     }; |         type = types.bool; | ||||||
|  |         default = false; | ||||||
|  |         example = true; | ||||||
|  |         description = "Whether the app should use dark mode."; | ||||||
|  |       }; | ||||||
| 
 | 
 | ||||||
|     colorScheme = mkOption { |       colorScheme = mkOption { | ||||||
|       type = types.nullOr types.str; |         type = types.nullOr types.str; | ||||||
|       default = null; |         default = null; | ||||||
|       description = "Base 16 color scheme to use for styling. See stylix documentation for more information."; |         description = "Base 16 color scheme to use for styling. See stylix documentation for more information."; | ||||||
|     }; |       }; | ||||||
| 
 | 
 | ||||||
|     clientSideDecorations = mkOption { |       clientSideDecorations = mkOption { | ||||||
|       type = types.bool; |         type = types.bool; | ||||||
|       default = false; |         default = false; | ||||||
|       description = "Whether to enable client side decorations for windows."; |         description = "Whether to enable client side decorations for windows."; | ||||||
|     }; |       }; | ||||||
| 
 | 
 | ||||||
|     schemeColors = mkOption { |       schemeColors = mkOption { | ||||||
|       type = types.attrsOf types.anything; |         type = types.attrsOf types.anything; | ||||||
|       default = config.lib.stylix.colors; |         default = config.lib.stylix.colors; | ||||||
|       description = "Generated colors from scheme"; |         description = "Generated colors from scheme"; | ||||||
|     }; |       }; | ||||||
| 
 | 
 | ||||||
|     colors = { |       colors = { | ||||||
|       bg = mkOption { |         bg = mkOption { | ||||||
|         type = types.str; |           type = types.str; | ||||||
|         default = colors.base00; |           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 | ||||||
|  |         }; | ||||||
|       }; |       }; | ||||||
|       fg = mkOption { | 
 | ||||||
|         type = types.str; |       layout = { | ||||||
|         default = colors.base05; |         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."; | ||||||
|  |         }; | ||||||
|       }; |       }; | ||||||
|       accent = mkOption { | 
 | ||||||
|         type = types.str; |       fonts = { | ||||||
|         default = colors.base09; |         pkgs = mkOption { | ||||||
|       }; |           type = types.attrsOf fontModule; | ||||||
|       focused = mkOption { |           default = builtins.listToAttrs ( | ||||||
|         type = types.str; |             map (module: { | ||||||
|         default = cfg.colors.fg; |               name = module.name; | ||||||
|       }; |               value = module; | ||||||
|       unfocused = mkOption { |             }) (map (module: (import module) { inherit lib config pkgs; }) fontModules) | ||||||
|         type = types.str; |           ); | ||||||
|         default = colors.base02; |           description = "All available font modules."; | ||||||
|       }; |         }; | ||||||
|       alert = mkOption { | 
 | ||||||
|         type = types.str; |         installed = mkOption { | ||||||
|         default = "ffffff"; # TODO: Derive color from theme |           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; | ||||||
| @ -229,30 +250,32 @@ in { | |||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     # Configure gtk theme |     # Configure gtk theme | ||||||
|     gtk = let |     gtk = | ||||||
|       disableCSD = '' |       let | ||||||
|         headerbar.default-decoration { |         disableCSD = '' | ||||||
|           margin-bottom: 50px; |           headerbar.default-decoration { | ||||||
|           margin-top: -100px; |             margin-bottom: 50px; | ||||||
|         } |             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; | ||||||
| @ -289,10 +312,22 @@ in { | |||||||
|       polarity = if cfg.darkMode then "dark" else "light"; |       polarity = if cfg.darkMode then "dark" else "light"; | ||||||
| 
 | 
 | ||||||
|       fonts = { |       fonts = { | ||||||
|         serif = getAttrs [ "name" "package" ] cfg.fonts.serif; |         serif = getAttrs [ | ||||||
|         sansSerif = getAttrs [ "name" "package" ] cfg.fonts.sansSerif; |           "name" | ||||||
|         monospace = getAttrs [ "name" "package" ] cfg.fonts.monospace; |           "package" | ||||||
|         emoji = getAttrs [ "name" "package" ] cfg.fonts.emoji; |         ] cfg.fonts.serif; | ||||||
|  |         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,6 +4,5 @@ | |||||||
|   name = "Cozette Vector"; |   name = "Cozette Vector"; | ||||||
|   package = pkgs.cozette; |   package = pkgs.cozette; | ||||||
|   recommendedSize = 9; |   recommendedSize = 9; | ||||||
|   fallbackFonts = [ |   fallbackFonts = [ ]; | ||||||
|   ]; |  | ||||||
| } | } | ||||||
| @ -4,7 +4,5 @@ | |||||||
|   name = "Cozette"; |   name = "Cozette"; | ||||||
|   package = pkgs.cozette; |   package = pkgs.cozette; | ||||||
|   recommendedSize = 9; |   recommendedSize = 9; | ||||||
|   fallbackFonts = [ |   fallbackFonts = [ "Cozette Vector" ]; | ||||||
|     "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,7 +4,5 @@ | |||||||
|   name = "Fira Code"; |   name = "Fira Code"; | ||||||
|   package = pkgs.fira-code; |   package = pkgs.fira-code; | ||||||
|   recommendedSize = 12; |   recommendedSize = 12; | ||||||
|   fallbackFonts = [ |   fallbackFonts = [ "Symbols Nerd Font Mono" ]; | ||||||
|     "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,14 +1,25 @@ | |||||||
| { 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 [ "latte" "frappe" "macchiato" "mocha" ]; |         type = types.enum [ | ||||||
|  |           "latte" | ||||||
|  |           "frappe" | ||||||
|  |           "macchiato" | ||||||
|  |           "mocha" | ||||||
|  |         ]; | ||||||
|         default = "mocha"; |         default = "mocha"; | ||||||
|         description = "The flavor of catppuccin theme."; |         description = "The flavor of catppuccin theme."; | ||||||
|       }; |       }; | ||||||
|  | |||||||
| @ -1,16 +1,26 @@ | |||||||
| { 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 [ "hard" "medium" "soft" ]; |         type = types.enum [ | ||||||
|  |           "hard" | ||||||
|  |           "medium" | ||||||
|  |           "soft" | ||||||
|  |         ]; | ||||||
|         default = "hard"; |         default = "hard"; | ||||||
|         description = "The contrast level of the theme."; |         description = "The contrast level of the theme."; | ||||||
|       }; |       }; | ||||||
|  | |||||||
| @ -1,10 +1,16 @@ | |||||||
| {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 { | ||||||
| @ -20,21 +26,13 @@ in { | |||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     modules.unfree.allowedPackages = [ "vscode" ]; |     modules.unfree.allowedPackages = [ "vscode" ]; | ||||||
| 
 | 
 | ||||||
|     theming.fonts.extraFonts = [ |     theming.fonts.extraFonts = [ cfg.codeFont ]; | ||||||
|       cfg.codeFont |  | ||||||
|     ]; |  | ||||||
| 
 | 
 | ||||||
|     programs.vscode = { |     programs.vscode = { | ||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|       extensions = with pkgs.vscode-extensions; [ |       mutableExtensionsDir = false; | ||||||
|         eamodio.gitlens |       extensions = with pkgs.vscode-extensions; [ eamodio.gitlens ]; | ||||||
| 
 |  | ||||||
|         # Language support |  | ||||||
|         # TODO: Move to separate language modules |  | ||||||
|         bbenoist.nix |  | ||||||
|         rust-lang.rust-analyzer |  | ||||||
|       ]; |  | ||||||
| 
 | 
 | ||||||
|       userSettings = { |       userSettings = { | ||||||
|         # Font setup |         # Font setup | ||||||
| @ -45,8 +43,9 @@ 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 | ||||||
| 
 | 
 | ||||||
|         # Autoformatting |         # Formatting | ||||||
|         "editor.formatOnSave" = true; |         "editor.formatOnSave" = true; | ||||||
|  |         "editor.tabSize" = 4; | ||||||
| 
 | 
 | ||||||
|         # Layout |         # Layout | ||||||
|         "window.menuBarVisibility" = "hidden"; |         "window.menuBarVisibility" = "hidden"; | ||||||
|  | |||||||
| @ -1,9 +1,15 @@ | |||||||
| {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"; | ||||||
|   }; |   }; | ||||||
| @ -11,8 +17,6 @@ in { | |||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     modules.unfree.allowedPackages = [ "winbox" ]; |     modules.unfree.allowedPackages = [ "winbox" ]; | ||||||
| 
 | 
 | ||||||
|     home.packages = with pkgs; [ |     home.packages = with pkgs; [ winbox ]; | ||||||
|       winbox |  | ||||||
|     ]; |  | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
| @ -1,8 +1,14 @@ | |||||||
| {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,9 +1,15 @@ | |||||||
| { 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,9 +1,15 @@ | |||||||
| { 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,4 +1,9 @@ | |||||||
| { lib, config, pkgs, ... }: | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| with lib; | with lib; | ||||||
| # let | # let | ||||||
| @ -17,8 +22,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,4 +1,9 @@ | |||||||
| { lib, config, pkgs, ... }: | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| pkgs.stdenv.mkDerivation rec { | pkgs.stdenv.mkDerivation rec { | ||||||
|   pname = "wqy-bitmapsong-pcf"; |   pname = "wqy-bitmapsong-pcf"; | ||||||
|  | |||||||
| @ -1,4 +1,9 @@ | |||||||
| { lib, config, pkgs, ... }: | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| pkgs.stdenv.mkDerivation rec { | pkgs.stdenv.mkDerivation rec { | ||||||
|   pname = "wqy-microhei"; |   pname = "wqy-microhei"; | ||||||
| @ -6,7 +11,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,4 +1,9 @@ | |||||||
| { lib, config, pkgs, ... }: | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
| 
 | 
 | ||||||
| pkgs.stdenv.mkDerivation rec { | pkgs.stdenv.mkDerivation rec { | ||||||
|   pname = "wqy-zenhei"; |   pname = "wqy-zenhei"; | ||||||
|  | |||||||
| @ -29,26 +29,33 @@ | |||||||
|       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 = let fontpkgs = config.theming.fonts.pkgs; in { |     theming = | ||||||
|       # Fonts |       let | ||||||
|       fonts.serif = fontpkgs."DejaVu Serif"; |         fontpkgs = config.theming.fonts.pkgs; | ||||||
|       fonts.sansSerif = fontpkgs."DejaVu Sans"; |       in | ||||||
|       fonts.monospace = fontpkgs."Dina"; |       { | ||||||
|       fonts.emoji = fontpkgs."Dina"; |         # Fonts | ||||||
|       fonts.extraFonts = []; |         fonts.serif = fontpkgs."DejaVu Serif"; | ||||||
|  |         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