formatted everything, things are looking nice now.

This commit is contained in:
Charlie Root 2024-05-15 00:14:59 +02:00
commit d2d4054aa5
57 changed files with 2269 additions and 2311 deletions

108
flake.nix
View file

@ -1,59 +1,57 @@
{ {
description = "lololo"; description = "lololo";
outputs = inputs @ { self, nixpkgs, ... }: outputs = inputs@{ self, nixpkgs, ... }: {
{ inherit (nixpkgs) lib;
inherit (nixpkgs) lib; nixosConfigurations = import ./hosts { inherit inputs; };
nixosConfigurations = import ./hosts { inherit inputs; }; };
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
}; };
inputs = { nixpak = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; url = "github:nixpak/nixpak";
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; inputs.nixpkgs.follows = "nixpkgs";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
nixpak = {
url = "github:nixpak/nixpak";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
split-monitor-workspaces = {
url = "github:Duckonaut/split-monitor-workspaces";
inputs.hyprland.follows = "hyprland";
};
anyrun = {
url = "github:Kirottu/anyrun";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix.url = "github:danth/stylix";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
schizofox = {
url = "github:schizofox/schizofox";
inputs = {
nixpkgs.follows = "nixpkgs";
nixpak.follows = "nixpak";
};
};
spicetify-nix.url = "github:the-argus/spicetify-nix";
nur = {
url = "github:nix-community/NUR";
#inputs.nixpkgs.follows = "nixpkgs";
};
agenix.url = "github:ryantm/agenix";
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
waybar.url = "github:Alexays/Waybar";
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
split-monitor-workspaces = {
url = "github:Duckonaut/split-monitor-workspaces";
inputs.hyprland.follows = "hyprland";
};
anyrun = {
url = "github:Kirottu/anyrun";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix.url = "github:danth/stylix";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
schizofox = {
url = "github:schizofox/schizofox";
inputs = {
nixpkgs.follows = "nixpkgs";
nixpak.follows = "nixpak";
};
};
spicetify-nix.url = "github:the-argus/spicetify-nix";
nur = {
url = "github:nix-community/NUR";
#inputs.nixpkgs.follows = "nixpkgs";
};
agenix.url = "github:ryantm/agenix";
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
waybar.url = "github:Alexays/Waybar";
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
} }

View file

@ -7,11 +7,11 @@ in {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit lib inputs self; }; specialArgs = { inherit lib inputs self; };
modules = [ modules = [
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
./vali/mars ./vali/mars
../modules ../modules
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.agenix.nixosModules.default inputs.agenix.nixosModules.default
]; ];
}; };

View file

@ -1,23 +1,25 @@
{ pkgs, lib, config, callPackage, ... }: { pkgs, lib, config, callPackage, ... }:
with lib; let with lib;
let
username = config.modules.other.system.username; username = config.modules.other.system.username;
cfg = config.modules.programs.awesome; cfg = config.modules.programs.awesome;
in { in {
options.modules.programs.awesome.enable = mkEnableOption "awesome"; options.modules.programs.awesome.enable = mkEnableOption "awesome";
config = mkIf cfg.enable { config = mkIf cfg.enable {
services = { services = {
displayManager.sddm.enable = true; displayManager.sddm.enable = true;
xserver = { xserver = {
enable = true; enable = true;
xkb = { xkb = {
layout = "de, de"; layout = "de, de";
variant = ",neo "; variant = ",neo ";
options = "grp:alt_space_toggle"; options = "grp:alt_space_toggle";
}; };
windowManager.awesome.enable = true; windowManager.awesome.enable = true;
displayManager.setupCommands = "${pkgs.xorg.xrandr}/bin/xrandr --output HDMI-1 --rotate normal --output DP-2 --rotate normal --left-of HDMI-1 --output HDMI-0 --right-of HDMI-1"; displayManager.setupCommands =
}; "${pkgs.xorg.xrandr}/bin/xrandr --output HDMI-1 --rotate normal --output DP-2 --rotate normal --left-of HDMI-1 --output HDMI-0 --right-of HDMI-1";
}; };
};
}; };
} }

View file

@ -1,5 +1,4 @@
{ config, inputs, pkgs, lib, ... }: { config, inputs, pkgs, lib, ... }: {
{
# allow unfree packages # allow unfree packages
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
# Time Zone # Time Zone
@ -8,12 +7,12 @@
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
console.keyMap = "de"; console.keyMap = "de";
nix = { nix = {
settings = { settings = {
# enable flakes # enable flakes
experimental-features = [ "nix-command" "flakes" ]; experimental-features = [ "nix-command" "flakes" ];
# reduce file size used & automatic garbage collector # reduce file size used & automatic garbage collector
auto-optimise-store = true; auto-optimise-store = true;
}; };
}; };
security.sudo.package = pkgs.sudo.override { withInsults = true; }; security.sudo.package = pkgs.sudo.override { withInsults = true; };
security.polkit.enable = true; security.polkit.enable = true;
@ -21,51 +20,47 @@
programs.dconf.enable = true; programs.dconf.enable = true;
boot.kernelModules = [ "v4l2loopback" ]; boot.kernelModules = [ "v4l2loopback" ];
boot.extraModulePackages = [ pkgs.linuxPackages.v4l2loopback ]; boot.extraModulePackages = [ pkgs.linuxPackages.v4l2loopback ];
# services.picom.enable = true; # services.picom.enable = true;
modules = { modules = {
other = { other = {
system = { system = {
hostname = "mars"; hostname = "mars";
username = "vali"; username = "vali";
gitPath = "/home/vali/repos/nichts"; gitPath = "/home/vali/repos/nichts";
};
home-manager = {
enable = true;
enableDirenv = true;
};
}; };
programs = { home-manager = {
vesktop.enable = true; enable = true;
ssh.enable = true; enableDirenv = true;
btop.enable = true;
mpv.enable = true;
kitty.enable = true;
# awesome.enable = true;
hyprland.enable = true;
newsboat.enable = true;
# emacs.enable = true;
fish.enable = true;
stylix.enable = true;
helix.enable = true;
nh.enable = true;
schizofox.enable = true;
# spicetify.enable = true;
anyrun.enable = true;
};
services = {
pipewire.enable = true;
};
themes = {
gtk = {
enable = true;
};
qt = {
enable = true;
package = pkgs.kde-gruvbox;
name = "Gruvbox-Dark";
};
}; };
}; };
programs = {
vesktop.enable = true;
ssh.enable = true;
btop.enable = true;
mpv.enable = true;
kitty.enable = true;
# awesome.enable = true;
hyprland.enable = true;
newsboat.enable = true;
# emacs.enable = true;
fish.enable = true;
stylix.enable = true;
helix.enable = true;
nh.enable = true;
schizofox.enable = true;
# spicetify.enable = true;
anyrun.enable = true;
};
services = { pipewire.enable = true; };
themes = {
gtk = { enable = true; };
qt = {
enable = true;
package = pkgs.kde-gruvbox;
name = "Gruvbox-Dark";
};
};
};
system.stateVersion = "23.11"; system.stateVersion = "23.11";
} }

View file

@ -1,11 +1,11 @@
_: { _: {
imports = [ imports = [
./configuration.nix ./configuration.nix
./programs.nix ./programs.nix
./hardware-configuration.nix ./hardware-configuration.nix
./profile.nix ./profile.nix
./awesome/awesome.nix ./awesome/awesome.nix
./hyprland/hyprland.nix ./hyprland/hyprland.nix
]; ];
} }

View file

@ -1,32 +1,31 @@
{ config, lib, pkgs, modulesPath, ... }: { config, lib, pkgs, modulesPath, ... }:
{ {
imports = imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ]; boot.initrd.availableKernelModules =
[ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/0423508a-6906-4872-baeb-2b1e6bd017a4"; device = "/dev/disk/by-uuid/0423508a-6906-4872-baeb-2b1e6bd017a4";
fsType = "ext4"; fsType = "ext4";
options = [ "noatime" "nodiratime" "discard" ]; options = [ "noatime" "nodiratime" "discard" ];
}; };
boot.initrd.luks.devices."luks-c03fc486-bdd7-46bf-ac2f-1a55fe1abd6f".device = "/dev/disk/by-uuid/c03fc486-bdd7-46bf-ac2f-1a55fe1abd6f"; boot.initrd.luks.devices."luks-c03fc486-bdd7-46bf-ac2f-1a55fe1abd6f".device =
"/dev/disk/by-uuid/c03fc486-bdd7-46bf-ac2f-1a55fe1abd6f";
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/D299-5174"; device = "/dev/disk/by-uuid/D299-5174";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = swapDevices = [
[
# { device = "/dev/disk/by-uuid/bc68b3b5-1b58-4d8c-be8d-b06bbc4b6da7"; } # { device = "/dev/disk/by-uuid/bc68b3b5-1b58-4d8c-be8d-b06bbc4b6da7"; }
]; ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's
@ -36,5 +35,6 @@
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true; # networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode =
lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View file

@ -5,306 +5,300 @@ let
username = config.modules.other.system.username; username = config.modules.other.system.username;
inherit (inputs.hyprland.packages.${pkgs.system}) hyprland; inherit (inputs.hyprland.packages.${pkgs.system}) hyprland;
inherit (inputs.anyrun.packages.${pkgs.system}) anyrun; inherit (inputs.anyrun.packages.${pkgs.system}) anyrun;
inherit (inputs.nixpkgs-wayland.packages.${pkgs.system}) wl-clipboard swww wlsunset; inherit (inputs.nixpkgs-wayland.packages.${pkgs.system})
wl-clipboard swww wlsunset;
inherit (inputs.waybar.packages.${pkgs.system}) waybar; inherit (inputs.waybar.packages.${pkgs.system}) waybar;
in { in {
options.modules.programs.hyprland.enable = mkEnableOption "hyprland"; options.modules.programs.hyprland.enable = mkEnableOption "hyprland";
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.sessionVariables = { environment.sessionVariables = {
LIBVA_DRIVER_NAME = "nvidia"; LIBVA_DRIVER_NAME = "nvidia";
GTK_USE_PORTAL = "1"; GTK_USE_PORTAL = "1";
NIXOS_XDG_OPEN_USE_PORTAL = "1"; NIXOS_XDG_OPEN_USE_PORTAL = "1";
XDG_CURRENT_DESKTOP = "Hyprland"; XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland"; XDG_SESSION_TYPE = "wayland";
XDG_SESSION_DESKTOP = "Hyprland"; XDG_SESSION_DESKTOP = "Hyprland";
SDL_VIDEODRIVER = "wayland"; SDL_VIDEODRIVER = "wayland";
CLUTTER_BACKEND = "wayland"; CLUTTER_BACKEND = "wayland";
GDK_BACKEND = "wayland"; GDK_BACKEND = "wayland";
QT_QPA_PLATFORM = "wayland"; QT_QPA_PLATFORM = "wayland";
LIBSEAT_BACKEND = "logind"; LIBSEAT_BACKEND = "logind";
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
}; };
xdg.portal = { xdg.portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland
];
config.common.default = "*";
};
home-manager.users.${username} = {
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
plugins = [
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
];
xwayland.enable = true;
systemd = {
enable = true; enable = true;
extraPortals = [ variables = [ "--all" ];
pkgs.xdg-desktop-portal-gtk };
inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland settings = {
"$mainMod" = "SUPER";
monitor = [
"DP-2,1920x1080,0x0,1"
"HDMI-A-2,1920x1080,1920x0,1"
"HDMI-A-1,1920x1080,3840x0,1"
"Unknown-1,disable"
]; ];
config.common.default = "*"; workspace = [
}; "1, monitor:HDMI-A-1, default:true"
home-manager.users.${username} = { "2, monitor:HDMI-A-1"
wayland.windowManager.hyprland = { "3, monitor:HDMI-A-1"
enable = true; "4, monitor:HDMI-A-1"
package = inputs.hyprland.packages.${pkgs.system}.hyprland; "5, monitor:HDMI-A-1"
plugins = [ "6, monitor:HDMI-A-1"
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces "7, monitor:HDMI-A-1"
]; "8, monitor:HDMI-A-1"
xwayland.enable = true; "9, monitor:HDMI-A-1"
systemd = { "10, monitor:HDMI-A-1"
enable = true;
variables = [ "--all" ];
};
settings = {
"$mainMod" = "SUPER";
monitor = [ "11, monitor:HDMI-A-2, default:true"
"DP-2,1920x1080,0x0,1" "12, monitor:HDMI-A-2"
"HDMI-A-2,1920x1080,1920x0,1" "13, monitor:HDMI-A-2"
"HDMI-A-1,1920x1080,3840x0,1" "14, monitor:HDMI-A-2"
"Unknown-1,disable" "15, monitor:HDMI-A-2"
]; "16, monitor:HDMI-A-2"
workspace = [ "17, monitor:HDMI-A-2"
"1, monitor:HDMI-A-1, default:true" "18, monitor:HDMI-A-2"
"2, monitor:HDMI-A-1" "19, monitor:HDMI-A-2"
"3, monitor:HDMI-A-1" "20, monitor:HDMI-A-2"
"4, monitor:HDMI-A-1"
"5, monitor:HDMI-A-1"
"6, monitor:HDMI-A-1"
"7, monitor:HDMI-A-1"
"8, monitor:HDMI-A-1"
"9, monitor:HDMI-A-1"
"10, monitor:HDMI-A-1"
"11, monitor:HDMI-A-2, default:true" "21, monitor:DP-2, default:true"
"12, monitor:HDMI-A-2" "22, monitor:DP-2"
"13, monitor:HDMI-A-2" "23, monitor:DP-2"
"14, monitor:HDMI-A-2" "24, monitor:DP-2"
"15, monitor:HDMI-A-2" "25, monitor:DP-2"
"16, monitor:HDMI-A-2" "26, monitor:DP-2"
"17, monitor:HDMI-A-2" "27, monitor:DP-2"
"18, monitor:HDMI-A-2" "28, monitor:DP-2"
"19, monitor:HDMI-A-2" "29, monitor:DP-2"
"20, monitor:HDMI-A-2" "30, monitor:DP-2"
# scratchpads
"special:btop, decorate:false"
"special:pipewire, decorate:false"
"special:nixos, decorate:false"
"special:keepassxc, decorate:false"
];
"21, monitor:DP-2, default:true" input = {
"22, monitor:DP-2" kb_layout = "de";
"23, monitor:DP-2" kb_variant = "";
"24, monitor:DP-2" kb_model = "";
"25, monitor:DP-2" kb_options = "";
"26, monitor:DP-2" kb_rules = "";
"27, monitor:DP-2"
"28, monitor:DP-2"
"29, monitor:DP-2"
"30, monitor:DP-2"
# scratchpads follow_mouse = true;
"special:btop, decorate:false" repeat_rate = 50;
"special:pipewire, decorate:false" repeat_delay = 250;
"special:nixos, decorate:false" tablet = { output = "HDMI-A-2"; };
"special:keepassxc, decorate:false"
];
input = {
kb_layout = "de";
kb_variant = "";
kb_model = "";
kb_options = "";
kb_rules = "";
follow_mouse = true;
repeat_rate = 50;
repeat_delay = 250;
tablet = {
output = "HDMI-A-2";
};
};
general = {
sensitivity = 1.0;
gaps_in = 0;
gaps_out = 0;
border_size = 2;
#"col.active_border" = "0xFFF5C2E7";
#"col.inactive_border" = "0xFF45475A";
};
decoration = {
rounding = 0;
blur = {
enabled = true;
size = 3;
passes = 2;
};
drop_shadow = 1;
shadow_range = 15;
shadow_render_power = 2;
shadow_ignore_window = 1;
shadow_offset = "2 4";
shadow_scale = 1;
#active_opacity = 1;
#inactive_opacity = 1;
#"col.shadow" = "0xAF1E1E2E";
};
bezier = [
"dupa, 0.1, 0.9, 0.1, 1.05"
"apf,0.76,0,0.24,1"
"fast,0.34,1.56,0.64,1"
];
animations = {
enabled = true;
animation = [
"windows, 1, 4, dupa, popin"
"windowsOut, 1, 4, dupa, slide"
"border, 1, 15, default"
"fade, 1, 10, default"
"workspaces, 1, 5, dupa, slidevert"
];
};
dwindle = {
no_gaps_when_only = true;
};
debug = {
disable_logs =false;
};
misc = {
enable_swallow = true;
swallow_regex = "kitty";
focus_on_activate = true;
vrr = 1;
vfr = true;
animate_manual_resizes = false;
animate_mouse_windowdragging = false;
force_default_wallpaper = 0;
};
windowrulev2 = [
"float, class:^(Tor Browser)$"
"float, class:^(mpv)$"
"float, class:^(imv)$"
"float, title:^(Picture-in-Picture)$"
"float, title:^(.*)(Choose User Profile)(.*)$"
"float, title:^(blob:null/)(.*)$"
"float, class:^(xdg-desktop-portal-gtk)$"
"float, class:^(code), title: ^(Open*)"
"size 70% 70%, class:^(code), title: ^(Open*)"
"center, class: ^(code), title: ^(Open*)"
"float, class:^(org.keepassxc.KeePassXC)$"
];
bind = [
"$mainMod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
"$mainMod, Q, killactive"
"$mainMod, F, fullscreen, 0"
"$mainMod, D, exec, ${pkgs.procps}/bin/pkill anyrun || ${anyrun}/bin/anyrun"
"$mainMod, SPACE, togglefloating, active"
"$mainMod, O, exec, obsidian --ozone-platform=wayland --enable-features=UseOzonePlatform --enable-features=WaylandWindowDecorations --enable-features=WebRTCPipeWireCpaturer --disable-gpu"
# workspaces
"$mainMod, 1, split-workspace, 1"
"$mainMod, 2, split-workspace, 2"
"$mainMod, 3, split-workspace, 3"
"$mainMod, 4, split-workspace, 4"
"$mainMod, 5, split-workspace, 5"
"$mainMod, 6, split-workspace, 6"
"$mainMod, 7, split-workspace, 7"
"$mainMod, 8, split-workspace, 8"
"$mainMod, 9, split-workspace, 9"
"$mainMod, 0, split-workspace, 10"
"$mainMod SHIFT, 1, split-movetoworkspacesilent, 1"
"$mainMod SHIFT, 2, split-movetoworkspacesilent, 2"
"$mainMod SHIFT, 3, split-movetoworkspacesilent, 3"
"$mainMod SHIFT, 4, split-movetoworkspacesilent, 4"
"$mainMod SHIFT, 5, split-movetoworkspacesilent, 5"
"$mainMod SHIFT, 6, split-movetoworkspacesilent, 6"
"$mainMod SHIFT, 7, split-movetoworkspacesilent, 7"
"$mainMod SHIFT, 8, split-movetoworkspacesilent, 8"
"$mainMod SHIFT, 9, split-movetoworkspacesilent, 9"
"$mainMod SHIFT, 0, split-movetoworkspacesilent, 10"
"$mainMod, S, exec, ${pkgs.grimblast}/bin/grimblast copy area"
"$mainMod, R, exec, ${hyprland}/bin/hyprctl reload"
"$mainMod, B, togglespecialworkspace, btop"
"$mainMod, V, togglespecialworkspace, pipewire"
"$mainMod, N, togglespecialworkspace, nixos"
"$mainMod, X, togglespecialworkspace, keepassxc"
"$mainMod CONTROL, B, exec, ${pkgs.procps}/bin/pkill waybar || ${waybar}/bin/waybar"
];
binde = [
# window focus
"$mainMod, H, movefocus, l"
"$mainMod, J, movefocus, d"
"$mainMod, K, movefocus, k"
"$mainMod, L, movefocus, r"
];
bindl = let
play-pause = "${pkgs.playerctl}/bin/playerctl play-pause";
stop = "${pkgs.playerctl}/bin/playerctl stop";
prev = "${pkgs.playerctl}/bin/playerctl previous";
next = "${pkgs.playerctl}/bin/playerctl next";
toggle-mute = "${pkgs.pamixer}/bin/pamixer --toggle-mute";
in [
", XF86AudioMedia, exec, ${play-pause}"
", XF86AudioPlay, exec, ${play-pause}"
", XF86AudioStop, exec, ${stop}"
", XF86AudioPrev, exec, ${prev}"
", XF86AudioNext, exec, ${next}"
", XF86AudioMute, exec, ${toggle-mute}"
];
# locked + repeat
bindle = let
volume_up = "${pkgs.pamixer}/bin/pamixer -ui 5";
volume_down = "${pkgs.pamixer}/bin/pamixer -ud 5";
in [
", XF86AudioRaiseVolume, exec, ${volume_up}"
", XF86AudioLowerVolume, exec, ${volume_down}"
];
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
binds = {
pass_mouse_when_bound = false;
movefocus_cycles_fullscreen = false;
};
exec-once = [
#start waybar
"${waybar}/bin/waybar"
# run persistent special workspace windows
"[workspace special:nixos silent;tile] ${pkgs.kitty}/bin/kitty -d ~/repos/nichts -e hx"
"[workspace special:keepassxc silent;tile] ${pkgs.keepassxc}/bin/keepassxc"
"${swww}/bin/swww-daemon"
"${wlsunset}/bin/wlsunset -S 06:00 -s 20:00"
];
exec = [
# kill (almost) everything on special workspaces
"${pkgs.procps}/bin/pkill btop"
"${pkgs.procps}/bin/pkill helvum"
"${pkgs.procps}/bin/pkill pavucontrol"
# and run it all again
"[workspace special:btop silent;tile] ${pkgs.kitty}/bin/kitty -e ${pkgs.btop}/bin/btop"
"[workspace special:pipewire silent;tile] ${pkgs.helvum}/bin/helvum"
"[workspace special:pipewire silent;tile] ${pkgs.pavucontrol}/bin/pavucontrol"
"${pkgs.networkmanagerapplet}/bin/nm-applet --indicator"
];
plugin = {
split-monitor-workspaces = {
count = 10;
keep_focused = 0;
enable_notifications = 0;
};
};
};
}; };
general = {
sensitivity = 1.0;
gaps_in = 0;
gaps_out = 0;
border_size = 2;
#"col.active_border" = "0xFFF5C2E7";
#"col.inactive_border" = "0xFF45475A";
};
decoration = {
rounding = 0;
blur = {
enabled = true;
size = 3;
passes = 2;
};
drop_shadow = 1;
shadow_range = 15;
shadow_render_power = 2;
shadow_ignore_window = 1;
shadow_offset = "2 4";
shadow_scale = 1;
#active_opacity = 1;
#inactive_opacity = 1;
#"col.shadow" = "0xAF1E1E2E";
};
bezier = [
"dupa, 0.1, 0.9, 0.1, 1.05"
"apf,0.76,0,0.24,1"
"fast,0.34,1.56,0.64,1"
];
animations = {
enabled = true;
animation = [
"windows, 1, 4, dupa, popin"
"windowsOut, 1, 4, dupa, slide"
"border, 1, 15, default"
"fade, 1, 10, default"
"workspaces, 1, 5, dupa, slidevert"
];
};
dwindle = { no_gaps_when_only = true; };
debug = { disable_logs = false; };
misc = {
enable_swallow = true;
swallow_regex = "kitty";
focus_on_activate = true;
vrr = 1;
vfr = true;
animate_manual_resizes = false;
animate_mouse_windowdragging = false;
force_default_wallpaper = 0;
};
windowrulev2 = [
"float, class:^(Tor Browser)$"
"float, class:^(mpv)$"
"float, class:^(imv)$"
"float, title:^(Picture-in-Picture)$"
"float, title:^(.*)(Choose User Profile)(.*)$"
"float, title:^(blob:null/)(.*)$"
"float, class:^(xdg-desktop-portal-gtk)$"
"float, class:^(code), title: ^(Open*)"
"size 70% 70%, class:^(code), title: ^(Open*)"
"center, class: ^(code), title: ^(Open*)"
"float, class:^(org.keepassxc.KeePassXC)$"
];
bind = [
"$mainMod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
"$mainMod, Q, killactive"
"$mainMod, F, fullscreen, 0"
"$mainMod, D, exec, ${pkgs.procps}/bin/pkill anyrun || ${anyrun}/bin/anyrun"
"$mainMod, SPACE, togglefloating, active"
"$mainMod, O, exec, obsidian --ozone-platform=wayland --enable-features=UseOzonePlatform --enable-features=WaylandWindowDecorations --enable-features=WebRTCPipeWireCpaturer --disable-gpu"
# workspaces
"$mainMod, 1, split-workspace, 1"
"$mainMod, 2, split-workspace, 2"
"$mainMod, 3, split-workspace, 3"
"$mainMod, 4, split-workspace, 4"
"$mainMod, 5, split-workspace, 5"
"$mainMod, 6, split-workspace, 6"
"$mainMod, 7, split-workspace, 7"
"$mainMod, 8, split-workspace, 8"
"$mainMod, 9, split-workspace, 9"
"$mainMod, 0, split-workspace, 10"
"$mainMod SHIFT, 1, split-movetoworkspacesilent, 1"
"$mainMod SHIFT, 2, split-movetoworkspacesilent, 2"
"$mainMod SHIFT, 3, split-movetoworkspacesilent, 3"
"$mainMod SHIFT, 4, split-movetoworkspacesilent, 4"
"$mainMod SHIFT, 5, split-movetoworkspacesilent, 5"
"$mainMod SHIFT, 6, split-movetoworkspacesilent, 6"
"$mainMod SHIFT, 7, split-movetoworkspacesilent, 7"
"$mainMod SHIFT, 8, split-movetoworkspacesilent, 8"
"$mainMod SHIFT, 9, split-movetoworkspacesilent, 9"
"$mainMod SHIFT, 0, split-movetoworkspacesilent, 10"
"$mainMod, S, exec, ${pkgs.grimblast}/bin/grimblast copy area"
"$mainMod, R, exec, ${hyprland}/bin/hyprctl reload"
"$mainMod, B, togglespecialworkspace, btop"
"$mainMod, V, togglespecialworkspace, pipewire"
"$mainMod, N, togglespecialworkspace, nixos"
"$mainMod, X, togglespecialworkspace, keepassxc"
"$mainMod CONTROL, B, exec, ${pkgs.procps}/bin/pkill waybar || ${waybar}/bin/waybar"
];
binde = [
# window focus
"$mainMod, H, movefocus, l"
"$mainMod, J, movefocus, d"
"$mainMod, K, movefocus, k"
"$mainMod, L, movefocus, r"
];
bindl = let
play-pause = "${pkgs.playerctl}/bin/playerctl play-pause";
stop = "${pkgs.playerctl}/bin/playerctl stop";
prev = "${pkgs.playerctl}/bin/playerctl previous";
next = "${pkgs.playerctl}/bin/playerctl next";
toggle-mute = "${pkgs.pamixer}/bin/pamixer --toggle-mute";
in [
", XF86AudioMedia, exec, ${play-pause}"
", XF86AudioPlay, exec, ${play-pause}"
", XF86AudioStop, exec, ${stop}"
", XF86AudioPrev, exec, ${prev}"
", XF86AudioNext, exec, ${next}"
", XF86AudioMute, exec, ${toggle-mute}"
];
# locked + repeat
bindle = let
volume_up = "${pkgs.pamixer}/bin/pamixer -ui 5";
volume_down = "${pkgs.pamixer}/bin/pamixer -ud 5";
in [
", XF86AudioRaiseVolume, exec, ${volume_up}"
", XF86AudioLowerVolume, exec, ${volume_down}"
];
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
binds = {
pass_mouse_when_bound = false;
movefocus_cycles_fullscreen = false;
};
exec-once = [
#start waybar
"${waybar}/bin/waybar"
# run persistent special workspace windows
"[workspace special:nixos silent;tile] ${pkgs.kitty}/bin/kitty -d ~/repos/nichts -e hx"
"[workspace special:keepassxc silent;tile] ${pkgs.keepassxc}/bin/keepassxc"
"${swww}/bin/swww-daemon"
"${wlsunset}/bin/wlsunset -S 06:00 -s 20:00"
];
exec = [
# kill (almost) everything on special workspaces
"${pkgs.procps}/bin/pkill btop"
"${pkgs.procps}/bin/pkill helvum"
"${pkgs.procps}/bin/pkill pavucontrol"
# and run it all again
"[workspace special:btop silent;tile] ${pkgs.kitty}/bin/kitty -e ${pkgs.btop}/bin/btop"
"[workspace special:pipewire silent;tile] ${pkgs.helvum}/bin/helvum"
"[workspace special:pipewire silent;tile] ${pkgs.pavucontrol}/bin/pavucontrol"
"${pkgs.networkmanagerapplet}/bin/nm-applet --indicator"
];
plugin = {
split-monitor-workspaces = {
count = 10;
keep_focused = 0;
enable_notifications = 0;
};
};
};
}; };
environment.sessionVariables = { };
/* LIBVA_DRIVER_NAME = "nvidia"; environment.sessionVariables = {
/* LIBVA_DRIVER_NAME = "nvidia";
XDG_SESSION_TYPE = "wayland"; XDG_SESSION_TYPE = "wayland";
GBM_BACKEND = "nvidia-drm"; GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia"; __GLX_VENDOR_LIBRARY_NAME = "nvidia";
@ -316,19 +310,19 @@ in {
XDG_SESSION_DESKTOP = "Hyprland"; XDG_SESSION_DESKTOP = "Hyprland";
GTK_USE_PORTAL = "1"; GTK_USE_PORTAL = "1";
NIXOS_XDG_OPEN_USE_PORTAL = "1"; NIXOS_XDG_OPEN_USE_PORTAL = "1";
*/ */
}; };
hardware = { hardware = {
opengl.enable = true; opengl.enable = true;
nvidia.modesetting.enable = true; nvidia.modesetting.enable = true;
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
(waybar.overrideAttrs (oldAttrs: { (waybar.overrideAttrs (oldAttrs: {
mesonFlags = oldAttrs.mesonFlags ++ ["-Dexperimental=true"]; mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
})) }))
dunst dunst
libnotify libnotify
]; ];
}; };
} }

