dead code removal
This commit is contained in:
parent
06dea9ce71
commit
dec199a870
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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 = {
|
||||||
|
@ -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 ]; };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user