dead code removal

This commit is contained in:
Ivan Kirilov Dimitrov 2024-08-07 18:44:14 +02:00
parent 06dea9ce71
commit dec199a870
No known key found for this signature in database
GPG Key ID: 0BDAD4B211C49294
7 changed files with 530 additions and 535 deletions

View File

@ -1,8 +1,8 @@
top @ {inputs, ...}: { top @ { inputs, ... }: {
imports = [./nixos ./home ./packages ./overlays ./hardware-configurations]; imports = [ ./nixos ./home ./packages ./overlays ./hardware-configurations ];
systems = ["x86_64-linux"]; systems = [ "x86_64-linux" ];
flake.stateVersion = "24.05"; flake.stateVersion = "24.05";
perSystem = perSystem @ {system, ...}: { perSystem = { system, ... }: {
config._module.args = { config._module.args = {
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
inherit system; inherit system;

View File

@ -1,19 +1,15 @@
top @ {...}: { { ... }: {
flake.hardwareConfigurations = { flake.hardwareConfigurations = {
nova = { nova = { lib, modulesPath, ... }: {
lib, imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
modulesPath,
...
}: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
boot = { boot = {
initrd = { initrd = {
availableKernelModules = ["xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" "sdhci_pci"]; availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ];
kernelModules = []; kernelModules = [ ];
luks.devices."nixos".device = "/dev/disk/by-uuid/712dd8ba-d5b4-438a-9a77-663b8c935cfe"; luks.devices."nixos".device = "/dev/disk/by-uuid/712dd8ba-d5b4-438a-9a77-663b8c935cfe";
}; };
kernelModules = ["kvm-intel"]; kernelModules = [ "kvm-intel" ];
extraModulePackages = []; extraModulePackages = [ ];
}; };
fileSystems = { fileSystems = {
"/" = { "/" = {
@ -25,7 +21,7 @@ top @ {...}: {
fsType = "vfat"; fsType = "vfat";
}; };
}; };
swapDevices = []; swapDevices = [ ];
networking.useDHCP = lib.mkForce true; networking.useDHCP = lib.mkForce true;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux"; nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkForce false; hardware.cpu.intel.updateMicrocode = lib.mkForce false;

View File

@ -1,7 +1,7 @@
toplevel @ {moduleWithSystem, ...}: { toplevel @ { moduleWithSystem, ... }: {
flake.homeManagerModules = { flake.homeManagerModules = {
base = moduleWithSystem ( base = moduleWithSystem (
top @ {...}: perSystem @ {config, ...}: { { ... }: { config, ... }: {
programs.home-manager.enable = true; programs.home-manager.enable = true;
home.stateVersion = toplevel.config.flake.stateVersion; home.stateVersion = toplevel.config.flake.stateVersion;
xdg = { xdg = {
@ -23,12 +23,12 @@ toplevel @ {moduleWithSystem, ...}: {
} }
); );
ivand = moduleWithSystem ( ivand = moduleWithSystem (
top @ {...}: perSystem @ {pkgs, ...}: { { ... }: { pkgs, ... }: {
home = { home = {
username = "ivand"; username = "ivand";
homeDirectory = "/home/ivand"; homeDirectory = "/home/ivand";
sessionVariables = {EDITOR = "nvim";}; sessionVariables = { EDITOR = "nvim"; };
packages = with pkgs; [nvim]; packages = with pkgs; [ nvim ];
}; };
programs = { programs = {
git = with pkgs.lib; { git = with pkgs.lib; {
@ -55,13 +55,12 @@ toplevel @ {moduleWithSystem, ...}: {
} }
); );
util = moduleWithSystem ( util = moduleWithSystem (
top @ {...}: perSystem @ { { ... }: { pkgs
pkgs, , config
config, , ...
... }: {
}: {
home = { home = {
packages = with pkgs; [openssl mlocate uutils-coreutils-noprefix speedtest-cli]; packages = with pkgs; [ openssl mlocate uutils-coreutils-noprefix speedtest-cli ];
sessionVariables = { sessionVariables = {
PAGER = "bat"; PAGER = "bat";
BAT_THEME = "catppuccin-mocha"; BAT_THEME = "catppuccin-mocha";
@ -70,8 +69,8 @@ toplevel @ {moduleWithSystem, ...}: {
programs = { programs = {
password-store = { password-store = {
enable = true; enable = true;
package = pkgs.pass.withExtensions (e: with e; [pass-otp pass-file]); package = pkgs.pass.withExtensions (e: with e; [ pass-otp pass-file ]);
settings = {PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store";}; settings = { PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store"; };
}; };
git = { git = {
enable = true; enable = true;
@ -92,22 +91,22 @@ toplevel @ {moduleWithSystem, ...}: {
tealdeer = { tealdeer = {
enable = true; enable = true;
settings = { settings = {
display = {compact = true;}; display = { compact = true; };
updates = {auto_update = true;}; updates = { auto_update = true; };
}; };
}; };
bottom = { bottom = {
enable = true; enable = true;
settings = { settings = {
flags = {rate = "250ms";}; flags = { rate = "250ms"; };
row = [ row = [
{ {
ratio = 40; ratio = 40;
child = [{type = "cpu";} {type = "mem";} {type = "net";}]; child = [{ type = "cpu"; } { type = "mem"; } { type = "net"; }];
} }
{ {
ratio = 35; ratio = 35;
child = [{type = "temp";} {type = "disk";}]; child = [{ type = "temp"; } { type = "disk"; }];
} }
{ {
ratio = 40; ratio = 40;
@ -133,31 +132,33 @@ toplevel @ {moduleWithSystem, ...}: {
}; };
bat = { bat = {
enable = true; enable = true;
themes = let themes =
catppuccin = pkgs.fetchFromGitHub { let
owner = "catppuccin"; catppuccin = pkgs.fetchFromGitHub {
repo = "bat"; owner = "catppuccin";
rev = "82e7ca555f805b53d2b377390e4ab38c20282e83"; repo = "bat";
sha256 = "sha256-/Ob9iCVyjJDBCXlss9KwFQTuxybmSSzYRBZxOT10PZg="; rev = "82e7ca555f805b53d2b377390e4ab38c20282e83";
sha256 = "sha256-/Ob9iCVyjJDBCXlss9KwFQTuxybmSSzYRBZxOT10PZg=";
};
in
{
catppuccin-mocha = {
src = catppuccin;
file = "themes/Catppuccin Mocha.tmTheme";
};
catppuccin-macchiato = {
src = catppuccin;
file = "themes/Catppuccin Macchiato.tmTheme";
};
catppuccin-frappe = {
src = catppuccin;
file = "themes/Catppuccin Frappe.tmTheme";
};
catppuccin-latte = {
src = catppuccin;
file = "themes/Catppuccin Latte.tmTheme";
};
}; };
in {
catppuccin-mocha = {
src = catppuccin;
file = "themes/Catppuccin Mocha.tmTheme";
};
catppuccin-macchiato = {
src = catppuccin;
file = "themes/Catppuccin Macchiato.tmTheme";
};
catppuccin-frappe = {
src = catppuccin;
file = "themes/Catppuccin Frappe.tmTheme";
};
catppuccin-latte = {
src = catppuccin;
file = "themes/Catppuccin Latte.tmTheme";
};
};
}; };
ssh.enable = true; ssh.enable = true;
gpg.enable = true; gpg.enable = true;
@ -174,99 +175,100 @@ toplevel @ {moduleWithSystem, ...}: {
} }
); );
shell = moduleWithSystem ( shell = moduleWithSystem (
top @ {...}: perSystem @ {pkgs, ...}: { { ... }: { pkgs, ... }: {
programs = let programs =
shellAliases = { let
cal = "cal $(date +%Y)";
GG = "git add . && git commit -m 'GG' && git push --set-upstream origin HEAD";
gad = "git add . && git diff --cached";
gac = "ga && gc";
ga = "git add .";
gc = "git commit";
dev = "nix develop --command $SHELL";
ls = "eza";
la = "eza --all";
lt = "eza --git-ignore --all --tree --level=10";
sc = "systemctl";
neofetch = "${pkgs.fastfetch}/bin/fastfetch -c all.jsonc";
};
sessionVariables = {};
in {
bash = {
inherit shellAliases sessionVariables;
enable = true;
enableVteIntegration = true;
historyControl = ["erasedups"];
historyIgnore = ["ls" "cd" "exit"];
};
zsh = {
inherit shellAliases sessionVariables;
enable = true;
dotDir = ".config/zsh";
defaultKeymap = "viins";
enableVteIntegration = true;
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
history.expireDuplicatesFirst = true;
historySubstringSearch.enable = true;
};
nushell = {
enable = true;
environmentVariables = {config = ''{ show_banner: false, completions: { quick: false partial: false algorithm: "prefix" } } '';};
shellAliases = { shellAliases = {
gcal = ''bash -c "cal $(date +%Y)" ''; cal = "cal $(date +%Y)";
la = "ls -al"; GG = "git add . && git commit -m 'GG' && git push --set-upstream origin HEAD";
dev = "nix develop --command $env.SHELL"; gad = "git add . && git diff --cached";
gac = "ga && gc";
ga = "git add .";
gc = "git commit";
dev = "nix develop --command $SHELL";
ls = "eza";
la = "eza --all";
lt = "eza --git-ignore --all --tree --level=10";
sc = "systemctl";
neofetch = "${pkgs.fastfetch}/bin/fastfetch -c all.jsonc";
};
sessionVariables = { };
in
{
bash = {
inherit shellAliases sessionVariables;
enable = true;
enableVteIntegration = true;
historyControl = [ "erasedups" ];
historyIgnore = [ "ls" "cd" "exit" ];
};
zsh = {
inherit shellAliases sessionVariables;
enable = true;
dotDir = ".config/zsh";
defaultKeymap = "viins";
enableVteIntegration = true;
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
history.expireDuplicatesFirst = true;
historySubstringSearch.enable = true;
};
nushell = {
enable = true;
environmentVariables = { config = ''{ show_banner: false, completions: { quick: false partial: false algorithm: "prefix" } } ''; };
shellAliases = {
gcal = ''bash -c "cal $(date +%Y)" '';
la = "ls -al";
dev = "nix develop --command $env.SHELL";
};
};
kitty.shellIntegration = {
enableBashIntegration = true;
enableZshIntegration = true;
};
tmux = {
enable = true;
clock24 = true;
baseIndex = 1;
escapeTime = 0;
keyMode = "vi";
shell = "\${SHELL}";
terminal = "screen-256color";
plugins = with pkgs.tmuxPlugins; [ tilish catppuccin ];
extraConfig = ''
set-option -a terminal-features 'screen-256color:RGB'
'';
};
starship = {
enable = true;
enableNushellIntegration = true;
enableZshIntegration = true;
enableBashIntegration = true;
};
eza = {
enable = true;
enableZshIntegration = true;
enableBashIntegration = true;
extraOptions = [
"--long"
"--header"
"--icons"
"--smart-group"
"--mounts"
"--octal-permissions"
"--git"
];
}; };
}; };
kitty.shellIntegration = {
enableBashIntegration = true;
enableZshIntegration = true;
};
tmux = {
enable = true;
clock24 = true;
baseIndex = 1;
escapeTime = 0;
keyMode = "vi";
shell = "\${SHELL}";
terminal = "screen-256color";
plugins = with pkgs.tmuxPlugins; [tilish catppuccin];
extraConfig = ''
set-option -a terminal-features 'screen-256color:RGB'
'';
};
starship = {
enable = true;
enableNushellIntegration = true;
enableZshIntegration = true;
enableBashIntegration = true;
};
eza = {
enable = true;
enableZshIntegration = true;
enableBashIntegration = true;
extraOptions = [
"--long"
"--header"
"--icons"
"--smart-group"
"--mounts"
"--octal-permissions"
"--git"
];
};
};
} }
); );
swayland = moduleWithSystem ( swayland = moduleWithSystem (
top @ {...}: perSystem @ { { ... }: { pkgs
pkgs, , config
config, , ...
... }: {
}: {
home = { home = {
packages = with pkgs; [audacity gimp grim libnotify libreoffice-qt mupdf slurp transmission_4 wl-clipboard xdg-user-dirs xdg-utils xwayland telegram-desktop]; packages = with pkgs; [ audacity gimp grim libnotify libreoffice-qt mupdf slurp transmission_4 wl-clipboard xdg-user-dirs xdg-utils xwayland telegram-desktop ];
pointerCursor = with pkgs; { pointerCursor = with pkgs; {
name = "catppuccin-mocha-green-cursors"; name = "catppuccin-mocha-green-cursors";
package = catppuccin-cursors.mochaGreen; package = catppuccin-cursors.mochaGreen;
@ -282,10 +284,10 @@ toplevel @ {moduleWithSystem, ...}: {
terminal = "kitty"; terminal = "kitty";
modifier = "Mod4"; modifier = "Mod4";
startup = [ startup = [
{command = "swaymsg 'workspace 2; exec firefox'";} { command = "swaymsg 'workspace 2; exec firefox'"; }
{command = "swaymsg 'workspace 1; exec kitty'";} { command = "swaymsg 'workspace 1; exec kitty'"; }
]; ];
bars = []; bars = [ ];
window.titlebar = false; window.titlebar = false;
keybindings = pkgs.lib.mkOptionDefault { keybindings = pkgs.lib.mkOptionDefault {
"F1" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle"; "F1" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
@ -313,81 +315,82 @@ toplevel @ {moduleWithSystem, ...}: {
}; };
}; };
}; };
swaynag = {enable = config.wayland.windowManager.sway.enable;}; swaynag = { enable = config.wayland.windowManager.sway.enable; };
}; };
programs = { programs = {
waybar = { waybar = {
enable = true; enable = true;
settings = { settings = {
mainBar = let mainBar =
in { let
layer = "top"; in {
position = "top"; layer = "top";
height = 30; position = "top";
output = ["eDP-1" "HDMI-A-1" "*"]; height = 30;
output = [ "eDP-1" "HDMI-A-1" "*" ];
modules-left = ["sway/workspaces" "sway/mode"]; modules-left = [ "sway/workspaces" "sway/mode" ];
modules-center = ["clock#week" "clock#year" "clock#time"]; modules-center = [ "clock#week" "clock#year" "clock#time" ];
modules-right = ["network" "pulseaudio" "memory" "cpu" "battery"]; modules-right = [ "network" "pulseaudio" "memory" "cpu" "battery" ];
"clock#time" = { "clock#time" = {
format = "{:%H:%M:%S}"; format = "{:%H:%M:%S}";
interval = 1; interval = 1;
tooltip = false; tooltip = false;
};
"clock#week" = {
format = "{:%a}";
tooltip = false;
};
"clock#year" = {
format = "{:%Y-%m-%d}";
tooltip = false;
};
battery = {
format = "{icon} <span color='#cdd6f4'>{capacity}% {time}</span>";
format-time = " {H} h {M} m";
format-icons = ["" "" "" "" ""];
states = {
warning = 30;
critical = 15;
}; };
tooltip = false; "clock#week" = {
}; format = "{:%a}";
tooltip = false;
cpu = {format = "<span color='#74c7ec'></span> {usage}%";}; };
"clock#year" = {
memory = { format = "{:%Y-%m-%d}";
format = "<span color='#89b4fa'></span> {percentage}%"; tooltip = false;
interval = 5;
};
pulseaudio = {
format = "<span color='#a6e3a1'>{icon}</span> {volume}% | {format_source}";
format-muted = "<span color='#f38ba8'>󰝟</span> {volume}% | {format_source}";
format-source = "{volume}% <span color='#a6e3a1'></span>";
format-source-muted = "{volume}% <span color='#f38ba8'></span>";
format-icons = {
headphone = "";
default = ["" "" ""];
}; };
tooltip = false;
};
network = { battery = {
format-ethernet = "<span color='#89dceb'>󰈁</span> | <span color='#fab387'></span> {bandwidthUpBytes} <span color='#fab387'></span> {bandwidthDownBytes}"; format = "{icon} <span color='#cdd6f4'>{capacity}% {time}</span>";
format-wifi = "<span color='#06b6d4'>{icon}</span> | <span color='#fab387'></span> {bandwidthUpBytes} <span color='#fab387'></span> {bandwidthDownBytes}"; format-time = " {H} h {M} m";
format-disconnected = "<span color='#eba0ac'>󰈂 no connection</span>"; format-icons = [ "" "" "" "" "" ];
format-icons = ["󰤟" "󰤢" "󰤥" "󰤨"]; states = {
interval = 5; warning = 30;
tooltip = false; critical = 15;
}; };
tooltip = false;
};
"sway/workspaces" = { cpu = { format = "<span color='#74c7ec'></span> {usage}%"; };
disable-scroll = true;
all-outputs = true; memory = {
format = "<span color='#89b4fa'></span> {percentage}%";
interval = 5;
};
pulseaudio = {
format = "<span color='#a6e3a1'>{icon}</span> {volume}% | {format_source}";
format-muted = "<span color='#f38ba8'>󰝟</span> {volume}% | {format_source}";
format-source = "{volume}% <span color='#a6e3a1'></span>";
format-source-muted = "{volume}% <span color='#f38ba8'></span>";
format-icons = {
headphone = "";
default = [ "" "" "" ];
};
tooltip = false;
};
network = {
format-ethernet = "<span color='#89dceb'>󰈁</span> | <span color='#fab387'></span> {bandwidthUpBytes} <span color='#fab387'></span> {bandwidthDownBytes}";
format-wifi = "<span color='#06b6d4'>{icon}</span> | <span color='#fab387'></span> {bandwidthUpBytes} <span color='#fab387'></span> {bandwidthDownBytes}";
format-disconnected = "<span color='#eba0ac'>󰈂 no connection</span>";
format-icons = [ "󰤟" "󰤢" "󰤥" "󰤨" ];
interval = 5;
tooltip = false;
};
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
};
}; };
};
}; };
systemd = { systemd = {
enable = true; enable = true;
@ -537,9 +540,9 @@ toplevel @ {moduleWithSystem, ...}: {
plugins = with pkgs; [ plugins = with pkgs; [
( (
rofi-calc.override rofi-calc.override
{ {
rofi-unwrapped = rofi-wayland-unwrapped; rofi-unwrapped = rofi-wayland-unwrapped;
} }
) )
]; ];
}; };
@ -560,11 +563,11 @@ toplevel @ {moduleWithSystem, ...}: {
}; };
imv = { imv = {
enable = true; enable = true;
settings = {options.fullscreen = true;}; settings = { options.fullscreen = true; };
}; };
mpv = { mpv = {
enable = true; enable = true;
scripts = with pkgs.mpvScripts; [uosc thumbfast]; scripts = with pkgs.mpvScripts; [ uosc thumbfast ];
}; };
bash.profileExtra = ''[ "$(tty)" = "/dev/tty1" ] && exec sway ''; bash.profileExtra = ''[ "$(tty)" = "/dev/tty1" ] && exec sway '';
zsh.loginExtra = ''[ "$(tty)" = "/dev/tty1" ] && exec sway ''; zsh.loginExtra = ''[ "$(tty)" = "/dev/tty1" ] && exec sway '';
@ -584,19 +587,19 @@ toplevel @ {moduleWithSystem, ...}: {
OnCalendar = "*-*-* 10:00:00"; OnCalendar = "*-*-* 10:00:00";
Persistent = true; Persistent = true;
}; };
Install = {WantedBy = ["timers.target"];}; Install = { WantedBy = [ "timers.target" ]; };
}; };
}; };
services = { services = {
wpd = { wpd = {
Install = {WantedBy = ["sway-session.target"];}; Install = { WantedBy = [ "sway-session.target" ]; };
Unit = { Unit = {
Description = "Switch background every x minutes"; Description = "Switch background every x minutes";
After = "graphical-session-pre.target"; After = "graphical-session-pre.target";
PartOf = "graphical-session.target"; PartOf = "graphical-session.target";
}; };
Service = { Service = {
ExecStart = ["${pkgs.wpd}/bin/wpd"]; ExecStart = [ "${pkgs.wpd}/bin/wpd" ];
}; };
}; };
}; };
@ -617,7 +620,7 @@ toplevel @ {moduleWithSystem, ...}: {
} }
); );
web = moduleWithSystem ( web = moduleWithSystem (
top @ {...}: perSystem @ {...}: { { ... }: { ... }: {
programs = { programs = {
browserpass.enable = true; browserpass.enable = true;
firefox = { firefox = {

View File

@ -1,44 +1,41 @@
toplevel @ { toplevel @ { inputs
inputs, , withSystem
withSystem, , ...
... }:
}: let let
system = "x86_64-linux"; system = "x86_64-linux";
mods = toplevel.config.flake.nixosModules; mods = toplevel.config.flake.nixosModules;
hardwareConfigurations = toplevel.config.flake.hardwareConfigurations; hardwareConfigurations = toplevel.config.flake.hardwareConfigurations;
essential = with mods; [grub base shell security wireless intranet]; essential = with mods; [ grub base shell security wireless intranet ];
desktop = with mods; [sound wayland]; desktop = with mods; [ sound wayland ];
configWithModules = { configWithModules =
hardware ? {nixpkgs.hostPlatform = system;}, { hardware ? { nixpkgs.hostPlatform = system; }
modules, , modules
}: ,
withSystem system (ctx @ {
config,
inputs',
pkgs,
...
}: }:
inputs.nixpkgs.lib.nixosSystem { withSystem system ({ config, inputs', pkgs, ... }:
specialArgs = { inputs.nixpkgs.lib.nixosSystem {
inherit inputs inputs' pkgs; specialArgs = {
packages = config.packages; inherit inputs inputs' pkgs;
}; packages = config.packages;
modules = [hardware] ++ modules; };
}); modules = [ hardware ] ++ modules;
});
novaConfig = mods: novaConfig = mods:
configWithModules { configWithModules {
hardware = hardwareConfigurations.nova; hardware = hardwareConfigurations.nova;
modules = essential ++ desktop ++ mods; modules = essential ++ desktop ++ mods;
}; };
in { in
{
flake.nixosConfigurations = { flake.nixosConfigurations = {
nova = novaConfig [mods.ivand]; nova = novaConfig [ mods.ivand ];
nova-music = novaConfig (with mods; [ivand music]); nova-music = novaConfig (with mods; [ ivand music ]);
nova-crypto = novaConfig (with mods; [ivand cryptocurrency]); nova-crypto = novaConfig (with mods; [ ivand cryptocurrency ]);
nova-nonya = novaConfig (with mods; [ivand anon cryptocurrency]); nova-nonya = novaConfig (with mods; [ ivand anon cryptocurrency ]);
nova-ai = novaConfig (with mods; [ivand ai]); nova-ai = novaConfig (with mods; [ ivand ai ]);
install-iso = configWithModules {modules = with mods; [grub base shell wireless];}; install-iso = configWithModules { modules = with mods; [ grub base shell wireless ]; };
vps = configWithModules {modules = with mods; [base shell security vps mailserver nginx wireguard-output anonymous-dns firewall rest];}; vps = configWithModules { modules = with mods; [ base shell security vps mailserver nginx wireguard-output anonymous-dns firewall rest ]; };
stara-miner = configWithModules {modules = essential ++ [mods.monero-miner];}; stara-miner = configWithModules { modules = essential ++ [ mods.monero-miner ]; };
}; };
} }

View File

@ -1,39 +1,37 @@
top @ { top @ { inputs, moduleWithSystem, ... }: {
inputs,
moduleWithSystem,
...
}: {
flake.nixosModules = { flake.nixosModules = {
grub = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { grub = moduleWithSystem ({ ... }: { pkgs, ... }: {
boot = { boot = {
loader = { loader = {
grub = let grub =
theme = pkgs.sleek-grub-theme.override { let
withBanner = "Hello Ivan"; theme = pkgs.sleek-grub-theme.override {
withStyle = "bigSur"; withBanner = "Hello Ivan";
withStyle = "bigSur";
};
in
{
enable = pkgs.lib.mkDefault true;
useOSProber = true;
efiSupport = true;
device = "nodev";
theme = theme;
splashImage = "${theme}/background.png";
}; };
in {
enable = pkgs.lib.mkDefault true;
useOSProber = true;
efiSupport = true;
device = "nodev";
theme = theme;
splashImage = "${theme}/background.png";
};
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
}; };
}; };
}); });
base = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { base = moduleWithSystem ({ ... }: { pkgs, ... }: {
imports = [inputs.hosts.nixosModule]; imports = [ inputs.hosts.nixosModule ];
system.stateVersion = top.config.flake.stateVersion; system.stateVersion = top.config.flake.stateVersion;
nix = {extraOptions = ''experimental-features = nix-command flakes'';}; nix = { extraOptions = ''experimental-features = nix-command flakes''; };
i18n.supportedLocales = ["all"]; i18n.supportedLocales = [ "all" ];
time.timeZone = "Europe/Prague"; time.timeZone = "Europe/Prague";
environment = { environment = {
systemPackages = with pkgs; [cmatrix uutils-coreutils-noprefix cryptsetup fd file git glibc gnumake mlocate openssh openssl procs ripgrep srm unzip vim zip just nixos-install-tools tshark]; systemPackages = with pkgs; [ cmatrix uutils-coreutils-noprefix cryptsetup fd file git glibc gnumake mlocate openssh openssl procs ripgrep srm unzip vim zip just nixos-install-tools tshark ];
sessionVariables = {MAKEFLAGS = "-j 4";}; sessionVariables = { MAKEFLAGS = "-j 4"; };
shells = with pkgs; [bash zsh nushell]; shells = with pkgs; [ bash zsh nushell ];
enableAllTerminfo = true; enableAllTerminfo = true;
}; };
users.defaultUserShell = pkgs.zsh; users.defaultUserShell = pkgs.zsh;
@ -57,7 +55,7 @@ top @ {
}; };
}; };
}); });
shell = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { shell = moduleWithSystem ({ ... }: { pkgs, ... }: {
programs = { programs = {
starship.enable = true; starship.enable = true;
zsh = { zsh = {
@ -65,7 +63,7 @@ top @ {
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
autosuggestions = { autosuggestions = {
enable = true; enable = true;
strategy = ["completion"]; strategy = [ "completion" ];
}; };
shellAliases = { shellAliases = {
cal = "cal $(date +%Y)"; cal = "cal $(date +%Y)";
@ -85,7 +83,7 @@ top @ {
}; };
}; };
}); });
sound = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { sound = moduleWithSystem ({ ... }: { pkgs, ... }: {
services = { services = {
pipewire = { pipewire = {
enable = true; enable = true;
@ -93,14 +91,14 @@ top @ {
pulse.enable = true; pulse.enable = true;
}; };
}; };
environment.systemPackages = with pkgs; [pwvucontrol]; environment.systemPackages = with pkgs; [ pwvucontrol ];
}); });
music = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { music = moduleWithSystem ({ ... }: { pkgs, ... }: {
imports = [inputs.musnix.nixosModules.musnix]; imports = [ inputs.musnix.nixosModules.musnix ];
environment.systemPackages = with pkgs; [guitarix]; environment.systemPackages = with pkgs; [ guitarix ];
services.pipewire = { services.pipewire = {
jack.enable = true; jack.enable = true;
extraConfig = {jack."69-low-latency" = {"jack.properties" = {"node.latency" = "64/48000";};};}; extraConfig = { jack."69-low-latency" = { "jack.properties" = { "node.latency" = "64/48000"; }; }; };
}; };
musnix = { musnix = {
enable = true; enable = true;
@ -112,9 +110,9 @@ top @ {
}; };
}; };
}); });
wayland = moduleWithSystem (toplevel @ {...}: perSystem @ {...}: { wayland = moduleWithSystem ({ ... }: { ... }: {
hardware.graphics.enable = true; hardware.graphics.enable = true;
security.pam.services.swaylock = {}; security.pam.services.swaylock = { };
xdg.portal = { xdg.portal = {
enable = true; enable = true;
xdgOpenUsePortal = true; xdgOpenUsePortal = true;
@ -130,18 +128,18 @@ top @ {
config.common.default = "*"; config.common.default = "*";
}; };
}); });
security = moduleWithSystem (toplevel @ {...}: perSystem @ {...}: { security = moduleWithSystem ({ ... }: { ... }: {
security = { security = {
sudo = { sudo = {
enable = false; enable = false;
execWheelOnly = true; execWheelOnly = true;
extraRules = [{groups = ["wheel"];}]; extraRules = [{ groups = [ "wheel" ]; }];
}; };
doas = { doas = {
enable = true; enable = true;
extraRules = [ extraRules = [
{ {
groups = ["wheel"]; groups = [ "wheel" ];
noPass = true; noPass = true;
keepEnv = true; keepEnv = true;
} }
@ -154,12 +152,12 @@ top @ {
intranet = { intranet = {
networking.wg-quick.interfaces = { networking.wg-quick.interfaces = {
wg0 = { wg0 = {
address = ["10.0.0.2/32"]; address = [ "10.0.0.2/32" ];
privateKeyFile = "/etc/wireguard/privatekey"; privateKeyFile = "/etc/wireguard/privatekey";
peers = [ peers = [
{ {
publicKey = "5FiTLnzbgcbgQLlyVyYeESEd+2DtwM1JHCGz/32UcEU="; publicKey = "5FiTLnzbgcbgQLlyVyYeESEd+2DtwM1JHCGz/32UcEU=";
allowedIPs = ["0.0.0.0/0" "::/0"]; allowedIPs = [ "0.0.0.0/0" "::/0" ];
endpoint = "37.205.13.29:51820"; endpoint = "37.205.13.29:51820";
persistentKeepalive = 25; persistentKeepalive = 25;
} }
@ -218,54 +216,56 @@ top @ {
}; };
}; };
}; };
ivand = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: let ivand = moduleWithSystem ({ ... }: { pkgs, ... }:
homeMods = top.config.flake.homeManagerModules; let
in { homeMods = top.config.flake.homeManagerModules;
imports = [inputs.home-manager.nixosModules.default]; in
home-manager = { {
backupFileExtension = "bak"; imports = [ inputs.home-manager.nixosModules.default ];
useUserPackages = true; home-manager = {
useGlobalPkgs = true; backupFileExtension = "bak";
users.ivand = {...}: { useUserPackages = true;
imports = with homeMods; [ useGlobalPkgs = true;
base users.ivand = { ... }: {
ivand imports = with homeMods; [
shell base
util ivand
swayland shell
web util
]; swayland
}; web
};
fonts.packages = with pkgs; [(nerdfonts.override {fonts = ["FiraCode"];}) noto-fonts noto-fonts-emoji noto-fonts-lgc-plus];
users = {
users = {
ivand = {
isNormalUser = true;
createHome = true;
extraGroups = [
"adbusers"
"adm"
"audio"
"bluetooth"
"dialout"
"flatpak"
"kvm"
"mlocate"
"realtime"
"render"
"video"
"wheel"
]; ];
}; };
}; };
extraGroups = { fonts.packages = with pkgs; [ (nerdfonts.override { fonts = [ "FiraCode" ]; }) noto-fonts noto-fonts-emoji noto-fonts-lgc-plus ];
mlocate = {}; users = {
realtime = {}; users = {
ivand = {
isNormalUser = true;
createHome = true;
extraGroups = [
"adbusers"
"adm"
"audio"
"bluetooth"
"dialout"
"flatpak"
"kvm"
"mlocate"
"realtime"
"render"
"video"
"wheel"
];
};
};
extraGroups = {
mlocate = { };
realtime = { };
};
}; };
}; programs.dconf.enable = true;
programs.dconf.enable = true; });
});
flatpak = { flatpak = {
xdg = { xdg = {
portal = { portal = {
@ -276,17 +276,17 @@ top @ {
}; };
services.flatpak.enable = true; services.flatpak.enable = true;
}; };
ai = moduleWithSystem (toplevel @ {...}: perSystem @ {...}: { ai = moduleWithSystem ({ ... }: { ... }: {
services = {ollama.enable = true;}; services = { ollama.enable = true; };
}); });
anon = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { anon = moduleWithSystem ({ ... }: { pkgs, ... }: {
environment.systemPackages = with pkgs; [tor-browser]; environment.systemPackages = with pkgs; [ tor-browser ];
}); });
cryptocurrency = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { cryptocurrency = moduleWithSystem ({ ... }: { pkgs, ... }: {
environment.systemPackages = with pkgs; [monero-cli]; environment.systemPackages = with pkgs; [ monero-cli ];
services = {monero.enable = true;}; services = { monero.enable = true; };
}); });
monero-miner = moduleWithSystem (toplevel @ {...}: perSystem @ {...}: { monero-miner = moduleWithSystem ({ ... }: { ... }: {
services = { services = {
xmrig = { xmrig = {
enable = true; enable = true;
@ -307,16 +307,15 @@ top @ {
}; };
}; };
}); });
vps = moduleWithSystem (toplevel @ {...}: perSystem @ {...}: { vps = moduleWithSystem ({ ... }: { ... }: {
imports = [ imports = [
inputs.vpsadminos.nixosConfigurations.container inputs.vpsadminos.nixosConfigurations.container
]; ];
}); });
mailserver = moduleWithSystem (toplevel @ {...}: perSystem @ { mailserver = moduleWithSystem ({ ... }: { config
config, , pkgs
pkgs, , ...
... }: {
}: {
imports = [ imports = [
inputs.simple-nixos-mailserver.nixosModule inputs.simple-nixos-mailserver.nixosModule
]; ];
@ -324,11 +323,11 @@ top @ {
enable = true; enable = true;
localDnsResolver = false; localDnsResolver = false;
fqdn = "mail.idimitrov.dev"; fqdn = "mail.idimitrov.dev";
domains = ["idimitrov.dev" "mail.idimitrov.dev"]; domains = [ "idimitrov.dev" "mail.idimitrov.dev" ];
loginAccounts = { loginAccounts = {
"ivan@idimitrov.dev" = { "ivan@idimitrov.dev" = {
hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm"; hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm";
aliases = ["admin@idimitrov.dev"]; aliases = [ "admin@idimitrov.dev" ];
}; };
"security@idimitrov.dev" = { "security@idimitrov.dev" = {
hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm"; hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm";
@ -338,10 +337,10 @@ top @ {
hierarchySeparator = "/"; hierarchySeparator = "/";
}; };
services = { services = {
dovecot2.sieve.extensions = ["fileinto"]; dovecot2.sieve.extensions = [ "fileinto" ];
roundcube = { roundcube = {
enable = true; enable = true;
package = pkgs.roundcube.withPlugins (plugins: [plugins.persistent_login]); package = pkgs.roundcube.withPlugins (plugins: [ plugins.persistent_login ]);
plugins = [ plugins = [
"persistent_login" "persistent_login"
]; ];
@ -352,18 +351,20 @@ top @ {
$config['smtp_pass'] = "%p"; $config['smtp_pass'] = "%p";
''; '';
}; };
nginx.virtualHosts = let nginx.virtualHosts =
restrictToVpn = '' let
allow 10.0.0.2/32; restrictToVpn = ''
allow 10.0.0.3/32; allow 10.0.0.2/32;
allow 10.0.0.4/32; allow 10.0.0.3/32;
deny all; allow 10.0.0.4/32;
''; deny all;
in { '';
"${config.mailserver.fqdn}" = { in
extraConfig = restrictToVpn; {
"${config.mailserver.fqdn}" = {
extraConfig = restrictToVpn;
};
}; };
};
postgresql.enable = true; postgresql.enable = true;
}; };
security = { security = {
@ -373,63 +374,65 @@ top @ {
}; };
}; };
}); });
nginx = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { nginx = moduleWithSystem ({ ... }: { pkgs, ... }: {
services = { services = {
nginx = let nginx =
webshiteConfig = '' let
add_header 'Referrer-Policy' 'origin-when-cross-origin'; webshiteConfig = ''
add_header X-Content-Type-Options nosniff; add_header 'Referrer-Policy' 'origin-when-cross-origin';
''; add_header X-Content-Type-Options nosniff;
extensions = ["html" "txt" "png" "jpg" "jpeg"]; '';
serveStatic = exts: '' extensions = [ "html" "txt" "png" "jpg" "jpeg" ];
try_files $uri $uri/ ${pkgs.lib.strings.concatStringsSep " " (builtins.map (x: "$uri." + "${x}") exts)} =404; serveStatic = exts: ''
''; try_files $uri $uri/ ${pkgs.lib.strings.concatStringsSep " " (builtins.map (x: "$uri." + "${x}") exts)} =404;
in { '';
enable = true; in
recommendedGzipSettings = true; {
recommendedOptimisation = true; enable = true;
recommendedProxySettings = true; recommendedGzipSettings = true;
recommendedTlsSettings = true; recommendedOptimisation = true;
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL"; recommendedProxySettings = true;
virtualHosts = { recommendedTlsSettings = true;
"idimitrov.dev" = { sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
enableACME = true; virtualHosts = {
forceSSL = true; "idimitrov.dev" = {
locations."/" = { enableACME = true;
root = "${pkgs.webshite}"; forceSSL = true;
extraConfig = serveStatic extensions; locations."/" = {
root = "${pkgs.webshite}";
extraConfig = serveStatic extensions;
};
extraConfig = webshiteConfig;
}; };
extraConfig = webshiteConfig; "www.idimitrov.dev" = {
}; enableACME = true;
"www.idimitrov.dev" = { forceSSL = true;
enableACME = true; locations."/" = {
forceSSL = true; root = "${pkgs.webshite}";
locations."/" = { extraConfig = serveStatic extensions;
root = "${pkgs.webshite}"; };
extraConfig = serveStatic extensions; extraConfig = webshiteConfig;
}; };
extraConfig = webshiteConfig; "src.idimitrov.dev" = {
}; enableACME = true;
"src.idimitrov.dev" = { forceSSL = true;
enableACME = true; locations."/" = {
forceSSL = true; proxyPass = "http://127.0.0.1:3001";
locations."/" = { };
proxyPass = "http://127.0.0.1:3001";
}; };
}; "pic.idimitrov.dev" = {
"pic.idimitrov.dev" = { enableACME = true;
enableACME = true; forceSSL = true;
forceSSL = true; locations."/" = {
locations."/" = { root = "/var/pic";
root = "/var/pic"; extraConfig = ''
extraConfig = '' autoindex on;
autoindex on; ${serveStatic ["png"]}
${serveStatic ["png"]} '';
''; };
}; };
}; };
}; };
};
gitea = { gitea = {
enable = true; enable = true;
appName = "src"; appName = "src";
@ -465,55 +468,57 @@ top @ {
}; };
}; };
}); });
wireguard-output = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { wireguard-output = moduleWithSystem ({ ... }: { pkgs, ... }: {
networking = { networking = {
nat = { nat = {
enable = true; enable = true;
enableIPv6 = true; enableIPv6 = true;
externalInterface = "venet0"; externalInterface = "venet0";
internalInterfaces = ["wg0"]; internalInterfaces = [ "wg0" ];
}; };
wg-quick.interfaces = { wg-quick.interfaces = {
wg0 = let wg0 =
iptables = "${pkgs.iptables}/bin/iptables"; let
ip6tables = "${pkgs.iptables}/bin/ip6tables"; iptables = "${pkgs.iptables}/bin/iptables";
in { ip6tables = "${pkgs.iptables}/bin/ip6tables";
address = ["10.0.0.1/32"]; in
listenPort = 51820; {
privateKeyFile = "/etc/wireguard/privatekey"; address = [ "10.0.0.1/32" ];
postUp = '' listenPort = 51820;
${iptables} -A FORWARD -i wg0 -j ACCEPT privateKeyFile = "/etc/wireguard/privatekey";
${iptables} -t nat -A POSTROUTING -s 10.0.0.1/24 -o venet0 -j MASQUERADE postUp = ''
${ip6tables} -A FORWARD -i wg0 -j ACCEPT ${iptables} -A FORWARD -i wg0 -j ACCEPT
${ip6tables} -t nat -A POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o venet0 -j MASQUERADE ${iptables} -t nat -A POSTROUTING -s 10.0.0.1/24 -o venet0 -j MASQUERADE
''; ${ip6tables} -A FORWARD -i wg0 -j ACCEPT
preDown = '' ${ip6tables} -t nat -A POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o venet0 -j MASQUERADE
${iptables} -D FORWARD -i wg0 -j ACCEPT '';
${iptables} -t nat -D POSTROUTING -s 10.0.0.1/24 -o venet0 -j MASQUERADE preDown = ''
${ip6tables} -D FORWARD -i wg0 -j ACCEPT ${iptables} -D FORWARD -i wg0 -j ACCEPT
${ip6tables} -t nat -D POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o venet0 -j MASQUERADE ${iptables} -t nat -D POSTROUTING -s 10.0.0.1/24 -o venet0 -j MASQUERADE
''; ${ip6tables} -D FORWARD -i wg0 -j ACCEPT
peers = [ ${ip6tables} -t nat -D POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o venet0 -j MASQUERADE
{ '';
publicKey = "kI93V0dVKSqX8hxMJHK5C0c1hEDPQTgPQDU8TKocVgo="; peers = [
allowedIPs = ["10.0.0.2/32"]; {
} publicKey = "kI93V0dVKSqX8hxMJHK5C0c1hEDPQTgPQDU8TKocVgo=";
{ allowedIPs = [ "10.0.0.2/32" ];
publicKey = "RqTsFxFCcgYsytcDr+jfEoOA5UNxa1ZzGlpx6iuTpXY="; }
allowedIPs = ["10.0.0.3/32"]; {
} publicKey = "RqTsFxFCcgYsytcDr+jfEoOA5UNxa1ZzGlpx6iuTpXY=";
{ allowedIPs = [ "10.0.0.3/32" ];
publicKey = "1e0mjluqXdLbzv681HlC9B8BfGN8sIXIw3huLyQqwXI="; }
allowedIPs = ["10.0.0.4/32"]; {
} publicKey = "1e0mjluqXdLbzv681HlC9B8BfGN8sIXIw3huLyQqwXI=";
]; allowedIPs = [ "10.0.0.4/32" ];
}; }
];
};
}; };
}; };
}); });
anonymous-dns = moduleWithSystem (toplevel @ {...}: perSystem @ {...}: { anonymous-dns = moduleWithSystem ({ ... }: { ... }: {
networking = { networking = {
nameservers = ["127.0.0.1" "::1"]; nameservers = [ "127.0.0.1" "::1" ];
dhcpcd.extraConfig = "nohook resolv.conf"; dhcpcd.extraConfig = "nohook resolv.conf";
}; };
services = { services = {
@ -533,7 +538,7 @@ top @ {
routes = [ routes = [
{ {
server_name = "*"; server_name = "*";
via = ["sdns://gQ8yMTcuMTM4LjIyMC4yNDM"]; via = [ "sdns://gQ8yMTcuMTM4LjIyMC4yNDM" ];
} }
]; ];
}; };
@ -549,7 +554,7 @@ top @ {
}; };
}; };
}); });
firewall = moduleWithSystem (toplevel @ {...}: perSystem @ {lib, ...}: { firewall = moduleWithSystem ({ ... }: { lib, ... }: {
networking = { networking = {
firewall = lib.mkForce { firewall = lib.mkForce {
enable = true; enable = true;
@ -582,24 +587,24 @@ top @ {
}; };
}; };
}); });
rest = moduleWithSystem (toplevel @ {...}: perSystem @ {pkgs, ...}: { rest = moduleWithSystem ({ ... }: { pkgs, ... }: {
fileSystems."/mnt/export1981" = { fileSystems."/mnt/export1981" = {
device = "172.16.128.47:/nas/5490"; device = "172.16.128.47:/nas/5490";
fsType = "nfs"; fsType = "nfs";
options = ["nofail"]; options = [ "nofail" ];
}; };
users = { users = {
users.ivand = { users.ivand = {
isNormalUser = true; isNormalUser = true;
hashedPassword = "$2b$05$hPrPcewxj4qjLCRQpKBAu.FKvKZdIVlnyn4uYsWE8lc21Jhvc9jWG"; hashedPassword = "$2b$05$hPrPcewxj4qjLCRQpKBAu.FKvKZdIVlnyn4uYsWE8lc21Jhvc9jWG";
extraGroups = ["wheel" "adm" "mlocate"]; extraGroups = [ "wheel" "adm" "mlocate" ];
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
'' ''
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICcLkzuCoBEg+wq/H+hkrv6pLJ8J5BejaNJVNnymlnlo ivan@idimitrov.dev ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICcLkzuCoBEg+wq/H+hkrv6pLJ8J5BejaNJVNnymlnlo ivan@idimitrov.dev
'' ''
]; ];
}; };
extraGroups = {mlocate = {};}; extraGroups = { mlocate = { }; };
}; };
services = { services = {
openssh = { openssh = {
@ -612,7 +617,7 @@ top @ {
systemd = { systemd = {
timers = { timers = {
bingwp = { bingwp = {
wantedBy = ["timers.target"]; wantedBy = [ "timers.target" ];
timerConfig = { timerConfig = {
OnCalendar = "*-*-* 10:00:00"; OnCalendar = "*-*-* 10:00:00";
Persistent = true; Persistent = true;

View File

@ -1,13 +1,10 @@
top @ { { inputs, withSystem, ... }: {
inputs, flake.overlays.default = _final: _prev:
withSystem, let
... system = "x86_64-linux";
}: { in
flake.overlays.default = final: prev: let
system = "x86_64-linux";
in
withSystem system ( withSystem system (
{config, ...}: { { config, ... }: {
nvim = config.packages.nvim; nvim = config.packages.nvim;
bingwp = config.packages.bingwp; bingwp = config.packages.bingwp;
screenshot = config.packages.screenshot; screenshot = config.packages.screenshot;

View File

@ -1,71 +1,68 @@
top @ {inputs, ...}: { { inputs, ... }: {
perSystem = perSystem @ { perSystem =
system, { system, pkgs, ... }: {
pkgs, config.packages = {
... nvim = inputs.ide.nvim.${system}.standalone.default {
}: { plugins.lsp.servers = {
config.packages = { bashls.enable = true;
nvim = inputs.ide.nvim.${system}.standalone.default { pylsp.enable = true;
plugins.lsp.servers = { lua-ls.enable = true;
bashls.enable = true; };
pylsp.enable = true; extraPlugins = with pkgs.vimPlugins; [ vim-just ];
lua-ls.enable = true;
}; };
extraPlugins = with pkgs.vimPlugins; [vim-just]; wpd = pkgs.writeShellApplication {
}; name = "wpd";
wpd = pkgs.writeShellApplication { runtimeInputs = with pkgs; [ swaybg xdg-user-dirs fd uutils-coreutils-noprefix ];
name = "wpd"; runtimeEnv = { WAYLAND_DISPLAY = "wayland-1"; };
runtimeInputs = with pkgs; [swaybg xdg-user-dirs fd uutils-coreutils-noprefix]; text = ''
runtimeEnv = {WAYLAND_DISPLAY = "wayland-1";}; random_pic () {
text = '' bg_dir="$(xdg-user-dir PICTURES)/bg"
random_pic () { fd . --extension png "$bg_dir" | shuf -n1
bg_dir="$(xdg-user-dir PICTURES)/bg" }
fd . --extension png "$bg_dir" | shuf -n1 swaybg -i "$(random_pic)" -m fill &
} OLD_PID=$!
swaybg -i "$(random_pic)" -m fill & while true; do
OLD_PID=$! sleep 60
while true; do swaybg -i "$(random_pic)" -m fill &
sleep 60 NEXT_PID=$!
swaybg -i "$(random_pic)" -m fill & sleep 5
NEXT_PID=$! kill -9 $OLD_PID
sleep 5 OLD_PID=$NEXT_PID
kill -9 $OLD_PID done
OLD_PID=$NEXT_PID '';
done
'';
};
screenshot = pkgs.writeShellApplication {
name = "screenshot";
runtimeInputs = with pkgs; [wl-clipboard xdg-utils];
text = ''
ss_dir="$(xdg-user-dir PICTURES)/ss"
pic_dir="$ss_dir/$(date "+%Y-%m-%d_%H-%M-%S").png"
mkdir -p "$ss_dir"
copy_image () {
wl-copy < "$pic_dir"
}
main () {
grim "$pic_dir"
copy_image
}
main
'';
};
cursors = pkgs.catppuccin-cursors.overrideAttrs (prev: rec {
version = "0.3.1";
nativeBuildInputs = prev.nativeBuildInputs ++ [pkgs.xcur2png];
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "cursors";
rev = "v${version}";
hash = "sha256-CuzD6O/RImFKLWzJoiUv7nlIdoXNvwwl+k5mTeVIY10=";
}; };
}); screenshot = pkgs.writeShellApplication {
webshite = inputs.webshite.packages.${system}.default; name = "screenshot";
runtimeInputs = with pkgs; [ wl-clipboard xdg-utils ];
text = ''
ss_dir="$(xdg-user-dir PICTURES)/ss"
pic_dir="$ss_dir/$(date "+%Y-%m-%d_%H-%M-%S").png"
mkdir -p "$ss_dir"
copy_image () {
wl-copy < "$pic_dir"
}
main () {
grim "$pic_dir"
copy_image
}
main
'';
};
cursors = pkgs.catppuccin-cursors.overrideAttrs (prev: rec {
version = "0.3.1";
nativeBuildInputs = prev.nativeBuildInputs ++ [ pkgs.xcur2png ];
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "cursors";
rev = "v${version}";
hash = "sha256-CuzD6O/RImFKLWzJoiUv7nlIdoXNvwwl+k5mTeVIY10=";
};
});
webshite = inputs.webshite.packages.${system}.default;
};
}; };
};
} }