View file

@ -1,10 +1,10 @@
_: { _: {
imports = [ imports = [
../../../options/boot/grub-boot.nix ../../../options/boot/grub-boot.nix
../../../options/desktop/fonts.nix ../../../options/desktop/fonts.nix
../../../options/common/networking.nix ../../../options/common/networking.nix
../../../options/common/gpu/nvidia.nix ../../../options/common/gpu/nvidia.nix
../../../options/desktop/monitors.nix ../../../options/desktop/monitors.nix
../../../overlay.nix ../../../overlay.nix
]; ];
} }

View file

@ -4,109 +4,112 @@ let
nixpkgs-wayland = inputs.nixpkgs-wayland.packages.${pkgs.system}; nixpkgs-wayland = inputs.nixpkgs-wayland.packages.${pkgs.system};
username = config.modules.other.system.username; username = config.modules.other.system.username;
in { in {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
alsa-utils alsa-utils
android-tools android-tools
asciinema asciinema
bibata-cursors bibata-cursors
blanket blanket
difftastic difftastic
dig dig
easyeffects easyeffects
element-desktop element-desktop
evince evince
eza eza
fastfetch fastfetch
feh feh
(fenix.complete.withComponents [ (fenix.complete.withComponents [
"cargo" "clippy" "rust-src" "cargo"
"rustc" "clippy"
"rustfmt" "rust-src"
]) "rustc"
ffmpeg-full "rustfmt"
fftw ])
flameshot ffmpeg-full
grimblast fftw
gcc flameshot
gdb grimblast
gnumake gcc
grc gdb
grimblast gnumake
git grc
helvum grimblast
heroic git
httpie helvum
i3lock heroic
imagemagick httpie
img2pdf i3lock
imv imagemagick
keepassxc img2pdf
krita imv
lazygit keepassxc
librewolf krita
links2 lazygit
mars-mips librewolf
ncmpcpp links2
neofetch mars-mips
neovim ncmpcpp
networkmanagerapplet neofetch
nextcloud-client neovim
nicotine-plus networkmanagerapplet
nitch nextcloud-client
nixpkgs-wayland.swww nicotine-plus
nmap nil
notesnook nitch
obs-studio nixpkgs-wayland.swww
obsidian nmap
onlyoffice-bin notesnook
pamixer obs-studio
pavucontrol obsidian
picom onlyoffice-bin
pcmanfm pamixer
pdfarranger pavucontrol
pfetch picom
pidgin pcmanfm
playerctl pdfarranger
polkit pfetch
python3 pidgin
qbittorrent playerctl
ripgrep polkit
rustdesk python3
rofi qbittorrent
scc ripgrep
scummvm rustdesk
sherlock rofi
signal-desktop-beta scc
smartmontools scummvm
spotube sherlock
steam signal-desktop-beta
strawberry smartmontools
teamspeak_client spotube
telegram-desktop steam
texliveFull strawberry
trilium-desktop teamspeak_client
thunderbird telegram-desktop
tor-browser-bundle-bin texliveFull
trash-cli trilium-desktop
tree thunderbird
unzip tor-browser-bundle-bin
util-linux trash-cli
v4l-utils tree
ventoy-full unzip
vlc util-linux
weechat v4l-utils
wget ventoy-full
wireguard-tools vlc
xclip weechat
xfce.thunar wget
xorg.libX11.dev wireguard-tools
xorg.libXft xclip
xorg.libXinerama xfce.thunar
xournalpp xorg.libX11.dev
yt-dlp xorg.libXft
zapzap xorg.libXinerama
zathura xournalpp
zip yt-dlp
zoxide zapzap
]; zathura
zip
zoxide
];
} }

