Refactoring

This commit is contained in:
fwastring 2025-09-07 20:26:24 +02:00
parent 23fa2928d7
commit 3a90b4b3f6
9 changed files with 475 additions and 428 deletions

View file

@ -1,5 +1,3 @@
# This is your system's configuration file.
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
{
inputs,
lib,
@ -9,8 +7,6 @@
}:
{
nixpkgs = {
overlays = [
];
config = {
allowUnfree = true;
};
@ -92,19 +88,10 @@
};
console.keyMap = "sv-latin1";
environment.systemPackages = with pkgs; [
waypipe
];
services = {
clipmenu.enable = true;
openssh = {
enable = true;
};
blueman = {
enable = true;
};
};
system.stateVersion = "25.05";
}

View file

@ -20,6 +20,7 @@ in
waypipe
];
services = {
gnome.gnome-keyring.enable = true;
greetd = {
@ -260,7 +261,7 @@ in
# Applications
"$mod, q, exec, ${pkgs.firefox}/bin/firefox"
"$mod, d, exec, ${pkgs.rofi}/bin/rofi"
"$mod, d, exec, ${pkgs.rofi}/bin/rofi -show run"
# Screencapture
"$mod, S, exec, ${pkgs.grim}/bin/grim | wl-copy"

View file

@ -9,21 +9,38 @@
let
in
{
networking.firewall.allowedTCPPorts = [
6443
5173
8080
3000
];
networking.firewall = {
enable = true;
allowedTCPPorts = [
6443
5173
8080
3000
8384
22000
];
allowedUDPPortRanges = [
{
from = 4000;
to = 4007;
}
{
from = 8000;
to = 8010;
}
22000
21027
];
};
services.k3s = {
enable = true;
role = "server";
extraFlags = toString ([
"--write-kubeconfig-mode \"0644\""
"--cluster-init"
"--disable servicelb"
"--disable traefik"
"--disable local-storage"
"--write-kubeconfig-mode \"0644\""
"--cluster-init"
# "--disable servicelb"
"--disable traefik"
"--disable local-storage"
]);
clusterInit = true;
};
@ -38,9 +55,9 @@ in
};
environment.systemPackages = with pkgs; [
k3s
cifs-utils
nfs-utils
git
k3s
cifs-utils
nfs-utils
git
];
}

View file

@ -18,12 +18,17 @@
environment.systemPackages = with pkgs; [
openvpn
networkmanagerapplet
networkmanager-l2tp
strongswan
networkmanager_strongswan
wireguard-tools
networkmanager
openssh
dig
mtr # A network diagnostic tool
iperf3
dnsutils # `dig` + `nslookup`
ldns # replacement of `dig`, it provide the command `drill`
aria2 # A lightweight multi-protocol & multi-source command-line download utility
socat # replacement of openbsd-netcat
nmap # A utility for network discovery and security auditing
ipcalc # it is a calculator for the IPv4/v6 addresses
];
}

View file

@ -9,6 +9,7 @@
alsa.support32Bit = true;
pulse.enable = true;
};
blueman.enable = true;
};
hardware = {
bluetooth = {

View file

@ -7,80 +7,125 @@
pkgs,
myhostname,
...
}: {
}:
{
services.pcscd.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
services.pcscd.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 4d --keep 3";
flake = "/home/fw/nix";
};
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 4d --keep 3";
flake = "/home/fw/nix";
};
environment.systemPackages = with pkgs; [
# Build
just
# System
libnotify
lf
xsel
xbanish
unzip
zip
wget
alsa-utils
htop
procps
fzf
eza
btop
xclip
dysk
rsync
procs
dust
brightnessctl
lolcat
fortune
cowsay
ripgrep
poppler_utils
grc
pkg-config
vim
bat
fd
bluez
bluez-tools
openssl
imagemagick
pandoc
texliveFull
fastfetch
keyutils
pinentry-all
(pass.withExtensions (
ext: with ext; [
pass-import
pass-genphrase
pass-update
]
))
lazygit
chawan
go-passbolt-cli
waypipe
wl-clipboard
smartmontools
environment.systemPackages = with pkgs; [
# System
libnotify
lf
xsel
xbanish
unzip
zip
wget
alsa-utils
htop
procps
fzf
eza
btop
xclip
dysk
rsync
procs
dust
brightnessctl
lolcat
fortune
cowsay
ripgrep
poppler_utils
grc
pkg-config
vim
bat
fd
bluez
bluez-tools
openssl
imagemagick
pandoc
texliveFull
fastfetch
keyutils
pinentry-all
(pass.withExtensions (ext: with ext; [
pass-import
pass-genphrase
pass-update
]))
lazygit
chawan
go-passbolt-cli
waypipe
wl-clipboard
smartmontools
# Typesetting
typst
typstyle
tinymist
websocat
nix-search-cli
libsixel
# Typesetting
typst
typstyle
tinymist
websocat
nix-search-cli
libsixel
];
# system call monitoring
strace # system call monitoring
ltrace # library call monitoring
lsof # list open files
# system tools
sysstat
lm_sensors # for `sensors` command
ethtool
pciutils # lspci
usbutils # lsusb
(
let
base = pkgs.appimageTools.defaultFhsEnvArgs;
in
pkgs.buildFHSUserEnv (
base
// {
name = "fhs";
targetPkgs =
pkgs:
# pkgs.buildFHSUserEnv provides only a minimal FHS environment,
# lacking many basic packages needed by most software.
# Therefore, we need to add them manually.
#
# pkgs.appimageTools provides basic packages required by most software.
(base.targetPkgs pkgs)
++ (with pkgs; [
pkg-config
ncurses
# Feel free to add more packages here if needed.
]);
profile = "export FHS=1";
runScript = "bash";
extraOutputsToInstall = [ "dev" ];
}
)
)
];
}

