Compare commits

...

116 Commits

Author SHA1 Message Date
18913b9120 remove Redis service configuration from JuiceFS package 2025-03-19 00:55:04 +01:00
49d0088595 add JuiceFS custom mount service configuration 2025-03-19 00:53:22 +01:00
c2adf02a55 update flake.lock files to reflect latest dependencies and revisions 2025-03-04 11:36:08 +01:00
Menno van Leeuwen
60bfa228e6 adds 2025 ssh key pub
Signed-off-by: Menno van Leeuwen <menno@mennos-desktop.dory-gorgon.ts.net>
2025-01-28 15:17:15 +01:00
4e28e5cbb0 Removes, kitty, waybar, hyprland and all it's other side apps required to make that useful
All checks were successful
Nix Format Check / check-format (push) Successful in 37s
2025-01-15 16:20:32 +01:00
68943b57ee fix install_nix function to check for nix-channel instead of nixos-version
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 14:03:16 +01:00
733be4c7c8 refactor setup script to improve argument handling for continuation flag
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 13:44:34 +01:00
a0245017f7 refactor setup script to use a variable for continuation flag handling
All checks were successful
Nix Format Check / check-format (push) Successful in 37s
2025-01-15 13:40:49 +01:00
5803376722 update installation message to instruct users to reopen shell and rerun the script after Nix installation
All checks were successful
Nix Format Check / check-format (push) Successful in 37s
2025-01-15 13:36:17 +01:00
a3f2b7d759 refactor setup script to remove continuation flag handling and streamline installation steps
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 13:33:57 +01:00
0747d2a784 enhance setup script to support continuation of installation process
All checks were successful
Nix Format Check / check-format (push) Successful in 37s
2025-01-15 12:52:40 +01:00
852c5ebef8 add success log and reinvoke script after Nix installation
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 11:55:27 +01:00
783d1bac25 fix setup script to ensure SELinux config writes correctly and clean up whitespace
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 11:51:20 +01:00
325310c1ca refactor hostname preparation to check for existing hostname before NixOS verification
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2025-01-15 11:49:54 +01:00
1db4d0c49b add log_warning function to output warnings in yellow
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 11:48:47 +01:00
4d20f2d7a6 fix SELinux check to correctly compare getenforce output
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 11:48:06 +01:00
bbd3198976 fix SELinux check to correctly identify Non-NixOS systems
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 11:47:12 +01:00
d48a3d3925 refactor hostname preparation to check for NixOS only when hardware configuration is absent
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2025-01-15 11:45:14 +01:00
c11c4e7482 add SELinux check and adjust mode in setup script for non-NixOS systems
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 11:43:11 +01:00
e06b93215f ensure user input is read from the terminal in the warning prompt
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2025-01-15 11:38:51 +01:00
041307aaea update setup script message to indicate compatibility with Fedora
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2025-01-15 11:35:27 +01:00
1d0ef3d31e refactor setup script to conditionally set hostname and rebuild NixOS only on NixOS systems
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2025-01-15 11:34:06 +01:00
206cbfb564 remove unused flake.lock entries and clean up nixpkgs references
All checks were successful
Nix Format Check / check-format (push) Successful in 44s
2025-01-15 11:09:50 +01:00
bc85c85592 Merge branch 'master' of git.mvl.sh:vleeuwenmenno/dotfiles 2025-01-15 11:09:42 +01:00
569e9698f7 update flake.lock files for home-manager and nixos with new dependency revisions 2025-01-15 11:06:38 +01:00
8eabebb9e8 add gpredict and LazyVim plugin to home-manager packages 2025-01-15 11:06:30 +01:00
58bd63a4c7 remove unused gpg ssh program configuration and update flake.lock dependencies
All checks were successful
Nix Format Check / check-format (push) Successful in 47s
2025-01-09 14:18:01 +01:00
0db42dfcbc adds params to allow experimental features
Some checks failed
Nix Format Check / check-format (push) Has been cancelled
2025-01-09 14:17:18 +01:00
9236bf36f1 revert 1password to nixos only, we install 1password on fedora by hand
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2025-01-02 02:02:04 +01:00
4fab06b82b reencrypt gpg secrets
All checks were successful
Nix Format Check / check-format (push) Successful in 40s
2025-01-02 01:59:48 +01:00
b5775fd29b switch to ptyxis since ghostty not work on fedora atm 2025-01-02 01:59:36 +01:00
135c08eda0 rename gamingpc to desktop 2025-01-02 01:59:23 +01:00
938ab8e83b CLI fixes for Fedora 2025-01-02 01:59:03 +01:00
dfff773f7e moves various things to home manager
All checks were successful
Nix Format Check / check-format (push) Successful in 1m4s
2025-01-02 00:59:22 +01:00
df66535bf1 add back kitty configuration and themes to dotfiles
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2024-12-30 15:03:07 +01:00
b5e2bb933f add ghostty configuration and update flake.lock for new dependencies
All checks were successful
Nix Format Check / check-format (push) Successful in 40s
2024-12-30 15:00:15 +01:00
f3e07bad16 rename dotf term to dotf hello
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2024-12-30 13:47:26 +01:00
ff4f509d26 remove kitty configuration and themes from dotfiles
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2024-12-30 13:44:22 +01:00
1a5410ec9e Merge branch 'master' of git.mvl.sh:vleeuwenmenno/dotfiles
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2024-12-30 13:42:05 +01:00
8daace9b77 adds ghostty 2024-12-30 13:38:14 +01:00
65c42118e2 add Whatsie Flatpak reference; update flake.lock for nixpkgs and hyprland; enable NTFS support in ZFS configuration
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2024-12-27 12:35:51 +01:00
ed0b0508bb Merge branch 'master' of git.mvl.sh:vleeuwenmenno/dotfiles
All checks were successful
Nix Format Check / check-format (push) Successful in 40s
2024-12-27 11:03:45 +01:00
a480aa5804 refactor hyprland configuration to use external monitors.local.conf for monitor settings 2024-12-27 11:03:42 +01:00
70d953b18c add ddrescue to home packages for data recovery 2024-12-27 11:02:45 +01:00
e767549a57 update hyprland configuration to remove 1Password window rule; update flake.lock with new revisions and hashes; modify production SSH config
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2024-12-24 14:34:21 +01:00
3d97f9b5d7 refactor hyprland configuration and add grimblast screenshot tool; improve key bindings for better usability
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2024-12-24 13:56:54 +01:00
f10988efba update flake.nix to include hyprland and its plugins for gamingpc; remove commented cosmic module configuration
All checks were successful
Nix Format Check / check-format (push) Successful in 44s
2024-12-23 18:14:32 +01:00
7a1d88476e adds hyprland wd with required stuff
All checks were successful
Nix Format Check / check-format (push) Successful in 40s
2024-12-23 14:08:09 +01:00
530fcb10c3 update flake.lock and workstation.nix for nixpkgs revisions; enable Hyprland and add kitty to system packages
Some checks failed
Nix Format Check / check-format (push) Failing after 37s
2024-12-18 10:21:02 +01:00
7d1bc11b4d update flake.lock and workstation.nix for nixpkgs revisions and clean up vscode settings
Some checks failed
Nix Format Check / check-format (push) Failing after 39s
2024-12-18 10:20:02 +01:00
554d9bf7cf add rpi-imager for Raspberry Pi OS image writing
Some checks failed
Nix Format Check / check-format (push) Failing after 37s
2024-12-13 13:31:42 +01:00
8993a09549 remove ollama package configurations
Some checks failed
Nix Format Check / check-format (push) Failing after 45s
2024-12-13 11:24:56 +01:00
1a1067b0d1 adds gparted 2024-12-13 11:24:43 +01:00
82c1d5d995 updated secrets
Some checks failed
Nix Format Check / check-format (push) Failing after 38s
Signed-off-by: Menno van Leeuwen <menno@vleeuwen.me>
2024-12-12 11:02:49 +01:00
2c04a6ef26 disable cosmic de
Some checks failed
Nix Format Check / check-format (push) Failing after 38s
2024-12-12 10:55:54 +01:00
8faab83651 comment out xanmod kernel installation in server configuration
Some checks failed
Nix Format Check / check-format (push) Failing after 53s
2024-12-11 14:58:44 +01:00
84019d2ba8 adds help function and improves parameter handling in upgrade script
Some checks failed
Nix Format Check / check-format (push) Failing after 36s
2024-12-11 14:57:58 +01:00
20a4b6b529 fixes: fulls-peed parameter detection
Some checks failed
Nix Format Check / check-format (push) Failing after 36s
2024-12-11 14:55:49 +01:00
76e9cb0371 adds swap to all devices
Some checks failed
Nix Format Check / check-format (push) Failing after 38s
adds noatime to all devices root partition mount options
adds cosmic desktop to workstations
adds xanmod kernel to workstations
adds xanmod with zfs to servers
adds perplexityai extension to brave
removes openra flatpak
adds threads limit to upgrade command to prevent system freezes
removes fcitx5 completely
2024-12-11 14:51:35 +01:00
56913879cb chore: remove obsolete local host entries from NixOS configuration
Some checks failed
Nix Format Check / check-format (push) Failing after 36s
2024-12-09 16:02:38 +01:00
a4871ba423 final touches upgrade 24.11
Some checks failed
Nix Format Check / check-format (push) Has been cancelled
2024-12-09 16:02:05 +01:00
2c0e3c746b upgrade to 24.11
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2024-11-29 18:02:30 +01:00
2cd1c77d60 chore: remove obsolete Nginx configuration and related files for personal website
All checks were successful
Nix Format Check / check-format (push) Successful in 48s
2024-11-21 23:12:31 +01:00
5cb3e5fe44 chore: update NixOS configuration to use stable NVIDIA driver package from kernelPackages
All checks were successful
Nix Format Check / check-format (push) Successful in 37s
2024-11-21 22:39:19 +01:00
c5fdac86b2 chore: update NixOS configuration to fetch unstable tarball and switch to stable NVIDIA driver package
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2024-11-21 22:34:51 +01:00
32f4717c8a chore: update NixOS configuration to use unstable NVIDIA driver package and allow unfree packages
All checks were successful
Nix Format Check / check-format (push) Successful in 36s
2024-11-21 22:33:01 +01:00
031688333e chore: update NVIDIA driver package to beta version for improved compatibility
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2024-11-21 22:27:18 +01:00
eabff41a56 refactor: streamline upgrade script and update Flutter environment variable
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2024-11-21 22:25:19 +01:00
5c73283e5f Merge branch 'master' of git.mvl.sh:vleeuwenmenno/dotfiles
All checks were successful
Nix Format Check / check-format (push) Successful in 37s
2024-11-21 16:52:13 +01:00
0b523463f2 general upgrades and adds adb and ulauncher addon 2024-11-21 16:52:06 +01:00
70335cf637 updates authorized_keys files to add new SSH key for Samsung S24U
All checks were successful
Nix Format Check / check-format (push) Successful in 39s
2024-11-18 22:32:49 +01:00
0d26f30261 adds ollama-cuda to home packages for mennos-server
All checks were successful
Nix Format Check / check-format (push) Successful in 59s
2024-11-18 22:11:29 +01:00
93b1aba78d adds nvtop for all hosts
All checks were successful
Nix Format Check / check-format (push) Successful in 1m14s
2024-11-18 21:28:34 +01:00
994d0cdedd Merge branch 'master' of git.mvl.sh:vleeuwenmenno/dotfiles
All checks were successful
Nix Format Check / check-format (push) Successful in 38s
2024-11-18 19:58:31 +01:00
4a80da3995 adds plex media player (new version) as flatpak 2024-11-18 19:58:19 +01:00
728ca39836 disables vesktop on startup, as it is causing wayland crashes on boot 2024-11-18 19:57:40 +01:00
c0ab3d1517 revert purposefully broken file gitea action works!
All checks were successful
Nix Format Check / check-format (push) Successful in 36s
2024-11-18 15:25:14 +01:00
45b90fc066 purposefully broken file to test action on gitea
Some checks failed
Nix Format Check / check-format (push) Failing after 36s
2024-11-18 15:24:29 +01:00
d3938830b6 fix: update nixfmt workflow to use 'master' branch instead of 'main'
All checks were successful
Nix Format Check / check-format (push) Successful in 36s
2024-11-18 15:23:21 +01:00
96fd886f84 fix: update nixfmt workflow to use 'main' branch and improve formatting checks 2024-11-18 15:23:08 +01:00
212050a0ee fix: update nixfmt workflow to use latest install action and change nixfmt package
Some checks failed
Nix Format Check / check-format (push) Failing after 10s
2024-11-18 15:16:41 +01:00
5a0a4a96c5 master not main
Some checks failed
Nix Format Check / check-format (push) Failing after 37s
2024-11-18 15:14:59 +01:00
48fa653027 fix: update branches for nixfmt workflow to include master 2024-11-18 15:14:04 +01:00
4da793d37c runs nixfmt 2024-11-18 15:04:20 +01:00
df08e01d9e bruh 2024-11-18 13:38:29 +01:00
b89d71cc5e fix: correct gitconfig source path for mennos-server 2024-11-18 13:36:49 +01:00
e67cfd7bfd adds additional gitconfig sources for mennos-desktop, mennos-gamingpc, and homeserver-pc 2024-11-18 13:32:06 +01:00
b7b0f11033 adds gitconfig for mennos-server to configuration 2024-11-18 13:30:41 +01:00
178bf9ebe4 adds development and subsite entries to hosts configuration 2024-11-18 13:19:48 +01:00
96ad469aed adds ncdu to home-manager packages for disk usage analysis 2024-11-16 19:25:27 +01:00
bb6545a45a updates ZFS configuration to set maximum ARC size to 20 GiB 2024-11-16 15:14:44 +01:00
b2768c334a formats boot.kernelParams for ZFS configuration to enable compressed ARC and set maximum ARC size 2024-11-16 14:55:38 +01:00
1442638609 adds smartmontools to ZFS configuration 2024-11-16 14:54:51 +01:00
2af2995b18 adds ZFS ARC maximum size parameter to configuration (16GB) 2024-11-16 14:37:42 +01:00
8a656f0d95 sets ownership and permissions for backup directory 2024-11-16 14:14:05 +01:00
f289c12223 sets ownership and permissions for backup directories 2024-11-16 14:10:29 +01:00
fb9219719d adds backup ZFS mount points to configuration 2024-11-16 14:06:15 +01:00
aef9670f74 migrates vscode configuration from common to workstation 2024-11-16 13:50:53 +01:00
9c85419950 moves vscode to common 2024-11-16 13:44:03 +01:00
fbb83102c4 adds voice chat port for Minecraft and includes it in allowedUDPPorts 2024-11-16 04:38:18 +01:00
9a395cfe07 moves shit around 2024-11-16 04:33:52 +01:00
8fc75274cd removes NAT configuration and Tailscale reverse path check from firewall settings 2024-11-16 04:21:10 +01:00
29cc346709 removes internal port definitions and iptables rules for established connections and internal traffic 2024-11-16 03:43:08 +01:00
3cb256f6e5 adds iptables rules to allow established connections, internal network traffic, and Docker communication 2024-11-16 03:08:23 +01:00
a242530770 removes DNS from allowedUDPPorts and cleans up unused iptables rules 2024-11-16 02:58:59 +01:00
08a1372f9f adds DNS to allowedUDPPorts and removes WAN access block for internal services 2024-11-16 02:57:53 +01:00
014badfa99 updates internal network traffic rules to allow access from the 192.168.86.0/24 subnet 2024-11-16 02:54:30 +01:00
a068565066 refactors firewall configuration to enhance security and internal communication rules 2024-11-16 02:53:12 +01:00
9b1ceddeb7 adds additional Docker firewall rules to enhance container communication 2024-11-16 02:48:28 +01:00
4e169b6668 updates allowedTCPPorts for internal services and adds additional firewall rules 2024-11-16 02:46:34 +01:00
7bf22e7023 refactors internal communication rules in server configuration 2024-11-16 02:26:26 +01:00
7e1a49c29e removes Qbittorrent port entry and comments out additional internal communication rules 2024-11-16 02:25:53 +01:00
238661573c adds allowedTCPPorts for Plex and Jellyfin, reorders existing ports 2024-11-16 02:21:13 +01:00
ff99e5e46f remove deprecated Docker configurations and scripts for various services 2024-11-16 02:14:44 +01:00
e6dfc2aba4 adds allowedTCPPorts for Minecraft and updates allowedTCPPorts for internal and media services 2024-11-16 02:03:20 +01:00
3b7b414394 adds allowedTCPPorts for Overseerr service 2024-11-16 01:55:58 +01:00
122 changed files with 391265 additions and 393581 deletions