View file

@ -1,7 +1 @@
_: { _: { imports = [ ./neovim.nix ./fish.nix ./nh.nix ]; }
imports = [
./neovim.nix
./fish.nix
./nh.nix
];
}

View file

@ -1,65 +1,78 @@
{ { config, lib, pkgs, ... }:
config, with lib;
lib, let
pkgs, cfg = config.modules.programs.fish;
... username = config.modules.other.system.username;
}: with lib; let hostname = config.modules.other.system.hostname;
cfg = config.modules.programs.fish; gitPath = config.modules.other.system.gitPath;
username = config.modules.other.system.username;
hostname = config.modules.other.system.hostname;
gitPath = config.modules.other.system.gitPath;
in { in {
options.modules.programs.fish = { options.modules.programs.fish = {
enable = mkEnableOption "fish"; enable = mkEnableOption "fish";
extraAliases = mkOption { extraAliases = mkOption {
type = types.attrs; type = types.attrs;
description = "extra shell aliases"; description = "extra shell aliases";
default = {}; default = { };
}; };
};
config = mkIf cfg.enable {
programs.fish.enable = true;
users.users.${username}.shell = pkgs.fish;
environment = {
shells = [ pkgs.fish ];
pathsToLink = [ "/share/fish" ];
}; };
config = mkIf cfg.enable { home-manager.users.${username} = {
programs.fish.enable = true; home.packages = with pkgs; [ nix-output-monitor ];
programs.zoxide.enable = true;
users.users.${username}.shell = pkgs.fish; programs.zoxide.enableFishIntegration = true;
programs.fish = {
environment = { enable = true;
shells = [ pkgs.fish ]; interactiveShellInit = "set fish_greeting";
pathsToLink = [ "/share/fish" ]; plugins = [
}; {
name = "grc";
home-manager.users.${username} = { src = pkgs.fishPlugins.grc.src;
home.packages = with pkgs; [ nix-output-monitor ]; }
programs.zoxide.enable = true; {
programs.zoxide.enableFishIntegration = true; name = "sponge";
programs.fish = { src = pkgs.fishPlugins.sponge.src;
enable = true; }
interactiveShellInit = "set fish_greeting"; {
plugins = [ name = "done";
{ name = "grc"; src = pkgs.fishPlugins.grc.src; } src = pkgs.fishPlugins.done.src;
{ name = "sponge"; src = pkgs.fishPlugins.sponge.src; } }
{ name = "done"; src = pkgs.fishPlugins.done.src; } {
{ name = "colored_man_pages"; src = pkgs.fishPlugins.colored-man-pages.src; } name = "colored_man_pages";
{ name = "tide"; src = pkgs.fishPlugins.tide.src; } src = pkgs.fishPlugins.colored-man-pages.src;
]; }
shellAbbrs = { {
c = "clear"; name = "tide";
cc = "cd ~ && clear"; src = pkgs.fishPlugins.tide.src;
mv = "mv -iv"; }
rm = "trash -v"; ];
ls = "eza"; shellAbbrs = {
l = "eza -a --icons"; c = "clear";
la = "eza -lha --icons --git"; cc = "cd ~ && clear";
kys = "shutdown now"; mv = "mv -iv";
lg = "lazygit"; rm = "trash -v";
cd = "z"; ls = "eza";
v = "nvim"; l = "eza -a --icons";
h = "hx"; la = "eza -lha --icons --git";
e = "emacs"; kys = "shutdown now";
update = "sudo nixos-rebuild switch --flake \"${gitPath}#${hostname}\""; lg = "lazygit";
flake = "cd '${gitPath}'"; cd = "z";
} // cfg.extraAliases; v = "nvim";
}; h = "hx";
}; e = "emacs";
update =
''sudo nixos-rebuild switch --flake "${gitPath}#${hostname}"'';
flake = "cd '${gitPath}'";
} // cfg.extraAliases;
};
}; };
};
} }

View file

@ -1,35 +1,33 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let
lazyvim-config = pkgs.fetchFromGitHub { lazyvim-config = pkgs.fetchFromGitHub {
owner = "Dragyx"; owner = "Dragyx";
repo = "lazyvim-config"; repo = "lazyvim-config";
rev = "d799724f48199d81ca6c8abb5951860fbf8fa0df"; rev = "d799724f48199d81ca6c8abb5951860fbf8fa0df";
hash = "sha256-NF92CweRFQ1qZS8NXoTUEljazRGXgXS2AuDt5IWmwBc="; hash = "sha256-NF92CweRFQ1qZS8NXoTUEljazRGXgXS2AuDt5IWmwBc=";
};
cfg = config.modules.programs.neovim-old;
username = config.modules.other.system.username;
in {
options.modules.programs.neovim-old.enable = lib.mkEnableOption "neovim-old";
config = lib.mkIf cfg.enable {
home-manager.users.${username} = {
home.packages = with pkgs; [ lazygit ripgrep fd gcc xclip rust-analyzer ];
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
defaultEditor = true;
};
xdg.configFile."nvim" = {
enable = true;
source = lazyvim-config;
recursive = true;
};
}; };
cfg = config.modules.programs.neovim-old;
username = config.modules.other.system.username;
in
{
options.modules.programs.neovim-old.enable = lib.mkEnableOption "neovim-old";
config = lib.mkIf cfg.enable { };
home-manager.users.${username} = {
home.packages = with pkgs; [ lazygit ripgrep fd gcc xclip rust-analyzer ];
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
defaultEditor = true;
};
xdg.configFile."nvim" = {
enable = true;
source = lazyvim-config;
recursive = true;
};
};
};
} }

View file

@ -1,16 +1,17 @@
{ pkgs, lib, config, callPackage, ... }: { pkgs, lib, config, callPackage, ... }:
with lib; let with lib;
let
username = config.modules.other.system.username; username = config.modules.other.system.username;
cfg = config.modules.programs.nh; cfg = config.modules.programs.nh;
in { in {
options.modules.programs.nh.enable = mkEnableOption "nh"; options.modules.programs.nh.enable = mkEnableOption "nh";
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.nh = { programs.nh = {
enable = true; enable = true;
clean.enable = true; clean.enable = true;
clean.extraArgs = "--keep-since 4d --keep 3"; clean.extraArgs = "--keep-since 4d --keep 3";
flake = "/home/vali/repos/nichts"; flake = "/home/vali/repos/nichts";
}; };
}; };
} }

View file

@ -1,9 +1 @@
_: { _: { imports = [ ./cli ./gui ./tui ./other ./services ]; }
imports = [
./cli
./gui
./tui
./other
./services
];
}

View file

@ -7,42 +7,42 @@ let
in { in {
options.modules.programs.anyrun.enable = mkEnableOption "anyrun"; options.modules.programs.anyrun.enable = mkEnableOption "anyrun";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
imports = [ inputs.anyrun.homeManagerModules.default ]; imports = [ inputs.anyrun.homeManagerModules.default ];
programs.anyrun = { programs.anyrun = {
enable = true; enable = true;
config = { config = {
plugins = with inputs.anyrun.packages.${pkgs.system}; [ plugins = with inputs.anyrun.packages.${pkgs.system}; [
applications applications
dictionary dictionary
kidex kidex
rink rink
shell shell
symbols symbols
translate translate
]; ];
hideIcons = false; hideIcons = false;
ignoreExclusiveZones = false; ignoreExclusiveZones = false;
layer = "overlay"; layer = "overlay";
hidePluginInfo = true; hidePluginInfo = true;
closeOnClick = true; closeOnClick = true;
showResultsImmediately = true; showResultsImmediately = true;
maxEntries = 50; maxEntries = 50;
width.fraction = 0.3; width.fraction = 0.3;
y.absolute = 15; y.absolute = 15;
}; };
extraCss = builtins.readFile (./. + "/style.css"); extraCss = builtins.readFile (./. + "/style.css");
extraConfigFiles."applications.ron".text = '' extraConfigFiles."applications.ron".text = ''
Config( Config(
desktop_actions: false, desktop_actions: false,
max_entries: 5, max_entries: 5,
terminal: Some("kitty"), terminal: Some("kitty"),
) )
''; '';
};
}; };
};
}; };
} }

View file

@ -1,3 +1 @@
_: { _: { imports = [ ./anyrun.nix ]; }
imports = [./anyrun.nix];
}

View file

@ -1,20 +1,20 @@
_: { _: {
imports = [ imports = [
./vesktop.nix ./vesktop.nix
./gtk.nix ./gtk.nix
./mpv.nix ./mpv.nix
./qt.nix ./qt.nix
./zathura.nix ./zathura.nix
./stylix.nix ./stylix.nix
#./spicetify.nix #./spicetify.nix
./anyrun ./anyrun
./rofi.nix ./rofi.nix
./kitty.nix ./kitty.nix
./vivado.nix ./vivado.nix
./firefox.nix ./firefox.nix
./steam.nix ./steam.nix
./schizofox.nix ./schizofox.nix
./minecraft.nix ./minecraft.nix
# ./emacs # ./emacs
]; ];
} }

View file

@ -1,5 +1 @@
_:{ _: { imports = [ ./emacs.nix ]; }
imports = [
./emacs.nix
];
}

View file

@ -1,22 +1,23 @@
{ config, lib, pkgs, inputs, ... }: { config, lib, pkgs, inputs, ... }:
with lib; let with lib;
cfg = config.modules.programs.emacs; let
username = config.modules.other.system.username; cfg = config.modules.programs.emacs;
in { username = config.modules.other.system.username;
options.modules.programs.emacs.enable = mkEnableOption "emacs"; in {
options.modules.programs.emacs.enable = mkEnableOption "emacs";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
programs.doom-emacs = { programs.doom-emacs = {
enable = true; enable = true;
extraConfig = '' extraConfig = ''
(setq standard-indent 2) (setq standard-indent 2)
(require 'evil) (require 'evil)
(evil-mode 1) (evil-mode 1)
''; '';
doomPrivateDir = ./doom.d; doomPrivateDir = ./doom.d;
}; };
};
}; };
};
} }

View file

@ -1,64 +1,72 @@
{ config, lib, inputs, pkgs, ... }: { config, lib, inputs, pkgs, ... }:
with lib; let with lib;
let
username = config.modules.other.system.username; username = config.modules.other.system.username;
cfg = config.modules.programs.firefox; cfg = config.modules.programs.firefox;
in { in {
options.modules.programs.firefox = { options.modules.programs.firefox = {
enable = mkEnableOption "firefox"; enable = mkEnableOption "firefox";
extensions = mkOption { extensions = mkOption {
description = "firefox extensions (format like https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265)"; description =
type = types.attrs; "firefox extensions (format like https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265)";
default = {}; type = types.attrs;
}; default = { };
}; };
};
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
programs.firefox = { programs.firefox = {
enable = true; enable = true;
policies = { policies = {
DisableTelemetry = true; DisableTelemetry = true;
DisableFirefoxStudies = true; DisableFirefoxStudies = true;
EnableTrackingProtection = { EnableTrackingProtection = {
Value= true; Value = true;
Locked = true; Locked = true;
Cryptomining = true; Cryptomining = true;
Fingerprinting = true; Fingerprinting = true;
}; };
DisablePocket = true; DisablePocket = true;
DisableFirefoxAccounts = true; DisableFirefoxAccounts = true;
DisableAccounts = true; DisableAccounts = true;
DisableFirefoxScreenshots = true; DisableFirefoxScreenshots = true;
OverrideFirstRunPage = ""; OverrideFirstRunPage = "";
OverridePostUpdatePage = ""; OverridePostUpdatePage = "";
DontCheckDefaultBrowser = true; DontCheckDefaultBrowser = true;
DisplayBookmarksToolbar = "never"; # alternatives: "always" or "newtab" DisplayBookmarksToolbar =
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on" "never"; # alternatives: "always" or "newtab"
SearchBar = "unified"; # alternative: "separate" DisplayMenuBar =
FirefoxSuggest = { "default-off"; # alternatives: "always", "never" or "default-on"
WebSuggestions = true; SearchBar = "unified"; # alternative: "separate"
ImproveSuggest = true; FirefoxSuggest = {
Locked = true; WebSuggestions = true;
}; ImproveSuggest = true;
SearchSuggestEnabled = true; Locked = true;
theme = { };
colors = { SearchSuggestEnabled = true;
background-darker = "181825"; theme = {
background = "1e1e2e"; colors = {
foreground = "cdd6f4"; background-darker = "181825";
background = "1e1e2e";
foreground = "cdd6f4";
};
}; };
};
OfferToSaveLogins = false; OfferToSaveLogins = false;
font = "Lexend"; font = "Lexend";
ExtensionSettings = lib.mkMerge [{ ExtensionSettings = lib.mkMerge [
"uBlock0@raymondhill.net" = { {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; "uBlock0@raymondhill.net" = {
installation_mode = "force_installed"; install_url =
}; "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
} cfg.extensions]; installation_mode = "force_installed";
};
}
cfg.extensions
];
}; };
}; };
}; };

View file

@ -1,55 +1,55 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; let with lib;
cfg = config.modules.themes.gtk; let
username = config.modules.other.system.username; cfg = config.modules.themes.gtk;
hmCfg = config.home-manager.users.${username}; username = config.modules.other.system.username;
hmCfg = config.home-manager.users.${username};
in { in {
options.modules.themes.gtk = { options.modules.themes.gtk = {
enable = mkEnableOption "gtk theming"; enable = mkEnableOption "gtk theming";
name = mkOption { name = mkOption {
description = "gtk theme name"; description = "gtk theme name";
type = types.str; type = types.str;
};
package = mkOption {
description = "gtk theme package";
type = types.package;
};
# iconTheme = mkOption {
# description = "gtk icon theme";
# type = with types; submodule {
# options = {
# name = mkOption {
# description = "gtk icon theme name";
# type = str;
# };
# package = mkOption {
# description = "gtk icon theme package";
# type = package;
# };
# };
# };
# };
}; };
package = mkOption {
config = mkIf cfg.enable { description = "gtk theme package";
home-manager.users.${username} = { type = types.package;
gtk = {
enable = true;
theme = {
#package = pkgs.gruvbox-gtk-theme;
#name = "Gruvbox-Dark-BL";
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.catppuccin-papirus-folders;
};
};
home.sessionVariables = {
#GTK_THEME = "Gruvbox-Dark-BL";
# GTK_USE_PORTAL = "1";
};
};
}; };
# iconTheme = mkOption {
# description = "gtk icon theme";
# type = with types; submodule {
# options = {
# name = mkOption {
# description = "gtk icon theme name";
# type = str;
# };
# package = mkOption {
# description = "gtk icon theme package";
# type = package;
# };
# };
# };
# };
};
config = mkIf cfg.enable {
home-manager.users.${username} = {
gtk = {
enable = true;
theme = {
#package = pkgs.gruvbox-gtk-theme;
#name = "Gruvbox-Dark-BL";
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.catppuccin-papirus-folders;
};
};
home.sessionVariables = {
#GTK_THEME = "Gruvbox-Dark-BL";
# GTK_USE_PORTAL = "1";
};
};
};
} }

View file

@ -1,79 +1,79 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; let with lib;
cfg = config.modules.programs.kitty; let
username = config.modules.other.system.username; cfg = config.modules.programs.kitty;
in { username = config.modules.other.system.username;
options.modules.programs.kitty.enable = mkEnableOption "kitty"; in {
options.modules.programs.kitty.enable = mkEnableOption "kitty";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
programs.kitty = { programs.kitty = {
enable = true; enable = true;
settings = { settings = {
# font_size = "13.0"; # font_size = "13.0";
mouse_hide_wait = -1; mouse_hide_wait = -1;
url_style = "curly"; url_style = "curly";
open_url_with = "default"; open_url_with = "default";
#background_opacity = "0.9"; #background_opacity = "0.9";
confirm_os_window_close = "0"; confirm_os_window_close = "0";
#font_family = "JetBrainsMono Nerd Font"; #font_family = "JetBrainsMono Nerd Font";
/* /* cursor_text_color = "background";
cursor_text_color = "background";
url_color = "#83a598"; url_color = "#83a598";
visual_bell_color = "#8ec07c"; visual_bell_color = "#8ec07c";
bell_border_color = "#8ec07c"; bell_border_color = "#8ec07c";
active_border_color = "#d3869b"; active_border_color = "#d3869b";
inactive_border_color = "#665c54"; inactive_border_color = "#665c54";
foreground = "#ebdbb2"; foreground = "#ebdbb2";
background = "#282828"; background = "#282828";
selection_foreground = "#928374"; selection_foreground = "#928374";
selection_background = "#ebdbb2"; selection_background = "#ebdbb2";
active_tab_foreground = "#fbf1c7"; active_tab_foreground = "#fbf1c7";
active_tab_background = "#665c54"; active_tab_background = "#665c54";
inactive_tab_foreground = "#a89984"; inactive_tab_foreground = "#a89984";
inactive_tab_background = "#3c3836"; inactive_tab_background = "#3c3836";
# black (bg3/bg4) # black (bg3/bg4)
color0 = "#665c54"; color0 = "#665c54";
color8 = "#7c6f64"; color8 = "#7c6f64";
# red # red
color1 = "#cc241d"; color1 = "#cc241d";
color9 = "#fb4934"; color9 = "#fb4934";
#: green #: green
color2 = "#98971a"; color2 = "#98971a";
color10 = "#b8bb26"; color10 = "#b8bb26";
# yellow # yellow
color3 = "#d79921"; color3 = "#d79921";
color11 = "#fabd2f"; color11 = "#fabd2f";
# blue # blue
color4 = "#458588"; color4 = "#458588";
color12 = "#83a598"; color12 = "#83a598";
# purple # purple
color5 = "#b16286"; color5 = "#b16286";
color13 = "#d3869b"; color13 = "#d3869b";
# aqua # aqua
color6 = "#689d6a"; color6 = "#689d6a";
color14 = "#8ec07c"; color14 = "#8ec07c";
# white (fg4/fg3) # white (fg4/fg3)
color7 = "#a89984"; color7 = "#a89984";
color15 = "#bdae93"; color15 = "#bdae93";
*/ */
};
};
}; };
};
}; };
};
} }

View file

@ -1,5 +1,6 @@
{ config, lib, inputs, pkgs, ... }: { config, lib, inputs, pkgs, ... }:
with lib; let with lib;
let
username = config.modules.other.system.username; username = config.modules.other.system.username;
cfg = config.modules.programs.minecraft; cfg = config.modules.programs.minecraft;
in { in {
@ -10,19 +11,17 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
# Set wayland environment flag # Set wayland environment flag
environment.variables = mkIf cfg.wayland { environment.variables =
__GL_THREADED_OPTIMIZATIONS=0; mkIf cfg.wayland { __GL_THREADED_OPTIMIZATIONS = 0; };
};
# Install glfw-wayland-minecraft # Install glfw-wayland-minecraft
environment.systemPackages = with pkgs; mkIf cfg.wayland [ environment.systemPackages = with pkgs;
mkIf cfg.wayland [
glfw-wayland-minecraft # Use these parameters in the prism launcher: -Dfml.earlyprogresswindow=false -Dorg.lwjgl.glfw.libname=/nix/store/ypkdx5844pp1vdw2z2nmnf2nb9kgl0mp-glfw-wayland-minecraft-unstable-2023-06-01/lib/libglfw.so glfw-wayland-minecraft # Use these parameters in the prism launcher: -Dfml.earlyprogresswindow=false -Dorg.lwjgl.glfw.libname=/nix/store/ypkdx5844pp1vdw2z2nmnf2nb9kgl0mp-glfw-wayland-minecraft-unstable-2023-06-01/lib/libglfw.so
]; ];
home-manager.users.${username} = { home-manager.users.${username} = {
# Install minecraft # Install minecraft
home.packages = with pkgs; [ home.packages = with pkgs; [ prismlauncher ];
prismlauncher
];
}; };
}; };
} }

View file

@ -1,32 +1,24 @@
{ { config, lib, pkgs, ... }:
config, with lib;
lib, let
pkgs, cfg = config.modules.programs.mpv;
... username = config.modules.other.system.username;
}: with lib; let
cfg = config.modules.programs.mpv;
username = config.modules.other.system.username;
in { in {
options.modules.programs.mpv.enable = mkEnableOption "mpv"; options.modules.programs.mpv.enable = mkEnableOption "mpv";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
programs.mpv = { programs.mpv = {
enable = true; enable = true;
config = { config = {
hwdec = "auto"; hwdec = "auto";
volume = 50; volume = 50;
osc = "no"; osc = "no";
osd-bar = "no"; osd-bar = "no";
border = "no"; border = "no";
};
scripts = with pkgs.mpvScripts; [
mpris
thumbfast
sponsorblock
uosc
];
};
}; };
scripts = with pkgs.mpvScripts; [ mpris thumbfast sponsorblock uosc ];
};
}; };
};
} }

View file

@ -1,61 +1,56 @@
{ { config, lib, pkgs, ... }:
config, with lib;
lib, let
pkgs, theme = {
... package = pkgs.gruvbox-gtk-theme;
}: with lib; let name = "Gruvbox-Dark-BL";
theme = { };
package = pkgs.gruvbox-gtk-theme; cfg = config.modules.themes.qt;
name = "Gruvbox-Dark-BL"; username = config.modules.other.system.username;
};
cfg = config.modules.themes.qt;
username = config.modules.other.system.username;
in { in {
options.modules.themes.qt = { options.modules.themes.qt = {
enable = mkEnableOption "qt theming"; enable = mkEnableOption "qt theming";
name = mkOption { name = mkOption {
description = "qt theme name"; description = "qt theme name";
type = types.str; type = types.str;
}; };
variant = mkOption { variant = mkOption {
description = "qt theme variant"; description = "qt theme variant";
type = types.str; type = types.str;
}; };
accentColour = mkOption { accentColour = mkOption {
description = "accent colour for qt theme"; description = "accent colour for qt theme";
type = types.str; type = types.str;
}; };
package = mkOption { package = mkOption {
description = "qt theme package"; description = "qt theme package";
type = types.package; type = types.package;
}; };
};
config = mkIf cfg.enable {
environment.sessionVariables = { QT_QPA_PLATFORMTHEME = "qt5ct"; };
environment.variables = {
QT_STYLE_OVERRIDE = lib.mkForce "kvantum";
GTK_THEME = theme.name;
}; };
config = mkIf cfg.enable { home-manager.users.${username} = {
environment.sessionVariables = { qt = {
QT_QPA_PLATFORMTHEME = "qt5ct"; enable = true;
}; platformTheme.name = "qt5ct";
environment.variables = { # style = {
QT_STYLE_OVERRIDE = lib.mkForce "kvantum"; # inherit (cfg) name package;
GTK_THEME = theme.name; # };
}; };
home = {
home-manager.users.${username} = { packages = with pkgs; [
qt = { qt5.qttools
enable = true; libsForQt5.qt5ct
platformTheme.name = "qt5ct"; libsForQt5.qtstyleplugin-kvantum
# style = { breeze-icons
# inherit (cfg) name package; ];
# }; };
};
home = {
packages = with pkgs; [
qt5.qttools
libsForQt5.qt5ct
libsForQt5.qtstyleplugin-kvantum
breeze-icons
];
};
};
}; };
};
} }

View file

@ -6,8 +6,7 @@ let
cfg = config.modules.programs.rofi; cfg = config.modules.programs.rofi;
in { in {
options.modules.programs.rofi.enable = mkEnableOption "rofi"; options.modules.programs.rofi.enable = mkEnableOption "rofi";
config = mkIf cfg.enable { config =
environment.systemPackages = with pkgs; [ rofi ]; mkIf cfg.enable { environment.systemPackages = with pkgs; [ rofi ]; };
};
} }

View file

@ -1,106 +1,114 @@
{ config, inputs, lib, ... }: let { config, inputs, lib, ... }:
cfg = config.modules.programs.schizofox; let
inherit (config.modules.other.system) username; cfg = config.modules.programs.schizofox;
inherit (config.modules.other.system) username;
inherit (lib) mkEnableOption mkIf; inherit (lib) mkEnableOption mkIf;
in { in {
options.modules.programs.schizofox = { options.modules.programs.schizofox = { enable = mkEnableOption "schizofox"; };
enable = mkEnableOption "schizofox";
};
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
imports = [ inputs.schizofox.homeManagerModule ]; imports = [ inputs.schizofox.homeManagerModule ];
programs.schizofox = { programs.schizofox = {
enable = true; enable = true;
theme = { theme = {
background-darker = "181825"; background-darker = "181825";
background = "1e1e2e"; background = "1e1e2e";
foreground = "cdd6f4"; foreground = "cdd6f4";
font = "Lexend"; font = "Lexend";
simplefox.enable = false; simplefox.enable = false;
darkreader.enable = true; darkreader.enable = true;
extraCss = '' extraCss = ''
body { body {
color: red !important; color: red !important;
} }
''; '';
};
search = {
defaultSearchEngine = "DuckDuckGo";
removeEngines = ["Google" "Bing" "Amazon.com" "eBay" "Twitter" "Wikipedia"];
addEngines = [
{
Name = "NixOS Packages";
Description = "NixOS Unstable package search";
Alias = "!np";
Method = "GET";
URLTemplate = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}";
}
{
Name = "NixOS Options";
Description = "NixOS Unstable option search";
Alias = "!no";
Method = "GET";
URLTemplate = "https://search.nixos.org/options?channel=unstable&query={searchTerms}";
}
{
Name = "NixOS Wiki";
Description = "NixOS Wiki search";
Alias = "!nw";
Method = "GET";
URLTemplate = "https://nixos.wiki/index.php?search={searchTerms}";
}
{
Name = "Home Manager Options";
Description = "Home Manager option search";
Alias = "!hm";
Method = "GET";
URLTemplate = "https://mipmip.github.io/home-manager-option-search?query={searchTerms}";
}
{
Name = "Arch Wiki";
Description = "Arch Wiki search";
Alias = "!aw";
Method = "GET";
URLTemplate = "https://wiki.archlinux.org/index.php?search={searchTerms}";
}
{
Name = "Gentoo Wiki";
Description = "Gentoo Wiki search";
Alias = "!gw";
Method = "GET";
URLTemplate = "https://wiki.gentoo.org/index.php?search={searchTerms}";
}
{
Name = "Debian Wiki";
Description = "Debian Wiki search";
Alias = "!dw";
Method = "GET";
URLTemplate = "https://wiki.debian.org/FrontPage?action=fullsearch&value={searchTerms}";
}
];
};
extensions = {
# simplefox.enable = true;
darkreader.enable = true;
# vimium.enable = true;
extraExtensions = {
"webextension@vimium".install_url = "https://addons.mozilla.org/firefox/downloads/file/4259790/vimium_ff-2.1.2.xpi";
};
};
security = {
sanitizeOnShutdown = true;
sandbox = true;
userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0";
};
misc = {
drmFix = false;
disableWebgl = true;
};
};
}; };
search = {
defaultSearchEngine = "DuckDuckGo";
removeEngines =
[ "Google" "Bing" "Amazon.com" "eBay" "Twitter" "Wikipedia" ];
addEngines = [
{
Name = "NixOS Packages";
Description = "NixOS Unstable package search";
Alias = "!np";
Method = "GET";
URLTemplate =
"https://search.nixos.org/packages?channel=unstable&query={searchTerms}";
}
{
Name = "NixOS Options";
Description = "NixOS Unstable option search";
Alias = "!no";
Method = "GET";
URLTemplate =
"https://search.nixos.org/options?channel=unstable&query={searchTerms}";
}
{
Name = "NixOS Wiki";
Description = "NixOS Wiki search";
Alias = "!nw";
Method = "GET";
URLTemplate = "https://nixos.wiki/index.php?search={searchTerms}";
}
{
Name = "Home Manager Options";
Description = "Home Manager option search";
Alias = "!hm";
Method = "GET";
URLTemplate =
"https://mipmip.github.io/home-manager-option-search?query={searchTerms}";
}
{
Name = "Arch Wiki";
Description = "Arch Wiki search";
Alias = "!aw";
Method = "GET";
URLTemplate =
"https://wiki.archlinux.org/index.php?search={searchTerms}";
}
{
Name = "Gentoo Wiki";
Description = "Gentoo Wiki search";
Alias = "!gw";
Method = "GET";
URLTemplate =
"https://wiki.gentoo.org/index.php?search={searchTerms}";
}
{
Name = "Debian Wiki";
Description = "Debian Wiki search";
Alias = "!dw";
Method = "GET";
URLTemplate =
"https://wiki.debian.org/FrontPage?action=fullsearch&value={searchTerms}";
}
];
};
extensions = {
# simplefox.enable = true;
darkreader.enable = true;
# vimium.enable = true;
extraExtensions = {
"webextension@vimium".install_url =
"https://addons.mozilla.org/firefox/downloads/file/4259790/vimium_ff-2.1.2.xpi";
};
};
security = {
sanitizeOnShutdown = true;
sandbox = true;
userAgent =
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0";
};
misc = {
drmFix = false;
disableWebgl = true;
};
};
}; };
};
} }

View file

@ -1,15 +1,12 @@
{ config, pkgs, lib, inputs, ... }: { config, pkgs, lib, inputs, ... }:
with lib; let with lib;
cfg = config.modules.programs.spicetify; let
username = config.modules.other.system.username; cfg = config.modules.programs.spicetify;
#inherit (inputs.spicetify-nix.packages.${pkgs.system}.default) spicePkgs; username = config.modules.other.system.username;
inherit (inputs.spicetify-nix.packages.${pkgs.system}) spicetify-nix; #inherit (inputs.spicetify-nix.packages.${pkgs.system}.default) spicePkgs;
inherit (inputs.spicetify-nix.packages.${pkgs.system}) spicetify-nix;
in { in {
options.modules.programs.spicetify.enable = mkEnableOption "spicetify"; options.modules.programs.spicetify.enable = mkEnableOption "spicetify";
imports = [ spicetify-nix.homeManagerModule ]; imports = [ spicetify-nix.homeManagerModule ];
config = mkIf cfg.enable { config = mkIf cfg.enable { programs.spicetify = { enable = true; }; };
programs.spicetify = {
enable = true;
};
};
} }

View file

@ -1,22 +1,21 @@
{ config, lib, inputs, pkgs, ... }: { config, lib, inputs, pkgs, ... }:
with lib; let with lib;
let
username = config.modules.other.system.username; username = config.modules.other.system.username;
cfg = config.modules.programs.steam; cfg = config.modules.programs.steam;
in { in {
options.modules.programs.steam = { options.modules.programs.steam = {
enable = mkEnableOption "steam"; enable = mkEnableOption "steam";
gamescope = mkEnableOption "gamescope"; gamescope = mkEnableOption "gamescope";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.steam = { programs.steam = {
enable = true; enable = true;
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true; dedicatedServer.openFirewall = true;
gamescopeSession.enable = mkIf cfg.gamescope true; gamescopeSession.enable = mkIf cfg.gamescope true;
};
home-manager.users.${username} = {
}; };
home-manager.users.${username} = { };
}; };
} }

View file

@ -1,73 +1,78 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
with lib; let with lib;
cfg = config.modules.programs.stylix; let
username = config.modules.other.system.username; cfg = config.modules.programs.stylix;
username = config.modules.other.system.username;
in { in {
options.modules.programs.stylix.enable = mkEnableOption "stylix"; options.modules.programs.stylix.enable = mkEnableOption "stylix";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
stylix = { stylix = {
polarity = "dark"; polarity = "dark";
image = ../../FreeBSD.png; image = ../../FreeBSD.png;
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-soft.yaml"; base16Scheme =
autoEnable = true; "${pkgs.base16-schemes}/share/themes/gruvbox-dark-soft.yaml";
targets = { autoEnable = true;
btop.enable = true; targets = {
fish.enable = true; btop.enable = true;
dunst.enable = true; fish.enable = true;
emacs.enable = true; dunst.enable = true;
firefox.enable = true; emacs.enable = true;
kitty.enable = true; firefox.enable = true;
lazygit.enable = true; kitty.enable = true;
rofi.enable = true; lazygit.enable = true;
foot.enable = true; rofi.enable = true;
tmux.enable = true; foot.enable = true;
waybar.enable = true; tmux.enable = true;
vim.enable = true; waybar.enable = true;
zathura.enable = true; vim.enable = true;
gtk.enable = true; zathura.enable = true;
hyprland.enable = true; gtk.enable = true;
}; hyprland.enable = true;
opacity = { };
applications = 0.9; opacity = {
popups = 0.9; applications = 0.9;
desktop = 0.9; popups = 0.9;
terminal = 0.9; desktop = 0.9;
}; terminal = 0.9;
cursor = { };
package = pkgs.bibata-cursors; cursor = {
name = "Bibata-Modern-Classic"; package = pkgs.bibata-cursors;
size = 24; name = "Bibata-Modern-Classic";
}; size = 24;
fonts = { };
sizes = { fonts = {
terminal = 14; sizes = {
popups = 14; terminal = 14;
popups = 14;
}; };
monospace = { monospace = {
package = (pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}); package =
name = "JetBrainsMono"; (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
}; name = "JetBrainsMono";
serif = { };
package = (pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}); serif = {
name = "JetBrainsMono"; package =
}; (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
sansSerif = { name = "JetBrainsMono";
package = (pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}); };
name = "JetBrainsMono"; sansSerif = {
}; package =
emoji = { (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
package = pkgs.noto-fonts-emoji; name = "JetBrainsMono";
name = "Noto Color Emoji"; };
}; emoji = {
}; package = pkgs.noto-fonts-emoji;
}; name = "Noto Color Emoji";
}; };
stylix = {
image = ../../FreeBSD.png;
polarity = "dark";
}; };
};
}; };
stylix = {
image = ../../FreeBSD.png;
polarity = "dark";
};
};
} }

View file

@ -1,373 +1,371 @@
{ { config, lib, pkgs, ... }:
config, with lib;
lib, let
pkgs, cfg = config.modules.programs.vesktop;
... username = config.modules.other.system.username;
}: with lib; let
cfg = config.modules.programs.vesktop;
username = config.modules.other.system.username;
in { in {
options.modules.programs.vesktop = { options.modules.programs.vesktop = { enable = mkEnableOption "vesktop"; };
enable = mkEnableOption "vesktop";
};
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
home.packages = with pkgs; [ vesktop ]; home.packages = with pkgs; [ vesktop ];
xdg.configFile."vesktop/settings.json".text = builtins.toJSON { xdg.configFile."vesktop/settings.json".text = builtins.toJSON {
discordBranch = "ptb"; discordBranch = "ptb";
firstLaunch = false; firstLaunch = false;
arRPC = "on"; arRPC = "on";
splashColor = "rgb(219, 222, 225)"; splashColor = "rgb(219, 222, 225)";
splashBackground = "rgb(49, 51, 56)"; splashBackground = "rgb(49, 51, 56)";
checkUpdates = false; checkUpdates = false;
staticTitle = true; staticTitle = true;
disableMinSize = true; disableMinSize = true;
minimizeToTray = false; minimizeToTray = false;
tray = false; tray = false;
appBadge = false; appBadge = false;
}; };
xdg.configFile."vesktop/settings/settings.json".text = builtins.toJSON { xdg.configFile."vesktop/settings/settings.json".text = builtins.toJSON {
notifyAboutUpdates = false; notifyAboutUpdates = false;
autoUpdate = false; autoUpdate = false;
autoUpdateNotification = false; autoUpdateNotification = false;
useQuickCss = true; useQuickCss = true;
themeLinks = ["https://github.com/Costeer/Gruvbox-Material-Themes/blob/main/Discord%20Theme/gruvboxmaterial.theme.css"]; themeLinks = [
enabledThemes = ["gruvboxmaterial.theme.css"]; "https://github.com/Costeer/Gruvbox-Material-Themes/blob/main/Discord%20Theme/gruvboxmaterial.theme.css"
enableReactDevtools = true; ];
frameless = false; enabledThemes = [ "gruvboxmaterial.theme.css" ];
transparent = false; enableReactDevtools = true;
winCtrlQ = false; frameless = false;
macosTranslucency = false; transparent = false;
disableMinSize = true; winCtrlQ = false;
winNativeTitleBar = false; macosTranslucency = false;
plugins = { disableMinSize = true;
BadgeAPI.enabled = true; winNativeTitleBar = false;
CommandsAPI.enabled = true; plugins = {
ContextMenuAPI.enabled = true; BadgeAPI.enabled = true;
MemberListDecoratorsAPI.enabled = true; CommandsAPI.enabled = true;
MessageAccessoriesAPI.enabled = true; ContextMenuAPI.enabled = true;
MessageDecorationsAPI.enabled = true; MemberListDecoratorsAPI.enabled = true;
MessageEventsAPI.enabled = true; MessageAccessoriesAPI.enabled = true;
MessagePopoverAPI.enabled = true; MessageDecorationsAPI.enabled = true;
NoticesAPI.enabled = true; MessageEventsAPI.enabled = true;
ServerListAPI.enabled = true; MessagePopoverAPI.enabled = true;
SettingsStoreAPI.enabled = true; NoticesAPI.enabled = true;
NoTrack.enabled = true; ServerListAPI.enabled = true;
Settings = { SettingsStoreAPI.enabled = true;
enabled = true; NoTrack.enabled = true;
settingsLocation = "aboveActivity"; Settings = {
}; enabled = true;
AlwaysAnimate.enabled = false; settingsLocation = "aboveActivity";
AlwaysTrust.enabled = false; };
AnonymiseFileNames.enabled = false; AlwaysAnimate.enabled = false;
"WebRichPresence (arRPC)".enabled = false; AlwaysTrust.enabled = false;
BANger.enabled = false; AnonymiseFileNames.enabled = false;
BetterFolders = { "WebRichPresence (arRPC)".enabled = false;
enabled = true; BANger.enabled = false;
sidebar = true; BetterFolders = {
sidebarAnim = true; enabled = true;
closeAllFolders = false; sidebar = true;
closeAllHomeButton = false; sidebarAnim = true;
closeOthers = false; closeAllFolders = false;
forceOpen = false; closeAllHomeButton = false;
keepIcons = false; closeOthers = false;
showFolderIcon = 1; forceOpen = false;
}; keepIcons = false;
BetterGifAltText.enabled = false; showFolderIcon = 1;
BetterNotesBox.enabled = false; };
BetterRoleDot.enabled = false; BetterGifAltText.enabled = false;
BetterUploadButton.enabled = true; BetterNotesBox.enabled = false;
BiggerStreamPreview.enabled = true; BetterRoleDot.enabled = false;
BlurNSFW.enabled = false; BetterUploadButton.enabled = true;
CallTimer = { BiggerStreamPreview.enabled = true;
enabled = true; BlurNSFW.enabled = false;
format = "human"; CallTimer = {
}; enabled = true;
ClearURLs.enabled = true; format = "human";
ColorSighted.enabled = true; };
ConsoleShortcuts.enabled = false; ClearURLs.enabled = true;
CopyUserURLs.enabled = true; ColorSighted.enabled = true;
CrashHandler.enabled = true; ConsoleShortcuts.enabled = false;
CustomRPC.enabled = false; CopyUserURLs.enabled = true;
Dearrow.enabled = true; CrashHandler.enabled = true;
DisableDMCallIdle.enabled = true; CustomRPC.enabled = false;
EmoteCloner.enabled = false; Dearrow.enabled = true;
Experiments = { DisableDMCallIdle.enabled = true;
enabled = true; EmoteCloner.enabled = false;
enableIsStaff = false; Experiments = {
}; enabled = true;
F8Break.enabled = false; enableIsStaff = false;
FakeNitro = { };
enabled = true; F8Break.enabled = false;
enableEmojiBypass = true; FakeNitro = {
emojiSize = 48; enabled = true;
transformEmojis = true; enableEmojiBypass = true;
enableStickerBypass = true; emojiSize = 48;
stickerSize = 160; transformEmojis = true;
transformStickers = true; enableStickerBypass = true;
transformCompoundSentence = false; stickerSize = 160;
enableStreamQualityBypass = true; transformStickers = true;
}; transformCompoundSentence = false;
FakeProfileThemes = { enableStreamQualityBypass = true;
enabled = true; };
nitroFirst = true; FakeProfileThemes = {
}; enabled = true;
FavoriteEmojiFirst.enabled = true; nitroFirst = true;
FavoriteGifSearch = { };
enabled = true; FavoriteEmojiFirst.enabled = true;
searchOption = "hostandpath"; FavoriteGifSearch = {
}; enabled = true;
FixImagesQuality.enabled = true; searchOption = "hostandpath";
FixSpotifyEmbed = { };
enabled = true; FixImagesQuality.enabled = true;
volume = 10; FixSpotifyEmbed = {
}; enabled = true;
ForceOwnerCrown.enabled = true; volume = 10;
FriendInvites.enabled = false; };
GameActivityToggle.enabled = true; ForceOwnerCrown.enabled = true;
GifPaste.enabled = true; FriendInvites.enabled = false;
HideAttachments.enabled = true; GameActivityToggle.enabled = true;
iLoveSpam.enabled = true; GifPaste.enabled = true;
IgnoreActivities = { HideAttachments.enabled = true;
enabled = true; iLoveSpam.enabled = true;
ignoredActivities = []; IgnoreActivities = {
}; enabled = true;
ImageZoom = { ignoredActivities = [ ];
enabled = true; };
saveZoomValues = true; ImageZoom = {
invertScroll = true; enabled = true;
nearestNeighbour = false; saveZoomValues = true;
square = false; invertScroll = true;
zoom = 2; nearestNeighbour = false;
size = 100; square = false;
zoomSpeed = 0.5; zoom = 2;
}; size = 100;
InvisibleChat = { zoomSpeed = 0.5;
enabled = true; };
savedPasswords = "password"; InvisibleChat = {
}; enabled = true;
KeepCurrentChannel.enabled = true; savedPasswords = "password";
LastFMRichPresence.enabled = false; };
LoadingQuotes.enabled = false; KeepCurrentChannel.enabled = true;
MemberCount.enabled = true; LastFMRichPresence.enabled = false;
MessageClickActions = { LoadingQuotes.enabled = false;
enabled = true; MemberCount.enabled = true;
enableDeleteOnClick = true; MessageClickActions = {
enableDoubleClickToEdit = true; enabled = true;
enableDoubeClickToReply = true; enableDeleteOnClick = true;
requireModifier = true; enableDoubleClickToEdit = true;
}; enableDoubeClickToReply = true;
MessageLinkEmbeds = { requireModifier = true;
enabled = true; };
automodEmbeds = "never"; MessageLinkEmbeds = {
listMode = "blacklist"; enabled = true;
idList = ""; automodEmbeds = "never";
}; listMode = "blacklist";
MessageLogger = { idList = "";
enabled = true; };
deleteStyle = "text"; MessageLogger = {
ignoreBots = false; enabled = true;
ignoreSelf = false; deleteStyle = "text";
ignoreUsers = ""; ignoreBots = false;
ignoreChannels = ""; ignoreSelf = false;
ignoreGuilds = ""; ignoreUsers = "";
}; ignoreChannels = "";
MessageTags.enabled = false; ignoreGuilds = "";
MoreCommands.enabled = true; };
MoreKaomoji.enabled = true; MessageTags.enabled = false;
MoreUserTags.enabled = true; MoreCommands.enabled = true;
Moyai.enabled = false; MoreKaomoji.enabled = true;
MuteNewGuild = { MoreUserTags.enabled = true;
enabled = true; Moyai.enabled = false;
guild = false; MuteNewGuild = {
everyone = true; enabled = true;
role = true; guild = false;
}; everyone = true;
MutualGroupDMs.enabled = true; role = true;
NoBlockedMessages = { };
enabled = false; MutualGroupDMs.enabled = true;
ignoreBlockedMessages = false; NoBlockedMessages = {
}; enabled = false;
NoDevtoolsWarning.enabled = false; ignoreBlockedMessages = false;
NoF1.enabled = false; };
NoPendingCount.enabled = false; NoDevtoolsWarning.enabled = false;
NoProfileThemes.enabled = true; NoF1.enabled = false;
NoReplyMention = { NoPendingCount.enabled = false;
enabled = true; NoProfileThemes.enabled = true;
userList = "372809091208445953"; NoReplyMention = {
shouldPingListed = false; enabled = true;
inverseShiftReply = true; userList = "372809091208445953";
}; shouldPingListed = false;
NoScreensharePreview.enabled = true; inverseShiftReply = true;
NoTypingAnimation = true; };
NoUnblockToJump.enabled = true; NoScreensharePreview.enabled = true;
NSFWGateBypass.enabled = true; NoTypingAnimation = true;
oneko.enabled = false; NoUnblockToJump.enabled = true;
OpenInApp.enabled = false; NSFWGateBypass.enabled = true;
"Party mode 🎉".enabled = false; oneko.enabled = false;
PermissionFreeWill = { OpenInApp.enabled = false;
enabled = true; "Party mode 🎉".enabled = false;
lockout = true; PermissionFreeWill = {
onboarding = true; enabled = true;
}; lockout = true;
PermissionsViewer = { onboarding = true;
enabled = true; };
permissionsSortOrder = 0; PermissionsViewer = {
defaultPermissionsDropdownState = false; enabled = true;
}; permissionsSortOrder = 0;
petpet.enabled = true; defaultPermissionsDropdownState = false;
PictureInPicture = { };
enabled = true; petpet.enabled = true;
loop = false; PictureInPicture = {
}; enabled = true;
PinDMs.enabled = true; loop = false;
PlainFolderIcon.enabled = false; };
PlatformIndicators = { PinDMs.enabled = true;
enabled = true; PlainFolderIcon.enabled = false;
list = true; PlatformIndicators = {
badges = true; enabled = true;
messages = true; list = true;
colorMobileIndicator = true; badges = true;
}; messages = true;
PreviewMessage.enabled = true; colorMobileIndicator = true;
PronounDB.enabled = false; };
QuickMention.enabled = false; PreviewMessage.enabled = true;
QuickReply.enabled = false; PronounDB.enabled = false;
ReactErrorDecoder.enabled = false; QuickMention.enabled = false;
ReadAllNotificationsButton.enabled = false; QuickReply.enabled = false;
RelationshipNotifier = { ReactErrorDecoder.enabled = false;
enabled = true; ReadAllNotificationsButton.enabled = false;
notices = true; RelationshipNotifier = {
offlineRemovals = true; enabled = true;
friends = true; notices = true;
friendRequestCancels = true; offlineRemovals = true;
servers = true; friends = true;
groups = true; friendRequestCancels = true;
}; servers = true;
RevealAllSpoilers.enabled = true; groups = true;
ReverseImageSearch.enabled = false; };
ReviewDB.enabled = false; RevealAllSpoilers.enabled = true;
RoleColorEverywhere = { ReverseImageSearch.enabled = false;
enabled = true; ReviewDB.enabled = false;
chatMentions = true; RoleColorEverywhere = {
memberList = true; enabled = true;
voiceUsers = true; chatMentions = true;
}; memberList = true;
SearchReply.enabled = true; voiceUsers = true;
SendTimestamps.enabled = false; };
ServerListIndicators = { SearchReply.enabled = true;
enabled = true; SendTimestamps.enabled = false;
mode = 3; ServerListIndicators = {
}; enabled = true;
ServerProfile.enabled = true; mode = 3;
ShikiCodeblocks = { };
enabled = true; ServerProfile.enabled = true;
theme = "https://raw.githubusercontent.com/shikijs/shiki/0b28ad8ccfbf2615f2d9d38ea8255416b8ac3043/packages/shiki/themes/dark-plus.json"; ShikiCodeblocks = {
tryHljs = "SECONDARY"; enabled = true;
uesDevIcon = "GREYSCALE"; theme =
}; "https://raw.githubusercontent.com/shikijs/shiki/0b28ad8ccfbf2615f2d9d38ea8255416b8ac3043/packages/shiki/themes/dark-plus.json";
ShowAllMessageButtons.enabled = true; tryHljs = "SECONDARY";
ShowConnections = { uesDevIcon = "GREYSCALE";
enabled = true; };
iconSize = 32; ShowAllMessageButtons.enabled = true;
iconSpacing = 1; ShowConnections = {
}; enabled = true;
ShowHiddenChannels = { iconSize = 32;
enabled = true; iconSpacing = 1;
hideUnreads = true; };
showMode = 0; ShowHiddenChannels = {
defaultAllowedUsersAndRolesDropdownState = true; enabled = true;
}; hideUnreads = true;
ShowMeYourName.enabled = false; showMode = 0;
ShowTimeouts.enabled = true; defaultAllowedUsersAndRolesDropdownState = true;
SilentMessageToggle = { };
enabled = true; ShowMeYourName.enabled = false;
persistState = false; ShowTimeouts.enabled = true;
autoDisable = true; SilentMessageToggle = {
}; enabled = true;
SilentTyping = { persistState = false;
enabled = true; autoDisable = true;
showIcon = false; };
isEnabled = true; SilentTyping = {
}; enabled = true;
SortFriendRequests.enabled = false; showIcon = false;
SpotifyControls.enabled = false; isEnabled = true;
SpotifyCrack.enabled = false; };
SpotifyShareCommands.enabled = false; SortFriendRequests.enabled = false;
StartupTimings.enabled = false; SpotifyControls.enabled = false;
SupportHelper.enabled = true; SpotifyCrack.enabled = false;
TextReplace.enabled = false; SpotifyShareCommands.enabled = false;
TimeBarAllActivities.enabled = false; StartupTimings.enabled = false;
Translate.enabled = false; SupportHelper.enabled = true;
TypingIndicator = { TextReplace.enabled = false;
enabled = true; TimeBarAllActivities.enabled = false;
includeMutedChannels = false; Translate.enabled = false;
includeBlockedUsers = true; TypingIndicator = {
}; enabled = true;
TypingTweaks = { includeMutedChannels = false;
enabled = true; includeBlockedUsers = true;
showAvatars = true; };
showRoleColors = true; TypingTweaks = {
alternativeFormatting = true; enabled = true;
}; showAvatars = true;
Unindent.enabled = true; showRoleColors = true;
UnsuppressEmbeds.enabled = true; alternativeFormatting = true;
UrbanDictionary.enabled = false; };
UserVoiceShow = { Unindent.enabled = true;
enabled = true; UnsuppressEmbeds.enabled = true;
showInUserProfileModal = true; UrbanDictionary.enabled = false;
showVoiceChannelSectionHeader = true; UserVoiceShow = {
}; enabled = true;
USRBG.enabled = false; showInUserProfileModal = true;
UwUifier.enabled = false; showVoiceChannelSectionHeader = true;
ValidUser.enabled = false; };
VoiceChatDoubleClick.enabled = true; USRBG.enabled = false;
VcNarrator.enabled = false; UwUifier.enabled = false;
VencordToolbox.enabled = false; ValidUser.enabled = false;
ViewIcons = { VoiceChatDoubleClick.enabled = true;
enabled = true; VcNarrator.enabled = false;
format = "png"; VencordToolbox.enabled = false;
imgSize = "2048"; ViewIcons = {
}; enabled = true;
ViewRaw = { format = "png";
enabled = true; imgSize = "2048";
clickMethod = "Left"; };
}; ViewRaw = {
VoiceMessages = { enabled = true;
enabled = true; clickMethod = "Left";
noiseSuppression = true; };
echoCancellation = true; VoiceMessages = {
}; enabled = true;
WebContextMenus = { noiseSuppression = true;
enabled = true; echoCancellation = true;
addBack = true; };
}; WebContextMenus = {
WebKeybinds.enabled = true; enabled = true;
GreetStickerPicker.enabled = false; addBack = true;
WhoReacted.enabled = true; };
Wikisearch.enabled = false; WebKeybinds.enabled = true;
NormalizeMessageLinks.enabled = false; GreetStickerPicker.enabled = false;
"AI Noise Suppression" = { WhoReacted.enabled = true;
enabled = true; Wikisearch.enabled = false;
isEnabled = true; NormalizeMessageLinks.enabled = false;
}; "AI Noise Suppression" = {
SecretRingToneEnabler.enabled = false; enabled = true;
}; isEnabled = true;
notifications = { };
timeout = 5000; SecretRingToneEnabler.enabled = false;
position = "bottom-right";
useNative = "not-focused";
logLimit = 50;
};
cloud = {
authenticated = false;
url = "https://api.vencord.dev/";
settingsSync = false;
settingsSyncVersion = 1682768329526;
};
};
}; };
notifications = {
timeout = 5000;
position = "bottom-right";
useNative = "not-focused";
logLimit = 50;
};
cloud = {
authenticated = false;
url = "https://api.vencord.dev/";
settingsSync = false;
settingsSyncVersion = 1682768329526;
};
};
}; };
};
} }

