1
1
Fork 0

nix: format with alejandra

Signed-off-by: Myned <dev@bjork.tech>
This commit is contained in:
Myned 2024-09-12 20:50:53 -05:00
parent 08cadc64dc
commit ab485dec35
Signed by: myned
GPG key ID: C7224454F7881A34
176 changed files with 1852 additions and 2126 deletions

View file

@ -3,86 +3,75 @@
inputs, inputs,
lib, lib,
... ...
}: }: {
age.secrets = let
{ secret = filename: {
age.secrets = file = "${inputs.self}/secrets/${filename}";
let
secret = filename: {
file = "${inputs.self}/secrets/${filename}";
};
in
{
"common/nix/access-tokens.conf" = secret "common/nix/access-tokens.conf";
}; };
in {
"common/nix/access-tokens.conf" = secret "common/nix/access-tokens.conf";
};
### NixOS ### NixOS
nixpkgs = nixpkgs = let
let config = {
config = { allowUnfree = true;
allowUnfree = true;
allowInsecurePredicate = allowInsecurePredicate = pkg: let
pkg: name = lib.getName pkg;
let in
name = lib.getName pkg; # HACK: Allow all insecure electron versions
in name
# HACK: Allow all insecure electron versions == "electron"
name == "electron" # HACK: Some Matrix clients rely on libolm, which is deprecated
# https://github.com/NixOS/nixpkgs/pull/334638
|| name == "cinny"
|| name == "cinny-unwrapped"
|| name == "fluffychat-linux"
|| name == "olm"
|| name == "openssl"; # Cisco Packet Tracer
};
in {
inherit config;
# HACK: Some Matrix clients rely on libolm, which is deprecated overlays = [
# https://github.com/NixOS/nixpkgs/pull/334638 (
|| name == "cinny" final: prev: let
|| name == "cinny-unwrapped" nixpkgs = branch:
|| name == "fluffychat-linux" import inputs."nixpkgs-${branch}" {
|| name == "olm" inherit config;
|| name == "openssl"; # Cisco Packet Tracer system = prev.system;
};
in
{
inherit config;
overlays = [
(
final: prev:
let
nixpkgs =
branch:
import inputs."nixpkgs-${branch}" {
inherit config;
system = prev.system;
};
stable = nixpkgs "stable";
unstable = nixpkgs "unstable";
staging-next = nixpkgs "staging-next";
local = nixpkgs "local";
in
{
# Overlay nixpkgs branches
#?? nixpkgs.BRANCH.PACKAGE
inherit stable unstable staging-next;
# Hypr*
hypridle = inputs.hypridle.packages.${prev.system}.default;
hyprland = inputs.hyprland.packages.${prev.system}.default;
hyprlock = inputs.hyprlock.packages.${prev.system}.default;
# TODO: Remove when merged into unstable
# https://github.com/NixOS/nixpkgs/pull/338836
xdg-desktop-portal-hyprland =
inputs.xdg-desktop-portal-hyprland.packages.${prev.system}.xdg-desktop-portal-hyprland;
hyprlandPlugins = {
hyprbars = inputs.hyprland-plugins.packages.${prev.system}.hyprbars;
}; };
# Development stable = nixpkgs "stable";
ciscoPacketTracer8 = local.ciscoPacketTracer8; unstable = nixpkgs "unstable";
} staging-next = nixpkgs "staging-next";
) local = nixpkgs "local";
]; in {
}; # Overlay nixpkgs branches
#?? nixpkgs.BRANCH.PACKAGE
inherit stable unstable staging-next;
# Hypr*
hypridle = inputs.hypridle.packages.${prev.system}.default;
hyprland = inputs.hyprland.packages.${prev.system}.default;
hyprlock = inputs.hyprlock.packages.${prev.system}.default;
# TODO: Remove when merged into unstable
# https://github.com/NixOS/nixpkgs/pull/338836
xdg-desktop-portal-hyprland =
inputs.xdg-desktop-portal-hyprland.packages.${prev.system}.xdg-desktop-portal-hyprland;
hyprlandPlugins = {
hyprbars = inputs.hyprland-plugins.packages.${prev.system}.hyprbars;
};
# Development
ciscoPacketTracer8 = local.ciscoPacketTracer8;
}
)
];
};
nix = { nix = {
#!! Override upstream nix #!! Override upstream nix

View file

@ -1,5 +1,4 @@
# Do not modify! This file is generated. # Do not modify! This file is generated.
{ {
inputs = { inputs = {
aagl-gtk-on-nix-stable = { aagl-gtk-on-nix-stable = {
@ -135,4 +134,4 @@
}; };
}; };
outputs = inputs: inputs.flakegen ./flake.in.nix inputs; outputs = inputs: inputs.flakegen ./flake.in.nix inputs;
} }

View file

@ -21,7 +21,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "btrfs"; type = "btrfs";
extraArgs = [ "-f" ]; extraArgs = ["-f"];
subvolumes = { subvolumes = {
"/root" = { "/root" = {
mountpoint = "/"; mountpoint = "/";

View file

@ -7,19 +7,17 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"xhci_pci" "xhci_pci"
"virtio_scsi" "virtio_scsi"
"sr_mod" "sr_mod"
]; ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ ]; boot.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
# 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

View file

@ -19,5 +19,5 @@
}; };
}; };
systemd.tmpfiles.rules = [ "z /mnt/external 0755 myned users" ]; systemd.tmpfiles.rules = ["z /mnt/external 0755 myned users"];
} }

View file

