Compare commits

..

No commits in common. "73f957e81dbd17f41d739514ee88e86b7ca61819" and "3b41645cdfbbeb4c6e3e151be47e2fd0e83e327a" have entirely different histories.

36 changed files with 88 additions and 2493 deletions

View File

@ -22,19 +22,8 @@ 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;
@ -46,11 +35,10 @@ 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,15 +9,9 @@ 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=";
} }
); );
@ -26,8 +20,8 @@ let
pkgs.fetchFromGitHub { pkgs.fetchFromGitHub {
owner = "danth"; owner = "danth";
repo = "stylix"; repo = "stylix";
rev = "master"; rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116";
sha256 = "sha256-8uTKUHkaU980J5kRnLYrdwmjZYB88eBGUk1oVgIUHFE="; sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5";
} }
); );
@ -90,10 +84,7 @@ in
users.users = attrsets.concatMapAttrs (name: value: { users.users = attrsets.concatMapAttrs (name: value: {
${name} = { ${name} = {
isNormalUser = true; isNormalUser = true;
extraGroups = mkIf value.sudo [ extraGroups = mkIf value.sudo [ "wheel" ];
"wheel"
"docker"
];
}; };
}) config.machine.users; }) config.machine.users;

View File

@ -21,10 +21,9 @@ 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 { nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
url = "https://github.com/nix-community/NUR/archive/master.tar.gz"; inherit pkgs;
sha256 = "0jjfvr325imrwg9ic8xha5y38jcp1s0z4pzwhvi0570aigzibbz4"; };
}) { inherit pkgs; };
}; };
programs.firefox = { programs.firefox = {

View File

@ -20,27 +20,26 @@ 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

@ -1,368 +0,0 @@
{
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,4 +1,7 @@
{ {
input,
pkgs,
config,
... ...
}: }:
@ -7,29 +10,20 @@
# 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,13 +23,6 @@ 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,11 +25,6 @@ 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 = {
@ -39,22 +34,13 @@ in
home.packages = optionals cfg.wayland ( home.packages = optionals cfg.wayland (
with pkgs; with pkgs;
[ [
wl-clipboard pkgs.wl-clipboard
wtype pkgs.wtype
grim pkgs.grim
slurp pkgs.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,10 +34,6 @@ 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" ] ''
@ -108,7 +104,7 @@ in
spawn = [ spawn = [
"\"${layout} ${layoutOptions}\"" "\"${layout} ${layoutOptions}\""
"waybar" # TODO: Decouple "waybar"
"\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\"" "\"glpaper eDP-1 ${toString config.modules.glpaper.shader}\""
]; ];
map = ( map = (

View File

@ -44,16 +44,9 @@ 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

@ -1,53 +0,0 @@
{
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

@ -1,54 +0,0 @@
{
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

@ -1,36 +0,0 @@
{
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

@ -1,39 +0,0 @@
{
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

@ -1,56 +0,0 @@
{
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,7 +22,6 @@ in
# cargo # cargo
gcc gcc
lldb lldb
bacon
# rust-analyzer # rust-analyzer
# rustfmt # rustfmt
# clippy # clippy
@ -48,7 +47,7 @@ in
# Neovim configuration # Neovim configuration
programs.nixvim = { programs.nixvim = {
plugins.rustaceanvim = { plugins.rust-tools = {
enable = true; enable = true;
}; };
}; };

View File

@ -1,67 +0,0 @@
{
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,10 +136,6 @@ in
}; };
}; };
plugins.web-devicons = {
enable = true;
};
plugins.neo-tree = { plugins.neo-tree = {
enable = true; enable = true;
@ -178,13 +174,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,9 +14,5 @@ in
enable = mkEnableOption "bash"; enable = mkEnableOption "bash";
}; };
config.programs.bash = { config.programs.bash.enable = cfg.enable;
enable = cfg.enable;
shellAliases = config.modules.shell.aliases;
};
} }

View File

@ -1,19 +0,0 @@
{
pkgs,
lib,
config,
...
}:
with lib;
{
options.modules.shell = {
aliases = mkOption {
type = types.attrsOf types.str;
default = {
"..." = "cd ../..";
};
description = "Shell aliases";
};
};
}

View File

@ -36,8 +36,6 @@ 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

@ -1,24 +0,0 @@
{
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,13 +10,5 @@ let
enabled = any (user: user.modules.steam.enable) (attrValues config.home-manager.users); enabled = any (user: user.modules.steam.enable) (attrValues config.home-manager.users);
in in
{ {
config = mkIf enabled { config = mkIf enabled { programs.steam.enable = true; };
modules.unfree.allowedPackages = [
"steam"
"steam-original"
"steam-unwrapped"
];
programs.steam.enable = true;
};
} }

View File

@ -9,6 +9,14 @@ 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 = {
@ -303,9 +311,6 @@ 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,7 +28,6 @@ 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 ];
@ -45,9 +44,6 @@ 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 = {
@ -65,10 +61,6 @@ in
# Layout # Layout
"window.menuBarVisibility" = "hidden"; "window.menuBarVisibility" = "hidden";
# Git settings
"git.autofetch" = true;
"git.enableSmartCommit" = false;
}; };
}; };
}; };

View File

@ -7,7 +7,6 @@
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";
@ -18,18 +17,6 @@ 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

@ -1,59 +0,0 @@
{
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,18 +1,15 @@
{ {
lib,
config,
pkgs,
... ...
}: }:
with lib;
{ {
nixpkgs.config = { nixpkgs.config.packageOverrides = pkgs: rec {
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 { };
};
}; };
} }

View File

@ -1,167 +0,0 @@
{
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

@ -1,19 +0,0 @@
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

@ -1,32 +0,0 @@
{
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
'';
}

File diff suppressed because it is too large Load Diff

View File

@ -1,70 +0,0 @@
{
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,97 +8,43 @@
home.stateVersion = "24.05"; home.stateVersion = "24.05";
# TODO: Move into modules # TODO: Move into modules
home.packages = with pkgs; [ home.packages = with pkgs; [ libreoffice-fresh ];
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 = false; glpaper.enable = true;
# Desktop environment # Theming
mako.enable = true; theming.enable = true;
# Programs
feishin.enable = true;
firefox.enable = true;
foot.enable = true; foot.enable = true;
mako.enable = true;
# Communication vscode.enable = true;
zathura.enable = true;
fish.enable = true;
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;
}; };
qutebrowser = {
enable = true;
default = false;
};
# Gaming
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; neovim.enable = true;
vscode.enable = true; rofi-rbw.enable = true;
obsidian.enable = true;
bluetuith.enable = true;
# Languages # Programming languages
haskell.enable = false; haskell.enable = true;
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;
@ -114,7 +60,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."Noto Color Emoji"; fonts.emoji = fontpkgs."Dina";
fonts.extraFonts = [ ]; fonts.extraFonts = [ ];
# Color scheme # Color scheme
@ -123,10 +69,10 @@
darkMode = false; darkMode = false;
}; };
themes.catppuccin = { themes.catppuccin = {
enable = true; enable = false;
flavor = "mocha"; flavor = "mocha";
}; };
themes.sakura.enable = false; themes.sakura.enable = true;
# TODO: Remove # TODO: Remove
# Nice themes: # Nice themes: