Compare commits
	
		
			26 Commits
		
	
	
		
			3b41645cdf
			...
			73f957e81d
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 73f957e81d | ||
|   | 7e790a58e5 | ||
|   | d40cab3aba | ||
|   | f8ba5af5ac | ||
|   | b2c15706c0 | ||
|   | bb3deb5f31 | ||
|   | ac628036a9 | ||
|   | 28eb24c658 | ||
|   | 891fa64466 | ||
|   | 3b071a8118 | ||
|   | d5c9303003 | ||
|   | 5db7d1f93f | ||
|   | 78766dfaa8 | ||
|   | 3374b35053 | ||
|   | 34bba528b3 | ||
|   | a91fb54e24 | ||
|   | e24066e577 | ||
|   | 52c7212155 | ||
|   | dc77d948e6 | ||
|   | 5f6f793979 | ||
|   | 74e5398ccf | ||
|   | 208eec466e | ||
|   | 964dff4d8c | ||
|   | 48cb8e42e9 | ||
|   | ba7c0b1d2a | ||
|   | afcf41fbb5 | 
| @ -22,8 +22,19 @@ in | |||||||
|       curl |       curl | ||||||
|       dig |       dig | ||||||
|       procps |       procps | ||||||
|  |       wireguard-tools | ||||||
|  |       usbutils | ||||||
|  |       pciutils | ||||||
|  |       zip | ||||||
|  |       unzip | ||||||
|  | 
 | ||||||
|  |       # TODO: MOVE | ||||||
|  |       quickemu | ||||||
|  |       pdftk | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|  |     virtualisation.docker.enable = true; | ||||||
|  | 
 | ||||||
|     modules = { |     modules = { | ||||||
|       # Enable base modules |       # Enable base modules | ||||||
|       clean-tmp.enable = true; |       clean-tmp.enable = true; | ||||||
| @ -35,10 +46,11 @@ in | |||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     # TODO: Remove everything below, it is here out of convenience and should be elsewhere |     # TODO: Remove everything below, it is here out of convenience and should be elsewhere | ||||||
|     networking.nameservers = [ |     # networking.nameservers = [ | ||||||
|       "9.9.9.9" |     #   "9.9.9.9" | ||||||
|       "149.112.112.112" |     #   "149.112.112.112" | ||||||
|     ]; |     # ]; | ||||||
|  |     networking.firewall.enable = true; | ||||||
|     programs.dconf.enable = true; |     programs.dconf.enable = true; | ||||||
|     services.libinput.enable = true; |     services.libinput.enable = true; | ||||||
|     modules.unfree.enable = true; |     modules.unfree.enable = true; | ||||||
|  | |||||||
| @ -9,9 +9,15 @@ with lib; | |||||||
| let | let | ||||||
|   # Nixvim |   # Nixvim | ||||||
|   nixvim = import ( |   nixvim = import ( | ||||||
|     builtins.fetchGit { |     # builtins.fetchGit { | ||||||
|       url = "https://github.com/nix-community/nixvim"; |     #   url = "https://github.com/nix-community/nixvim"; | ||||||
|       # ref = "nixos-24.05"; |     #   # ref = "nixos-24.05"; | ||||||
|  |     # } | ||||||
|  |     pkgs.fetchFromGitHub { | ||||||
|  |       owner = "nix-community"; | ||||||
|  |       repo = "nixvim"; | ||||||
|  |       rev = "master"; | ||||||
|  |       sha256 = "sha256-xPf3jjDBDA9oMVnWU5DJ8gINCq2EPiupvF/4rD/0eEI="; | ||||||
|     } |     } | ||||||
|   ); |   ); | ||||||
| 
 | 
 | ||||||
| @ -20,8 +26,8 @@ let | |||||||
|     pkgs.fetchFromGitHub { |     pkgs.fetchFromGitHub { | ||||||
|       owner = "danth"; |       owner = "danth"; | ||||||
|       repo = "stylix"; |       repo = "stylix"; | ||||||
|       rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116"; |       rev = "master"; | ||||||
|       sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5"; |       sha256 = "sha256-8uTKUHkaU980J5kRnLYrdwmjZYB88eBGUk1oVgIUHFE="; | ||||||
|     } |     } | ||||||
|   ); |   ); | ||||||
| 
 | 
 | ||||||
| @ -84,7 +90,10 @@ in | |||||||
|     users.users = attrsets.concatMapAttrs (name: value: { |     users.users = attrsets.concatMapAttrs (name: value: { | ||||||
|       ${name} = { |       ${name} = { | ||||||
|         isNormalUser = true; |         isNormalUser = true; | ||||||
|         extraGroups = mkIf value.sudo [ "wheel" ]; |         extraGroups = mkIf value.sudo [ | ||||||
|  |           "wheel" | ||||||
|  |           "docker" | ||||||
|  |         ]; | ||||||
|       }; |       }; | ||||||
|     }) config.machine.users; |     }) config.machine.users; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -21,9 +21,10 @@ in | |||||||
|     # Enable NUR |     # Enable NUR | ||||||
|     nixpkgs.config.packageOverrides = pkgs: { |     nixpkgs.config.packageOverrides = pkgs: { | ||||||
|       # TODO: Pin the version |       # TODO: Pin the version | ||||||
|       nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") { |       nur = import (builtins.fetchTarball { | ||||||
|         inherit pkgs; |         url = "https://github.com/nix-community/NUR/archive/master.tar.gz"; | ||||||
|       }; |         sha256 = "0jjfvr325imrwg9ic8xha5y38jcp1s0z4pzwhvi0570aigzibbz4"; | ||||||
|  |       }) { inherit pkgs; }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     programs.firefox = { |     programs.firefox = { | ||||||
|  | |||||||
| @ -20,26 +20,27 @@ in | |||||||
|     default.browser = mkIf cfg.default "org.qutebrowser.qutebrowser.desktop"; |     default.browser = mkIf cfg.default "org.qutebrowser.qutebrowser.desktop"; | ||||||
| 
 | 
 | ||||||
|     # TODO: Remove once nixpkgs updates |     # TODO: Remove once nixpkgs updates | ||||||
|     nixpkgs.config.packageOverrides = pkgs: { |     # nixpkgs.config.packageOverrides = pkgs: { | ||||||
|       python3 = pkgs.python3.override { |     #   python3 = pkgs.python3.override { | ||||||
|         packageOverrides = self: super: { |     #     packageOverrides = self: super: { | ||||||
|           pykeepass = super.pykeepass.overrideAttrs (attrs: { |     #       pykeepass = super.pykeepass.overrideAttrs (attrs: { | ||||||
|             version = "4.1.0.post1"; |     #         version = "4.1.0.post1"; | ||||||
|             src = pkgs.fetchFromGitHub { |     #         src = pkgs.fetchFromGitHub { | ||||||
|               owner = "libkeepass"; |     #           owner = "libkeepass"; | ||||||
|               repo = "pykeepass"; |     #           repo = "pykeepass"; | ||||||
|               rev = "refs/tags/v4.1.0.post1"; |     #           rev = "refs/tags/v4.1.0.post1"; | ||||||
|               hash = "sha256-64is/XoRF/kojqd4jQIAQi1od8TRhiv9uR+WNIGvP2A="; |     #           hash = "sha256-64is/XoRF/kojqd4jQIAQi1od8TRhiv9uR+WNIGvP2A="; | ||||||
|             }; |     #         }; | ||||||
|           }); |     #       }); | ||||||
|         }; |     #     }; | ||||||
|       }; |     #   }; | ||||||
|     }; |     # }; | ||||||
| 
 | 
 | ||||||
|     programs.qutebrowser = { |     programs.qutebrowser = { | ||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|       extraConfig = '' |       extraConfig = '' | ||||||
|  |         config.set("completion.web_history.max_items", 100) | ||||||
|         config.set("colors.webpage.darkmode.enabled", False) |         config.set("colors.webpage.darkmode.enabled", False) | ||||||
|         config.set("colors.webpage.preferred_color_scheme", "${if theme.darkMode then "dark" else "light"}") |         config.set("colors.webpage.preferred_color_scheme", "${if theme.darkMode then "dark" else "light"}") | ||||||
|         config.set("fonts.default_family", "${theme.fonts.monospace.name}") |         config.set("fonts.default_family", "${theme.fonts.monospace.name}") | ||||||
|  | |||||||
							
								
								
									
										368
									
								
								modules/users/modules/btop/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										368
									
								
								modules/users/modules/btop/default.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,368 @@ | |||||||
|  | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.btop; | ||||||
|  |   colors = config.theming.schemeColors; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.btop = { | ||||||
|  |     enable = mkEnableOption "btop"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     home.packages = with pkgs; [ btop ]; | ||||||
|  | 
 | ||||||
|  |     xdg.configFile."btop/btop.conf" = { | ||||||
|  |       enable = true; | ||||||
|  |       text = '' | ||||||
|  |         #? Config file for btop v. 1.4.0 | ||||||
|  | 
 | ||||||
|  |         #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. | ||||||
|  |         #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" | ||||||
|  |         color_theme = "nixos" | ||||||
|  | 
 | ||||||
|  |         #* If the theme set background should be shown, set to False if you want terminal background transparency. | ||||||
|  |         theme_background = True | ||||||
|  | 
 | ||||||
|  |         #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. | ||||||
|  |         truecolor = True | ||||||
|  | 
 | ||||||
|  |         #* Set to true to force tty mode regardless if a real tty has been detected or not. | ||||||
|  |         #* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. | ||||||
|  |         force_tty = False | ||||||
|  | 
 | ||||||
|  |         #* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. | ||||||
|  |         #* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. | ||||||
|  |         #* Use whitespace " " as separator between different presets. | ||||||
|  |         #* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" | ||||||
|  |         presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" | ||||||
|  | 
 | ||||||
|  |         #* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. | ||||||
|  |         #* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. | ||||||
|  |         vim_keys = False | ||||||
|  | 
 | ||||||
|  |         #* Rounded corners on boxes, is ignored if TTY mode is ON. | ||||||
|  |         rounded_corners = False | ||||||
|  | 
 | ||||||
|  |         #* Default symbols to use for graph creation, "braille", "block" or "tty". | ||||||
|  |         #* "braille" offers the highest resolution but might not be included in all fonts. | ||||||
|  |         #* "block" has half the resolution of braille but uses more common characters. | ||||||
|  |         #* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. | ||||||
|  |         #* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. | ||||||
|  |         graph_symbol = "braille" | ||||||
|  | 
 | ||||||
|  |         # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". | ||||||
|  |         graph_symbol_cpu = "default" | ||||||
|  | 
 | ||||||
|  |         # Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". | ||||||
|  |         graph_symbol_gpu = "default" | ||||||
|  | 
 | ||||||
|  |         # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". | ||||||
|  |         graph_symbol_mem = "default" | ||||||
|  | 
 | ||||||
|  |         # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". | ||||||
|  |         graph_symbol_net = "default" | ||||||
|  | 
 | ||||||
|  |         # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". | ||||||
|  |         graph_symbol_proc = "default" | ||||||
|  | 
 | ||||||
|  |         #* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. | ||||||
|  |         shown_boxes = "cpu net proc mem" | ||||||
|  | 
 | ||||||
|  |         #* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. | ||||||
|  |         update_ms = 500 | ||||||
|  | 
 | ||||||
|  |         #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", | ||||||
|  |         #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. | ||||||
|  |         proc_sorting = "cpu lazy" | ||||||
|  | 
 | ||||||
|  |         #* Reverse sorting order, True or False. | ||||||
|  |         proc_reversed = False | ||||||
|  | 
 | ||||||
|  |         #* Show processes as a tree. | ||||||
|  |         proc_tree = False | ||||||
|  | 
 | ||||||
|  |         #* Use the cpu graph colors in the process list. | ||||||
|  |         proc_colors = True | ||||||
|  | 
 | ||||||
|  |         #* Use a darkening gradient in the process list. | ||||||
|  |         proc_gradient = True | ||||||
|  | 
 | ||||||
|  |         #* If process cpu usage should be of the core it's running on or usage of the total available cpu power. | ||||||
|  |         proc_per_core = False | ||||||
|  | 
 | ||||||
|  |         #* Show process memory as bytes instead of percent. | ||||||
|  |         proc_mem_bytes = True | ||||||
|  | 
 | ||||||
|  |         #* Show cpu graph for each process. | ||||||
|  |         proc_cpu_graphs = True | ||||||
|  | 
 | ||||||
|  |         #* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) | ||||||
|  |         proc_info_smaps = False | ||||||
|  | 
 | ||||||
|  |         #* Show proc box on left side of screen instead of right. | ||||||
|  |         proc_left = False | ||||||
|  | 
 | ||||||
|  |         #* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). | ||||||
|  |         proc_filter_kernel = False | ||||||
|  | 
 | ||||||
|  |         #* In tree-view, always accumulate child process resources in the parent process. | ||||||
|  |         proc_aggregate = False | ||||||
|  | 
 | ||||||
|  |         #* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. | ||||||
|  |         #* Select from a list of detected attributes from the options menu. | ||||||
|  |         cpu_graph_upper = "Auto" | ||||||
|  | 
 | ||||||
|  |         #* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. | ||||||
|  |         #* Select from a list of detected attributes from the options menu. | ||||||
|  |         cpu_graph_lower = "Auto" | ||||||
|  | 
 | ||||||
|  |         #* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". | ||||||
|  |         show_gpu_info = "Auto" | ||||||
|  | 
 | ||||||
|  |         #* Toggles if the lower CPU graph should be inverted. | ||||||
|  |         cpu_invert_lower = True | ||||||
|  | 
 | ||||||
|  |         #* Set to True to completely disable the lower CPU graph. | ||||||
|  |         cpu_single_graph = False | ||||||
|  | 
 | ||||||
|  |         #* Show cpu box at bottom of screen instead of top. | ||||||
|  |         cpu_bottom = False | ||||||
|  | 
 | ||||||
|  |         #* Shows the system uptime in the CPU box. | ||||||
|  |         show_uptime = True | ||||||
|  | 
 | ||||||
|  |         #* Show cpu temperature. | ||||||
|  |         check_temp = True | ||||||
|  | 
 | ||||||
|  |         #* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. | ||||||
|  |         cpu_sensor = "Auto" | ||||||
|  | 
 | ||||||
|  |         #* Show temperatures for cpu cores also if check_temp is True and sensors has been found. | ||||||
|  |         show_coretemp = True | ||||||
|  | 
 | ||||||
|  |         #* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. | ||||||
|  |         #* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. | ||||||
|  |         #* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. | ||||||
|  |         #* Example: "4:0 5:1 6:3" | ||||||
|  |         cpu_core_map = "" | ||||||
|  | 
 | ||||||
|  |         #* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". | ||||||
|  |         temp_scale = "celsius" | ||||||
|  | 
 | ||||||
|  |         #* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. | ||||||
|  |         base_10_sizes = False | ||||||
|  | 
 | ||||||
|  |         #* Show CPU frequency. | ||||||
|  |         show_cpu_freq = True | ||||||
|  | 
 | ||||||
|  |         #* Draw a clock at top of screen, formatting according to strftime, empty string to disable. | ||||||
|  |         #* Special formatting: /host = hostname | /user = username | /uptime = system uptime | ||||||
|  |         clock_format = "%X" | ||||||
|  | 
 | ||||||
|  |         #* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. | ||||||
|  |         background_update = True | ||||||
|  | 
 | ||||||
|  |         #* Custom cpu model name, empty string to disable. | ||||||
|  |         custom_cpu_name = "" | ||||||
|  | 
 | ||||||
|  |         #* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". | ||||||
|  |         #* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". | ||||||
|  |         disks_filter = "" | ||||||
|  | 
 | ||||||
|  |         #* Show graphs instead of meters for memory values. | ||||||
|  |         mem_graphs = True | ||||||
|  | 
 | ||||||
|  |         #* Show mem box below net box instead of above. | ||||||
|  |         mem_below_net = False | ||||||
|  | 
 | ||||||
|  |         #* Count ZFS ARC in cached and available memory. | ||||||
|  |         zfs_arc_cached = True | ||||||
|  | 
 | ||||||
|  |         #* If swap memory should be shown in memory box. | ||||||
|  |         show_swap = True | ||||||
|  | 
 | ||||||
|  |         #* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. | ||||||
|  |         swap_disk = True | ||||||
|  | 
 | ||||||
|  |         #* If mem box should be split to also show disks info. | ||||||
|  |         show_disks = True | ||||||
|  | 
 | ||||||
|  |         #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. | ||||||
|  |         only_physical = True | ||||||
|  | 
 | ||||||
|  |         #* Read disks list from /etc/fstab. This also disables only_physical. | ||||||
|  |         use_fstab = True | ||||||
|  | 
 | ||||||
|  |         #* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) | ||||||
|  |         zfs_hide_datasets = False | ||||||
|  | 
 | ||||||
|  |         #* Set to true to show available disk space for privileged users. | ||||||
|  |         disk_free_priv = False | ||||||
|  | 
 | ||||||
|  |         #* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. | ||||||
|  |         show_io_stat = True | ||||||
|  | 
 | ||||||
|  |         #* Toggles io mode for disks, showing big graphs for disk read/write speeds. | ||||||
|  |         io_mode = True | ||||||
|  | 
 | ||||||
|  |         #* Set to True to show combined read/write io graphs in io mode. | ||||||
|  |         io_graph_combined = False | ||||||
|  | 
 | ||||||
|  |         #* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". | ||||||
|  |         #* Example: "/mnt/media:100 /:20 /boot:1". | ||||||
|  |         io_graph_speeds = "" | ||||||
|  | 
 | ||||||
|  |         #* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. | ||||||
|  |         net_download = 100 | ||||||
|  | 
 | ||||||
|  |         net_upload = 100 | ||||||
|  | 
 | ||||||
|  |         #* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. | ||||||
|  |         net_auto = True | ||||||
|  | 
 | ||||||
|  |         #* Sync the auto scaling for download and upload to whichever currently has the highest scale. | ||||||
|  |         net_sync = True | ||||||
|  | 
 | ||||||
|  |         #* Starts with the Network Interface specified here. | ||||||
|  |         net_iface = "" | ||||||
|  | 
 | ||||||
|  |         #* Show battery stats in top right if battery is present. | ||||||
|  |         show_battery = False | ||||||
|  | 
 | ||||||
|  |         #* Which battery to use if multiple are present. "Auto" for auto detection. | ||||||
|  |         selected_battery = "Auto" | ||||||
|  | 
 | ||||||
|  |         #* Show power stats of battery next to charge indicator. | ||||||
|  |         show_battery_watts = True | ||||||
|  | 
 | ||||||
|  |         #* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". | ||||||
|  |         #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. | ||||||
|  |         log_level = "WARNING" | ||||||
|  | 
 | ||||||
|  |         #* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. | ||||||
|  |         nvml_measure_pcie_speeds = True | ||||||
|  | 
 | ||||||
|  |         #* Horizontally mirror the GPU graph. | ||||||
|  |         gpu_mirror_graph = True | ||||||
|  | 
 | ||||||
|  |         #* Custom gpu0 model name, empty string to disable. | ||||||
|  |         custom_gpu_name0 = "" | ||||||
|  | 
 | ||||||
|  |         #* Custom gpu1 model name, empty string to disable. | ||||||
|  |         custom_gpu_name1 = "" | ||||||
|  | 
 | ||||||
|  |         #* Custom gpu2 model name, empty string to disable. | ||||||
|  |         custom_gpu_name2 = "" | ||||||
|  | 
 | ||||||
|  |         #* Custom gpu3 model name, empty string to disable. | ||||||
|  |         custom_gpu_name3 = "" | ||||||
|  | 
 | ||||||
|  |         #* Custom gpu4 model name, empty string to disable. | ||||||
|  |         custom_gpu_name4 = "" | ||||||
|  | 
 | ||||||
|  |         #* Custom gpu5 model name, empty string to disable. | ||||||
|  |         custom_gpu_name5 = "" | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     xdg.configFile."btop/themes/nixos.theme" = { | ||||||
|  |       enable = true; | ||||||
|  |       text = with colors; '' | ||||||
|  |         # Main background, empty for terminal default, need to be empty if you want transparent background | ||||||
|  |         theme[main_bg]="#${base00}" | ||||||
|  | 
 | ||||||
|  |         # Main text color | ||||||
|  |         theme[main_fg]="#${base05}" | ||||||
|  | 
 | ||||||
|  |         # Title color for boxes | ||||||
|  |         theme[title]="#${base05}" | ||||||
|  | 
 | ||||||
|  |         # Highlight color for keyboard shortcuts | ||||||
|  |         theme[hi_fg]="#${base0D}" | ||||||
|  | 
 | ||||||
|  |         # Background color of selected item in processes box | ||||||
|  |         theme[selected_bg]="#${base03}" | ||||||
|  | 
 | ||||||
|  |         # Foreground color of selected item in processes box | ||||||
|  |         theme[selected_fg]="#${base0D}" | ||||||
|  | 
 | ||||||
|  |         # Color of inactive/disabled text | ||||||
|  |         theme[inactive_fg]="#8c8fa1" | ||||||
|  | 
 | ||||||
|  |         # Color of text appearing on top of graphs, i.e uptime and current network graph scaling | ||||||
|  |         theme[graph_text]="#${base06}" | ||||||
|  | 
 | ||||||
|  |         # Background color of the percentage meters | ||||||
|  |         theme[meter_bg]="#${base03}" | ||||||
|  | 
 | ||||||
|  |         # Misc colors for processes box including mini cpu graphs, details memory graph and details status text | ||||||
|  |         theme[proc_misc]="#${base06}" | ||||||
|  | 
 | ||||||
|  |         # CPU, Memory, Network, Proc box outline colors | ||||||
|  |         theme[cpu_box]="#${base0E}" #Mauve | ||||||
|  |         theme[mem_box]="#${base0B}" #Green | ||||||
|  |         theme[net_box]="#e64553" #Maroon | ||||||
|  |         theme[proc_box]="#${colors.base0D}" #Blue | ||||||
|  | 
 | ||||||
|  |         # Box divider line and small boxes line color | ||||||
|  |         theme[div_line]="#9ca0b0" | ||||||
|  | 
 | ||||||
|  |         # Temperature graph color (Green -> Yellow -> Red) | ||||||
|  |         theme[temp_start]="#${base0B}" | ||||||
|  |         theme[temp_mid]="#${base0A}" | ||||||
|  |         theme[temp_end]="#${base08}" | ||||||
|  | 
 | ||||||
|  |         # CPU graph colors (Teal -> Lavender) | ||||||
|  |         theme[cpu_start]="#${base0C}" | ||||||
|  |         theme[cpu_mid]="#209fb5" | ||||||
|  |         theme[cpu_end]="#${base07}" | ||||||
|  | 
 | ||||||
|  |         # Mem/Disk free meter (Mauve -> Lavender -> Blue) | ||||||
|  |         theme[free_start]="#${base0E}" | ||||||
|  |         theme[free_mid]="#${base07}" | ||||||
|  |         theme[free_end]="#${base0D}" | ||||||
|  | 
 | ||||||
|  |         # Mem/Disk cached meter (Sapphire -> Lavender) | ||||||
|  |         theme[cached_start]="#209fb5" | ||||||
|  |         theme[cached_mid]="#${base0D}" | ||||||
|  |         theme[cached_end]="#${base07}" | ||||||
|  | 
 | ||||||
|  |         # Mem/Disk available meter (Peach -> Red) | ||||||
|  |         theme[available_start]="#${base09}" | ||||||
|  |         theme[available_mid]="#e64553" | ||||||
|  |         theme[available_end]="#${base08}" | ||||||
|  | 
 | ||||||
|  |         # Mem/Disk used meter (Green -> Sky) | ||||||
|  |         theme[used_start]="#${base0B}" | ||||||
|  |         theme[used_mid]="#${base0C}" | ||||||
|  |         theme[used_end]="#04a5e5" | ||||||
|  | 
 | ||||||
|  |         # Download graph colors (Peach -> Red) | ||||||
|  |         theme[download_start]="#${base09}" | ||||||
|  |         theme[download_mid]="#e64553" | ||||||
|  |         theme[download_end]="#${base08}" | ||||||
|  | 
 | ||||||
|  |         # Upload graph colors (Green -> Sky) | ||||||
|  |         theme[upload_start]="#${base0B}" | ||||||
|  |         theme[upload_mid]="#${base0C}" | ||||||
|  |         theme[upload_end]="#04a5e5" | ||||||
|  | 
 | ||||||
|  |         # Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) | ||||||
|  |         theme[process_start]="#209fb5" | ||||||
|  |         theme[process_mid]="#${base07}" | ||||||
|  |         theme[process_end]="#${base0E}" | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     modules.shell.aliases = { | ||||||
|  |       top = "btop"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -1,7 +1,4 @@ | |||||||
| { | { | ||||||
|   input, |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| 
 | 
 | ||||||
| @ -10,20 +7,29 @@ | |||||||
|     # Import all modules |     # Import all modules | ||||||
|     ./bluetuith/default.nix |     ./bluetuith/default.nix | ||||||
|     ./browser/default.nix |     ./browser/default.nix | ||||||
|  |     ./btop/default.nix | ||||||
|     ./desktop/default.nix |     ./desktop/default.nix | ||||||
|     ./discord/default.nix |     ./discord/default.nix | ||||||
|     ./feishin/default.nix |     ./feishin/default.nix | ||||||
|     ./fontconfig/default.nix |     ./fontconfig/default.nix | ||||||
|  |     ./git/default.nix | ||||||
|  |     ./language/cpp.nix | ||||||
|     ./language/haskell.nix |     ./language/haskell.nix | ||||||
|  |     ./language/js.nix | ||||||
|  |     ./language/jupyter.nix | ||||||
|     ./language/nix.nix |     ./language/nix.nix | ||||||
|  |     ./language/python.nix | ||||||
|     ./language/rust.nix |     ./language/rust.nix | ||||||
|  |     ./language/tex.nix | ||||||
|     ./mako/default.nix |     ./mako/default.nix | ||||||
|     ./neovim/default.nix |     ./neovim/default.nix | ||||||
|     ./obsidian/default.nix |     ./obsidian/default.nix | ||||||
|     ./rofi/default.nix |     ./rofi/default.nix | ||||||
|     ./rofi/rofi-rbw.nix |     ./rofi/rofi-rbw.nix | ||||||
|  |     ./shell/default.nix | ||||||
|     ./shell/bash.nix |     ./shell/bash.nix | ||||||
|     ./shell/fish.nix |     ./shell/fish.nix | ||||||
|  |     ./spotify/default.nix | ||||||
|     ./steam/default.nix |     ./steam/default.nix | ||||||
|     ./terminal/default.nix |     ./terminal/default.nix | ||||||
|     ./terminal/foot/default.nix |     ./terminal/foot/default.nix | ||||||
|  | |||||||
| @ -23,6 +23,13 @@ in | |||||||
|       wpa_supplicant_gui # TODO: Move |       wpa_supplicant_gui # TODO: Move | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|  |     modules.desktop.reloadScript = '' | ||||||
|  |       if ${pkgs.procps}/bin/pgrep waybar; then | ||||||
|  |         ${pkgs.procps}/bin/pkill waybar | ||||||
|  |       fi | ||||||
|  |       ${pkgs.waybar}/bin/waybar & | ||||||
|  |     ''; | ||||||
|  | 
 | ||||||
|     programs.waybar = { |     programs.waybar = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       settings = { |       settings = { | ||||||
|  | |||||||
| @ -25,6 +25,11 @@ in | |||||||
|       default = "${pkgs.bash}/bin/bash"; |       default = "${pkgs.bash}/bin/bash"; | ||||||
|       description = "Bash script to execute after logging in."; |       description = "Bash script to execute after logging in."; | ||||||
|     }; |     }; | ||||||
|  |     reloadScript = mkOption { | ||||||
|  |       type = types.lines; | ||||||
|  |       default = ""; | ||||||
|  |       description = "Shell script to execute after reload/rebuild."; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = { |   config = { | ||||||
| @ -34,13 +39,22 @@ in | |||||||
|     home.packages = optionals cfg.wayland ( |     home.packages = optionals cfg.wayland ( | ||||||
|       with pkgs; |       with pkgs; | ||||||
|       [ |       [ | ||||||
|         pkgs.wl-clipboard |         wl-clipboard | ||||||
|         pkgs.wtype |         wtype | ||||||
|         pkgs.grim |         grim | ||||||
|         pkgs.slurp |         slurp | ||||||
|       ] |       ] | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|  |     home.activation = { | ||||||
|  |       customReloadScript = lib.hm.dag.entryAfter [ "writeBoundary" ] ( | ||||||
|  |         '' | ||||||
|  |           #!${pkgs.bash}/bin/bash | ||||||
|  |         '' | ||||||
|  |         + cfg.reloadScript | ||||||
|  |       ); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|     home.file.".initrc" = { |     home.file.".initrc" = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       executable = true; |       executable = true; | ||||||
|  | |||||||
| @ -34,6 +34,10 @@ in | |||||||
|       river |       river | ||||||
|     ''; |     ''; | ||||||
| 
 | 
 | ||||||
|  |     modules.desktop.reloadScript = '' | ||||||
|  |       ${pkgs.river}/bin/riverctl background-color 0x${config.theming.colors.bg} | ||||||
|  |     ''; | ||||||
|  | 
 | ||||||
|     # Update background after rebuild |     # Update background after rebuild | ||||||
|     # home.activation = { |     # home.activation = { | ||||||
|     #   river = lib.hm.dag.entryBetween [ "reloadSystemd" ] [ "installPackages" ] '' |     #   river = lib.hm.dag.entryBetween [ "reloadSystemd" ] [ "installPackages" ] '' | ||||||
| @ -104,7 +108,7 @@ in | |||||||
| 
 | 
 | ||||||
|           spawn = [ |           spawn = [ | ||||||
|             "\"${layout} ${layoutOptions}\"" |             "\"${layout} ${layoutOptions}\"" | ||||||
|             "waybar" |             "waybar" # TODO: Decouple | ||||||
|             "\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\"" |             "\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\"" | ||||||
|           ]; |           ]; | ||||||
|           map = ( |           map = ( | ||||||
|  | |||||||
| @ -44,9 +44,16 @@ in | |||||||
|     home.file.".config/fontconfig/conf.d/20-family-fallbacks.conf" = { |     home.file.".config/fontconfig/conf.d/20-family-fallbacks.conf" = { | ||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|  |       # text = '' | ||||||
|  |       #   <?xml version="1.0"?> | ||||||
|  |       #   <fontconfig> | ||||||
|  | 
 | ||||||
|  |       #   ${configContent} | ||||||
|  |       #   </fontconfig> | ||||||
|  |       # ''; | ||||||
|       text = '' |       text = '' | ||||||
|         <?xml version="1.0"?> |         <?xml version='1.0'?> | ||||||
|         <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> |         <!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'> | ||||||
|         <fontconfig> |         <fontconfig> | ||||||
| 
 | 
 | ||||||
|         ${configContent} |         ${configContent} | ||||||
|  | |||||||
							
								
								
									
										53
									
								
								modules/users/modules/git/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								modules/users/modules/git/default.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | |||||||
|  | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.git; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.git = { | ||||||
|  |     enable = mkEnableOption "git"; | ||||||
|  | 
 | ||||||
|  |     user = mkOption { | ||||||
|  |       type = types.str; | ||||||
|  |       description = "Default user name to use."; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     email = mkOption { | ||||||
|  |       type = types.str; | ||||||
|  |       description = "Default user email to use."; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     ignores = mkOption { | ||||||
|  |       type = types.listOf types.str; | ||||||
|  |       default = [ ]; | ||||||
|  |       description = "Paths to globally ignore"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     home.packages = with pkgs; [ | ||||||
|  |       git | ||||||
|  |       lazygit | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     programs.git = { | ||||||
|  |       enable = true; | ||||||
|  | 
 | ||||||
|  |       extraConfig = { | ||||||
|  |         pull = { | ||||||
|  |           rebase = false; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       userName = cfg.user; | ||||||
|  |       userEmail = cfg.email; | ||||||
|  |       ignores = cfg.ignores; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										54
									
								
								modules/users/modules/language/cpp.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								modules/users/modules/language/cpp.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.rust; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.cpp = { | ||||||
|  |     enable = mkEnableOption "cpp"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     # Allow unfree | ||||||
|  |     modules.unfree.allowedPackages = [ | ||||||
|  |       "vscode-extension-ms-vscode-cpptools" | ||||||
|  |       # TODO: Remove, it should not be here | ||||||
|  |       "android-studio-stable" | ||||||
|  |       "android-sdk-cmdline-tools" | ||||||
|  |       "android-sdk-tools" | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # Gitignore additions | ||||||
|  |     modules.git.ignores = [ | ||||||
|  |       ".ccls-cache" | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # Development packages | ||||||
|  |     home.packages = with pkgs; [ | ||||||
|  |       gnumake | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # VSCode configuration | ||||||
|  |     programs.vscode = { | ||||||
|  |       extensions = with pkgs.vscode-extensions; [ | ||||||
|  |         ms-vscode.cpptools | ||||||
|  |         ms-vscode.cmake-tools | ||||||
|  |       ]; | ||||||
|  | 
 | ||||||
|  |       userSettings = { | ||||||
|  |         # "C_Cpp.clang_format_fallbackStyle" = "{ BasedOnStyle: Google, IndentWidth: 4 }"; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # Neovim configuration | ||||||
|  |     programs.nixvim = { | ||||||
|  |       plugins.lsp.servers.ccls.enable = true; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								modules/users/modules/language/js.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								modules/users/modules/language/js.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.js; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.js = { | ||||||
|  |     enable = mkEnableOption "js"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     # Development packages | ||||||
|  |     home.packages = with pkgs; [ | ||||||
|  |       nodejs | ||||||
|  |       tailwindcss | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # VSCode configuration | ||||||
|  |     programs.vscode = { | ||||||
|  |       extensions = with pkgs.vscode-extensions; [ | ||||||
|  |         bradlc.vscode-tailwindcss | ||||||
|  |       ]; | ||||||
|  | 
 | ||||||
|  |       userSettings = { }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # Neovim configuration | ||||||
|  |     programs.nixvim = { }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										39
									
								
								modules/users/modules/language/jupyter.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								modules/users/modules/language/jupyter.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.jupyter; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.jupyter = { | ||||||
|  |     enable = mkEnableOption "jupyter"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     # Development packages | ||||||
|  |     home.packages = with pkgs; [ ]; | ||||||
|  | 
 | ||||||
|  |     modules.python.extraPythonPackages = p: [ | ||||||
|  |       p.jupyter | ||||||
|  |       p.notebook | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # VSCode configuration | ||||||
|  |     programs.vscode = { | ||||||
|  |       extensions = with pkgs.vscode-extensions; [ | ||||||
|  |         ms-toolsai.jupyter | ||||||
|  |         ms-toolsai.jupyter-renderers | ||||||
|  |       ]; | ||||||
|  | 
 | ||||||
|  |       userSettings = { }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # Neovim configuration | ||||||
|  |     programs.nixvim = { }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										56
									
								
								modules/users/modules/language/python.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								modules/users/modules/language/python.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.python; | ||||||
|  |   package = pkgs.python3.withPackages cfg.extraPythonPackages; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.python = { | ||||||
|  |     enable = mkEnableOption "python"; | ||||||
|  |     extraPythonPackages = mkOption { | ||||||
|  |       type = types.functionTo (types.listOf types.package) // { | ||||||
|  |         merge = | ||||||
|  |           loc: defs: p: | ||||||
|  |           lib.concatMap (def: (def.value p)) defs; | ||||||
|  |       }; | ||||||
|  |       default = p: [ ]; | ||||||
|  |       description = "Extra Python packages to install"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     # Development packages | ||||||
|  |     home.packages = [ | ||||||
|  |       package | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # Allow unfree | ||||||
|  |     modules.unfree.allowedPackages = [ | ||||||
|  |       "vscode-extension-MS-python-vscode-pylance" | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # VSCode configuration | ||||||
|  |     programs.vscode = { | ||||||
|  |       extensions = with pkgs.vscode-extensions; [ | ||||||
|  |         ms-python.python | ||||||
|  |         ms-python.debugpy | ||||||
|  |         ms-python.vscode-pylance | ||||||
|  |       ]; | ||||||
|  | 
 | ||||||
|  |       userSettings = { | ||||||
|  |         "[python]" = { | ||||||
|  |           "editor.defaultFormatter" = "ms-python.vscode-pylance"; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # Neovim configuration | ||||||
|  |     programs.nixvim = { }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -22,6 +22,7 @@ in | |||||||
|       # cargo |       # cargo | ||||||
|       gcc |       gcc | ||||||
|       lldb |       lldb | ||||||
|  |       bacon | ||||||
|       # rust-analyzer |       # rust-analyzer | ||||||
|       # rustfmt |       # rustfmt | ||||||
|       # clippy |       # clippy | ||||||
| @ -47,7 +48,7 @@ in | |||||||
| 
 | 
 | ||||||
|     # Neovim configuration |     # Neovim configuration | ||||||
|     programs.nixvim = { |     programs.nixvim = { | ||||||
|       plugins.rust-tools = { |       plugins.rustaceanvim = { | ||||||
|         enable = true; |         enable = true; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  | |||||||
							
								
								
									
										67
									
								
								modules/users/modules/language/tex.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								modules/users/modules/language/tex.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,67 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.tex; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.tex = { | ||||||
|  |     enable = mkEnableOption "tex"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     # Development packages | ||||||
|  |     home.packages = with pkgs; [ | ||||||
|  |       (texlive.combine { | ||||||
|  |         inherit (texlive) scheme-full; | ||||||
|  |       }) | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # Pygments for minted | ||||||
|  |     modules.python.extraPythonPackages = p: [ | ||||||
|  |       p.pygments | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     # VSCode configuration | ||||||
|  |     programs.vscode = { | ||||||
|  |       extensions = with pkgs.vscode-extensions; [ jnoortheen.nix-ide ]; | ||||||
|  | 
 | ||||||
|  |       userSettings = { | ||||||
|  |         "[tex]" = { }; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # Neovim configuration | ||||||
|  |     programs.nixvim = { | ||||||
|  |       extraConfigVim = '' | ||||||
|  |         " Enforce latexmk | ||||||
|  |         let g:vimtex_compiler_method = 'latexmk' | ||||||
|  | 
 | ||||||
|  |         " Set latexmk compilation settings | ||||||
|  |         let g:vimtex_compiler_latexmk = { | ||||||
|  |           \ 'options': [ | ||||||
|  |           \   '-shell-escape', | ||||||
|  |           \   '-verbose', | ||||||
|  |           \   '-file-line-error', | ||||||
|  |           \   '-synctex=1', | ||||||
|  |           \   '-interaction=nonstopmode', | ||||||
|  |           \ ], | ||||||
|  |           \} | ||||||
|  |       ''; | ||||||
|  | 
 | ||||||
|  |       # Vimtex plugin | ||||||
|  |       plugins.vimtex = { | ||||||
|  |         enable = true; | ||||||
|  |         texlivePackage = null; | ||||||
|  |         settings = { | ||||||
|  |           view_method = "zathura"; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -136,6 +136,10 @@ in | |||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|  |       plugins.web-devicons = { | ||||||
|  |         enable = true; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|       plugins.neo-tree = { |       plugins.neo-tree = { | ||||||
|         enable = true; |         enable = true; | ||||||
| 
 | 
 | ||||||
| @ -174,13 +178,13 @@ in | |||||||
|       #  enable = true; |       #  enable = true; | ||||||
|       #}; |       #}; | ||||||
| 
 | 
 | ||||||
|       plugins.vimtex = { |       # plugins.vimtex = { | ||||||
|         enable = true; |       #   enable = true; | ||||||
|         texlivePackage = null; |       #   texlivePackage = null; | ||||||
|         settings = { |       #   settings = { | ||||||
|           view_method = "zathura"; |       #     view_method = "zathura"; | ||||||
|         }; |       #   }; | ||||||
|       }; |       # }; | ||||||
|     }; |     }; | ||||||
|     programs.neovim.defaultEditor = true; |     programs.neovim.defaultEditor = true; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -14,5 +14,9 @@ in | |||||||
|     enable = mkEnableOption "bash"; |     enable = mkEnableOption "bash"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config.programs.bash.enable = cfg.enable; |   config.programs.bash = { | ||||||
|  |     enable = cfg.enable; | ||||||
|  | 
 | ||||||
|  |     shellAliases = config.modules.shell.aliases; | ||||||
|  |   }; | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								modules/users/modules/shell/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								modules/users/modules/shell/default.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |   pkgs, | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | { | ||||||
|  |   options.modules.shell = { | ||||||
|  |     aliases = mkOption { | ||||||
|  |       type = types.attrsOf types.str; | ||||||
|  |       default = { | ||||||
|  |         "..." = "cd ../.."; | ||||||
|  |       }; | ||||||
|  |       description = "Shell aliases"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -36,6 +36,8 @@ in | |||||||
|     programs.fish = { |     programs.fish = { | ||||||
|       enable = true; |       enable = true; | ||||||
| 
 | 
 | ||||||
|  |       shellAliases = config.modules.shell.aliases; | ||||||
|  | 
 | ||||||
|       plugins = [ |       plugins = [ | ||||||
|         (mkIf cfg.plugins.done { |         (mkIf cfg.plugins.done { | ||||||
|           name = "done"; |           name = "done"; | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								modules/users/modules/spotify/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								modules/users/modules/spotify/default.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.spotify; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.spotify.enable = mkEnableOption "spotify"; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     modules.unfree.allowedPackages = [ | ||||||
|  |       "spotify" | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     home.packages = with pkgs; [ | ||||||
|  |       spotify | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -10,5 +10,13 @@ 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 { | ||||||
|  |     modules.unfree.allowedPackages = [ | ||||||
|  |       "steam" | ||||||
|  |       "steam-original" | ||||||
|  |       "steam-unwrapped" | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     programs.steam.enable = true; | ||||||
|  |   }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -9,14 +9,6 @@ with lib; | |||||||
| let | let | ||||||
|   cfg = config.theming; |   cfg = config.theming; | ||||||
| 
 | 
 | ||||||
|   # Stylix |  | ||||||
|   stylix = pkgs.fetchFromGitHub { |  | ||||||
|     owner = "danth"; |  | ||||||
|     repo = "stylix"; |  | ||||||
|     rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116"; |  | ||||||
|     sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Font module type |   # Font module type | ||||||
|   fontModule = types.submodule { |   fontModule = types.submodule { | ||||||
|     options = { |     options = { | ||||||
| @ -311,6 +303,9 @@ in | |||||||
|       enable = true; |       enable = true; | ||||||
|       nix-direnv.enable = true; |       nix-direnv.enable = true; | ||||||
|     }; |     }; | ||||||
|  |     modules.git.ignores = [ | ||||||
|  |       ".direnv" | ||||||
|  |     ]; | ||||||
| 
 | 
 | ||||||
|     # TODO: Make cursors configurable using modules. |     # TODO: Make cursors configurable using modules. | ||||||
|     home.pointerCursor = { |     home.pointerCursor = { | ||||||
|  | |||||||
| @ -28,6 +28,7 @@ in | |||||||
|       "vscode" |       "vscode" | ||||||
|       "vscode-extension-github-copilot" |       "vscode-extension-github-copilot" | ||||||
|       "vscode-extension-github-copilot-chat" |       "vscode-extension-github-copilot-chat" | ||||||
|  |       "vscode-extension-ms-vsliveshare-vsliveshare" | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     theming.fonts.extraFonts = [ cfg.codeFont ]; |     theming.fonts.extraFonts = [ cfg.codeFont ]; | ||||||
| @ -44,6 +45,9 @@ in | |||||||
|         gruntfuggly.todo-tree |         gruntfuggly.todo-tree | ||||||
|         github.copilot |         github.copilot | ||||||
|         github.copilot-chat |         github.copilot-chat | ||||||
|  |         tomoki1207.pdf | ||||||
|  |         ms-vsliveshare.vsliveshare | ||||||
|  |         ms-azuretools.vscode-docker | ||||||
|       ]; |       ]; | ||||||
| 
 | 
 | ||||||
|       userSettings = { |       userSettings = { | ||||||
| @ -61,6 +65,10 @@ in | |||||||
| 
 | 
 | ||||||
|         # Layout |         # Layout | ||||||
|         "window.menuBarVisibility" = "hidden"; |         "window.menuBarVisibility" = "hidden"; | ||||||
|  | 
 | ||||||
|  |         # Git settings | ||||||
|  |         "git.autofetch" = true; | ||||||
|  |         "git.enableSmartCommit" = false; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ | |||||||
| 
 | 
 | ||||||
| let | let | ||||||
|   cfg = config.modules.zathura; |   cfg = config.modules.zathura; | ||||||
|  |   colors = config.theming.colors; | ||||||
| in | in | ||||||
| { | { | ||||||
|   options.modules.zathura.enable = lib.mkEnableOption "zathura"; |   options.modules.zathura.enable = lib.mkEnableOption "zathura"; | ||||||
| @ -17,6 +18,18 @@ in | |||||||
| 
 | 
 | ||||||
|       options = { |       options = { | ||||||
|         guioptions = "none"; |         guioptions = "none"; | ||||||
|  |         recolor = true; | ||||||
|  |         recolor-keephue = false; | ||||||
|  |         recolor-darkcolor = lib.mkForce "#${colors.accent}"; | ||||||
|  |         recolor-lightcolor = lib.mkForce "#${colors.bg}"; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     xdg.mimeApps = { | ||||||
|  |       enable = true; | ||||||
|  | 
 | ||||||
|  |       defaultApplications = { | ||||||
|  |         "application/pdf" = "zathura"; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | |||||||
							
								
								
									
										59
									
								
								pkgs/custom/jellyfin-tui.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								pkgs/custom/jellyfin-tui.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | |||||||
|  | { | ||||||
|  |   fetchFromGitHub, | ||||||
|  |   lib, | ||||||
|  |   linux-pam, | ||||||
|  |   rustPlatform, | ||||||
|  |   testers, | ||||||
|  |   lemurs, | ||||||
|  |   pkgs, | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | rustPlatform.buildRustPackage rec { | ||||||
|  |   pname = "jellyfin-tui"; | ||||||
|  |   version = "1.0.1"; | ||||||
|  | 
 | ||||||
|  |   src = fetchFromGitHub { | ||||||
|  |     owner = "dhonus"; | ||||||
|  |     repo = "jellyfin-tui"; | ||||||
|  |     rev = "v${version}"; | ||||||
|  |     hash = "sha256-jHjTckdyPMJO1INF1AdJvvWTJ0ZJJGOxkBc0YZx9HWI="; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   cargoHash = "sha256-H6JTupGh1ec6/RIkoAPMl2agNSbF9B5CuJlxDNEwDc4="; | ||||||
|  | 
 | ||||||
|  |   buildInputs = with pkgs; [ | ||||||
|  |     mpv | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   nativeBuildInputs = with pkgs; [ | ||||||
|  |     pkg-config | ||||||
|  |     openssl | ||||||
|  |     openssl.dev | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   desktopItems = | ||||||
|  |     let | ||||||
|  |       desktopEntry = pkgs.makeDesktopItem { | ||||||
|  |         name = "siyuan"; | ||||||
|  |         desktopName = "SiYuan"; | ||||||
|  |         comment = "Refactor your thinking"; | ||||||
|  |         terminal = true; | ||||||
|  |         exec = "jellyfin-tui"; | ||||||
|  |       }; | ||||||
|  |     in | ||||||
|  |     [ | ||||||
|  |       desktopEntry | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |   PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; | ||||||
|  | 
 | ||||||
|  |   meta = with lib; { | ||||||
|  |     description = "Jellyfin TUI music client written in Rust"; | ||||||
|  |     homepage = "https://github.com/dhonus/jellyfin-tui"; | ||||||
|  |     license = with licenses; [ | ||||||
|  |       gpl3 | ||||||
|  |     ]; | ||||||
|  |     maintainers = with maintainers; [ ]; | ||||||
|  |     mainProgram = "jellyfin-tui"; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -1,15 +1,18 @@ | |||||||
| { | { | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| 
 | 
 | ||||||
| with lib; |  | ||||||
| { | { | ||||||
|   nixpkgs.config.packageOverrides = pkgs: rec { |   nixpkgs.config = { | ||||||
|  |     android_sdk.accept_license = true; | ||||||
|  |     packageOverrides = pkgs: { | ||||||
|  |       dina-vector = pkgs.callPackage ./fonts/dina-vector.nix { }; | ||||||
|       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 { }; | ||||||
|  |       temp-quickgui = pkgs.callPackage ./temp/quickgui.nix { }; | ||||||
|  |       # qutebrowser = pkgs.callPackage ./fixes/qutebrowser/default.nix { }; | ||||||
|  |       jellyfin-tui = pkgs.callPackage ./custom/jellyfin-tui.nix { }; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										167
									
								
								pkgs/fixes/qutebrowser/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								pkgs/fixes/qutebrowser/default.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,167 @@ | |||||||
|  | { | ||||||
|  |   pkgs, | ||||||
|  |   stdenv, | ||||||
|  |   lib, | ||||||
|  |   fetchurl, | ||||||
|  |   fetchzip, | ||||||
|  |   python3, | ||||||
|  |   glib-networking, | ||||||
|  |   asciidoc, | ||||||
|  |   docbook_xml_dtd_45, | ||||||
|  |   docbook_xsl, | ||||||
|  |   libxml2, | ||||||
|  |   libxslt, | ||||||
|  |   withPdfReader ? true, | ||||||
|  |   pipewireSupport ? stdenv.hostPlatform.isLinux, | ||||||
|  |   pipewire, | ||||||
|  |   enableWideVine ? false, | ||||||
|  |   widevine-cdm, | ||||||
|  |   # can cause issues on some graphics chips | ||||||
|  |   enableVulkan ? false, | ||||||
|  |   vulkan-loader, | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   # Load in Qt packages. | ||||||
|  |   qtbase = pkgs.kdePackages.qtbase; | ||||||
|  |   qtwebengine = pkgs.kdePackages.qtwebengine; | ||||||
|  |   qtwayland = pkgs.kdePackages.qtwayland; | ||||||
|  |   wrapQtAppsHook = pkgs.kdePackages.wrapQtAppsHook; | ||||||
|  | 
 | ||||||
|  |   isQt6 = lib.versions.major qtbase.version == "6"; | ||||||
|  |   pdfjs = | ||||||
|  |     let | ||||||
|  |       version = "4.2.67"; | ||||||
|  |     in | ||||||
|  |     fetchzip { | ||||||
|  |       url = "https://github.com/mozilla/pdf.js/releases/download/v${version}/pdfjs-${version}-dist.zip"; | ||||||
|  |       hash = "sha256-7kfT3+ZwoGqZ5OwkO9h3DIuBFd0v8fRlcufxoBdcy8c="; | ||||||
|  |       stripRoot = false; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |   version = "3.2.1"; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | python3.pkgs.buildPythonApplication { | ||||||
|  |   pname = "qutebrowser" + lib.optionalString (!isQt6) "-qt5"; | ||||||
|  |   inherit version; | ||||||
|  |   src = fetchurl { | ||||||
|  |     url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/qutebrowser-${version}.tar.gz"; | ||||||
|  |     hash = "sha256-AqevKmxds42HsiWwuEEsgNmDgzXzLQ6KOPbX+804iX0="; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   # Needs tox | ||||||
|  |   doCheck = false; | ||||||
|  | 
 | ||||||
|  |   buildInputs = | ||||||
|  |     [ | ||||||
|  |       qtbase | ||||||
|  |       glib-networking | ||||||
|  |     ] | ||||||
|  |     ++ lib.optionals stdenv.hostPlatform.isLinux [ | ||||||
|  |       qtwayland | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |   nativeBuildInputs = [ | ||||||
|  |     wrapQtAppsHook | ||||||
|  |     asciidoc | ||||||
|  |     docbook_xml_dtd_45 | ||||||
|  |     docbook_xsl | ||||||
|  |     libxml2 | ||||||
|  |     libxslt | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   dependencies = with python3.pkgs; [ | ||||||
|  |     colorama | ||||||
|  |     pyyaml | ||||||
|  |     (if isQt6 then pyqt6-webengine else pyqtwebengine) | ||||||
|  |     jinja2 | ||||||
|  |     pygments | ||||||
|  |     # scripts and userscripts libs | ||||||
|  |     tldextract | ||||||
|  |     beautifulsoup4 | ||||||
|  |     readability-lxml | ||||||
|  |     pykeepass | ||||||
|  |     stem | ||||||
|  |     pynacl | ||||||
|  |     # extensive ad blocking | ||||||
|  |     adblock | ||||||
|  |     # for the qute-bitwarden user script to be able to copy the TOTP token to clipboard | ||||||
|  |     pyperclip | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   patches = [ | ||||||
|  |     ./fix-restart.patch | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   dontWrapQtApps = true; | ||||||
|  | 
 | ||||||
|  |   postPatch = | ||||||
|  |     '' | ||||||
|  |       substituteInPlace qutebrowser/misc/quitter.py --subst-var-by qutebrowser "$out/bin/qutebrowser" | ||||||
|  | 
 | ||||||
|  |       sed -i "s,/usr,$out,g" qutebrowser/utils/standarddir.py | ||||||
|  |     '' | ||||||
|  |     + lib.optionalString withPdfReader '' | ||||||
|  |       sed -i "s,/usr/share/pdf.js,${pdfjs},g" qutebrowser/browser/pdfjs.py | ||||||
|  |     ''; | ||||||
|  | 
 | ||||||
|  |   installPhase = '' | ||||||
|  |     runHook preInstall | ||||||
|  | 
 | ||||||
|  |     make -f misc/Makefile \ | ||||||
|  |       PYTHON=${(python3.pythonOnBuildForHost.withPackages (ps: with ps; [ setuptools ])).interpreter} \ | ||||||
|  |       PREFIX=. \ | ||||||
|  |       DESTDIR="$out" \ | ||||||
|  |       DATAROOTDIR=/share \ | ||||||
|  |       install | ||||||
|  | 
 | ||||||
|  |     runHook postInstall | ||||||
|  |   ''; | ||||||
|  | 
 | ||||||
|  |   postInstall = '' | ||||||
|  |     # Patch python scripts | ||||||
|  |     buildPythonPath "$out $propagatedBuildInputs" | ||||||
|  |     scripts=$(grep -rl python "$out"/share/qutebrowser/{user,}scripts/) | ||||||
|  |     for i in $scripts; do | ||||||
|  |       patchPythonScript "$i" | ||||||
|  |     done | ||||||
|  |   ''; | ||||||
|  | 
 | ||||||
|  |   preFixup = | ||||||
|  |     let | ||||||
|  |       libPath = lib.makeLibraryPath [ pipewire ]; | ||||||
|  |     in | ||||||
|  |     '' | ||||||
|  |       makeWrapperArgs+=( | ||||||
|  |         # Force the app to use QT_PLUGIN_PATH values from wrapper | ||||||
|  |         --unset QT_PLUGIN_PATH | ||||||
|  |         "''${qtWrapperArgs[@]}" | ||||||
|  |         # avoid persistant warning on starup | ||||||
|  |         --set QT_STYLE_OVERRIDE Fusion | ||||||
|  |         ${lib.optionalString pipewireSupport ''--prefix LD_LIBRARY_PATH : ${libPath}''} | ||||||
|  |         ${lib.optionalString (enableVulkan) '' | ||||||
|  |           --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ vulkan-loader ]} | ||||||
|  |           --set-default QSG_RHI_BACKEND vulkan | ||||||
|  |         ''} | ||||||
|  |         ${lib.optionalString enableWideVine ''--add-flags "--qt-flag widevine-path=${widevine-cdm}/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so"''} | ||||||
|  |         --set QTWEBENGINE_RESOURCES_PATH "${qtwebengine}/resources" | ||||||
|  |       ) | ||||||
|  |     ''; | ||||||
|  | 
 | ||||||
|  |   meta = with lib; { | ||||||
|  |     homepage = "https://github.com/qutebrowser/qutebrowser"; | ||||||
|  |     changelog = "https://github.com/qutebrowser/qutebrowser/blob/v${version}/doc/changelog.asciidoc"; | ||||||
|  |     description = "Keyboard-focused browser with a minimal GUI"; | ||||||
|  |     license = licenses.gpl3Plus; | ||||||
|  |     mainProgram = "qutebrowser"; | ||||||
|  |     platforms = if enableWideVine then [ "x86_64-linux" ] else qtwebengine.meta.platforms; | ||||||
|  |     maintainers = with maintainers; [ | ||||||
|  |       jagajaga | ||||||
|  |       rnhmjoj | ||||||
|  |       ebzzry | ||||||
|  |       dotlambda | ||||||
|  |       nrdxp | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										19
									
								
								pkgs/fixes/qutebrowser/fix-restart.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								pkgs/fixes/qutebrowser/fix-restart.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | diff --git a/quitter.py b/quitter.py
 | ||||||
|  | index a42b9d0..f544ccb 100644
 | ||||||
|  | --- a/qutebrowser/misc/quitter.py
 | ||||||
|  | +++ b/qutebrowser/misc/quitter.py
 | ||||||
|  | @@ -112,13 +112,7 @@ class Quitter(QObject):
 | ||||||
|  |          Return: | ||||||
|  |              The commandline as a list of strings. | ||||||
|  |          """ | ||||||
|  | -        if os.path.basename(sys.argv[0]) == 'qutebrowser':
 | ||||||
|  | -            # Launched via launcher script
 | ||||||
|  | -            args = [sys.argv[0]]
 | ||||||
|  | -        elif hasattr(sys, 'frozen'):
 | ||||||
|  | -            args = [sys.executable]
 | ||||||
|  | -        else:
 | ||||||
|  | -            args = [sys.executable, '-m', 'qutebrowser']
 | ||||||
|  | +        args = ['@qutebrowser@']
 | ||||||
|  |   | ||||||
|  |          # Add all open pages so they get reopened. | ||||||
|  |          page_args = []  # type: typing.MutableSequence[str] | ||||||
							
								
								
									
										32
									
								
								pkgs/fonts/dina-vector.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								pkgs/fonts/dina-vector.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   config, | ||||||
|  |   pkgs, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | pkgs.stdenv.mkDerivation { | ||||||
|  |   pname = "dina-font"; | ||||||
|  |   version = "1.0.0"; | ||||||
|  | 
 | ||||||
|  |   # src = pkgs.fetchurl { | ||||||
|  |   #   url = "mirror://sourceforge/wqy/${pname}-${version}.tar.gz"; | ||||||
|  |   #   # hash = "sha256-r2Vf7ftJCqu7jOc2AqCKaoR/r8eNw2P/OQGqbDOEyl0="; | ||||||
|  |   #   hash = "sha256-0uvwkRUbvJ0remTnlP8dElRjaBVd6iukNYBTE/CTO7s="; | ||||||
|  |   # }; | ||||||
|  | 
 | ||||||
|  |   unpackPhase = "true"; | ||||||
|  | 
 | ||||||
|  |   buildInputs = [ | ||||||
|  |     pkgs.fontforge | ||||||
|  |     pkgs.dina-font | ||||||
|  |     pkgs.wqy-bitmapsong | ||||||
|  |     pkgs.tree | ||||||
|  |   ]; | ||||||
|  |   buildPhase = '' | ||||||
|  |     tree > debug.txt | ||||||
|  |   ''; | ||||||
|  |   installPhase = '' | ||||||
|  |     install -Dm644 $out/debug.txt | ||||||
|  |   ''; | ||||||
|  | } | ||||||
| @ -11,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-r2Vf7ftJCqu7jOc2AqCKaoR/r8eNw2P/OQGqbDOEyl0="; |     # hash = "sha256-r2Vf7ftJCqu7jOc2AqCKaoR/r8eNw2P/OQGqbDOEyl0="; | ||||||
|     hash = "sha256-0uvwkRUbvJ0remTnlP8dElRjaBVd6iukNYBTE/CTO7s="; |     hash = "sha256-0uvwkRUbvJ0remTnlP8dElRjaBVd6iukNYBTE/CTO7s="; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										1189
									
								
								pkgs/temp/pubspec.lock.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1189
									
								
								pkgs/temp/pubspec.lock.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										70
									
								
								pkgs/temp/quickgui.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								pkgs/temp/quickgui.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,70 @@ | |||||||
|  | { | ||||||
|  |   fetchFromGitHub, | ||||||
|  |   makeDesktopItem, | ||||||
|  |   copyDesktopItems, | ||||||
|  |   lib, | ||||||
|  |   flutter, | ||||||
|  |   quickemu, | ||||||
|  |   zenity, | ||||||
|  | }: | ||||||
|  | flutter.buildFlutterApplication rec { | ||||||
|  |   pname = "quickgui"; | ||||||
|  |   version = "1.2.10"; | ||||||
|  |   src = fetchFromGitHub { | ||||||
|  |     owner = "quickemu-project"; | ||||||
|  |     repo = "quickgui"; | ||||||
|  |     rev = version; | ||||||
|  |     hash = "sha256-M2Qy66RqsjXg7ZpHwaXCN8qXRIsisnIyaENx3KqmUfQ="; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   pubspecLock = lib.importJSON ./pubspec.lock.json; | ||||||
|  | 
 | ||||||
|  |   gitHashes = { | ||||||
|  |     window_size = "sha256-XelNtp7tpZ91QCEcvewVphNUtgQX7xrp5QP0oFo6DgM="; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   extraWrapProgramArgs = "--prefix PATH : ${ | ||||||
|  |     lib.makeBinPath [ | ||||||
|  |       quickemu | ||||||
|  |       zenity | ||||||
|  |     ] | ||||||
|  |   }"; | ||||||
|  | 
 | ||||||
|  |   nativeBuildInputs = [ | ||||||
|  |     copyDesktopItems | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   postFixup = '' | ||||||
|  |     for SIZE in 16 32 48 64 128 256 512; do | ||||||
|  |       mkdir -p $out/share/icons/hicolor/$SIZEx$SIZE/apps/ | ||||||
|  |       cp -av assets/resources/quickgui_$SIZE.png $out/share/icons/hicolor/$SIZEx$SIZE/apps/quickgui.png | ||||||
|  |     done | ||||||
|  |   ''; | ||||||
|  | 
 | ||||||
|  |   desktopItems = [ | ||||||
|  |     (makeDesktopItem { | ||||||
|  |       name = "quickgui"; | ||||||
|  |       exec = "quickgui"; | ||||||
|  |       icon = "quickgui"; | ||||||
|  |       desktopName = "Quickgui"; | ||||||
|  |       comment = "An elegant virtual machine manager for the desktop"; | ||||||
|  |       categories = [ | ||||||
|  |         "Development" | ||||||
|  |         "System" | ||||||
|  |       ]; | ||||||
|  |     }) | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   meta = with lib; { | ||||||
|  |     description = "Elegant virtual machine manager for the desktop"; | ||||||
|  |     homepage = "https://github.com/quickemu-project/quickgui"; | ||||||
|  |     changelog = "https://github.com/quickemu-project/quickgui/releases/"; | ||||||
|  |     license = licenses.mit; | ||||||
|  |     maintainers = with maintainers; [ | ||||||
|  |       flexiondotorg | ||||||
|  |       heyimnova | ||||||
|  |     ]; | ||||||
|  |     platforms = [ "x86_64-linux" ]; | ||||||
|  |     mainProgram = "quickgui"; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										100
									
								
								users/jan.nix
									
									
									
									
									
								
							
							
						
						
									
										100
									
								
								users/jan.nix
									
									
									
									
									
								
							| @ -8,43 +8,97 @@ | |||||||
|     home.stateVersion = "24.05"; |     home.stateVersion = "24.05"; | ||||||
| 
 | 
 | ||||||
|     # TODO: Move into modules |     # TODO: Move into modules | ||||||
|     home.packages = with pkgs; [ libreoffice-fresh ]; |     home.packages = with pkgs; [ | ||||||
|  |       libreoffice-still | ||||||
|  |       remmina | ||||||
|  |       # dina-vector | ||||||
|  |       android-studio | ||||||
|  |       docker | ||||||
|  |       docker-compose | ||||||
|  |       jellyfin-tui | ||||||
|  |       pinentry | ||||||
|  |       thunderbird | ||||||
|  |       signal-desktop | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     programs.gpg = { | ||||||
|  |       enable = true; | ||||||
|  |       mutableKeys = true; | ||||||
|  |       mutableTrust = true; | ||||||
|  |     }; | ||||||
|  |     services.gpg-agent = { | ||||||
|  |       enable = true; | ||||||
|  |       enableSshSupport = true; | ||||||
|  |     }; | ||||||
| 
 | 
 | ||||||
|     # Enabled modules |     # Enabled modules | ||||||
|     modules = { |     modules = { | ||||||
|  |       # Theming | ||||||
|  |       theming.enable = true; | ||||||
|  | 
 | ||||||
|       # Window manager |       # Window manager | ||||||
|       river.enable = true; |       river.enable = true; | ||||||
|       waylock.enable = true; |       waylock.enable = true; | ||||||
|       waybar.enable = true; |       waybar.enable = true; | ||||||
|       glpaper.enable = true; |       glpaper.enable = false; | ||||||
| 
 | 
 | ||||||
|       # Theming |       # Desktop environment | ||||||
|       theming.enable = true; |  | ||||||
| 
 |  | ||||||
|       # Programs |  | ||||||
|       feishin.enable = true; |  | ||||||
|       firefox.enable = true; |  | ||||||
|       foot.enable = true; |  | ||||||
|       mako.enable = true; |       mako.enable = true; | ||||||
|       vscode.enable = true; |       foot.enable = true; | ||||||
|       zathura.enable = true; | 
 | ||||||
|       fish.enable = true; |       # Communication | ||||||
|       whatsapp.enable = true; |       whatsapp.enable = true; | ||||||
|       winbox.enable = true; |  | ||||||
|       discord.enable = true; |       discord.enable = true; | ||||||
|       qutebrowser = { | 
 | ||||||
|  |       # Browser | ||||||
|  |       firefox = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         default = true; |         default = true; | ||||||
|       }; |       }; | ||||||
|       neovim.enable = true; |       qutebrowser = { | ||||||
|       rofi-rbw.enable = true; |         enable = true; | ||||||
|       obsidian.enable = true; |         default = false; | ||||||
|       bluetuith.enable = true; |       }; | ||||||
| 
 | 
 | ||||||
|       # Programming languages |       # Gaming | ||||||
|       haskell.enable = true; |       steam.enable = true; | ||||||
|  | 
 | ||||||
|  |       # Media | ||||||
|  |       spotify.enable = true; | ||||||
|  |       feishin.enable = true; | ||||||
|  | 
 | ||||||
|  |       # Tools | ||||||
|  |       rofi-rbw.enable = true; | ||||||
|  |       git = { | ||||||
|  |         enable = true; | ||||||
|  |         user = "Jan-Bulthuis"; | ||||||
|  |         email = "git@bulthuis.dev"; | ||||||
|  |       }; | ||||||
|  |       btop.enable = true; | ||||||
|  |       fish.enable = true; | ||||||
|  |       bluetuith.enable = false; | ||||||
|  |       winbox.enable = true; | ||||||
|  |       obsidian.enable = true; | ||||||
|  |       zathura.enable = true; | ||||||
|  | 
 | ||||||
|  |       # Development | ||||||
|  |       neovim.enable = true; | ||||||
|  |       vscode.enable = true; | ||||||
|  | 
 | ||||||
|  |       # Languages | ||||||
|  |       haskell.enable = false; | ||||||
|  |       js.enable = true; | ||||||
|       nix.enable = true; |       nix.enable = true; | ||||||
|       rust.enable = true; |       rust.enable = true; | ||||||
|  |       python.enable = true; | ||||||
|  |       cpp.enable = true; | ||||||
|  |       tex.enable = true; | ||||||
|  |       jupyter.enable = true; | ||||||
|  |       python.extraPythonPackages = p: [ | ||||||
|  |         p.scikit-learn | ||||||
|  |         p.numpy | ||||||
|  |         p.matplotlib | ||||||
|  |       ]; | ||||||
| 
 | 
 | ||||||
|       # Enable unfree |       # Enable unfree | ||||||
|       unfree.enable = true; |       unfree.enable = true; | ||||||
| @ -60,7 +114,7 @@ | |||||||
|         fonts.serif = fontpkgs."DejaVu Serif"; |         fonts.serif = fontpkgs."DejaVu Serif"; | ||||||
|         fonts.sansSerif = fontpkgs."DejaVu Sans"; |         fonts.sansSerif = fontpkgs."DejaVu Sans"; | ||||||
|         fonts.monospace = fontpkgs."Dina"; |         fonts.monospace = fontpkgs."Dina"; | ||||||
|         fonts.emoji = fontpkgs."Dina"; |         fonts.emoji = fontpkgs."Noto Color Emoji"; | ||||||
|         fonts.extraFonts = [ ]; |         fonts.extraFonts = [ ]; | ||||||
| 
 | 
 | ||||||
|         # Color scheme |         # Color scheme | ||||||
| @ -69,10 +123,10 @@ | |||||||
|           darkMode = false; |           darkMode = false; | ||||||
|         }; |         }; | ||||||
|         themes.catppuccin = { |         themes.catppuccin = { | ||||||
|           enable = false; |           enable = true; | ||||||
|           flavor = "mocha"; |           flavor = "mocha"; | ||||||
|         }; |         }; | ||||||
|         themes.sakura.enable = true; |         themes.sakura.enable = false; | ||||||
| 
 | 
 | ||||||
|         # TODO: Remove |         # TODO: Remove | ||||||
|         # Nice themes: |         # Nice themes: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user