View file

@ -1,5 +1,4 @@
{ pkgs, nur, ...}: { pkgs, nur, ... }:
let let
vivado-desktop-symbol = pkgs.makeDesktopItem { vivado-desktop-symbol = pkgs.makeDesktopItem {
@ -7,8 +6,7 @@ let
desktopName = "Vivado"; desktopName = "Vivado";
exec = "${pkgs.nur.repos.lschuermann.vivado-2022_2}/bin/vivado"; exec = "${pkgs.nur.repos.lschuermann.vivado-2022_2}/bin/vivado";
}; };
in in {
{
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# this propietary software is huge, but I need it for # this propietary software is huge, but I need it for
@ -17,7 +15,6 @@ in
vivado-desktop-symbol vivado-desktop-symbol
]; ];
# Create udev rules. Reference: https://blog.kotatsu.dev/posts/2021-09-14-vivado-on-nixos/ # Create udev rules. Reference: https://blog.kotatsu.dev/posts/2021-09-14-vivado-on-nixos/
services.udev.packages = [ services.udev.packages = [
(pkgs.writeTextFile { (pkgs.writeTextFile {

View file

@ -1,33 +1,29 @@
{ { config, lib, pkgs, ... }:
config, with lib;
lib, let
pkgs, cfg = config.modules.programs.zathura;
... username = config.modules.other.system.username;
}: with lib; let catppuccin = pkgs.fetchFromGitHub {
cfg = config.modules.programs.zathura; owner = "catppuccin";
username = config.modules.other.system.username; repo = "zathura";
catppuccin = pkgs.fetchFromGitHub { rev = "4eb02fd206de63b2423f6deb58242d352545b52f";
owner = "catppuccin"; hash = "sha256-/vD/hOi6KcaGyAp6Az7jL5/tQSGRzIrf0oHjAJf4QbI=";
repo = "zathura"; };
rev = "4eb02fd206de63b2423f6deb58242d352545b52f";
hash = "sha256-/vD/hOi6KcaGyAp6Az7jL5/tQSGRzIrf0oHjAJf4QbI=";
};
in { in {
options.modules.programs.zathura.enable = mkEnableOption "zathura"; options.modules.programs.zathura.enable = mkEnableOption "zathura";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
xdg.configFile."zathura/catppuccin-mocha".source = "${catppuccin}/src/catppuccin-mocha"; xdg.configFile."zathura/catppuccin-mocha".source =
programs.zathura = { "${catppuccin}/src/catppuccin-mocha";
enable = true; programs.zathura = {
extraConfig = '' enable = true;
include catppuccin-mocha extraConfig = ''
''; include catppuccin-mocha
options = { '';
selection-clipboard = "clipboard"; options = { selection-clipboard = "clipboard"; };
}; };
};
};
}; };
};
} }

View file

@ -1,8 +1,2 @@
_: { _: { imports = [ ./home-manager.nix ./system.nix ./xdg.nix ]; }
imports = [
./home-manager.nix
./system.nix
./xdg.nix
];
}

View file

@ -1,38 +1,34 @@
{ { config, inputs, lib, self, ... }:
config, with lib;
inputs, let
lib, cfg = config.modules.other.home-manager;
self, username = config.modules.other.system.username;
...
}: with lib; let
cfg = config.modules.other.home-manager;
username = config.modules.other.system.username;
in { in {
options.modules.other.home-manager = { options.modules.other.home-manager = {
enable = mkEnableOption "home-manager"; enable = mkEnableOption "home-manager";
enableDirenv = mkEnableOption "direnv"; enableDirenv = mkEnableOption "direnv";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager = { home-manager = {
useUserPackages = true; useUserPackages = true;
useGlobalPkgs = true; useGlobalPkgs = true;
extraSpecialArgs = {inherit inputs self;}; extraSpecialArgs = { inherit inputs self; };
users.${username} = { users.${username} = {
programs = { programs = {
home-manager.enable = true; home-manager.enable = true;
direnv = mkIf cfg.enableDirenv { direnv = mkIf cfg.enableDirenv {
enable = true; enable = true;
nix-direnv.enable = true; nix-direnv.enable = true;
}; };
};
home = {
inherit username;
homeDirectory = "/home/${username}";
stateVersion = lib.mkDefault "23.11";
};
};
}; };
home = {
inherit username;
homeDirectory = "/home/${username}";
stateVersion = lib.mkDefault "23.11";
};
};
}; };
};
} }

View file

@ -1,33 +1,30 @@
{ { config, lib, ... }:
config, with lib;
lib, let cfg = config.modules.other.system;
...
}: with lib; let
cfg = config.modules.other.system;
in { in {
options.modules.other.system = { options.modules.other.system = {
hostname = mkOption { hostname = mkOption {
description = "hostname for this system"; description = "hostname for this system";
type = types.str; type = types.str;
};
username = mkOption {
description = "username for this system";
type = types.str;
};
gitPath = mkOption {
description = "path to the flake directory";
type = types.str;
};
}; };
config = { username = mkOption {
networking.hostName = cfg.hostname; description = "username for this system";
type = types.str;
users.users.${cfg.username} = {
isNormalUser = true;
extraGroups = [ "wheel" ];
};
}; };
gitPath = mkOption {
description = "path to the flake directory";
type = types.str;
};
};
config = {
networking.hostName = cfg.hostname;
users.users.${cfg.username} = {
isNormalUser = true;
extraGroups = [ "wheel" ];
};
};
} }

View file

@ -1,68 +1,66 @@
{ pkgs, config, ... }: { pkgs, config, ... }:
let let
username = config.modules.other.system.username; username = config.modules.other.system.username;
hmCfg = config.home-manager.users.${username}; hmCfg = config.home-manager.users.${username};
primary_browser = "librewolf.desktop"; primary_browser = "librewolf.desktop";
mail_client = "thunderbird.desktop"; mail_client = "thunderbird.desktop";
file_manager = "pcmanfm.desktop"; file_manager = "pcmanfm.desktop";
media_player = "mpv.desktop"; media_player = "mpv.desktop";
image_viewer = "imv.desktop"; image_viewer = "imv.desktop";
text_editor = "helix.desktop"; text_editor = "helix.desktop";
terminal = "kitty.desktop"; terminal = "kitty.desktop";
in { in {
environment.sessionVariables = { environment.sessionVariables = { TERMINAL = "${terminal}"; };
TERMINAL = "${terminal}";
};
home-manager.users.${username} = { home-manager.users.${username} = {
xdg = { xdg = {
cacheHome = "${hmCfg.home.homeDirectory}/.cache"; cacheHome = "${hmCfg.home.homeDirectory}/.cache";
configHome = "${hmCfg.home.homeDirectory}/.config"; configHome = "${hmCfg.home.homeDirectory}/.config";
dataHome = "${hmCfg.home.homeDirectory}/.local/share"; dataHome = "${hmCfg.home.homeDirectory}/.local/share";
stateHome = "${hmCfg.home.homeDirectory}/.local/state"; stateHome = "${hmCfg.home.homeDirectory}/.local/state";
mimeApps = { mimeApps = {
enable = true; enable = true;
defaultApplications = { defaultApplications = {
"text/html" = [ primary_browser ]; "text/html" = [ primary_browser ];
"x-scheme-handler/http" = [ primary_browser ]; "x-scheme-handler/http" = [ primary_browser ];
"x-scheme-handler/https" = [ primary_browser ]; "x-scheme-handler/https" = [ primary_browser ];
"x-scheme-handler/about" = [ primary_browser ]; "x-scheme-handler/about" = [ primary_browser ];
"x-scheme-handler/unknown" = [ primary_browser ]; "x-scheme-handler/unknown" = [ primary_browser ];
"x-scheme-handler/mailto" = [ mail_client ]; "x-scheme-handler/mailto" = [ mail_client ];
"message/rfc822" = [ mail_client ]; "message/rfc822" = [ mail_client ];
"x-scheme-handler/mid" = [ mail_client ]; "x-scheme-handler/mid" = [ mail_client ];
"inode/directory" = [ file_manager ]; "inode/directory" = [ file_manager ];
"audio/mp3" = [ media_player ]; "audio/mp3" = [ media_player ];
"audio/ogg" = [ media_player ]; "audio/ogg" = [ media_player ];
"audio/mpeg" = [ media_player ]; "audio/mpeg" = [ media_player ];
"audio/aac" = [ media_player ]; "audio/aac" = [ media_player ];
"audio/opus" = [ media_player ]; "audio/opus" = [ media_player ];
"audio/wav" = [ media_player ]; "audio/wav" = [ media_player ];
"audio/webm" = [ media_player ]; "audio/webm" = [ media_player ];
"audio/3gpp" = [ media_player ]; "audio/3gpp" = [ media_player ];
"audio/3gpp2" = [ media_player ]; "audio/3gpp2" = [ media_player ];
"video/mp4" = [ media_player ]; "video/mp4" = [ media_player ];
"video/x-msvideo" = [ media_player ]; "video/x-msvideo" = [ media_player ];
"video/mpeg" = [ media_player ]; "video/mpeg" = [ media_player ];
"video/ogg" = [ media_player ]; "video/ogg" = [ media_player ];
"video/mp2t" = [ media_player ]; "video/mp2t" = [ media_player ];
"video/webm" = [ media_player ]; "video/webm" = [ media_player ];
"video/3gpp" = [ media_player ]; "video/3gpp" = [ media_player ];
"video/3gpp2" = [ media_player ]; "video/3gpp2" = [ media_player ];
"image/png" = [ image_viewer ]; "image/png" = [ image_viewer ];
"image/jpeg" = [ image_viewer ]; "image/jpeg" = [ image_viewer ];
"image/gif" = [ image_viewer ]; "image/gif" = [ image_viewer ];
"image/avif" = [ image_viewer ]; "image/avif" = [ image_viewer ];
"image/bmp" = [ image_viewer ]; "image/bmp" = [ image_viewer ];
"image/vnd.microsoft.icon" = [ image_viewer ]; "image/vnd.microsoft.icon" = [ image_viewer ];
"image/svg+xml" = [ image_viewer ]; "image/svg+xml" = [ image_viewer ];
"image/tiff" = [ image_viewer ]; "image/tiff" = [ image_viewer ];
"image/webp" = [ image_viewer ]; "image/webp" = [ image_viewer ];
"text/plain" = [ text_editor ]; "text/plain" = [ text_editor ];
};
};
}; };
};
}; };
};
} }

View file

@ -1,7 +1 @@
_: { _: { imports = [ ./pipewire.nix ./ssh.nix ./greetd.nix ]; }
imports = [
./pipewire.nix
./ssh.nix
./greetd.nix
];
}

View file

@ -1,46 +1,56 @@
{ config, inputs, lib, pkgs, ... }: { config, inputs, lib, pkgs, ... }:
with lib; let with lib;
cfg = config.modules.services.greetd; let
inherit (config.modules.other.system) username; cfg = config.modules.services.greetd;
inherit (config.modules.other.system) username;
hyprlandConfig = pkgs.writeText "greetd-hyprland-config" '' hyprlandConfig = pkgs.writeText "greetd-hyprland-config" ''
misc { misc {
force_default_wallpaper=0 force_default_wallpaper=0
focus_on_activate=1 focus_on_activate=1
} }
animations { animations {
enabled=0 enabled=0
first_launch_animation=0 first_launch_animation=0
} }
workspace=1,default:true,gapsout:0,gapsin:0,border:false,decorate:false workspace=1,default:true,gapsout:0,gapsin:0,border:false,decorate:false
#exec-once=[workspace 1;fullscreen;noanim] ${pkgs.greetd.${cfg.greeter}}/bin/${cfg.greeter} -l; ${inputs.hyprland.packages.${pkgs.system}.hyprland}/bin/hyprctl dispatch exit #exec-once=[workspace 1;fullscreen;noanim] ${
#exec-once=${inputs.hyprland.packages.${pkgs.system}.hyprland}/bin/hyprctl dispatch focuswindow ${cfg.greeter} pkgs.greetd.${cfg.greeter}
''; }/bin/${cfg.greeter} -l; ${
inputs.hyprland.packages.${pkgs.system}.hyprland
}/bin/hyprctl dispatch exit
#exec-once=${
inputs.hyprland.packages.${pkgs.system}.hyprland
}/bin/hyprctl dispatch focuswindow ${cfg.greeter}
'';
in { in {
options.modules.services.greetd = { options.modules.services.greetd = {
enable = mkEnableOption "greetd"; enable = mkEnableOption "greetd";
greeter = mkOption { greeter = mkOption {
description = "greetd frontend to use"; description = "greetd frontend to use";
type = types.str; type = types.str;
}; };
launchOptions = mkOption { launchOptions = mkOption {
description = "/etc/greetd/environments as list of strings"; description = "/etc/greetd/environments as list of strings";
type = with types; listOf str; type = with types; listOf str;
}; };
};
config = mkIf cfg.enable {
services.greetd = {
enable = true;
settings.default_session = {
command = "${
inputs.hyprland.packages.${pkgs.system}.hyprland
}/bin/Hyprland --config ${hyprlandConfig}";
user = username;
};
}; };
config = mkIf cfg.enable { environment.etc."greetd/environments".text =
services.greetd = { concatStringsSep "\n" cfg.launchOptions;
enable = true; };
settings.default_session = {
command = "${inputs.hyprland.packages.${pkgs.system}.hyprland}/bin/Hyprland --config ${hyprlandConfig}";
user = username;
};
};
environment.etc."greetd/environments".text = concatStringsSep "\n" cfg.launchOptions;
};
} }