12
.bashrc
View File

@@ -69,6 +69,9 @@ export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$H
# Allow unfree nixos # Allow unfree nixos
export NIXPKGS_ALLOW_UNFREE=1 export NIXPKGS_ALLOW_UNFREE=1
# Allow insecure nixpkgs
export NIXPKGS_ALLOW_INSECURE=1
# Set DOTF_HOSTNAME to the hostname from .hostname file # Set DOTF_HOSTNAME to the hostname from .hostname file
# If this file doesn't exist, use mennos-unknown-hostname # If this file doesn't exist, use mennos-unknown-hostname
export DOTF_HOSTNAME="mennos-unknown-hostname" export DOTF_HOSTNAME="mennos-unknown-hostname"
@@ -81,11 +84,8 @@ if [ -d "/home/menno/Projects/Work" ]; then
export TRADAWARE_DEVOPS=true export TRADAWARE_DEVOPS=true
fi fi
# Flutter Environment # Flutter Web and other tools that require Chrome
if [ -d "$HOME/flutter" ]; then export CHROME_EXECUTABLE=$(which brave)
export PATH="$PATH:$HOME/flutter/bin"
export CHROME_EXECUTABLE=/usr/bin/brave-browser
fi
# 1Password Source Plugin (Assuming bash compatibility) # 1Password Source Plugin (Assuming bash compatibility)
if [ -f /home/menno/.config/op/plugins.sh ]; then if [ -f /home/menno/.config/op/plugins.sh ]; then
@@ -163,5 +163,5 @@ fi
# Display a welcome message for interactive shells # Display a welcome message for interactive shells
if [ -t 1 ]; then if [ -t 1 ]; then
dotf term dotf hello
fi fi

44
.github/workflows/nixfmt.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
name: Nix Format Check
on:
pull_request:
push:
branches: [ master ]
jobs:
check-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v30
with:
extra_nix_config: |
experimental-features = nix-command flakes
- name: Install nixfmt
run: nix profile install nixpkgs#nixfmt-rfc-style
- name: Check Nix formatting
run: |
exit_code=0
while IFS= read -r file; do
if ! nixfmt "$file"; then
echo "Error: Failed to format $file"
exit_code=1
break
fi
done < <(find . -name "*.nix" -type f)
if [ $exit_code -eq 0 ]; then
if git diff --quiet; then
echo "All Nix files are properly formatted"
else
echo "Error: Some Nix files are not properly formatted"
git diff
exit 1
fi
else
exit $exit_code
fi

View File

@@ -1,14 +1,17 @@
#!/usr/bin/env bash #!/usr/bin/env bash
apps=( apps=(
spotify "spotify"
whatsapp-for-linux "whatsapp-for-linux"
telegram-desktop "telegram-desktop"
vesktop "vesktop"
trayscale "trayscale"
1password "1password"
fcitx5 "ulauncher-wrapped --no-window-shadow --hide-window"
ulauncher-wrapped "polkit-agent"
"swaync"
"nm-applet"
"blueman-applet"
) )
# check if screen has any dead sessions # check if screen has any dead sessions
@@ -18,15 +21,17 @@ fi
echo "Starting auto-start applications..." echo "Starting auto-start applications..."
for app in "${apps[@]}"; do for app in "${apps[@]}"; do
if [ -x "$(command -v $app)" ]; then app_name=$(echo $app | awk '{print $1}')
if screen -list | grep -q $app; then app_params=$(echo $app | cut -d' ' -f2-)
echo "$app is already running. Skipping..."
if [ -x "$(command -v $app_name)" ]; then
if screen -list | grep -q $app_name; then
echo "$app_name is already running. Skipping..."
continue continue
fi fi
echo "Starting $app..." echo "Starting $app_name with parameters $app_params..."
screen -dmS $app $app screen -dmS $app_name $app_name $app_params
sleep 1 sleep 1
fi fi
done done

View File

@@ -92,27 +92,28 @@ symlinks() {
done done
} }
sys_packages_upgrade() {
printfe "%s\n" "cyan" "Running NixOS channel update..."
sudo nix-channel --update
printfe "%s\n" "cyan" "Upgrading NixOS packages..."
cd $HOME/dotfiles/config/nixos && sudo nixos-rebuild switch --upgrade --flake .#$DOTF_HOSTNAME --impure
}
#################################################################################################### ####################################################################################################
# Update packages # Update packages
#################################################################################################### ####################################################################################################
sys_packages() { sys_packages() {
printfe "%s\n" "cyan" "Updating system packages..."
if [[ "$OSTYPE" == "darwin"* ]]; then if [[ "$OSTYPE" == "darwin"* ]]; then
printfe "%s\n" "cyan" "Updating brew packages..."
brew update brew update
brew upgrade brew upgrade
brew cleanup brew cleanup
else else
if [ -x "$(command -v nixos-version)" ]; then if [ -x "$(command -v nixos-version)" ]; then
cd $HOME/dotfiles/config/nixos && sudo nixos-rebuild switch --flake .#$DOTF_HOSTNAME --impure printfe "%s\n" "cyan" "Updating nix channels..."
printfe "%s" "cyan" "System channels: "
sudo -i nix-channel --update
printfe "%s" "cyan" "User channels: "
nix-channel --update
printfe "%s\n" "cyan" "Updating nixos flake..."
cd $HOME/dotfiles/config/nixos && nix --extra-experimental-features nix-command --extra-experimental-features flakes flake update
# Exit if this failed # Exit if this failed
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
@@ -121,9 +122,17 @@ sys_packages() {
return return
fi fi
if [ -x "$(command -v apt)" ]; then
printfe "%s\n" "cyan" "Updating apt packages..."
sudo nala upgrade -y sudo nala upgrade -y
sudo nala autoremove -y --purge sudo nala autoremove -y --purge
fi fi
if [ -x "$(command -v yum)" ]; then
printfe "%s\n" "cyan" "Updating yum packages..."
sudo yum update -y
fi
fi
} }
cargopkgs() { cargopkgs() {
@@ -160,15 +169,8 @@ flatpakpkgs() {
} }
homemanager() { homemanager() {
printfe "%s\n" "cyan" "Running Home Manager update..." printfe "%s\n" "cyan" "Updating Home Manager flake..."
cd $HOME/dotfiles/config/home-manager && nix --extra-experimental-features nix-command --extra-experimental-features flakes flake update
# Due to weirdness delete this file if it exists
if [ -f "$HOME/.config/mimeapps.list.backup" ]; then
echo "Removing mimeapps.list.backup"
rip "$HOME/.config/mimeapps.list.backup"
fi
cd $HOME/dotfiles/config/home-manager && NIXPKGS_ALLOW_UNFREE=1 home-manager switch -b backup --flake .#$DOTF_HOSTNAME --impure
} }
#################################################################################################### ####################################################################################################
@@ -188,9 +190,6 @@ if [ "$#" -eq 0 ]; then
else else
for arg in "$@"; do for arg in "$@"; do
case $arg in case $arg in
--nixos-upgrade)
sys_packages_upgrade
;;
--nixos|nixos|nix|nixos-rebuild) --nixos|nixos|nix|nixos-rebuild)
sys_packages sys_packages
;; ;;

72
bin/actions/upgrade.sh Executable file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/env bash
source $HOME/dotfiles/bin/helpers/functions.sh
help() {
printfe "%s\n" "green" "Usage: upgrade.sh [options]"
printfe "%s\n" "green" "Options:"
printfe "%s\n" "green" " --ha, -H Upgrade Home Manager packages."
printfe "%s\n" "green" " --nix, -X Upgrade NixOS packages."
printfe "%s\n" "green" " --full-speed, -F Upgrade packages and use all available cores for compilation. (Default: 8 cores)"
printfe "%s\n" "green" " --help, -h Display this help message."
exit 0
}
while [[ "$#" -gt 0 ]]; do
case $1 in
--ha|-H) RUN_HA=true ;;
--nix|-X) RUN_NIX=true ;;
--full-speed|-F) FULL_SPEED=true ;;
--help|-h) help ;;
*) echo "Unknown parameter passed: $1";
help ;;
esac
shift
done
if [[ -z "$RUN_HA" && -z "$RUN_NIX" ]]; then
RUN_HA=true
RUN_NIX=true
fi
# Check if --full-speed flag is passed, otherwise use --cores 8 -j 1
if [[ "$FULL_SPEED" == true ]]; then
CORES=$(nproc)
JOBS=$(nproc)
else
CORES=8
JOBS=1
fi
printfe "%s\n" "cyan" "Limiting to $CORES cores with $JOBS jobs."
if [[ "$RUN_NIX" == true ]]; then
if command -v nixos-rebuild &> /dev/null; then
printfe "%s\n" "cyan" "Upgrading NixOS packages..."
cd $HOME/dotfiles/config/nixos && sudo nixos-rebuild switch --upgrade --flake .#$DOTF_HOSTNAME --impure --cores $CORES -j $JOBS
if [[ $? -ne 0 ]]; then
printfe "%s\n" "red" "Failed to upgrade NixOS packages."
exit 1
fi
else
printfe "%s\n" "red" "Skipping nixos-rebuild, NixOS is not installed."
fi
fi
if [[ "$RUN_HA" == true ]]; then
if command -v home-manager &> /dev/null; then
printfe "%s\n" "cyan" "Cleaning old backup files..."
rm -rf $HOME/.config/mimeapps.list.backup
printfe "%s\n" "cyan" "Upgrading Home Manager packages..."
cd $HOME/dotfiles/config/home-manager && NIXPKGS_ALLOW_UNFREE=1 home-manager --extra-experimental-features nix-command --extra-experimental-features flakes switch -b backup --flake .#$DOTF_HOSTNAME --impure --cores $CORES -j $JOBS
if [[ $? -ne 0 ]]; then
printfe "%s\n" "red" "Failed to upgrade Home Manager packages."
exit 1
fi
else
printfe "%s\n" "red" "Home Manager is not installed."
exit 1
fi
fi

View File

@@ -28,8 +28,17 @@ update() {
"$update_script" $@ "$update_script" $@
} }
term() { upgrade() {
local term_script="$DOTFILES_BIN/actions/term.sh" local upgrade_script="$DOTFILES_BIN/actions/upgrade.sh"
if [[ ! -x "$upgrade_script" ]]; then
printfe "%s\n" "red" "Error: Upgrade script not found or not executable"
return 1
fi
"$upgrade_script" $@
}
hello() {
local term_script="$DOTFILES_BIN/actions/hello.sh"
if [[ ! -x "$term_script" ]]; then if [[ ! -x "$term_script" ]]; then
printfe "%s\n" "red" "Error: Terminal script not found or not executable" printfe "%s\n" "red" "Error: Terminal script not found or not executable"
return 1 return 1
@@ -114,8 +123,9 @@ main() {
# Parse commands # Parse commands
case "${1:-help}" in case "${1:-help}" in
update) shift; update "$@" ;; update) shift; update "$@" ;;
upgrade) shift; upgrade "$@" ;;
help) shift; help "$@" ;; help) shift; help "$@" ;;
term) shift; term "$@" ;; hello) shift; hello "$@" ;;
secrets) shift; secrets "$@" ;; secrets) shift; secrets "$@" ;;
auto-start) shift; auto_start "$@" ;; auto-start) shift; auto_start "$@" ;;
*) help ;; *) help ;;

View File

@@ -1,9 +1,11 @@
Usage: dotf [OPTIONS] [ARGS] Usage: dotf [OPTIONS] [ARGS]
update: Pull latest changes, and update symlinks and configurations. update: Pull latest changes, and update symlinks and configurations
Also pulls latest nix channels and updates flakes to latest versions.
upgrade: Runs switch, flake variants for nix switch with upgrade and home-manager.
secrets: Encrypt and decrypt secrets. secrets: Encrypt and decrypt secrets.
auto-start: Start a set of pre-defined applications. auto-start: Start a set of pre-defined applications.
term: Shows the welcome message for the terminal. hello: Shows the welcome message for the terminal.
help: Shows this help message help: Shows this help message

View File

@@ -1 +1 @@
/nix/store/4jqpwdf5q8rh58a9vk80r4naaz9aic6z-home-manager-files/.config/autostart/ulauncher.desktop /nix/store/b21375qzs3rbmhz9wrvyab7jljis7jc3-home-manager-files/.config/autostart/ulauncher.desktop

View File

@@ -1,10 +0,0 @@
[Desktop Entry]
Categories=Network;InstantMessaging;Chat
Exec=vesktop %U
GenericName=Internet Messenger
Icon=vesktop
Keywords=discord;vencord;electron;chat
Name=Vesktop
StartupWMClass=Vesktop
Type=Application
Version=1.4

View File

@@ -13,8 +13,11 @@ config:
# Gitconfig # Gitconfig
gitconfig: gitconfig:
sources: sources:
macos: ~/dotfiles/config/gitconfig.macos mennos-server: ~/dotfiles/config/gitconfig.mennos-server
linux: ~/dotfiles/config/gitconfig.linux mennos-desktop: ~/dotfiles/config/gitconfig.linux
mennos-gamingpc: ~/dotfiles/config/gitconfig.linux
mennos-laptop: ~/dotfiles/config/gitconfig.linux
homeserver-pc: ~/dotfiles/config/gitconfig.linux
wsl: ~/dotfiles/config/gitconfig.wsl wsl: ~/dotfiles/config/gitconfig.wsl
target: ~/.gitconfig target: ~/.gitconfig
@@ -33,11 +36,6 @@ config:
source: ~/dotfiles/vscode/settings.json source: ~/dotfiles/vscode/settings.json
target: ~/.config/Code/User/settings.json target: ~/.config/Code/User/settings.json
# Autostart
autostart:
source: ~/dotfiles/config/autostart
target: ~/.config/autostart
# SSH config # SSH config
ssh: ssh:
source: ~/dotfiles/config/ssh/config source: ~/dotfiles/config/ssh/config
@@ -56,12 +54,16 @@ config:
target: ~/.ssh/authorized_keys target: ~/.ssh/authorized_keys
chmod: 600 chmod: 600
# Ghostty config
ghostty:
source: ~/dotfiles/config/ghostty.conf
target: ~/.config/ghostty/config
# Starship config # Starship config
starship: starship:
source: ~/dotfiles/config/starship.toml source: ~/dotfiles/config/starship.toml
target: ~/.config/starship.toml target: ~/.config/starship.toml
# Packages to install # Packages to install
# Note: Uninstalling packages is not supported, if you remove a package from this list it will not be removed from the system! # Note: Uninstalling packages is not supported, if you remove a package from this list it will not be removed from the system!
# Likewise with flatpak remotes, apt repositories, etc. # Likewise with flatpak remotes, apt repositories, etc.

View File

@@ -0,0 +1,10 @@
[Flatpak Ref]
Name=com.ktechpit.whatsie
Branch=stable
Title=com.ktechpit.whatsie from flathub
IsRuntime=false
Url=https://dl.flathub.org/repo/
SuggestRemoteName=flathub
GPGKey=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
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo

View File

@@ -0,0 +1,10 @@
[Flatpak Ref]
Name=org.fedoraproject.MediaWriter
Branch=stable
Title=org.fedoraproject.MediaWriter from flathub
IsRuntime=false
Url=https://dl.flathub.org/repo/
SuggestRemoteName=flathub
GPGKey=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
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo

View File

@@ -1,7 +1,7 @@
[Flatpak Ref] [Flatpak Ref]
Name=net.openra.OpenRA Name=tv.plex.PlexDesktop
Branch=stable Branch=stable
Title=net.openra.OpenRA from flathub Title=tv.plex.PlexDesktop from flathub
IsRuntime=false IsRuntime=false
Url=https://dl.flathub.org/repo/ Url=https://dl.flathub.org/repo/
SuggestRemoteName=flathub SuggestRemoteName=flathub

25
config/ghostty.conf Normal file
View File

@@ -0,0 +1,25 @@
# Theme
# Try new themes with: `ghostty +list-themes`
theme = dark:Adwaita Dark,light:Adwaita
# Keybinds
keybind = ctrl+shift+k=clear_screen
# Font size keybinds
keybind = ctrl+zero=reset_font_size
keybind = ctrl+kp_add=increase_font_size:1
keybind = ctrl+kp_subtract=decrease_font_size:1
# Keybinds for moving windows
keybind = alt+right=next_tab
keybind = alt+left=previous_tab
keybind = shift+alt+left=move_tab:-1
keybind = shift+alt+right=move_tab:1
# Window keybinds
keybind = ctrl+q=close_window
keybind = ctrl+shift+Q=close_all_windows
# Shell integration
shell-integration = bash

View File

@@ -6,9 +6,6 @@
[gpg] [gpg]
format = ssh format = ssh
[gpg "ssh"]
program = "op-ssh-sign"
[commit] [commit]
gpgsign = true gpgsign = true

View File

@@ -0,0 +1,18 @@
[user]
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr
email = menno@vleeuwen.me
name = Menno van Leeuwen
[color]
ui = true
[push]
autoSetupRemote = true
[pull]
rebase = false
[filter "lfs"]
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
[init]
defaultBranch = main

View File

@@ -1,5 +1,62 @@
{ {
"nodes": { "nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"ghostty": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs-stable": "nixpkgs-stable",
"nixpkgs-unstable": "nixpkgs-unstable",
"zig": "zig",
"zig2nix": "zig2nix"
},
"locked": {
"lastModified": 1740954062,
"narHash": "sha256-VVsSwi1sTVCL0fijNHqw1hv/546acgxxrTAChl/K254=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "ee8ae196ee0fad3824c7ae9eac947f2128b4ae4f",
"type": "github"
},
"original": {
"owner": "ghostty-org",
"repo": "ghostty",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -7,43 +64,75 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726989464, "lastModified": 1739757849,
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", "narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", "rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.05", "ref": "release-24.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1730327045, "lastModified": 1740932899,
"narHash": "sha256-xKel5kd1AbExymxoIfQ7pgcX6hjw9jCgbiBjiUfSVJ8=", "narHash": "sha256-F0qDu2egq18M3edJwEOAE+D+VQ+yESK6YWPRQBfOqq8=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "080166c15633801df010977d9d7474b4a6c549d7", "rev": "1546c45c538633ae40b93e2d14e0bb6fd8f13347",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-24.05", "ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1738255539,
"narHash": "sha256-hP2eOqhIO/OILW+3moNWO4GtdJFYCqAe9yJZgvlCoDQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c3511a3b53b482aa7547c9d1626fd7310c1de1c5",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "release-24.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1730531603, "lastModified": 1738136902,
"narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=", "narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d", "rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable_2": {
"locked": {
"lastModified": 1741010256,
"narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -55,9 +144,79 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"ghostty": "ghostty",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable" "nixpkgs-unstable": "nixpkgs-unstable_2"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"zig": {
"inputs": {
"flake-compat": [
"ghostty"
],
"flake-utils": [
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs-stable"
]
},
"locked": {
"lastModified": 1738239110,
"narHash": "sha256-Y5i9mQ++dyIQr+zEPNy+KIbc5wjPmfllBrag3cHZgcE=",
"owner": "mitchellh",
"repo": "zig-overlay",
"rev": "1a8fb6f3a04724519436355564b95fce5e272504",
"type": "github"
},
"original": {
"owner": "mitchellh",
"repo": "zig-overlay",
"type": "github"
}
},
"zig2nix": {
"inputs": {
"flake-utils": [
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs-stable"
]
},
"locked": {
"lastModified": 1738263917,
"narHash": "sha256-j/3fwe2pEOquHabP/puljOKwAZFjIE9gXZqA91sC48M=",
"owner": "jcollie",
"repo": "zig2nix",
"rev": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a",
"type": "github"
},
"original": {
"owner": "jcollie",
"ref": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a",
"repo": "zig2nix",
"type": "github"
} }
} }
}, },

View File

@@ -2,13 +2,14 @@
description = "menno's dotfiles"; description = "menno's dotfiles";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-24.05"; url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
ghostty.url = "github:ghostty-org/ghostty";
}; };
outputs = outputs =
@@ -17,6 +18,7 @@
nixpkgs, nixpkgs,
nixpkgs-unstable, nixpkgs-unstable,
home-manager, home-manager,
ghostty,
}: }:
let let
system = "x86_64-linux"; system = "x86_64-linux";
@@ -31,11 +33,15 @@
in in
{ {
homeConfigurations = { homeConfigurations = {
"mennos-gamingpc" = home-manager.lib.homeManagerConfiguration { "mennos-desktop" = home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
modules = [ ./home.nix ]; modules = [ ./home.nix ];
extraSpecialArgs = { extraSpecialArgs = {
inherit pkgs pkgs-unstable; inherit
pkgs
pkgs-unstable
ghostty
;
isServer = false; isServer = false;
hostname = "mennos-gamingpc"; hostname = "mennos-gamingpc";
}; };
@@ -45,7 +51,10 @@
inherit pkgs; inherit pkgs;
modules = [ ./home.nix ]; modules = [ ./home.nix ];
extraSpecialArgs = { extraSpecialArgs = {
inherit pkgs pkgs-unstable; inherit
pkgs
pkgs-unstable
;
isServer = true; isServer = true;
hostname = "mennos-server"; hostname = "mennos-server";
}; };
@@ -55,7 +64,11 @@
inherit pkgs; inherit pkgs;
modules = [ ./home.nix ]; modules = [ ./home.nix ];
extraSpecialArgs = { extraSpecialArgs = {
inherit pkgs pkgs-unstable; inherit
pkgs
pkgs-unstable
ghostty
;
isServer = false; isServer = false;
hostname = "mennos-laptop"; hostname = "mennos-laptop";
}; };

View File

@@ -30,9 +30,9 @@
home = { home = {
username = "menno"; username = "menno";
homeDirectory = "/home/menno"; homeDirectory = "/home/menno";
stateVersion = "24.05"; stateVersion = "24.11";
sessionVariables = { sessionVariables = {
PATH = "${config.home.homeDirectory}/go/bin:$PATH"; # Removed extra asterisks PATH = "${config.home.homeDirectory}/go/bin:$PATH";
}; };
}; };
} }

View File

@@ -1,4 +1,4 @@
{ pkgs-unstable, ... }: { pkgs-unstable, ... }:
{ {
home.packages = with pkgs-unstable; [ ollama ]; home.packages = with pkgs-unstable; [ ];
} }

View File

@@ -1,4 +1,4 @@
{ pkgs-unstable, ... }: { pkgs-unstable, ... }:
{ {
home.packages = with pkgs-unstable; [ ollama-rocm ]; home.packages = with pkgs-unstable; [ ];
} }

View File

@@ -1,4 +1,4 @@
{ pkgs-unstable, ... }: { pkgs-unstable, ... }:
{ {
home.packages = with pkgs-unstable; [ ollama-cuda ]; home.packages = with pkgs-unstable; [ ];
} }

View File

@@ -1,27 +0,0 @@
{
config,
pkgs,
pkgs-unstable,
...
}:
{
# Ollama will be installed in the hosts/ configuration depending on what the host is of this system
# If none is registered, the fallback will be used which installs ollama without GPU acceleration support.
systemd.user.services.ollama = {
Unit = {
Description = "Ollama Service";
After = [ "network.target" ];
};
Service = {
# This resolves to for example: /home/menno/.nix-profile/bin/ollama
ExecStart = "${config.home.profileDirectory}/bin/ollama serve";
Restart = "always";
RestartSec = "10";
};
Install = {
WantedBy = [ "default.target" ];
};
};
}

View File

@@ -21,11 +21,13 @@
[ [
# General packages # General packages
git git
onefetch
gnupg gnupg
gh gh
nixfmt-rfc-style nixfmt-rfc-style
wget wget
fastfetch fastfetch
gpredict
# Package management # Package management
pipx pipx
@@ -66,6 +68,7 @@
jq # JSON processor jq # JSON processor
yq # YAML processor yq # YAML processor
xsv # CSV processor xsv # CSV processor
ncdu # Disk usage analyzer
# System monitoring and process management # System monitoring and process management
procs # Modern ps procs # Modern ps
@@ -97,6 +100,9 @@
# Editors # Editors
neovim neovim
## Neovim plugins
vimPlugins.LazyVim
nano nano
micro micro

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
home.packages = with pkgs; [ ]; home.packages = with pkgs; [ ddrescue ];
} }

View File

@@ -32,6 +32,7 @@
{ id = "fihnjjcciajhdojfnbdddfaoknhalnja"; } # I don't care about cookies { id = "fihnjjcciajhdojfnbdddfaoknhalnja"; } # I don't care about cookies
{ id = "gphhapmejobijbbhgpjhcjognlahblep"; } # gnome shell integration { id = "gphhapmejobijbbhgpjhcjognlahblep"; } # gnome shell integration
{ id = "eadndfjplgieldjbigjakmdgkmoaaaoc"; } # xdebug helper { id = "eadndfjplgieldjbigjakmdgkmoaaaoc"; } # xdebug helper
{ id = "hlgbcneanomplepojfcnclggenpcoldo"; } # perplexity ai companion
]; ];
commandLineArgs = [ ]; commandLineArgs = [ ];
}; };

