This commit is contained in:
Faris 2026-05-23 00:31:58 +01:00
parent a8f6bf2ce2
commit 07ae12fc30
18 changed files with 1211 additions and 712 deletions

View File

@ -56,28 +56,32 @@
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [
zsh
htop
fastfetch
restic
nixfmt
rsync
pciutils # lspci
usbutils # lsusb
nmap
tree
p7zip
unar
inetutils # telnet
wget
bitwarden-cli
btop
dnsutils
fastfetch
htop
iftop
inetutils # telnet
lazygit
nixfmt
nmap
p7zip
pciutils # lspci
restic
rsync
tree
unar
usbutils # lsusb
wget
zsh
# media
yt-dlp
exiftool
mediainfo
ffmpeg-full
kiwix-tools
# barcodes
qrencode
@ -90,7 +94,6 @@
man-pages-posix
];
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
@ -100,7 +103,8 @@
font-awesome_5
];
# Power management
services.power-profiles-daemon.enable = true;
environment.shellAliases = {
"server" = "ssh admin@192.168.0.30";
@ -112,5 +116,8 @@
"lsa" = "ls -al";
};
environment.pathsToLink = [ "/share/applications" "/share/xdg-desktop-portal" ];
environment.pathsToLink = [
"/share/applications"
"/share/xdg-desktop-portal"
];
}

View File

@ -25,7 +25,11 @@
openFirewall = true;
};
services.tailscale.enable = true;
services.printing.drivers = [ pkgs.brlaser pkgs.brgenml1lpr pkgs.brgenml1cupswrapper ];
services.printing.drivers = [
pkgs.brlaser
pkgs.brgenml1lpr
pkgs.brgenml1cupswrapper
];
# Enable automatic login for the user.
# services.displayManager.autoLogin.enable = true;
@ -52,7 +56,6 @@
};
programs.chromium = {
enable = true;
homepageLocation = "https://dashboard.mektem.com";
@ -62,9 +65,6 @@
};
};
hardware.keyboard.qmk.enable = true;
boot = {
@ -83,8 +83,6 @@
];
};
#services.udev.packages = [ pkgs.via ];
nixpkgs.overlays = [
@ -100,74 +98,66 @@
services.mullvad-vpn.enable = true;
environment.systemPackages = with pkgs; [
audacity
brave
blender
orca-slicer
firefox
gimp
inkscape
bitwarden-desktop
bitwarden-cli
kiwix
libreoffice
obs-studio
obsidian
#blender
#audacity
#orca-slicer
#gimp
#inkscape
#unstable.protonmail-desktop
#bitwarden-desktop
#libreoffice
#freecad
#kiwix
#obs-studio
#obsidian
unstable.proton-authenticator
unstable.protonmail-desktop
unstable.proton-vpn
prismlauncher
unstable.signal-desktop
freecad
#prismlauncher
#unstable.signal-desktop
tor-browser
wireshark
monero-gui
moonlight-qt
#wireshark
#monero-gui
#moonlight-qt
nvtopPackages.nvidia
dconf-editor
via
kdePackages.kdenlive
easyeffects
element-desktop
chirp
#kdePackages.kdenlive
#element-desktop
#chirp
scrcpy
veracrypt
lmms
#lmms
restic-browser
# games
webcord
heroic
lutris
cataclysm-dda
runelite
zeroad
unciv
endless-sky
wesnoth
mindustry
openrct2
openttd
xonotic
osu-lazer-bin
ufoai
ludusavi # steam backup
#cataclysm-dda
#endless-sky
#mindustry
#openrct2
#openttd
#osu-lazer-bin
#runelite
#unciv
#webcord
#wesnoth
#xonotic
#zeroad #0ad
# game utils
mangohud
umu-launcher
# emu
ryubing
xemu
#ryubing
#xemu
xenia-canary
#retroarch-full
rpcs3
dolphin-emu
cemu
#rpcs3
#dolphin-emu
#cemu
# backup
keepassxc
#keepassxc
];
fonts.fontconfig = {
@ -187,9 +177,14 @@
};
};
services.hardware.openrgb.enable = true;
services.hardware.openrgb.package = pkgs.openrgb-with-all-plugins;
programs = {
adb.enable = true;
localsend = {
enable = true;
openFirewall = true;
@ -218,38 +213,100 @@
fileSystems."/mnt/media" = {
device = "//192.168.0.30/media";
fsType = "cifs";
options = let
options =
let
# this line prevents hanging on network split
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in ["${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000"];
in
[ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ];
};
fileSystems."/mnt/services" = {
device = "//192.168.0.30/services";
fsType = "cifs";
options = let
options =
let
# this line prevents hanging on network split
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in ["${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000"];
in
[ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ];
};
fileSystems."/mnt/data" = {
device = "//192.168.0.30/data";
fsType = "cifs";
options = let
options =
let
# this line prevents hanging on network split
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in ["${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000"];
in
[ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ];
};
programs.virt-manager.enable = true;
users.groups.libvirtd.members = ["admin"];
users.groups.libvirtd.members = [ "admin" ];
virtualisation.libvirtd = {
enable = true;
qemu.swtpm.enable = true;
};
virtualisation.spiceUSBRedirection.enable = true;
#services.flatpak.enable = true;
imports = [ inputs.nix-flatpak.nixosModules.nix-flatpak ];
services.flatpak = {
enable = true;
update.auto = {
enable = true;
onCalendar = "weekly"; # Default value
};
packages = [
"com.bitwarden.desktop"
"com.orcaslicer.OrcaSlicer"
"me.proton.Mail"
"org.audacityteam.Audacity"
"org.blender.Blender"
"org.freecad.FreeCAD"
"org.gimp.GIMP"
"org.inkscape.Inkscape"
"org.kiwix.desktop"
"org.libreoffice.LibreOffice"
"md.obsidian.Obsidian"
"com.obsproject.Studio"
"org.prismlauncher.PrismLauncher"
"org.signal.Signal"
"org.wireshark.Wireshark"
"org.getmonero.Monero"
"com.moonlight_stream.Moonlight"
"org.kde.kdenlive"
"im.riot.Riot"
"com.chirpmyradio.chirp"
"io.lmms.LMMS"
# games
"com.github.Anuken.Mindustry"
"com.play0ad.zeroad"
"io.github.endless_sky.endless_sky"
"io.github.spacingbat3.webcord"
"io.github.yairm210.unciv"
"io.openrct2.OpenRCT2"
"net.runelite.RuneLite"
"org.cataclysmdda.CataclysmDDA"
"org.openttd.OpenTTD"
"org.wesnoth.Wesnoth"
"org.xonotic.Xonotic"
"sh.ppy.osu"
# emu
"io.github.ryubing.Ryujinx"
"app.xemu.xemu"
"net.rpcs3.RPCS3"
"org.DolphinEmu.dolphin-emu"
"info.cemu.Cemu"
# backup
"org.keepassxc.KeePassXC"
];
};
}

View File

@ -13,7 +13,7 @@
environment.gnome.excludePackages = with pkgs; [
epiphany # web browser
geary # email
decibels #audio player
decibels # audio player
gnome-calendar
gnome-music
gnome-software
@ -25,7 +25,8 @@
programs.dconf = {
enable = true;
profiles.user.databases = [{
profiles.user.databases = [
{
lockAll = true; # prevents overriding
settings = {
"org/gnome/shell" = {
@ -81,10 +82,11 @@
apply-custom-theme = true;
};
"org/gnome/shell/keybindings" = {
show-screenshot-ui = ["<Shift><Super>s"];
show-screenshot-ui = [ "<Shift><Super>s" ];
};
#org.gnome.desktop.input-sources sources [('xkb', 'us'), ('xkb', 'dz+ar')]
};
}];
}
];
};
}

View File

@ -1,9 +1,9 @@
{ pkgs, ...}:
{ pkgs, ... }:
{
programs.hyprland.enable = true;
security.pam.services.hyprlock = {};
security.pam.services.hyprlock = { };
#wifi
networking.wireless.iwd.enable = true;
@ -20,16 +20,17 @@
slurp # screenshot selection
wl-clipboard # copy to clipboard
libnotify # enables "notify-send"
nautilus
bluetui # bluetooth
wiremix # mixer
btop
tesseract #ocr
tesseract # ocr
hyprpicker
satty # image annotation
# gnome stuff
gnome-calculator
nautilus
gnome-font-viewer
gnome-calendar
];
services.udisks2.enable = true; # udiskie automount USB

View File

@ -1,4 +1,4 @@
{ pkgs, ...}:
{ pkgs, ... }:
{
# Enable sound with pipewire.
@ -19,7 +19,7 @@
"adbusers" # adb
"kvm" # virt
"networkmanager"
"lp" #printing
"lp" # printing
];
};

16
flake.lock generated
View File

@ -100,6 +100,21 @@
"type": "github"
}
},
"nix-flatpak": {
"locked": {
"lastModified": 1777402031,
"narHash": "sha256-6gkfl9y3+ti0Z6dgby8/R4/DRT8sWU0I0TLCIxwWtjk=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "22a3adbe7c5c8c8a10a635d32c9ef7fc01a6e4b8",
"type": "github"
},
"original": {
"owner": "gmodena",
"repo": "nix-flatpak",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1776983936,
@ -170,6 +185,7 @@
"home-manager-unstable": "home-manager-unstable",
"lazyvim": "lazyvim",
"nix-darwin": "nix-darwin",
"nix-flatpak": "nix-flatpak",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable"

View File

@ -12,14 +12,25 @@
nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
lazyvim.url = "github:pfassina/lazyvim-nix";
nix-flatpak.url = "github:gmodena/nix-flatpak";
};
outputs =
{ self, nixpkgs, home-manager, home-manager-unstable, nix-darwin, lazyvim, ... }@inputs:
{
self,
nixpkgs,
home-manager,
home-manager-unstable,
nix-darwin,
lazyvim,
nix-flatpak,
...
}@inputs:
{
nixosConfigurations.desktop = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit self inputs;
inherit nix-flatpak;
hostname = "nixos-desktop";
};
#inherit system;
@ -51,7 +62,7 @@
};
nixosConfigurations.nixos-server = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs;};
specialArgs = { inherit inputs; };
modules = [
./config/common.nix
./config/linux.nix

View File

@ -1,4 +1,9 @@
{ config, pkgs, lazyvim, ...}:
{
config,
pkgs,
lazyvim,
...
}:
{
home.sessionVariables = {
@ -7,7 +12,6 @@
BROWSER = "brave";
};
imports = [ lazyvim.homeManagerModules.default ];
programs = {
@ -31,10 +35,16 @@
'';
};
lazyvim.enable = true;
lazyvim = {
enable = true;
plugins = {
colorscheme = ''
return {
"kepano/flexoki-neovim"
}
'';
};
};
# neovim = {
# enable = true;
# viAlias = true;
@ -111,6 +121,33 @@
enable = true;
dotDir = "${config.xdg.configHome}/zsh";
syntaxHighlighting.enable = true;
initContent = ''
bindkey -v
export KEYTIMEOUT=1
# Use vim keys in tab complete menu:
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -v '^?' backward-delete-char
# Change cursor shape for different vi modes.
function zle-keymap-select () {
case $KEYMAP in
vicmd) echo -ne '\e[1 q';; # block
viins|main) echo -ne '\e[5 q';; # beam
esac
}
zle -N zle-keymap-select
zle-line-init() {
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne "\e[5 q"
}
zle -N zle-line-init
echo -ne '\e[5 q' # Use beam shape cursor on startup.
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
'';
oh-my-zsh = {
enable = true;
plugins = [ "git" ];

View File

@ -13,6 +13,8 @@
'';
};
services.easyeffects.enable = true;
# Don't touch
home.stateVersion = "24.11";
}

View File

@ -2,10 +2,14 @@
let
nix_background = "rgb(16, 15, 15)";
nix_text = "rgb(206, 205, 195)";
nix_accent = "rgb(67, 133, 190)"; # blue
nix_accent = "rgb(32, 94, 166)"; # blue
nix_inactive = "rgb(64, 62, 60)";
nix_alert = "rgb(209, 77, 65)"; # red
nix_recording = "rgb(218, 112, 44)"; # orange
nix_alert = "rgb(175, 48, 41)"; # red
nix_recording = "rgb(188, 82, 21)"; # orange
nix_font = "JetBrainsMono Nerd Font";
nix_border_size = 3;
nix_corner = 10;
nix_bar_height = 30;
in
{
home.pointerCursor = {
@ -22,21 +26,56 @@ in
services.udiskie.enable = true; # automount USB
services.playerctld.enable = true; # media control for browser, etc
services.mpd = {
enable = true;
musicDirectory = "/mnt/media/audio/music/flac";
extraConfig = ''
audio_output {
type "pipewire"
name "PipeWire Sound Server"
}
auto_update "yes"
'';
};
programs.rmpc = {
enable = true;
config = ''
(
address: "127.0.0.1:6600",
password: None,
theme: None,
cache_dir: None,
on_song_change: None,
volume_step: 5,
max_fps: 30,
scrolloff: 0,
wrap_navigation: false,
enable_mouse: true,
enable_config_hot_reload: true,
select_current_song_on_change: false,
browser_song_sort: [Disc, Track, Artist, Title],
)
'';
};
programs.alacritty = {
enable = true;
theme = "flexoki";
settings = {
font = {
normal = {
family = "JetBrainsMono Nerd Font";
family = nix_font;
style = "Regular";
};
bold = {
family = "JetBrainsMono Nerd Font";
family = nix_font;
style = "Bold";
};
italic = {
family = "JetBrainsMono Nerd Font";
family = nix_font;
style = "Italic";
};
size = 9;
@ -50,16 +89,6 @@ in
};
};
programs.kitty = {
enable = true;
shellIntegration.enableZshIntegration = true;
font.name = "JetBrains Mono Nerd Font";
themeFile = "Catppuccin-Mocha";
settings = {
background_opacity = 0.9;
};
};
services.hyprpaper = {
enable = true;
settings = {
@ -78,19 +107,21 @@ in
enable = true;
settings = {
global = {
width = "(300, 300)";
height = "(75, 75)";
font = "JetBrains Mono Nerd Font 14";
font = "${nix_font} 10";
offset = "(40, 40)";
frame-color = nix_inactive;
background = nix_background;
foreground = nix_text;
frame_color = "#205ea6";
background = "#100f0f1A";
foreground = "#cecdc3";
timeout = 5;
gaps = true;
gap_size = 15;
corner_radius = nix_corner;
};
urgency_critical = {
frame-color = nix_alert;
frame_color = nix_alert;
timeout = 0;
};
@ -127,19 +158,6 @@ in
# };
# };
# services.swaync = {
# enable = true;
# style = ''
# .notification {
# border-radius: 0px;
# background-color: "#1e1e2e";
# color: "#cdd6f4";
# border-color: "#89b4fa";
# }
# '';
#
# };
dconf = {
enable = true;
settings = {
@ -162,7 +180,7 @@ in
border: none;
border-radius: 0;
min-height: 0;
font-family: 'JetBrainsMono Nerd Font';
font-family: '${nix_font}';
font-size: 14px; /* up from 12px */
}
@ -185,12 +203,20 @@ in
opacity: 0.5;
}
window#waybar {
border-radius: 0 0 ${toString nix_corner}px ${toString nix_corner}px;
}
#cpu,
#battery,
#pulseaudio,
#custom-power,
#idle_inhibitor,
#bluetooth,
#privacy,
#custom-menu,
#hyprland-submap,
#language {
min-width: 12px;
margin: 0 7.5px;
@ -208,7 +234,7 @@ in
margin-right: 13px;
}
#custom-expandn {
#custom-expand {
margin-right: 18px;
}
@ -239,12 +265,13 @@ in
opacity: 0;
}
#privacy {
#privacy privacy-item *{
min-width: 12px;
margin-left: 5px;
margin-right: 0;
font-size: 10px;
padding-bottom: 1px;
color: #ffffff;
}
#privacy.active {
@ -257,9 +284,13 @@ in
'';
settings = {
mainBar = {
height = 26;
spacing = 4;
modules-left = [ "hyprland/workspaces" ];
height = nix_bar_height;
spacing = 0;
modules-left = [
"custom/menu"
"hyprland/workspaces"
"hyprland/submap"
];
modules-center = [
"clock"
"idle_inhibitor"
@ -274,6 +305,10 @@ in
"privacy"
];
privacy = {
icon-size = 14;
};
"hyprland/workspaces" = {
on-click = "activate";
format = "{icon}";
@ -306,7 +341,8 @@ in
};
tray = {
#spacing = 10;
spacing = 17;
icon-size = 12;
};
"hyprland/language" = {
@ -321,6 +357,11 @@ in
on-click = "hyprlock & systemctl suspend";
};
"custom/menu" = {
format = "";
on-click = "walker";
};
"custom/expand" = {
tooltip = false;
format = "";
@ -411,13 +452,140 @@ in
locale = "";
monitor = "";
terminal_title_flag = "";
theme = "default";
timeout = 0;
};
theme.name = "my-theme";
theme.style = ''
@define-color background ${nix_background};
@define-color foreground ${nix_text};
@define-color selected-text ${nix_accent};
@define-color base ${nix_background};
@define-color border ${nix_accent};
@define-color text ${nix_text};
* {
all: unset;
}
* {
font-family: monospace;
font-size: 18px;
color: @text;
}
scrollbar {
opacity: 0;
}
.normal-icons {
-gtk-icon-size: 16px;
}
.large-icons {
-gtk-icon-size: 32px;
}
.box-wrapper {
background: alpha(@base, 0.95);
padding: 20px;
border: 2px solid @border;
}
.preview-box {
}
.box {
}
.search-container {
background: @base;
padding: 10px;
}
.input placeholder {
opacity: 0.5;
}
.input {
}
.input:focus,
.input:active {
box-shadow: none;
outline: none;
}
.content-container {
}
.placeholder {
}
.scroll {
}
.list {
}
child,
child > * {
}
child:hover .item-box {
}
child:selected .item-box {
}
child:selected .item-box * {
color: @selected-text;
}
child:selected {
background: alpha(@text, 0.07);
}
.item-box {
padding-left: 14px;
}
.item-text-box {
all: unset;
padding: 14px 0;
}
.item-text {
}
.item-subtext {
font-size: 0px;
min-height: 0px;
margin: 0px;
padding: 0px;
}
.item-image {
margin-right: 14px;
-gtk-icon-transform: scale(0.9);
}
.current {
font-style: italic;
}
.keybind-hints {
background: @background;
padding: 10px;
margin-top: 10px;
}
.preview {
}
'';
};
programs.rofi = {
enable = true;
font = "JetBrains Mono 14";
font = "${nix_font} 14";
plugins = [
pkgs.rofimoji
];
@ -425,8 +593,18 @@ in
programs.hyprlock = {
enable = true;
settings = {
general = {
ignore_empty_input = true;
};
background = {
color = nix_background;
# color = nix_background;
path = "screenshot";
blur_passes = 3;
blur_size = 8;
};
animations = {
enabled = false;
};
input-field = {
@ -434,19 +612,22 @@ in
position = "0, 0";
halign = "center";
valign = "center";
fade_on_emtpy = false;
fade_on_empty = false;
font_color = nix_text;
outer_color = nix_inactive;
inner_color = nix_background;
check_color = nix_accent;
fail_color = nix_alert;
font_family = "JetBrains Mono Nerd Font";
font_family = nix_font;
shadow_passes = 0;
placeholder_text = "Enter Password";
placeholder_text = "Enter Password 󰈷 ";
fail_text = "<i>$FAIL ($ATTEMPTS)</i>";
rounding = 0;
rounding = nix_corner;
};
"fingerprint:enabled" = true;
};
};
@ -472,10 +653,94 @@ in
};
};
xdg.configFile."hypr/scripts/media.sh" = {
executable = true;
text = ''
# Define a unique ID to reuse for replacing notifications
NOTIF_ID=9999
PLAYER=$(playerctl -l 2>/dev/null | grep -i 'brave\|chromium\|chrome' | head -n 1)
if [ -z "$PLAYER" ]; then
exit 1
fi
sleep 0.4s
# Get play/pause status
STATUS=$(playerctl -p "$PLAYER" status 2>/dev/null)
# Fetch metadata
TITLE=$(playerctl -p "$PLAYER" metadata title 2>/dev/null)
ARTIST=$(playerctl -p "$PLAYER" metadata artist 2>/dev/null)
# Format the message based on artist presence
if [ -z "$ARTIST" ]; then
MSG="$TITLE"
else
MSG="$TITLE\n$ARTIST"
fi
# Send notification using the -r flag to overwrite the old one
if [ "$STATUS" = "Paused" ]; then
notify-send -r $NOTIF_ID "Paused" "$MSG" -i media-playback-pause -t 5000
else
notify-send -r $NOTIF_ID "Now Playing" "$MSG" -i media-playback-start -t 5000
fi
'';
};
xdg.configFile."hypr/scripts/screenshot.sh" = {
executable = true;
text = ''
MODE=$1
FILE=$(mktemp /tmp/screenshot-XXXXXX.png)
grim -g "$(slurp)" "$FILE" || exit 1
wl-copy < "$FILE"
ACTION=$(dunstify "Screenshot taken" "Copied to clipboard" \
--icon="$FILE" \
--action="open,Open in Satty" \
--timeout=5000)
[ "$ACTION" = "2" ] && satty --filename "$FILE"
FILE=$(mktemp /tmp/screenshot-XXXXXX.png)
case "$MODE" in
region)
grim -g "$(slurp)" "$FILE" || exit 1
;;
fullscreen)
grim "$FILE" || exit 1
;;
window)
GEOMETRY=$(hyprctl clients -j | jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | slurp)
grim -g "$GEOMETRY" "$FILE" || exit 1
;;
*)
notify-send "Screenshot" "Invalid mode: $MODE" --urgency=critical
exit 1
;;
esac
wl-copy < "$FILE"
ACTION=$(notify-send "Screenshot taken ($MODE)" \
"Copied to clipboard" \
--icon="$FILE" \
--action="open=Open in Satty" \
--wait)
[ "$ACTION" = "open" ] && satty --filename "$FILE"
'';
};
wayland.windowManager.hyprland = {
enable = true;
plugins = [
#pkgs.hyprlandPlugins.hyprbars
pkgs.hyprlandPlugins.hyprbars
];
settings = {
# This is an example Hyprland config file for Nix.
@ -492,6 +757,27 @@ in
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
# todo: make the line above nix-ish
#
cursor = {
#hide_on_key_press = true; # wish this could be disabled on window basis https://github.com/hyprwm/Hyprland/discussions/12317
warp_on_change_workspace = 1;
};
plugin = {
hyprbars = {
bar_height = nix_bar_height;
hyprbars-button = [
"rgb(ff605C), 16, 󰖭, hyprctl dispatch killactive"
"rgb(00CA4E), 16, 󰊔, hyprctl dispatch fullscreen 1"
"rgb(FFBD44), 16, , hyprctl dispatch togglefloating"
];
on_double_click = "hyprctl dispatch fullscreen 1";
icon_on_hover = true;
bar_color = nix_background;
"col.text" = nix_text;
bar_buttons_alignment = "right";
};
};
################
### MONITORS ###
@ -581,14 +867,14 @@ in
gaps_in = 10;
gaps_out = 20;
border_size = 3;
border_size = nix_border_size;
# these need to have variables
"col.active_border" = "0x4385BEFF";
"col.inactive_border" = "0x403E3CFF";
"col.active_border" = "0xFF205ea6";
"col.inactive_border" = "0xFF403E3C";
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false;
resize_on_border = true;
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false;
@ -625,36 +911,35 @@ in
};
};
# https://wiki.hypr.land/Configuring/Variables/#decoration
# https://wiki.hypr.land/Configuring/Basics/Variables/#decoration
decoration = {
rounding = 0;
rounding_power = 2;
# Change transparency of focused and unfocused windows
active_opacity = 1.0;
inactive_opacity = 1.0;
rounding = nix_corner;
shadow = {
enabled = true;
range = 4;
range = 2;
render_power = 3;
color = "rgba(1a1a1aee)";
};
# https://wiki.hypr.land/Configuring/Variables/#blur
# https://wiki.hypr.land/Configuring/Basics/Variables/#blur
blur = {
enabled = true;
size = 8;
passes = 1;
noise = 0.2;
vibrancy = 0.1696;
size = 2;
passes = 2;
special = true;
brightness = 0.60;
contrast = 0.75;
};
};
layerrule = [
"blur, notifications"
"ignorezero, notifications"
# turn off anim for walker
"noanim, walker"
]; # add blur to notifications
# https://wiki.hypr.land/Configuring/Variables/#animations
@ -674,7 +959,7 @@ in
animation = [
"global, 1, 10, default"
"border, 1, 5.39, easeOutQuint"
"windows, 1, 4.79, easeOutQuint"
"windows, 1, 3.79, easeOutQuint"
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
"windowsOut, 1, 1.49, linear, popin 87%"
"fadeIn, 1, 1.73, almostLinear"
@ -685,31 +970,20 @@ in
"layersOut, 1, 1.5, linear, fade"
"fadeLayersIn, 1, 1.79, almostLinear"
"fadeLayersOut, 1, 1.39, almostLinear"
"workspaces, 1, 1.94, almostLinear, fade"
"workspacesIn, 1, 1.21, almostLinear, fade"
"workspacesOut, 1, 1.94, almostLinear, fade"
"zoomFactor, 1, 7, quick"
"workspaces, 0, 1, default"
"specialWorkspace, 1, 3, easeOutQuint, slidevert"
];
};
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = [
# "w[tv1], gapsout:0, gapsin:0"
# "f[1], gapsout:0, gapsin:0"
# ];
# windowrule = [
# "bordersize 0, floating:0, onworkspace:w[tv1]"
# "rounding 0, floating:0, onworkspace:w[tv1]"
# "bordersize 0, floating:0, onworkspace:f[1]"
# "rounding 0, floating:0, onworkspace:f[1]"
# ];
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle = {
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true; # You probably want this
force_split = 2; # Always split on the right
};
binds = {
hide_special_on_workspace_change = true;
};
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
@ -722,6 +996,7 @@ in
force_default_wallpaper = 0; # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true; # If true disables the random hyprland logo / anime girl background. :(
background_color = nix_background;
focus_on_activate = true;
};
#############
@ -735,11 +1010,15 @@ in
kb_model = "";
kb_options = "grp:alt_space_toggle";
kb_rules = "";
follow_mouse = 1;
repeat_rate = 40;
repeat_delay = 250;
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
accel_profile = "flat";
touchpad = {
disable_while_typing = false;
natural_scroll = false;
@ -773,15 +1052,23 @@ in
"$mainMod SHIFT, Q, exit,"
"$mainMod, E, exec, $fileManager"
"$mainMod, V, togglefloating,"
"$mainMod, F, fullscreen, 1"
"$mainMod, F, fullscreen, 3"
"$mainMod, M, fullscreen, 1"
"$mainMod, W, exec, $browser"
"$mainMod, space, exec, $menu"
#"$mainMod, P, pseudo," # dwindle
"$mainMod, T, togglesplit," # dwindle
"$mainMod SHIFT, L, exec, hyprlock"
"$mainMod SHIFT, F, workspaceopt, allfloat"
"$mainMod SHIFT, H, exec, for i in {1..10}; do dunstctl history-pop; done; sleep 5 && dunstctl close-all" # show last 10 notifications for 5 seconds
"$mainMod, G, togglegroup,"
"$mainMod SHIFT, S, exec, grim -g \"$(slurp)\" - | wl-copy"
"$mainMod SHIFT, S, exec, ~/.config/hypr/scripts/screenshot.sh region"
", PRINT, exec, ~/.config/hypr/scripts/screenshot.sh fullscreen"
"$mainMod, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh window"
# OCR
"$mainMod SHIFT, T, exec, bash -c 'grim -g \"$(slurp)\" - | tesseract - stdout | wl-copy'"
"$mainMod SHIFT, PRINT, exec, pkill hyprpicker || hyprpicker -a | wl-copy"
# Move focus with mainMod + arrow keys
"$mainMod, h, movefocus, l"
@ -845,10 +1132,10 @@ in
# Requires playerctl
bindl = [
", XF86AudioNext, exec, playerctl next"
", XF86AudioPause, exec, playerctl play-pause"
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioPrev, exec, playerctl previous"
", XF86AudioNext, exec, playerctl next& ~/.config/hypr/scripts/media.sh"
", XF86AudioPause, exec, playerctl play-pause& ~/.config/hypr/scripts/media.sh"
", XF86AudioPlay, exec, playerctl play-pause& ~/.config/hypr/scripts/media.sh"
", XF86AudioPrev, exec, playerctl previous& ~/.config/hypr/scripts/media.sh"
];
##############################
@ -867,13 +1154,12 @@ in
# Fix some dragging issues with XWayland
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0"
"float, title:^(bluetui)$"
"center, title:^(bluetui)$"
"float, title:^(impala)$"
"center, title:^(impala)$"
"float, title:^(wiremix)$"
"center, title:^(wiremix)$"
# make tuis accessed from waybar float in center
"tag +floating-window, title:(bluetui|impala|wiremix)"
"tag +floating-window, title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)"
"float, class:(org.gnome.Calculator)"
# send games to specific workspace
"workspace name:games silent, class:$games"
"noanim, class:$games"
"noblur, class:$games"
@ -882,6 +1168,42 @@ in
"rounding 0, class:$games"
"fullscreen, class:$games"
"immediate, class:$games"
# pip
"tag +pip, title:(Picture.?in.?[Pp]icture)"
"tag -default-opacity, tag:pip"
"float, tag:pip"
"pin, tag:pip"
"size 600 338, tag:pip"
"keepaspectratio, tag:pip"
"bordersize 0, tag:pip"
"opacity 1 1, tag:pip"
"move (monitor_w-window_w-40) (monitor_h*0.04), tag:pip"
# steam
"float, class:^(steam)$"
"center, class:^(steam)$, title:^(Steam)$"
"tag -default-opacity, class:^(steam.*)$"
"opacity 1 1, class:^(steam.*)$"
"size 1100 700, class:^(steam)$, title:^(Steam)$"
"size 460 800, class:^(steam)$, title:^(Friends List)$"
"idleinhibit fullscreen, class:^(steam)$"
# bitwarden
"noscreenshare, class:^(Bitwarden)$"
"tag +floating-window, class:^(Bitwarden)$"
# Bitwarden Chrome Extension
"noscreenshare, class:^(brave-nngceckbapebfimnlniiiahkandclblb-Default)$"
"tag +floating-window, class:^(brave-nngceckbapebfimnlniiiahkandclblb-Default)$"
# floating tag
"float, tag:floating-window"
"center, tag:floating-window"
"size 875 600, tag:floating-window"
# hyprbar
"plugin:hyprbars:nobar, tag:^(?!floating-window$).*$"
];
"$games" =