View file

@ -1,6 +1,6 @@
{ config, lib, ... }: { config, lib, ... }:
with lib; let with lib;
cfg = config.modules.services.pipewire; let cfg = config.modules.services.pipewire;
in { in {
options.modules.services.pipewire.enable = mkEnableOption "pipewire"; options.modules.services.pipewire.enable = mkEnableOption "pipewire";

View file

@ -1,14 +1,11 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; let with lib;
cfg = config.modules.programs.ssh; let
username = config.modules.other.system.username; cfg = config.modules.programs.ssh;
in { username = config.modules.other.system.username;
options.modules.programs.ssh.enable = mkEnableOption "ssh"; in {
options.modules.programs.ssh.enable = mkEnableOption "ssh";
config = mkIf cfg.enable { config = mkIf cfg.enable { programs.ssh = { startAgent = true; }; };
programs.ssh = {
startAgent = true;
};
};
} }

View file

@ -1,27 +1,28 @@
{ config, lib, ... }: { config, lib, ... }:
with lib; let with lib;
cfg = config.modules.programs.btop; let
username = config.modules.other.system.username; cfg = config.modules.programs.btop;
username = config.modules.other.system.username;
in { in {
options.modules.programs.btop.enable = mkEnableOption "btop"; options.modules.programs.btop.enable = mkEnableOption "btop";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
programs.btop = { programs.btop = {
enable = true; enable = true;
settings = { settings = {
theme_background = false; theme_background = false;
vim_keys = true; vim_keys = true;
update_ms = 1000; update_ms = 1000;
cpu_single_graph = true; cpu_single_graph = true;
clock_format = "%X"; clock_format = "%X";
use_fstab = true; use_fstab = true;
io_mode = true; io_mode = true;
net_sync = true; net_sync = true;
net_iface = "enp4s0"; net_iface = "enp4s0";
log_level = "WARNING"; log_level = "WARNING";
};
};
}; };
};
}; };
};
} }

View file

@ -1,10 +1,10 @@
_: { _: {
imports = [ imports = [
./btop.nix ./btop.nix
./helix.nix ./helix.nix
./neovim.nix ./neovim.nix
./newsboat.nix ./newsboat.nix
./ncmpcpp.nix ./ncmpcpp.nix
./yazi.nix ./yazi.nix
]; ];
} }

View file

@ -1,30 +1,41 @@
{ config, lib, pkgs, inputs, ... }: { config, lib, pkgs, inputs, ... }:
with lib; let with lib;
cfg = config.modules.programs.helix; let
username = config.modules.other.system.username; cfg = config.modules.programs.helix;
in { username = config.modules.other.system.username;
options.modules.programs.helix.enable = mkEnableOption "helix"; in {
options.modules.programs.helix.enable = mkEnableOption "helix";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
programs.helix = { programs.helix = {
enable = true; enable = true;
settings = { settings = {
editor = { editor = {
line-number = "relative"; line-number = "relative";
mouse = false; mouse = false;
bufferline = "multiple"; bufferline = "multiple";
lsp.display-messages = true; lsp.display-messages = true;
cursor-shape = { cursor-shape = { insert = "bar"; };
insert = "bar"; statusline.left =
}; [ "mode" "spinner" "version-control" "file-name" ];
}; };
keys.normal = { keys.normal = {
C-g = [":new" ":insert-output lazygit" ":buffer-close!" ":redraw"]; C-g =
esc = ["collapse_selection" "keep_primary_selection"]; [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
}; C-t = [ ":new" ":insert-output fish" ":buffer-close!" ":redraw" ];
}; esc = [ "collapse_selection" "keep_primary_selection" ];
}; A-H = "goto_previous_buffer";
A-L = "goto_next_buffer";
A-w = ":buffer-close";
};
}; };
languages.language = [{
name = "nix";
auto-format = true;
formatter.command = "${pkgs.nixfmt}/bin/nixfmt";
}];
};
}; };
};
} }

View file

@ -1,81 +1,86 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; let with lib;
cfg = config.modules.programs.ncmpcpp; let
username = config.modules.other.system.username; cfg = config.modules.programs.ncmpcpp;
in { username = config.modules.other.system.username;
options.modules.programs.ncmpcpp.enable = mkEnableOption "ncmpcpp"; in {
options.modules.programs.ncmpcpp.enable = mkEnableOption "ncmpcpp";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
xdg.configFile."ncmpcpp/config".source = ./config; xdg.configFile."ncmpcpp/config".source = ./config;
programs.ncmpcpp = { programs.ncmpcpp = {
enable = true; enable = true;
package = (pkgs.ncmpcpp.override {visualizerSupport = true;}); package = (pkgs.ncmpcpp.override { visualizerSupport = true; });
mpdMusicDir = "/home/vali/Nextcloud/Media/Music"; mpdMusicDir = "/home/vali/Nextcloud/Media/Music";
settings = { settings = {
mpd_host = "127.0.0.1"; mpd_host = "127.0.0.1";
mpd_port = "6600"; mpd_port = "6600";
alternative_header_first_line_format = "$5{$b%t$/b}$9"; alternative_header_first_line_format = "$5{$b%t$/b}$9";
alternative_header_second_line_format = "$3by $7{$b%a$/b}$9 $3from $7{$b%b$/b}$9 $5{(%y)}"; alternative_header_second_line_format =
song_list_format = " $2%n$(end) $9 $3%a$(end) $(245)-$9 $(246)%t$9 $R{ $5%y$9}$(end) $(246)%lq$(end)"; "$3by $7{$b%a$/b}$9 $3from $7{$b%b$/b}$9 $5{(%y)}";
song_columns_list_format ="(3f)[red]{n} (3f)[246]{} (35)[white]{t} (18)[blue]{a} (30)[green]{b} (5f)[yellow]{d} (5f)[red]{y} (7f)[magenta]{l}"; song_list_format =
song_status_format = "$b $8%A $8$3 $3%t $3$5 $5%b $5$2 $2%y $2$8 %g"; " $2%n$(end) $9 $3%a$(end) $(245)-$9 $(246)%t$9 $R{ $5%y$9}$(end) $(246)%lq$(end)";
playlist_display_mode = "columns"; song_columns_list_format =
browser_display_mode = "columns"; "(3f)[red]{n} (3f)[246]{} (35)[white]{t} (18)[blue]{a} (30)[green]{b} (5f)[yellow]{d} (5f)[red]{y} (7f)[magenta]{l}";
search_engine_display_mode = "columns"; song_status_format =
now_playing_prefix = "$b"; "$b $8%A $8$3 $3%t $3$5 $5%b $5$2 $2%y $2$8 %g";
now_playing_suffix = "$/b"; playlist_display_mode = "columns";
browser_playlist_prefix = "$2 $5 "; browser_display_mode = "columns";
playlist_disable_highlight_delay = "1"; search_engine_display_mode = "columns";
message_delay_time = "1"; now_playing_prefix = "$b";
progressbar_look = ""; now_playing_suffix = "$/b";
colors_enabled = "yes"; browser_playlist_prefix = "$2 $5 ";
empty_tag_color = "red"; playlist_disable_highlight_delay = "1";
statusbar_color = "blue"; message_delay_time = "1";
state_line_color = "black"; progressbar_look = "";
state_flags_color = "default"; colors_enabled = "yes";
main_window_color = "blue"; empty_tag_color = "red";
header_window_color = "white"; statusbar_color = "blue";
alternative_ui_separator_color = "black"; state_line_color = "black";
window_border_color = "green"; state_flags_color = "default";
active_window_border = "red"; main_window_color = "blue";
volume_color = "default"; header_window_color = "white";
progressbar_color = "black"; alternative_ui_separator_color = "black";
progressbar_elapsed_color = "blue"; window_border_color = "green";
statusbar_time_color = "blue"; active_window_border = "red";
player_state_color = "default"; volume_color = "default";
display_bitrate = "yes"; progressbar_color = "black";
autocenter_mode = "yes"; progressbar_elapsed_color = "blue";
centered_cursor = "yes"; statusbar_time_color = "blue";
titles_visibility = "no"; player_state_color = "default";
enable_window_title = "yes"; display_bitrate = "yes";
statusbar_visibility = "yes"; autocenter_mode = "yes";
empty_tag_marker=""; centered_cursor = "yes";
mouse_support = "yes"; titles_visibility = "no";
header_visibility = "no"; enable_window_title = "yes";
display_remaining_time = "no"; statusbar_visibility = "yes";
ask_before_clearing_playlists = "yes"; empty_tag_marker = "";
discard_colors_if_item_is_selected = "yes"; mouse_support = "yes";
user_interface = "alternative"; header_visibility = "no";
default_find_mode = "wrapped"; display_remaining_time = "no";
lyrics_directory = "~/.lyrics"; ask_before_clearing_playlists = "yes";
follow_now_playing_lyrics = "yes"; discard_colors_if_item_is_selected = "yes";
store_lyrics_in_song_dir = "no"; user_interface = "alternative";
ignore_leading_the = "yes"; default_find_mode = "wrapped";
lines_scrolled = "1"; lyrics_directory = "~/.lyrics";
mouse_list_scroll_whole_page = "no"; follow_now_playing_lyrics = "yes";
show_hidden_files_in_local_browser = "no"; store_lyrics_in_song_dir = "no";
startup_screen = "playlist"; ignore_leading_the = "yes";
execute_on_song_change="/home/dobbie/.bin/np"; lines_scrolled = "1";
connected_message_on_startup = "no"; mouse_list_scroll_whole_page = "no";
playlist_separate_albums = "no"; show_hidden_files_in_local_browser = "no";
allow_for_physical_item_deletion = "no"; startup_screen = "playlist";
visualizer_in_stereo = "yes"; execute_on_song_change = "/home/dobbie/.bin/np";
visualizer_data_source = "/tmp/mpd.fifo"; connected_message_on_startup = "no";
visualizer_type = "wave_filled"; playlist_separate_albums = "no";
visualizer_look = ""; allow_for_physical_item_deletion = "no";
}; visualizer_in_stereo = "yes";
}; visualizer_data_source = "/tmp/mpd.fifo";
visualizer_type = "wave_filled";
visualizer_look = "";
}; };
};
}; };
};
} }

View file