View File

@@ -0,0 +1,6 @@
{ ghostty, pkgs, ... }:
{
home.packages = [
ghostty.packages.${pkgs.system}.default
];
}

View File

@@ -3,18 +3,24 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
# GUI Application # GUI Application
## Utilities ## Utilities
pkgs-unstable.mission-center # Task Manager like Windows 11 mission-center # Task Manager like Windows 11
gnome.gnome-tweaks gnome-tweaks
pinta # Paint.NET alternative pinta # Paint.NET alternative
bottles # Wine manager bottles # Wine manager
trayscale # Tray icon for Tailscale trayscale # Tray icon for Tailscale
spacedrive # Virtual filesystem manager spacedrive # Virtual filesystem manager
smile # Emoji picker smile # Emoji picker
gnome-frog # OCR tool gnome-frog # OCR tool
gnome.gnome-boxes # Virtual machine manager gnome-boxes # Virtual machine manager
deja-dup # Backup tool deja-dup # Backup tool
sqlitebrowser # SQLite database manager sqlitebrowser # SQLite database manager
wmctrl # Window manager control (Used in ulauncher) wmctrl # Window manager control (Used in ulauncher)
gparted # Used to nuke Windows off of my system
rpi-imager # Raspberry Pi OS image writer
pavucontrol # PulseAudio volume control
qrencode # qr code generator
grimblast # Screenshot tool
ptyxis # Terminal emulator
## Chat Apps ## Chat Apps
telegram-desktop telegram-desktop

View File

@@ -0,0 +1,7 @@
{ pkgs, pkgs-unstable, ... }:
{
home.packages = with pkgs; [
steamcmd
steam-tui
];
}

View File

@@ -0,0 +1,12 @@
{ config, pkgs, ... }:
{
programs.thunderbird = {
enable = true;
profiles = {
default = {
isDefault = true;
};
};
};
}

View File

@@ -16,7 +16,7 @@ let
render-on-screen = "mouse-pointer-monitor"; render-on-screen = "mouse-pointer-monitor";
show-indicator-icon = true; show-indicator-icon = true;
show-recent-apps = "4"; show-recent-apps = "4";
terminal-command = "kgx"; terminal-command = "ghostty";
theme-name = "dark"; theme-name = "dark";
}; };
@@ -26,7 +26,8 @@ let
"name" = "Google Search"; "name" = "Google Search";
"keyword" = "g"; "keyword" = "g";
"cmd" = "https://google.com/search?q=%s"; "cmd" = "https://google.com/search?q=%s";
"icon" = "/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/google-search-icon.png"; "icon" =
"/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/google-search-icon.png";
"is_default_search" = true; "is_default_search" = true;
"run_without_argument" = false; "run_without_argument" = false;
"added" = 0; "added" = 0;
@@ -36,7 +37,8 @@ let
"name" = "Stack Overflow"; "name" = "Stack Overflow";
"keyword" = "so"; "keyword" = "so";
"cmd" = "https://stackoverflow.com/search?q=%s"; "cmd" = "https://stackoverflow.com/search?q=%s";
"icon" = "/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/stackoverflow-icon.svg"; "icon" =
"/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/stackoverflow-icon.svg";
"is_default_search" = true; "is_default_search" = true;
"run_without_argument" = false; "run_without_argument" = false;
"added" = 0; "added" = 0;
@@ -108,6 +110,7 @@ in
# https://ext.ulauncher.io/-/github-tchar-ulauncher-albert-calculate-anything # https://ext.ulauncher.io/-/github-tchar-ulauncher-albert-calculate-anything
# https://ext.ulauncher.io/-/github-isacikgoz-ukill # https://ext.ulauncher.io/-/github-isacikgoz-ukill
# https://ext.ulauncher.io/-/github-iboyperson-ulauncher-system # https://ext.ulauncher.io/-/github-iboyperson-ulauncher-system
# https://github.com/IgorVaryvoda/ulauncher-perplexity
{ {
nixpkgs.overlays = [ nixpkgs.overlays = [
(final: prev: { ulauncher = prev.ulauncher.override { python3 = pythonWithPackages; }; }) (final: prev: { ulauncher = prev.ulauncher.override { python3 = pythonWithPackages; }; })
@@ -134,7 +137,8 @@ in
xdg.dataFile."applications/ulauncher.desktop".text = desktopEntry; xdg.dataFile."applications/ulauncher.desktop".text = desktopEntry;
# Enable autostart for Ulauncher # Enable autostart for Ulauncher
xdg.configFile."autostart/ulauncher.desktop".source = "${pkgs.ulauncher}/share/applications/ulauncher.desktop"; xdg.configFile."autostart/ulauncher.desktop".source =
"${pkgs.ulauncher}/share/applications/ulauncher.desktop";
# Overwrite ulauncher settings and shortcuts # Overwrite ulauncher settings and shortcuts
home.activation.ulauncher-config = lib.hm.dag.entryAfter [ "writeBoundary" ] '' home.activation.ulauncher-config = lib.hm.dag.entryAfter [ "writeBoundary" ] ''

View File

@@ -35,6 +35,14 @@
dconf = { dconf = {
enable = true; enable = true;
settings = { settings = {
# Set nemo as the default file manager and disable desktop icons since this is handled by nemo
"org/gnome/desktop/background" = {
show-desktop-icons = false;
};
"org/gnome/desktop/applications/file-manager" = {
exec = "nemo";
};
"org/gnome/desktop/interface" = { "org/gnome/desktop/interface" = {
color-scheme = "prefer-dark"; color-scheme = "prefer-dark";
}; };
@@ -50,7 +58,7 @@
"com.plexamp.Plexamp.desktop" "com.plexamp.Plexamp.desktop"
"vesktop.desktop" "vesktop.desktop"
"org.gnome.Geary.desktop" "org.gnome.Geary.desktop"
"org.gnome.Nautilus.desktop" "nemo.desktop"
"org.gnome.Console.desktop" "org.gnome.Console.desktop"
]; ];
}; };
@@ -58,7 +66,7 @@
# GNOME Terminal settings # GNOME Terminal settings
"org/gnome/Console" = { "org/gnome/Console" = {
use-system-font = false; use-system-font = false;
custom-font = "Hack Nerd Font 14"; custom-font = "Hack Nerd Font 13";
theme = "night"; theme = "night";
}; };

View File

@@ -30,7 +30,7 @@
}; };
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = { "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = {
binding = "<Ctrl><Alt>t"; binding = "<Ctrl><Alt>t";
command = "kgx"; command = "ptyxis --new-window"; # ghostty doesn't work on Fedora atm
name = "terminal"; name = "terminal";
}; };
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emotes" = { "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emotes" = {

View File

@@ -1 +0,0 @@
{ config, pkgs, ... }: { }

View File

@@ -1,6 +1,8 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
# OpenSSH server # Install xanmod kernel
# boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_stable.zfs;
services.openssh = { services.openssh = {
enable = true; enable = true;
ports = [ 400 ]; ports = [ 400 ];
@@ -16,33 +18,29 @@
}; };
}; };
# Open ports in the firewall networking = {
networking.firewall = { firewall = {
enable = true; enable = true;
# External ports
allowedTCPPorts = [ allowedTCPPorts = [
400 # SSH ## Portforwarded
80 # HTTP 80 # HTTP
443 # HTTPS 443 # HTTPS
22 # Git over SSH 22 # Git over SSH
25565 # Minecraft
24454 # Minecraft (Voice Chat)
32400 # Plex 32400 # Plex
51820 # WireGuard
# Interal services ## Internal services / TailScale
81 # Nginx Proxy Manager 400 # SSH
7788 # Sabnzbd
8085 # Qbittorrent
3030 # Gitea
# Arr services
9696 # Prowlarr
7878 # Radarr
8686 # Lidarr
8989 # Sonarr
8386 # Whisparr
8191 # Flaresolerr
]; ];
allowedUDPPorts = [ allowedUDPPorts = [
51820 # WireGuard 51820 # WireGuard
25565 # Minecraft
]; ];
}; };
};
} }

View File

@@ -1,4 +1,4 @@
{ config, pkgs, ... }: { pkgs, ... }:
{ {
# Enable the X11 windowing system. # Enable the X11 windowing system.
services.xserver.enable = true; services.xserver.enable = true;
@@ -7,7 +7,19 @@
services.xserver.displayManager.gdm.enable = true; services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true; services.xserver.desktopManager.gnome.enable = true;
environment.systemPackages = with pkgs; [ gnome3.gnome-session ]; # Enable the Cosmic Desktop Environment.
# services.desktopManager.cosmic.enable = true;
# services.displayManager.cosmic-greeter.enable = true;
# Install xanmod kernel
boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_stable;
environment.systemPackages = with pkgs; [
gnome-session
xdg-desktop-portal
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
];
# Configure keymap in X11 # Configure keymap in X11
services.xserver.xkb = { services.xserver.xkb = {
@@ -25,16 +37,6 @@
pulse.enable = true; pulse.enable = true;
}; };
# Japanese input
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-mozc
fcitx5-gtk
];
ibus.engines = with pkgs.ibus-engines; [ mozc ];
};
# Open ports in the firewall # Open ports in the firewall
networking.firewall = { networking.firewall = {
enable = true; enable = true;

View File

@@ -66,5 +66,5 @@
# this value at the release version of the first install of this system. # this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option # Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.05"; # Did you read the comment? system.stateVersion = "24.11"; # Did you read the comment?
} }

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/arr-stack/docker-compose.yml".source = ./arr-stack/docker-compose.yml;
systemd.services.arr-stack = {
description = "arr-stack Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/arr-stack/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/arr-stack/docker-compose.yml down";
WorkingDirectory = "/etc/docker/arr-stack";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,109 +0,0 @@
name: arr-stack
services:
radarr:
container_name: radarr
image: lscr.io/linuxserver/radarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
ports:
- 7878:7878
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- ./data/radarr-config:/config
- /mnt:/storage
restart: "unless-stopped"
sonarr:
image: linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- ./data/sonarr-config:/config
- /mnt:/storage
ports:
- 8989:8989
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
lidarr:
image: linuxserver/lidarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
ports:
- 8686:8686
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- ./data/lidarr-config:/config
- /mnt:/storage
restart: unless-stopped
whisparr:
image: ghcr.io/hotio/whisparr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
ports:
- 8386:8686
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- ./data/whisparr-config:/config
- /mnt:/storage
restart: unless-stopped
prowlarr:
container_name: prowlarr
image: linuxserver/prowlarr:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- ./data/prowlarr-config:/config
extra_hosts:
- host.docker.internal:host-gateway
ports:
- 9696:9696
restart: unless-stopped
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- PUID=1000
- PGID=1000
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=Europe/Amsterdam
ports:
- "8191:8191"
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
overseerr:
image: lscr.io/linuxserver/overseerr:latest
container_name: overseerr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- ./data/overseerr-config:/config
ports:
- 5555:5055
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped

View File

@@ -1,17 +0,0 @@
{ ... }:
{
imports = [ ];
}
# TODO: Import all the package modules, disabled for testing one by one.
# { config, pkgs, ... }:
# let
# files = builtins.removeAttrs (builtins.readDir ./.) [ "default.nix" ];
# # Import all other .nix files as modules
# moduleFiles = builtins.map (fname: ./. + "/${fname}") (builtins.attrNames files);
# in
# {
# # Import all the package modules
# imports = moduleFiles;
# }

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/duplicati/docker-compose.yml".source = ./duplicati/docker-compose.yml;
systemd.services.duplicati = {
description = "Duplicati Backup Server Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/duplicati/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/duplicati/docker-compose.yml down";
WorkingDirectory = "/etc/docker/duplicati";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,29 +0,0 @@
name: duplicati
services:
app:
image: lscr.io/linuxserver/duplicati:latest
environment:
- PUID=1
- PGID=1
- TZ=Europe/Amsterdam
- CLI_ARGS=
volumes:
- ./config:/config
- /mnt:/mnt
ports:
- 8200:8200
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
notifications:
image: ghcr.io/vleeuwenmenno/duplicati-discord-notification:main
ports:
- 5334:5000
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/factorio/docker-compose.yml".source = ./factorio/docker-compose.yml;
systemd.services.factorio = {
description = "Factorio Server Manager Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/factorio/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/factorio/docker-compose.yml down";
WorkingDirectory = "/etc/docker/factorio";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,31 +0,0 @@
name: factorio
services:
upnp:
image: ghcr.io/vleeuwenmenno/auto-upnp:latest
restart: unless-stopped
network_mode: host
environment:
UPNP_DURATION: 86400 # 24 hours in seconds
PORTS: |
[
{"port": 34197, "protocol": "udp"}
]
server-manager:
image: "ofsm/ofsm:latest"
container_name: "factorio-server-manager"
restart: "unless-stopped"
environment:
- PUID=1000
- PGID=1000
- "FACTORIO_VERSION=stable"
- "RCON_PASS=458fc84534"
ports:
- "5080:80"
- "34197:34197/udp"
volumes:
- "./data/fsm:/opt/fsm-data"
- "./data/saves:/opt/factorio/saves"
- "./data/mods:/opt/factorio/mods"
- "./data/config:/opt/factorio/config"
- "./data/mod_packs:/opt/fsm/mod_packs"

View File

@@ -1,20 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/gitea/docker-compose.yml".source = ./gitea/docker-compose.yml;
environment.etc."docker/gitea/act-runner-config.yaml".source = ./gitea/act-runner-config.yaml;
systemd.services.gitea = {
description = "Gitea Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/gitea/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/gitea/docker-compose.yml down";
WorkingDirectory = "/etc/docker/gitea";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,98 +0,0 @@
# Example configuration file, it's safe to copy this as the default config file without any modification.
# You don't have to copy this file to your instance,
# just run `./act_runner generate-config > config.yaml` to generate a config file.
log:
# The level of logging, can be trace, debug, info, warn, error, fatal
level: info
runner:
# Where to store the registration result.
file: .runner
# Execute how many tasks concurrently at the same time.
capacity: 1
# Extra environment variables to run jobs.
envs:
A_TEST_ENV_NAME_1: a_test_env_value_1
A_TEST_ENV_NAME_2: a_test_env_value_2
# Extra environment variables to run jobs from a file.
# It will be ignored if it's empty or the file doesn't exist.
env_file: .env
# The timeout for a job to be finished.
# Please note that the Gitea instance also has a timeout (3h by default) for the job.
# So the job could be stopped by the Gitea instance if it's timeout is shorter than this.
timeout: 3h
# Whether skip verifying the TLS certificate of the Gitea instance.
insecure: false
# The timeout for fetching the job from the Gitea instance.
fetch_timeout: 5s
# The interval for fetching the job from the Gitea instance.
fetch_interval: 2s
# The labels of a runner are used to determine which jobs the runner can run, and how to run them.
# Like: "macos-arm64:host" or "ubuntu-latest:docker://gitea/runner-images:ubuntu-latest"
# Find more images provided by Gitea at https://gitea.com/gitea/runner-images .
# If it's empty when registering, it will ask for inputting labels.
# If it's empty when execute `daemon`, will use labels in `.runner` file.
labels:
- "ubuntu-latest:docker://gitea/runner-images:ubuntu-latest"
- "ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04"
- "ubuntu-20.04:docker://gitea/runner-images:ubuntu-20.04"
cache:
# Enable cache server to use actions/cache.
enabled: true
# The directory to store the cache data.
# If it's empty, the cache data will be stored in $HOME/.cache/actcache.
dir: ""
# The host of the cache server.
# It's not for the address to listen, but the address to connect from job containers.
# So 0.0.0.0 is a bad choice, leave it empty to detect automatically.
host: ""
# The port of the cache server.
# 0 means to use a random available port.
port: 0
# The external cache server URL. Valid only when enable is true.
# If it's specified, act_runner will use this URL as the ACTIONS_CACHE_URL rather than start a server by itself.
# The URL should generally end with "/".
external_server: ""
container:
# Specifies the network to which the container will connect.
# Could be host, bridge or the name of a custom network.
# If it's empty, act_runner will create a network automatically.
network: ""
# Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker).
privileged: false
# And other options to be used when the container is started (eg, --add-host=my.gitea.url:host-gateway).
options:
# The parent directory of a job's working directory.
# NOTE: There is no need to add the first '/' of the path as act_runner will add it automatically.
# If the path starts with '/', the '/' will be trimmed.
# For example, if the parent directory is /path/to/my/dir, workdir_parent should be path/to/my/dir
# If it's empty, /workspace will be used.
workdir_parent:
# Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob
# You can specify multiple volumes. If the sequence is empty, no volumes can be mounted.
# For example, if you only allow containers to mount the `data` volume and all the json files in `/src`, you should change the config to:
# valid_volumes:
# - data
# - /src/*.json
# If you want to allow any volume, please use the following configuration:
# valid_volumes:
# - '**'
valid_volumes: []
# overrides the docker client host with the specified one.
# If it's empty, act_runner will find an available docker host automatically.
# If it's "-", act_runner will find an available docker host automatically, but the docker host won't be mounted to the job containers and service containers.
# If it's not empty or "-", the specified docker host will be used. An error will be returned if it doesn't work.
docker_host: ""
# Pull docker image(s) even if already present
force_pull: true
# Rebuild docker image(s) even if already present
force_rebuild: false
host:
# The parent directory of a job's working directory.
# If it's empty, $HOME/.cache/act/ will be used.
workdir_parent:

View File

@@ -1,62 +0,0 @@
name: gittea
services:
upnp:
image: ghcr.io/vleeuwenmenno/auto-upnp:latest
restart: unless-stopped
network_mode: host
environment:
UPNP_DURATION: 86400 # 24 hours in seconds
PORTS: |
[
{"port": 22, "protocol": "tcp"},
{"port": 22, "protocol": "udp"}
]
server:
image: gitea/gitea:latest
restart: always
environment:
- PUID=1000
- PGID=1000
volumes:
- /mnt/services/gitea/gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3030:3000"
- "22:22"
networks:
- net
postgres:
image: postgres:15-alpine
restart: always
environment:
- PUID=1000
- PGID=1000
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
volumes:
- /mnt/services/gitea/postgres:/var/lib/postgresql/data
networks:
- net
act_runner:
image: gitea/act_runner:latest
volumes:
- ./act-runner-config.yaml:/config.yaml
- /var/run/docker.sock:/var/run/docker.sock
environment:
- PUID=1000
- PGID=1000
- GITEA_INSTANCE_URL=https://git.mvl.sh
- GITEA_RUNNER_REGISTRATION_TOKEN=lIlte9POlu7aBanhCh3Xm1SPfohrexyfxqs9Yiqz
- GITEA_RUNNER_NAME=act-worker
- CONFIG_FILE=/config.yaml
restart: always
networks:
- net
networks:
net:

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/golink/docker-compose.yml".source = ./golink/docker-compose.yml;
environment.etc."docker/golink/.env".source = ./golink/.env;
systemd.services.golink = {
description = "GoLink Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/golink/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/golink/docker-compose.yml down";
WorkingDirectory = "/etc/docker/golink";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1 +0,0 @@
TS_AUTHKEY=

View File

@@ -1,11 +0,0 @@
name: golink
services:
server:
image: ghcr.io/tailscale/golink:main
environment:
- PUID=1000
- PGID=1000
- TS_AUTHKEY=${TS_AUTHKEY}
volumes:
- /mnt/services/golink:/home/nonroot
restart: "unless-stopped"

View File

@@ -1,22 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/immich/docker-compose.yml".source = ./immich/docker-compose.yml;
environment.etc."docker/immich/.env".source = ./immich/.env;
environment.etc."docker/immich/hwaccel.ml.yml".source = ./immich/hwaccel.ml.yml;
environment.etc."docker/immich/hwaccel.transcoding.yml".source = ./immich/hwaccel.transcoding.yml;
systemd.services.immich = {
description = "Immich Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/immich/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/immich/docker-compose.yml down";
WorkingDirectory = "/etc/docker/immich";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,21 +0,0 @@
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/8tb/Photos/immich-library
# The location where your database files are stored
DB_DATA_LOCATION=./data/postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
TZ=Europe/Amsterdam
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=postgres
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

View File

@@ -1,84 +0,0 @@
name: immich
services:
server:
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
extends:
file: hwaccel.transcoding.yml
service: nvenc # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
environment:
- PUID=1000
- PGID=1000
restart: always
healthcheck:
disable: false
machine-learning:
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
file: hwaccel.ml.yml
service: cuda # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
PUID: 1000
PGID: 1000
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
command:
[
'postgres',
'-c',
'shared_preload_libraries=vectors.so',
'-c',
'search_path="$$user", public, vectors',
'-c',
'logging_collector=on',
'-c',
'max_wal_size=2GB',
'-c',
'shared_buffers=512MB',
'-c',
'wal_compression=on',
]
restart: always
volumes:
model-cache:

View File

@@ -1,27 +0,0 @@
# Configurations for hardware-accelerated machine learning
# If using Unraid or another platform that doesn't allow multiple Compose files,
# you can inline the config for a backend by copying its contents
# into the immich-machine-learning service in the docker-compose.yml file.
# See https://immich.app/docs/features/ml-hardware-acceleration for info on usage.
services:
armnn:
devices:
- /dev/mali0:/dev/mali0
volumes:
- /lib/firmware/mali_csffw.bin:/lib/firmware/mali_csffw.bin:ro # Mali firmware for your chipset (not always required depending on the driver)
- /usr/lib/libmali.so:/usr/lib/libmali.so:ro # Mali driver for your chipset (always required)
cpu: {}
cuda:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu

View File

@@ -1,43 +0,0 @@
# Configurations for hardware-accelerated transcoding
# If using Unraid or another platform that doesn't allow multiple Compose files,
# you can inline the config for a backend by copying its contents
# into the immich-microservices service in the docker-compose.yml file.
# See https://immich.app/docs/features/hardware-transcoding for more info on using hardware transcoding.
services:
cpu: {}
nvenc:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu
- compute
- video
rkmpp:
security_opt: # enables full access to /sys and /proc, still far better than privileged: true
- systempaths=unconfined
- apparmor=unconfined
group_add:
- video
devices:
- /dev/rga:/dev/rga
- /dev/dri:/dev/dri
- /dev/dma_heap:/dev/dma_heap
- /dev/mpp_service:/dev/mpp_service
#- /dev/mali0:/dev/mali0 # only required to enable OpenCL-accelerated HDR -> SDR tonemapping
volumes:
#- /etc/OpenCL:/etc/OpenCL:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping
#- /usr/lib/aarch64-linux-gnu/libmali.so.1:/usr/lib/aarch64-linux-gnu/libmali.so.1:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping
vaapi:
devices:
- /dev/dri:/dev/dri

View File

@@ -1,20 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/minecraft/docker-compose.yml".source = ./minecraft/docker-compose.yml;
environment.etc."docker/minecraft/shell.sh".source = ./minecraft/shell.sh;
systemd.services.minecraft = {
description = "minecraft Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/minecraft/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/minecraft/docker-compose.yml down";
WorkingDirectory = "/etc/docker/minecraft";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,79 +0,0 @@
name: minecraft
services:
upnp:
image: ghcr.io/vleeuwenmenno/auto-upnp:latest
restart: unless-stopped
network_mode: host
environment:
UPNP_DURATION: 86400 # 24 hours in seconds
PORTS: |
[
{"port": 25565, "protocol": "tcp"},
{"port": 25565, "protocol": "udp"},
{"port": 24454, "protocol": "udp"},
{"port": 3456, "protocol": "tcp"},
{"port": 19132, "protocol": "udp"}
]
paper:
image: itzg/minecraft-server
tty: true
stdin_open: true
ports:
- "25565:25565/tcp"
- "24454:24454/udp"
- "19132:19132/udp"
- "3456:8100/tcp"
environment:
PUID: 1000
PGID: 1000
EULA: "TRUE"
TYPE: "paper"
VERSION: 1.21.1
DIFFICULTY: "hard"
SERVER_NAME: "Paper Mostly Vanilla Server"
MOTD: "Paper Server (Supports 1.20.x and newer!)"
MEMORY: "32G"
MAX_PLAYERS: 32
VIEW_DISTANCE: 32
SPAWN_MONSTERS: true
SPAWN_ANIMALS: true
ENFORCE_SECURE_PROFILE: false
PLUGINS: |
https://cdn.modrinth.com/data/Jrmoreqs/versions/Ch2Vh0XL/AdvancedBackups-spigot-1.21-3.6.3.jar
https://cdn.modrinth.com/data/9eGKb6K1/versions/tA5pALYl/voicechat-bukkit-2.5.25.jar
https://cdn.modrinth.com/data/eBqOQXoA/versions/ndMZChDv/RecoveryTotem-1.0.1.jar
https://cdn.modrinth.com/data/fALzjamp/versions/ytBhnGfO/Chunky-Bukkit-1.4.28.jar
https://cdn.modrinth.com/data/P1OZGk5p/versions/ffAFJrjN/ViaVersion-5.1.1.jar
https://cdn.modrinth.com/data/NpvuJQoq/versions/kwAAl5BS/ViaBackwards-5.1.1.jar
https://cdn.modrinth.com/data/wKkoqHrH/versions/ohEXB7mE/Geyser-Spigot.jar
https://cdn.modrinth.com/data/Vebnzrzj/versions/cfNN7sys/LuckPerms-Bukkit-5.4.145.jar
https://cdn.modrinth.com/data/swbUV1cr/versions/DB0OeC5p/bluemap-5.4-spigot.jar
OPS: |
StarDebris
WHITELIST: |
StarDebris
Audi358
TechnikTake
MsPremium
Barny_8874
Ricky_2405
KinderKiller3000
ScherzkeksMiner
PauBau
QuickWitPhil
Draxonix
Zakomi
skintsoldier122
Krank4ever
Benjilami
Barny_8847
Destination456
xKizu
restart: unless-stopped
volumes:
- /mnt/services/minecraft:/data

View File

@@ -1,2 +0,0 @@
#!/usr/bin/env bash
docker compose exec paper rcon-cli $@

View File

@@ -1,18 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/nginx-proxy-manager/docker-compose.yml".source = ./nginx-proxy-manager/docker-compose.yml;
systemd.services.nginx-proxy-manager = {
description = "nginx-proxy-manager Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/nginx-proxy-manager/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/nginx-proxy-manager/docker-compose.yml down";
WorkingDirectory = "/etc/docker/nginx-proxy-manager";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,70 +0,0 @@
name: nginx-proxy-manager
services:
upnp:
image: ghcr.io/vleeuwenmenno/auto-upnp:latest
restart: unless-stopped
network_mode: host
environment:
UPNP_DURATION: 86400 # 24 hours in seconds
PORTS: |
[
{"port": 80, "protocol": "tcp"},
{"port": 443, "protocol": "tcp"}
]
server:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
environment:
- PUID=1000
- PGID=1000
volumes:
- /mnt/services/proxy/nginx-proxy-manager/data:/data
- /mnt/services/proxy/nginx-proxy-manager/data/letsencrypt:/etc/letsencrypt
- /mnt/services/proxy/nginx/snippets:/snippets:ro
extra_hosts:
- host.docker.internal:host-gateway
authelia:
container_name: authelia
image: authelia/authelia
restart: unless-stopped
ports:
- 9091:9091
volumes:
- /mnt/services/proxy/authelia/config:/config:ro
extra_hosts:
- host.docker.internal:host-gateway
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
redis:
image: redis:alpine
container_name: redis
volumes:
- /mnt/services/proxy/redis:/data
expose:
- 6379
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
postgres:
environment:
- PUID=1000
- PGID=1000
- POSTGRES_DB=authelia
- POSTGRES_USER=authelia
- POSTGRES_PASSWORD=authelia
image: postgres:15.4-alpine
restart: unless-stopped
volumes:
- /mnt/services/proxy/postgres:/var/lib/postgresql/data

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/plex/docker-compose.yml".source = ./plex/docker-compose.yml;
systemd.services.plex = {
description = "plex Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/plex/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/plex/docker-compose.yml down";
WorkingDirectory = "/etc/docker/plex";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,39 +0,0 @@
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
- PUID=1000
- PGID=1000
- VERSION=docker
- PLEX_CLAIM=claim-sfTz4AWc_Uxhzfzz9fKS
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
volumes:
- /mnt/services/plex/plex:/config
- /mnt/movies:/movies
- /mnt/tvshows:/tvshows
- /mnt/music:/music
restart: unless-stopped
tautulli:
image: lscr.io/linuxserver/tautulli:latest
container_name: tautulli
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- /mnt/services/plex/tautulli:/config
ports:
- 8181:8181
restart: unless-stopped

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/sabnzbd/docker-compose.yml".source = ./sabnzbd/docker-compose.yml;
systemd.services.sabnzbd = {
description = "sabnzbd Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/sabnzbd/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/sabnzbd/docker-compose.yml down";
WorkingDirectory = "/etc/docker/sabnzbd";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,14 +0,0 @@
services:
sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
container_name: sabnzbd
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- /mnt/services/sabnzbd:/config
- /mnt:/storage
ports:
- 7788:8080
restart: unless-stopped

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/satisfactory/docker-compose.yml".source = ./satisfactory/docker-compose.yml;
systemd.services.satisfactory = {
description = "Satisfactory Game Server Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/satisfactory/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/satisfactory/docker-compose.yml down";
WorkingDirectory = "/etc/docker/satisfactory";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,66 +0,0 @@
name: satisfactory
services:
upnp:
image: ghcr.io/vleeuwenmenno/auto-upnp:latest
restart: unless-stopped
network_mode: host
environment:
UPNP_DURATION: 86400 # 24 hours in seconds
PORTS: |
[
{"port": 7777, "protocol": "udp"},
{"port": 15000, "protocol": "udp"},
{"port": 15777, "protocol": "udp"},
{"port": 27015, "protocol": "tcp"},
{"port": 27015, "protocol": "udp"},
{"port": 27031, "protocol": "udp"},
{"port": 27032, "protocol": "udp"},
{"port": 27033, "protocol": "udp"},
{"port": 27034, "protocol": "udp"},
{"port": 27035, "protocol": "udp"},
{"port": 27036, "protocol": "tcp"},
{"port": 27036, "protocol": "udp"}
]
server:
hostname: 'satisfactory-server'
image: 'wolveix/satisfactory-server:latest'
restart: unless-stopped
volumes:
- './data/config:/config'
- './data/certs/live/satisfactory.mvl.sh/fullchain.pem:/config/gamefiles/FactoryGame/Certificates/cert_chain.pem'
- './data/certs/live/satisfactory.mvl.sh/privkey.pem:/config/gamefiles/FactoryGame/Certificates/private_key.pem'
environment:
- PUID=1000
- PGID=1000
- MAXPLAYERS=4
- ROOTLESS=false
- STEAMBETA=false
healthcheck:
test: [ "CMD", "bash", "/healthcheck.sh" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 120s
depends_on:
certbot:
condition: service_completed_successfully
deploy:
resources:
reservations:
memory: 4G
limits:
memory: 8G
network_mode: 'host'
certbot:
image: certbot/certbot
command: certonly --standalone --non-interactive --agree-tos -m menno@vleeuwen.me -d satisfactory.mvl.sh
# Uncomment this when requesting a new certificate, make sure to disable nginx-proxy-manager first since this conflicts with port 80
# ports:
# - '80:80/tcp'
volumes:
- ./data/certs:/etc/letsencrypt
environment:
- CERTBOT_MAIL=menno@vleeuwen.me
- DOMAIN=satisfactory.mvl.sh

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/stash/docker-compose.yml".source = ./stash/docker-compose.yml;
systemd.services.stash = {
description = "stash Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/stash/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/stash/docker-compose.yml down";
WorkingDirectory = "/etc/docker/stash";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,30 +0,0 @@
services:
stash:
image: stashapp/stash:latest
container_name: stash
restart: unless-stopped
ports:
- "9999:9999"
environment:
- PUID=1000
- PGID=1000
- STASH_STASH=/data/
- STASH_GENERATED=/generated/
- STASH_METADATA=/metadata/
- STASH_CACHE=/cache/
- STASH_PORT=9999
volumes:
- /etc/localtime:/etc/localtime:ro
## Keep configs, scrapers, and plugins here.
- /mnt/services/stash/config:/root/.stash
## Point this at your collection.
- /mnt/stash:/data
## This is where your stash's metadata lives
- /mnt/services/stash/metadata:/metadata
## Any other cache content.
- /mnt/services/stash/cache:/cache
## Where to store binary blob data (scene covers, images)
- /mnt/services/stash/blobs:/blobs
## Where to store generated content (screenshots,previews,transcodes,sprites)
- /mnt/services/stash/generated:/generated

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/torrent/docker-compose.yml".source = ./torrent/docker-compose.yml;
systemd.services.torrent = {
description = "Torrent Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/torrent/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/torrent/docker-compose.yml down";
WorkingDirectory = "/etc/docker/torrent";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,37 +0,0 @@
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
network_mode: bridge
ports:
- 6881:6881
- 6881:6881/udp
- 8085:8085
volumes:
- /mnt/services/torrent/gluetun:/gluetun
environment:
- PUID=1000
- PGID=1000
- VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER}
- OPENVPN_USER=${OPENVPN_USER}
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
- SERVER_COUNTRIES=${SERVER_COUNTRIES}
restart: always
qbittorrent:
image: lscr.io/linuxserver/qbittorrent
container_name: qbittorrent
network_mode: "service:gluetun"
environment:
- PUID=1000
- PGID=1000
- WEBUI_PORT=8085
volumes:
- "/etc/localtime:/etc/localtime:ro"
- /mnt/services/torrent/qbit-config:/config
- /mnt:/storage
depends_on:
- gluetun
restart: always

View File

@@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
environment.etc."docker/wireguard/docker-compose.yml".source = ./wireguard/docker-compose.yml;
systemd.services.wireguard = {
description = "Wireguard Docker Compose Service";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/wireguard/docker-compose.yml up";
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/wireguard/docker-compose.yml down";
WorkingDirectory = "/etc/docker/wireguard";
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
}

View File

@@ -1,29 +0,0 @@
name: wireguard
services:
upnp:
image: ghcr.io/vleeuwenmenno/auto-upnp:latest
restart: unless-stopped
network_mode: host
environment:
UPNP_DURATION: 86400 # 24 hours in seconds
PORTS: |
[
{"port": 51820, "protocol": "udp"}
]
server:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=1000
- PEERS=s24,pc,laptop
volumes:
- /mnt/services/wireguard/data:/config
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped

View File

@@ -1,28 +1,80 @@
{ {
"nodes": { "nodes": {
"nixpkgs": { "flake-compat": {
"flake": false,
"locked": { "locked": {
"lastModified": 1730741070, "lastModified": 1717312683,
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", "narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
"owner": "nixos", "owner": "nix-community",
"repo": "nixpkgs", "repo": "flake-compat",
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", "rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nix-community",
"ref": "nixos-24.05", "repo": "flake-compat",
"type": "github"
}
},
"nixos-cosmic": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1741055622,
"narHash": "sha256-z1y6MSfJ9pntwJ7YCkjNyGnqvYMHMnB9kH3v5Z/g9vQ=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "f3f91440dfd18518445d9ab757cf3e540c7fd6ab",
"type": "github"
},
"original": {
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1740828860,
"narHash": "sha256-cjbHI+zUzK5CPsQZqMhE3npTyYFt9tJ3+ohcfaOF/WM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "303bd8071377433a2d8f76e684ec773d70c5b642",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1740865531,
"narHash": "sha256-h00vGIh/jxcGl8aWdfnVRD74KuLpyY3mZgMFMy7iKIc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5ef6c425980847c78a80d759abc476e941a9bf42",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1730531603, "lastModified": 1741010256,
"narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=", "narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d", "rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -32,9 +84,26 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1740932899,
"narHash": "sha256-F0qDu2egq18M3edJwEOAE+D+VQ+yESK6YWPRQBfOqq8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1546c45c538633ae40b93e2d14e0bb6fd8f13347",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs", "nixos-cosmic": "nixos-cosmic",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable" "nixpkgs-unstable": "nixpkgs-unstable"
} }
} }

View File

@@ -2,8 +2,9 @@
description = "menno's dotfiles"; description = "menno's dotfiles";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-24.05"; nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
}; };
outputs = outputs =
@@ -11,6 +12,7 @@
self, self,
nixpkgs, nixpkgs,
nixpkgs-unstable, nixpkgs-unstable,
nixos-cosmic,
}: }:
let let
system = "x86_64-linux"; system = "x86_64-linux";
@@ -35,7 +37,10 @@
./configuration.nix ./configuration.nix
]; ];
specialArgs = { specialArgs = {
inherit pkgs-unstable; inherit
pkgs-unstable
nixos-cosmic
;
isWorkstation = true; isWorkstation = true;
isServer = false; isServer = false;
}; };
@@ -49,7 +54,10 @@
./configuration.nix ./configuration.nix
]; ];
specialArgs = { specialArgs = {
inherit pkgs-unstable; inherit
pkgs-unstable
nixos-cosmic
;
isWorkstation = true; isWorkstation = true;
isServer = false; isServer = false;
}; };

View File

@@ -8,6 +8,13 @@
{ {
imports = [ /etc/nixos/hardware-configuration.nix ]; imports = [ /etc/nixos/hardware-configuration.nix ];
networking.hostName = "mennos-gamingpc"; networking.hostName = "mennos-gamingpc";
fileSystems."/" = {
device = "/dev/disk/by-uuid/ac5a70cf-4b12-4d02-b5b4-a6eddf4c40b5";
fsType = "ext4";
options = [ "noatime" ];
};
networking.interfaces.enp8s0.wakeOnLan = { networking.interfaces.enp8s0.wakeOnLan = {
enable = true; enable = true;
}; };
@@ -17,28 +24,34 @@
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
# Enable Vulkan support for AMD graphics cards # Enable Vulkan support for AMD graphics cards
hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ amdvlk ]; hardware.graphics.extraPackages32 = with pkgs.pkgsi686Linux; [ amdvlk ];
# Enable OpenGL # Swap file (Desktop PC has 48GB of RAM so 8GB swap should be enough)
hardware.opengl = { swapDevices = [
{
device = "/swapfile";
size = 8192;
}
];
# Enable graphics
hardware.graphics = {
enable = true; enable = true;
driSupport = true;
driSupport32Bit = true;
# Enable the latest AMDGPU drivers # Enable the latest AMDGPU drivers
extraPackages = with pkgs; [ extraPackages = with pkgs; [
amdvlk amdvlk
rocm-opencl-icd rocmPackages.clr
rocm-opencl-runtime
]; ];
}; };
# Add ROCm packages # Add ROCm packages and nvtop
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
rocmPackages.rocm-smi rocmPackages.rocm-smi
rocmPackages.clr rocmPackages.clr
rocmPackages.rocm-core rocmPackages.rocm-core
rocmPackages.hipcc rocmPackages.hipcc
rocmPackages.rocm-device-libs rocmPackages.rocm-device-libs
nvtopPackages.amd
]; ];
} }

View File

@@ -9,44 +9,76 @@
imports = [ /etc/nixos/hardware-configuration.nix ]; imports = [ /etc/nixos/hardware-configuration.nix ];
networking.hostName = "mennos-laptop"; networking.hostName = "mennos-laptop";
# Bootloader. fileSystems."/" = {
device = "/dev/disk/by-uuid/1356cd09-5c55-45b5-8b06-6aadc84cee37";
fsType = "ext4";
options = [ "noatime" ];
};
# Bootloader
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
# Enable OpenGL # Enable graphics
hardware.opengl.enable = true; hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
amdvlk
rocmPackages.clr
];
};
# Load nvidia driver for Xorg and Wayland # Swap file (Laptop has 32GB of RAM so 8GB swap should be enough)
services.xserver.videoDrivers = [ "nvidia" ]; swapDevices = [
{
device = "/swapfile";
size = 8192;
}
];
# Load AMD and NVIDIA drivers for Xorg and Wayland
services.xserver.videoDrivers = [
"nvidia"
"amdgpu"
];
# Monitoring tools
environment.systemPackages = with pkgs; [
nvtopPackages.nvidia
nvtopPackages.amd
glxinfo
vulkan-tools
];
hardware.nvidia = { hardware.nvidia = {
# Modesetting is required. # Enable modesetting
modesetting.enable = true; modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail. # Power management configuration
# Enable this if you have graphical corruption issues or application crashes after waking powerManagement = {
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead enable = true;
# of just the bare essentials. finegrained = false; # Disabled as it requires offload mode
powerManagement.enable = false; };
# Fine-grained power management. Turns off GPU when not in use. # Prime configuration for hybrid graphics
# Experimental and only works on modern Nvidia GPUs (Turing or newer). prime = {
powerManagement.finegrained = false; offload = {
enable = true;
enableOffloadCmd = true;
};
# AMD GPU as primary
amdgpuBusId = "PCI:5:0:0";
nvidiaBusId = "PCI:1:0:0";
};
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false; open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true; nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
}; };
boot.kernelParams = [
"amdgpu.sg_display=0"
"nvidia-drm.modeset=1"
];
} }

View File

@@ -10,6 +10,13 @@
/etc/nixos/hardware-configuration.nix /etc/nixos/hardware-configuration.nix
./mennos-server/zfs.nix ./mennos-server/zfs.nix
]; ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/dd3fa13c-a1bd-4dc9-bcb4-aee17c7f12d1";
fsType = "ext4";
options = [ "noatime" ];
};
networking.hostName = "mennos-server"; networking.hostName = "mennos-server";
networking.hostId = "64519940"; networking.hostId = "64519940";
@@ -17,15 +24,17 @@
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Load nvidia driver for Xorg and Wayland # Load nvidia driver for Xorg and Wayland
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = [ "nvidia" ];
# Enable oepngl and 32-bit support # Enable graphics
hardware.opengl = { hardware.graphics.enable = true;
enable = true;
driSupport = true; # nvtop, a system monitor for GPUs
driSupport32Bit = true; environment.systemPackages = with pkgs; [ nvtopPackages.nvidia ];
};
# Enable NVIDIA Docker support # Enable NVIDIA Docker support
# test with: $ docker run --rm -it --device=nvidia.com/gpu=all ubuntu:latest nvidia-smi # test with: $ docker run --rm -it --device=nvidia.com/gpu=all ubuntu:latest nvidia-smi
@@ -34,34 +43,22 @@
enable = true; enable = true;
}; };
# Swap file (Laptop has 64GB of RAM so 16GB swap should be enough)
swapDevices = [
{
device = "/swapfile";
size = 16384;
}
];
hardware.nvidia = { hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true; modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
# Enable this if you have graphical corruption issues or application crashes after waking
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
# of just the bare essentials.
powerManagement.enable = false; powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false; powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false; open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true; nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU. # Use the latest driver from the unstable channel
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
}; };
} }

