Compare commits

...

26 Commits

Author SHA1 Message Date
Jan-Bulthuis 73f957e81d Update personal setup 2024-12-02 00:58:01 +01:00
Jan-Bulthuis 7e790a58e5 Updated module imports 2024-12-02 00:57:48 +01:00
Jan-Bulthuis d40cab3aba Added package for Jellyfin-tui, attempt to fix qutebrowser, attempt at working quickgui 2024-12-02 00:57:31 +01:00
Jan-Bulthuis f8ba5af5ac Set Zathura settings 2024-12-02 00:56:31 +01:00
Jan-Bulthuis b2c15706c0 Update VSCode settings and extensions 2024-12-02 00:56:19 +01:00
Jan-Bulthuis bb3deb5f31 Removed stylix import from theming module 2024-12-02 00:55:42 +01:00
Jan-Bulthuis ac628036a9 Added steam 2024-12-02 00:54:51 +01:00
Jan-Bulthuis 28eb24c658 Added spotify 2024-12-02 00:54:38 +01:00
Jan-Bulthuis 891fa64466 Added shell alias configuration 2024-12-02 00:54:05 +01:00
Jan-Bulthuis 3b071a8118 Enabled web-devicons in neovim 2024-12-02 00:53:41 +01:00
Jan-Bulthuis d5c9303003 Added LaTeX language support 2024-12-02 00:53:29 +01:00
Jan-Bulthuis 5db7d1f93f Added Jupyter Notebook support 2024-12-02 00:53:17 +01:00
Jan-Bulthuis 78766dfaa8 Added bacon to rust 2024-12-02 00:53:05 +01:00
Jan-Bulthuis 3374b35053 Added Python language support 2024-12-02 00:52:55 +01:00
Jan-Bulthuis 34bba528b3 Added JS language support 2024-12-02 00:52:41 +01:00
Jan-Bulthuis a91fb54e24 Added C++ language 2024-12-02 00:52:31 +01:00
Jan-Bulthuis e24066e577 Added module for git 2024-12-02 00:52:22 +01:00
Jan-Bulthuis 52c7212155 Fix fontconfig 2024-12-02 00:52:10 +01:00
Jan-Bulthuis dc77d948e6 Update river background color after rebuild 2024-12-02 00:52:01 +01:00
Jan-Bulthuis 5f6f793979 Restart waybar after rebuild 2024-12-02 00:51:45 +01:00
Jan-Bulthuis 74e5398ccf Added base DE utilities, added reload script to run after rebuild 2024-12-02 00:51:19 +01:00
Jan-Bulthuis 208eec466e Added btop 2024-12-02 00:50:43 +01:00
Jan-Bulthuis 964dff4d8c Removed pykeepass fix, set qutebrowser max history size 2024-12-02 00:50:34 +01:00
Jan-Bulthuis 48cb8e42e9 Fixed NUR version 2024-12-02 00:49:55 +01:00
Jan-Bulthuis ba7c0b1d2a Fixed nixvim, stylix version, add sudo users to the docker group 2024-12-02 00:49:41 +01:00
Jan-Bulthuis afcf41fbb5 Added some base utilities, fixed DNS 2024-12-02 00:49:06 +01:00
36 changed files with 2494 additions and 89 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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 = {

View File

@ -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}")

View 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";
};
};
}

View File

@ -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

View File

@ -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 = {

View File

@ -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;

View File

@ -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 = (

View File

@ -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}

View 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;
};
};
}

View 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;
};
};
}

View 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 = { };
};
}

View 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 = { };
};
}

View 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 = { };
};
}

View File

@ -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;
}; };
}; };

View 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";
};
};
};
};
}

View File

@ -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;
}; };

View File

@ -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;
};
} }

View 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";
};
};
}

View File

@ -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";

View 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
];
};
}

View File

@ -10,4 +10,4 @@ with lib;
options.modules.steam = { options.modules.steam = {
enable = mkEnableOption "steam"; enable = mkEnableOption "steam";
}; };
} }

View File

@ -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;
};
} }

View File

@ -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 = {

View File

@ -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;
}; };
}; };
}; };

View File

@ -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";
}; };
}; };
}; };

View 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";
};
}

View File

@ -1,15 +1,18 @@
{ {
lib,
config,
pkgs,
... ...
}: }:
with lib;
{ {
nixpkgs.config.packageOverrides = pkgs: rec { nixpkgs.config = {
wqy-zenhei = pkgs.callPackage ./fonts/wqy-zenhei.nix { }; android_sdk.accept_license = true;
wqy-microhei = pkgs.callPackage ./fonts/wqy-microhei.nix { }; packageOverrides = pkgs: {
wqy-bitmapsong = pkgs.callPackage ./fonts/wqy-bitmapsong.nix { }; dina-vector = pkgs.callPackage ./fonts/dina-vector.nix { };
wqy-zenhei = pkgs.callPackage ./fonts/wqy-zenhei.nix { };
wqy-microhei = pkgs.callPackage ./fonts/wqy-microhei.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 { };
};
}; };
} }

View 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
];
};
}

View 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]

View 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
'';
}

View File

@ -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

File diff suppressed because it is too large Load Diff

70
pkgs/temp/quickgui.nix Normal file
View 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";
};
}

View File

@ -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: