Format with nixfmt-rfc

This commit is contained in:
DashieTM 2024-08-25 19:10:41 +02:00
parent 8c9f699269
commit a90a9c3a8e
60 changed files with 1756 additions and 1039 deletions

View file

@ -1,11 +1,23 @@
{ lib, config, pkgs, options, ... }: {
{
lib,
config,
pkgs,
options,
...
}:
{
options.conf = {
system = lib.mkOption {
default = "x86_64-linux";
# no fisherprice unix support
type = with lib.types;
(enum [ "x86_64-linux" "aarch64-linux" "aarch64-linux-android" ]);
type =
with lib.types;
(enum [
"x86_64-linux"
"aarch64-linux"
"aarch64-linux-android"
]);
example = "aarch64-linux";
description = ''
System architecture.
@ -15,7 +27,12 @@
cpu = lib.mkOption {
# TODO: how to enable arm?
default = "amd";
type = with lib.types; (enum [ "amd" "intel" ]);
type =
with lib.types;
(enum [
"amd"
"intel"
]);
example = "intel";
description = ''
cpu microcode.
@ -43,10 +60,12 @@
ironbar = {
modules = lib.mkOption {
default = [ ];
example = [{
type = "upower";
class = "memory-usage";
}];
example = [
{
type = "upower";
class = "memory-usage";
}
];
type = with lib.types; listOf attrs;
description = ''
Adds modules to ironbar.
@ -129,8 +148,16 @@
};
nvim-colorscheme = lib.mkOption {
default = { tokyonight = { enable = true; }; };
example = { catppuccin = { enable = true; }; };
default = {
tokyonight = {
enable = true;
};
};
example = {
catppuccin = {
enable = true;
};
};
type = lib.types.attrs;
description = ''
nixvim colorscheme.
@ -167,10 +194,8 @@
};
config = {
conf.kernel =
lib.mkIf (config.mods.gaming.enable && config.mods.gaming.kernel)
pkgs.linuxPackages_xanmod_latest;
} // (lib.optionalAttrs (options ? system.stateVersion) {
system.stateVersion = "unstable";
});
conf.kernel = lib.mkIf (
config.mods.gaming.enable && config.mods.gaming.kernel
) pkgs.linuxPackages_xanmod_latest;
} // (lib.optionalAttrs (options ? system.stateVersion) { system.stateVersion = "unstable"; });
}

View file

@ -1 +1,6 @@
{ imports = [ ./programs ./conf.nix ]; }
{
imports = [
./programs
./conf.nix
];
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods = {
acpid.enable = lib.mkOption {
@ -11,9 +17,7 @@
};
};
config = lib.mkIf config.mods.acpid.enable
(lib.optionalAttrs (options ? virtualisation.virtualbox.host) {
services.acpid.enable = true;
});
config = lib.mkIf config.mods.acpid.enable (
lib.optionalAttrs (options ? virtualisation.virtualbox.host) { services.acpid.enable = true; }
);
}

View file

@ -1,4 +1,12 @@
{ config, lib, options, pkgs, inputs, ... }: {
{
config,
lib,
options,
pkgs,
inputs,
...
}:
{
options.mods = {
default_base_packages = {
enable = lib.mkOption {
@ -21,83 +29,89 @@
};
};
config = (lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages =
config.mods.default_base_packages.additional_packages;
} // (lib.mkIf config.mods.default_base_packages.enable
(lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages = with pkgs; [
openssl
dbus
glib
gtk4
gtk3
libadwaita
gtk-layer-shell
gtk4-layer-shell
direnv
dconf
gsettings-desktop-schemas
gnome.nixos-gsettings-overrides
bibata-cursors
xorg.xkbutils
libxkbcommon
icon-library
adwaita-icon-theme
hicolor-icon-theme
morewaita-icon-theme
kdePackages.breeze-icons
seahorse
upower
thunderbird
podman-tui
podman-compose
dive
];
config = (
lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages = config.mods.default_base_packages.additional_packages;
}
// (lib.mkIf config.mods.default_base_packages.enable (
lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages = with pkgs; [
openssl
dbus
glib
gtk4
gtk3
libadwaita
gtk-layer-shell
gtk4-layer-shell
direnv
dconf
gsettings-desktop-schemas
gnome.nixos-gsettings-overrides
bibata-cursors
xorg.xkbutils
libxkbcommon
icon-library
adwaita-icon-theme
hicolor-icon-theme
morewaita-icon-theme
kdePackages.breeze-icons
seahorse
upower
thunderbird
podman-tui
podman-compose
dive
];
gtk.iconCache.enable = false;
gtk.iconCache.enable = false;
fonts.packages = with pkgs; [ cantarell-fonts ];
fonts.packages = with pkgs; [ cantarell-fonts ];
virtualisation = {
containers.enable = true;
podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
};
services = {
upower.enable = true;
dbus = {
enable = true;
packages = with pkgs; [ gnome2.GConf ];
};
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
};
programs = {
nix-ld = {
enable = true;
libraries = with pkgs; [ jdk zlib ];
};
direnv = {
package = pkgs.direnv;
silent = false;
loadInNixShell = true;
direnvrcExtra = "";
nix-direnv = {
virtualisation = {
containers.enable = true;
podman = {
enable = true;
package = pkgs.nix-direnv;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
};
ssh.startAgent = true;
gnupg.agent.enable = true;
};
})));
services = {
upower.enable = true;
dbus = {
enable = true;
packages = with pkgs; [ gnome2.GConf ];
};
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
};
programs = {
nix-ld = {
enable = true;
libraries = with pkgs; [
jdk
zlib
];
};
direnv = {
package = pkgs.direnv;
silent = false;
loadInNixShell = true;
direnvrcExtra = "";
nix-direnv = {
enable = true;
package = pkgs.nix-direnv;
};
};
ssh.startAgent = true;
gnupg.agent.enable = true;
};
}
))
);
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods = {
bluetooth.enable = lib.mkOption {
default = false;
@ -10,12 +16,12 @@
};
};
config = lib.mkIf config.mods.bluetooth.enable
(lib.optionalAttrs (options ? hardware.bluetooth) {
config = lib.mkIf config.mods.bluetooth.enable (
lib.optionalAttrs (options ? hardware.bluetooth) {
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, pkgs, options, ... }: {
{
lib,
config,
pkgs,
options,
...
}:
{
options.mods = {
coding = {
enable = lib.mkOption {
@ -28,8 +35,8 @@
};
};
config = lib.mkIf config.mods.coding.enable
(lib.optionalAttrs (options ? home.packages) {
config = lib.mkIf config.mods.coding.enable (
lib.optionalAttrs (options ? home.packages) {
programs.dashvim = lib.mkIf config.mods.coding.dashvim {
enable = true;
colorscheme = config.mods.stylix.colorscheme;
@ -141,5 +148,6 @@
tmate
];
});
}
);
}

View file

@ -1,4 +1,9 @@
{ lib, config, options, ... }:
{
lib,
config,
options,
...
}:
let
driveModule = lib.types.submodule {
@ -19,12 +24,17 @@ let
example = {
device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4";
options = [ "noatime" "nodiratime" "discard" ];
options = [
"noatime"
"nodiratime"
"discard"
];
};
};
};
};
in {
in
{
options.mods = {
useSwap = {
enable = lib.mkOption {
@ -50,14 +60,20 @@ in {
default = [
];
example = [{
name = "drive2";
drive = {
device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4";
options = [ "noatime" "nodiratime" "discard" ];
};
}];
example = [
{
name = "drive2";
drive = {
device = "/dev/disk/by-label/DRIVE2";
fsType = "ext4";
options = [
"noatime"
"nodiratime"
"discard"
];
};
}
];
# TODO: how to make this work
# type = with lib.types; listOf (attrsOf driveModule);
type = with lib.types; listOf (attrsOf anything);
@ -67,33 +83,52 @@ in {
};
};
config = (lib.optionalAttrs (options ? fileSystems) {
fileSystems = builtins.listToAttrs (map ({ name, drive }: {
name = "/" + name;
value = drive;
}) config.mods.extraDrives)
// (lib.optionalAttrs config.mods.defaultDrives.enable) {
"/" = {
device = "/dev/disk/by-label/ROOT";
fsType = "btrfs";
options = [ "noatime" "nodiratime" "discard" ];
};
config = (
lib.optionalAttrs (options ? fileSystems) {
fileSystems =
builtins.listToAttrs (
map (
{ name, drive }:
{
name = "/" + name;
value = drive;
}
) config.mods.extraDrives
)
// (lib.optionalAttrs config.mods.defaultDrives.enable) {
"/" = {
device = "/dev/disk/by-label/ROOT";
fsType = "btrfs";
options = [
"noatime"
"nodiratime"
"discard"
];
};
"/boot" = {
device = "/dev/disk/by-label/BOOT";
fsType = "vfat";
options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ];
};
"/boot" = {
device = "/dev/disk/by-label/BOOT";
fsType = "vfat";
options = [
"rw"
"fmask=0022"
"dmask=0022"
"noatime"
];
};
"/home" = {
device = "/dev/disk/by-label/HOME";
fsType = "btrfs";
options = [ "noatime" "nodiratime" "discard" ];
"/home" = {
device = "/dev/disk/by-label/HOME";
fsType = "btrfs";
options = [
"noatime"
"nodiratime"
"discard"
];
};
};
};
# TODO make this convert to choice of drives -> thanks to funny types this doesn't work...
swapDevices = lib.mkIf config.mods.useSwap.enable [{
device = "/dev/disk/by-label/SWAP";
}];
});
# TODO make this convert to choice of drives -> thanks to funny types this doesn't work...
swapDevices = lib.mkIf config.mods.useSwap.enable [ { device = "/dev/disk/by-label/SWAP"; } ];
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.firefox = {
enable = lib.mkOption {
default = true;
@ -56,8 +63,8 @@
description = "Firefox extensions (from nur)";
};
};
config = lib.mkIf config.mods.firefox.enable
(lib.optionalAttrs (options ? programs.firefox.profiles) {
config = lib.mkIf config.mods.firefox.enable (
lib.optionalAttrs (options ? programs.firefox.profiles) {
programs.firefox = {
enable = true;
policies = config.mods.firefox.configuration;
@ -72,5 +79,6 @@
extensions = config.mods.firefox.extensions;
};
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.fish = {
enable = lib.mkOption {
default = true;
@ -7,8 +14,8 @@
description = "Enables fish";
};
};
config = lib.mkIf config.mods.fish.enable
(lib.optionalAttrs (options ? programs.fish) {
config = lib.mkIf config.mods.fish.enable (
lib.optionalAttrs (options ? programs.fish) {
programs.fish = {
enable = true;
shellInit = ''
@ -147,5 +154,6 @@
direnv hook fish | source
'';
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.flatpak = {
enable = lib.mkOption {
default = true;
@ -13,18 +20,22 @@
description = "Flatpak packages";
};
};
config = lib.mkIf config.mods.flatpak.enable
(lib.optionalAttrs (options ? services.flatpak.remote) {
services.flatpak.remotes = lib.mkOptionDefault [{
name = "flathub-stable";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}];
config = lib.mkIf config.mods.flatpak.enable (
lib.optionalAttrs (options ? services.flatpak.remote) {
services.flatpak.remotes = lib.mkOptionDefault [
{
name = "flathub-stable";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}
];
services.flatpak.uninstallUnmanaged = true;
} // lib.optionalAttrs (options ? services.flatpak.packages) {
}
// lib.optionalAttrs (options ? services.flatpak.packages) {
services.flatpak.packages = [
# fallback if necessary, but generally avoided as nix is superior :)
# default flatseal installation since flatpak permissions are totally not a broken idea
"com.github.tchx84.Flatseal"
] ++ config.mods.flatpak.additional_packages;
});
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.gaming = {
enable = lib.mkOption {
default = false;
@ -7,7 +14,14 @@
description = "Enabled gaming related features.";
};
tools = lib.mkOption {
default = with pkgs; [ gamemode steam lutris wine adwsteamgtk heroic ];
default = with pkgs; [
gamemode
steam
lutris
wine
adwsteamgtk
heroic
];
example = [ ];
type = with lib.types; listOf package;
description = "Install gaming related packages";
@ -34,8 +48,7 @@
default = true;
example = false;
type = lib.types.bool;
description =
"Whether to use GPU performance setting. NOTE: this is at your own risk!";
description = "Whether to use GPU performance setting. NOTE: this is at your own risk!";
};
gpu_device = lib.mkOption {
default = 0;
@ -44,8 +57,8 @@
description = "Your gpu device.(Physical id of lshw)";
};
};
config = lib.mkIf config.mods.gaming.enable
(lib.optionalAttrs (options ? environment.systemPackages) {
config = lib.mkIf config.mods.gaming.enable (
lib.optionalAttrs (options ? environment.systemPackages) {
environment.systemPackages = config.mods.gaming.tools;
programs.steam.enable = config.mods.gaming.steam;
@ -53,7 +66,9 @@
programs.gamemode = {
enableRenice = true;
settings = {
general = { governor = "performance"; };
general = {
governor = "performance";
};
gpu = lib.mkIf config.mods.gaming.gpu_optimization {
apply_gpu_optimisations = "accept-responsibility";
gpu_device = config.mods.gaming.gpu_device;
@ -66,5 +81,6 @@
};
};
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.git = {
username = lib.mkOption {
default = "DashieTM";
@ -15,19 +22,9 @@
ssh_config = lib.mkOption {
default = ''
Host github.com
${
if (config.sops.secrets ? hub.path) then
"IdentityFile ${config.sops.secrets.hub.path}"
else
""
}
${if (config.sops.secrets ? hub.path) then "IdentityFile ${config.sops.secrets.hub.path}" else ""}
Host gitlab.com
${
if (config.sops.secrets ? lab.path) then
"IdentityFile ${config.sops.secrets.lab.path}"
else
""
}
${if (config.sops.secrets ? lab.path) then "IdentityFile ${config.sops.secrets.lab.path}" else ""}
Host dashie.org
${
if (config.sops.secrets ? dashie.path) then
@ -41,16 +38,22 @@
description = "ssh configuration (keys for git)";
};
};
config = (lib.optionalAttrs (options ? programs.git && options ? home.file) {
programs.git = {
enable = true;
userName = config.mods.git.username;
userEmail = config.mods.git.email;
extraConfig = {
merge = { tool = "nvimdiff"; };
diff = { tool = "nvimdiff"; };
config = (
lib.optionalAttrs (options ? programs.git && options ? home.file) {
programs.git = {
enable = true;
userName = config.mods.git.username;
userEmail = config.mods.git.email;
extraConfig = {
merge = {
tool = "nvimdiff";
};
diff = {
tool = "nvimdiff";
};
};
};
};
home.file.".ssh/config".text = config.mods.git.ssh_config;
});
home.file.".ssh/config".text = config.mods.git.ssh_config;
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods = {
gnome_services.enable = lib.mkOption {
default = true;
@ -11,17 +18,26 @@
};
};
config = lib.mkIf config.mods.gnome_services.enable
(lib.optionalAttrs (options ? services.gnome.gnome-keyring) {
config = lib.mkIf config.mods.gnome_services.enable (
lib.optionalAttrs (options ? services.gnome.gnome-keyring) {
programs.dconf.enable = true;
services = {
# needed for GNOME services outside of GNOME Desktop
dbus.packages = with pkgs; [ gcr gnome.gnome-settings-daemon ];
dbus.packages = with pkgs; [
gcr
gnome.gnome-settings-daemon
];
gnome.gnome-keyring.enable = true;
gvfs.enable = true;
};
} // lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ nautilus sushi nautilus-python ];
});
}
// lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [
nautilus
sushi
nautilus-python
];
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods = {
nvidia.enable = lib.mkOption {
@ -37,8 +44,8 @@
};
};
config = lib.mkIf config.mods.vapi.enable
(lib.optionalAttrs (options ? hardware.graphics) {
config = lib.mkIf config.mods.vapi.enable (
lib.optionalAttrs (options ? hardware.graphics) {
boot = lib.mkIf config.mods.amdgpu.enable {
kernelModules = [ "kvm-amd" ];
initrd.kernelModules = [ "amdgpu" ];
@ -46,20 +53,27 @@
};
hardware = {
graphics = let
base_packages =
[ pkgs.libvdpau-va-gl pkgs.vaapiVdpau pkgs.mesa.drivers ];
rocm_packages =
[ pkgs.rocmPackages.clr.icd pkgs.rocm-opencl-runtime ];
in {
enable = true;
enable32Bit = lib.mkDefault true;
extraPackages = base_packages
++ (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages);
};
graphics =
let
base_packages = [
pkgs.libvdpau-va-gl
pkgs.vaapiVdpau
pkgs.mesa.drivers
];
rocm_packages = [
pkgs.rocmPackages.clr.icd
pkgs.rocm-opencl-runtime
];
in
{
enable = true;
enable32Bit = lib.mkDefault true;
extraPackages = base_packages ++ (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages);
};
};
} // lib.optionalAttrs (options ? hardware.graphics)
(lib.mkIf config.mods.nvidia.enable {
}
// lib.optionalAttrs (options ? hardware.graphics) (
lib.mkIf config.mods.nvidia.enable {
hardware.nvidia = {
modesetting.enable = true;
# powerManagement.enable = false;
@ -69,5 +83,7 @@
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
services.xserver.videoDrivers = [ "nvidia" ];
}));
}
)
);
}

View file

@ -1,4 +1,12 @@
{ config, lib, inputs, pkgs, options, ... }: {
{
config,
lib,
inputs,
pkgs,
options,
...
}:
{
options.mods = {
greetd = {
enable = lib.mkOption {
@ -38,60 +46,72 @@
};
};
config = let
username = config.conf.username;
session = {
command = "${
config =
let
username = config.conf.username;
session = {
command = "${
lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland
} --config /etc/greetd/hyprgreet.conf";
user = username;
};
in lib.mkIf config.mods.greetd.enable
(lib.optionalAttrs (options ? environment) {
services.xserver.displayManager.session = [{
manage = "desktop";
name = "Hyprland";
start = ''
${lib.getExe pkgs.hyprland} & waitPID=$!
'';
}];
# greetd display manager
programs.hyprland.enable = true;
services.greetd = {
enable = true;
settings = {
terminal.vt = 1;
default_session = session;
user = username;
};
};
in
lib.mkIf config.mods.greetd.enable (
lib.optionalAttrs (options ? environment) {
services.xserver.displayManager.session = [
{
manage = "desktop";
name = "Hyprland";
start = ''
${lib.getExe pkgs.hyprland} & waitPID=$!
'';
}
];
environment.etc."greetd/environments".text = ''
Hyprland
'';
# greetd display manager
programs.hyprland.enable = true;
services.greetd = {
enable = true;
settings = {
terminal.vt = 1;
default_session = session;
};
};
# should technically be the same, but this is configured instead in order to provide a decent out of the box login experience.
environment.etc."greetd/hyprgreet.conf".text = ''
exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
environment.etc."greetd/environments".text = ''
Hyprland
'';
monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale}
monitor=,disable
# should technically be the same, but this is configured instead in order to provide a decent out of the box login experience.
environment.etc."greetd/hyprgreet.conf".text = ''
exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
input {
kb_layout = ${config.mods.xkb.layout}
kb_variant = ${config.mods.xkb.variant}
force_no_accel = true
monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale}
monitor=,disable
input {
kb_layout = ${config.mods.xkb.layout}
kb_variant = ${config.mods.xkb.variant}
force_no_accel = true
}
cursor {
enable_hyprcursor = false
}
misc {
disable_splash_rendering = false
disable_hyprland_logo = false
}
env=XCURSOR_THEME,${config.mods.stylix.cursor.name}
env=XCURSOR_SIZE,${config.mods.stylix.cursor.size}
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit
'';
# unlock GPG keyring on login
security.pam.services.greetd.enableGnomeKeyring = true;
}
misc {
disable_splash_rendering = false
disable_hyprland_logo = false
}
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit
'';
# unlock GPG keyring on login
security.pam.services.greetd.enableGnomeKeyring = true;
});
);
}

View file

@ -1,4 +1,12 @@
{ lib, options, config, pkgs, inputs, ... }: {
{
lib,
options,
config,
pkgs,
inputs,
...
}:
{
options.mods.home_packages = {
enable = lib.mkOption {
default = true;
@ -16,71 +24,76 @@
'';
};
};
config = (lib.optionalAttrs (options ? home.packages) {
home.packages = config.mods.home_packages.additional_packages;
} // (lib.mkIf config.mods.home_packages.enable
(lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [
nheko
nextcloud-client
xournalpp
vesktop
kitty
ripgrep
# TODO add fcp once fixed....
rm-improved
bat
fd
lsd
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
noto-fonts
flatpak
networkmanager
zoxide
fastfetch
gnome-keyring
dbus
killall
adw-gtk3
qt5ct
qt6ct
gnutar
nix-index
libnotify
zenith
nh
amberol
pulseaudio
playerctl
ncspot
poppler_utils
brave
greetd.regreet
flake-checker
ffmpeg
system-config-printer
brightnessctl
];
xdg.configFile."direnv/direnv.toml".source =
(pkgs.formats.toml { }).generate "direnv" {
global = { warn_timeout = "-1s"; };
};
#my own programs
programs = {
hyprdock.enable = true;
oxicalc.enable = true;
ReSet.enable = true;
ReSet.config.plugins = [
inputs.reset-plugins.packages."x86_64-linux".monitor
inputs.reset-plugins.packages."x86_64-linux".keyboard
config = (
lib.optionalAttrs (options ? home.packages) {
home.packages = config.mods.home_packages.additional_packages;
}
// (lib.mkIf config.mods.home_packages.enable (
lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [
nheko
nextcloud-client
xournalpp
vesktop
kitty
ripgrep
# TODO add fcp once fixed....
rm-improved
bat
fd
lsd
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
noto-fonts
flatpak
networkmanager
zoxide
fastfetch
gnome-keyring
dbus
killall
adw-gtk3
qt5ct
qt6ct
gnutar
nix-index
libnotify
zenith
nh
amberol
pulseaudio
playerctl
ncspot
poppler_utils
brave
greetd.regreet
flake-checker
ffmpeg
system-config-printer
brightnessctl
];
ReSet.config.plugin_config = {
Keyboard = {
path = "/home/${config.conf.username}/.config/reset/keyboard.conf";
xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" {
global = {
warn_timeout = "-1s";
};
};
};
})));
#my own programs
programs = {
hyprdock.enable = true;
oxicalc.enable = true;
ReSet.enable = true;
ReSet.config.plugins = [
inputs.reset-plugins.packages."x86_64-linux".monitor
inputs.reset-plugins.packages."x86_64-linux".keyboard
];
ReSet.config.plugin_config = {
Keyboard = {
path = "/home/${config.conf.username}/.config/reset/keyboard.conf";
};
};
};
}
))
);
}

View file

@ -1,4 +1,12 @@
{ lib, config, pkgs, options, inputs, ... }: {
{
lib,
config,
pkgs,
options,
inputs,
...
}:
{
options.mods = {
hyprland.anyrun = {
enable = lib.mkOption {
@ -10,8 +18,8 @@
};
};
config = lib.mkIf config.mods.hyprland.anyrun.enable
(lib.optionalAttrs (options ? programs.anyrun) {
config = lib.mkIf config.mods.hyprland.anyrun.enable (
lib.optionalAttrs (options ? programs.anyrun) {
programs.anyrun = {
enable = true;
config = {
@ -23,8 +31,12 @@
];
#position = "center";
hideIcons = false;
width = { fraction = 0.3; };
y = { fraction = 0.5; };
width = {
fraction = 0.3;
};
y = {
fraction = 0.5;
};
layer = "overlay";
hidePluginInfo = true;
closeOnClick = true;
@ -79,5 +91,6 @@
}
'';
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ config, lib, options, pkgs, ... }: {
{
config,
lib,
options,
pkgs,
...
}:
{
options.mods = {
hyprland = {
enable = lib.mkOption {
@ -61,8 +68,8 @@
};
};
config = lib.mkIf config.mods.hyprland.enable
(lib.optionalAttrs (options ? wayland.windowManager.hyprland) {
config = lib.mkIf config.mods.hyprland.enable (
lib.optionalAttrs (options ? wayland.windowManager.hyprland) {
# install Hyprland related packages
home.packages = with pkgs; [
xorg.xprop
@ -82,15 +89,16 @@
lib.mkIf config.mods.hyprland.use_default_config {
"$mod" = "SUPER";
bindm =
[ "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" ];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
bind = [
# screenshots
''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy''
''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -''
''
$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy''
''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy''
# regular programs
"$mod SUPER,F,exec,firefox"
@ -108,19 +116,14 @@
"$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate"
# media keys
(lib.mkIf config.mods.scripts.audio-control
",XF86AudioMute,exec, audio-control mute")
(lib.mkIf config.mods.scripts.audio-control
",XF86AudioLowerVolume,exec, audio-control sink -5%")
(lib.mkIf config.mods.scripts.audio-control
",XF86AudioRaiseVolume,exec, audio-control sink +5%")
(lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute")
(lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%")
(lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%")
",XF86AudioPlay,exec, playerctl play-pause"
",XF86AudioNext,exec, playerctl next"
",XF86AudioPrev,exec, playerctl previous"
(lib.mkIf config.mods.scripts.change-brightness
",XF86MonBrightnessDown,exec, change-brightness brightness 10%-")
(lib.mkIf config.mods.scripts.change-brightness
",XF86MonBrightnessUp,exec, change-brightness brightness +10%")
(lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-")
(lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%")
# hyprland keybinds
# misc
@ -199,13 +202,14 @@
general = {
gaps_out = "3,5,5,5";
border_size = 3;
"col.active_border" =
lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
"col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
# "col.inactive_border" = "0x66333333";
allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true;
};
decoration = { rounding = 4; };
decoration = {
rounding = 4;
};
animations = {
bezier = "penguin,0.05,0.9,0.1,1.0";
@ -254,7 +258,9 @@
# no_break_fs_vrr = true;
};
gestures = { workspace_swipe = true; };
gestures = {
workspace_swipe = true;
};
monitor = config.mods.hyprland.monitor;
workspace = config.mods.hyprland.workspace;
@ -265,10 +271,10 @@
"XDG_CURRENT_DESKTOP=Hyprland"
"XDG_SESSION_TYPE=wayland"
"XDG_SESSION_DESKTOP=Hyprland"
"HYPRCURSOR_THEME,Bibata-Modern-Classic"
"HYPRCURSOR_SIZE,24"
"XCURSOR_THEME,Bibata-Modern-Classic"
"XCURSOR_SIZE,24"
"HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}"
"HYPRCURSOR_SIZE,${config.mods.stylix.cursor.size}"
"XCURSOR_THEME,${config.mods.stylix.cursor.name}"
"XCURSOR_SIZE,${config.mods.stylix.cursor.size}"
"QT_QPA_PLATFORM,wayland"
"QT_QPA_PLATFORMTHEME,qt5ct"
"QT_WAYLAND_FORCE_DPI,96"
@ -282,8 +288,7 @@
(lib.mkIf config.mods.nvidia.enable "LIBVA_DRIVER_NAME,nvidia")
(lib.mkIf config.mods.nvidia.enable "XDG_SESSION_TYPE,wayland")
(lib.mkIf config.mods.nvidia.enable "GBM_BACKEND,nvidia-drm")
(lib.mkIf config.mods.nvidia.enable
"__GLX_VENDOR_LIBRARY_NAME,nvidia")
(lib.mkIf config.mods.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia")
];
layerrule = [
@ -338,9 +343,11 @@
# ];
# };
# };
} // config.mods.hyprland.custom_config;
}
// config.mods.hyprland.custom_config;
# wayland.windowManager.hyprland.plugins = [
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
# ];
});
}
);
}

View file

@ -1,4 +1,11 @@
{ config, lib, options, pkgs, ... }: {
{
config,
lib,
options,
pkgs,
...
}:
{
options.mods = {
hyprland.hyprlock = {
enable = lib.mkOption {
@ -10,33 +17,40 @@
};
};
config = lib.mkIf config.mods.hyprland.hyprlock.enable
(lib.optionalAttrs (options ? xdg.configFile) {
config = lib.mkIf config.mods.hyprland.hyprlock.enable (
lib.optionalAttrs (options ? xdg.configFile) {
home.packages = with pkgs; [ hyprlock ];
programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable {
enable = true;
settings = {
background = [{
monitor = "";
path = "";
color = "rgba(26, 27, 38, 1.0)";
}];
background = [
{
monitor = "";
path = "";
color = "rgba(26, 27, 38, 1.0)";
}
];
input-field = [{
monitor = "${config.conf.monitor}";
input-field = [
{
monitor = "${config.conf.monitor}";
placeholder_text = "password or something";
}];
placeholder_text = "password or something";
}
];
label = [{
monitor = "${config.conf.monitor}";
text = "$TIME";
font_size = 50;
position = "0, 200";
valign = "center";
halign = "center";
}];
label = [
{
monitor = "${config.conf.monitor}";
text = "$TIME";
font_size = 50;
position = "0, 200";
valign = "center";
halign = "center";
}
];
};
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ config, lib, options, pkgs, ... }: {
{
config,
lib,
options,
pkgs,
...
}:
{
options.mods = {
hyprland.hyprpaper = {
enable = lib.mkOption {
@ -20,12 +27,12 @@
};
};
config = lib.mkIf config.mods.hyprland.hyprpaper.enable
(lib.optionalAttrs (options ? xdg.configFile) {
config = lib.mkIf config.mods.hyprland.hyprpaper.enable (
lib.optionalAttrs (options ? xdg.configFile) {
home.packages = with pkgs; [ hyprpaper ];
xdg.configFile."hypr/hyprpaper.conf" =
lib.mkIf config.mods.hyprland.hyprpaper.enable {
text = config.mods.hyprland.hyprpaper.config;
};
});
xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hyprland.hyprpaper.enable {
text = config.mods.hyprland.hyprpaper.config;
};
}
);
}

View file

@ -1,6 +1,14 @@
{ lib, config, pkgs, options, ... }:
let username = config.conf.username;
in {
{
lib,
config,
pkgs,
options,
...
}:
let
username = config.conf.username;
in
{
options.mods = {
hyprland.ironbar = {
enable = lib.mkOption {
@ -11,8 +19,8 @@ in {
};
};
};
config = lib.mkIf config.mods.hyprland.ironbar.enable
(lib.optionalAttrs (options ? programs.ironbar) {
config = lib.mkIf config.mods.hyprland.ironbar.enable (
lib.optionalAttrs (options ? programs.ironbar) {
programs.ironbar = {
enable = true;
@ -164,78 +172,78 @@ in {
}
{
type = "custom";
bar = [{
type = "button";
class = "popup-button";
label = "";
on_click = "popup:toggle";
}];
bar = [
{
type = "button";
class = "popup-button";
label = "";
on_click = "popup:toggle";
}
];
class = "popup-button-box";
popup = [{
type = "box";
orientation = "vertical";
class = "audio-box";
widgets = [
{
type = "box";
orientation = "horizontal";
widgets = [
{
type = "button";
class = "audio-button";
label = "";
on_click =
"!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth";
}
{
type = "button";
class = "audio-button";
label = "󰋋";
on_click =
"!/home/${username}/.config/eww/scripts/audio_control.sh internal";
}
];
class = "audio-button-box";
}
{
type = "label";
label = "Output";
}
{
type = "slider";
class = "audio-slider";
step = 1.0;
length = 200;
value =
"pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%";
}
{
type = "label";
label = "Input";
}
{
type = "slider";
class = "audio-slider";
step = 1.0;
length = 200;
value =
"pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
on_change =
"!pactl set-source-volume @DEFAULT_SOURCE@ $0%";
}
];
}];
popup = [
{
type = "box";
orientation = "vertical";
class = "audio-box";
widgets = [
{
type = "box";
orientation = "horizontal";
widgets = [
{
type = "button";
class = "audio-button";
label = "";
on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth";
}
{
type = "button";
class = "audio-button";
label = "󰋋";
on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal";
}
];
class = "audio-button-box";
}
{
type = "label";
label = "Output";
}
{
type = "slider";
class = "audio-slider";
step = 1.0;
length = 200;
value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%";
}
{
type = "label";
label = "Input";
}
{
type = "slider";
class = "audio-slider";
step = 1.0;
length = 200;
value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%";
}
];
}
];
}
{
type = "custom";
bar = [{
type = "button";
class = "popup-button";
label = "";
on_click =
"!oxidash --css /home/${username}/gits/oxidash/style.css";
}];
bar = [
{
type = "button";
class = "popup-button";
label = "";
on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css";
}
];
class = "popup-button-box";
}
{
@ -249,19 +257,24 @@ in {
position = "top";
height = 10;
anchor_to_edges = true;
start = [{
type = "workspaces";
all_monitors = true;
}];
center = [{
type = "focused";
show_icon = true;
show_title = true;
icon_size = 20;
truncate = "end";
}];
start = [
{
type = "workspaces";
all_monitors = true;
}
];
center = [
{
type = "focused";
show_icon = true;
show_title = true;
icon_size = 20;
truncate = "end";
}
];
};
};
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods = {
kde_connect.enable = lib.mkOption {
@ -11,21 +18,25 @@
};
};
config = lib.mkIf config.mods.kde_connect.enable
(lib.optionalAttrs (options ? networking.firewall) {
config = lib.mkIf config.mods.kde_connect.enable (
lib.optionalAttrs (options ? networking.firewall) {
networking.firewall = {
allowedTCPPortRanges = [{
from = 1714;
to = 1764;
} # KDE Connect
];
allowedUDPPortRanges = [{
from = 1714;
to = 1764;
} # KDE Connect
];
allowedTCPPortRanges = [
{
from = 1714;
to = 1764;
}
# KDE Connect
];
allowedUDPPortRanges = [
{
from = 1714;
to = 1764;
}
# KDE Connect
];
};
} // lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ kdeconnect ];
});
}
// lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ kdeconnect ]; }
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.keepassxc = {
enable = lib.mkOption {
default = true;
@ -10,8 +17,7 @@
default = true;
example = false;
type = lib.types.bool;
description =
"Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
description = "Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
};
cache_config = lib.mkOption {
default = ''
@ -26,8 +32,8 @@
description = "Cache config to be used.";
};
};
config = lib.mkIf config.mods.keepassxc.enable
(lib.optionalAttrs (options ? home.file) {
config = lib.mkIf config.mods.keepassxc.enable (
lib.optionalAttrs (options ? home.file) {
home.packages = [ pkgs.keepassxc ];
xdg.configFile."keepassxc/keepassxc.ini" = {
text = ''
@ -53,9 +59,9 @@
'';
};
home.file.".cache/keepassxc/keepassxc.ini" =
lib.mkIf config.mods.keepassxc.use_cache_config {
text = config.mods.keepassxc.cache_config;
};
});
home.file.".cache/keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.use_cache_config {
text = config.mods.keepassxc.cache_config;
};
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, inputs, ... }:
{
lib,
config,
options,
pkgs,
inputs,
...
}:
let
base16 = pkgs.callPackage inputs.base16.lib { };
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
@ -20,12 +27,14 @@ let
"e" = "d";
"f" = "e";
};
base = "#" + lib.strings.concatStrings
((lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) ++ [
hexTable."${(lib.lists.last
(lib.strings.stringToCharacters scheme.base00))}"
]);
in {
base =
"#"
+ lib.strings.concatStrings (
(lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00))
++ [ hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}" ]
);
in
{
options.mods.kitty = {
enable = lib.mkOption {
default = true;
@ -34,9 +43,11 @@ in {
description = "Enables kitty";
};
};
config = lib.mkIf config.mods.kitty.enable
(lib.optionalAttrs (options ? home.packages) {
stylix.targets.kitty = { enable = false; };
config = lib.mkIf config.mods.kitty.enable (
lib.optionalAttrs (options ? home.packages) {
stylix.targets.kitty = {
enable = false;
};
programs.kitty = {
enable = true;
settings = {
@ -89,6 +100,6 @@ in {
};
};
});
}
);
}

View file

@ -1,4 +1,10 @@
{ lib, options, config, ... }: {
{
lib,
options,
config,
...
}:
{
options.mods.xkb = {
layout = lib.mkOption {
default = "dashie";
@ -13,11 +19,13 @@
description = "Your variant";
};
};
config = (lib.optionalAttrs (options ? services.xserver) {
# Configure keymap in X11
services.xserver = {
xkb.layout = "${config.mods.xkb.layout}";
xkb.variant = "${config.mods.xkb.variant}";
};
});
config = (
lib.optionalAttrs (options ? services.xserver) {
# Configure keymap in X11
services.xserver = {
xkb.layout = "${config.mods.xkb.layout}";
xkb.variant = "${config.mods.xkb.variant}";
};
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, options, config, pkgs, ... }: {
{
lib,
options,
config,
pkgs,
...
}:
{
options.mods.media_packages = {
enable = lib.mkOption {
default = true;
@ -16,38 +23,42 @@
'';
};
};
config = (lib.optionalAttrs (options ? home.packages) {
home.packages = config.mods.media_packages.additional_packages;
} // (lib.mkIf config.mods.media_packages.enable
(lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [
# base audio
pipewire
wireplumber
# audio control
playerctl
# images
imv
# videos
mpv
# pdf
zathura
evince
libreoffice-fresh
onlyoffice-bin
pdftk
pdfpc
polylux2pdfpc
# spotify
# video editing
kdenlive
# image creation
inkscape
gimp
krita
yt-dlp
];
programs.obs-studio.enable = true;
programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ];
})));
config = (
lib.optionalAttrs (options ? home.packages) {
home.packages = config.mods.media_packages.additional_packages;
}
// (lib.mkIf config.mods.media_packages.enable (
lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [
# base audio
pipewire
wireplumber
# audio control
playerctl
# images
imv
# videos
mpv
# pdf
zathura
evince
libreoffice-fresh
onlyoffice-bin
pdftk
pdfpc
polylux2pdfpc
# spotify
# video editing
kdenlive
# image creation
inkscape
gimp
krita
yt-dlp
];
programs.obs-studio.enable = true;
programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ];
}
))
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.ncspot = {
enable = lib.mkOption {
default = false;
@ -7,45 +14,45 @@
description = "Enables ncspot with a config";
};
};
config = lib.mkIf config.mods.ncspot.enable
(lib.optionalAttrs (options ? home.packages) {
config = lib.mkIf config.mods.ncspot.enable (
lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ ncspot ];
xdg.configFile."ncspot/config.toml".source =
(pkgs.formats.toml { }).generate "ncspot" {
notify = true;
shuffle = true;
cover_max_scale = 2;
initial_screen = "library";
library_tabs = [ "playlists" ];
theme = {
background = "#1a1b26";
primary = "#9aa5ce";
secondary = "#414868";
title = "#9ece6a";
playing = "#7aa2f7";
playing_selected = "#bb9af7";
playing_bg = "#24283b";
highlight = "#c0caf5";
highlight_bg = "#24283b";
error = "#414868";
error_bg = "#f7768e";
statusbar = "#ff9e64";
statusbar_progress = "#7aa2f7";
statusbar_bg = "#1a1b26";
cmdline = "#c0caf5";
cmdline_bg = "#24283b";
search_match = "#f7768e";
};
keybindings = {
"j" = "move left 1";
"k" = "move down 1";
"l" = "move up 1";
";" = "move right 1";
};
notification_format = {
title = "%artists";
body = "%title";
};
xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" {
notify = true;
shuffle = true;
cover_max_scale = 2;
initial_screen = "library";
library_tabs = [ "playlists" ];
theme = {
background = "#1a1b26";
primary = "#9aa5ce";
secondary = "#414868";
title = "#9ece6a";
playing = "#7aa2f7";
playing_selected = "#bb9af7";
playing_bg = "#24283b";
highlight = "#c0caf5";
highlight_bg = "#24283b";
error = "#414868";
error_bg = "#f7768e";
statusbar = "#ff9e64";
statusbar_progress = "#7aa2f7";
statusbar_bg = "#1a1b26";
cmdline = "#c0caf5";
cmdline_bg = "#24283b";
search_match = "#f7768e";
};
});
keybindings = {
"j" = "move left 1";
"k" = "move down 1";
"l" = "move up 1";
";" = "move right 1";
};
notification_format = {
title = "%artists";
body = "%title";
};
};
}
);
}

View file

@ -1,4 +1,5 @@
{ lib, ... }: {
{ lib, ... }:
{
options.mods = {
nextcloud = {
enable = lib.mkOption {
@ -21,11 +22,13 @@
};
synclist = lib.mkOption {
default = [ ];
example = [{
name = "sync globi folder";
remote = "globi";
local = "/home/globi";
}];
example = [
{
name = "sync globi folder";
remote = "globi";
local = "/home/globi";
}
];
description = ''
A list of folders to synchronize.
This has to be an attribute list with the name, remote and local field (all strings).

View file

@ -1,5 +1,17 @@
{ lib, config, options, inputs, ... }: {
imports = [ ./oxidash.nix ./oxinoti.nix ./oxishut.nix ./oxipaste.nix ];
{
lib,
config,
options,
inputs,
...
}:
{
imports = [
./oxidash.nix
./oxinoti.nix
./oxishut.nix
./oxipaste.nix
];
options.mods.oxi = {
enable = lib.mkOption {
default = true;
@ -32,8 +44,8 @@
};
};
};
config = lib.mkIf config.mods.oxi.enable
(lib.optionalAttrs (options ? home.packages) {
config = lib.mkIf config.mods.oxi.enable (
lib.optionalAttrs (options ? home.packages) {
programs = {
hyprdock.enable = lib.mkIf config.mods.oxi.hyprdock.enable true;
oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true;
@ -46,12 +58,12 @@
];
plugin_config = {
Keyboard = {
path =
"/home/${config.conf.username}/.config/reset/keyboard.conf";
path = "/home/${config.conf.username}/.config/reset/keyboard.conf";
};
};
};
};
};
});
}
);
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods.oxi.oxidash = {
enable = lib.mkOption {
default = true;
@ -7,8 +13,8 @@
description = "Enables and configures oxidash";
};
};
config = lib.mkIf (config.mods.oxi.oxidash.enable && config.mods.oxi.enable)
(lib.optionalAttrs (options ? xdg.configFile) {
config = lib.mkIf (config.mods.oxi.oxidash.enable && config.mods.oxi.enable) (
lib.optionalAttrs (options ? xdg.configFile) {
programs.oxidash.enable = true;
xdg.configFile."oxidash/style.css" = {
text = ''
@ -60,5 +66,6 @@
}
'';
};
});
}
);
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods.oxi.oxinoti = {
enable = lib.mkOption {
default = true;
@ -7,8 +13,8 @@
description = "Enables and configures oxinoti";
};
};
config = lib.mkIf (config.mods.oxi.oxinoti.enable && config.mods.oxi.enable)
(lib.optionalAttrs (options ? xdg.configFile) {
config = lib.mkIf (config.mods.oxi.oxinoti.enable && config.mods.oxi.enable) (
lib.optionalAttrs (options ? xdg.configFile) {
programs.oxinoti.enable = true;
xdg.configFile."oxinoti/style.css" = {
text = # css
@ -100,5 +106,6 @@
dnd_override = 2
'';
};
});
}
);
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods.oxi.oxipaste = {
enable = lib.mkOption {
default = true;
@ -7,8 +13,8 @@
description = "Enables and configures oxipaste";
};
};
config = lib.mkIf (config.mods.oxi.oxipaste.enable && config.mods.oxi.enable)
(lib.optionalAttrs (options ? xdg.configFile) {
config = lib.mkIf (config.mods.oxi.oxipaste.enable && config.mods.oxi.enable) (
lib.optionalAttrs (options ? xdg.configFile) {
programs.oxipaste.enable = true;
xdg.configFile."oxipaste/style.css" = {
text = ''
@ -38,5 +44,6 @@
}
'';
};
});
}
);
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods.oxi.oxishut = {
enable = lib.mkOption {
default = true;
@ -7,8 +13,8 @@
description = "Enables and configures oxishut";
};
};
config = lib.mkIf (config.mods.oxi.oxishut.enable && config.mods.oxi.enable)
(lib.optionalAttrs (options ? xdg.configFile) {
config = lib.mkIf (config.mods.oxi.oxishut.enable && config.mods.oxi.enable) (
lib.optionalAttrs (options ? xdg.configFile) {
programs.oxishut.enable = true;
xdg.configFile."oxishut/style.css" = {
text = ''
@ -32,5 +38,6 @@
}
'';
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.piper = {
enable = lib.mkOption {
default = false;
@ -7,10 +14,8 @@
description = "Enables the piper program and its daemon";
};
};
config = lib.mkIf config.mods.piper.enable
(lib.optionalAttrs (options ? services.ratbagd) {
services.ratbagd.enable = true;
} // lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ piper ];
});
config = lib.mkIf config.mods.piper.enable (
lib.optionalAttrs (options ? services.ratbagd) { services.ratbagd.enable = true; }
// lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ piper ]; }
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.printing = {
enable = lib.mkOption {
default = true;
@ -7,8 +14,8 @@
description = "Enables the piper program and its daemon";
};
};
config = lib.mkIf config.mods.printing.enable
(lib.optionalAttrs (options ? services.printing) {
config = lib.mkIf config.mods.printing.enable (
lib.optionalAttrs (options ? services.printing) {
# Enable CUPS to print documents.
services.printing.enable = true;
services.printing.browsing = true;
@ -19,5 +26,6 @@
nssmdns4 = true;
openFirewall = true;
};
});
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.scripts = {
change-brightness = lib.mkOption {
default = true;
@ -15,106 +22,109 @@
scripts = lib.mkOption {
default = [ ];
example = [ ];
description =
"More scripts to be passed. (check existing ones for types and examples)";
description = "More scripts to be passed. (check existing ones for types and examples)";
};
};
config = (lib.optionalAttrs (options ? home.packages) {
home.packages = [
(lib.mkIf config.mods.scripts.change-brightness
(pkgs.writeShellScriptBin "change-brightness" ''
set_brightness() {
brightnessctl set "$1"
CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}')
dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%"
}
config = (
lib.optionalAttrs (options ? home.packages) {
home.packages = [
(lib.mkIf config.mods.scripts.change-brightness (
pkgs.writeShellScriptBin "change-brightness" ''
set_brightness() {
brightnessctl set "$1"
CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}')
dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%"
}
if [ "$1" == "brightness" ]; then
set_brightness "$2"
fi
''))
(lib.mkIf config.mods.scripts.audio-control
(pkgs.writeShellScriptBin "audio-control" ''
ncspot() {
NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n')
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
pactl set-sink-input-volume "$CHANGE" "$1"
VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%')
notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%"
}
if [ "$1" == "brightness" ]; then
set_brightness "$2"
fi
''
))
(lib.mkIf config.mods.scripts.audio-control (
pkgs.writeShellScriptBin "audio-control" ''
ncspot() {
NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n')
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
pactl set-sink-input-volume "$CHANGE" "$1"
VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%')
notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%"
}
firefox() {
STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n')
# NUMS=',' read -r -a array <<< "$STRING"
readarray -td, NUMS <<<"$STRING"
declare -p NUMS
for index in "''${!NUMS[@]}"; do #"''${!array[@]}"
NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n')
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
pactl set-sink-input-volume "$CHANGE" "$1"
done
VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%')
notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%"
}
firefox() {
STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n')
# NUMS=',' read -r -a array <<< "$STRING"
readarray -td, NUMS <<<"$STRING"
declare -p NUMS
for index in "''${!NUMS[@]}"; do #"''${!array[@]}"
NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n')
CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n')
pactl set-sink-input-volume "$CHANGE" "$1"
done
VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%')
notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%"
}
internal() {
SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }')
if [ "$SPEAKER" != "" ]; then
pactl set-default-sink "$SPEAKER"
pactl set-sink-mute "$SPEAKER" false
DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ')
notify-send "changed audio to "$DEVICE" "
else
notify-send "failed, not available!"
fi
}
internal() {
SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }')
if [ "$SPEAKER" != "" ]; then
pactl set-default-sink "$SPEAKER"
pactl set-sink-mute "$SPEAKER" false
DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ')
notify-send "changed audio to "$DEVICE" "
else
notify-send "failed, not available!"
fi
}
set_volume_sink() {
pactl set-sink-volume @DEFAULT_SINK@ "$1"
CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %')
notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%"
}
set_volume_sink() {
pactl set-sink-volume @DEFAULT_SINK@ "$1"
CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %')
notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%"
}
set_volume_source() {
pactl set-source-volume @DEFAULT_SOURCE@ "$1"
CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %')
notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%"
}
set_volume_source() {
pactl set-source-volume @DEFAULT_SOURCE@ "$1"
CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %')
notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%"
}
bluetooth() {
SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }')
if [ "$SPEAKER" != "" ]; then
pactl set-default-sink "$SPEAKER"
pactl set-sink-mute "$SPEAKER" false
DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ')
notify-send "changed audio to "$DEVICE" "
else
notify-send "failed, not available!"
fi
}
bluetooth() {
SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }')
if [ "$SPEAKER" != "" ]; then
pactl set-default-sink "$SPEAKER"
pactl set-sink-mute "$SPEAKER" false
DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ')
notify-send "changed audio to "$DEVICE" "
else
notify-send "failed, not available!"
fi
}
mute() {
pactl set-sink-mute @DEFAULT_SINK@ toggle
MUTE=$(pactl get-sink-mute @DEFAULT_SINK@)
notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE"
}
mute() {
pactl set-sink-mute @DEFAULT_SINK@ toggle
MUTE=$(pactl get-sink-mute @DEFAULT_SINK@)
notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE"
}
if [ "$1" == "internal" ]; then
internal
elif [ "$1" == "bluetooth" ]; then
bluetooth
elif [ "$1" == "firefox" ]; then
firefox "$2"
elif [ "$1" == "ncspot" ]; then
ncspot "$2"
elif [ "$1" == "mute" ]; then
mute
elif [ "$1" == "sink" ]; then
set_volume_sink "$2"
elif [ "$1" == "source" ]; then
set_volume_source "$2"
fi
''))
] ++ config.mods.scripts.scripts;
});
if [ "$1" == "internal" ]; then
internal
elif [ "$1" == "bluetooth" ]; then
bluetooth
elif [ "$1" == "firefox" ]; then
firefox "$2"
elif [ "$1" == "ncspot" ]; then
ncspot "$2"
elif [ "$1" == "mute" ]; then
mute
elif [ "$1" == "sink" ]; then
set_volume_sink "$2"
elif [ "$1" == "source" ]; then
set_volume_source "$2"
fi
''
))
] ++ config.mods.scripts.scripts;
}
);
}

View file

@ -1,4 +1,12 @@
{ lib, pkgs, config, options, root, ... }: {
{
lib,
pkgs,
config,
options,
root,
...
}:
{
options.mods.sops = {
enable = lib.mkOption {
default = true;
@ -19,8 +27,8 @@
description = "secrets for sops";
};
};
config = lib.mkIf config.mods.sops.enable
(lib.optionalAttrs (options ? home.packages) {
config = lib.mkIf config.mods.sops.enable (
lib.optionalAttrs (options ? home.packages) {
home.packages = with pkgs; [ sops ];
sops = {
gnupg = {
@ -32,5 +40,6 @@
};
systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ];
});
}
);
}

View file

@ -1,4 +1,12 @@
{ lib, config, options, pkgs, inputs, ... }: {
{
lib,
config,
options,
pkgs,
inputs,
...
}:
{
options.mods = {
starship = {
enable = lib.mkOption {
@ -30,99 +38,140 @@
};
# environment.systemPackages needed in order to configure systemwide
config = lib.mkIf config.mods.starship.enable
(lib.optionalAttrs (options ? environment.systemPackages) {
programs.starship = let
base16 = pkgs.callPackage inputs.base16.lib { };
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
code_format =
"[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)";
in {
enable = true;
interactiveOnly = true;
presets = lib.mkIf config.mods.starship.use_default_prompt
[ "pastel-powerline" ];
settings = lib.mkIf config.mods.starship.use_default_prompt {
# derived from https://starship.rs/presets/pastel-powerline
format =
"$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)";
right_format =
"$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os";
username = {
show_always = false;
style_user = "bg:#5277C3 fg:#${scheme.base05}";
style_root = "bg:#5277C3 fg:#${scheme.base05}";
format = "[ $user ]($style)[](bg:#3465A4 fg:#5277C3)";
disabled = false;
};
os = {
symbols = { NixOS = " "; };
style = "bg:#3465A4 fg:#${scheme.base05}";
disabled = false;
};
directory = {
style = "bg:#3465A4 fg:#${scheme.base05}";
format = "[ $path ]($style)";
truncation_length = 3;
truncation_symbol = "/";
};
git_branch = {
always_show_remote = true;
symbol = "";
style = "bg:#5256c3 fg:#${scheme.base05}";
format =
"[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)";
};
git_status = {
staged = "+\${count} (fg:#C4A000)";
ahead = "\${count} (fg:#C4A000)";
diverged = "\${count} (fg:#C4A000)";
behind = "\${count} (fg:#C4A000)";
stashed = " ";
untracked = "?\${count} (fg:#C4A000)";
modified = "!\${count} (fg:#C4A000)";
deleted = "\${count} (fg:#C4A000)";
conflicted = "=\${count} (fg:#C4A000)";
renamed = "»\${count} (fg:#C4A000)";
style = "bg:#5256c3 fg:fg:#C4A000";
format = "[$all_status$ahead_behind]($style)";
};
git_metrics = {
disabled = false;
format =
"([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))";
};
c = { format = code_format; };
elixir = { format = code_format; };
elm = { format = code_format; };
golang = { format = code_format; };
gradle = { format = code_format; };
haskell = { format = code_format; };
java = { format = code_format; };
julia = { format = code_format; };
nodejs = { format = code_format; };
nim = { format = code_format; };
nix_shell = {
symbol = "";
format = code_format;
};
rust = { format = code_format; };
scala = { format = code_format; };
typst = { format = code_format; };
python = { format = code_format; };
ocaml = { format = code_format; };
opa = { format = code_format; };
perl = { format = code_format; };
zig = { format = code_format; };
dart = { format = code_format; };
dotnet = { format = code_format; };
time = {
disabled = false;
time_format = "%R"; # Hour:Minute Format
style = "bg:#3465A4 fg:#${scheme.base05}";
format = "[ $time ]($style)";
};
} // config.mods.starship.custom_prompt;
};
});
config = lib.mkIf config.mods.starship.enable (
lib.optionalAttrs (options ? environment.systemPackages) {
programs.starship =
let
base16 = pkgs.callPackage inputs.base16.lib { };
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
code_format = "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)";
in
{
enable = true;
interactiveOnly = true;
presets = lib.mkIf config.mods.starship.use_default_prompt [ "pastel-powerline" ];
settings =
lib.mkIf config.mods.starship.use_default_prompt {
# derived from https://starship.rs/presets/pastel-powerline
format = "$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)";
right_format = "$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os";
username = {
show_always = false;
style_user = "bg:#5277C3 fg:#${scheme.base05}";
style_root = "bg:#5277C3 fg:#${scheme.base05}";
format = "[ $user ]($style)[](bg:#3465A4 fg:#5277C3)";
disabled = false;
};
os = {
symbols = {
NixOS = " ";
};
style = "bg:#3465A4 fg:#${scheme.base05}";
disabled = false;
};
directory = {
style = "bg:#3465A4 fg:#${scheme.base05}";
format = "[ $path ]($style)";
truncation_length = 3;
truncation_symbol = "/";
};
git_branch = {
always_show_remote = true;
symbol = "";
style = "bg:#5256c3 fg:#${scheme.base05}";
format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)";
};
git_status = {
staged = "+\${count} (fg:#C4A000)";
ahead = "\${count} (fg:#C4A000)";
diverged = "\${count} (fg:#C4A000)";
behind = "\${count} (fg:#C4A000)";
stashed = " ";
untracked = "?\${count} (fg:#C4A000)";
modified = "!\${count} (fg:#C4A000)";
deleted = "\${count} (fg:#C4A000)";
conflicted = "=\${count} (fg:#C4A000)";
renamed = "»\${count} (fg:#C4A000)";
style = "bg:#5256c3 fg:fg:#C4A000";
format = "[$all_status$ahead_behind]($style)";
};
git_metrics = {
disabled = false;
format = "([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))";
};
c = {
format = code_format;
};
elixir = {
format = code_format;
};
elm = {
format = code_format;
};
golang = {
format = code_format;
};
gradle = {
format = code_format;
};
haskell = {
format = code_format;
};
java = {
format = code_format;
};
julia = {
format = code_format;
};
nodejs = {
format = code_format;
};
nim = {
format = code_format;
};
nix_shell = {
symbol = "";
format = code_format;
};
rust = {
format = code_format;
};
scala = {
format = code_format;
};
typst = {
format = code_format;
};
python = {
format = code_format;
};
ocaml = {
format = code_format;
};
opa = {
format = code_format;
};
perl = {
format = code_format;
};
zig = {
format = code_format;
};
dart = {
format = code_format;
};
dotnet = {
format = code_format;
};
time = {
disabled = false;
time_format = "%R"; # Hour:Minute Format
style = "bg:#3465A4 fg:#${scheme.base05}";
format = "[ $time ]($style)";
};
}
// config.mods.starship.custom_prompt;
};
}
);
}

View file

@ -1,4 +1,11 @@
{ lib, config, options, pkgs, ... }: {
{
lib,
config,
options,
pkgs,
...
}:
{
options.mods.stylix = {
colorscheme = lib.mkOption {
default = {
@ -27,7 +34,13 @@
base0F = "F7768E";
};
example = "catppuccin-mocha";
type = with lib.types; oneOf [ str attrs path ];
type =
with lib.types;
oneOf [
str
attrs
path
];
description = ''
Base16 colorscheme.
Can be an attribute set with base00 to base0F,
@ -35,18 +48,18 @@
or a path to a custom yaml file.
'';
};
};
config = (lib.optionalAttrs (options ? stylix) {
stylix = {
enable = true;
image = ../../base/black.jpg;
polarity = "dark";
targets = {
nixvim.enable = false;
fish.enable = false;
cursor = lib.mkOption {
default = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
fonts = {
example = { };
type = with lib.types; attrsOf anything;
description = "Xcursor config";
};
fonts = lib.mkOption {
default = {
serif = {
package = pkgs.cantarell-fonts;
name = "Cantarell";
@ -59,7 +72,6 @@
monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
# name = "JetBrains Mono Nerd";
name = "JetBrainsMono Nerd Font Mono";
};
@ -68,17 +80,30 @@
name = "Noto Color Emoji";
};
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
base16Scheme = (if builtins.isAttrs config.mods.stylix.colorscheme then
config.mods.stylix.colorscheme
else
"${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml");
example = { };
type = with lib.types; attrsOf anything;
description = "font config";
};
});
};
config = (
lib.optionalAttrs (options ? stylix) {
stylix = {
enable = true;
image = ../../base/black.jpg;
polarity = "dark";
targets = {
nixvim.enable = false;
fish.enable = false;
};
fonts = config.mods.stylix.fonts;
cursor = config.mods.stylix.cursor;
base16Scheme = (
if builtins.isAttrs config.mods.stylix.colorscheme then
config.mods.stylix.colorscheme
else
"${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml"
);
};
}
);
}

View file

@ -1,13 +1,20 @@
{ lib, config, options, pkgs, ... }:
let callPackage = lib.callPackageWith pkgs;
in {
{
lib,
config,
options,
pkgs,
...
}:
let
callPackage = lib.callPackageWith pkgs;
in
{
options.mods.teams = {
enable = lib.mkOption {
default = false;
example = true;
type = lib.types.bool;
description =
"Enables teams via a chromium pwa (for the poor souls that have to use this for work)";
description = "Enables teams via a chromium pwa (for the poor souls that have to use this for work)";
};
loopback = lib.mkOption {
default = true;
@ -16,17 +23,18 @@ in {
description = "Enables loopback for screensharing -> teams sucks :)";
};
};
config = lib.mkIf config.mods.teams.enable
(lib.optionalAttrs (options ? home.packages) {
config = lib.mkIf config.mods.teams.enable (
lib.optionalAttrs (options ? home.packages) {
home.packages = [ (callPackage ../../override/teams.nix { }) ];
} // (lib.optionalAttrs (options ? boot.kernelModules) {
}
// (lib.optionalAttrs (options ? boot.kernelModules) {
boot = {
extraModulePackages =
[ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ];
extraModulePackages = [ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ];
kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''
options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"
'';
};
}));
})
);
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods = {
virtualbox.enable = lib.mkOption {
@ -12,7 +18,6 @@
};
config = lib.optionalAttrs (options ? virtualisation.virtualbox.host) {
virtualisation.virtualbox.host.enable =
lib.mkIf config.mods.virtualbox.enable true;
virtualisation.virtualbox.host.enable = lib.mkIf config.mods.virtualbox.enable true;
};
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods = {
xone.enable = lib.mkOption {
@ -11,6 +17,5 @@
};
};
config =
lib.optionalAttrs (options ? hardware) { hardware.xone.enable = true; };
config = lib.optionalAttrs (options ? hardware) { hardware.xone.enable = true; };
}

View file

@ -1,4 +1,10 @@
{ lib, config, options, ... }: {
{
lib,
config,
options,
...
}:
{
options.mods.yazi = {
enable = lib.mkOption {
default = true;
@ -7,8 +13,7 @@
description = "Enables yazi";
};
};
config = lib.mkIf config.mods.yazi.enable
(lib.optionalAttrs (options ? home.packages) {
programs.yazi = import ./yazi.nix;
});
config = lib.mkIf config.mods.yazi.enable (
lib.optionalAttrs (options ? home.packages) { programs.yazi = import ./yazi.nix; }
);
}

View file

@ -2,7 +2,9 @@
# don't ask....
enable = true;
settings = {
log = { enabled = false; };
log = {
enabled = false;
};
opener = {
folder = [
@ -16,14 +18,18 @@
orphan = true;
}
];
archive = [{
run = ''unar "$1"'';
display_name = "Extract here";
}];
text = [{
run = ''$EDITOR "$@"'';
orphan = true;
}];
archive = [
{
run = ''unar "$1"'';
display_name = "Extract here";
}
];
text = [
{
run = ''$EDITOR "$@"'';
orphan = true;
}
];
image = [
{
run = ''imv "$@"'';
@ -36,11 +42,13 @@
display_name = "Show EXIF";
}
];
pdf = [{
run = ''zathura "$@"'';
orphan = true;
display_name = "Open";
}];
pdf = [
{
run = ''zathura "$@"'';
orphan = true;
display_name = "Open";
}
];
video = [
{
run = ''mpv "$@"'';
@ -216,7 +224,10 @@
}
{
on = [ "g" "g" ];
on = [
"g"
"g"
];
run = "arrow -99999999";
desc = "Move cursor to the top";
}
@ -335,12 +346,20 @@
desc = "Toggle the visibility of hidden files";
}
{
on = [ "<Space>" "f" "g>" ];
on = [
"<Space>"
"f"
"g>"
];
run = "search fd";
desc = "Search files by name using fd";
}
{
on = [ "<Space>" "f" "G>" ];
on = [
"<Space>"
"f"
"G>"
];
run = "search rg";
desc = "Search files by content using ripgrep";
}
@ -362,22 +381,34 @@
# Copy
{
on = [ "c" "c" ];
on = [
"c"
"c"
];
run = "copy path";
desc = "Copy the absolute path";
}
{
on = [ "c" "d" ];
on = [
"c"
"d"
];
run = "copy dirname";
desc = "Copy the path of the parent directory";
}
{
on = [ "c" "f" ];
on = [
"c"
"f"
];
run = "copy filename";
desc = "Copy the name of the file";
}
{
on = [ "c" "n" ];
on = [
"c"
"n"
];
run = "copy name_without_ext";
desc = "Copy the name of the file without the extension";
}
@ -402,52 +433,82 @@
# Sorting
{
on = [ "," "a" ];
on = [
","
"a"
];
run = "sort alphabetical --dir_first";
desc = "Sort alphabetically";
}
{
on = [ "," "A" ];
on = [
","
"A"
];
run = "sort alphabetical --reverse --dir_first";
desc = "Sort alphabetically (reverse)";
}
{
on = [ "," "c" ];
on = [
","
"c"
];
run = "sort created --dir_first";
desc = "Sort by creation time";
}
{
on = [ "," "C" ];
on = [
","
"C"
];
run = "sort created --reverse --dir_first";
desc = "Sort by creation time (reverse)";
}
{
on = [ "," "m" ];
on = [
","
"m"
];
run = "sort modified --dir_first";
desc = "Sort by modified time";
}
{
on = [ "," "M" ];
on = [
","
"M"
];
run = "sort modified --reverse --dir_first";
desc = "Sort by modified time (reverse)";
}
{
on = [ "," "n" ];
on = [
","
"n"
];
run = "sort natural --dir_first";
desc = "Sort naturally";
}
{
on = [ "," "N" ];
on = [
","
"N"
];
run = "sort natural --reverse --dir_first";
desc = "Sort naturally (reverse)";
}
{
on = [ "," "s" ];
on = [
","
"s"
];
run = "sort size --dir_first";
desc = "Sort by size";
}
{
on = [ "," "S" ];
on = [
","
"S"
];
run = "sort size --reverse --dir_first";
desc = "Sort by size (reverse)";
}
@ -536,27 +597,42 @@
# Goto
{
on = [ "g" "h" ];
on = [
"g"
"h"
];
run = "cd ~";
desc = "Go to the home directory";
}
{
on = [ "g" "c" ];
on = [
"g"
"c"
];
run = "cd ~/.config";
desc = "Go to the config directory";
}
{
on = [ "g" "d" ];
on = [
"g"
"d"
];
run = "cd ~/Downloads";
desc = "Go to the downloads directory";
}
{
on = [ "g" "t" ];
on = [
"g"
"t"
];
run = "cd /tmp";
desc = "Go to the temporary directory";
}
{
on = [ "g" "<Space>" ];
on = [
"g"
"<Space>"
];
run = "cd --interactive";
desc = "Go to a directory interactively";
}
@ -718,7 +794,11 @@
}
{
on = [ "V" ];
run = [ "move -999" "visual" "move 999" ];
run = [
"move -999"
"visual"
"move 999"
];
desc = "Enter visual mode and select all";
}
@ -746,12 +826,18 @@
}
{
on = [ "I" ];
run = [ "move -999" "insert" ];
run = [
"move -999"
"insert"
];
desc = "Move to the BOL and enter insert mode";
}
{
on = [ "A" ];
run = [ "move 999" "insert --append" ];
run = [
"move 999"
"insert --append"
];
desc = "Move to the EOL and enter append mode";
}
@ -790,7 +876,10 @@
}
{
on = [ "D" ];
run = [ "delete --cut" "move 999" ];
run = [
"delete --cut"
"move 999"
];
desc = "Cut until the EOL";
}
{
@ -800,12 +889,18 @@
}
{
on = [ "C" ];
run = [ "delete --cut --insert" "move 999" ];
run = [
"delete --cut --insert"
"move 999"
];
desc = "Cut until the EOL and enter insert mode";
}
{
on = [ "x" ];
run = [ "delete --cut" "move 1 --in-operating" ];
run = [
"delete --cut"
"move 1 --in-operating"
];
desc = "Cut the current character";
}
@ -1136,4 +1231,3 @@
# };
# };
}