@ -1,196 +1,190 @@
{ config, inputs, lib, pkgs, ... }: { config, inputs, lib, pkgs, ... }:
with lib; let with lib;
cfg = config.modules.programs.neovim; let
username = config.modules.other.system.username; cfg = config.modules.programs.neovim;
username = config.modules.other.system.username;
in { in {
options.modules.programs.neovim.enable = mkEnableOption "neovim"; options.modules.programs.neovim.enable = mkEnableOption "neovim";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
imports = [ inputs.nixvim.homeManagerModules.nixvim ]; imports = [ inputs.nixvim.homeManagerModules.nixvim ];
programs.nixvim = { programs.nixvim = {
enable = true; enable = true;
enableMan = true; enableMan = true;
defaultEditor = true; defaultEditor = true;
opts = { opts = {
background = "dark"; background = "dark";
shiftwidth = 4; shiftwidth = 4;
autoread = true; autoread = true;
cmdheight = 1; cmdheight = 1;
encoding = "utf8"; encoding = "utf8";
expandtab = true; expandtab = true;
hidden = true; hidden = true;
ignorecase = true; ignorecase = true;
linebreak = true; linebreak = true;
mousemoveevent = true; mousemoveevent = true;
number = true; number = true;
relativenumber = true; relativenumber = true;
showmatch = true; showmatch = true;
smartcase = true; smartcase = true;
smartindent = true; smartindent = true;
smarttab = true; smarttab = true;
so = 7; so = 7;
timeoutlen = 500; timeoutlen = 500;
tabstop = 4; tabstop = 4;
updatetime = 50; updatetime = 50;
};
globals.mapleader = " ";
plugins = {
lualine = {
enable = true;
theme = "catppuccin";
};
treesitter = {
enable = true;
folding = false;
indent = true;
nixvimInjections = true;
incrementalSelection.enable = true;
};
treesitter-context = {
enable = true;
};
coq-nvim = {
enable = true;
installArtifacts = true;
settings = {
auto_start = "shut-up";
keymap.recommended = true;
completion.always = false;
};
};
neo-tree = {
enable = true;
};
# TODO laytan/cloak.nvim
lsp = {
enable = true;
servers = {
rust-analyzer = {
enable = true;
installCargo = false;
installRustc = false;
};
lua-ls.enable = true;
ccls.enable = true;
nil_ls.enable = true;
bashls.enable = true;
tsserver.enable = true;
java-language-server.enable = true;
#pylyzer.enable = true;
rnix-lsp.enable = true;
pyright.enable = true;
};
#onAttach = ''
# vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
# local bufopts = { noremap = true, silent = true, buffer = bufnr }
# vim.keymap.set('n', '<space>wl', function()
# print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
# end, bufopts)
# vim.keymap.set('n', '<C-f>', function() vim.lsp.buf.format { async = true } end, bufopts)
#'';
keymaps = {
lspBuf = {
gD = "declaration";
gd = "definition";
K = "hover";
gi = "implementation";
"<C-k>" = "signature_help";
"<leader>wa" = "add_workspace_folder";
"<leader>wr" = "remove_workspace_folder";
"<leader>wl" = "list_workspace_folders";
"<leader>D" = "type_definition";
"<leader>r" = "rename";
"<leader>a" = "code_action";
gr = "references";
"<C-f>" = "format";
};
diagnostic = {
"<leader>e" = "open_float";
"<leader>j" = "goto_prev";
"<leader>k" = "goto_next";
"<leader>q" = "setloclist";
};
silent = true;
};
};
rust-tools = {
enable = true;
crateGraph = {
enabledGraphvizBackends = ["png" "svg"];
backend = "x11";
};
inlayHints = {
auto = true;
onlyCurrentLine = true;
showParameterHints = true;
};
};
fidget.enable = true;
telescope = {
enable = true;
keymaps = {
"<leader>ff" = "find_files";
"<leader>fg" = "git_files";
"<leader>fs" = "live_grep";
"<leader>fb" = "buffers";
"<leader>fh" = "help_tags";
};
keymapsSilent = true;
};
comment.enable = true;
harpoon = {
enable = true;
package = pkgs.vimPlugins.harpoon.overrideAttrs {
src = pkgs.fetchFromGitHub {
owner = "ThePrimeagen";
repo = "harpoon";
rev = "a38be6e0dd4c6db66997deab71fc4453ace97f9c";
hash = "sha256-RjwNUuKQpLkRBX3F9o25Vqvpu3Ah1TCFQ5Dk4jXhsbI=";
};
};
enableTelescope = true;
keymapsSilent = false;
};
markdown-preview = {
enable = true;
settings.theme = "dark";
};
};
extraPlugins = with pkgs.vimPlugins; [
zen-mode-nvim
lazygit-nvim
];
keymaps = [
{
mode = "n";
key = "<leader>pv";
action = "<cmd>Explore<CR>";
}
{
mode = "n";
key = "<leader>w";
action = "<cmd>w<CR>";
}
{
mode = "n";
key = "<leader>qw";
action = "<cmd>q<CR>";
}
{
mode = "n";
key = "<leader>gg";
action = "<cmd>LazyGit<CR>";
}
];
};
}; };
globals.mapleader = " ";
plugins = {
lualine = {
enable = true;
theme = "catppuccin";
};
treesitter = {
enable = true;
folding = false;
indent = true;
nixvimInjections = true;
incrementalSelection.enable = true;
};
treesitter-context = { enable = true; };
coq-nvim = {
enable = true;
installArtifacts = true;
settings = {
auto_start = "shut-up";
keymap.recommended = true;
completion.always = false;
};
};
neo-tree = { enable = true; };
# TODO laytan/cloak.nvim
lsp = {
enable = true;
servers = {
rust-analyzer = {
enable = true;
installCargo = false;
installRustc = false;
};
lua-ls.enable = true;
ccls.enable = true;
nil_ls.enable = true;
bashls.enable = true;
tsserver.enable = true;
java-language-server.enable = true;
#pylyzer.enable = true;
rnix-lsp.enable = true;
pyright.enable = true;
};
#onAttach = ''
# vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
# local bufopts = { noremap = true, silent = true, buffer = bufnr }
# vim.keymap.set('n', '<space>wl', function()
# print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
# end, bufopts)
# vim.keymap.set('n', '<C-f>', function() vim.lsp.buf.format { async = true } end, bufopts)
#'';
keymaps = {
lspBuf = {
gD = "declaration";
gd = "definition";
K = "hover";
gi = "implementation";
"<C-k>" = "signature_help";
"<leader>wa" = "add_workspace_folder";
"<leader>wr" = "remove_workspace_folder";
"<leader>wl" = "list_workspace_folders";
"<leader>D" = "type_definition";
"<leader>r" = "rename";
"<leader>a" = "code_action";
gr = "references";
"<C-f>" = "format";
};
diagnostic = {
"<leader>e" = "open_float";
"<leader>j" = "goto_prev";
"<leader>k" = "goto_next";
"<leader>q" = "setloclist";
};
silent = true;
};
};
rust-tools = {
enable = true;
crateGraph = {
enabledGraphvizBackends = [ "png" "svg" ];
backend = "x11";
};
inlayHints = {
auto = true;
onlyCurrentLine = true;
showParameterHints = true;
};
};
fidget.enable = true;
telescope = {
enable = true;
keymaps = {
"<leader>ff" = "find_files";
"<leader>fg" = "git_files";
"<leader>fs" = "live_grep";
"<leader>fb" = "buffers";
"<leader>fh" = "help_tags";
};
keymapsSilent = true;
};
comment.enable = true;
harpoon = {
enable = true;
package = pkgs.vimPlugins.harpoon.overrideAttrs {
src = pkgs.fetchFromGitHub {
owner = "ThePrimeagen";
repo = "harpoon";
rev = "a38be6e0dd4c6db66997deab71fc4453ace97f9c";
hash = "sha256-RjwNUuKQpLkRBX3F9o25Vqvpu3Ah1TCFQ5Dk4jXhsbI=";
};
};
enableTelescope = true;
keymapsSilent = false;
};
markdown-preview = {
enable = true;
settings.theme = "dark";
};
};
extraPlugins = with pkgs.vimPlugins; [ zen-mode-nvim lazygit-nvim ];
keymaps = [
{
mode = "n";
key = "<leader>pv";
action = "<cmd>Explore<CR>";
}
{
mode = "n";
key = "<leader>w";
action = "<cmd>w<CR>";
}
{
mode = "n";
key = "<leader>qw";
action = "<cmd>q<CR>";
}
{
mode = "n";
key = "<leader>gg";
action = "<cmd>LazyGit<CR>";
}
];
};
}; };
};
} }

View file

@ -1,82 +1,82 @@
{ { config, lib, ... }:
config, with lib;
lib, let
... cfg = config.modules.programs.newsboat;
}: with lib; let username = config.modules.other.system.username;
cfg = config.modules.programs.newsboat;
username = config.modules.other.system.username;
in { in {
options.modules.programs.newsboat.enable = mkEnableOption "newsboat"; options.modules.programs.newsboat.enable = mkEnableOption "newsboat";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
programs.newsboat = { programs.newsboat = {
enable = true; enable = true;
autoReload = true; autoReload = true;
extraConfig = '' extraConfig = ''
download-full-page yes download-full-page yes
download-retries 3 download-retries 3
error-log /dev/null error-log /dev/null
cookie-cache ~/.cache/newsboat/cookies.txt cookie-cache ~/.cache/newsboat/cookies.txt
bind-key j down bind-key j down
bind-key k up bind-key k up
bind-key G end bind-key G end
bind-key g home bind-key g home
bind-key d pagedown bind-key d pagedown
bind-key u pageup bind-key u pageup
bind-key a toggle-article-read bind-key a toggle-article-read
macro x set browser "setsid -f mpv --really-quiet --no-terminal" ; open-in-browser ; set browser librewolf macro x set browser "setsid -f mpv --really-quiet --no-terminal" ; open-in-browser ; set browser librewolf
color listnormal color15 default color listnormal color15 default
color listnormal_unread color2 default color listnormal_unread color2 default
color listfocus_unread color2 color0 color listfocus_unread color2 color0
color listfocus default color0 color listfocus default color0
color background default default color background default default
color article default default color article default default
color end-of-text-marker color8 default color end-of-text-marker color8 default
color info color4 color8 color info color4 color8
color hint-separator default color8 color hint-separator default color8
color hint-description default color8 color hint-description default color8
color title color14 color8 color title color14 color8
highlight article "^(Feed|Title|Author|Link|Date): .+" color4 default bold highlight article "^(Feed|Title|Author|Link|Date): .+" color4 default bold
highlight article "^(Feed|Title|Author|Link|Date):" color14 default bold highlight article "^(Feed|Title|Author|Link|Date):" color14 default bold
highlight article "\\((link|image|video)\\)" color8 default highlight article "\\((link|image|video)\\)" color8 default
highlight article "https?://[^ ]+" color4 default highlight article "https?://[^ ]+" color4 default
highlight article "\[[0-9]+\]" color6 default bold highlight article "\[[0-9]+\]" color6 default bold
user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
''; '';
urls = [ urls = [
{ {
title = "NixOS Weekly"; title = "NixOS Weekly";
url = "https://weekly.nixos.org/feeds/all.rss.xml"; url = "https://weekly.nixos.org/feeds/all.rss.xml";
} }
{ {
title = "Veronica Explains"; title = "Veronica Explains";
url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCMiyV_Ib77XLpzHPQH_q0qQ"; url =
} "https://www.youtube.com/feeds/videos.xml?channel_id=UCMiyV_Ib77XLpzHPQH_q0qQ";
{ }
title = "Mental Outlaw"; {
url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA"; title = "Mental Outlaw";
} url =
{ "https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA";
title = "Hacker News"; }
url = "https://hnrss.org/newest"; {
} title = "Hacker News";
{ url = "https://hnrss.org/newest";
title = "Phoronix"; }
url = "https://www.phoronix.com/rss.php"; {
} title = "Phoronix";
{ url = "https://www.phoronix.com/rss.php";
title = "LWN"; }
url = "https://lwn.net/headlines/rss"; {
} title = "LWN";
{ url = "https://lwn.net/headlines/rss";
title = "Hyprland Commit Feed"; }
url = "https://github.com/hyprwm/Hyprland/commits/main.atom"; {
} title = "Hyprland Commit Feed";
]; url = "https://github.com/hyprwm/Hyprland/commits/main.atom";
}; }
}; ];
};
}; };
};
} }

View file

@ -1,18 +1,17 @@
{ config, lib, ... }: { config, lib, ... }:
with lib; let with lib;
cfg = config.modules.programs.yazi; let
username = config.modules.other.system.username; cfg = config.modules.programs.yazi;
username = config.modules.other.system.username;
in { in {
options.modules.programs.yazi = { options.modules.programs.yazi = { enable = mkEnableOption "yazi"; };
enable = mkEnableOption "yazi";
};
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { home-manager.users.${username} = {
programs.yazi = { programs.yazi = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
}; };
};
}; };
};
} }

View file

@ -1,10 +1,10 @@
_:{ _: {
boot.loader = { boot.loader = {
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
grub = { grub = {
enable = true; enable = true;
efiSupport = true; efiSupport = true;
device = "nodev"; device = "nodev";
}; };
}; };
} }

View file

@ -1,19 +1,18 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let username = config.modules.other.system.username;
username = config.modules.other.system.username;
in { in {
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;
powerOnBoot = true; powerOnBoot = true;
}; };
services.blueman.enable = true; services.blueman.enable = true;
# Bluetooth headset media control buttons # Bluetooth headset media control buttons
systemd.user.services.mpris-proxy = { systemd.user.services.mpris-proxy = {
description = "Mpris proxy"; description = "Mpris proxy";
after = [ "network.target" "sound.target" ]; after = [ "network.target" "sound.target" ];
wantedBy = [ "default.target" ]; wantedBy = [ "default.target" ];
serviceConfig.ExecStart = "${pkgs.bluez}/bin/mpris-proxy"; serviceConfig.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
}; };
} }

View file

@ -1,5 +1,4 @@
{ config, lib, pkgs, ...}: { config, lib, pkgs, ... }: {
{
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = [ "nvidia" ];
hardware.opengl = { hardware.opengl = {
enable = true; enable = true;

View file

@ -1,19 +1,15 @@
{ config, lib, ... }: { config, lib, ... }:
let let username = config.modules.other.system.username;
username = config.modules.other.system.username;
in { in {
networking = { networking = {
networkmanager = { networkmanager = {
enable = true; enable = true;
dns = "systemd-resolved"; dns = "systemd-resolved";
}; };
}; };
services.resolved = { services.resolved = {
enable = true; enable = true;
fallbackDns = [ fallbackDns = [ "9.9.9.9" "2620::fe::fe" ];
"9.9.9.9"
"2620::fe::fe"
];
}; };
users.users.${username}.extraGroups = [ "networkmanager" ]; users.users.${username}.extraGroups = [ "networkmanager" ];
} }

View file

@ -1,4 +1,3 @@
{ inputs, lib, ...}: { inputs, lib, ... }: {
{ nix.registry = lib.mapAttrs (_: v: { flake = v; }) inputs;
nix.registry = lib.mapAttrs (_: v: {flake = v; }) inputs;
} }

View file

@ -1,6 +1 @@
{ { self, ... }: { environment.etc."current-flake".source = self; }
self,
...
}: {
environment.etc."current-flake".source = self;
}

View file

@ -1,10 +1,7 @@
{ pkgs, ... }: { pkgs, ... }: {
{
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
material-design-icons material-design-icons
(nerdfonts.override { (nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
fonts = [ "JetBrainsMono"];
})
noto-fonts noto-fonts
noto-fonts-cjk-sans noto-fonts-cjk-sans
noto-fonts-cjk-serif noto-fonts-cjk-serif

View file

@ -1,75 +1,73 @@
{ config, lib, ... }: { config, lib, ... }:
with lib; with lib; {
{
options.modules.other.system.monitors = mkOption { options.modules.other.system.monitors = mkOption {
description = " description = "\n List of monitors to use\n ";
List of monitors to use default = [ ];
"; type = with types;
default = []; types.listOf (submodule {
type = with types; types.listOf (submodule { options = {
options = { name = mkOption {
name = mkOption { type = types.str;
type = types.str; description = "Give your monitor a cute name";
description = "Give your monitor a cute name"; default = "monitor0(I am lazy)";
default = "monitor0(I am lazy)"; };
}; device = mkOption {
device = mkOption { type = types.str;
type = types.str; description = "The actual device name of the monitor";
description = "The actual device name of the monitor"; };
}; resolution = mkOption {
resolution = mkOption { type = types.submodule {
type = types.submodule { options = {
options = { x = mkOption {
x = mkOption { type = types.int;
type = types.int; description = "monitor width";
description = "monitor width"; default = "1920";
default = "1920"; };
}; y = mkOption {
y = mkOption { type = types.int;
type = types.int; description = "monitor height";
description = "monitor height"; default = "1080";
default = "1080"; };
}; };
}; };
}; };
}; scale = mkOption {
scale = mkOption {
type = types.number; type = types.number;
description = "monitor scale"; description = "monitor scale";
default = 1.0; default = 1.0;
}; };
refresh_rate = mkOption { refresh_rate = mkOption {
type = types.int; type = types.int;
description = "monitor refresh rate (in Hz)"; description = "monitor refresh rate (in Hz)";
default = 60; default = 60;
}; };
position = mkOption { position = mkOption {
type = types.submodule { type = types.submodule {
options = { options = {
x = mkOption { x = mkOption {
type = types.int; type = types.int;
default = 0; default = 0;
}; };
y = mkOption { y = mkOption {
type = types.int; type = types.int;
default = 0; default = 0;
};
}; };
}; };
description = "absolute monitor posititon";
default = {
x = 0;
y = 0;
};
}; };
description = "absolute monitor posititon"; transform = mkOption {
default = { type = types.ints.between 0 3;
x = 0; description = "Rotation of the monitor counterclockwise";
y = 0; default = 0;
}; };
}; };
transform = mkOption { });
type = types.ints.between 0 3;
description = "Rotation of the monitor counterclockwise";
default = 0;
};
};
});
}; };
} }

View file

@ -1,16 +1,17 @@
{ inputs, outputs, ... }: { inputs, outputs, ... }:
let let
add_nur = self: super: { add_nur = self: super: {
# nur-no-pkgs = import inputs.nur-no-pkgs { pkgs = inputs.nixpkgs.legacyPackages.${profile-config.system}; nurpkgs = inputs.nixpkgs.legacyPackages.${profile-config.system}; }; # nur-no-pkgs = import inputs.nur-no-pkgs { pkgs = inputs.nixpkgs.legacyPackages.${profile-config.system}; nurpkgs = inputs.nixpkgs.legacyPackages.${profile-config.system}; };
nur = import inputs.nur { nur = import inputs.nur {
pkgs = import inputs.nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; }; # .legacyPackages.${profile-config.system}; pkgs = import inputs.nixpkgs {
nurpkgs = import inputs.nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; }; #.legacyPackages.${profile-config.system}; system = "x86_64-linux";
config.allowUnfree = true;
}; # .legacyPackages.${profile-config.system};
nurpkgs = import inputs.nixpkgs {
system = "x86_64-linux";
config.allowUnfree = true;
}; # .legacyPackages.${profile-config.system};
};
}; };
}; in { nixpkgs.overlays = [ add_nur ]; }
in
{
nixpkgs.overlays = [
add_nur
];
}