View file

@ -1,25 +1,30 @@
{
config,
pkgs,
...
}: {
home.packages = with pkgs; [waybar];
}:
{
programs.waybar = {
enable = true;
systemd.enable = true;
settings = {
mainBar = {
layer = "top";
"modules-left" = ["hyprland/workspaces" "hyprland/window"];
"modules-center" = ["clock"];
"modules-right" = ["tray" "cpu" "memory" "idle_inhibitor" "pulseaudio" "bluetooth"];
"modules-left" = [
"hyprland/workspaces"
];
"modules-right" = [
"tray"
"clock"
"pulseaudio"
"bluetooth"
];
"hyprland/window" = {
format = "{title}";
"max-length" = 333;
"seperate-outputs" = true;
};
clock = {
format = "<span foreground='#282828'> </span><span>{:%I:%M %a %d}</span>";
format = "<span>{:%c}</span>";
"tooltip-format" = "{calendar}";
calendar = {
mode = "month";
@ -47,22 +52,6 @@
format = "<span foreground='#d65d9e'>󰍛</span> {}%";
interval = 1;
};
"custom/gpu-util" = {
exec = "./scripts/gpu-util";
format = "<span foreground='#67b0e8'>󰯿</span> {}";
interval = 1;
};
"custom/gpu-temp" = {
exec = "./scripts/gpu-temp";
format = "<span foreground='#e57474'></span> {}";
interval = 1;
};
temperature = {
"hwmon-path" = "/sys/class/hwmon/hwmon1/temp1_input";
"critical-threshold" = 80;
format = "<span foreground='#83a598'></span> {temperatureC}°C";
interval = 1;
};
"hyprland/workspaces" = {
format = "{icon}";
"active-only" = false;
@ -103,7 +92,11 @@
headphone = "";
phone = "";
portable = "";
default = ["" "" ""];
default = [
""
""
""
];
};
"on-click-left" = "pavucontrol";
input = true;
@ -149,7 +142,7 @@
"tooltip-format" = "{title}";
"on-click" = "activate";
"on-click-middle" = "close";
"ignore-list" = ["Alacritty"];
"ignore-list" = [ "Alacritty" ];
"app_ids-mapping" = {
firefoxdeveloperedition = "firefox-developer-edition";
};
@ -175,256 +168,255 @@
};
};
style = ''
@define-color bg #${config.stylix.base16Scheme.base00};
@define-color fg #${config.stylix.base16Scheme.base05};
@define-color lbg #${config.stylix.base16Scheme.base01};
@define-color yellow #${config.stylix.base16Scheme.base0A};
@define-color lavender #${config.stylix.base16Scheme.base0E};
@define-color peach #${config.stylix.base16Scheme.base0A};
@define-color red #${config.stylix.base16Scheme.base08};
@define-color green #${config.stylix.base16Scheme.base0B};
@define-color blue #${config.stylix.base16Scheme.base0D};
@define-color border #${config.stylix.base16Scheme.base02};
@define-color bg #eff1f5;
@define-color fg #4c4f69;
@define-color lbg #e6e9ef;
@define-color yellow #df8e1d;
@define-color lavender #7287fd;
@define-color peach #fe640b;
@define-color red #d20f39;
@define-color green #40a02b;
@define-color blue #1e66f5;
@define-color border #dce0e8;
* {
min-height: 0;
margin: 0px 0px 0px 0px;
padding: 0;
border-radius: 7px;
font-family: "JetBrains Mono Nerd Font";
font-size: 14pt;
font-weight: 700;
padding-bottom: 0px;
}
* {
min-height: 0;
margin: 0px 0px 0px 0px;
padding: 0;
border-radius: 7px;
font-family: "ComicShannsMono Nerd Font";
font-size: 11pt;
font-weight: 700;
padding-bottom: 0px;
}
tooltip {
background: @bg;
border-radius: 7px;
border: 2px solid @border;
}
tooltip {
background: @bg;
border-radius: 7px;
border: 2px solid @border;
}
#window {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 7px;
border-radius: 3px;
border-color: @lbg;
background-color: @yellow;
color: @bg;
}
#window {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 7px;
border-radius: 3px;
border-color: @lbg;
background-color: @yellow;
color: @bg;
}
window#waybar.empty #window {
background-color: @bg;
border-bottom: none;
border-right: none;
}
window#waybar.empty #window {
background-color: @bg;
border-bottom: none;
border-right: none;
}
window#waybar {
background-color: @bg;
color: @lavender;
}
window#waybar {
background-color: @bg;
color: @lavender;
}
/* Workspaces */
@keyframes button_activate {
from { opacity: .3 }
to { opacity: 1.; }
}
/* Workspaces */
@keyframes button_activate {
from { opacity: .3 }
to { opacity: 1.; }
}
#workspaces {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding: 1px;
background-color: @bg;
color: @bg;
}
#workspaces {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding: 1px;
background-color: @bg;
color: @bg;
}
#workspaces button {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding-left: 3px;
padding-right: 9px;
background-color: @bg;
color: @fg;
}
#workspaces button {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding-left: 3px;
padding-right: 9px;
background-color: @bg;
color: @fg;
}
#workspaces button.active {
background-color:@blue;
color: @bg;
}
#workspaces button.active {
background-color:@blue;
color: @bg;
}
#workspaces button.urgent {
color: #F38BA8;
}
#workspaces button.urgent {
color: #F38BA8;
}
#workspaces button:hover {
border: solid transparent;
}
#workspaces button:hover {
border: solid transparent;
}
#custom-gpu-util {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 7px;
background-color: @bg;
color: @fg;
}
#custom-gpu-util {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 7px;
background-color: @bg;
color: @fg;
}
#tray {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding-left: 10px;
padding-right: 10px;
background-color: @bg;
color: @fg;
}
#tray {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding-left: 10px;
padding-right: 10px;
background-color: @bg;
color: @fg;
}
#idle_inhibitor {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
background-color: @bg;
color: @fg;
}
#idle_inhibitor {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
background-color: @bg;
color: @fg;
}
#network {
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 7px;
background-color: @bg;
color: @lavender;
}
#network {
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 7px;
background-color: @bg;
color: @lavender;
}
#network.linked {
color: @peach;
}
#network.disconnected,
#network.disabled {
color: @red;
}
#network.linked {
color: @peach;
}
#network.disconnected,
#network.disabled {
color: @red;
}
#custom-subs {
color: @fg;
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
border-bottom: 2px solid @bg;
border-right: 2px solid @bg;
border-color: @lbg;
background-color: @red;
}
#custom-subs {
color: @fg;
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
border-bottom: 2px solid @bg;
border-right: 2px solid @bg;
border-color: @lbg;
background-color: @red;
}
#custom-spacer {
background-color: @yellow;
}
#custom-spacer {
background-color: @yellow;
}
#custom-cliphist {
color: @peach;
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
background-color: @bg;
}
#custom-cliphist {
color: @peach;
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
background-color: @bg;
}
#custom-gpu-temp,
#cpu,
#memory,
#custom-clipboard,
#temperature {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @fg;
background-color: @bg;
}
#custom-gpu-temp,
#cpu,
#memory,
#custom-clipboard,
#temperature {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @fg;
background-color: @bg;
}
#custom-playerctl {
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @fg;
background-color: @bg;
}
#custom-playerctl {
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @fg;
background-color: @bg;
}
#battery,
#backlight,
#bluetooth,
#pulseaudio {
margin-top: 5px;
margin-bottom: 2px;
color: @fg;
background-color: @bg;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
#battery,
#backlight,
#bluetooth,
#pulseaudio {
margin-top: 5px;
margin-bottom: 2px;
color: @fg;
background-color: @bg;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
#battery,
#bluetooth {
margin-left: 0px;
margin-right: 5px;
padding-left: 7.5px;
padding-right: 10px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
#battery,
#bluetooth {
margin-left: 0px;
margin-right: 5px;
padding-left: 7.5px;
padding-right: 10px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
#backlight,
#pulseaudio {
margin-right: 0px;
margin-left: 5px;
padding-left: 10px;
padding-right: 7.5px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
#backlight,
#pulseaudio {
margin-right: 0px;
margin-left: 5px;
padding-left: 10px;
padding-right: 7.5px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
#clock {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @bg;
background-color: @green;
}
#clock {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @bg;
background-color: @green;
}
#taskbar {
border-radius: 0px 0px 0px 0;
padding: 0 3px;
margin: 0 0px;
color: #ffffff;
background-color: rgba(120,118,117,0.3);
}
#taskbar button {
border-radius: 0px 0px 0px 0px;
padding: 0 0 0 3px;
margin: 3px 1;
color: #ffffff;
background-color: rgba(120,118,117,0.1);
}
#taskbar button.active {
background-color: rgba(120,118,117,0.8);
}
#taskbar {
border-radius: 0px 0px 0px 0;
padding: 0 3px;
margin: 0 0px;
color: #ffffff;
background-color: rgba(120,118,117,0.3);
}
#taskbar button {
border-radius: 0px 0px 0px 0px;
padding: 0 0 0 3px;
margin: 3px 1;
color: #ffffff;
background-color: rgba(120,118,117,0.1);
}
#taskbar button.active {
background-color: rgba(120,118,117,0.8);
}
#mode {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
background-color: @bg;
color: @peach;
}
#mode {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
background-color: @bg;
color: @peach;
}
'';
};
}