Compare commits
216 Commits
8b13a2995f
...
legacy
| Author | SHA1 | Date | |
|---|---|---|---|
|
18913b9120
|
|||
|
49d0088595
|
|||
|
c2adf02a55
|
|||
|
|
60bfa228e6 | ||
|
4e28e5cbb0
|
|||
|
68943b57ee
|
|||
|
733be4c7c8
|
|||
|
a0245017f7
|
|||
|
5803376722
|
|||
|
a3f2b7d759
|
|||
|
0747d2a784
|
|||
|
852c5ebef8
|
|||
|
783d1bac25
|
|||
|
325310c1ca
|
|||
|
1db4d0c49b
|
|||
|
4d20f2d7a6
|
|||
|
bbd3198976
|
|||
|
d48a3d3925
|
|||
|
c11c4e7482
|
|||
|
e06b93215f
|
|||
|
041307aaea
|
|||
|
1d0ef3d31e
|
|||
|
206cbfb564
|
|||
|
bc85c85592
|
|||
|
569e9698f7
|
|||
|
8eabebb9e8
|
|||
|
58bd63a4c7
|
|||
|
0db42dfcbc
|
|||
|
9236bf36f1
|
|||
|
4fab06b82b
|
|||
|
b5775fd29b
|
|||
|
135c08eda0
|
|||
|
938ab8e83b
|
|||
|
dfff773f7e
|
|||
|
df66535bf1
|
|||
|
b5e2bb933f
|
|||
|
f3e07bad16
|
|||
|
ff4f509d26
|
|||
|
1a5410ec9e
|
|||
|
8daace9b77
|
|||
|
65c42118e2
|
|||
|
ed0b0508bb
|
|||
|
a480aa5804
|
|||
|
70d953b18c
|
|||
|
e767549a57
|
|||
|
3d97f9b5d7
|
|||
|
f10988efba
|
|||
|
7a1d88476e
|
|||
|
530fcb10c3
|
|||
|
7d1bc11b4d
|
|||
|
554d9bf7cf
|
|||
|
8993a09549
|
|||
|
1a1067b0d1
|
|||
|
82c1d5d995
|
|||
|
2c04a6ef26
|
|||
|
8faab83651
|
|||
|
84019d2ba8
|
|||
|
20a4b6b529
|
|||
|
76e9cb0371
|
|||
|
56913879cb
|
|||
|
a4871ba423
|
|||
|
2c0e3c746b
|
|||
|
2cd1c77d60
|
|||
|
5cb3e5fe44
|
|||
|
c5fdac86b2
|
|||
|
32f4717c8a
|
|||
|
031688333e
|
|||
|
eabff41a56
|
|||
|
5c73283e5f
|
|||
|
0b523463f2
|
|||
|
70335cf637
|
|||
|
0d26f30261
|
|||
|
93b1aba78d
|
|||
|
994d0cdedd
|
|||
|
4a80da3995
|
|||
|
728ca39836
|
|||
|
c0ab3d1517
|
|||
|
45b90fc066
|
|||
|
d3938830b6
|
|||
|
96fd886f84
|
|||
|
212050a0ee
|
|||
|
5a0a4a96c5
|
|||
|
48fa653027
|
|||
|
4da793d37c
|
|||
|
df08e01d9e
|
|||
|
b89d71cc5e
|
|||
|
e67cfd7bfd
|
|||
|
b7b0f11033
|
|||
|
178bf9ebe4
|
|||
|
96ad469aed
|
|||
|
bb6545a45a
|
|||
|
b2768c334a
|
|||
|
1442638609
|
|||
|
2af2995b18
|
|||
|
8a656f0d95
|
|||
|
f289c12223
|
|||
|
fb9219719d
|
|||
|
aef9670f74
|
|||
|
9c85419950
|
|||
|
fbb83102c4
|
|||
|
9a395cfe07
|
|||
|
8fc75274cd
|
|||
|
29cc346709
|
|||
|
3cb256f6e5
|
|||
|
a242530770
|
|||
|
08a1372f9f
|
|||
|
014badfa99
|
|||
|
a068565066
|
|||
|
9b1ceddeb7
|
|||
|
4e169b6668
|
|||
|
7bf22e7023
|
|||
|
7e1a49c29e
|
|||
|
238661573c
|
|||
|
ff99e5e46f
|
|||
|
e6dfc2aba4
|
|||
|
3b7b414394
|
|||
|
c3f433cc3d
|
|||
|
e8ed942906
|
|||
|
45cdd53f0d
|
|||
|
974a0328fc
|
|||
|
7d64801ae2
|
|||
|
09ad59d3c5
|
|||
|
b8adf7b200
|
|||
|
f1e00e4038
|
|||
|
9235298118
|
|||
|
e3f0493630
|
|||
|
0270ac41bd
|
|||
|
1e73386dca
|
|||
|
db89a244b0
|
|||
|
945196c8e0
|
|||
|
bbe516f998
|
|||
|
04c7850e6e
|
|||
|
9fbd69a25a
|
|||
|
9bd4259cf2
|
|||
|
39a62a239d
|
|||
|
6eeace47ec
|
|||
|
4c283bf58d
|
|||
|
2b07a58d7b
|
|||
|
3433cce92b
|
|||
|
1937bd9acf
|
|||
|
9339d653c2
|
|||
|
0483ac9a8d
|
|||
|
1c56aea8fb
|
|||
|
e546ecea9a
|
|||
|
8fde290f40
|
|||
|
9e38b4f794
|
|||
|
7fb331c404
|
|||
|
5d1fe879dd
|
|||
|
e75263b16e
|
|||
|
28422d460a
|
|||
|
25a070124d
|
|||
|
150847cbd8
|
|||
|
0af32e52ed
|
|||
|
4d6e69e9d0
|
|||
|
df06f221b8
|
|||
|
e719b0e693
|
|||
|
77b84107f6
|
|||
|
0a961ec53f
|
|||
|
d68fba4ba3
|
|||
|
93517fbf79
|
|||
|
0e619da207
|
|||
|
cc7686668c
|
|||
|
0c92e38370
|
|||
|
60f0ab11bd
|
|||
|
8638652839
|
|||
|
5f83cf2e6d
|
|||
|
5907d7a4e8
|
|||
|
9cc0e5f7c3
|
|||
|
ce299365c9
|
|||
|
6bb22de9ce
|
|||
|
e83ebe2d2c
|
|||
|
a439ccc355
|
|||
|
94f2acb15c
|
|||
|
41b8417d4e
|
|||
|
a26038b47a
|
|||
|
042826cd4f
|
|||
|
9c18261ef4
|
|||
|
5be84404a5
|
|||
|
857225c049
|
|||
|
91d68a507c
|
|||
|
6f08b3ebb2
|
|||
|
803843bc24
|
|||
|
6d0d2a2ca9
|
|||
|
35cf0d53b7
|
|||
|
c9feb3d7bf
|
|||
|
88fe75b7e0
|
|||
|
b12fa46ea1
|
|||
| cb1a45a54e | |||
|
90fe3c8554
|
|||
|
58ba701f1f
|
|||
|
a3f2a17dbe
|
|||
|
13c2365b7b
|
|||
|
32ce39cb21
|
|||
|
68856dd2b5
|
|||
|
536b5f2e0b
|
|||
|
272aac9a94
|
|||
|
63dd78c557
|
|||
|
b44457af3a
|
|||
|
f038bcaa61
|
|||
|
00f647074d
|
|||
|
4926ae8cc0
|
|||
|
b13cb3ff0e
|
|||
|
0b8a5a150d
|
|||
|
dfc68c275a
|
|||
|
792af5e4c6
|
|||
|
7ba5ab2067
|
|||
|
36cb9bbb42
|
|||
|
73013b36d0
|
|||
|
2a795cd19e
|
|||
|
f6409db279
|
|||
|
0520961390
|
|||
|
576f141889
|
|||
|
f4f9d0b790
|
|||
|
60f8f6ae78
|
|||
|
8822d5ea5d
|
|||
|
ccec538346
|
22
.bashrc
22
.bashrc
@@ -18,7 +18,7 @@ alias la='l -a'
|
||||
alias cat='bat'
|
||||
alias du='dust'
|
||||
alias df='duf'
|
||||
alias rm="echo Use 'rip' instead of rm."
|
||||
alias rm="trash-put"
|
||||
|
||||
# Docker Aliases
|
||||
alias d='docker'
|
||||
@@ -69,6 +69,9 @@ export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$H
|
||||
# Allow unfree nixos
|
||||
export NIXPKGS_ALLOW_UNFREE=1
|
||||
|
||||
# Allow insecure nixpkgs
|
||||
export NIXPKGS_ALLOW_INSECURE=1
|
||||
|
||||
# Set DOTF_HOSTNAME to the hostname from .hostname file
|
||||
# If this file doesn't exist, use mennos-unknown-hostname
|
||||
export DOTF_HOSTNAME="mennos-unknown-hostname"
|
||||
@@ -81,18 +84,8 @@ if [ -d "/home/menno/Projects/Work" ]; then
|
||||
export TRADAWARE_DEVOPS=true
|
||||
fi
|
||||
|
||||
# pyenv Configuration
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
if [[ -d $PYENV_ROOT/bin ]]; then
|
||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
eval "$(pyenv init --path)"
|
||||
fi
|
||||
|
||||
# Flutter Environment
|
||||
if [ -d "$HOME/flutter" ]; then
|
||||
export PATH="$PATH:$HOME/flutter/bin"
|
||||
export CHROME_EXECUTABLE=/usr/bin/brave-browser
|
||||
fi
|
||||
# Flutter Web and other tools that require Chrome
|
||||
export CHROME_EXECUTABLE=$(which brave)
|
||||
|
||||
# 1Password Source Plugin (Assuming bash compatibility)
|
||||
if [ -f /home/menno/.config/op/plugins.sh ]; then
|
||||
@@ -142,6 +135,7 @@ launch_zellij_conditionally() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Disabled for now, I don't like the way it behaves but I don't want to remove it either
|
||||
# launch_zellij_conditionally
|
||||
|
||||
# Source ble.sh if it exists
|
||||
@@ -169,5 +163,5 @@ fi
|
||||
|
||||
# Display a welcome message for interactive shells
|
||||
if [ -t 1 ]; then
|
||||
dotf term
|
||||
dotf hello
|
||||
fi
|
||||
|
||||
44
.github/workflows/nixfmt.yml
vendored
Normal file
44
.github/workflows/nixfmt.yml
vendored
Normal 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
|
||||
32
README.md
32
README.md
@@ -14,26 +14,18 @@ I'd recommend getting the GNOME version as it's easier to setup and you can sele
|
||||
|
||||
### 1. Clone dotfiles to home directory
|
||||
|
||||
Clone the repository to your home directory, you can do this by opening a shell with git installed.
|
||||
Open a nix-shell with git and begin the setup process. This setup will prompt you various questions such as your desired hostname and if the system you are installing is supposed to be a server or workstation.
|
||||
|
||||
Feel free to use an exisiting hostname to restore an old system or chose a new name.
|
||||
|
||||
If you are running this in a VM be sure to answer yes if it prompts you. This will ensure it generates the correct boot loader configuration.
|
||||
|
||||
```bash
|
||||
nix-shell -p git
|
||||
git clone https://git.mvl.sh/vleeuwenmenno/dotfiles.git ~/dotfiles
|
||||
curl -L https://df.mvl.sh | bash
|
||||
```
|
||||
|
||||
### 2. Run `setup.sh`
|
||||
|
||||
You can run the setup.sh in the dotfiles folder to setup the system.
|
||||
This will prompt you to give a hostname for the system. For things to properly work you should ensure this repository contains the relevant assets for the hostname you provide.
|
||||
|
||||
In case you're setting up a new system you could use any of the existing hostnames in the `nconfig/nixos/hardware/` folder.
|
||||
Afterwards you should adopt the pre-generated configuration under `/etc/nixos/hardware-configuration.nix` to the repository and change the hostname to anything you like.
|
||||
|
||||
```bash
|
||||
cd ~/dotfiles && ./setup.sh
|
||||
```
|
||||
|
||||
### 3. Reboot
|
||||
### 2. Reboot
|
||||
|
||||
It's probably a good idea that you either reboot or log out and log back in to make sure all the changes are applied.
|
||||
|
||||
@@ -41,19 +33,19 @@ It's probably a good idea that you either reboot or log out and log back in to m
|
||||
# sudo reboot
|
||||
```
|
||||
|
||||
### 4. Run `dotf update`
|
||||
### 3. Run `dotf update`
|
||||
|
||||
Run the `dotf update` command, although nixos-rebuild and home-manager already ran the dotf cli didn't yet place proper symlinks for everything.
|
||||
Run the `dotf update` command, although the setup script did most of the work some symlinks still need to be set which at the moment is done using shell scripts.
|
||||
|
||||
```bash
|
||||
dotf update
|
||||
```
|
||||
|
||||
### 5. Setup 1Password (Optional)
|
||||
### 4. Setup 1Password (Optional)
|
||||
|
||||
1Password is installed but you need to login and enable the SSH agent and CLI components under the settings before continuing.
|
||||
|
||||
### 6. Decrypt secrets
|
||||
### 5. Decrypt secrets
|
||||
|
||||
Either using 1Password or by manualling providing the decryption key you should decrypt the secrets.
|
||||
Various configurations depend on the secrets to be decrypted such as the SSH keys, yubikey pam configuration and more.
|
||||
@@ -62,7 +54,7 @@ Various configurations depend on the secrets to be decrypted such as the SSH key
|
||||
dotf secrets decrypt
|
||||
```
|
||||
|
||||
### 7. Profit
|
||||
### 6. Profit
|
||||
|
||||
You should now have a fully setup system with all the configurations applied.
|
||||
|
||||
|
||||
@@ -1,19 +1,37 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
apps=(
|
||||
spotify
|
||||
whatsapp-for-linux
|
||||
telegram-desktop
|
||||
vesktop
|
||||
trayscale
|
||||
1password
|
||||
"spotify"
|
||||
"whatsapp-for-linux"
|
||||
"telegram-desktop"
|
||||
"vesktop"
|
||||
"trayscale"
|
||||
"1password"
|
||||
"ulauncher-wrapped --no-window-shadow --hide-window"
|
||||
"polkit-agent"
|
||||
"swaync"
|
||||
"nm-applet"
|
||||
"blueman-applet"
|
||||
)
|
||||
|
||||
# check if screen has any dead sessions
|
||||
if screen -list | grep -q "Dead"; then
|
||||
screen -wipe
|
||||
fi
|
||||
|
||||
echo "Starting auto-start applications..."
|
||||
for app in "${apps[@]}"; do
|
||||
if [ -x "$(command -v $app)" ]; then
|
||||
echo "Starting $app..."
|
||||
screen -dmS $app $app
|
||||
app_name=$(echo $app | awk '{print $1}')
|
||||
app_params=$(echo $app | cut -d' ' -f2-)
|
||||
|
||||
if [ -x "$(command -v $app_name)" ]; then
|
||||
if screen -list | grep -q $app_name; then
|
||||
echo "$app_name is already running. Skipping..."
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "Starting $app_name with parameters $app_params..."
|
||||
screen -dmS $app_name $app_name $app_params
|
||||
sleep 1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
||||
|
||||
# Print logo
|
||||
echo "Menno's Dotfiles" | figlet | lolcat
|
||||
logo
|
||||
|
||||
# Print help
|
||||
cat $HOME/dotfiles/bin/resources/help.txt
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
||||
|
||||
# Push all changes from $HOME/dotfiles to ALL remotes in $HOME/dotfiles/.git/config
|
||||
push_all() {
|
||||
# Get all remotes from the .git/config file
|
||||
remotes=($(cat $HOME/dotfiles/.git/config | grep url | awk '{print $3}'))
|
||||
|
||||
printfe "%s\n" "cyan" "Pushing all changes to all remotes..."
|
||||
|
||||
# For each remote, push all changes
|
||||
for remote in "${remotes[@]}"; do
|
||||
printfe "%s" "green" " - Pushing to ["
|
||||
printfe "%s" "blue" "$remote"
|
||||
printfe "%s\n" "green" "]..."
|
||||
|
||||
result=$(git -C $HOME/dotfiles push $remote 2>&1)
|
||||
|
||||
# If the push failed, print an error
|
||||
if [ $? -ne 0 ]; then
|
||||
printfe "%s\n" "red" " - Failed to push to $remote:"
|
||||
printfe "%s\n" "red" " $result"
|
||||
continue
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
push_all
|
||||
@@ -106,10 +106,10 @@ decrypt_folder() {
|
||||
done
|
||||
}
|
||||
|
||||
if [[ "$2" == "decrypt" ]]; then
|
||||
if [[ "$1" == "decrypt" ]]; then
|
||||
printfe "%s\n" "cyan" "Decrypting secrets..."
|
||||
decrypt_folder ~/dotfiles/secrets
|
||||
elif [[ "$2" == "encrypt" ]]; then
|
||||
elif [[ "$1" == "encrypt" ]]; then
|
||||
printfe "%s\n" "cyan" "Encrypting secrets..."
|
||||
encrypt_folder ~/dotfiles/secrets
|
||||
fi
|
||||
@@ -92,23 +92,28 @@ symlinks() {
|
||||
done
|
||||
}
|
||||
|
||||
sys_packages_upgrade() {
|
||||
cd $HOME/dotfiles/config/nixos && sudo nixos-rebuild switch --upgrade --flake .#$DOTF_HOSTNAME --impure
|
||||
}
|
||||
|
||||
####################################################################################################
|
||||
# Update packages
|
||||
####################################################################################################
|
||||
|
||||
sys_packages() {
|
||||
####################################################################################################
|
||||
# Update system packages
|
||||
####################################################################################################
|
||||
|
||||
printfe "%s\n" "cyan" "Updating system packages..."
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
printfe "%s\n" "cyan" "Updating brew packages..."
|
||||
brew update
|
||||
brew upgrade
|
||||
brew cleanup
|
||||
else
|
||||
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
|
||||
if [ $? -ne 0 ]; then
|
||||
@@ -117,14 +122,18 @@ sys_packages() {
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -x "$(command -v apt)" ]; then
|
||||
printfe "%s\n" "cyan" "Updating apt packages..."
|
||||
sudo nala upgrade -y
|
||||
sudo nala autoremove -y --purge
|
||||
fi
|
||||
}
|
||||
|
||||
####################################################################################################
|
||||
# Update packages
|
||||
####################################################################################################
|
||||
if [ -x "$(command -v yum)" ]; then
|
||||
printfe "%s\n" "cyan" "Updating yum packages..."
|
||||
sudo yum update -y
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
cargopkgs() {
|
||||
printfe "%s\n" "cyan" "Ensuring Cargo packages are installed..."
|
||||
@@ -138,13 +147,6 @@ pipxpkgs() {
|
||||
return
|
||||
fi
|
||||
|
||||
printfe "%s\n" "cyan" "Ensuring pyenv is installed..."
|
||||
if [ ! -d "$HOME/.pyenv" ]; then
|
||||
curl https://pyenv.run | bash
|
||||
else
|
||||
printfe "%s\n" "green" " - pyenv is already installed"
|
||||
fi
|
||||
|
||||
printfe "%s\n" "cyan" "Ensuring pipx packages are installed..."
|
||||
source $HOME/dotfiles/bin/helpers/pipx_packages.sh
|
||||
ensure_pipx_packages_installed
|
||||
@@ -166,83 +168,28 @@ flatpakpkgs() {
|
||||
ensure_flatpak_packages_installed
|
||||
}
|
||||
|
||||
tailscalecmd() {
|
||||
if is_wsl; then
|
||||
printfe "%s\n" "yellow" "Running in WSL, skipping Tailscale."
|
||||
return
|
||||
fi
|
||||
|
||||
printfe "%s\n" "cyan" "Ensuring Tailscale is installed..."
|
||||
source $HOME/dotfiles/bin/helpers/tailscale.sh
|
||||
ensure_tailscale_installed
|
||||
}
|
||||
|
||||
####################################################################################################
|
||||
# Update system settings
|
||||
####################################################################################################
|
||||
|
||||
git_repos() {
|
||||
####################################################################################################
|
||||
# Ensure git repos
|
||||
####################################################################################################
|
||||
|
||||
printfe "%s\n" "cyan" "Ensuring git repos..."
|
||||
source $HOME/dotfiles/bin/helpers/git.sh
|
||||
ensure_git_repos
|
||||
}
|
||||
|
||||
homemanager() {
|
||||
# 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
|
||||
}
|
||||
|
||||
ensure_homemanager_installed() {
|
||||
if [ ! -x "$(command -v home-manager)" ]; then
|
||||
printfe "%s\n" "yellow" "Home Manager is not installed, installing it..."
|
||||
nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz home-manager
|
||||
nix-channel --update
|
||||
nix-shell '<home-manager>' -A install
|
||||
|
||||
printfe "%s\n" "yellow" "Home Manager installed, please run the script again."
|
||||
exit 1
|
||||
fi
|
||||
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
|
||||
}
|
||||
|
||||
####################################################################################################
|
||||
# Parse arguments
|
||||
####################################################################################################
|
||||
|
||||
# Multiple options can be passed to the script, for example:
|
||||
# ./update.sh --git --symlinks --packages
|
||||
# If no options are passed, the script will run all functions
|
||||
|
||||
# Shift the first argument since this is the script name
|
||||
shift
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
printfe "%s\n" "yellow" "No options passed, running full update..."
|
||||
|
||||
ensure_homemanager_installed
|
||||
symlinks
|
||||
sys_packages
|
||||
homemanager
|
||||
cargopkgs
|
||||
pipxpkgs
|
||||
git_repos
|
||||
flatpakpkgs
|
||||
tailscalecmd
|
||||
dotf secrets encrypt
|
||||
else
|
||||
for arg in "$@"; do
|
||||
case $arg in
|
||||
--nixos-upgrade)
|
||||
sys_packages_upgrade
|
||||
;;
|
||||
--nixos|nixos|nix|nixos-rebuild)
|
||||
sys_packages
|
||||
;;
|
||||
@@ -253,9 +200,6 @@ else
|
||||
sys_packages
|
||||
homemanager
|
||||
;;
|
||||
--git)
|
||||
git_repos
|
||||
;;
|
||||
--symlinks)
|
||||
symlinks
|
||||
;;
|
||||
@@ -264,7 +208,6 @@ else
|
||||
cargopkgs
|
||||
pipxpkgs
|
||||
flatpakpkgs
|
||||
tailscalecmd
|
||||
;;
|
||||
--pipx)
|
||||
pipxpkgs
|
||||
@@ -275,9 +218,6 @@ else
|
||||
--flatpak)
|
||||
flatpakpkgs
|
||||
;;
|
||||
--tailscale)
|
||||
tailscalecmd
|
||||
;;
|
||||
*)
|
||||
printfe "%s\n" "red" "Unknown option: $arg"
|
||||
;;
|
||||
|
||||
72
bin/actions/upgrade.sh
Executable file
72
bin/actions/upgrade.sh
Executable 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
|
||||
165
bin/dotf
165
bin/dotf
@@ -1,76 +1,135 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
||||
export DOTFILES_CONFIG=$HOME/dotfiles/config/config.yaml
|
||||
# strict mode
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
status() {
|
||||
$HOME/dotfiles/bin/actions/status.sh $@
|
||||
# Script constants
|
||||
readonly DOTFILES_ROOT="$HOME/dotfiles"
|
||||
readonly DOTFILES_BIN="$DOTFILES_ROOT/bin"
|
||||
readonly DOTFILES_CONFIG="$DOTFILES_ROOT/config/config.yaml"
|
||||
|
||||
# Source helper functions
|
||||
if [[ ! -f "$DOTFILES_BIN/helpers/functions.sh" ]]; then
|
||||
echo "Error: Required helper functions not found"
|
||||
exit 1
|
||||
fi
|
||||
source "$DOTFILES_BIN/helpers/functions.sh"
|
||||
|
||||
export DOTFILES_CONFIG
|
||||
|
||||
# Command functions
|
||||
update() {
|
||||
local update_script="$DOTFILES_BIN/actions/update.sh"
|
||||
if [[ ! -x "$update_script" ]]; then
|
||||
printfe "%s\n" "red" "Error: Update script not found or not executable"
|
||||
return 1
|
||||
fi
|
||||
"$update_script" $@
|
||||
}
|
||||
|
||||
update() {
|
||||
$HOME/dotfiles/bin/actions/update.sh $@
|
||||
upgrade() {
|
||||
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
|
||||
printfe "%s\n" "red" "Error: Terminal script not found or not executable"
|
||||
return 1
|
||||
fi
|
||||
"$term_script" "$@"
|
||||
}
|
||||
|
||||
help() {
|
||||
$HOME/dotfiles/bin/actions/help.sh $@
|
||||
local help_script="$DOTFILES_BIN/actions/help.sh"
|
||||
if [[ ! -x "$help_script" ]]; then
|
||||
printfe "%s\n" "red" "Error: Help script not found or not executable"
|
||||
return 1
|
||||
fi
|
||||
"$help_script" "$@"
|
||||
}
|
||||
|
||||
secrets() {
|
||||
$HOME/dotfiles/bin/actions/secrets.sh $@
|
||||
local secrets_script="$DOTFILES_BIN/actions/secrets.sh"
|
||||
if [[ ! -x "$secrets_script" ]]; then
|
||||
printfe "%s\n" "red" "Error: Secrets script not found or not executable"
|
||||
return 1
|
||||
fi
|
||||
"$secrets_script" "$@"
|
||||
}
|
||||
|
||||
push() {
|
||||
$HOME/dotfiles/bin/actions/push.sh $@
|
||||
auto_start() {
|
||||
local auto_start_script="$DOTFILES_BIN/actions/auto-start.sh"
|
||||
if [[ ! -x "$auto_start_script" ]]; then
|
||||
printfe "%s\n" "red" "Error: Auto-start script not found or not executable"
|
||||
return 1
|
||||
fi
|
||||
"$auto_start_script" "$@"
|
||||
}
|
||||
|
||||
ensure_git_hooks() {
|
||||
# If ~/dotfiles/.git/hooks is a symlink, skip this
|
||||
if [[ -L ~/dotfiles/.git/hooks ]]; then
|
||||
# Let's make sure the symlink is correct
|
||||
if [[ $(readlink ~/dotfiles/.git/hooks) != $HOME/dotfiles/bin/actions/git ]]; then
|
||||
printfe "%s\n" "yellow" "The ~/dotfiles/.git/hooks symlink is incorrect. Please remove it and run this script again."
|
||||
fi
|
||||
return
|
||||
local hooks_dir="$DOTFILES_ROOT/.git/hooks"
|
||||
local target_link="$DOTFILES_BIN/actions/git"
|
||||
|
||||
# Validate target directory exists
|
||||
if [[ ! -d "$target_link" ]]; then
|
||||
printfe "%s\n" "red" "Error: Git hooks source directory does not exist: $target_link"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ -d ~/dotfiles/.git/hooks ]]; then
|
||||
rm -rf ~/dotfiles/.git/hooks
|
||||
printfe "%s\n" "yellow" "The ~/dotfiles/.git/hooks directory already exists. We're removing it!"
|
||||
# Handle existing symlink
|
||||
if [[ -L "$hooks_dir" ]]; then
|
||||
local current_link
|
||||
current_link=$(readlink "$hooks_dir")
|
||||
if [[ "$current_link" != "$target_link" ]]; then
|
||||
printfe "%s\n" "yellow" "Incorrect git hooks symlink found. Removing and recreating..."
|
||||
rm "$hooks_dir"
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
ln -s $HOME/dotfiles/bin/actions/git ~/dotfiles/.git/hooks
|
||||
printfe "%s\n" "green" "Git hooks are now set up!"
|
||||
# Handle existing directory
|
||||
if [[ -d "$hooks_dir" ]]; then
|
||||
printfe "%s\n" "yellow" "Removing existing hooks directory..."
|
||||
rm -rf "$hooks_dir"
|
||||
fi
|
||||
|
||||
# Create new symlink
|
||||
if ln -s "$target_link" "$hooks_dir"; then
|
||||
printfe "%s\n" "green" "Git hooks successfully configured!"
|
||||
else
|
||||
printfe "%s\n" "red" "Failed to create git hooks symlink"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_git_hooks
|
||||
main() {
|
||||
# Ensure we're in the correct directory
|
||||
if [[ ! -d "$DOTFILES_ROOT" ]]; then
|
||||
printfe "%s\n" "red" "Error: Dotfiles directory not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# switch case for parameters
|
||||
case $1 in
|
||||
"update")
|
||||
logo
|
||||
update $@
|
||||
;;
|
||||
"push")
|
||||
logo continue
|
||||
push $@
|
||||
;;
|
||||
"help"|"--help"|"")
|
||||
help $@
|
||||
;;
|
||||
"secrets")
|
||||
secrets $@
|
||||
;;
|
||||
"term")
|
||||
$HOME/dotfiles/bin/actions/term.sh $@
|
||||
;;
|
||||
"auto-start"|"-a"|"-auto-start"|"as")
|
||||
$HOME/dotfiles/bin/actions/auto-start.sh $@
|
||||
;;
|
||||
"hotkey-daemon")
|
||||
x-terminal-emulator -e $HOME/dotfiles/bin/actions/hotkey-daemon.sh $@
|
||||
;;
|
||||
*)
|
||||
printfe "%s\n" "red" "Unknown command $1"
|
||||
help $@
|
||||
;;
|
||||
esac
|
||||
# Setup git hooks
|
||||
ensure_git_hooks || exit 1
|
||||
|
||||
# Parse commands
|
||||
case "${1:-help}" in
|
||||
update) shift; update "$@" ;;
|
||||
upgrade) shift; upgrade "$@" ;;
|
||||
help) shift; help "$@" ;;
|
||||
hello) shift; hello "$@" ;;
|
||||
secrets) shift; secrets "$@" ;;
|
||||
auto-start) shift; auto_start "$@" ;;
|
||||
*) help ;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -17,9 +17,13 @@ is_wsl() {
|
||||
logo() {
|
||||
echo "Menno's Dotfiles" | figlet | lolcat
|
||||
|
||||
if [[ $(trash-list | wc -l) -gt 0 ]]; then
|
||||
printfe "%s" "yellow" "[!] $(trash-list | wc -l | tr -d ' ') file(s) in trash - "
|
||||
fi
|
||||
|
||||
# Print if repo is dirty and the count of untracked files, modified files and staged files
|
||||
if [[ $(git -C ~/dotfiles status --porcelain) ]]; then
|
||||
printfe "%s" "yellow" "dotfiles repo is dirty "
|
||||
printfe "%s" "yellow" "dotfiles is dirty "
|
||||
printfe "%s" "red" "[$(git -C ~/dotfiles status --porcelain | grep -c '^??')] untracked "
|
||||
printfe "%s" "yellow" "[$(git -C ~/dotfiles status --porcelain | grep -c '^ M')] modified "
|
||||
printfe "%s" "green" "[$(git -C ~/dotfiles status --porcelain | grep -c '^M ')] staged "
|
||||
@@ -29,6 +33,7 @@ logo() {
|
||||
if [[ $(git -C ~/dotfiles log origin/master..HEAD) ]]; then
|
||||
printfe "%s" "yellow" "[!] You have $(git -C ~/dotfiles log origin/master..HEAD --oneline | wc -l | tr -d ' ') commit(s) to push"
|
||||
fi
|
||||
|
||||
println "" "normal"
|
||||
}
|
||||
|
||||
@@ -81,28 +86,6 @@ ensure_package_installed() {
|
||||
println " - $1 is available." "green"
|
||||
}
|
||||
|
||||
ask_before_do() {
|
||||
printfe "%s" "yellow" "Trying to run: "
|
||||
printfe "%s" "cyan" "'$@' "
|
||||
read -p "Continue? [y/N]: " -n 1 -r
|
||||
echo ""
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
printfe "%s" "cyan" "Running '"
|
||||
printfe "%s" "yellow" "$@"
|
||||
println "'..." "cyan"
|
||||
|
||||
# In case DRY_RUN is set to true we should just print the command and not run it
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
println "Would have run '$@'" "yellow"
|
||||
return
|
||||
else
|
||||
$@
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_sudo_privileges() {
|
||||
if sudo -n true 2>/dev/null; then
|
||||
return
|
||||
@@ -112,32 +95,6 @@ ensure_sudo_privileges() {
|
||||
fi
|
||||
}
|
||||
|
||||
ask_before_do_multi() {
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
println "Would have run: $1" "yellow"
|
||||
else
|
||||
read -p "$1 (y/n) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
return false
|
||||
fi
|
||||
return true
|
||||
fi
|
||||
}
|
||||
|
||||
add_to_hosts() {
|
||||
local domain=$1
|
||||
local ip="127.0.0.1"
|
||||
|
||||
# Check if domain already exists in /etc/hosts
|
||||
if ! grep -q "$domain" /etc/hosts; then
|
||||
println " - adding $domain to /etc/hosts" "yellow"
|
||||
echo "$ip $domain" | sudo tee -a /etc/hosts >/dev/null
|
||||
else
|
||||
println " - $domain already exists in /etc/hosts" "green"
|
||||
fi
|
||||
}
|
||||
|
||||
function exesudo ()
|
||||
{
|
||||
### ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##
|
||||
|
||||
@@ -1,127 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
source $HOME/dotfiles/bin/helpers/functions.sh
|
||||
|
||||
ensure_git_repos() {
|
||||
# Load config file with git repos:
|
||||
repos=($(cat $HOME/dotfiles/config/config.yaml | shyaml keys config.git))
|
||||
|
||||
# For each repo in the config file, ensure it is cloned (url + branch, if specified)
|
||||
for repo in "${repos[@]}"; do
|
||||
url=$(cat $HOME/dotfiles/config/config.yaml | shyaml get-value config.git.$repo.url)
|
||||
branch=$(cat $HOME/dotfiles/config/config.yaml | shyaml get-value config.git.$repo.branch)
|
||||
target=$(cat $HOME/dotfiles/config/config.yaml | shyaml get-value config.git.$repo.target)
|
||||
target_dirty=$(cat $HOME/dotfiles/config/config.yaml | shyaml get-value config.git.$repo.target)
|
||||
|
||||
# Replace ~ with $HOME
|
||||
target="${target/#\~/$HOME}"
|
||||
|
||||
# If no url is specified, skip this repo
|
||||
if [ -z "$url" ]; then
|
||||
printfe "%s\n" "red" " - No URL specified for $repo, skipping"
|
||||
continue
|
||||
fi
|
||||
|
||||
# If no branch is specified, default to main
|
||||
if [ -z "$branch" ]; then
|
||||
branch="main"
|
||||
printfe "%s\n" "yellow" " - No branch specified for $repo, defaulting to $branch"
|
||||
fi
|
||||
|
||||
# If no target is specified, stop since we have no idea where to expect to put the repo
|
||||
if [ -z "$target" ]; then
|
||||
printfe "%s\n" "red" " - No target specified for $repo, skipping"
|
||||
continue
|
||||
fi
|
||||
|
||||
# If the target directory does not exist, clone the repo there with the specified branch
|
||||
if [ ! -d "$target" ]; then
|
||||
printfe "%s\n" "green" " - Cloning $repo to $target"
|
||||
result=$(git clone --branch $branch $url $target 2>&1)
|
||||
|
||||
# If the clone failed, print an error
|
||||
if [ $? -ne 0 ]; then
|
||||
printfe "%s\n" "red" " - Failed to clone $repo to $target:"
|
||||
printfe "%s\n" "red" " $result"
|
||||
continue
|
||||
fi
|
||||
else
|
||||
# If the target directory exists, check if it is a git repo
|
||||
if [ -d "$target/.git" ]; then
|
||||
# If it is a git repo, check if the remote is the same as the one specified in the config file
|
||||
remote=$(git -C $target remote get-url origin)
|
||||
if [ "$remote" != "$url" ]; then
|
||||
# If the remote is different, print a warning
|
||||
printfe "%s" "yellow" " - $target is a git repo, but the remote (origin) is different from the one in the config file. Replace it? [y/N] "
|
||||
read -n 1
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
printfe "%s\n" "green" " - Replacing remote in $target with $url"
|
||||
git -C $target remote set-url origin $url
|
||||
fi
|
||||
|
||||
# Fast-forward the repo but only if it's in the correct branch
|
||||
current_branch=$(git -C $target rev-parse --abbrev-ref HEAD)
|
||||
if [ "$current_branch" != "$branch" ]; then
|
||||
printfe "%s\n" "yellow" " - $target is a git repo, but it's not in the expected branch ($current_branch instead of $branch)"
|
||||
else
|
||||
printfe "%s\n" "green" " - Fast-forwarding $target"
|
||||
result=$(git -C $target pull 2>&1)
|
||||
|
||||
# If the pull failed, print an error
|
||||
if [ $? -ne 0 ]; then
|
||||
printfe "%s\n" "red" " - Failed to fast-forward $target:"
|
||||
printfe "%s\n" "red" " $result"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Fast-forward the repo but only if it's in the correct branch
|
||||
current_branch=$(git -C $target rev-parse --abbrev-ref HEAD)
|
||||
if [ "$current_branch" != "$branch" ]; then
|
||||
printfe "%s\n" "yellow" " - $target is a git repo, but it's not in the expected branch ($current_branch instead of $branch)"
|
||||
else
|
||||
printfe "%s\n" "green" " - Fast-forwarding $target"
|
||||
result=$(git -C $target pull 2>&1)
|
||||
|
||||
# If the pull failed, print an error
|
||||
if [ $? -ne 0 ]; then
|
||||
printfe "%s\n" "red" " - Failed to fast-forward $target:"
|
||||
printfe "%s\n" "red" " $result"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# If the target directory exists but is not a git repo, print a warning
|
||||
printfe "%s\n" "red" " - $target exists but is not a git repo?! Skipping"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Print state of the repo example: "repo (branch) -> [target] ([untracked files] [unstaged changes] [staged changes] [unpushed commits])"
|
||||
untracked=$(git -C $target status --porcelain | grep -c '^??')
|
||||
unstaged=$(git -C $target status --porcelain | grep -c '^ M')
|
||||
staged=$(git -C $target status --porcelain | grep -c '^M ')
|
||||
unstaged_changes=$(git -C $target status --porcelain | grep -c '^M')
|
||||
unpushed_commits=$(git -C $target log origin/$branch..HEAD --oneline | wc -l | tr -d ' ')
|
||||
|
||||
printfe "%s" "blue" " - $repo ($branch) -> [$target_dirty]"
|
||||
if [ $untracked -gt 0 ]; then
|
||||
printfe "%s" "red" " [$untracked] untracked"
|
||||
fi
|
||||
|
||||
if [ $unstaged -gt 0 ]; then
|
||||
printfe "%s" "yellow" " [$unstaged] modified"
|
||||
fi
|
||||
|
||||
printfe "%s" "green" " [$staged]"
|
||||
|
||||
if [ $unstaged_changes -gt 0 ]; then
|
||||
printfe "%s" "red" " [$unstaged_changes] unstaged changes"
|
||||
fi
|
||||
|
||||
if [ $unpushed_commits -gt 0 ]; then
|
||||
printfe "%s" "yellow" " [!] You have [$unpushed_commits] unpushed commits"
|
||||
fi
|
||||
|
||||
echo
|
||||
done
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
ensure_tailscale_installed() {
|
||||
# if tailscale is already installed, skip the installation
|
||||
if [ -x "$(command -v tailscale)" ]; then
|
||||
printfe "%s\n" "green" " - Tailscale is already installed"
|
||||
return
|
||||
fi
|
||||
|
||||
result=$(curl -fsSL https://tailscale.com/install.sh | sh)
|
||||
|
||||
# Ensure it ended with something like Installation complete
|
||||
if [[ $result == *"Installation complete"* ]]; then
|
||||
# Check if it successfully installed
|
||||
if [ -x "$(command -v tailscale)" ]; then
|
||||
printfe "%s\n" "green" " - Tailscale is installed"
|
||||
else
|
||||
printfe "%s\n" "red" " - Tailscale is not installed"
|
||||
printfe "%s\n" "red" " Something went wrong while installing Tailscale, investigate the issue"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
printfe "%s\n" "red" " - Tailscale is not installed"
|
||||
printfe "%s\n" "red" " Something went wrong while installing Tailscale, investigate the issue"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Let's set the current user to the operator
|
||||
sudo tailscale set --operator=$USER
|
||||
|
||||
# Start the service
|
||||
tailscale up
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
|
||||
All [] are optional parameters. And all <> are required parameters.
|
||||
Usage: dotf [options] [optional parameters]
|
||||
Usage: dotf [OPTIONS] [ARGS]
|
||||
|
||||
update: Pull latest changes, and update symlinks and configurations.
|
||||
status: Show the status of the dotfiles repository.
|
||||
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.
|
||||
auto-start: Start a set of pre-defined applications.
|
||||
hello: Shows the welcome message for the terminal.
|
||||
help: Shows this help message
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
You are an assistant, you are getting prompted by an automated bash script on boot-up of Menno's computer $HOSTNAME. Menno is a software engineer who loves to automate everything. (Menno van Leeuwen)
|
||||
This script starts up all his stuff on the PC and your task is quite silly but simple:
|
||||
- Give menno a nice and comedy welcome.
|
||||
- Keep it short and concise but funny.
|
||||
|
||||
Rules:
|
||||
- Do not actually output any bash/zsh scripting, just a message to Menno for his entertainment.
|
||||
- No open and closing quotes, tags or any syntax that would indicate this is a script.
|
||||
- Be creative, Menno loves a good laugh.
|
||||
- Output in a nice format that's easily to read.
|
||||
- Make sure to include the forecast.
|
||||
- You don't have to always make it centered about code, but it's a good start.
|
||||
- You don't have to include every topic mentioned, just pick a couple and make it funny.
|
||||
|
||||
Topics:
|
||||
- Weekend coming up (If it's Friday or half way through the week and desperate for the weekend)
|
||||
- A beer is always a good idea in the weekend (Only applicable on Friday, Saturday or Sunday)
|
||||
- The weather (Menno loves to know the weather)
|
||||
- Space, stars, planets, etc
|
||||
- Programming
|
||||
- Gaming
|
||||
- Astrophotography
|
||||
- Trying to avoid death scrolling on Reddit, Youtube, etc
|
||||
|
||||
For funs here is some maybe or maybe not so relevant info:
|
||||
- The time now is $TIME ($DATE)
|
||||
- The current weather and moon phase follows: $WEATHER
|
||||
- The moon phase is as follows: $MOON_PHASE
|
||||
221
config/autostart/brave-browser.desktop
Normal file
221
config/autostart/brave-browser.desktop
Normal file
@@ -0,0 +1,221 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Brave Web Browser
|
||||
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
|
||||
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
|
||||
GenericName=Web Browser
|
||||
GenericName[ar]=متصفح الشبكة
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=WWW prohlížeč
|
||||
GenericName[da]=Browser
|
||||
GenericName[de]=Web-Browser
|
||||
GenericName[el]=Περιηγητής ιστού
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[et]=Veebibrauser
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[gu]=વેબ બ્રાઉઝર
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi]=वेब ब्राउज़र
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser Web
|
||||
GenericName[ja]=ウェブブラウザ
|
||||
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lt]=Žiniatinklio naršyklė
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[ml]=വെബ് ബ്രൌസര്
|
||||
GenericName[mr]=वेब ब्राऊजर
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador da Internet
|
||||
GenericName[ro]=Navigator de Internet
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[sv]=Webbläsare
|
||||
GenericName[ta]=இணைய உலாவி
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tr]=Web Tarayıcı
|
||||
GenericName[uk]=Навігатор Тенет
|
||||
GenericName[zh_CN]=网页浏览器
|
||||
GenericName[zh_HK]=網頁瀏覽器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[fil]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[id]=Browser Web
|
||||
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
|
||||
GenericName[sk]=WWW prehliadač
|
||||
GenericName[sr]=Интернет прегледник
|
||||
GenericName[te]=మహాతల అన్వేషి
|
||||
GenericName[vi]=Bộ duyệt Web
|
||||
# Gnome and KDE 3 uses Comment.
|
||||
Comment=Access the Internet
|
||||
Comment[ar]=الدخول إلى الإنترنت
|
||||
Comment[bg]=Достъп до интернет
|
||||
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
|
||||
Comment[ca]=Accedeix a Internet
|
||||
Comment[cs]=Přístup k internetu
|
||||
Comment[da]=Få adgang til internettet
|
||||
Comment[de]=Internetzugriff
|
||||
Comment[el]=Πρόσβαση στο Διαδίκτυο
|
||||
Comment[en_GB]=Access the Internet
|
||||
Comment[es]=Accede a Internet.
|
||||
Comment[et]=Pääs Internetti
|
||||
Comment[fi]=Käytä internetiä
|
||||
Comment[fil]=I-access ang Internet
|
||||
Comment[fr]=Accéder à Internet
|
||||
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
|
||||
Comment[he]=גישה אל האינטרנט
|
||||
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
|
||||
Comment[hr]=Pristup Internetu
|
||||
Comment[hu]=Internetelérés
|
||||
Comment[id]=Akses Internet
|
||||
Comment[it]=Accesso a Internet
|
||||
Comment[ja]=インターネットにアクセス
|
||||
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
|
||||
Comment[ko]=인터넷 연결
|
||||
Comment[lt]=Interneto prieiga
|
||||
Comment[lv]=Piekļūt internetam
|
||||
Comment[ml]=ഇന്റര്നെറ്റ് ആക്സസ് ചെയ്യുക
|
||||
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
|
||||
Comment[nb]=Gå til Internett
|
||||
Comment[nl]=Verbinding maken met internet
|
||||
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
|
||||
Comment[pl]=Skorzystaj z internetu
|
||||
Comment[pt]=Aceder à Internet
|
||||
Comment[pt_BR]=Acessar a internet
|
||||
Comment[ro]=Accesaţi Internetul
|
||||
Comment[ru]=Доступ в Интернет
|
||||
Comment[sk]=Prístup do siete Internet
|
||||
Comment[sl]=Dostop do interneta
|
||||
Comment[sr]=Приступите Интернету
|
||||
Comment[sv]=Gå ut på Internet
|
||||
Comment[ta]=இணையத்தை அணுகுதல்
|
||||
Comment[te]=ఇంటర్నెట్ను ఆక్సెస్ చెయ్యండి
|
||||
Comment[th]=เข้าถึงอินเทอร์เน็ต
|
||||
Comment[tr]=İnternet'e erişin
|
||||
Comment[uk]=Доступ до Інтернету
|
||||
Comment[vi]=Truy cập Internet
|
||||
Comment[zh_CN]=访问互联网
|
||||
Comment[zh_HK]=連線到網際網路
|
||||
Comment[zh_TW]=連線到網際網路
|
||||
Exec=/nix/store/vyd31gpmcp6gaqra4h4xdz3zgg3n4akp-brave-1.71.118/bin/brave %U
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
Icon=brave-browser
|
||||
Type=Application
|
||||
Categories=Network;WebBrowser;
|
||||
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
|
||||
Actions=new-window;new-private-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=New Window
|
||||
Name[am]=አዲስ መስኮት
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn]=নতুন উইন্ডো
|
||||
Name[ca]=Finestra nova
|
||||
Name[cs]=Nové okno
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[el]=Νέο Παράθυρο
|
||||
Name[en_GB]=New Window
|
||||
Name[es]=Nueva ventana
|
||||
Name[et]=Uus aken
|
||||
Name[fa]=پنجره جدید
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fil]=New Window
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[gu]=નવી વિંડો
|
||||
Name[hi]=नई विंडो
|
||||
Name[hr]=Novi prozor
|
||||
Name[hu]=Új ablak
|
||||
Name[id]=Jendela Baru
|
||||
Name[it]=Nuova finestra
|
||||
Name[iw]=חלון חדש
|
||||
Name[ja]=新規ウインドウ
|
||||
Name[kn]=ಹೊಸ ವಿಂಡೊ
|
||||
Name[ko]=새 창
|
||||
Name[lt]=Naujas langas
|
||||
Name[lv]=Jauns logs
|
||||
Name[ml]=പുതിയ വിന്ഡോ
|
||||
Name[mr]=नवीन विंडो
|
||||
Name[nl]=Nieuw venster
|
||||
Name[no]=Nytt vindu
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt]=Nova janela
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv]=Nytt fönster
|
||||
Name[sw]=Dirisha Jipya
|
||||
Name[ta]=புதிய சாளரம்
|
||||
Name[te]=క్రొత్త విండో
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni Pencere
|
||||
Name[uk]=Нове вікно
|
||||
Name[vi]=Cửa sổ Mới
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
Exec=/nix/store/vyd31gpmcp6gaqra4h4xdz3zgg3n4akp-brave-1.71.118/bin/brave
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=New Incognito Window
|
||||
Name[ar]=نافذة جديدة للتصفح المتخفي
|
||||
Name[bg]=Нов прозорец „инкогнито“
|
||||
Name[bn]=নতুন ছদ্মবেশী উইন্ডো
|
||||
Name[ca]=Finestra d'incògnit nova
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[da]=Nyt inkognitovindue
|
||||
Name[de]=Neues Inkognito-Fenster
|
||||
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
|
||||
Name[en_GB]=New Incognito window
|
||||
Name[es]=Nueva ventana de incógnito
|
||||
Name[et]=Uus inkognito aken
|
||||
Name[fa]=پنجره جدید حالت ناشناس
|
||||
Name[fi]=Uusi incognito-ikkuna
|
||||
Name[fil]=Bagong Incognito window
|
||||
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||
Name[gu]=નવી છુપી વિંડો
|
||||
Name[hi]=नई गुप्त विंडो
|
||||
Name[hr]=Novi anoniman prozor
|
||||
Name[hu]=Új Inkognitóablak
|
||||
Name[id]=Jendela Penyamaran baru
|
||||
Name[it]=Nuova finestra di navigazione in incognito
|
||||
Name[iw]=חלון חדש לגלישה בסתר
|
||||
Name[ja]=新しいシークレット ウィンドウ
|
||||
Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ
|
||||
Name[ko]=새 시크릿 창
|
||||
Name[lt]=Naujas inkognito langas
|
||||
Name[lv]=Jauns inkognito režīma logs
|
||||
Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്ഡോ
|
||||
Name[mr]=नवीन गुप्त विंडो
|
||||
Name[nl]=Nieuw incognitovenster
|
||||
Name[no]=Nytt inkognitovindu
|
||||
Name[pl]=Nowe okno incognito
|
||||
Name[pt]=Nova janela de navegação anónima
|
||||
Name[pt_BR]=Nova janela anônima
|
||||
Name[ro]=Fereastră nouă incognito
|
||||
Name[ru]=Новое окно в режиме инкогнито
|
||||
Name[sk]=Nové okno inkognito
|
||||
Name[sl]=Novo okno brez beleženja zgodovine
|
||||
Name[sr]=Нови прозор за прегледање без архивирања
|
||||
Name[sv]=Nytt inkognitofönster
|
||||
Name[ta]=புதிய மறைநிலைச் சாளரம்
|
||||
Name[te]=క్రొత్త అజ్ఞాత విండో
|
||||
Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน
|
||||
Name[tr]=Yeni Gizli pencere
|
||||
Name[uk]=Нове вікно в режимі анонімного перегляду
|
||||
Name[vi]=Cửa sổ ẩn danh mới
|
||||
Name[zh_CN]=新建隐身窗口
|
||||
Name[zh_TW]=新增無痕式視窗
|
||||
Exec=/nix/store/vyd31gpmcp6gaqra4h4xdz3zgg3n4akp-brave-1.71.118/bin/brave --incognito
|
||||
@@ -1,26 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Zen Browser
|
||||
Exec=flatpak run --branch=stable --arch=x86_64 --command=launch-script.sh --file-forwarding io.github.zen_browser.zen @@u %u @@
|
||||
Icon=io.github.zen_browser.zen
|
||||
Type=Application
|
||||
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json;
|
||||
StartupWMClass=zen-alpha
|
||||
Categories=Network;WebBrowser;
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
X-MultipleArgs=false
|
||||
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||
Actions=new-window;new-private-window;profilemanager;
|
||||
X-Flatpak=io.github.zen_browser.zen
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=Open a New Window
|
||||
Exec=flatpak run --branch=stable --arch=x86_64 --command=launch-script.sh --file-forwarding io.github.zen_browser.zen @@u %u @@
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=Open a New Private Window
|
||||
Exec=flatpak run --branch=stable --arch=x86_64 --command=launch-script.sh --file-forwarding io.github.zen_browser.zen --private-window @@u %u @@
|
||||
|
||||
[Desktop Action profilemanager]
|
||||
Name=Open the Profile Manager
|
||||
Exec=flatpak run --branch=stable --arch=x86_64 --command=launch-script.sh --file-forwarding io.github.zen_browser.zen --ProfileManager @@u %u @@
|
||||
1
config/autostart/ulauncher.desktop
Symbolic link
1
config/autostart/ulauncher.desktop
Symbolic link
@@ -0,0 +1 @@
|
||||
/nix/store/b21375qzs3rbmhz9wrvyab7jljis7jc3-home-manager-files/.config/autostart/ulauncher.desktop
|
||||
@@ -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
|
||||
@@ -13,8 +13,11 @@ config:
|
||||
# Gitconfig
|
||||
gitconfig:
|
||||
sources:
|
||||
macos: ~/dotfiles/config/gitconfig.macos
|
||||
linux: ~/dotfiles/config/gitconfig.linux
|
||||
mennos-server: ~/dotfiles/config/gitconfig.mennos-server
|
||||
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
|
||||
target: ~/.gitconfig
|
||||
|
||||
@@ -33,11 +36,6 @@ config:
|
||||
source: ~/dotfiles/vscode/settings.json
|
||||
target: ~/.config/Code/User/settings.json
|
||||
|
||||
# Autostart
|
||||
autostart:
|
||||
source: ~/dotfiles/config/autostart
|
||||
target: ~/.config/autostart
|
||||
|
||||
# SSH config
|
||||
ssh:
|
||||
source: ~/dotfiles/config/ssh/config
|
||||
@@ -56,37 +54,23 @@ config:
|
||||
target: ~/.ssh/authorized_keys
|
||||
chmod: 600
|
||||
|
||||
# Ghostty config
|
||||
ghostty:
|
||||
source: ~/dotfiles/config/ghostty.conf
|
||||
target: ~/.config/ghostty/config
|
||||
|
||||
# Starship config
|
||||
starship:
|
||||
source: ~/dotfiles/config/starship.toml
|
||||
target: ~/.config/starship.toml
|
||||
|
||||
git:
|
||||
dotfiles:
|
||||
url: git@git.mvl.sh:vleeuwenmenno/dotfiles.git
|
||||
branch: master
|
||||
target: ~/dotfiles
|
||||
|
||||
ssdc_app_v2:
|
||||
url: git@github.com:vleeuwenmenno/ssdc_app_v2.git
|
||||
branch: master
|
||||
target: ~/Projects/Private/ssdc_app_v2
|
||||
|
||||
infra:
|
||||
url: git@github.com:tradaware/infra.git
|
||||
branch: main
|
||||
target: ~/Projects/Work
|
||||
|
||||
# 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!
|
||||
# Likewise with flatpak remotes, apt repositories, etc.
|
||||
packages:
|
||||
# Supply a git_url and binary to install from source
|
||||
cargo:
|
||||
rip2:
|
||||
fd-find:
|
||||
|
||||
pipx:
|
||||
- gnome-extensions-cli
|
||||
- bauh
|
||||
- shyaml
|
||||
|
||||
10
config/flatpaks/com.ktechpit.whatsie.flatpakref
Normal file
10
config/flatpaks/com.ktechpit.whatsie.flatpakref
Normal 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
|
||||
|
||||
10
config/flatpaks/com.plexamp.Plexamp.flatpakref
Normal file
10
config/flatpaks/com.plexamp.Plexamp.flatpakref
Normal file
@@ -0,0 +1,10 @@
|
||||
[Flatpak Ref]
|
||||
Name=com.plexamp.Plexamp
|
||||
Branch=stable
|
||||
Title=com.plexamp.Plexamp 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Flatpak Ref]
|
||||
Name=net.openra.OpenRA
|
||||
Name=io.ente.auth
|
||||
Branch=stable
|
||||
Title=net.openra.OpenRA from flathub
|
||||
Title=io.ente.auth from flathub
|
||||
IsRuntime=false
|
||||
Url=https://dl.flathub.org/repo/
|
||||
SuggestRemoteName=flathub
|
||||
10
config/flatpaks/org.fedoraproject.MediaWriter.flatpakref
Normal file
10
config/flatpaks/org.fedoraproject.MediaWriter.flatpakref
Normal 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
|
||||
|
||||
10
config/flatpaks/tv.plex.PlexDesktop.flatpakref
Normal file
10
config/flatpaks/tv.plex.PlexDesktop.flatpakref
Normal file
@@ -0,0 +1,10 @@
|
||||
[Flatpak Ref]
|
||||
Name=tv.plex.PlexDesktop
|
||||
Branch=stable
|
||||
Title=tv.plex.PlexDesktop 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
|
||||
|
||||
25
config/ghostty.conf
Normal file
25
config/ghostty.conf
Normal 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
|
||||
@@ -6,9 +6,6 @@
|
||||
[gpg]
|
||||
format = ssh
|
||||
|
||||
[gpg "ssh"]
|
||||
program = "op-ssh-sign"
|
||||
|
||||
[commit]
|
||||
gpgsign = true
|
||||
|
||||
@@ -23,3 +20,5 @@
|
||||
required = true
|
||||
clean = git-lfs clean -- %f
|
||||
smudge = git-lfs smudge -- %f
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
18
config/gitconfig.mennos-server
Normal file
18
config/gitconfig.mennos-server
Normal 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
|
||||
183
config/home-manager/flake.lock
generated
183
config/home-manager/flake.lock
generated
@@ -1,5 +1,62 @@
|
||||
{
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -7,43 +64,75 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726989464,
|
||||
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
|
||||
"lastModified": 1739757849,
|
||||
"narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
|
||||
"rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.05",
|
||||
"ref": "release-24.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1730327045,
|
||||
"narHash": "sha256-xKel5kd1AbExymxoIfQ7pgcX6hjw9jCgbiBjiUfSVJ8=",
|
||||
"lastModified": 1740932899,
|
||||
"narHash": "sha256-F0qDu2egq18M3edJwEOAE+D+VQ+yESK6YWPRQBfOqq8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "080166c15633801df010977d9d7474b4a6c549d7",
|
||||
"rev": "1546c45c538633ae40b93e2d14e0bb6fd8f13347",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"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",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1730531603,
|
||||
"narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=",
|
||||
"lastModified": 1738136902,
|
||||
"narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=",
|
||||
"owner": "nixos",
|
||||
"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"
|
||||
},
|
||||
"original": {
|
||||
@@ -55,9 +144,79 @@
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"ghostty": "ghostty",
|
||||
"home-manager": "home-manager",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
description = "menno's dotfiles";
|
||||
|
||||
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";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
url = "github:nix-community/home-manager/release-24.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
ghostty.url = "github:ghostty-org/ghostty";
|
||||
};
|
||||
|
||||
outputs =
|
||||
@@ -17,6 +18,7 @@
|
||||
nixpkgs,
|
||||
nixpkgs-unstable,
|
||||
home-manager,
|
||||
ghostty,
|
||||
}:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
@@ -31,11 +33,15 @@
|
||||
in
|
||||
{
|
||||
homeConfigurations = {
|
||||
"mennos-gamingpc" = home-manager.lib.homeManagerConfiguration {
|
||||
"mennos-desktop" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = {
|
||||
inherit pkgs pkgs-unstable;
|
||||
inherit
|
||||
pkgs
|
||||
pkgs-unstable
|
||||
ghostty
|
||||
;
|
||||
isServer = false;
|
||||
hostname = "mennos-gamingpc";
|
||||
};
|
||||
@@ -45,7 +51,10 @@
|
||||
inherit pkgs;
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = {
|
||||
inherit pkgs pkgs-unstable;
|
||||
inherit
|
||||
pkgs
|
||||
pkgs-unstable
|
||||
;
|
||||
isServer = true;
|
||||
hostname = "mennos-server";
|
||||
};
|
||||
@@ -55,7 +64,11 @@
|
||||
inherit pkgs;
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = {
|
||||
inherit pkgs pkgs-unstable;
|
||||
inherit
|
||||
pkgs
|
||||
pkgs-unstable
|
||||
ghostty
|
||||
;
|
||||
isServer = false;
|
||||
hostname = "mennos-laptop";
|
||||
};
|
||||
|
||||
@@ -30,9 +30,9 @@
|
||||
home = {
|
||||
username = "menno";
|
||||
homeDirectory = "/home/menno";
|
||||
stateVersion = "24.05";
|
||||
stateVersion = "24.11";
|
||||
sessionVariables = {
|
||||
PATH = "${config.home.homeDirectory}/go/bin:$PATH"; # Removed extra asterisks
|
||||
PATH = "${config.home.homeDirectory}/go/bin:$PATH";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs-unstable, ... }:
|
||||
{
|
||||
home.packages = with pkgs-unstable; [ ollama ];
|
||||
home.packages = with pkgs-unstable; [ ];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs-unstable, ... }:
|
||||
{
|
||||
home.packages = with pkgs-unstable; [ ollama-rocm ];
|
||||
home.packages = with pkgs-unstable; [ ];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs-unstable, ... }:
|
||||
{
|
||||
home.packages = with pkgs-unstable; [ ollama-cuda ];
|
||||
home.packages = with pkgs-unstable; [ ];
|
||||
}
|
||||
|
||||
@@ -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" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -16,14 +16,18 @@
|
||||
else
|
||||
[ ./hosts/fallback.nix ];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
home.packages =
|
||||
with pkgs;
|
||||
[
|
||||
# General packages
|
||||
git
|
||||
onefetch
|
||||
gnupg
|
||||
gh
|
||||
nixfmt-rfc-style
|
||||
wget
|
||||
fastfetch
|
||||
gpredict
|
||||
|
||||
# Package management
|
||||
pipx
|
||||
@@ -41,7 +45,6 @@
|
||||
cargo-audit
|
||||
cargo-expand
|
||||
cargo-tarpaulin
|
||||
pyenv
|
||||
act # GitHub Actions CLI
|
||||
|
||||
# File and directory operations
|
||||
@@ -53,6 +56,10 @@
|
||||
duf # Modern df
|
||||
zip
|
||||
unzip
|
||||
bottom # Modern top/htop
|
||||
glances # Advanced system monitoring tool
|
||||
procs # Modern ps
|
||||
hyperfine # Benchmarking tool
|
||||
|
||||
# Search and text processing
|
||||
ripgrep # Modern grep
|
||||
@@ -61,6 +68,7 @@
|
||||
jq # JSON processor
|
||||
yq # YAML processor
|
||||
xsv # CSV processor
|
||||
ncdu # Disk usage analyzer
|
||||
|
||||
# System monitoring and process management
|
||||
procs # Modern ps
|
||||
@@ -92,6 +100,9 @@
|
||||
|
||||
# Editors
|
||||
neovim
|
||||
## Neovim plugins
|
||||
vimPlugins.LazyVim
|
||||
|
||||
nano
|
||||
micro
|
||||
|
||||
@@ -101,5 +112,6 @@
|
||||
cmatrix
|
||||
figlet
|
||||
lolcat
|
||||
];
|
||||
]
|
||||
++ (with pkgs-unstable; [ ]);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [ ];
|
||||
home.packages = with pkgs; [ ddrescue ];
|
||||
}
|
||||
|
||||
108
config/home-manager/packages/workstation/brave-search-engines.sh
Executable file
108
config/home-manager/packages/workstation/brave-search-engines.sh
Executable file
@@ -0,0 +1,108 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BRAVE_DIR="$HOME/.config/BraveSoftware/Brave-Browser/Default"
|
||||
MAX_ATTEMPTS=30 # Maximum number of seconds to wait
|
||||
|
||||
# Function to check if database is locked
|
||||
is_db_locked() {
|
||||
local db_file="$1"
|
||||
if lsof "$db_file" >/dev/null 2>&1; then
|
||||
return 0 # true, db is locked
|
||||
else
|
||||
return 1 # false, db is not locked
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if profile exists
|
||||
if [ ! -d "$BRAVE_DIR" ]; then
|
||||
echo "Brave profile directory doesn't exist. Please run Brave at least once."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if Web Data exists
|
||||
if [ ! -f "$BRAVE_DIR/Web Data" ]; then
|
||||
echo "Web Data file doesn't exist. Please run Brave at least once."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Wait for database to be unlocked
|
||||
attempts=0
|
||||
while is_db_locked "$BRAVE_DIR/Web Data" && [ $attempts -lt $MAX_ATTEMPTS ]; do
|
||||
echo "Database is locked. Waiting... ($attempts/$MAX_ATTEMPTS)"
|
||||
sleep 1
|
||||
attempts=$((attempts + 1))
|
||||
done
|
||||
|
||||
if is_db_locked "$BRAVE_DIR/Web Data"; then
|
||||
echo "Database is still locked after $MAX_ATTEMPTS seconds. Please ensure Brave is completely closed and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Setting up search engines..."
|
||||
|
||||
# Create temporary file for SQL commands
|
||||
SQLCOMMANDS=$(mktemp)
|
||||
|
||||
cat > $SQLCOMMANDS << 'ENDSQL'
|
||||
DELETE FROM keywords WHERE keyword NOT IN ('@bookmarks', '@history');
|
||||
|
||||
INSERT INTO keywords (
|
||||
short_name, keyword, favicon_url, url, safe_for_autoreplace,
|
||||
date_created, usage_count, input_encodings, suggest_url, prepopulate_id,
|
||||
sync_guid, alternate_urls, last_visited, is_active
|
||||
) VALUES
|
||||
(
|
||||
'Brave', ':br',
|
||||
'https://cdn.search.brave.com/serp/v2/_app/immutable/assets/favicon.acxxetWH.ico',
|
||||
'https://search.brave.com/search?q={searchTerms}&source=desktop',
|
||||
1, 0, 0, 'UTF-8',
|
||||
'https://search.brave.com/api/suggest?q={searchTerms}&rich=true&source=desktop',
|
||||
550, '485bf7d3-0215-45af-87dc-538868000550', '[]', 0, 0
|
||||
),
|
||||
(
|
||||
'Google', ':gg',
|
||||
'https://www.google.com/images/branding/product/ico/googleg_alldp.ico',
|
||||
'{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:language}{google:prefetchSource}{google:searchClient}{google:sourceId}{google:contextualSearchVersion}ie={inputEncoding}',
|
||||
1, 0, 0, 'UTF-8',
|
||||
'{google:baseSuggestURL}search?{google:searchFieldtrialParameter}client={google:suggestClient}&gs_ri={google:suggestRid}&xssi=t&q={searchTerms}&{google:inputType}{google:omniboxFocusType}{google:cursorPosition}{google:currentPageUrl}{google:pageClassification}{google:clientCacheTimeToLive}{google:searchVersion}{google:sessionToken}{google:prefetchQuery}sugkey={google:suggestAPIKeyParameter}',
|
||||
1, '485bf7d3-0215-45af-87dc-538868000001', '[]', 0, 0
|
||||
),
|
||||
(
|
||||
'DuckDuckGo', ':dd',
|
||||
'https://duckduckgo.com/favicon.ico',
|
||||
'https://duckduckgo.com/?q={searchTerms}&t=brave',
|
||||
1, 0, 0, 'UTF-8',
|
||||
'https://ac.duckduckgo.com/ac/?q={searchTerms}&type=list',
|
||||
501, '485bf7d3-0215-45af-87dc-538868000501', '[]', 0, 0
|
||||
),
|
||||
(
|
||||
'NixOS', ':nix',
|
||||
'https://search.nixos.org/favicon.png',
|
||||
'https://search.nixos.org/packages?query={searchTerms}',
|
||||
1, 0, 0, '',
|
||||
'',
|
||||
0, '485bf7d3-0215-45af-87dc-538868000552', '[]', 0, 1
|
||||
),
|
||||
(
|
||||
'GoLink', ':go',
|
||||
'http://go/favicon.ico',
|
||||
'http://go/{searchTerms}',
|
||||
1, 0, 0, '',
|
||||
'',
|
||||
0, '485bf7d3-0215-45af-87dc-538868000551', '[]', 0, 1
|
||||
);
|
||||
ENDSQL
|
||||
|
||||
# Execute SQL commands
|
||||
sqlite3 "$BRAVE_DIR/Web Data" < $SQLCOMMANDS
|
||||
|
||||
# Cleanup
|
||||
rm $SQLCOMMANDS
|
||||
|
||||
echo "Search engines setup completed successfully!"
|
||||
|
||||
# Restart Brave if it was running before
|
||||
if [ "$BRAVE_WAS_RUNNING" = "1" ]; then
|
||||
echo "Restarting Brave..."
|
||||
brave &> /dev/null &
|
||||
fi
|
||||
39
config/home-manager/packages/workstation/brave.nix
Normal file
39
config/home-manager/packages/workstation/brave.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# Copy search engine configuration script
|
||||
home.file.".local/bin/brave-search-engines.sh" = {
|
||||
source = ./brave-search-engines.sh;
|
||||
executable = true;
|
||||
};
|
||||
|
||||
# Run search engine configuration script
|
||||
home.activation = {
|
||||
setBraveSearchEngines = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
PATH="${pkgs.procps}/bin:${pkgs.sqlite}/bin:$PATH" $HOME/.local/bin/brave-search-engines.sh
|
||||
'';
|
||||
};
|
||||
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
package = pkgs.brave;
|
||||
extensions = [
|
||||
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
|
||||
{ id = "aeblfdkhhhdcdjpifhhbdiojplfjncoa"; } # 1password
|
||||
{ id = "oldceeleldhonbafppcapldpdifcinji"; } # language tool
|
||||
{ id = "mnjggcdmjocbbbhaepdhchncahnbgone"; } # sponsor block
|
||||
{ id = "gebbhagfogifgggkldgodflihgfeippi"; } # return youtube dislike
|
||||
{ id = "neebplgakaahbhdphmkckjjcegoiijjo"; } # keepa
|
||||
{ id = "dnhpnfgdlenaccegplpojghhmaamnnfp"; } # augmented steam
|
||||
{ id = "fihnjjcciajhdojfnbdddfaoknhalnja"; } # I don't care about cookies
|
||||
{ id = "gphhapmejobijbbhgpjhcjognlahblep"; } # gnome shell integration
|
||||
{ id = "eadndfjplgieldjbigjakmdgkmoaaaoc"; } # xdebug helper
|
||||
{ id = "hlgbcneanomplepojfcnclggenpcoldo"; } # perplexity ai companion
|
||||
];
|
||||
commandLineArgs = [ ];
|
||||
};
|
||||
}
|
||||
@@ -1,7 +1,10 @@
|
||||
{ ... }:
|
||||
|
||||
let
|
||||
files = builtins.removeAttrs (builtins.readDir ./.) [ "default.nix" ];
|
||||
files = builtins.removeAttrs (builtins.readDir ./.) [
|
||||
"default.nix"
|
||||
"brave-search-engines.sh"
|
||||
];
|
||||
|
||||
# Import all other .nix files as modules
|
||||
moduleFiles = builtins.map (fname: ./. + "/${fname}") (builtins.attrNames files);
|
||||
|
||||
6
config/home-manager/packages/workstation/ghostty.nix
Normal file
6
config/home-manager/packages/workstation/ghostty.nix
Normal file
@@ -0,0 +1,6 @@
|
||||
{ ghostty, pkgs, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
ghostty.packages.${pkgs.system}.default
|
||||
];
|
||||
}
|
||||
@@ -3,13 +3,24 @@
|
||||
home.packages = with pkgs; [
|
||||
# GUI Application
|
||||
## Utilities
|
||||
pkgs-unstable.mission-center # Task Manager like Windows 11
|
||||
gnome.gnome-tweaks
|
||||
mission-center # Task Manager like Windows 11
|
||||
gnome-tweaks
|
||||
pinta # Paint.NET alternative
|
||||
bottles # Wine manager
|
||||
trayscale # Tray icon for Tailscale
|
||||
spacedrive # Virtual filesystem manager
|
||||
smile # Emoji picker
|
||||
gnome-frog # OCR tool
|
||||
gnome-boxes # Virtual machine manager
|
||||
deja-dup # Backup tool
|
||||
sqlitebrowser # SQLite database manager
|
||||
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
|
||||
telegram-desktop
|
||||
@@ -37,6 +48,7 @@
|
||||
### Games launchers
|
||||
lutris
|
||||
heroic
|
||||
dosbox
|
||||
|
||||
### Game utilities
|
||||
protonup-qt
|
||||
|
||||
7
config/home-manager/packages/workstation/steam.nix
Normal file
7
config/home-manager/packages/workstation/steam.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ pkgs, pkgs-unstable, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
steamcmd
|
||||
steam-tui
|
||||
];
|
||||
}
|
||||
12
config/home-manager/packages/workstation/thunderbird.nix
Normal file
12
config/home-manager/packages/workstation/thunderbird.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.thunderbird = {
|
||||
enable = true;
|
||||
profiles = {
|
||||
default = {
|
||||
isDefault = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
153
config/home-manager/packages/workstation/ulauncher.nix
Normal file
153
config/home-manager/packages/workstation/ulauncher.nix
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
# Initial configuration files
|
||||
settingsJson = builtins.toJSON {
|
||||
blacklisted-desktop-dirs = "/usr/share/locale:/usr/share/app-install:/usr/share/kservices5:/usr/share/fk5:/usr/share/kservicetypes5:/usr/share/applications/screensavers:/usr/share/kde4:/usr/share/mimelnk";
|
||||
clear-previous-query = true;
|
||||
disable-desktop-filters = false;
|
||||
grab-mouse-pointer = false;
|
||||
hotkey-show-app = "<Control>Space";
|
||||
render-on-screen = "mouse-pointer-monitor";
|
||||
show-indicator-icon = true;
|
||||
show-recent-apps = "4";
|
||||
terminal-command = "ghostty";
|
||||
theme-name = "dark";
|
||||
};
|
||||
|
||||
shortcutsJson = builtins.toJSON {
|
||||
"0bab9d26-5464-4501-bc95-9995d8fa1405" = {
|
||||
"id" = "0bab9d26-5464-4501-bc95-9995d8fa1405";
|
||||
"name" = "Google Search";
|
||||
"keyword" = "g";
|
||||
"cmd" = "https://google.com/search?q=%s";
|
||||
"icon" =
|
||||
"/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/google-search-icon.png";
|
||||
"is_default_search" = true;
|
||||
"run_without_argument" = false;
|
||||
"added" = 0;
|
||||
};
|
||||
"d72834d1-5d81-4f5d-a9f6-386b12110f56" = {
|
||||
"id" = "d72834d1-5d81-4f5d-a9f6-386b12110f56";
|
||||
"name" = "Stack Overflow";
|
||||
"keyword" = "so";
|
||||
"cmd" = "https://stackoverflow.com/search?q=%s";
|
||||
"icon" =
|
||||
"/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/stackoverflow-icon.svg";
|
||||
"is_default_search" = true;
|
||||
"run_without_argument" = false;
|
||||
"added" = 0;
|
||||
};
|
||||
"4dfcffeb-879c-49b2-83bb-c16254a7ce75" = {
|
||||
"id" = "4dfcffeb-879c-49b2-83bb-c16254a7ce75";
|
||||
"name" = "GoLink";
|
||||
"keyword" = "go";
|
||||
"cmd" = "http://go/%s";
|
||||
"icon" = null;
|
||||
"is_default_search" = false;
|
||||
"run_without_argument" = false;
|
||||
"added" = 0;
|
||||
};
|
||||
"40d1ed32-8fd3-4bf8-92f5-cbaa7cd607a1" = {
|
||||
"id" = "40d1ed32-8fd3-4bf8-92f5-cbaa7cd607a1";
|
||||
"name" = "NixOS";
|
||||
"keyword" = "nix";
|
||||
"cmd" = "https://search.nixos.org/packages?query=%s";
|
||||
"icon" = null;
|
||||
"is_default_search" = false;
|
||||
"run_without_argument" = false;
|
||||
"added" = 0;
|
||||
};
|
||||
"43d1ed32-8fd3-fbf8-94f5-cffa7cd607a1" = {
|
||||
"id" = "40d1ed32-8fd3-4bf8-92f5-cbaa7cd607a1";
|
||||
"name" = "GitHub";
|
||||
"keyword" = "gh";
|
||||
"cmd" = "https://github.com/search?q=%s";
|
||||
"icon" = null;
|
||||
"is_default_search" = false;
|
||||
"run_without_argument" = false;
|
||||
"added" = 0;
|
||||
};
|
||||
};
|
||||
|
||||
# Create a Python environment with all required packages
|
||||
pythonWithPackages = pkgs.python3.withPackages (
|
||||
ps: with ps; [
|
||||
pytz
|
||||
thefuzz
|
||||
tornado
|
||||
docker
|
||||
requests
|
||||
pint
|
||||
simpleeval
|
||||
parsedatetime
|
||||
fuzzywuzzy
|
||||
]
|
||||
);
|
||||
|
||||
# Desktop file content with GDK_BACKEND=x11
|
||||
desktopEntry = ''
|
||||
[Desktop Entry]
|
||||
Name=Ulauncher
|
||||
Comment=Application launcher for Linux
|
||||
Categories=GNOME;Utility;
|
||||
Exec=env GDK_BACKEND=x11 ${config.home.homeDirectory}/.local/bin/ulauncher-wrapped
|
||||
Icon=ulauncher
|
||||
Terminal=false
|
||||
Type=Application
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
# Extensions
|
||||
# https://github.com/friday/ulauncher-gnome-settings
|
||||
# https://ext.ulauncher.io/-/github-ulauncher-ulauncher-emoji
|
||||
# https://ext.ulauncher.io/-/github-tchar-ulauncher-albert-calculate-anything
|
||||
# https://ext.ulauncher.io/-/github-isacikgoz-ukill
|
||||
# https://ext.ulauncher.io/-/github-iboyperson-ulauncher-system
|
||||
# https://github.com/IgorVaryvoda/ulauncher-perplexity
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: { ulauncher = prev.ulauncher.override { python3 = pythonWithPackages; }; })
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
ulauncher
|
||||
pythonWithPackages # Make Python environment available system-wide
|
||||
];
|
||||
|
||||
# Create a wrapper script to set PYTHONPATH and GDK_BACKEND=x11
|
||||
home.file.".local/bin/ulauncher-wrapped" = {
|
||||
executable = true;
|
||||
text = ''
|
||||
#!${pkgs.bash}/bin/bash
|
||||
export GDK_BACKEND=x11
|
||||
export PYTHONPATH="${pythonWithPackages}/${pythonWithPackages.sitePackages}:$PYTHONPATH"
|
||||
exec ${pkgs.ulauncher}/bin/ulauncher "$@"
|
||||
'';
|
||||
};
|
||||
|
||||
# Update both desktop files
|
||||
xdg.configFile."autostart/ulauncher.desktop".text = desktopEntry;
|
||||
xdg.dataFile."applications/ulauncher.desktop".text = desktopEntry;
|
||||
|
||||
# Enable autostart for Ulauncher
|
||||
xdg.configFile."autostart/ulauncher.desktop".source =
|
||||
"${pkgs.ulauncher}/share/applications/ulauncher.desktop";
|
||||
|
||||
# Overwrite ulauncher settings and shortcuts
|
||||
home.activation.ulauncher-config = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
config_dir="$HOME/.config/ulauncher"
|
||||
mkdir -p "$config_dir"
|
||||
|
||||
rm -f "$config_dir/settings.json"
|
||||
echo '${settingsJson}' > "$config_dir/settings.json"
|
||||
rm -f "$config_dir/shortcuts.json"
|
||||
echo '${shortcutsJson}' > "$config_dir/shortcuts.json"
|
||||
'';
|
||||
}
|
||||
@@ -35,29 +35,38 @@
|
||||
dconf = {
|
||||
enable = true;
|
||||
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" = {
|
||||
color-scheme = "prefer-dark";
|
||||
};
|
||||
|
||||
# Pinned apps
|
||||
# add more by listing them with `gsettings list-recursively | grep favorite-apps`
|
||||
# add more by listing them with `gsettings list-recursively | grep favorite-apps | sed "s/,//g; s/'/\"/g"` then copy pasting the output here
|
||||
"org/gnome/shell" = {
|
||||
favorite-apps = [
|
||||
"io.github.zen_browser.zen.desktop"
|
||||
"brave-browser.desktop"
|
||||
"code.desktop"
|
||||
"org.telegram.desktop.desktop"
|
||||
"spotify.desktop"
|
||||
"com.plexamp.Plexamp.desktop"
|
||||
"vesktop.desktop"
|
||||
"org.gnome.Geary.desktop"
|
||||
"nemo.desktop"
|
||||
"org.gnome.Console.desktop"
|
||||
"org.gnome.Nautilus.desktop"
|
||||
];
|
||||
};
|
||||
|
||||
# GNOME Terminal settings
|
||||
"org/gnome/Console" = {
|
||||
use-system-font = false;
|
||||
custom-font = "Hack Nerd Font 14";
|
||||
custom-font = "Hack Nerd Font 13";
|
||||
theme = "night";
|
||||
};
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
xdg.mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
# Zen Browser
|
||||
"application/xhtml+xml" = [ "io.github.zen_browser.zen.desktop" ];
|
||||
"text/html" = [ "io.github.zen_browser.zen.desktop" ];
|
||||
"x-scheme-handler/http" = [ "io.github.zen_browser.zen.desktop" ];
|
||||
"x-scheme-handler/https" = [ "io.github.zen_browser.zen.desktop" ];
|
||||
# Brave Browser
|
||||
"application/xhtml+xml" = [ "brave-browser.desktop" ];
|
||||
"text/html" = [ "brave-browser.desktop" ];
|
||||
"x-scheme-handler/http" = [ "brave-browser.desktop" ];
|
||||
"x-scheme-handler/https" = [ "brave-browser.desktop" ];
|
||||
|
||||
# Geary
|
||||
"x-scheme-handler/mailto" = [ "org.gnome.Geary.desktop" ];
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
user-themes
|
||||
weather-oclock
|
||||
native-window-placement
|
||||
kimpanel
|
||||
]
|
||||
++ (with pkgs-unstable.gnomeExtensions; [
|
||||
tiling-shell
|
||||
@@ -31,6 +32,8 @@
|
||||
battery-health-charging
|
||||
just-perfection
|
||||
smile-complementary-extension
|
||||
vitals
|
||||
clipboard-indicator
|
||||
]);
|
||||
|
||||
# Copy burn-my-windows profile to user config
|
||||
@@ -43,10 +46,18 @@
|
||||
|
||||
dconf = {
|
||||
settings = {
|
||||
# vitals settings
|
||||
"org/gnome/shell/extensions/vitals" = {
|
||||
position-in-panel = 0;
|
||||
use-higher-precision = true;
|
||||
icon-style = 1;
|
||||
};
|
||||
|
||||
# To get an ID of an extension, run `gnome-extensions list`
|
||||
"org/gnome/shell" = {
|
||||
disable-user-extensions = false;
|
||||
enabled-extensions = [
|
||||
"kimpanel@kde.org"
|
||||
"lilypad@shendrew.github.io"
|
||||
"tilingshell@ferrarodomenico.com"
|
||||
"gsconnect@andyholmes.github.io"
|
||||
@@ -68,9 +79,22 @@
|
||||
"just-perfection-desktop@just-perfection"
|
||||
"native-window-placement@gnome-shell-extensions.gcampax.github.com"
|
||||
"smile-extension@mijorus.it"
|
||||
"Vitals@CoreCoding.com"
|
||||
"clipboard-indicator@tudmotu.com"
|
||||
];
|
||||
};
|
||||
|
||||
# Clipboard indicator settings
|
||||
"org/gnome/shell/extensions/clipboard-indicator" = {
|
||||
history-size = 50;
|
||||
cache-size = 50;
|
||||
preview-size = 50;
|
||||
strip-text = true;
|
||||
keep-selected-on-clear = true;
|
||||
move-item-first = true;
|
||||
toggle-menu = [ "<Shift><Alt>V" ];
|
||||
};
|
||||
|
||||
# Perfection settings
|
||||
"org/gnome/shell/extensions/just-perfection" = {
|
||||
theme = false;
|
||||
@@ -85,6 +109,8 @@
|
||||
|
||||
# Configure dash-to-dock
|
||||
"org/gnome/shell/extensions/dash-to-dock" = {
|
||||
pressure-threshold = 250;
|
||||
require-pressure-to-show = false;
|
||||
apply-custom-theme = false;
|
||||
apply-glossy-effect = false;
|
||||
autohide-in-fullscreen = true;
|
||||
@@ -278,6 +304,29 @@
|
||||
"org/gnome/shell/extensions/user-theme" = {
|
||||
name = "Yaru-purple-dark";
|
||||
};
|
||||
|
||||
# Lilypad settings
|
||||
"org/gnome/shell/extensions/lilypad/rightbox-order" = {
|
||||
|
||||
# In case this is updated, run: `dconf read /org/gnome/shell/extensions/lilypad/rightbox-order | sed "s/,//g; s/'/\"/g ` then copy pasting the output here
|
||||
rightbox-order = [
|
||||
"lilypad"
|
||||
"system_monitor"
|
||||
"appindicator_legacy_TelegramDesktop"
|
||||
"appindicator_legacy_1password"
|
||||
"spotify_client"
|
||||
"com_github_eneshecan_WhatsAppForLinux_Tray"
|
||||
"appindicator_legacy_Electron"
|
||||
"steam"
|
||||
"appindicator_legacy_steam"
|
||||
"workspace_indicator"
|
||||
"vitalsMenu"
|
||||
"StatusNotifierItem"
|
||||
"clipboardIndicator"
|
||||
"screenSharing"
|
||||
];
|
||||
show-icons = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/missioncenter/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emotes/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/frog/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/ulauncher/"
|
||||
];
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/1password-quick-access" = {
|
||||
@@ -28,7 +30,7 @@
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = {
|
||||
binding = "<Ctrl><Alt>t";
|
||||
command = "kgx";
|
||||
command = "ptyxis --new-window"; # ghostty doesn't work on Fedora atm
|
||||
name = "terminal";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emotes" = {
|
||||
@@ -36,5 +38,15 @@
|
||||
command = "smile";
|
||||
name = "emotes";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/frog" = {
|
||||
binding = "<Shift><Alt>3";
|
||||
command = "frog";
|
||||
name = "frog-ocr";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/ulauncher" = {
|
||||
binding = "<Control>Space";
|
||||
command = "ulauncher-toggle";
|
||||
name = "ulauncher";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{ config, pkgs, ... }: { }
|
||||
@@ -1,6 +1,8 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
# OpenSSH server
|
||||
# Install xanmod kernel
|
||||
# boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_stable.zfs;
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
ports = [ 400 ];
|
||||
@@ -16,13 +18,29 @@
|
||||
};
|
||||
};
|
||||
|
||||
# Open ports in the firewall
|
||||
networking.firewall = {
|
||||
networking = {
|
||||
firewall = {
|
||||
enable = true;
|
||||
|
||||
# External ports
|
||||
allowedTCPPorts = [
|
||||
# SSH
|
||||
400
|
||||
## Portforwarded
|
||||
80 # HTTP
|
||||
443 # HTTPS
|
||||
22 # Git over SSH
|
||||
25565 # Minecraft
|
||||
24454 # Minecraft (Voice Chat)
|
||||
32400 # Plex
|
||||
51820 # WireGuard
|
||||
|
||||
## Internal services / TailScale
|
||||
400 # SSH
|
||||
];
|
||||
allowedUDPPorts = [ ];
|
||||
|
||||
allowedUDPPorts = [
|
||||
51820 # WireGuard
|
||||
25565 # Minecraft
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
@@ -7,7 +7,19 @@
|
||||
services.xserver.displayManager.gdm.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
|
||||
services.xserver.xkb = {
|
||||
|
||||
@@ -16,13 +16,7 @@
|
||||
]
|
||||
# Include packages based on whether this is a server or workstation.
|
||||
++ lib.optional isServer ./packages/server/default.nix
|
||||
++ lib.optional isWorkstation ./packages/workstation/default.nix
|
||||
# Include docker if this is a server, otherwise include nothing because we don't intend on running docker services on workstations.
|
||||
++ lib.optional isServer ./docker/default.nix;
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
++ lib.optional isWorkstation ./packages/workstation/default.nix;
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
@@ -72,5 +66,5 @@
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (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?
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./wireguard.nix
|
||||
./duplicati.nix
|
||||
./factorio.nix
|
||||
./golink.nix
|
||||
];
|
||||
}
|
||||
@@ -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" ];
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
services:
|
||||
duplicati:
|
||||
image: lscr.io/linuxserver/duplicati:latest
|
||||
environment:
|
||||
- TZ=Europe/Amsterdam
|
||||
- CLI_ARGS=
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- /mnt:/source/mnt
|
||||
- /etc/docker:/source/etc/docker
|
||||
ports:
|
||||
- 8200:8200
|
||||
restart: unless-stopped
|
||||
@@ -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" ];
|
||||
};
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
services:
|
||||
factorio-server-manager:
|
||||
image: "ofsm/ofsm:latest"
|
||||
container_name: "factorio-server-manager"
|
||||
restart: "unless-stopped"
|
||||
environment:
|
||||
- "FACTORIO_VERSION=stable"
|
||||
ports:
|
||||
- "5080:80"
|
||||
- "34197:34197/udp"
|
||||
volumes:
|
||||
- "./fsm:/opt/fsm-data"
|
||||
- "./saves:/opt/factorio/saves"
|
||||
- "./mods:/opt/factorio/mods"
|
||||
- "./config:/opt/factorio/config"
|
||||
- "./mod_packs:/opt/fsm/mod_packs"
|
||||
@@ -1,20 +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" ];
|
||||
};
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
TS_AUTHKEY=
|
||||
@@ -1,8 +0,0 @@
|
||||
services:
|
||||
golink:
|
||||
image: ghcr.io/tailscale/golink:main
|
||||
environment:
|
||||
- TS_AUTHKEY=${TS_AUTHKEY}
|
||||
volumes:
|
||||
- ./data:/home/nonroot
|
||||
restart: "unless-stopped"
|
||||
@@ -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" ];
|
||||
};
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
wireguard:
|
||||
image: lscr.io/linuxserver/wireguard:latest
|
||||
container_name: wireguard
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
environment:
|
||||
- PEERS=fold6,pc,laptop
|
||||
volumes:
|
||||
- ./config:/config
|
||||
ports:
|
||||
- 51820:51820/udp
|
||||
sysctls:
|
||||
- net.ipv4.conf.all.src_valid_mark=1
|
||||
restart: unless-stopped
|
||||
|
||||
93
config/nixos/flake.lock
generated
93
config/nixos/flake.lock
generated
@@ -1,28 +1,80 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1730741070,
|
||||
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
|
||||
"lastModified": 1717312683,
|
||||
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "flake-compat",
|
||||
"rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.05",
|
||||
"owner": "nix-community",
|
||||
"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",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1730531603,
|
||||
"narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=",
|
||||
"lastModified": 1741010256,
|
||||
"narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d",
|
||||
"rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -32,9 +84,26 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixos-cosmic": "nixos-cosmic",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
description = "menno's dotfiles";
|
||||
|
||||
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";
|
||||
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
|
||||
};
|
||||
|
||||
outputs =
|
||||
@@ -11,6 +12,7 @@
|
||||
self,
|
||||
nixpkgs,
|
||||
nixpkgs-unstable,
|
||||
nixos-cosmic,
|
||||
}:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
@@ -35,7 +37,10 @@
|
||||
./configuration.nix
|
||||
];
|
||||
specialArgs = {
|
||||
inherit pkgs-unstable;
|
||||
inherit
|
||||
pkgs-unstable
|
||||
nixos-cosmic
|
||||
;
|
||||
isWorkstation = true;
|
||||
isServer = false;
|
||||
};
|
||||
@@ -49,7 +54,10 @@
|
||||
./configuration.nix
|
||||
];
|
||||
specialArgs = {
|
||||
inherit pkgs-unstable;
|
||||
inherit
|
||||
pkgs-unstable
|
||||
nixos-cosmic
|
||||
;
|
||||
isWorkstation = true;
|
||||
isServer = false;
|
||||
};
|
||||
|
||||
@@ -9,29 +9,49 @@
|
||||
imports = [ /etc/nixos/hardware-configuration.nix ];
|
||||
networking.hostName = "mennos-gamingpc";
|
||||
|
||||
# Enable Vulkan support for AMD graphics cards
|
||||
hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ amdvlk ];
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/ac5a70cf-4b12-4d02-b5b4-a6eddf4c40b5";
|
||||
fsType = "ext4";
|
||||
options = [ "noatime" ];
|
||||
};
|
||||
|
||||
# Enable OpenGL
|
||||
hardware.opengl = {
|
||||
networking.interfaces.enp8s0.wakeOnLan = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
# Enable Vulkan support for AMD graphics cards
|
||||
hardware.graphics.extraPackages32 = with pkgs.pkgsi686Linux; [ amdvlk ];
|
||||
|
||||
# Swap file (Desktop PC has 48GB of RAM so 8GB swap should be enough)
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/swapfile";
|
||||
size = 8192;
|
||||
}
|
||||
];
|
||||
|
||||
# Enable graphics
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
|
||||
# Enable the latest AMDGPU drivers
|
||||
extraPackages = with pkgs; [
|
||||
amdvlk
|
||||
rocm-opencl-icd
|
||||
rocm-opencl-runtime
|
||||
rocmPackages.clr
|
||||
];
|
||||
};
|
||||
|
||||
# Add ROCm packages
|
||||
# Add ROCm packages and nvtop
|
||||
environment.systemPackages = with pkgs; [
|
||||
rocmPackages.rocm-smi
|
||||
rocmPackages.clr
|
||||
rocmPackages.rocm-core
|
||||
rocmPackages.hipcc
|
||||
rocmPackages.rocm-device-libs
|
||||
nvtopPackages.amd
|
||||
];
|
||||
}
|
||||
|
||||
@@ -9,40 +9,76 @@
|
||||
imports = [ /etc/nixos/hardware-configuration.nix ];
|
||||
networking.hostName = "mennos-laptop";
|
||||
|
||||
# Enable OpenGL
|
||||
hardware.opengl.enable = true;
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/1356cd09-5c55-45b5-8b06-6aadc84cee37";
|
||||
fsType = "ext4";
|
||||
options = [ "noatime" ];
|
||||
};
|
||||
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
# Bootloader
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
# Enable graphics
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
amdvlk
|
||||
rocmPackages.clr
|
||||
];
|
||||
};
|
||||
|
||||
# Swap file (Laptop has 32GB of RAM so 8GB swap should be enough)
|
||||
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 = {
|
||||
# Modesetting is required.
|
||||
# Enable modesetting
|
||||
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;
|
||||
# Power management configuration
|
||||
powerManagement = {
|
||||
enable = true;
|
||||
finegrained = false; # Disabled as it requires offload mode
|
||||
};
|
||||
|
||||
# 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;
|
||||
# Prime configuration for hybrid graphics
|
||||
prime = {
|
||||
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;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
|
||||
boot.kernelParams = [
|
||||
"amdgpu.sg_display=0"
|
||||
"nvidia-drm.modeset=1"
|
||||
];
|
||||
}
|
||||
|
||||
@@ -6,43 +6,59 @@
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [ /etc/nixos/hardware-configuration.nix ];
|
||||
imports = [
|
||||
/etc/nixos/hardware-configuration.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.hostId = "64519940";
|
||||
|
||||
# Enable OpenGL
|
||||
# hardware.opengl.enable = true;
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
# # Load nvidia driver for Xorg and Wayland
|
||||
# services.xserver.videoDrivers = [ "nvidia" ];
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# hardware.nvidia = {
|
||||
# # Modesetting is required.
|
||||
# modesetting.enable = true;
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
# # 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;
|
||||
# Enable graphics
|
||||
hardware.graphics.enable = true;
|
||||
|
||||
# # 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;
|
||||
# nvtop, a system monitor for GPUs
|
||||
environment.systemPackages = with pkgs; [ nvtopPackages.nvidia ];
|
||||
|
||||
# # 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;
|
||||
# Enable NVIDIA Docker support
|
||||
# test with: $ docker run --rm -it --device=nvidia.com/gpu=all ubuntu:latest nvidia-smi
|
||||
hardware.nvidia-container-toolkit.enable = true;
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# # Enable the Nvidia settings menu,
|
||||
# # accessible via `nvidia-settings`.
|
||||
# nvidiaSettings = true;
|
||||
# Swap file (Laptop has 64GB of RAM so 16GB swap should be enough)
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/swapfile";
|
||||
size = 16384;
|
||||
}
|
||||
];
|
||||
|
||||
# # Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
# package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
# };
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = false;
|
||||
powerManagement.finegrained = false;
|
||||
open = false;
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Use the latest driver from the unstable channel
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
}
|
||||
|
||||
147
config/nixos/hardware/mennos-server/zfs.nix
Normal file
147
config/nixos/hardware/mennos-server/zfs.nix
Normal file
@@ -0,0 +1,147 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
# Create a script to set permissions
|
||||
permissionsScript = pkgs.writeShellScriptBin "set-zfs-permissions" ''
|
||||
# Set default permissions for all service directories
|
||||
find /mnt/services -mindepth 1 -maxdepth 1 -type d \
|
||||
-exec chmod 775 {} \; \
|
||||
-exec chown menno:users {} \;
|
||||
|
||||
# Special cases
|
||||
chmod 774 /mnt/services/golink
|
||||
chown 65532:users /mnt/services/golink
|
||||
|
||||
chmod 754 /mnt/services/torrent
|
||||
chown menno:users /mnt/services/torrent
|
||||
|
||||
chmod 755 /mnt/services/proxy
|
||||
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
|
||||
for dir in /mnt/{ai,astrophotography,audiobooks,downloads,ISOs,movies,music,old_backups,photos,stash,tvshows,VMs}; do
|
||||
chmod 755 "$dir"
|
||||
chown menno:users "$dir"
|
||||
done
|
||||
'';
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
zfs
|
||||
zfstools
|
||||
permissionsScript
|
||||
smartmontools
|
||||
];
|
||||
|
||||
# Add the permissions service
|
||||
systemd.services.zfs-permissions = {
|
||||
description = "Set ZFS mount permissions";
|
||||
|
||||
# Run after ZFS mounts are available
|
||||
after = [ "zfs.target" ];
|
||||
requires = [ "zfs.target" ];
|
||||
|
||||
# Run on boot and every 6 hours
|
||||
startAt = "*-*-* */6:00:00";
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${permissionsScript}/bin/set-zfs-permissions";
|
||||
User = "root";
|
||||
Group = "root";
|
||||
};
|
||||
};
|
||||
|
||||
# Enable ZFS support
|
||||
boot.supportedFilesystems = [
|
||||
"ntfs"
|
||||
"zfs"
|
||||
];
|
||||
|
||||
# ZFS system services
|
||||
services.zfs = {
|
||||
autoScrub = {
|
||||
enable = true;
|
||||
interval = "weekly";
|
||||
};
|
||||
};
|
||||
|
||||
# If you want to keep compression settings
|
||||
boot.kernelParams = [
|
||||
"zfs.zfs_compressed_arc_enabled=1" # Enable compressed ARC
|
||||
"zfs.zfs_arc_max=21474836480" # 20 GiB
|
||||
];
|
||||
|
||||
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" = {
|
||||
device = "datapool/ai";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/astrophotography" = {
|
||||
device = "datapool/astro";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/audiobooks" = {
|
||||
device = "datapool/audiobooks";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/downloads" = {
|
||||
device = "datapool/downloads";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/ISOs" = {
|
||||
device = "datapool/isos";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/movies" = {
|
||||
device = "datapool/movies";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/music" = {
|
||||
device = "datapool/music";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/old_backups" = {
|
||||
device = "datapool/old_backups";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/photos" = {
|
||||
device = "datapool/photos";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/services" = {
|
||||
device = "datapool/services";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/stash" = {
|
||||
device = "datapool/stash";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/tvshows" = {
|
||||
device = "datapool/tv_shows";
|
||||
fsType = "zfs";
|
||||
};
|
||||
"/mnt/VMs" = {
|
||||
device = "datapool/vms";
|
||||
fsType = "zfs";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,12 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ ./virtualization.nix ];
|
||||
imports = [ ./virtualisation.nix ];
|
||||
|
||||
environment.systemPackages = with pkgs; [ yubikey-manager ];
|
||||
environment.systemPackages = with pkgs; [
|
||||
yubikey-manager
|
||||
trash-cli
|
||||
sqlite # Used for managing SQLite databases (Brave Settings etc.)
|
||||
xcp # Rust implementation of cp/mv command
|
||||
pandoc # Document converter (Markdown, HTML, PDF etc.) (Mostly used for static site generators)
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
{ 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;
|
||||
imports = [
|
||||
./juicefs.nix
|
||||
];
|
||||
|
||||
# Enable JuiceFS
|
||||
services.juicefsCustom = {
|
||||
enable = true;
|
||||
redisUrl = "redis://:your-redis-password@localhost:6379/0";
|
||||
mountPoint = "/mnt/object_storage";
|
||||
cacheDir = "/var/jfsCache";
|
||||
};
|
||||
}
|
||||
|
||||
97
config/nixos/packages/server/juicefs.nix
Normal file
97
config/nixos/packages/server/juicefs.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,10 +1,15 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, pkgs-unstable, ... }:
|
||||
{
|
||||
# 1Password
|
||||
programs._1password.enable = true;
|
||||
# Enables the 1Password CLI
|
||||
programs._1password = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Enables the 1Password desktop app
|
||||
programs._1password-gui = {
|
||||
enable = true;
|
||||
polkitPolicyOwners = [ "menno" ];
|
||||
package = pkgs-unstable._1password-gui;
|
||||
};
|
||||
|
||||
environment.etc = {
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
{
|
||||
# Import all the package modules
|
||||
imports = [
|
||||
./1password.nix
|
||||
./flatpak.nix
|
||||
./steam.nix
|
||||
./pano.nix
|
||||
./1password.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{ pkgs, ... }: {
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.flatpak.enable = true;
|
||||
systemd.services.flatpak-repo = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
environment.systemPackages = [ (pkgs.callPackage ./pano { }) ];
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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';
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -13,6 +13,9 @@
|
||||
"docker"
|
||||
"video"
|
||||
"render"
|
||||
"users"
|
||||
"input"
|
||||
"adbusers"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,2 +1,8 @@
|
||||
# This is the authrorized_keys file for the user mennos-laptop
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr
|
||||
|
||||
# Samsung S24U
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSJwfqOZQxGDbM07JziQeBNirvQxhFd6nEwWPjy1zCo u0_a555@localhost
|
||||
|
||||
# Menno's 2025 SSH Key
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Hfx8wgkc57TXX1TCMHcNrCdjbfog5QeHFJfl7IeD mennos-2025-sshkey
|
||||
|
||||
@@ -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
|
||||
|
||||
# Samsung S24U
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSJwfqOZQxGDbM07JziQeBNirvQxhFd6nEwWPjy1zCo u0_a555@localhost
|
||||
|
||||
# Menno's 2025 SSH Key
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Hfx8wgkc57TXX1TCMHcNrCdjbfog5QeHFJfl7IeD mennos-2025-sshkey
|
||||
|
||||
@@ -1,2 +1,8 @@
|
||||
# This is the authrorized_keys file for the user mennos-laptop
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+sKpcREOUjwMMSzEWAso6830wbOi8kUxqpuXWw5gHr
|
||||
|
||||
# Samsung S24U
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSJwfqOZQxGDbM07JziQeBNirvQxhFd6nEwWPjy1zCo u0_a555@localhost
|
||||
|
||||
# Menno's 2025 SSH Key
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Hfx8wgkc57TXX1TCMHcNrCdjbfog5QeHFJfl7IeD mennos-2025-sshkey
|
||||
|
||||
@@ -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
|
||||
|
||||
# Samsung S24U
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSJwfqOZQxGDbM07JziQeBNirvQxhFd6nEwWPjy1zCo u0_a555@localhost
|
||||
|
||||
# Menno's 2025 SSH Key
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE22Hfx8wgkc57TXX1TCMHcNrCdjbfog5QeHFJfl7IeD mennos-2025-sshkey
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIdzswSvGKIFj/0sAIAc0IMa6q0CiEqk/RjpEaea0RpVSxKL8v/E0HyqiC
|
||||
nZBGvcaadZ+uQ/Ndxk3WfehTYuXWZk9gotfoQ91TrvMcCNt0ag6sMdVLHtEzoXWF
|
||||
93wn4UDc9kv56mfU+JnSK5Rv6euXhZ8ZapEqFIvmh7kGkX/nwTJFNU/f6jz0yhaw
|
||||
uu/pa9b9NFpIH7IoelJ2SzJMX3ZhX5aVcY0ojOEvlfRxOGdsOxUK2Ifd9MWV9Tyd
|
||||
Sgsa3uFFcL4STwXNq6umwlfkk/SOqtq5WAA=
|
||||
=Zo/k
|
||||
jA0ECQMIyS/QhVzk8iz/0sAIAYCHd2CTLa3u1Ajj4oj7tqJivyB2moggjt7f0uep
|
||||
qpah5aM35C/BnzMVRkg6CBWbMFhBRYlRaJ7oyQMPlq/OAtDuk4heXhQfqN24PEEb
|
||||
X5SzXFaTtW01HIHy2JNaVaz7qU4RsRctayjPe6jBKfkDrxbLpKtUf1ETNuwqgMOR
|
||||
pyZjgoBO6Wo2DUkeq3cku95ejsX/63XXnTKW0CXwVdvolo7OzdBIfNsiSMTnvnr5
|
||||
s1jFbGH7K3QOz7FcSyanG4gK+z3x6Njaduc=
|
||||
=tmo1
|
||||
-----END PGP MESSAGE-----
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMI5RidcMTcDnv/0pAB3EfRm5WT3Niz66zAHGrokTLfnp+yZ7BN6Tt3I6M1
|
||||
wGWBBCY11yJZ5WcD2h4jSdqJhdxsa2TJPKnUvkn4A2to1KMDpq72U4yzMfGc99K6
|
||||
tP9E6FiktACZQGlUaPVZe/Ut15jHSUEo894tso7XG/dWxqKbVMEjzMjwwC6WxJK1
|
||||
fd5WM2bor0fY9K9zMIOweCo=
|
||||
=2wZs
|
||||
jA0ECQMI3rCkM4WCKnn/0sASAQjifcMA4M5hjwkP8dZXxah9d8g8YeofFTPLgPMm
|
||||
zUR7BcyuniGeHkdkPhVIPDU9ea8BB6JVgldGNeHOh0Rj+OdO95RzPkC4VyGlhVC7
|
||||
qoDdy+QQUOVImgEjbNLSOD3VKJzYQMfcmF2X6yZ0TpfOeHZyOmaVXQU+hdIl2g9r
|
||||
zJjzKh2Ukp0VAF+1mp6mcU3fKhwJyffxF1491ExXYM80q1+S247/zLgU1/nQi/u5
|
||||
cX1cV14qi/nFQdmuNlNjahusvSpVtkhsa8TYMRyDP9rr+WdQ
|
||||
=an0w
|
||||
-----END PGP MESSAGE-----
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIJX/hE+QfNpz/0sBiAfL+UCwD3Q6xmXtnWFfx2jaPVzJ0LsxWCirV4NBR
|
||||
XdIYJ+bHdCPB6kTTCxbtY/oDMdC2POpDTCrF1hz76Ca42lvTN2OLxPuOmZwhp+GL
|
||||
fTYUaMcGcP5u6Lo3fHSeOo+EKLK9//S5HhKTn8ymJh+MllQbpBKBoO/GB+qOIcvh
|
||||
esRPM1szohidAYhpAmmLw0m7+LRrC5MN0pbrG80D0kchkhl+XYIUX39eUymbuAgZ
|
||||
ZIdJQ4inS/cp8FKZO0JI4HD6fu9+UFMeJrpv61XvQ3C06urNexyjNLvpUM/up/Nz
|
||||
xfCIiNTGvJY21kOAV3j9xtBz+ApZOgixzLr+QYHwJsKQPRlCRONhe+L8dpS6kIXm
|
||||
R/HEujbrurgfxlfe/jUCc96yGLY=
|
||||
=dKuW
|
||||
jA0ECQMIECtNQigofUT/0sA7AfQFumfYw02g3y4nQuPYrfbgyHuMVCsMk+nLlcLb
|
||||
5I+zgR8c1ie/S5XBk3wLlJ0suhb8m4ifZOJoRcIW7G+ISTPjIetaJQnkvObKUBgG
|
||||
QXz54oWcQYXMeaGcEq442gU0x+S3HVU2GcIhRdiUuZ5DYbaEsYnLcPLBrp73a/wE
|
||||
+hb3IZC1zGcijpC4ovcVVAZvHUaKpV0hCzJXNGgvPW0H7/GRxQyPKjghUQ7DgCRu
|
||||
4u7t/GU2JDrep+nteUu5Rs+P7bypZdyripMj6BxoqHmwjj1ddeSK7Bv602Nt+7/n
|
||||
Bcg8xpViAasXREuaR3Z6r9SFlex7qbQjMMBtb2M=
|
||||
=wrl9
|
||||
-----END PGP MESSAGE-----
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMI5QTAzMem3iX/0sB7Af9vzRP3ckaEbBXnuuDV2rySfPhVUIhWhCLrdDlF
|
||||
VPKF+LpsZtQ/YTMDUIs+LyY4+9WEAnA4BtvoKT0+dlG7KrkVZm0cdnuYPAjxUj/d
|
||||
UY6Oe+SxhWZ8REwee1bIezwOR1TDrCZ4Puqhzku6ldTCQ4TStm21yX6n0bC1sDZW
|
||||
crLZokGAnrdMurXNskjoCy7NKbA+qHPuX2dwjDLc5mM1nFUwSVcQKDGT2wa7oYgQ
|
||||
f/9BhI9TH/1uepyRErZq6J1DR0sc2q4ZEsMrIR7gqdGLlflFuZwZvmTrFybLEihV
|
||||
U3G+09UM1utbGlgkex7yOTp0DZ9/UxYvVdunrvS4WLM29ULQe6oGt7coTD9MiCQe
|
||||
2OvH/dvSNSgGcHvrYMEcORaLDtHJgYVvhY1CgYXrvthUsehAxBalSYKyFZfJ
|
||||
=XWXt
|
||||
jA0ECQMILwzTWNDBbZX/0sAeAQMlmiKRJM5YPtC78LvlLroqE5R6hysJq1nGV34U
|
||||
CcY7XmuLz/Bvx2/ZGE1urY48AmgNZraiKOh8kfTG5T7dCTqrkMiz1MpNRYVdnXvW
|
||||
LOanl3+alv6tmosD52zn4vRmRCnIaqE/k6ne+NV4BuRj0u9qWLoNI/7uGFnjcvI3
|
||||
mGYlDF7ArQH0gVpmW8wmlNFzMPe4ccqWMjGbpB1h3TEALy4nh2wwNH5PvF1FKesJ
|
||||
iq4Vvhslo8LbyjQdkA7/fPlYEu1MDJKDCaHWwmAevMwNuGNLrdupyOf2KkHSYmUB
|
||||
=ULsR
|
||||
-----END PGP MESSAGE-----
|
||||
|
||||
34
secrets/transip-discountoffice.pem.gpg
Normal file
34
secrets/transip-discountoffice.pem.gpg
Normal file
@@ -0,0 +1,34 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
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
|
||||
PppWvUzUlOlJJPetJb5F
|
||||
=U7VL
|
||||
-----END PGP MESSAGE-----
|
||||
@@ -1,12 +1,12 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIy4/a+BamXVv/0sCXAeA0EVKKki2mEoXI7GFg1orbBpnUfvM/sj7ISlHE
|
||||
hues8qd3343KYZyIv/dBweWK13koZmXchfMPMHN61ygA9Y0uf35VLaMKWSudF77a
|
||||
aHDdnMtuSnd0fdDQ3GaYIRGFd6SlRCpfiQ2Nhno+69GRotCxpgoNife9AQVPS4nM
|
||||
ycqURKfck2UG0bPLSpjMEiZz+pFaNQ3vyGl6sjC5Zj2SkZDzftJb+TkEshwI6FZ/
|
||||
XFaodI2rFLQb/oGFQKnZ/fbyChhgfqWn3Na+KMupqJ4S3/Ef3WpTdZ/kYvgVUih6
|
||||
H3iZFptSJ8sfOnabebwvziHKTh/3H7Tek9jgoBsJ2fYdpDx5l/Oz9jy7IZUo7+hl
|
||||
xYWEHENxNQAXIZAl80uaCuLzzW8wK0vWDju8en4dAxms1dNRiZRNSMuE4IZ+/eYP
|
||||
bz9JnJguccAyaJvDGrGnE9GtegN3l3jYaw==
|
||||
=p0YP
|
||||
jA0ECQMI475OuKYqXMv/0sCXAShLaWEeFxtqCZ2dN7OqEy5ucrqr9u0I0yurJbwo
|
||||
lYxL/g/tHRoqVDiLHx0hJMtmL5mltn+GBbGA1Y5wcqQyYvU74qUEn8iCbw1BYMQ+
|
||||
1zEMwZZG5FEmW1nHYA1OM0JeWPDqpveMr/XBk8P/bI5zDr93XXKshFsuVbHvyPBJ
|
||||
CiPIXPv1Pu8rJHcIjEDkknnz48ZeS2RR2N30LFmTBdD6ZmkLfq8vYtPkJFW6rb0w
|
||||
jTIsDyzDbtCF6YU9VnARNCQo6y5gEUi+nZi730trfSUmFJEa1BKwG4aE46bxborn
|
||||
sHmV1NTN2rZrxMRIRe05S4zqZ7Dod6eN+KBDZsSXuYWxD+sUjmWA1agYJndhk2xr
|
||||
HzIFJwk7kNgKZnW6QY+/phxJX/txHd5GMjwjjYBSJ3M7Txm7BBtNoflz0TqBaIay
|
||||
9vJUhWMfcPETc0/CB3S5PiMbVVGyw5jhLg==
|
||||
=S/fh
|
||||
-----END PGP MESSAGE-----
|
||||
|
||||
60062
secrets/wp/1.jpg.gpg
60062
secrets/wp/1.jpg.gpg
File diff suppressed because it is too large
Load Diff
45638
secrets/wp/10.jpg.gpg
45638
secrets/wp/10.jpg.gpg
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
16574
secrets/wp/12.jpg.gpg
16574
secrets/wp/12.jpg.gpg
File diff suppressed because it is too large
Load Diff
310046
secrets/wp/13.png.gpg
310046
secrets/wp/13.png.gpg
File diff suppressed because it is too large
Load Diff
13260
secrets/wp/2.jpg.gpg
13260
secrets/wp/2.jpg.gpg
File diff suppressed because it is too large
Load Diff
12010
secrets/wp/3.jpg.gpg
12010
secrets/wp/3.jpg.gpg
File diff suppressed because it is too large
Load Diff
55644
secrets/wp/4.jpg.gpg
55644
secrets/wp/4.jpg.gpg
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user