View File

@ -7,7 +7,7 @@
{
systemd.user.services.podman-prune = {
systemd.user.services.podman-prune = {
Unit = {
Description = "Prune unused Podman resources for admin user";
};
@ -15,9 +15,9 @@ systemd.user.services.podman-prune = {
Type = "oneshot";
ExecStart = "${pkgs.podman}/bin/podman system prune -f --all";
};
};
};
systemd.user.timers.podman-prune = {
systemd.user.timers.podman-prune = {
Unit = {
Description = "Weekly Podman prune timer";
};
@ -28,7 +28,7 @@ systemd.user.timers.podman-prune = {
Install = {
WantedBy = [ "timers.target" ];
};
};
};
services.podman.networks = {
internal_net = {
@ -40,28 +40,28 @@ systemd.user.timers.podman-prune = {
services.podman.autoUpdate.onCalendar = "*-*-* 00:00";
services.podman.containers = {
# palworld = {
# image = "docker.io/thijsvanloef/palworld-server-docker:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/palworld"
# ];
# volumes = [
# "/pool/services/podman/palworld:/palworld"
# ];
# ports = [
# "8211:8211/udp"
# "27015:27015/udp"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
# palworld = {
# image = "docker.io/thijsvanloef/palworld-server-docker:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/palworld"
# ];
# volumes = [
# "/pool/services/podman/palworld:/palworld"
# ];
# ports = [
# "8211:8211/udp"
# "27015:27015/udp"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
actual = {
image = "docker.io/actualbudget/actual-server:latest";
@ -81,49 +81,49 @@ systemd.user.timers.podman-prune = {
};
};
# akaunting = {
# image = "docker.io/akaunting/akaunting:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/akaunting"
# ];
# volumes = [
# "/pool/services/podman/akaunting/data:/var/www/html/akaunting"
# ];
# ports = [
# "8003:80"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# akaunting-db = {
# image = "docker.io/mariadb:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/akaunting"
# ];
# volumes = [
# "/pool/services/podman/akaunting/db:/var/lib/mysql"
# ];
# ports = [
# "3307:3306"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
# akaunting = {
# image = "docker.io/akaunting/akaunting:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/akaunting"
# ];
# volumes = [
# "/pool/services/podman/akaunting/data:/var/www/html/akaunting"
# ];
# ports = [
# "8003:80"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# akaunting-db = {
# image = "docker.io/mariadb:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/akaunting"
# ];
# volumes = [
# "/pool/services/podman/akaunting/db:/var/lib/mysql"
# ];
# ports = [
# "3307:3306"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
archivebox = {
image = "docker.io/archivebox/archivebox:latest";
@ -272,12 +272,12 @@ systemd.user.timers.podman-prune = {
autoUpdate = "registry";
network = "internal_net";
environment = {
OIDC_ENABLED="1";
OIDC_PROVIDER_METADATA_URL="https://authentik.mektem.com/application/o/fresh-rss/.well-known/openid-configuration";
OIDC_CLIENT_ID="PsqRnVLTezIKL7582E8pnKNFIF0W41kVyMhh4RoG";
OIDC_CLIENT_SECRET="h1XsvbUcRn33rq7qBBS0GUENEgn6zTJQeHpVPhzcqG4ekdwlCghIn1ALhydYXF1pfS8HaskM3KntHXDTC8a7athLxLzT95Gxr8OpvN9iOY75pUXrNnLJXUrY9o4qKM7m";
OIDC_X_FORWARDED_HEADERS="X-Forwarded-Port X-Forwarded-Proto X-Forwarded-Host";
OIDC_SCOPES="openid email profile";
OIDC_ENABLED = "1";
OIDC_PROVIDER_METADATA_URL = "https://authentik.mektem.com/application/o/fresh-rss/.well-known/openid-configuration";
OIDC_CLIENT_ID = "PsqRnVLTezIKL7582E8pnKNFIF0W41kVyMhh4RoG";
OIDC_CLIENT_SECRET = "h1XsvbUcRn33rq7qBBS0GUENEgn6zTJQeHpVPhzcqG4ekdwlCghIn1ALhydYXF1pfS8HaskM3KntHXDTC8a7athLxLzT95Gxr8OpvN9iOY75pUXrNnLJXUrY9o4qKM7m";
OIDC_X_FORWARDED_HEADERS = "X-Forwarded-Port X-Forwarded-Proto X-Forwarded-Host";
OIDC_SCOPES = "openid email profile";
};
volumes = [
"/pool/services/podman/freshrss:/config"
@ -318,40 +318,39 @@ systemd.user.timers.podman-prune = {
};
};
# gitea-anubis = {
# image = "ghcr.io/techarohq/anubis:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/anubis-default" #WHY DOES THIS NOT WORK????
# "/pool/services/secrets/anubis-nginx"
# ];
# environment = {
# DIFFICULTY = "4";
# SERVE_ROBOTS_TXT = "true";
# POLICY_FNAME = "/data/cfg/botPolicy.json";
# OG_PASSTHROUGH = "true";
# OG_EXPIRY_TIME = "24h";
# BIND = ":3002";
# METRICS_BIND = ":9090";
# TARGET = "http://192.168.0.30:3001";
# };
#
# volumes = [
# "/pool/services/podman/anubis/botPolicy.json:/data/cfg/botPolicy.json:ro"
# ];
# ports = [
# "3002:3002"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
# gitea-anubis = {
# image = "ghcr.io/techarohq/anubis:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/anubis-default" #WHY DOES THIS NOT WORK????
# "/pool/services/secrets/anubis-nginx"
# ];
# environment = {
# DIFFICULTY = "4";
# SERVE_ROBOTS_TXT = "true";
# POLICY_FNAME = "/data/cfg/botPolicy.json";
# OG_PASSTHROUGH = "true";
# OG_EXPIRY_TIME = "24h";
# BIND = ":3002";
# METRICS_BIND = ":9090";
# TARGET = "http://192.168.0.30:3001";
# };
#
# volumes = [
# "/pool/services/podman/anubis/botPolicy.json:/data/cfg/botPolicy.json:ro"
# ];
# ports = [
# "3002:3002"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
home-assistant = {
image = "ghcr.io/home-assistant/home-assistant:stable";
@ -539,46 +538,46 @@ systemd.user.timers.podman-prune = {
};
};
# joplin = {
# image = "docker.io/joplin/server:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/joplin"
# ];
# ports = [
# "22300:22300"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# joplin-db = {
# image = "docker.io/postgres:15";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/joplin"
# ];
# volumes = [
# "/pool/services/podman/joplin-db:/var/lib/postgresql/data"
# ];
# ports = [
# "5432:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
# joplin = {
# image = "docker.io/joplin/server:latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/joplin"
# ];
# ports = [
# "22300:22300"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# joplin-db = {
# image = "docker.io/postgres:15";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/joplin"
# ];
# volumes = [
# "/pool/services/podman/joplin-db:/var/lib/postgresql/data"
# ];
# ports = [
# "5432:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
kiwix = {
image = "ghcr.io/kiwix/kiwix-serve:latest";
@ -639,70 +638,69 @@ systemd.user.timers.podman-prune = {
};
};
# mastodon = {
# image = "ghcr.io/linuxserver/mastodon:amd64-latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/mastodon"
# ];
# volumes = [
# "/pool/services/podman/mastodon/config:/config"
# ];
# ports = [
# "808:80"
# "8449:443"
# "3009:3000"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# mastodon-db = {
# image = "docker.io/postgres:16-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/mastodon-db"
# ];
# volumes = [
# "/pool/services/podman/mastodon/db:/var/lib/postgresql/data"
# ];
# ports = [
# "5435:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# mastodon-redis = {
# image = "registry.hub.docker.com/library/redis:6.2-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# ];
# ports = [
# "6382:6379"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
# mastodon = {
# image = "ghcr.io/linuxserver/mastodon:amd64-latest";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/mastodon"
# ];
# volumes = [
# "/pool/services/podman/mastodon/config:/config"
# ];
# ports = [
# "808:80"
# "8449:443"
# "3009:3000"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# mastodon-db = {
# image = "docker.io/postgres:16-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/mastodon-db"
# ];
# volumes = [
# "/pool/services/podman/mastodon/db:/var/lib/postgresql/data"
# ];
# ports = [
# "5435:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# mastodon-redis = {
# image = "registry.hub.docker.com/library/redis:6.2-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# ];
# ports = [
# "6382:6379"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
metube = {
image = "ghcr.io/alexta69/metube:latest";
@ -1036,27 +1034,27 @@ systemd.user.timers.podman-prune = {
};
};
};
# rlcraft = {
# image = "docker.io/itzg/minecraft-server:java8";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/rlcraft"
# ];
# volumes = [
# "/pool/services/podman/minecraft/rlcraft/data:/data"
# ];
# ports = [
# "25565:25565"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
# rlcraft = {
# image = "docker.io/itzg/minecraft-server:java8";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/rlcraft"
# ];
# volumes = [
# "/pool/services/podman/minecraft/rlcraft/data:/data"
# ];
# ports = [
# "25565:25565"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
rutorrent = {
image = "docker.io/crazymax/rtorrent-rutorrent:latest";
@ -1119,52 +1117,50 @@ systemd.user.timers.podman-prune = {
};
};
# tandoor = {
# image = "docker.io/vabene1111/recipes";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/tandoor"
# ];
# volumes = [
# "/pool/services/podman/tandoor/staticfiles:/opt/recipes/staticfiles"
# "/pool/services/podman/tandoor/mediafiles:/opt/recipes/mediafiles"
# ];
# ports = [
# "9092:80"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# tandoor-db = {
# image = "docker.io/postgres:16-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/tandoor"
# ];
# volumes = [
# "/pool/services/podman/tandoor/db:/var/lib/postgresql/data"
# ];
# ports = [
# "5434:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
# tandoor = {
# image = "docker.io/vabene1111/recipes";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/tandoor"
# ];
# volumes = [
# "/pool/services/podman/tandoor/staticfiles:/opt/recipes/staticfiles"
# "/pool/services/podman/tandoor/mediafiles:/opt/recipes/mediafiles"
# ];
# ports = [
# "9092:80"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
#
# tandoor-db = {
# image = "docker.io/postgres:16-alpine";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# environmentFile = [
# "/pool/services/secrets/default"
# "/pool/services/secrets/tandoor"
# ];
# volumes = [
# "/pool/services/podman/tandoor/db:/var/lib/postgresql/data"
# ];
# ports = [
# "5434:5432"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
thelounge = {
image = "lscr.io/linuxserver/thelounge:latest";
@ -1319,28 +1315,27 @@ systemd.user.timers.podman-prune = {
};
};
# zigbee2mqtt = {
# image = "docker.io/koenkk/zigbee2mqtt";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# devices = [ "/dev/ttyACM0:/dev/ttyACM0" ];
# environmentFile = [
# "/pool/services/secrets/default"
# ];
# volumes = [
# "/pool/services/podman/zigbee2mqtt:/app/data"
# ];
# ports = [
# "8808:8080"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
# zigbee2mqtt = {
# image = "docker.io/koenkk/zigbee2mqtt";
# autoStart = true;
# autoUpdate = "registry";
# network = "internal_net";
# devices = [ "/dev/ttyACM0:/dev/ttyACM0" ];
# environmentFile = [
# "/pool/services/secrets/default"
# ];
# volumes = [
# "/pool/services/podman/zigbee2mqtt:/app/data"
# ];
# ports = [
# "8808:8080"
# ];
# extraConfig = {
# Service = {
# TimeoutStartSec = 900;
# };
# };
# };
};

View File

@ -1,37 +1,55 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "nvidia-uvm" ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"nvme"
"usbhid"
"usb_storage"
"sd_mod"
"nvidia-uvm"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/bd28421d-7ec4-4b23-964d-c07a6f351e1f";
fileSystems."/" = {
device = "/dev/disk/by-uuid/bd28421d-7ec4-4b23-964d-c07a6f351e1f";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-e3a81f8e-3ae9-494b-a329-a6f860b10e34".device = "/dev/disk/by-uuid/e3a81f8e-3ae9-494b-a329-a6f860b10e34";
boot.initrd.luks.devices."luks-e3a81f8e-3ae9-494b-a329-a6f860b10e34".device =
"/dev/disk/by-uuid/e3a81f8e-3ae9-494b-a329-a6f860b10e34";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/D47C-5FCE";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/D47C-5FCE";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/be22d9db-283a-4dd9-93d5-1006e392724b"; }
swapDevices = [
{ device = "/dev/disk/by-uuid/be22d9db-283a-4dd9-93d5-1006e392724b"; }
];
fileSystems."/run/media/admin/08cabc7a-9a6e-4c21-8a07-6663af77b705" =
{ device = "/dev/disk/by-uuid/08cabc7a-9a6e-4c21-8a07-6663af77b705";
fileSystems."/run/media/admin/08cabc7a-9a6e-4c21-8a07-6663af77b705" = {
device = "/dev/disk/by-uuid/08cabc7a-9a6e-4c21-8a07-6663af77b705";
fsType = "ext4";
};

View File

@ -1,4 +1,9 @@
{ config, pkgs, inputs, ... }:
{
config,
pkgs,
inputs,
...
}:
{
@ -6,15 +11,16 @@
boot.loader.systemd-boot.configurationLimit = 10;
boot.loader.efi.canTouchEfiVariables = true;
services.pipewire = {
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
wireplumber.enable = true;
};
};
boot = {
initrd.luks.devices."luks-cbf20b12-90f7-4fbb-95d3-1320eece4d89".device = "/dev/disk/by-uuid/cbf20b12-90f7-4fbb-95d3-1320eece4d89";
initrd.luks.devices."luks-cbf20b12-90f7-4fbb-95d3-1320eece4d89".device =
"/dev/disk/by-uuid/cbf20b12-90f7-4fbb-95d3-1320eece4d89";
kernelParams = [
"nvidia_drm.modeset=1"
"nvidia_drm.fbdev=1"
@ -35,7 +41,10 @@ services.pipewire = {
];
};
defaultGateway = "192.168.30.1";
nameservers = [ "192.168.0.1" "1.1.1.1" ];
nameservers = [
"192.168.0.1"
"1.1.1.1"
];
};
services = {
@ -44,7 +53,7 @@ services.pipewire = {
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.enable = true;
powerManagement.finegrained = false;
open = false;
package = config.boot.kernelPackages.nvidiaPackages.stable;

View File

@ -2,9 +2,8 @@
{
nixpkgs.hostPlatform = "aarch64-darwin";
system.stateVersion = 6;
nixpkgs.hostPlatform = "aarch64-darwin";
system.stateVersion = 6;
environment.systemPackages = with pkgs; [
audacity

View File

@ -14,7 +14,10 @@
];
};
defaultGateway = "192.168.0.1";
nameservers = [ "192.168.0.1" "1.1.1.1" ];
nameservers = [
"192.168.0.1"
"1.1.1.1"
];
};
users.users.admin.linger = true;

View File

@ -1,31 +1,47 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "mpt3sas" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.availableKernelModules = [
"mpt3sas"
"xhci_pci"
"ahci"
"usb_storage"
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/b9cc7972-36ae-4cb4-a6f4-e342eaca679e";
fileSystems."/" = {
device = "/dev/disk/by-uuid/b9cc7972-36ae-4cb4-a6f4-e342eaca679e";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/542D-865C";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/542D-865C";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/1032bbd9-0124-419f-a696-a977755aaf17"; }
swapDevices = [
{ device = "/dev/disk/by-uuid/1032bbd9-0124-419f-a696-a977755aaf17"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View File

@ -7,7 +7,7 @@
#boot.loader.limine.biosDevice = "/dev/vda";
#boot.loader.efi.efiSysMountPoint = "/boot";
systemd.services.podman-network-vlan50 = {
systemd.services.podman-network-vlan50 = {
description = "Create podman vlan50 network";
after = [ "network.target" ];
before = [ "podman-nginx.service" ];
@ -26,7 +26,7 @@ systemd.services.podman-network-vlan50 = {
vlan50
fi
'';
};
};
networking = {
vlans = {
@ -55,7 +55,10 @@ systemd.services.podman-network-vlan50 = {
];
};
defaultGateway = "192.168.0.1";
nameservers = [ "192.168.0.1" "1.1.1.1" ];
nameservers = [
"192.168.0.1"
"1.1.1.1"
];
};
users.users.admin.linger = true;
@ -148,7 +151,7 @@ systemd.services.podman-network-vlan50 = {
# };
# give permissions for zigbee USB transceiver
system.activationScripts.script.text = ''chmod o+rw /dev/ttyACM0'';
system.activationScripts.script.text = "chmod o+rw /dev/ttyACM0";
boot.supportedFilesystems = [ "zfs" ];
boot.zfs.forceImportRoot = false;
@ -167,9 +170,9 @@ systemd.services.podman-network-vlan50 = {
services.zfs.zed = {
settings = {
ZED_NTFY_URL="https://ntfy.mektem.com";
ZED_NTFY_TOPIC="zfs";
ZED_NTFY_ACCESS_TOKEN="tk_gtjia7itxhg1qik7j58wkgey2parr";
ZED_NTFY_URL = "https://ntfy.mektem.com";
ZED_NTFY_TOPIC = "zfs";
ZED_NTFY_ACCESS_TOKEN = "tk_gtjia7itxhg1qik7j58wkgey2parr";
ZED_NOTIFY_INTERVAL_SECS = 1;
ZED_NOTIFY_VERBOSE = true; # Set to false to only get alerts on degradation
};

1
nixos-apple-silicon Submodule

@ -0,0 +1 @@
Subproject commit f2506ef24a154e2bcc8fb10f2c73579324f9ead0