View File

@@ -18,6 +18,13 @@ let
chmod 755 /mnt/services/proxy chmod 755 /mnt/services/proxy
chmod 755 /mnt/services/static-websites chmod 755 /mnt/services/static-websites
chown menno:users /mnt/backups
chown menno:users /mnt/backups/photos
chown menno:users /mnt/backups/services
chmod 775 /mnt/backups
chmod 775 /mnt/backups/photos
chmod 775 /mnt/backups/services
# Set permissions for other mount points # Set permissions for other mount points
for dir in /mnt/{ai,astrophotography,audiobooks,downloads,ISOs,movies,music,old_backups,photos,stash,tvshows,VMs}; do for dir in /mnt/{ai,astrophotography,audiobooks,downloads,ISOs,movies,music,old_backups,photos,stash,tvshows,VMs}; do
chmod 755 "$dir" chmod 755 "$dir"
@@ -30,6 +37,7 @@ in
zfs zfs
zfstools zfstools
permissionsScript permissionsScript
smartmontools
]; ];
# Add the permissions service # Add the permissions service
@@ -52,7 +60,10 @@ in
}; };
# Enable ZFS support # Enable ZFS support
boot.supportedFilesystems = [ "zfs" ]; boot.supportedFilesystems = [
"ntfs"
"zfs"
];
# ZFS system services # ZFS system services
services.zfs = { services.zfs = {
@@ -63,9 +74,23 @@ in
}; };
# If you want to keep compression settings # If you want to keep compression settings
boot.kernelParams = [ "zfs.zfs_compressed_arc_enabled=1" ]; boot.kernelParams = [
"zfs.zfs_compressed_arc_enabled=1" # Enable compressed ARC
"zfs.zfs_arc_max=21474836480" # 20 GiB
];
fileSystems = { fileSystems = {
# backup ZFS mount points
"/mnt/backups/photos" = {
device = "backup/photos-duplicati";
fsType = "zfs";
};
"/mnt/backups/services" = {
device = "backup/services-duplicati";
fsType = "zfs";
};
# datapool ZFS mount points
"/mnt/ai" = { "/mnt/ai" = {
device = "datapool/ai"; device = "datapool/ai";
fsType = "zfs"; fsType = "zfs";

View File

@@ -1,15 +1,15 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
let
files = builtins.removeAttrs (builtins.readDir ./.) [
"default.nix"
"mennovanleeuwen.nl"
];
# Import all other .nix files as modules
moduleFiles = builtins.map (fname: ./. + "/${fname}") (builtins.attrNames files);
in
{ {
# Import all the package modules # Import all the package modules
imports = moduleFiles; imports = [
./juicefs.nix
];
# Enable JuiceFS
services.juicefsCustom = {
enable = true;
redisUrl = "redis://:your-redis-password@localhost:6379/0";
mountPoint = "/mnt/object_storage";
cacheDir = "/var/jfsCache";
};
} }

View File

@@ -0,0 +1,97 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.services.juicefsCustom;
in {
options.services.juicefsCustom = {
enable = mkEnableOption "JuiceFS custom mount service";
mountPoint = mkOption {
type = types.str;
default = "/mnt/object_storage";
description = "Directory where JuiceFS should mount the filesystem";
};
cacheDir = mkOption {
type = types.str;
default = "/var/jfsCache";
description = "Directory for JuiceFS cache";
};
cacheSize = mkOption {
type = types.int;
default = 204800;
description = "Cache size in MiB";
};
redisUrl = mkOption {
type = types.str;
default = "redis://:PASSWORD@localhost:6379/0";
description = "Redis URL for metadata storage (replace PASSWORD with actual password)";
};
bufferSize = mkOption {
type = types.int;
default = 1024;
description = "Buffer size in MiB";
};
prefetch = mkOption {
type = types.int;
default = 4;
description = "Prefetch size";
};
attrCache = mkOption {
type = types.int;
default = 3;
description = "Attribute cache expiration time in seconds";
};
entryCache = mkOption {
type = types.int;
default = 3;
description = "Entry cache expiration time in seconds";
};
openCache = mkOption {
type = types.int;
default = 3;
description = "Open file cache expiration time in seconds";
};
};
config = mkIf cfg.enable {
# Install JuiceFS package
environment.systemPackages = [ pkgs.juicefs ];
# Create the mount and cache directories
systemd.tmpfiles.rules = [
"d ${cfg.mountPoint} 0755 root root -"
"d ${cfg.cacheDir} 0755 root root -"
];
# Add the JuiceFS systemd service
systemd.services.juicefs = {
description = "JuiceFS Mount Service";
wantedBy = [ "multi-user.target" ];
before = [ "docker.service" ];
after = [ "network.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.juicefs}/bin/juicefs mount ${cfg.redisUrl} ${cfg.mountPoint} "
+ "--cache-dir=${cfg.cacheDir} "
+ "--buffer-size=${toString cfg.bufferSize} "
+ "--prefetch=${toString cfg.prefetch} "
+ "--cache-size=${toString cfg.cacheSize} "
+ "--attr-cache=${toString cfg.attrCache} "
+ "--entry-cache=${toString cfg.entryCache} "
+ "--open-cache=${toString cfg.openCache}";
Restart = "on-failure";
};
};
};
}

View File

@@ -1 +0,0 @@
dist/

View File

@@ -1,12 +0,0 @@
build:
cd ../; docker compose down;
rm -rf dist/
mkdir dist
pandoc index.md --template=template.html --metadata title="Resume - Menno Cornelis van Leeuwen" -o dist/index.html
pandoc index.md -o dist/index.pdf
mkdir dist/css/
cp css/stylesheet.css dist/css/stylesheet.css
cd ../; docker compose up -d;

View File

@@ -1,84 +0,0 @@
# Menno Cornelis van Leeuwen
## Contact Information
**Location:** Reguliersdwarsstraat 12A, 1947 GG, Beverwijk
**Phone:** +31 (06) 499-351-79
**Email:** menno@vleeuwen.me
**LinkedIn:** [linkedin.com/in/menno-v-44477b176/](https://www.linkedin.com/in/menno-v-44477b176/)
**GitHub:** [github.com/vleeuwenmenno](https://github.com/vleeuwenmenno)
## Summary
An enthusiastic software engineer who likes to learn new things and discover new oppertunities. Experienced in programming in Flutter, Dart, PHP and C#.
Although my current language of choice is Dart with the Flutter framework but I am open to anything to see what is beyond my horizon.
Aside from that I am also experienced in building, maintaining and repairing computer systems and networks.
## Skills
- **Programming Languages:** C# .NET, Flutter, Dart, PHP, Laravel
- **Tools & Technologies:** Git, Docker, Provider (Flutter), VS Code, Rider, PHP Storm
- **Methodologies:** Agile/Scrum, Object-Oriented Programming
## Experience
### **Software Engineer | Sandwave / Your.Online (Formerly TWS) | Nov 2021 Present**
- Worked in an agile/scrum environment, sparred with smaller teams.
- Implemented complex authentication flows with modern security practices.
- Guarded the dependencies
### **.NET / PHP Developer | Minty Media | Nov 2020 Oct-2021**
- Implemented API bridges between Bol.com and WooCommerce
- Setup CI/CD pipelines to streamline testing and deployment of applications
- Started the development of a full hosting panel solution including DNS Editor, Domain purchasing, VPS Options etc.
### **Flutter Developer | Bots.io (Formerly RevenYOU) | Mar 2019 Oct-2019**
- Spearheaded the development of the Bots.io App, with now more than 1M+ downloads.
- Implemented the skeleton of the app and sparred with UI designers to make it the best it can be.
### **All Round/Repair Technician/Sales | Com Today | Jan 2014 Mar 2019**
- Developed an in-house cashier program in PHP to track sales, expenses, stock and ongoing tasks.
- Worked on repairing computers, laptops, phones, and anything in between.
- Maintained stock, sold new systems to customers, and assisted customers with technical support.
## Education
### **MBO 4 Application & Media developer | Nova College in Beverwijk | Aug 2015 May 2019**
- Working with scrum/agile methodologies.
- Improved my existing self-thought knowledge in Object-oriented programming and design patterns.
- Using version control to manage code with Git and Subversion.
### **MBO 2 Occupation IT Employee | Nova College in Beverwijk | 2012 2014**
- Building, diagnosing and repairing computers.
- Completed multiple Cisco and Aries courses related to networking and computer technologies.
## Hobbies
- Astrophotography & image processing
- Beautiful photos of galaxies, nebula and star fields.
- Take a look at [astrobin.com/users/vleeuwenmenno](https://www.astrobin.com/users/vleeuwenmenno/) for my best work.
- Learning about cultures & languages while travelling
- Trying to go outside my comfort zone and speak another language while learning about their cultures.
- Creating endless programming test projects
- That sometimes evolve into something more
- FPV Freestyle Drones & Cinematic
- Building, flying and of course crashing drones, usually in the summer.
## References
Available upon request.

View File

@@ -1,13 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Resume - Menno Cornelis van Leeuwen</title>
<link rel="stylesheet" href="/css/stylesheet.css" />
</head>
<body class="stackedit">
<div class="stackedit__html">$body$</div>
</body>
</html>

View File

@@ -1,13 +0,0 @@
{ pkgs, ... }:
{
# Resume/CV Website (Nginx)
# services.nginx = {
# enable = true;
# virtualHosts."localhost:4203" = {
# root = "/home/menno/dotfiles/config/nixos/packages/server/mennovanleeuwen.nl";
# locations."/" = {
# index = "index.html";
# };
# };
# };
}

View File

@@ -2,9 +2,7 @@
{ {
# Import all the package modules # Import all the package modules
imports = [ imports = [
./1password.nix
./flatpak.nix ./flatpak.nix
./steam.nix ./1password.nix
./pano.nix
]; ];
} }

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: { { pkgs, ... }:
{
services.flatpak.enable = true; services.flatpak.enable = true;
systemd.services.flatpak-repo = { systemd.services.flatpak-repo = {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];

View File

@@ -1,10 +0,0 @@
{
config,
lib,
pkgs,
...
}:
{
environment.systemPackages = [ (pkgs.callPackage ./pano { }) ];
}

View File

@@ -1,60 +0,0 @@
{
stdenv,
fetchzip,
lib,
gnome,
glib,
libgda,
gsound,
substituteAll,
wrapGAppsHook,
}:
stdenv.mkDerivation rec {
pname = "gnome-shell-extension-pano";
version = "v23-alpha3";
src = fetchzip {
url = "https://github.com/oae/gnome-shell-pano/releases/download/${version}/pano@elhan.io.zip";
sha256 = "LYpxsl/PC8hwz0ZdH5cDdSZPRmkniBPUCqHQxB4KNhc=";
stripRoot = false;
};
patches = [
(substituteAll {
src = ./gnome-shell-extension-pano.patch;
gsound_path = "${gsound}/lib/girepository-1.0";
gda_path = "${libgda}/lib/girepository-1.0";
})
];
buildInputs = [
gnome.gnome-shell
libgda
gsound
];
nativeBuildInputs = [ wrapGAppsHook ];
installPhase = ''
runHook preInstall
local_ext_dir=$out/share/gnome-shell/extensions/pano@elhan.io
install -d $local_ext_dir
cp -r * $local_ext_dir
# Ensure typelibs are directly accessible
mkdir -p $out/lib/girepository-1.0
ln -s ${gsound}/lib/girepository-1.0/* $out/lib/girepository-1.0/
ln -s ${libgda}/lib/girepository-1.0/* $out/lib/girepository-1.0/
runHook postInstall
'';
meta = with lib; {
description = "Pano GNOME Shell Clipboard Management Extension (${version} pre-release)";
homepage = "https://github.com/oae/gnome-shell-pano";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.zvictor ];
};
}

View File

@@ -1,10 +0,0 @@
--- a/extension.js
+++ b/extension.js
@@ -1,3 +1,7 @@
+import GIRepository from 'gi://GIRepository';
+GIRepository.Repository.prepend_search_path('@gda_path@');
+GIRepository.Repository.prepend_search_path('@gsound_path@');
+
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
import * as extension_js from 'resource:///org/gnome/shell/extensions/extension.js';

View File

@@ -1,13 +0,0 @@
# In your configuration.nix
{ config, pkgs, ... }:
{
programs.steam = {
enable = true;
# Open ports in the firewall for Steam Remote Play
remotePlay.openFirewall = true;
# Open ports in the firewall for Source Dedicated Server
dedicatedServer.openFirewall = true;
# Open ports in the firewall for Steam Local Network Game Transfers
localNetworkGameTransfers.openFirewall = true;
};
}

View File

@@ -14,6 +14,8 @@
"video" "video"
"render" "render"
"users" "users"
"input"
"adbusers"
]; ];
}; };
} }

View File

@@ -1,2 +1,8 @@
# This is the authrorized_keys file for the user mennos-laptop # This is the authrorized_keys file for the user mennos-laptop
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr
# Samsung S24U
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSJwfqOZQxGDbM07JziQeBNirvQxhFd6nEwWPjy1zCo u0_a555@localhost
# Menno's 2025 SSH Key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Hfx8wgkc57TXX1TCMHcNrCdjbfog5QeHFJfl7IeD mennos-2025-sshkey

View File

@@ -1,2 +1,8 @@
# This is the authrorized_keys file for the user mennos-gamingpc # This is the authrorized_keys file for the user mennos-laptop
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr
# Samsung S24U
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSJwfqOZQxGDbM07JziQeBNirvQxhFd6nEwWPjy1zCo u0_a555@localhost
# Menno's 2025 SSH Key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Hfx8wgkc57TXX1TCMHcNrCdjbfog5QeHFJfl7IeD mennos-2025-sshkey

View File

@@ -1,2 +1,8 @@
# This is the authrorized_keys file for the user mennos-laptop # This is the authrorized_keys file for the user mennos-laptop
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr
# Samsung S24U
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSJwfqOZQxGDbM07JziQeBNirvQxhFd6nEwWPjy1zCo u0_a555@localhost
# Menno's 2025 SSH Key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Hfx8wgkc57TXX1TCMHcNrCdjbfog5QeHFJfl7IeD mennos-2025-sshkey

View File

@@ -1,2 +1,8 @@
# This is the authrorized_keys file for the user mennos-server # This is the authrorized_keys file for the user mennos-laptop
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr
# Samsung S24U
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSJwfqOZQxGDbM07JziQeBNirvQxhFd6nEwWPjy1zCo u0_a555@localhost
# Menno's 2025 SSH Key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Hfx8wgkc57TXX1TCMHcNrCdjbfog5QeHFJfl7IeD mennos-2025-sshkey

View File

@@ -1,9 +1,9 @@
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
jA0ECQMIdzswSvGKIFj/0sAIAc0IMa6q0CiEqk/RjpEaea0RpVSxKL8v/E0HyqiC jA0ECQMIyS/QhVzk8iz/0sAIAYCHd2CTLa3u1Ajj4oj7tqJivyB2moggjt7f0uep
nZBGvcaadZ+uQ/Ndxk3WfehTYuXWZk9gotfoQ91TrvMcCNt0ag6sMdVLHtEzoXWF qpah5aM35C/BnzMVRkg6CBWbMFhBRYlRaJ7oyQMPlq/OAtDuk4heXhQfqN24PEEb
93wn4UDc9kv56mfU+JnSK5Rv6euXhZ8ZapEqFIvmh7kGkX/nwTJFNU/f6jz0yhaw X5SzXFaTtW01HIHy2JNaVaz7qU4RsRctayjPe6jBKfkDrxbLpKtUf1ETNuwqgMOR
uu/pa9b9NFpIH7IoelJ2SzJMX3ZhX5aVcY0ojOEvlfRxOGdsOxUK2Ifd9MWV9Tyd pyZjgoBO6Wo2DUkeq3cku95ejsX/63XXnTKW0CXwVdvolo7OzdBIfNsiSMTnvnr5
Sgsa3uFFcL4STwXNq6umwlfkk/SOqtq5WAA= s1jFbGH7K3QOz7FcSyanG4gK+z3x6Njaduc=
=Zo/k =tmo1
-----END PGP MESSAGE----- -----END PGP MESSAGE-----

View File

@@ -1,8 +1,9 @@
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
jA0ECQMI5RidcMTcDnv/0pAB3EfRm5WT3Niz66zAHGrokTLfnp+yZ7BN6Tt3I6M1 jA0ECQMI3rCkM4WCKnn/0sASAQjifcMA4M5hjwkP8dZXxah9d8g8YeofFTPLgPMm
wGWBBCY11yJZ5WcD2h4jSdqJhdxsa2TJPKnUvkn4A2to1KMDpq72U4yzMfGc99K6 zUR7BcyuniGeHkdkPhVIPDU9ea8BB6JVgldGNeHOh0Rj+OdO95RzPkC4VyGlhVC7
tP9E6FiktACZQGlUaPVZe/Ut15jHSUEo894tso7XG/dWxqKbVMEjzMjwwC6WxJK1 qoDdy+QQUOVImgEjbNLSOD3VKJzYQMfcmF2X6yZ0TpfOeHZyOmaVXQU+hdIl2g9r
fd5WM2bor0fY9K9zMIOweCo= zJjzKh2Ukp0VAF+1mp6mcU3fKhwJyffxF1491ExXYM80q1+S247/zLgU1/nQi/u5
=2wZs cX1cV14qi/nFQdmuNlNjahusvSpVtkhsa8TYMRyDP9rr+WdQ
=an0w
-----END PGP MESSAGE----- -----END PGP MESSAGE-----

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