@ -21,7 +21,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "btrfs"; type = "btrfs";
extraArgs = [ "-f" ]; extraArgs = ["-f"];
subvolumes = { subvolumes = {
"/root" = { "/root" = {
mountpoint = "/"; mountpoint = "/";

View file

@ -7,10 +7,8 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"nvme" "nvme"
@ -21,9 +19,9 @@
"sd_mod" "sd_mod"
"sdhci_pci" "sdhci_pci"
]; ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
# 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

View file

@ -26,7 +26,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "btrfs"; type = "btrfs";
extraArgs = [ "-f" ]; extraArgs = ["-f"];
subvolumes = { subvolumes = {
"/root" = { "/root" = {
mountpoint = "/"; mountpoint = "/";

View file

@ -7,10 +7,8 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"ahci" "ahci"
@ -20,9 +18,9 @@
"sd_mod" "sd_mod"
"sr_mod" "sr_mod"
]; ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ ]; boot.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
# 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

View file

@ -26,7 +26,7 @@
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "btrfs"; type = "btrfs";
extraArgs = [ "-f" ]; extraArgs = ["-f"];
subvolumes = { subvolumes = {
"/root" = { "/root" = {
mountpoint = "/"; mountpoint = "/";

View file

@ -7,10 +7,8 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"xhci_pci" "xhci_pci"
@ -21,9 +19,9 @@
"usb_storage" "usb_storage"
"sd_mod" "sd_mod"
]; ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
# 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

View file

@ -4,12 +4,9 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: let
let
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
in in {
{
imports = [ imports = [
inputs.nixos-hardware.nixosModules.framework-13-7040-amd inputs.nixos-hardware.nixosModules.framework-13-7040-amd
@ -35,7 +32,7 @@ in
home-manager.users.${config.custom.username} = with lib; { home-manager.users.${config.custom.username} = with lib; {
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
exec-once = [ "${brightnessctl} set 0%" ]; exec-once = ["${brightnessctl} set 0%"];
master = { master = {
mfact = mkForce 0.5; mfact = mkForce 0.5;

View file

@ -26,7 +26,7 @@
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "btrfs"; type = "btrfs";
extraArgs = [ "-f" ]; extraArgs = ["-f"];
subvolumes = { subvolumes = {
"/root" = { "/root" = {
mountpoint = "/"; mountpoint = "/";

View file

@ -7,10 +7,8 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"nvme" "nvme"
@ -20,9 +18,9 @@
"uas" "uas"
"sd_mod" "sd_mod"
]; ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
# 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

View file

@ -1,5 +1,5 @@
{ {
imports = [ ./hardware-configuration.nix ]; imports = [./hardware-configuration.nix];
custom.hostname = "mypi3"; custom.hostname = "mypi3";

View file

@ -7,22 +7,20 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
{ boot.initrd.availableKernelModules = [];
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.initrd.availableKernelModules = [ ]; boot.extraModulePackages = [];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888"; device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
fsType = "ext4"; fsType = "ext4";
}; };
swapDevices = [ ]; swapDevices = [];
# 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

View file

@ -1,38 +1,38 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom;
in {
options.custom = { options.custom = {
### Profiles ### Profiles
default = mkOption { default = true; }; default = mkOption {default = true;};
full = mkOption { default = false; }; full = mkOption {default = false;};
minimal = mkOption { default = cfg.full; }; minimal = mkOption {default = cfg.full;};
profile = mkOption { }; profile = mkOption {};
### Users ### Users
domain = mkOption { default = "bjork.tech"; }; domain = mkOption {default = "bjork.tech";};
hostname = mkOption { }; hostname = mkOption {};
realname = mkOption { default = "Myned"; }; realname = mkOption {default = "Myned";};
username = mkOption { default = "myned"; }; username = mkOption {default = "myned";};
### Hardware ### Hardware
width = mkOption { default = 1920; }; width = mkOption {default = 1920;};
height = mkOption { default = 1080; }; height = mkOption {default = 1080;};
ultrawide = mkOption { default = cfg.width * 9 / 16 > cfg.height; }; # Wider than 16:9 ultrawide = mkOption {default = cfg.width * 9 / 16 > cfg.height;}; # Wider than 16:9
hidpi = mkOption { default = cfg.scale > 1; }; hidpi = mkOption {default = cfg.scale > 1;};
scale = mkOption { default = 1; }; scale = mkOption {default = 1;};
# TODO: Use option for border size # TODO: Use option for border size
border = mkOption { default = 2; }; border = mkOption {default = 2;};
gap = mkOption { default = 10; }; gap = mkOption {default = 10;};
padding = mkOption { default = 56; }; # ?? journalctl --user -u waybar.service | grep height: padding = mkOption {default = 56;}; # ?? journalctl --user -u waybar.service | grep height:
### Misc ### Misc
wallpaper = mkOption { default = false; }; wallpaper = mkOption {default = false;};
}; };
} }

View file

@ -1,7 +1,8 @@
{ config, lib, ... }:
with lib;
{ {
config,
lib,
...
}:
with lib; {
config.custom.desktops.hyprland.enable = config.custom.full; config.custom.desktops.hyprland.enable = config.custom.full;
} }

View file

@ -4,16 +4,12 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.desktops.gnome; cfg = config.custom.desktops.gnome;
in in {
{
options.custom.desktops.gnome = { options.custom.desktops.gnome = {
enable = mkOption { default = false; }; enable = mkOption {default = false;};
gdm = mkOption { default = true; }; gdm = mkOption {default = true;};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -30,6 +26,6 @@ in
# Remove default packages # Remove default packages
# https://wiki.nixos.org/wiki/GNOME#Excluding_GNOME_Applications # https://wiki.nixos.org/wiki/GNOME#Excluding_GNOME_Applications
environment.gnome.excludePackages = [ pkgs.gnome-shell-extensions ]; environment.gnome.excludePackages = [pkgs.gnome-shell-extensions];
}; };
} }

View file

@ -4,14 +4,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.desktops.hyprland; cfg = config.custom.desktops.hyprland;
in in {
{ options.custom.desktops.hyprland.enable = mkOption {default = false;};
options.custom.desktops.hyprland.enable = mkOption { default = false; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
custom.desktops.hyprland = mkIf config.custom.full { custom.desktops.hyprland = mkIf config.custom.full {
@ -26,7 +22,7 @@ in
xdg.portal = { xdg.portal = {
enable = true; enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; extraPortals = [pkgs.xdg-desktop-portal-gtk];
# Prefer hyprland over gtk portal # Prefer hyprland over gtk portal
config.common.default = [ config.common.default = [
@ -38,7 +34,7 @@ in
# https://wiki.hyprland.org # https://wiki.hyprland.org
home-manager.users.${config.custom.username}.wayland.windowManager.hyprland = { home-manager.users.${config.custom.username}.wayland.windowManager.hyprland = {
enable = true; enable = true;
systemd.variables = [ "--all" ]; # Import some environment variables into session systemd.variables = ["--all"]; # Import some environment variables into session
}; };
}; };
} }

View file

@ -4,22 +4,18 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
hyprctl = "${pkgs.hyprland}/bin/hyprctl"; hyprctl = "${pkgs.hyprland}/bin/hyprctl";
cfg = config.custom.desktops.hyprland.plugins; cfg = config.custom.desktops.hyprland.plugins;
in in {
{ options.custom.desktops.hyprland.plugins.enable = mkOption {default = false;};
options.custom.desktops.hyprland.plugins.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
# https://github.com/hyprwm/hyprland-plugins/tree/main/hyprbars # https://github.com/hyprwm/hyprland-plugins/tree/main/hyprbars
# https://wiki.hyprland.org/Plugins/Using-Plugins # https://wiki.hyprland.org/Plugins/Using-Plugins
plugins = with pkgs.hyprlandPlugins; [ hyprbars ]; plugins = with pkgs.hyprlandPlugins; [hyprbars];
settings = { settings = {
#!! Static rules #!! Static rules

View file

@ -4,10 +4,7 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
clipse = "${pkgs.clipse}/bin/clipse"; clipse = "${pkgs.clipse}/bin/clipse";
firefox-esr = "${ firefox-esr = "${
config.home-manager.users.${config.custom.username}.programs.firefox.finalPackage config.home-manager.users.${config.custom.username}.programs.firefox.finalPackage
@ -22,9 +19,8 @@ let
}/bin/waybar"; }/bin/waybar";
cfg = config.custom.desktops.hyprland.settings; cfg = config.custom.desktops.hyprland.settings;
in in {
{ options.custom.desktops.hyprland.settings.enable = mkOption {default = false;};
options.custom.desktops.hyprland.settings.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
@ -51,12 +47,12 @@ in
#?? envd = VARIABLE, VALUE #?? envd = VARIABLE, VALUE
# HACK: Mapped home-manager variables to envd in lieu of upstream fix # HACK: Mapped home-manager variables to envd in lieu of upstream fix
# https://github.com/nix-community/home-manager/issues/2659 # https://github.com/nix-community/home-manager/issues/2659
envd = envd = with builtins;
with builtins;
attrValues ( attrValues (
mapAttrs ( mapAttrs (
name: value: "${name}, ${toString value}" name: value: "${name}, ${toString value}"
) config.home-manager.users.${config.custom.username}.home.sessionVariables )
config.home-manager.users.${config.custom.username}.home.sessionVariables
) )
++ [ ++ [
"EDITOR, gnome-text-editor" "EDITOR, gnome-text-editor"
@ -66,15 +62,16 @@ in
#// exec = [ ]; #// exec = [ ];
# https://wiki.hyprland.org/Configuring/Keywords/#executing # https://wiki.hyprland.org/Configuring/Keywords/#executing
exec-once = [ exec-once =
"${rm} ~/.config/qalculate/qalc.dmenu.history" # Clear calc history [
"${clipse} -clear" # Clear clipboard history "${rm} ~/.config/qalculate/qalc.dmenu.history" # Clear calc history
"${clipse} -listen" # Monitor clipboard "${clipse} -clear" # Clear clipboard history
sway-audio-idle-inhibit # Inhibit idle while audio is playing "${clipse} -listen" # Monitor clipboard
sway-audio-idle-inhibit # Inhibit idle while audio is playing
# TODO: Remove when systemd service fixed # TODO: Remove when systemd service fixed
# https://github.com/Alexays/Waybar/issues/2882 # https://github.com/Alexays/Waybar/issues/2882
"${sleep} 2 && ${systemctl} --user restart waybar" "${sleep} 2 && ${systemctl} --user restart waybar"
"[group new lock; tile] ${firefox-esr}" "[group new lock; tile] ${firefox-esr}"
] ]
@ -143,7 +140,10 @@ in
"col.inactive" = "rgba(6c71c440)"; "col.inactive" = "rgba(6c71c440)";
"col.locked_active" = "rgb(d33682)"; "col.locked_active" = "rgb(d33682)";
"col.locked_inactive" = "rgba(d3368240)"; "col.locked_inactive" = "rgba(d3368240)";
font_size = if config.custom.hidpi then 16 else 10; font_size =
if config.custom.hidpi
then 16
else 10;
height = 5; height = 5;
render_titles = false; render_titles = false;
text_color = "rgb(93a1a1)"; text_color = "rgb(93a1a1)";

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.desktops.kde;
in
{ {
options.custom.desktops.kde.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.desktops.kde;
in {
options.custom.desktops.kde.enable = mkOption {default = false;};
config = mkIf cfg.enable { services.desktopManager.plasma6.enable = true; }; config = mkIf cfg.enable {services.desktopManager.plasma6.enable = true;};
} }

View file

@ -1,16 +1,16 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.files.agenix;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.files.agenix;
in {
# https://wiki.nixos.org/wiki/Agenix # https://wiki.nixos.org/wiki/Agenix
# https://github.com/ryantm/agenix # https://github.com/ryantm/agenix
options.custom.files.agenix.enable = mkOption { default = false; }; options.custom.files.agenix.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
age.identityPaths = [ "/etc/ssh/id_ed25519" ]; # !! Must be set without sshd age.identityPaths = ["/etc/ssh/id_ed25519"]; # !! Must be set without sshd
}; };
} }

View file

@ -1,8 +1,9 @@
{ config, lib, ... }:
with lib;
{ {
config,
lib,
...
}:
with lib; {
config.custom.files = mkIf config.custom.default { config.custom.files = mkIf config.custom.default {
agenix.enable = true; agenix.enable = true;
dev.enable = true; dev.enable = true;

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.files.dev;
in
{ {
options.custom.files.dev.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.files.dev;
in {
options.custom.files.dev.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# .keep empty file needed to create empty directory # .keep empty file needed to create empty directory

View file

@ -1,15 +1,15 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.files.mnt;
in
{ {
options.custom.files.mnt.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.files.mnt;
in {
options.custom.files.mnt.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# Set /mnt permissions # Set /mnt permissions
systemd.tmpfiles.rules = [ "z /mnt 0755 root root" ]; systemd.tmpfiles.rules = ["z /mnt 0755 root root"];
}; };
} }

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.files.nixos;
in
{ {
options.custom.files.nixos.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.files.nixos;
in {
options.custom.files.nixos.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://www.freedesktop.org/software/systemd/man/latest/tmpfiles.d.html # https://www.freedesktop.org/software/systemd/man/latest/tmpfiles.d.html

View file

@ -1,17 +1,17 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.adb;
in
{ {
options.custom.programs.adb.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.adb;
in {
options.custom.programs.adb.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://wiki.nixos.org/wiki/Android # https://wiki.nixos.org/wiki/Android
# https://developer.android.com/tools/adb # https://developer.android.com/tools/adb
programs.adb.enable = true; programs.adb.enable = true;
users.users.${config.custom.username}.extraGroups = [ "adbusers" ]; users.users.${config.custom.username}.extraGroups = ["adbusers"];
}; };
} }

View file

@ -4,17 +4,13 @@
lib, lib,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.ags; cfg = config.custom.programs.ags;
in in {
{ options.custom.programs.ags.enable = mkOption {default = false;};
options.custom.programs.ags.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
imports = [ inputs.ags.homeManagerModules.default ]; imports = [inputs.ags.homeManagerModules.default];
# https://aylur.github.io/ags-docs # https://aylur.github.io/ags-docs
# https://github.com/Aylur/ags # https://github.com/Aylur/ags

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.alacritty;
in
{ {
options.custom.programs.alacritty.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.alacritty;
in {
options.custom.programs.alacritty.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/alacritty/alacritty # https://github.com/alacritty/alacritty

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.anime-game-launcher;
in
{ {
options.custom.programs.anime-game-launcher.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.anime-game-launcher;
in {
options.custom.programs.anime-game-launcher.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/an-anime-team # https://github.com/an-anime-team

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.appimage;
in
{ {
options.custom.programs.appimage.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.appimage;
in {
options.custom.programs.appimage.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://wiki.nixos.org/wiki/Appimage # https://wiki.nixos.org/wiki/Appimage

View file

@ -1,14 +1,14 @@
{ config, lib, ... }: {
config,
with lib; lib,
...
let }:
with lib; let
wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi"; wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi";
cfg = config.custom.programs.bitwarden-menu; cfg = config.custom.programs.bitwarden-menu;
in in {
{ options.custom.programs.bitwarden-menu.enable = mkOption {default = false;};
options.custom.programs.bitwarden-menu.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/firecat53/bitwarden-menu # https://github.com/firecat53/bitwarden-menu

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.chromium;
in
{ {
options.custom.programs.chromium.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.chromium;
in {
options.custom.programs.chromium.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://wiki.nixos.org/wiki/Chromium # https://wiki.nixos.org/wiki/Chromium

View file

@ -4,14 +4,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.clipse; cfg = config.custom.programs.clipse;
in in {
{ options.custom.programs.clipse.enable = mkOption {default = false;};
options.custom.programs.clipse.enable = mkOption { default = false; };
config = { config = {
# https://github.com/savedra1/clipse # https://github.com/savedra1/clipse

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.dconf;
in
{ {
options.custom.programs.dconf.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.dconf;
in {
options.custom.programs.dconf.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://gitlab.gnome.org/GNOME/dconf # https://gitlab.gnome.org/GNOME/dconf

View file

@ -1,8 +1,9 @@
{ config, lib, ... }:
with lib;
{ {
config,
lib,
...
}:
with lib; {
config.custom.programs = mkMerge [ config.custom.programs = mkMerge [
(mkIf config.custom.default { (mkIf config.custom.default {
direnv.enable = true; direnv.enable = true;

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.direnv;
in
{ {
options.custom.programs.direnv.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.direnv;
in {
options.custom.programs.direnv.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/direnv/direnv # https://github.com/direnv/direnv

View file

@ -1,16 +1,16 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.discord;
in
{ {
options.custom.programs.discord.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.discord;
in {
options.custom.programs.discord.enable = mkOption {default = false;};
config.home-manager.users.myned = mkIf cfg.enable { config.home-manager.users.myned = mkIf cfg.enable {
home.file.".config/BetterDiscord".source = home.file.".config/BetterDiscord".source =
config.home-manager.users.${config.custom.username}.lib.file.mkOutOfStoreSymlink config.home-manager.users.${config.custom.username}.lib.file.mkOutOfStoreSymlink
"/home/${config.custom.username}/SYNC/common/config/discord/BetterDiscord"; "/home/${config.custom.username}/SYNC/common/config/discord/BetterDiscord";
}; };
} }

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.element-desktop;
in
{ {
options.custom.programs.element-desktop.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.element-desktop;
in {
options.custom.programs.element-desktop.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# Element Desktop custom themes # Element Desktop custom themes

View file

@ -4,23 +4,19 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
fastfetch = "${pkgs.fastfetch}/bin/fastfetch"; fastfetch = "${pkgs.fastfetch}/bin/fastfetch";
cfg = config.custom.programs.fastfetch; cfg = config.custom.programs.fastfetch;
in in {
{
options.custom.programs.fastfetch = { options.custom.programs.fastfetch = {
enable = mkOption { default = false; }; enable = mkOption {default = false;};
greet = mkOption { default = false; }; greet = mkOption {default = false;};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/fastfetch-cli/fastfetch # https://github.com/fastfetch-cli/fastfetch
environment.systemPackages = [ pkgs.fastfetch ]; environment.systemPackages = [pkgs.fastfetch];
# System info greeting # System info greeting
programs.fish.interactiveShellInit = mkIf cfg.greet '' programs.fish.interactiveShellInit = mkIf cfg.greet ''

View file

@ -5,14 +5,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.firefox; cfg = config.custom.programs.firefox;
in in {
{ options.custom.programs.firefox.enable = mkOption {default = false;};
options.custom.programs.firefox.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# TODO: Switch to librewolf when supported by module # TODO: Switch to librewolf when supported by module
@ -116,13 +112,12 @@ in
# https://mozilla.github.io/policy-templates/#extensionsettings # https://mozilla.github.io/policy-templates/#extensionsettings
#?? https://addons.mozilla.org/en-US/firefox #?? https://addons.mozilla.org/en-US/firefox
#?? about:support#addons #?? about:support#addons
ExtensionSettings = ExtensionSettings = let
let extension = id: {
extension = id: { install_url = "https://addons.mozilla.org/firefox/downloads/latest/${id}/latest.xpi";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/${id}/latest.xpi"; installation_mode = "normal_installed";
installation_mode = "normal_installed"; };
}; in
in
mkMerge [ mkMerge [
(mkIf config.custom.minimal { (mkIf config.custom.minimal {
"uBlock0@raymondhill.net" = extension "ublock-origin"; # uBlock Origin "uBlock0@raymondhill.net" = extension "ublock-origin"; # uBlock Origin
@ -194,59 +189,57 @@ in
#!! Only certain preferences are supported via policies #!! Only certain preferences are supported via policies
# https://mozilla.github.io/policy-templates/#preferences # https://mozilla.github.io/policy-templates/#preferences
#?? about:config #?? about:config
Preferences = Preferences = let
let locked = value: {
locked = value: { Value = value;
Value = value; Status = "locked";
Status = "locked";
};
in
{
"accessibility.browsewithcaret" = locked false;
"accessibility.typeaheadfind" = locked false;
"browser.aboutConfig.showWarning" = locked false;
"browser.contentblocking.category" = locked "standard";
"browser.crashReports.unsubmittedCheck.autoSubmit2" = locked false;
"browser.ctrlTab.sortByRecentlyUsed" = locked false;
"browser.download.always_ask_before_handling_new_types" = locked false;
"browser.download.useDownloadDir" = locked true;
"browser.link.open_newwindow" = locked 3; # New tab
"browser.link.open_newwindow.restriction" = locked 0; # Popups in new tab
"browser.newtabpage.enabled" = locked true;
"browser.preferences.defaultPerformanceSettings.enabled" = locked true;
"browser.quitShortcut.disabled" = locked true;
"browser.search.widget.inNavBar" = locked false;
"browser.startup.homepage" = locked "about:home";
"browser.startup.page" = locked 3; # Previous session
"browser.tabs.closeTabByDblclick" = locked true;
"browser.tabs.closeWindowWithLastTab" = locked false;
"browser.tabs.insertAfterCurrent" = locked false;
"browser.tabs.insertRelatedAfterCurrent" = locked false;
"browser.tabs.loadInBackground" = locked true;
"browser.tabs.warnOnClose" = locked false;
"browser.tabs.warnOnCloseOtherTabs" = locked false;
"browser.theme.dark-private-windows" = locked false;
"browser.toolbars.bookmarks.showOtherBookmarks" = locked false;
"browser.uidensity" = locked 0;
"browser.warnOnQuitShortcut" = locked true;
"dom.security.https_only_mode" = locked true;
"extensions.formautofill.addresses.enabled" = locked false;
"extensions.formautofill.creditCards.enabled" = locked false;
"general.autoScroll" = locked false;
"general.smoothScroll" = locked true;
"layers.acceleration.force-enabled" = locked true;
"layout.css.always_underline_links" = locked false;
"layout.css.backdrop-filter.enabled" = locked true;
"layout.spellcheckDefault" = locked 0; # Disabled
"media.eme.enabled" = locked true; # DRM
"media.hardwaremediakeys.enabled" = locked true;
"media.hardware-video-decoding.enabled" = locked false; # !! Disable video acceleration
#// "media.rdd-process.enabled" = locked false; # RDD sandbox #!! Insecure
"toolkit.legacyUserProfileCustomizations.stylesheets" = locked true;
"ui.key.menuAccessKey" = locked 0; # Disable menu key
"widget.gtk.overlay-scrollbars.enabled" = locked true;
"widget.gtk.rounded-bottom-corners.enabled" = locked true;
}; };
in {
"accessibility.browsewithcaret" = locked false;
"accessibility.typeaheadfind" = locked false;
"browser.aboutConfig.showWarning" = locked false;
"browser.contentblocking.category" = locked "standard";
"browser.crashReports.unsubmittedCheck.autoSubmit2" = locked false;
"browser.ctrlTab.sortByRecentlyUsed" = locked false;
"browser.download.always_ask_before_handling_new_types" = locked false;
"browser.download.useDownloadDir" = locked true;
"browser.link.open_newwindow" = locked 3; # New tab
"browser.link.open_newwindow.restriction" = locked 0; # Popups in new tab
"browser.newtabpage.enabled" = locked true;
"browser.preferences.defaultPerformanceSettings.enabled" = locked true;
"browser.quitShortcut.disabled" = locked true;
"browser.search.widget.inNavBar" = locked false;
"browser.startup.homepage" = locked "about:home";
"browser.startup.page" = locked 3; # Previous session
"browser.tabs.closeTabByDblclick" = locked true;
"browser.tabs.closeWindowWithLastTab" = locked false;
"browser.tabs.insertAfterCurrent" = locked false;
"browser.tabs.insertRelatedAfterCurrent" = locked false;
"browser.tabs.loadInBackground" = locked true;
"browser.tabs.warnOnClose" = locked false;
"browser.tabs.warnOnCloseOtherTabs" = locked false;
"browser.theme.dark-private-windows" = locked false;
"browser.toolbars.bookmarks.showOtherBookmarks" = locked false;
"browser.uidensity" = locked 0;
"browser.warnOnQuitShortcut" = locked true;
"dom.security.https_only_mode" = locked true;
"extensions.formautofill.addresses.enabled" = locked false;
"extensions.formautofill.creditCards.enabled" = locked false;
"general.autoScroll" = locked false;
"general.smoothScroll" = locked true;
"layers.acceleration.force-enabled" = locked true;
"layout.css.always_underline_links" = locked false;
"layout.css.backdrop-filter.enabled" = locked true;
"layout.spellcheckDefault" = locked 0; # Disabled
"media.eme.enabled" = locked true; # DRM
"media.hardwaremediakeys.enabled" = locked true;
"media.hardware-video-decoding.enabled" = locked false; # !! Disable video acceleration
#// "media.rdd-process.enabled" = locked false; # RDD sandbox #!! Insecure
"toolkit.legacyUserProfileCustomizations.stylesheets" = locked true;
"ui.key.menuAccessKey" = locked 0; # Disable menu key
"widget.gtk.overlay-scrollbars.enabled" = locked true;
"widget.gtk.rounded-bottom-corners.enabled" = locked true;
};
SearchBar = "unified"; SearchBar = "unified";
@ -552,7 +545,7 @@ in
"Downloads/stg" = mkIf config.custom.full { "Downloads/stg" = mkIf config.custom.full {
source = source =
config.home-manager.users.${config.custom.username}.lib.file.mkOutOfStoreSymlink config.home-manager.users.${config.custom.username}.lib.file.mkOutOfStoreSymlink
"/home/myned/SYNC/common/config/extensions/Simple Tab Groups"; "/home/myned/SYNC/common/config/extensions/Simple Tab Groups";
}; };
# Work around icon dissociation due to missing --name flag in actions # Work around icon dissociation due to missing --name flag in actions

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.fish;
in
{ {
options.custom.programs.fish.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.fish;
in {
options.custom.programs.fish.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://wiki.nixos.org/wiki/Fish # https://wiki.nixos.org/wiki/Fish

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.foot;
in
{ {
options.custom.programs.foot.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.foot;
in {
options.custom.programs.foot.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://codeberg.org/dnkl/foot # https://codeberg.org/dnkl/foot

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.fuzzel;
in
{ {
options.custom.programs.fuzzel.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.fuzzel;
in {
options.custom.programs.fuzzel.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://codeberg.org/dnkl/fuzzel # https://codeberg.org/dnkl/fuzzel

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.gamemode;
in
{ {
options.custom.programs.gamemode.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.gamemode;
in {
options.custom.programs.gamemode.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/FeralInteractive/gamemode # https://github.com/FeralInteractive/gamemode

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.gamescope;
in
{ {
options.custom.programs.gamescope.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.gamescope;
in {
options.custom.programs.gamescope.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/ValveSoftware/gamescope # https://github.com/ValveSoftware/gamescope

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.git;
in
{ {
options.custom.programs.git.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.git;
in {
options.custom.programs.git.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://wiki.archlinux.org/title/Git # https://wiki.archlinux.org/title/Git

View file

@ -4,43 +4,38 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.gnome-shell; cfg = config.custom.programs.gnome-shell;
in in {
{ options.custom.programs.gnome-shell.enable = mkOption {default = false;};
options.custom.programs.gnome-shell.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# BUG: programs.gnome-shell.theme option forces installation of gnome-shell-extensions # BUG: programs.gnome-shell.theme option forces installation of gnome-shell-extensions
programs.gnome-shell = { programs.gnome-shell = {
enable = true; enable = true;
extensions = extensions = with pkgs.gnomeExtensions;
with pkgs.gnomeExtensions;
optionals config.custom.default [ optionals config.custom.default [
{ package = appindicator; } # https://github.com/ubuntu/gnome-shell-extension-appindicator {package = appindicator;} # https://github.com/ubuntu/gnome-shell-extension-appindicator
] ]
++ optionals config.custom.minimal [ ++ optionals config.custom.minimal [
{ package = caffeine; } # https://github.com/eonpatapon/gnome-shell-extension-caffeine {package = caffeine;} # https://github.com/eonpatapon/gnome-shell-extension-caffeine
{ package = dash-to-dock; } # https://github.com/micheleg/dash-to-dock {package = dash-to-dock;} # https://github.com/micheleg/dash-to-dock
#// { package = dash2dock-lite; } # https://github.com/icedman/dash2dock-lite #// { package = dash2dock-lite; } # https://github.com/icedman/dash2dock-lite
{ package = gsconnect; } # https://github.com/GSConnect/gnome-shell-extension-gsconnect {package = gsconnect;} # https://github.com/GSConnect/gnome-shell-extension-gsconnect
{ package = just-perfection; } # https://gitlab.gnome.org/jrahmatzadeh/just-perfection {package = just-perfection;} # https://gitlab.gnome.org/jrahmatzadeh/just-perfection
{ package = rounded-window-corners-reborn; } # https://github.com/flexagoon/rounded-window-corners {package = rounded-window-corners-reborn;} # https://github.com/flexagoon/rounded-window-corners
#// { package = user-themes; } # https://gitlab.gnome.org/GNOME/gnome-shell-extensions #// { package = user-themes; } # https://gitlab.gnome.org/GNOME/gnome-shell-extensions
] ]
++ optionals config.custom.full [ ++ optionals config.custom.full [
#// { package = auto-move-windows; } # https://gitlab.gnome.org/GNOME/gnome-shell-extensions #// { package = auto-move-windows; } # https://gitlab.gnome.org/GNOME/gnome-shell-extensions
{ package = clipboard-indicator; } # https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator {package = clipboard-indicator;} # https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator
{ package = ddterm; } # https://github.com/ddterm/gnome-shell-extension-ddterm {package = ddterm;} # https://github.com/ddterm/gnome-shell-extension-ddterm
#// { package = hide-top-bar; } # https://gitlab.gnome.org/tuxor1337/hidetopbar #// { package = hide-top-bar; } # https://gitlab.gnome.org/tuxor1337/hidetopbar
{ package = media-controls; } # https://github.com/sakithb/media-controls {package = media-controls;} # https://github.com/sakithb/media-controls
#// { package = smart-auto-move; } # https://github.com/khimaros/smart-auto-move #// { package = smart-auto-move; } # https://github.com/khimaros/smart-auto-move
{ package = tailscale-qs; } # https://github.com/joaophi/tailscale-gnome-qs {package = tailscale-qs;} # https://github.com/joaophi/tailscale-gnome-qs
{ package = tiling-assistant; } # https://github.com/Leleat/Tiling-Assistant {package = tiling-assistant;} # https://github.com/Leleat/Tiling-Assistant
]; ];
}; };
}; };

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.gnome-terminal;
in
{ {
options.custom.programs.gnome-terminal.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.gnome-terminal;
in {
options.custom.programs.gnome-terminal.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://gitlab.gnome.org/GNOME/gnome-terminal # https://gitlab.gnome.org/GNOME/gnome-terminal

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.gpg;
in
{ {
options.custom.programs.gpg.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.gpg;
in {
options.custom.programs.gpg.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://wiki.archlinux.org/title/GnuPG # https://wiki.archlinux.org/title/GnuPG

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.htop;
in
{ {
options.custom.programs.htop.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.htop;
in {
options.custom.programs.htop.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/htop-dev/htop # https://github.com/htop-dev/htop
@ -71,25 +71,25 @@ in
} }
// ( // (
with config.home-manager.users.${config.custom.username}.lib.htop; with config.home-manager.users.${config.custom.username}.lib.htop;
leftMeters [ leftMeters [
(bar "LeftCPUs4") (bar "LeftCPUs4")
(text "Blank") (text "Blank")
(bar "CPU") (bar "CPU")
(bar "MemorySwap") (bar "MemorySwap")
(text "System") (text "System")
(text "DateTime") (text "DateTime")
] ]
) )
// ( // (
with config.home-manager.users.${config.custom.username}.lib.htop; with config.home-manager.users.${config.custom.username}.lib.htop;
rightMeters [ rightMeters [
(bar "RightCPUs4") (bar "RightCPUs4")
(text "Blank") (text "Blank")
(bar "NetworkIO") (bar "NetworkIO")
(bar "DiskIO") (bar "DiskIO")
(text "Hostname") (text "Hostname")
(text "Uptime") (text "Uptime")
] ]
); );
}; };

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.hyprlock;
in
{ {
options.custom.programs.hyprlock.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.hyprlock;
in {
options.custom.programs.hyprlock.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.hyprlock.enable = true; # Grant PAM access programs.hyprlock.enable = true; # Grant PAM access

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.kdeconnect;
in
{ {
options.custom.programs.kdeconnect.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.kdeconnect;
in {
options.custom.programs.kdeconnect.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/KDE/kdeconnect-kde # https://github.com/KDE/kdeconnect-kde

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.kitty;
in
{ {
options.custom.programs.kitty.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.kitty;
in {
options.custom.programs.kitty.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://sw.kovidgoyal.net/kitty/ # https://sw.kovidgoyal.net/kitty/

View file

@ -4,25 +4,21 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.libreoffice; cfg = config.custom.programs.libreoffice;
in in {
{
options.custom.programs.libreoffice = { options.custom.programs.libreoffice = {
enable = mkOption { default = false; }; enable = mkOption {default = false;};
package = mkOption { default = pkgs.libreoffice-fresh; }; package = mkOption {default = pkgs.libreoffice-fresh;};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://www.libreoffice.org # https://www.libreoffice.org
environment.systemPackages = [ cfg.package ]; environment.systemPackages = [cfg.package];
#!! Options not available, files synced #!! Options not available, files synced
home-manager.users.${config.custom.username}.home.file.".config/libreoffice/4/user".source = home-manager.users.${config.custom.username}.home.file.".config/libreoffice/4/user".source =
config.home-manager.users.${config.custom.username}.lib.file.mkOutOfStoreSymlink config.home-manager.users.${config.custom.username}.lib.file.mkOutOfStoreSymlink
"/home/${config.custom.username}/SYNC/linux/config/libreoffice/user"; "/home/${config.custom.username}/SYNC/linux/config/libreoffice/user";
}; };
} }

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.librewolf;
in
{ {
options.custom.programs.librewolf.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.librewolf;
in {
options.custom.programs.librewolf.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://codeberg.org/librewolf # https://codeberg.org/librewolf

View file

@ -1,15 +1,16 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.localsend;
in
{ {
options.custom.programs.localsend.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.localsend;
in {
options.custom.programs.localsend.enable = mkOption {default = false;};
config = config =
if (versionAtLeast version "24.11") then if (versionAtLeast version "24.11")
then
(mkIf cfg.enable { (mkIf cfg.enable {
# https://github.com/localsend/localsend # https://github.com/localsend/localsend
programs.localsend = { programs.localsend = {
@ -17,6 +18,5 @@ in
openFirewall = true; openFirewall = true;
}; };
}) })
else else {};
{ };
} }

View file

@ -1,17 +1,17 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.logseq;
in
{ {
options.custom.programs.logseq.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.logseq;
in {
options.custom.programs.logseq.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
#!! Synced imperative configuration #!! Synced imperative configuration
home.file.".logseq/".source = home.file.".logseq/".source =
config.home-manager.users.${config.custom.username}.lib.file.mkOutOfStoreSymlink config.home-manager.users.${config.custom.username}.lib.file.mkOutOfStoreSymlink
"/home/${config.custom.username}/SYNC/common/config/logseq/"; "/home/${config.custom.username}/SYNC/common/config/logseq/";
}; };
} }

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.man;
in
{ {
options.custom.programs.man.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.man;
in {
options.custom.programs.man.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# Enable as much offline docs as possible # Enable as much offline docs as possible

View file

@ -4,14 +4,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.mangohud; cfg = config.custom.programs.mangohud;
in in {
{ options.custom.programs.mangohud.enable = mkOption {default = false;};
options.custom.programs.mangohud.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/flightlessmango/MangoHud # https://github.com/flightlessmango/MangoHud

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.mosh;
in
{ {
options.custom.programs.mosh.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.mosh;
in {
options.custom.programs.mosh.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://wiki.nixos.org/wiki/Mosh # https://wiki.nixos.org/wiki/Mosh

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nano;
in
{ {
options.custom.programs.nano.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nano;
in {
options.custom.programs.nano.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://wiki.archlinux.org/title/Nano # https://wiki.archlinux.org/title/Nano

View file

@ -4,14 +4,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.nautilus; cfg = config.custom.programs.nautilus;
in in {
{ options.custom.programs.nautilus.enable = mkOption {default = false;};
options.custom.programs.nautilus.enable = mkOption { default = false; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.gvfs.enable = true; # Trash dependency services.gvfs.enable = true; # Trash dependency

View file

@ -1,28 +1,26 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.networkmanager-dmenu;
in
{ {
options.custom.programs.networkmanager-dmenu.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.networkmanager-dmenu;
in {
options.custom.programs.networkmanager-dmenu.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/firecat53/networkmanager-dmenu # https://github.com/firecat53/networkmanager-dmenu
# https://github.com/firecat53/networkmanager-dmenu/blob/main/config.ini.example # https://github.com/firecat53/networkmanager-dmenu/blob/main/config.ini.example
#!! Option not available, files written directly #!! Option not available, files written directly
# FIXME: active_chars does not take effect # FIXME: active_chars does not take effect
home.file.".config/networkmanager-dmenu/config.ini".text = home.file.".config/networkmanager-dmenu/config.ini".text = let
let wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi";
wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi"; in ''
in [dmenu]
'' dmenu_command = ${wofi} --dmenu --lines 11
[dmenu] active_chars = >
dmenu_command = ${wofi} --dmenu --lines 11 wifi_icons = 󰤯󰤟󰤢󰤥󰤨
active_chars = > format = {icon} {name}
wifi_icons = 󰤯󰤟󰤢󰤥󰤨 '';
format = {icon} {name}
'';
}; };
} }

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nh;
in
{ {
options.custom.programs.nh.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nh;
in {
options.custom.programs.nh.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/viperML/nh # https://github.com/viperML/nh

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nheko;
in
{ {
options.custom.programs.nheko.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nheko;
in {
options.custom.programs.nheko.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/Nheko-Reborn/nheko # https://github.com/Nheko-Reborn/nheko

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nix-index;
in
{ {
options.custom.programs.nix-index.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nix-index;
in {
options.custom.programs.nix-index.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/nix-community/nix-index # https://github.com/nix-community/nix-index

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nix-ld;
in
{ {
options.custom.programs.nix-ld.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nix-ld;
in {
options.custom.programs.nix-ld.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/nix-community/nix-ld # https://github.com/nix-community/nix-ld

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nushell;
in
{ {
options.custom.programs.nushell.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nushell;
in {
options.custom.programs.nushell.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# TODO: Create config # TODO: Create config

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.nvtop;
in
{ {
options.custom.programs.nvtop.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.nvtop;
in {
options.custom.programs.nvtop.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/Syllo/nvtop # https://github.com/Syllo/nvtop

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.obs-studio;
in
{ {
options.custom.programs.obs-studio.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.obs-studio;
in {
options.custom.programs.obs-studio.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/obsproject/obs-studio # https://github.com/obsproject/obs-studio

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.onedrive;
in
{ {
options.custom.programs.onedrive.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.onedrive;
in {
options.custom.programs.onedrive.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/abraunegg/onedrive # https://github.com/abraunegg/onedrive

View file

@ -4,14 +4,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.path-of-building; cfg = config.custom.programs.path-of-building;
in in {
{ options.custom.programs.path-of-building.enable = mkOption {default = false;};
options.custom.programs.path-of-building.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
xdg.desktopEntries.path-of-building = { xdg.desktopEntries.path-of-building = {

View file

@ -4,14 +4,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.rbw; cfg = config.custom.programs.rbw;
in in {
{ options.custom.programs.rbw.enable = mkOption {default = false;};
options.custom.programs.rbw.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/doy/rbw # https://github.com/doy/rbw

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.rofi-rbw;
in
{ {
options.custom.programs.rofi-rbw.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.rofi-rbw;
in {
options.custom.programs.rofi-rbw.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/fdw/rofi-rbw # https://github.com/fdw/rofi-rbw

View file

@ -4,14 +4,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.rofi; cfg = config.custom.programs.rofi;
in in {
{ options.custom.programs.rofi.enable = mkOption {default = false;};
options.custom.programs.rofi.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
#!! Creates package derivation #!! Creates package derivation
@ -30,8 +26,8 @@ in
# Build against rofi-wayland due to ABI incompatibility with upstream # Build against rofi-wayland due to ABI incompatibility with upstream
# https://github.com/lbonn/rofi/issues/96 # https://github.com/lbonn/rofi/issues/96
# https://github.com/NixOS/nixpkgs/issues/298539 # https://github.com/NixOS/nixpkgs/issues/298539
(rofi-calc.override { rofi-unwrapped = rofi-wayland-unwrapped; }) # Calculator (rofi-calc.override {rofi-unwrapped = rofi-wayland-unwrapped;}) # Calculator
(rofi-top.override { rofi-unwrapped = rofi-wayland-unwrapped; }) # System monitor (rofi-top.override {rofi-unwrapped = rofi-wayland-unwrapped;}) # System monitor
]; ];
#?? rofi-theme-selector #?? rofi-theme-selector

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.seahorse;
in
{ {
options.custom.programs.seahorse.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.seahorse;
in {
options.custom.programs.seahorse.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.seahorse.enable = true; programs.seahorse.enable = true;

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.slurp;
in
{ {
options.custom.programs.slurp.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.slurp;
in {
options.custom.programs.slurp.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/emersion/slurp # https://github.com/emersion/slurp

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.ssh;
in
{ {
options.custom.programs.ssh.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.ssh;
in {
options.custom.programs.ssh.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# Disable prompt for new hosts # Disable prompt for new hosts

View file

@ -4,33 +4,31 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.steam; cfg = config.custom.programs.steam;
in in {
{
# https://wiki.nixos.org/wiki/Steam # https://wiki.nixos.org/wiki/Steam
# https://store.steampowered.com # https://store.steampowered.com
options.custom.programs.steam = { options.custom.programs.steam = {
enable = mkOption { default = false; }; enable = mkOption {default = false;};
extest = mkOption { default = false; }; extest = mkOption {default = false;};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.steam = { programs.steam =
enable = true; {
extest.enable = cfg.extest; # Work around invisible cursor on Wayland
extraCompatPackages = [ pkgs.proton-ge-bin ];
gamescopeSession = {
enable = true; enable = true;
# args = [ extest.enable = cfg.extest; # Work around invisible cursor on Wayland
# "--backend sdl" extraCompatPackages = [pkgs.proton-ge-bin];
# "--fullscreen"
# ]; gamescopeSession = {
}; enable = true;
} // optionalAttrs (versionAtLeast version "24.11") { protontricks.enable = true; }; # args = [
# "--backend sdl"
# "--fullscreen"
# ];
};
}
// optionalAttrs (versionAtLeast version "24.11") {protontricks.enable = true;};
}; };
} }

View file

@ -4,19 +4,15 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.swaylock; cfg = config.custom.programs.swaylock;
in in {
{ options.custom.programs.swaylock.enable = mkOption {default = false;};
options.custom.programs.swaylock.enable = mkOption { default = false; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
# Allow swaylock to unlock the session # Allow swaylock to unlock the session
# https://wiki.nixos.org/wiki/Sway#Swaylock_cannot_be_unlocked_with_the_correct_password # https://wiki.nixos.org/wiki/Sway#Swaylock_cannot_be_unlocked_with_the_correct_password
security.pam.services.swaylock = { }; security.pam.services.swaylock = {};
# https://github.com/swaywm/swaylock # https://github.com/swaywm/swaylock
home-manager.users.${config.custom.username}.programs.swaylock = { home-manager.users.${config.custom.username}.programs.swaylock = {

View file

@ -5,14 +5,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.thunderbird; cfg = config.custom.programs.thunderbird;
in in {
{ options.custom.programs.thunderbird.enable = mkOption {default = false;};
options.custom.programs.thunderbird.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://wiki.nixos.org/wiki/Thunderbird # https://wiki.nixos.org/wiki/Thunderbird

View file

@ -1,17 +1,17 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.tio;
in
{ {
options.custom.programs.tio.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.tio;
in {
options.custom.programs.tio.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# Allow serial device access # Allow serial device access
# https://github.com/tio/tio?tab=readme-ov-file#46-known-issues # https://github.com/tio/tio?tab=readme-ov-file#46-known-issues
users.users.${config.custom.username}.extraGroups = [ "dialout" ]; users.users.${config.custom.username}.extraGroups = ["dialout"];
# https://github.com/tio/tio # https://github.com/tio/tio
#!! Options not available, files written directly #!! Options not available, files written directly

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.tmux;
in
{ {
options.custom.programs.tmux.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.tmux;
in {
options.custom.programs.tmux.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://wiki.nixos.org/wiki/Tmux # https://wiki.nixos.org/wiki/Tmux

View file

@ -5,14 +5,10 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.programs.vscode; cfg = config.custom.programs.vscode;
in in {
{ options.custom.programs.vscode.enable = mkOption {default = false;};
options.custom.programs.vscode.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://wiki.nixos.org/wiki/VSCodium # https://wiki.nixos.org/wiki/VSCodium

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.wezterm;
in
{ {
options.custom.programs.wezterm.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.wezterm;
in {
options.custom.programs.wezterm.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/wez/wezterm # https://github.com/wez/wezterm

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.wireshark;
in
{ {
options.custom.programs.wireshark.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.wireshark;
in {
options.custom.programs.wireshark.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://gitlab.com/wireshark/wireshark # https://gitlab.com/wireshark/wireshark
@ -15,6 +15,6 @@ in
package = pkgs.wireshark; # GUI package = pkgs.wireshark; # GUI
}; };
users.users.${config.custom.username}.extraGroups = [ "wireshark" ]; users.users.${config.custom.username}.extraGroups = ["wireshark"];
}; };
} }

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.wofi;
in
{ {
options.custom.programs.wofi.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.wofi;
in {
options.custom.programs.wofi.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://hg.sr.ht/~scoopta/wofi # https://hg.sr.ht/~scoopta/wofi

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.programs.wpaperd;
in
{ {
options.custom.programs.wpaperd.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.wpaperd;
in {
options.custom.programs.wpaperd.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/danyspin97/wpaperd # https://github.com/danyspin97/wpaperd

View file

@ -4,180 +4,174 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
# Use packages from local derivation # Use packages from local derivation
git = config.home-manager.users.${config.custom.username}.programs.git.package; git = config.home-manager.users.${config.custom.username}.programs.git.package;
hyprland = hyprland =
config.home-manager.users.${config.custom.username}.wayland.windowManager.hyprland.finalPackage; config.home-manager.users.${config.custom.username}.wayland.windowManager.hyprland.finalPackage;
wofi = config.home-manager.users.${config.custom.username}.programs.wofi.package; wofi = config.home-manager.users.${config.custom.username}.programs.wofi.package;
in in {
{ config.home-manager.users.${config.custom.username}.home.file = let
config.home-manager.users.${config.custom.username}.home.file = # Place script.ext in the same directory as this file
let #?? pkg = (SHELL "NAME" [ DEPENDENCIES ])
# Place script.ext in the same directory as this file # https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-writeShellApplication
#?? pkg = (SHELL "NAME" [ DEPENDENCIES ]) bash = name: dependencies: {
# https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-writeShellApplication ".local/bin/${name}".source =
bash = name: dependencies: { pkgs.writeShellApplication {
".local/bin/${name}".source = inherit name;
pkgs.writeShellApplication { runtimeInputs = dependencies;
inherit name; text = builtins.readFile ./${name}.sh;
runtimeInputs = dependencies; }
text = builtins.readFile ./${name}.sh; + "/bin/${name}";
} };
+ "/bin/${name}";
};
# https://wiki.nixos.org/wiki/Nix-writers#Python3 # https://wiki.nixos.org/wiki/Nix-writers#Python3
# Always latest python version in nixpkgs, use writers.makePythonWriter to pin version # Always latest python version in nixpkgs, use writers.makePythonWriter to pin version
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/writers/scripts.nix#L605 # https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/writers/scripts.nix#L605
python = name: dependencies: { python = name: dependencies: {
".local/bin/${name}".source = ".local/bin/${name}".source =
pkgs.writers.writePython3Bin name { libraries = dependencies; } pkgs.writers.writePython3Bin name {libraries = dependencies;}
# Disable linting # Disable linting
# https://flake8.pycqa.org/en/3.1.1/user/ignoring-errors.html#ignoring-entire-files # https://flake8.pycqa.org/en/3.1.1/user/ignoring-errors.html#ignoring-entire-files
("# flake8: noqa\n" + builtins.readFile ./${name}.py) ("# flake8: noqa\n" + builtins.readFile ./${name}.py)
+ "/bin/${name}"; + "/bin/${name}";
}; };
in in
mkIf config.custom.full ( mkIf config.custom.full (
with pkgs; with pkgs;
mkMerge ( mkMerge (
[ [
# Bash files with extension .sh # Bash files with extension .sh
(bash "audio" [ (bash "audio" [
easyeffects easyeffects
libnotify libnotify
])
(bash "bwm" [
bitwarden-cli
coreutils
jq
libnotify
wl-clipboard
wofi
xclip
])
(bash "calc" [
coreutils
libnotify
libqalculate
wl-clipboard
wofi
xclip
])
(bash "clipboard" [
cliphist
libnotify
procps
wl-clipboard
wofi
xclip
])
(bash "close" [
coreutils
hyprland
jq
libnotify
])
(bash "fingerprints" [
fprintd
libnotify
])
(bash "flakegen" [
git
libnotify
nix
])
(bash "inhibit" [
coreutils
libnotify
systemd
])
(bash "left" [
hyprland
jq
libnotify
])
(bash "minimize" [
hyprland
jq
libnotify
])
(bash "network" [
libnotify
networkmanager
])
(bash "power" [
libnotify
power-profiles-daemon
])
(bash "rebuild" [
libnotify
nixos-rebuild
])
(bash "repl" [
libnotify
nixos-rebuild
])
(bash "screenshot" [
coreutils
grimblast
imagemagick
libnotify
swappy
])
(bash "target" [
libnotify
nixos-rebuild
])
(bash "toggle" [
gnugrep
hyprland
jq
libnotify
])
(bash "upgrade" [
libnotify
nix
nixos-rebuild
])
(bash "vm" [
coreutils
freerdp3
iputils
libnotify
libvirt
remmina
])
(bash "vpn" [
gnused
jq
libnotify
tailscale
])
(bash "vrr" [
hyprland
jq
libnotify
])
(bash "wallpaper" [
coreutils
fd
imagemagick
libnotify
rsync
swww
tailscale
])
]
++ (with pkgs.python3Packages; [
# Python files with extension .py
(python "bcrypt" [bcrypt])
]) ])
(bash "bwm" [ )
bitwarden-cli
coreutils
jq
libnotify
wl-clipboard
wofi
xclip
])
(bash "calc" [
coreutils
libnotify
libqalculate
wl-clipboard
wofi
xclip
])
(bash "clipboard" [
cliphist
libnotify
procps
wl-clipboard
wofi
xclip
])
(bash "close" [
coreutils
hyprland
jq
libnotify
])
(bash "fingerprints" [
fprintd
libnotify
])
(bash "flakegen" [
git
libnotify
nix
])
(bash "inhibit" [
coreutils
libnotify
systemd
])
(bash "left" [
hyprland
jq
libnotify
])
(bash "minimize" [
hyprland
jq
libnotify
])
(bash "network" [
libnotify
networkmanager
])
(bash "power" [
libnotify
power-profiles-daemon
])
(bash "rebuild" [
libnotify
nixos-rebuild
])
(bash "repl" [
libnotify
nixos-rebuild
])
(bash "screenshot" [
coreutils
grimblast
imagemagick
libnotify
swappy
])
(bash "target" [
libnotify
nixos-rebuild
])
(bash "toggle" [
gnugrep
hyprland
jq
libnotify
])
(bash "upgrade" [
libnotify
nix
nixos-rebuild
])
(bash "vm" [
coreutils
freerdp3
iputils
libnotify
libvirt
remmina
])
(bash "vpn" [
gnused
jq
libnotify
tailscale
])
(bash "vrr" [
hyprland
jq
libnotify
])
(bash "wallpaper" [
coreutils
fd
imagemagick
libnotify
rsync
swww
tailscale
])
]
++ (with pkgs.python3Packages; [
# Python files with extension .py
(python "bcrypt" [ bcrypt ])
])
)
); );
} }

View file

@ -4,17 +4,13 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cat = "${pkgs.coreutils}/bin/cat"; cat = "${pkgs.coreutils}/bin/cat";
sed = "${pkgs.gnused}/bin/sed"; sed = "${pkgs.gnused}/bin/sed";
cfg = config.custom.services.agenix; cfg = config.custom.services.agenix;
in in {
{ options.custom.services.agenix.enable = mkOption {default = false;};
options.custom.services.agenix.enable = mkOption { default = false; };
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
xdg.configFile."hypr/hyprland.conf".force = true; xdg.configFile."hypr/hyprland.conf".force = true;
@ -40,7 +36,7 @@ in
}; };
Install = { Install = {
WantedBy = [ "default.target" ]; WantedBy = ["default.target"];
}; };
}; };
}; };

View file

@ -1,17 +1,17 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.services.auto-cpufreq;
in
{ {
config,
lib,
...
}:
with lib; let
cfg = config.custom.services.auto-cpufreq;
in {
options.custom.services.auto-cpufreq = { options.custom.services.auto-cpufreq = {
enable = mkOption { default = false; }; enable = mkOption {default = false;};
max = { max = {
battery = mkOption { default = null; }; # GHz battery = mkOption {default = null;}; # GHz
charger = mkOption { default = null; }; # GHz charger = mkOption {default = null;}; # GHz
}; };
}; };

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.services.avizo;
in
{ {
options.custom.services.avizo.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.services.avizo;
in {
options.custom.services.avizo.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/misterdanb/avizo # https://github.com/misterdanb/avizo

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.services.blueman-applet;
in
{ {
options.custom.services.blueman-applet.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.services.blueman-applet;
in {
options.custom.services.blueman-applet.enable = mkOption {default = false;};
config.home-manager.users.${config.custom.username} = mkIf cfg.enable { config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
# https://github.com/blueman-project/blueman # https://github.com/blueman-project/blueman

View file

@ -1,12 +1,12 @@
{ config, lib, ... }:
with lib;
let
cfg = config.custom.services.blueman;
in
{ {
options.custom.services.blueman.enable = mkOption { default = false; }; config,
lib,
...
}:
with lib; let
cfg = config.custom.services.blueman;
in {
options.custom.services.blueman.enable = mkOption {default = false;};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/blueman-project/blueman # https://github.com/blueman-project/blueman

View file

@ -5,15 +5,11 @@
pkgs, pkgs,
... ...
}: }:
with lib; let
with lib;
let
cat = "${pkgs.coreutils}/bin/cat"; cat = "${pkgs.coreutils}/bin/cat";
cfg = config.custom.services.borgmatic; cfg = config.custom.services.borgmatic;
in in {
{
# https://wiki.nixos.org/wiki/Borg_backup # https://wiki.nixos.org/wiki/Borg_backup
# https://github.com/borgmatic-collective/borgmatic # https://github.com/borgmatic-collective/borgmatic
#!! Imperative initialization #!! Imperative initialization
@ -21,9 +17,9 @@ in
#?? sudo borgmatic key export #?? sudo borgmatic key export
#?? sudo borgmatic -v 1 create --progress --stats #?? sudo borgmatic -v 1 create --progress --stats
options.custom.services.borgmatic = { options.custom.services.borgmatic = {
enable = mkOption { default = false; }; enable = mkOption {default = false;};
repositories = mkOption { default = [ ]; }; repositories = mkOption {default = [];};
sources = mkOption { default = [ ]; }; sources = mkOption {default = [];};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -68,12 +64,10 @@ in
}; };
}; };
age.secrets = age.secrets = let
let secret = filename: {file = "${inputs.self}/secrets/${filename}";};
secret = filename: { file = "${inputs.self}/secrets/${filename}"; }; in {
in "${config.custom.profile}/borgmatic/borgbase.${config.custom.hostname}" = secret "${config.custom.profile}/borgmatic/borgbase.${config.custom.hostname}";
{ };
"${config.custom.profile}/borgmatic/borgbase.${config.custom.hostname}" = secret "${config.custom.profile}/borgmatic/borgbase.${config.custom.hostname}";
};
}; };
} }

View file

@ -4,27 +4,21 @@
lib, lib,
... ...
}: }:
with lib; let
with lib;
let
cfg = config.custom.services.caddy; cfg = config.custom.services.caddy;
in in {
{ options.custom.services.caddy.enable = mkOption {default = false;};
options.custom.services.caddy.enable = mkOption { default = false; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
age.secrets = age.secrets = let
let secret = filename: {
secret = filename: { file = "${inputs.self}/secrets/${filename}";
file = "${inputs.self}/secrets/${filename}"; owner = "caddy";
owner = "caddy"; group = "caddy";
group = "caddy";
};
in
{
"${config.custom.profile}/caddy/Caddyfile" = secret "${config.custom.profile}/caddy/Caddyfile";
}; };
in {
"${config.custom.profile}/caddy/Caddyfile" = secret "${config.custom.profile}/caddy/Caddyfile";
};
# https://caddyserver.com/ # https://caddyserver.com/
# https://github.com/caddyserver/caddy # https://github.com/caddyserver/caddy

View file

@ -1,14 +1,14 @@
{ config, lib, ... }: {
config,
with lib; lib,
...
let }:
with lib; let
wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi"; wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi";
cfg = config.custom.services.clipcat; cfg = config.custom.services.clipcat;
in in {
{ options.custom.services.clipcat.enable = mkOption {default = false;};
options.custom.services.clipcat.enable = mkOption { default = false; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
# BUG: Random high CPU usage # BUG: Random high CPU usage

Some files were not shown because too many files have changed in this diff Show more