Compare commits

..

1 commit

Author SHA1 Message Date
7e84a60ae6 [thunderbird] Test adding calendars to config 2023-09-01 18:55:03 +02:00
132 changed files with 4723 additions and 7416 deletions

4
.git-crypt/.gitattributes vendored Normal file
View file

@ -0,0 +1,4 @@
# Do not edit this file. To specify the files to encrypt, create your own
# .gitattributes file in the directory where your files are.
* !filter !diff
*.gpg binary

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
nixos/secrets/** filter=git-crypt diff=git-crypt

View file

@ -1,22 +1,18 @@
# sisyphus # sisyphus
Welcome to my dotfiles repository, named Sisyphus. This repository houses the configurations for my Linux machines, spanning various distributions. Please note that not all configurations may be up-to-date or fully functional. If you decide to use these configurations for your own machines, be prepared for potential issues. Nevertheless, feel free to borrow or draw inspiration from this collection. This repository serves as my dotfiles. It contains the configuration for my Linux machine(s), for multiple distributions. Not everything might be up to date and/or working, so don't expect a working machine if you try to use this configuration for your own machines. However, feel free to steal some parts or be inspired.
## Organisation
To maintain clarity and versatility, I've organized my configuration files into distinct subdirectories. The "bare" configuration files, those you typically find in your `~/.config` directory, are located in [stow](./stow). This separation allows for a streamlined approach to managing configurations, while other subdirectories house OS-specific settings.
- [Arch Linux](./arch) (+ [stow](./stow)) - [Arch Linux](./arch) (+ [stow](./stow))
- [NixOS](./nixos) (+ [stow](./stow)) - [Nixos](./nixos)
## The Sisyphus Analogy ## Analogy
The Sisyphus analogy is a straightforward one. The analogy is quite simple.
Throughout my journey with Linux, especially during my time as a student, I found myself reinstalling my operating system countless times. Whether it was due to a botched installation, unsatisfactory performance, or simply the desire for a fresh start, I've been there. Things escalated when I began tinkering extensively with machine configurations, often resulting in disk management mishaps. It was clear that I needed to find a way to put an end to these frequent reinstallations, contain my configurations, and maintain system stability. This repository represents my solution to these challenges. Over the course of getting to know Linux and during my career as a student, I had to reinstall my OS SO so so many times, either because I bricked my previous install, or because things weren't working the way I wanted them to or even because I found the current install to be cluttered. On a particular day, I had installed Arch (that's what I started with back then) over ten times, which is my personal record of most-installed-computers-in-one-day so far. I also managed to speedrun the installation process to 8min30sec for the kernel with an additional 4min30sec for installing Sway (fun fact/did you know?).
I hope that by maintaining this repository, I can minimize the challenges of breaking my laptop and make configurations easily accessible. They are designed to be relatively static and require as little user input as reasonably possible during installation. Later, this worsened even more when I had way too much fun playing around with the machine configuration. (Managing disks is prone to errors!) I hope my addaction to breaking my laptop will ease with this repo: keeping everything easily accessible, often statically configured, so that it can be installed with as little input as (reasonably) possible.
TL;DR: My journey with Linux was a challenging one, marked by frequent restarts, which is why I chose the name Sisyphus as an analogy from [Greek mythology](https://en.wikipedia.org/wiki/Sisyphus). TL;DR: Discovering Linux was a tedious process and I had to start over several times, hence the analogy with [Sisyphus, greek mythology](https://en.wikipedia.org/wiki/Sisyphus).
P.S. While the name "Sisyphus" has a deep mythological significance, it also sounds cool and conveniently contains "sys" from "system" in its name. But, let's keep that our little secret, shall we? *But also because it sounds cool and it has the sys from sytem in the name, don't tell anyone this though.*

View file

@ -0,0 +1,26 @@
#!/usr/bin/env bash
# Remove unused dependencies that are not explicitly installed
# Usage: [sudo] cleandependencies
# Retrieve a list of all packages that are not explicitly installed and are not needed by anything else.
# Note that optional dependencies also do not get removed.
# function getList () {
# grep "Name\|Required By\|Optional For\|Install Reason" <<< $(pacman -Qi) |
# tr '\n' ';' | sed "s/$/\n/" |
# sed "s/ */ /g" |
# sed "s/Name/\nName/g" |
# sed "s/\(Name\|Required By\|Optional For\|Install Reason\) : //g" |
# grep "Installed as a dependency for another package" |
# grep "^[^;]*;None;None" |
# cut -f 1 -d ';'
# } ; export -f getList
current_amount=$(pacman -Qdtq | wc -l)
# Keep looping while there are unusded dependencies.
# Stop when the next amount is the same, probably because the action was canceled.
while [[ ${current_amount} -ne 0 && ${current_amount} -ne ${previous_amount:=0} ]] ; do
previous_amount=${current_amount}
pacman -R $(pacman -Qdtq)
current_amount=$(pacman -Qdtq | wc -l)
done

View file

@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Script to toggle Do not disturb mode for mako and dunst
# Permanent memory
saved_state=0
# Toggle
if [[ ${saved_state} -eq 0 ]] ; then
~/.scripts/notify.sh 'Hiding notifications'
sleep 5
makoctl set-mode do-not-disturb
dunstctl set-paused true
else
makoctl set-mode default
dunstctl set-paused false
~/.scripts/notify.sh 'Showing notifications'
fi
# Update status in file
new_state=$(( (${saved_state} + 1) % 2 ))
sed -i "s/^saved_state=.*$/saved_state=${new_state}/" "${0}"

View file

@ -0,0 +1,16 @@
#!/usr/bin/env bash
# Script to toggle black background to focus on sway
# Get instances of swaybg, except for the 'standard' one.
list=$( pgrep swaybg | head -n -1 )
if [ -z "${list}" ] ; then
swaybg --mode=solid_color --color=#000000 &
# Give the previous command some time to execute
sleep .1
swaymsg reload
else
# Clean up if already running
kill $( tr ' ' '\n' <<< ${list} )
fi

View file

@ -0,0 +1,19 @@
#!/usr/bin/env bash
# Configuration of swayidle
# Just run the script
# Kill previous instances to avoid clashing
pkill swayidle
swayidle -w \
timeout 600 \
'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
timeout 1200 \
'systemctl suspend' \
before-sleep 'swaymsg "output * dpms on"; swaylock'
# Screen needs to be turned back on or you will get a black screen after waking up again.
# timeout 300 \
# "~/.scripts/wander.sh" \
# resume 'brightnessctl -r' \

View file

@ -2,10 +2,8 @@
# Show system status in notification, or your own message # Show system status in notification, or your own message
# Syntaxis: notify [-vb] [-t <timeout>] [-p <value>] [<title> <message>] # Syntaxis: notify [-vb] [-t <timeout>] [-p <value>] [<title> <message>]
# Requirements/dependencies: # Requirements:
# - amixer
# - brightnessctl # - brightnessctl
# - libnotify (notify-send)
panic () { panic () {
>&2 echo "Syntaxis: notify [-vb] [-t <timeout>] [-p <value>] [<title> <message>]" >&2 echo "Syntaxis: notify [-vb] [-t <timeout>] [-p <value>] [<title> <message>]"
@ -22,15 +20,15 @@ while getopts ":bvt:p:" options; do
;; ;;
v) v)
# Get volume (don't use pamixer because that is way slower) # Get volume (don't use pamixer because that is way slower)
value=$( amixer sget 'Master' \ value=$( pactl get-sink-volume @DEFAULT_SINK@ \
| grep -o '\[[0-9]*%\]' \ | cut -d '/' -f2 \
| tr -d '][%' \ | grep -o '[0-9]*%' \
| head -n1 ) | tr -d '%' )
title="Volume: ${value}%" title="Volume: ${value}%"
category='sysinfo' category='sysinfo'
# If audio disabled, set value to zero. # If audio disabled, set value to zero.
if [ "$( amixer sget 'Master' | grep -o '\[\(on\|off\)\]' | head -n1 )" == "[off]" ] ; then if [ "$( pactl get-sink-mute @DEFAULT_SINK@ )" == "Mute: yes" ] ; then
title="Volume: ${value}% (Disabled)" title="Volume: ${value}% (Disabled)"
value=0 value=0
fi fi

View file

@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Toggle brightness to 'sleep' or 'awake', since brightnessctl does not support
# percentages of current amount.
# Just run the script
current=$( brightnessctl get )
# Doesn't have to be accurate so we can use built-in calculator.
brightnessctl -sq set $(( current / 10 * 3 ))

View file

@ -6,10 +6,10 @@ pid=$(pgrep wlsunset)
if [[ -z ${pid} ]] ; then if [[ -z ${pid} ]] ; then
# Start wlsunset right away. # Start wlsunset right away.
wlsunset -l 50.50 -L 4.00 -t 3000 -T 6500 & wlsunset -l 50 -L 4 -t 2500 &
else else
# Currently stop wlsunset but restart in an hour. # Currently stop wlsunset but restart in an hour.
kill ${pid} kill ${pid}
notify-send 'Stopping sunset' 'Restarting in an hour' ~/.scripts/notify.sh 'Stopping sunset' 'Restarting in an hour'
at now +1 hours -f "${0}" at now +1 hours -f ~/.scripts/wlsunset.sh
fi fi

7
arch/stow/_scripts/git-flake Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
# Ignore flake.nix and flake.lock
# For using personal flakes in a project that does not provide and want flakes.
# Syntaxis: git flake
git add --intent-to-add flake.nix flake.lock
git update-index --assume-unchanged flake.nix

11
arch/stow/bash/.bashrc Normal file
View file

@ -0,0 +1,11 @@
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
alias ls='ls --color=auto'
PS1='[\u@\h \W]\$ '
eval $( keychain --eval --quiet ~/.ssh/id_ed25519 )

View file

@ -4,8 +4,8 @@
font=letter:size=10 font=letter:size=10
dpi-aware=yes dpi-aware=yes
icon-theme=Icosystem icon-theme=Win11-black
terminal=kitty -e terminal=alacritty -e
output=eDP-1 output=eDP-1
lines=10 lines=10

View file

@ -1,13 +1,10 @@
keys: keys:
- &tdpeuter age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y - &tdpeuter age1q2gqur3t4fu8flsuu2zdnule37vdkh6egpt6a2e3ytx433x8gpvsr4hw6l
- &Tibo-NixDesk age1quvlqpznqkw2r0jhyx6p2hsq3dk93087yha46ugtce6ew9c64pgq4uhcvz
- &server_H4G0 age1d4gvqz3anf082ja6xt03hnkzazfum80um9t45m4rerl4n3va2yuqgnsg03
creation_rules: creation_rules:
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$ - path_regex: secrets/[^/]+\.yaml$
key_groups: key_groups:
- age: - age:
- *tdpeuter - *tdpeuter
- *server_H4G0

View file

@ -1,16 +1,3 @@
# NixOS # nixos
Nix Flake configuration for my Linux machines running NixOS. Nix Flake for my Linux machines running NixOS.
## Structure
The directory structure is organized as follows:
- [`flake.nix`](./flake.nix): Main entrypoint for the configuration.
- [hosts/*hostname*](./hosts): Host-specific configuration by setting options. Each host has its own folder.
- [modules](./modules): Declarations of configuration options.
- [overlays](./overlays): Attribute overrides for Nix Packages.
- [secrets](./secrets): Encrypted files that store sensitive information, such as SSH private keys.
- [users/*username*](./users): User-specific configuration. Users are defined as modules, so they can be enabled or disabled on a host machine.
[Modules](https://nixos.wiki/wiki/NixOS_modules) are a key component of NixOS. They encapsulate various configuration options, which should make it easy for you to integrate it into your specific configuration.

View file

@ -2,17 +2,17 @@
"nodes": { "nodes": {
"devshell": { "devshell": {
"inputs": { "inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1713532798, "lastModified": 1687173957,
"narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", "narHash": "sha256-GOds2bAQcZ94fb9/Nl/aM+r+0wGSi4EKYuZYR8Dw4R8=",
"owner": "numtide", "owner": "numtide",
"repo": "devshell", "repo": "devshell",
"rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", "rev": "2cf83bb31720fcc29a999aee28d6da101173e66a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -22,33 +22,15 @@
} }
}, },
"flake-utils": { "flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": { "inputs": {
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1687709756,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -64,79 +46,58 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1716736833, "lastModified": 1687647567,
"narHash": "sha256-rNObca6dm7Qs524O4st8VJH6pZ/Xe1gxl+Rx6mcWYo0=", "narHash": "sha256-Ua90LZYJO7/7KW/KK/AqijhIekd+wxPwbVKXuBYzJeQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a631666f5ec18271e86a5cde998cba68c33d9ac6", "rev": "6ca1e16eb3016c94b7ac16699e1d4158bd4e39a4",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.05", "ref": "release-23.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
}, },
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"openconnect-sso",
"nixpkgs"
]
},
"locked": {
"lastModified": 1701208414,
"narHash": "sha256-xrQ0FyhwTZK6BwKhahIkUVZhMNk21IEI1nUcWSONtpo=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "93e39cc1a087d65bcf7a132e75a650c44dd2b734",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1717144377, "lastModified": 1687729501,
"narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=", "narHash": "sha256-mTLkMePoHUWvTCf3NuKbeYEea/tsikSIKBWwb9OfRr4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "805a384895c696f802a9bf5bf4720f37385df547", "rev": "35130d4b4f0b8c50ed2aceb909a538c66c91d4a0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
"ref": "nixos-24.05", "ref": "nixos-23.05",
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1717265169, "lastModified": 1687031877,
"narHash": "sha256-IITcGd6xpNoyq9SZBigCkv4+qMHSqot0RDPR4xsZ2CA=", "narHash": "sha256-yMFcVeI+kZ6KD2QBrFPNsvBrLq2Gt//D0baHByMrjFY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3b1b4895b2c5f9f5544d02132896aeb9ceea77bc", "rev": "e2e2059d19668dab1744301b8b0e821e3aae9c99",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "release-23.11", "ref": "release-23.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1716948383, "lastModified": 1687681650,
"narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", "narHash": "sha256-M2If+gRcfpmaJy/XbfSsRzLlPpoU4nr0NHnKKl50fd8=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ad57eef4ef0659193044870c731987a6df5cf56b", "rev": "1c9db9710cb23d60570ad4d7ab829c2d34403de3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -145,79 +106,13 @@
"type": "indirect" "type": "indirect"
} }
}, },
"openconnect-sso": {
"inputs": {
"flake-utils": [
"utils"
],
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"nixpkgs"
],
"poetry2nix": "poetry2nix",
"systems": "systems_3",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1701455376,
"narHash": "sha256-FMLrMdi6JY7ZfqV5XnNj64jnDcGKznKZLn7O6OMO3u0=",
"owner": "ThinkChaos",
"repo": "openconnect-sso",
"rev": "20c0015c4264c72cc19ac272de0dc534309bd21b",
"type": "github"
},
"original": {
"owner": "ThinkChaos",
"ref": "fix/nix-flake",
"repo": "openconnect-sso",
"type": "github"
}
},
"poetry2nix": {
"inputs": {
"flake-utils": [
"openconnect-sso",
"flake-utils"
],
"nix-github-actions": [
"openconnect-sso",
"nix-github-actions"
],
"nixpkgs": [
"openconnect-sso",
"nixpkgs"
],
"systems": [
"openconnect-sso",
"systems"
],
"treefmt-nix": [
"openconnect-sso",
"treefmt-nix"
]
},
"locked": {
"lastModified": 1701105783,
"narHash": "sha256-5IOI0xXGbhAkUZNNcPId48V78Q+/JlW0hzlif0zxRmM=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "0b2bff39e9bd4e6db3208e09c276ca83a063b370",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"devshell": "devshell", "devshell": "devshell",
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"openconnect-sso": "openconnect-sso",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"utils": "utils" "utils": "utils"
} }
@ -230,11 +125,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1717297459, "lastModified": 1687398569,
"narHash": "sha256-cZC2f68w5UrJ1f+2NWGV9Gx0dEYmxwomWN2B0lx0QRA=", "narHash": "sha256-e/umuIKFcFtZtWeX369Hbdt9r+GQ48moDmlTcyHWL28=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "ab2a43b0d21d1d37d4d5726a892f714eaeb4b075", "rev": "2ff6973350682f8d16371f8c071a304b8067f192",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -273,42 +168,6 @@
"type": "github" "type": "github"
} }
}, },
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"openconnect-sso",
"nixpkgs"
]
},
"locked": {
"lastModified": 1699786194,
"narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"utils": { "utils": {
"inputs": { "inputs": {
"flake-utils": [ "flake-utils": [
@ -316,11 +175,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715533576, "lastModified": 1657226504,
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=", "narHash": "sha256-GIYNjuq4mJlFgqKsZ+YrgzWm0IpA4axA3MCrdKYj7gs=",
"owner": "gytis-ivaskevicius", "owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus", "repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", "rev": "2bf0f91643c2e5ae38c1b26893ac2927ac9bd82a",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -2,7 +2,7 @@
description = "System configuration of my machines using flakes"; description = "System configuration of my machines using flakes";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-24.05"; nixpkgs.url = "nixpkgs/nixos-23.05";
nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
devshell = { devshell = {
@ -11,16 +11,9 @@
}; };
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-24.05"; url = "github:nix-community/home-manager/release-23.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
openconnect-sso = {
url = github:ThinkChaos/openconnect-sso/fix/nix-flake;
inputs = {
flake-utils.follows = "utils";
nixpkgs.follows = "nixpkgs";
};
};
sops-nix = { sops-nix = {
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -33,32 +26,17 @@
outputs = inputs@{ outputs = inputs@{
self, nixpkgs, nixpkgs-unstable, self, nixpkgs, nixpkgs-unstable,
devshell, flake-utils, home-manager, openconnect-sso, sops-nix, utils, devshell, flake-utils, home-manager, sops-nix, utils,
... }: ... }:
let let
system = "x86_64-linux"; system = "x86_64-linux";
unfreePackages = pkg: builtins.elem (nixpkgs.lib.getName pkg) [
"corefonts"
"nvidia-settings" "nvidia-x11" "nvidia-persistenced"
"Oracle_VM_VirtualBox_Extension_Pack"
"spotify"
"steam" "steam-original" "steam-run"
"vista-fonts"
"nvidia-persistenced" # Docker
];
in in
utils.lib.mkFlake { utils.lib.mkFlake {
inherit self inputs; inherit self inputs;
channelsConfig.allowUnfreePredicate = unfreePackages; channelsConfig = {
allowUnfree = true;
sharedOverlays = [ };
(import ./overlays/cmdtime)
(import ./overlays/icosystem)
(import ./overlays/letter)
(import ./overlays/spotify)
];
hostDefaults = { hostDefaults = {
inherit system; inherit system;
@ -66,7 +44,6 @@
specialArgs = { specialArgs = {
pkgs-unstable = import nixpkgs-unstable { pkgs-unstable = import nixpkgs-unstable {
inherit system; inherit system;
config.allowUnfreePredicate = unfreePackages;
}; };
}; };
@ -74,7 +51,6 @@
home-manager.nixosModule home-manager.nixosModule
sops-nix.nixosModules.sops sops-nix.nixosModules.sops
./modules ./modules
./users
]; ];
}; };

View file

@ -1,92 +1,72 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
imports = [ imports =
./hardware-configuration.nix [ # Include the results of the hardware scan.
]; ./hardware-configuration.nix
../../modules/hardware/nvidia.nix
sisyphus = { ../../modules/apps/virtualbox
desktop.sway.enable = true; ../../modules/des/gnome
];
hardware = { # Bootloader.
nvidia = { boot.loader.systemd-boot.enable = true;
enable = true; boot.loader.efi.canTouchEfiVariables = true;
model = "RTX 2060"; boot.loader.efi.efiSysMountPoint = "/boot/efi";
gui-settings = true;
};
yubikey.enable = true;
};
networking = { # Enable networking
networkmanager.enable = true; networking.hostName = "Tibo-NixDesk"; # Define your hostname.
openconnect-sso.enable = true; networking.networkmanager.enable = true;
}; # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
nix = {
flakes.enable = true;
gc.onFull.enable = true;
};
programs = {
direnv.enable = true;
home-manager.enable = true;
sops.enable = true;
ssh.enable = true;
};
services = {
pipewire.enable = true;
printing.enable = true;
openrgb.enable = true;
};
users.tdpeuter.enable = true;
virtualisation = {
docker.enable = true;
virtualbox.enable = true;
};
};
boot = {
loader = {
systemd-boot.enable = true;
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
};
environment.systemPackages = with pkgs; [
git
vim-full
w3m
wget
zenith-nvidia
];
programs = {
steam.enable = true;
zsh.enable = true;
};
hardware.bluetooth.enable = true;
networking.hostName = "Tibo-NixDesk";
services.xserver = {
layout = "us";
xkbVariant = "altgr-intl";
};
system.stateVersion = "24.05";
# Set your time zone.
time.timeZone = "Europe/Brussels"; time.timeZone = "Europe/Brussels";
i18n.defaultLocale = "en_GB.UTF-8"; # Select internationalisation properties.
console = { i18n.defaultLocale = "en_GB.utf8";
# font = "Lat2-Terminus16";
useXkbConfig = true; # use xkbOptions in tty. # Configure keymap in X11
services.xserver = {
layout = "us";
xkbVariant = "";
}; };
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
system.stateVersion = "23.05";
} }

View file

@ -4,67 +4,26 @@
{ config, lib, pkgs, modulesPath, ... }: { config, lib, pkgs, modulesPath, ... }:
{ {
imports = [ imports =
(modulesPath + "/installer/scan/not-detected.nix") [ (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot = { boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
initrd = { boot.initrd.kernelModules = [ ];
availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.kernelModules = [ "kvm-intel" ];
kernelModules = [ ]; boot.extraModulePackages = [ ];
};
kernelModules = [ "kvm-intel" ];
extraModulePackages = [ ];
};
fileSystems = { fileSystems."/" =
"/" = { { device = "/dev/disk/by-label/NIXROOT";
device = "/dev/disk/by-label/NIX-ROOT";
fsType = "ext4"; fsType = "ext4";
}; };
"/boot/efi" = { fileSystems."/boot/efi" =
device = "/dev/disk/by-label/NIX-BOOT"; { device = "/dev/disk/by-label/NIXBOOT";
fsType = "vfat"; fsType = "vfat";
}; };
"/nix" = { swapDevices = [ ];
device = "/dev/disk/by-label/NIX-STORE";
fsType = "ext4";
options = [ "noatime" ];
};
"/mnt/Nextcloud" = {
device = "/dev/disk/by-label/Nextcloud";
fsType = "ntfs";
};
# "/home/${config.users.users.tdpeuter.name}/Nextcloud" = {
"/home/tdpeuter/Nextcloud" = {
depends = [
"/mnt/Nextcloud"
];
device = "/mnt/Nextcloud/Nextcloud";
fsType = "none";
options = [
"bind"
];
};
"/mnt/Games" = {
device = "/dev/disk/by-label/Games";
fsType = "ntfs";
options = [
"uid=tdpeuter"
"gid=users"
"defaults"
];
};
};
swapDevices = [
{ device = "/dev/disk/by-label/SWAP"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's

View file

@ -3,118 +3,107 @@
{ {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
../../modules/hardware/nvidia.nix
../../modules/apps/virtualbox
../../modules/des/gnome
]; ];
sisyphus = { # Use the systemd-boot EFI boot loader.]
desktop.sway.enable = true; boot.loader = {
systemd-boot.enable = true;
hardware = { efi = {
eid.enable = true; canTouchEfiVariables = true;
nvidia = { efiSysMountPoint = "/boot/efi";
enable = true;
model = "Quadro T2000";
};
yubikey.enable = true;
};
networking = {
networkmanager.enable = true;
# openconnect-sso.enable = true;
};
nix = {
flakes.enable = true;
gc.onFull.enable = true;
};
programs = {
direnv.enable = true;
home-manager.enable = true;
sops.enable = true;
ssh.enable = true;
};
services = {
pipewire.enable = true;
tailscale.enable = true;
};
users.tdpeuter.enable = true;
virtualisation = {
docker.enable = true;
virtualbox.enable = true;
}; };
}; };
boot = { # Setup keyfile
# Encryption boot.initrd.secrets = {
initrd = { "/crypto_keyfile.bin" = null;
# Setup keyfile
secrets."/crypto_keyfile.bin" = null;
# Enable swap on luks
luks.devices."luks-3825c43c-6cc4-4846-b1cc-02b5938640c9" = {
device = "/dev/disk/by-uuid/3825c43c-6cc4-4846-b1cc-02b5938640c9";
keyFile = "/crypto_keyfile.bin";
};
};
# Use the systemd-boot EFI boot loader.]
loader = {
systemd-boot.enable = true;
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
};
environment.systemPackages = with pkgs; [
git
vim-full
w3m
wget
zenith-nvidia
];
programs = {
zsh.enable = true;
};
hardware.bluetooth = {
enable = true;
powerOnBoot = false;
}; };
networking.hostName = "Tibo-NixFat"; networking.hostName = "Tibo-NixFat";
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
services = { # Set your time zone.
# Handle the laptop lid switch as follows:
logind = {
lidSwitch = "hybrid-sleep";
lidSwitchExternalPower = "lock";
lidSwitchDocked = "ignore";
};
xserver.xkb = {
# Keyboard layout
layout = "us";
variant = "altgr-intl";
};
# Touchpad
libinput.enable = true;
};
system.stateVersion = "24.05";
time.timeZone = "Europe/Brussels"; time.timeZone = "Europe/Brussels";
# --- Barrier --- # Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
i18n.defaultLocale = "en_GB.UTF-8"; i18n.defaultLocale = "en_GB.UTF-8";
console = { # console = {
useXkbConfig = true; # use xkbOptions in tty. # font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkbOptions in tty.
# };
services.xserver = {
# Configure keymap in X11
layout = "us";
xkbVariant = "";
}; };
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
services.logind.lidSwitch = "ignore";
# Enable Bluetooth.
hardware.bluetooth.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
services.xserver.libinput.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
system.stateVersion = "23.05";
} }

View file

@ -13,29 +13,29 @@
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = { fileSystems."/" =
device = "/dev/disk/by-label/NIX-ROOT"; { device = "/dev/disk/by-label/NIXROOT";
fsType = "ext4"; fsType = "ext4";
}; };
boot.initrd.luks.devices."luks-c21cb4a4-f618-43af-bc0c-e8be74fe3b81".device = "/dev/disk/by-uuid/c21cb4a4-f618-43af-bc0c-e8be74fe3b81"; boot.initrd.luks.devices."luks-7319552e-7148-4a9b-aa56-aa580b0b935a".device = "/dev/disk/by-uuid/7319552e-7148-4a9b-aa56-aa580b0b935a";
fileSystems."/boot/efi" = { fileSystems."/boot/efi" =
device = "/dev/disk/by-label/NIX-BOOT"; { device = "/dev/disk/by-label/NIXBOOT";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = [ # swapDevices =
{ device = "/dev/disk/by-label/SWAP"; } # [ { device = "/dev/disk/by-label/SWAP"; }
]; # ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction # still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true; networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno1.useDHCP = lib.mkDefault true; # networking.interfaces.eno2.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp111s0.useDHCP = lib.mkDefault true; # networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

View file

@ -1,14 +1,22 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
imports = imports =
[ # Include the results of the hardware scan. [ # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
../../modules/des/plasma
]; ];
# Bootloader # Nix Flakes
nix.package = pkgs.nixFlakes;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
# Use the systemd-boot EFI boot loader.]
boot.loader = { boot.loader = {
systemd-boot.enable = true; systemd-boot.enable = true;
@ -18,11 +26,10 @@
}; };
}; };
networking = { networking.hostName = "Tibo-NixTest"; # Define your hostname.
hostName = "Tibo-NixTest"; # Pick only one of the below networking options.
# wireless.enable = true; # Enables wireless support via wpa_supplicant. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networkmanager.enable = true; # Easiest to use and most distros use this by default. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
};
# Set your time zone. # Set your time zone.
time.timeZone = "Europe/Brussels"; time.timeZone = "Europe/Brussels";
@ -46,6 +53,29 @@
# "caps:escape" # map caps to escape. # "caps:escape" # map caps to escape.
# }; # };
services.xserver = {
# Enable the X11 windowing system.
enable = true;
# Enable the Plasma 5 Desktop Environment.
displayManager.sddm.enable = true;
displayManager.defaultSession = "plasmawayland";
desktopManager.plasma5 = {
enable = true;
excludePackages = with pkgs.libsForQt5; [
elisa
okular
plasma-browser-integration
khelpcenter
kwalletmanager
oxygen
];
};
};
# Enable CUPS to print documents. # Enable CUPS to print documents.
# services.printing.enable = true; # services.printing.enable = true;
@ -59,6 +89,44 @@
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled default in most desktopManager).
services.xserver.libinput.enable = true; services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.tdpeuter = {
description = "Tibo De Peuter";
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ];
initialPassword = "ChangeMe";
packages = with pkgs; [
home-manager
];
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
firefox
git
mongodb
vim
wget
];
nixpkgs.config = {
allowUnfree = true;
};
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall. # Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
@ -70,7 +138,13 @@
# accidentally delete configuration.nix. # accidentally delete configuration.nix.
# system.copySystemConfiguration = true; # system.copySystemConfiguration = true;
system.stateVersion = "23.05"; # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# 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 = "22.11"; # Did you read the comment?
} }

View file

@ -0,0 +1,15 @@
{ inputs, lib, config, pkgs, ... }:
{
home-manager.users.tdpeuter = { pkgs, ... }: {
home = {
packages = with pkgs; [
alacritty
];
file = {
".config/alacritty".source = ../../../../stow/alacritty/.config/alacritty;
};
};
};
}

View file

@ -0,0 +1,27 @@
{
imports = [
./alacritty
./firefox
./steam
./thunderbird
# ./virtualbox
];
home-manager.users.tdpeuter = { pkgs, ... }: {
home.packages = with pkgs; [
brave
caprine-bin
discord
jellyfin-media-player
libreoffice-fresh
mattermost-desktop
nextcloud-client
obsidian
pinentry_qt
qalculate-gtk
spotify
zathura
zoom-us
];
};
}

View file

@ -0,0 +1,41 @@
{ inputs, lib, config, pkgs, ... }:
{
home-manager.users.tdpeuter.programs.firefox = {
enable = true;
package = pkgs.firefox.override {
cfg = {
enableTridactylNative = true;
};
extraPolicies = {
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
ExtensionSettings = {};
OfferToSaveLogins = false;
};
};
profiles.tdpeuter = {
search = {
default = "DuckDuckGo";
force = true;
engines = {
"eBay".metaData.hidden = true;
"Nix Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@np" ];
};
};
};
};
};
}

View file

@ -0,0 +1,8 @@
{ inputs, lib, config, pkgs, ... }:
{
programs.steam = {
enable = true;
};
}

View file

@ -0,0 +1,164 @@
{ inputs, lib, config, pkgs, ... }:
let
signatures = {
default = ''
Met vriendelijke groeten
Tibo De Peuter
'';
UGent = ''
Met vriendelijke groeten
Tibo De Peuter
Student 2Ba Informatica
'';
MrFortem = ''
Kind regards
MrFortem Fiducia
'';
};
in
{
home-manager.users.tdpeuter = {
accounts.email.accounts = {
Telenet = {
address = "tibo.depeuter@telenet.be";
userName = "tibo.depeuter@telenet.be";
imap = {
host = "imap.telenet.be";
port = 993;
tls.enable = true;
};
smtp = {
host = "smtp.telenet.be";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
realName = "Tibo De Peuter";
signature = {
showSignature = "append";
text = signatures.default;
};
primary = true;
thunderbird = {
enable = true;
settings = id: {
"mail.identity.id_${id}.htmlSigText" = signatures.default;
};
};
};
UGent = {
flavor = "outlook.office365.com";
address = "tibo.depeuter@ugent.be";
realName = "Tibo De Peuter";
signature = {
showSignature = "append";
text = signatures.UGent;
};
thunderbird = {
enable = true;
settings = id: {
"mail.server.server_${id}.authMethod" = 10;
"mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.identity.id_${id}.htmlSigText" = signatures.UGent;
};
};
};
Gmail = {
flavor = "gmail.com";
address = "tibo.depeuter@gmail.com";
realName = "Tibo De Peuter";
signature = {
showSignature = "append";
text = signatures.default;
};
thunderbird = {
enable = true;
settings = id: {
"mail.identity.id_${id}.htmlSigText" = signatures.default;
};
};
};
MrFortem = {
flavor = "gmail.com";
address = "fortemfiducia@gmail.com";
realName = "Fortem Fiducia";
signature = {
showSignature = "attach";
text = ''
Kind regards
MrFortem Fiducia
'';
};
thunderbird = {
enable = true;
settings = id: {
"mail.server.server_${id}.directory" = ".thunderbird/tdpeuter/ImapMail/imap.gmail.com-mrfortem";
"mail.server.server_${id}.directory-rel" = "[ProfD]ImapMail/imap.gmail.com-mrfortem";
"mail.identity.id_${id}.htmlSigText" = signatures.MrFortem;
};
};
};
};
programs = {
thunderbird = {
enable = true;
profiles.tdpeuter = {
isDefault = true;
settings = {
"mailnews.default_sort_order" = 2; # Sort descending
"mailnews.mark_message_read.delay" = true;
"mailnews.start_page.enabled" = false;
"mail.pane_config.dynamic" = 2; # Vertical view
"calendar.list.sortOrder" = "personal ugent tasks planning zeus";
"calendar.registry.personal.cache.enabled" = true;
"calendar.registry.personal.name" = "Personal";
"calendar.registry.personal.type" = "caldav";
"calendar.registry.personal.uri" = "https://cloud.depeuter.dev/remote.php/dav/calendars/tdpeuter/personal/";
"calendar.registry.personal.username" = "tdpeuter";
"calendar.registry.ugent.cache.enabled" = true;
"calendar.registry.ugent.color" = "#1E64C8";
"calendar.registry.ugent.name" = "UGent";
"calendar.registry.ugent.type" = "caldav";
"calendar.registry.ugent.uri" = "https://cloud.depeuter.dev/remote.php/dav/calendars/tdpeuter/ugent/";
"calendar.registry.ugent.username" = "tdpeuter";
"calendar.registry.planning.cache.enabled" = true;
"calendar.registry.planning.name" = "Planning";
"calendar.registry.planning.type" = "caldav";
"calendar.registry.planning.uri" = "https://cloud.depeuter.dev/remote.php/dav/calendars/tdpeuter/planning/";
"calendar.registry.planning.username" = "tdpeuter";
"calendar.registry.zeus.cache.enabled" = true;
"calendar.registry.zeus.color" = "#FF7F00";
"calendar.registry.zeus.name" = "ZeusWPI";
"calendar.registry.zeus.type" = "ics";
"calendar.registry.zeus.uri" = "https://zeus.ugent.be/ical.ics";
"calendar.registry.tasks.cache.enabled" = true;
"calendar.registry.tasks.color" = "#813D9C";
"calendar.registry.tasks.name" = "Tasks";
"calendar.registry.tasks.type" = "caldav";
"calendar.registry.tasks.uri" = "https://cloud.depeuter.dev/remote.php/dav/calendars/tdpeuter/tasks-2/";
"calendar.registry.tasks.username" = "tdpeuter";
};
};
};
};
};
}

View file

@ -0,0 +1,17 @@
{
virtualisation.virtualbox = {
host = {
enable = true;
enableExtensionPack = true;
};
guest = {
enable = true;
x11 = true;
};
};
users.extraGroups.vboxusers.members = [
"user-with-access-to-virtualbox"
];
}

View file

@ -1,11 +1,58 @@
{ inputs, lib, config, pkgs, ... }:
{ {
imports = [ imports = [
./desktop ./apps
./hardware ./shells
./networking ./utils
./nix
./programs
./services
./virtualisation
]; ];
# Nix Flakes
nix.package = pkgs.nixFlakes;
nix.extraOptions = ''
experimental-features = nix-command flakes
keep-outputs = true
keep-derivations = true
'';
users.users.tdpeuter = {
description = "Tibo De Peuter";
isNormalUser = true;
extraGroups = [ "networkmanager" "wheel" ];
initialPassword = "ChangeMe";
packages = with pkgs; [
home-manager
];
};
home-manager.useGlobalPkgs = true;
home-manager.users.tdpeuter = { pkgs, ... }: {
home = {
username = "tdpeuter";
homeDirectory = "/home/tdpeuter";
stateVersion = "23.05";
packages = with pkgs; [
gnupg
# Fonts
corefonts # Calibri for Uni
];
};
programs = {
home-manager.enable = true;
gpg.enable = true;
};
services = {
gpg-agent = {
enable = true;
pinentryFlavor = "qt";
};
};
};
} }

View file

@ -0,0 +1,41 @@
{ config, lib, pkgs, ... }:
{
services.xserver = {
enable = true;
# Enable the GNOME Desktop Environment.
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;
excludePackages = with pkgs; [
xterm
];
};
environment.systemPackages = with pkgs; [
gnomeExtensions.launch-new-instance
];
environment.gnome.excludePackages = (with pkgs; [
epiphany # Web browser
gnome-console
gnome-photos
gnome-text-editor
gnome-tour
]) ++ (with pkgs.gnome; [
geary # Mail client
gedit
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-contacts
gnome-maps
gnome-music
gnome-weather
simple-scan
totem # Movie player
yelp # Help viewer
]);
}

View file

@ -0,0 +1,32 @@
{ config, lib, pkgs, ... }:
{
services.xserver = {
enable = true;
displayManager.sddm = {
enable = true;
# https://discourse.nixos.org/t/plasma-wayland-session-not-available-from-sddm/13447/2
settings.Wayland.SessionDir = "${pkgs.plasma5Packages.plasma-workspace}/share/wayland-sessions";
};
desktopManager.plasma5 = {
enable = true;
useQtScaling = true;
excludePackages = with pkgs.libsForQt5; [
elisa
okular
khelpcenter
konsole
print-manager
plasma-systemmonitor
gwenview
];
};
excludePackages = with pkgs; [
xterm
];
};
}

View file

@ -0,0 +1,110 @@
{ config, pkgs, lib, ... }:
let
# bash script to let dbus know about important env variables and
# propagate them to relevent services run at the end of sway config
# see
# https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist
# note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts
# some user services to make sure they have the correct environment variables
dbus-sway-environment = pkgs.writeTextFile {
name = "dbus-sway-environment";
destination = "/bin/dbus-sway-environment";
executable = true;
text = ''
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
'';
};
# currently, there is some friction between sway and gtk:
# https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
# the suggested way to set gtk settings is with gsettings
# for gsettings to work, we need to tell it where the schemas are
# using the XDG_DATA_DIR environment variable
# run at the end of sway config
configure-gtk = pkgs.writeTextFile {
name = "configure-gtk";
destination = "/bin/configure-gtk";
executable = true;
text = let
schema = pkgs.gsettings-desktop-schemas;
datadir = "${schema}/share/gsettings-schemas/${schema.name}";
in ''
export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS
gnome_schema=org.gnome.desktop.interface
gsettings set $gnome_schema gtk-theme 'Dracula'
'';
};
in
{
services.xserver = {
enable = true;
displayManager.lightdm.enable = true;
excludePackages = with pkgs; [
xterm
];
};
security.polkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
services.dbus.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
home-manager.users.tdpeuter = { pkgs, ... }: {
home = {
username = "tdpeuter";
homeDirectory = "/home/tdpeuter";
file = {
".config/sway".source = ../../../../stow/sway/.config/sway;
".config/waybar".source = ../../../../stow/waybar/.config/waybar;
".config/dunst".source = ../../../../stow/dunst/.config/dunst;
# TODO Fix scripts, I don't like it this way
".scripts".source = ../../../../stow/_scripts/.scripts;
};
packages = with pkgs; [
brightnessctl
dunst
font-awesome
pamixer
pavucontrol
playerctl
swayidle
swaylock-effects
waybar
wmname
];
# };
#
# wayland.windowManager.sway = {
# enable = true;
# package = pkgs.sway-unwrapped;
# config = rec {
# terminal = "alacritty";
# startup = [
# {command = "alacritty";}
# ];
# };
};
};
}

View file

@ -1,8 +0,0 @@
{
imports = [
./gnome
./hyprland
./plasma
./sway
];
}

View file

@ -1,59 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.desktop.gnome;
in {
options.sisyphus.desktop.gnome.enable = lib.mkEnableOption "GNOME";
config = lib.mkIf cfg.enable {
services.xserver = {
enable = true;
excludePackages = with pkgs; [
xterm
];
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;
};
# Start a new instance of application instead of going to that window.
environment.systemPackages = with pkgs.gnomeExtensions; [
launch-new-instance
];
# Do not use these packages
environment.gnome.excludePackages = (with pkgs; [
baobab
epiphany # Web browser
evince # Document viewer
gnome-connections # Remote desktop client
gnome-console
gnome-photos
gnome-text-editor
gnome-tour
loupe # Image viewer
snapshot # Camera
]) ++ (with pkgs.gnome; [
eog # Image viewer
file-roller # Archive manager
geary # Mail client
gedit
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-contacts
gnome-disk-utility
gnome-font-viewer
gnome-logs
gnome-maps
gnome-music
gnome-system-monitor
gnome-weather
simple-scan
totem # Movie player
yelp # Help viewer
]);
};
}

View file

@ -1,15 +0,0 @@
{ config, lib, ... }:
let
cfg = config.sisyphus.desktop.hyprland;
in {
options.sisyphus.desktop.hyprland.enable = lib.mkEnableOption "Hyprland";
config = lib.mkIf cfg.enable {
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
};
}

View file

@ -1,43 +0,0 @@
{ config, lib, pkgs, ... }:
# This module is not tested at all so it might be broken!
let
cfg = config.sisyphus.desktop.plasma;
in {
options.sisyphus.desktop.plasma.enable = lib.mkEnableOption "KDE Plasma";
config = lib.mkIf cfg.enable {
services.xserver = {
enable = true;
displayManager = {
defaultSession = "plasmawayland";
sddm = {
enable = true;
# https://discourse.nixos.org/t/plasma-wayland-session-not-available-from-sddm/13447/2
settings.Wayland.SessionDir = "${pkgs.plasma5Packages.plasma-workspace}/share/wayland-sessions";
};
};
desktopManager.plasma5 = {
enable = true;
useQtScaling = true;
};
excludePackages = with pkgs; [
xterm
];
};
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
elisa
okular
khelpcenter
konsole
print-manager
plasma-systemmonitor
gwenview
];
};
}

View file

@ -1,151 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.desktop.sway;
# bash script to let dbus know about important env variables and
# propagate them to relevent services run at the end of sway config
# see
# https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist
# note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts
# some user services to make sure they have the correct environment variables
dbus-sway-environment = pkgs.writeTextFile {
name = "dbus-sway-environment";
destination = "/bin/dbus-sway-environment";
executable = true;
text = ''
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
'';
};
# currently, there is some friction between sway and gtk:
# https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
# the suggested way to set gtk settings is with gsettings
# for gsettings to work, we need to tell it where the schemas are
# using the XDG_DATA_DIR environment variable
# run at the end of sway config
configure-gtk = pkgs.writeTextFile {
name = "configure-gtk";
destination = "/bin/configure-gtk";
executable = true;
text = let
schema = pkgs.gsettings-desktop-schemas;
datadir = "${schema}/share/gsettings-schemas/${schema.name}";
in ''
export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS
gnome_schema=org.gnome.desktop.interface
# gsettings set $gnome_schema gtk-theme 'Dracula'
# https://github.com/crispyricepc/sway-nvidia/blob/2101a18698151a61266740f1297158119bf660ac/wlroots-env-nvidia.sh
# Hardware cursors not yet working on wlroots
export WLR_NO_HARDWARE_CURSORS=1
# Set wlroots renderer to Vulkan to avoid flickering
export WLR_RENDERER=vulkan
# General wayland environment variables
export XDG_SESSION_TYPE=wayland
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
# Firefox wayland environment variable
export MOZ_ENABLE_WAYLAND=1
export MOZ_USE_XINPUT2=1
# OpenGL Variables
export GBM_BACKEND=nvidia-drm
export __GL_GSYNC_ALLOWED=0
export __GL_VRR_ALLOWED=0
export __GLX_VENDOR_LIBRARY_NAME=nvidia
# Xwayland compatibility
export XWAYLAND_NO_GLAMOR=1
'';
};
in {
options.sisyphus.desktop.sway.enable = lib.mkEnableOption "Sway";
config = lib.mkIf cfg.enable {
environment.systemPackages = (with pkgs; [
dbus-sway-environment
configure-gtk
wayland
xdg-utils # Open with default program
glib # gsettings
wl-clipboard
wdisplays # Tool to configure displays
brightnessctl
dunst
libnotify
playerctl
swaybg
swaylock-effects
waybar
wlsunset
# TODO Turn into own module/package?
jq
j4-dmenu-desktop
rofi
]) ++ (with pkgs.sway-contrib; [
grimshot
]);
environment.sessionVariables = {
SCRIPT_DIR = ../../../../scripts;
};
fonts.packages = with pkgs; [
dejavu_fonts
font-awesome
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
source-han-sans
source-han-sans-japanese
source-han-serif-japanese
];
security.polkit.enable = true;
services = {
atd.enable = true; # Required by sunset.sh
dbus.enable = true;
gnome.gnome-keyring.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
power-profiles-daemon.enable = true;
xserver = {
displayManager.session = [{
manage = "window";
name = "Sway";
start = ''
${pkgs.sway}/bin/sway --unsupported-gpu &
waitPID=$!
'';
}];
videoDrivers = [ "nouveau" ];
};
};
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
sisyphus.users.wantedGroups = [
config.users.groups.video.name # Brightnessctl
];
};
}

View file

@ -1,7 +0,0 @@
{
imports = [
./eid
./nvidia
./yubikey
];
}

View file

@ -1,18 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.hardware.eid;
in {
options.sisyphus.hardware.eid.enable = lib.mkEnableOption "Electronic identity card (eID)";
config = lib.mkIf cfg.enable {
services.pcscd = {
enable = true;
plugins = [ pkgs.ccid ];
};
environment.systemPackages = with pkgs; [
eid-mw
];
};
}

View file

@ -0,0 +1,33 @@
{ inputs, lib, config, pkgs, ... }:
let
nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" ''
export __NV_PRIME_RENDER_OFFLOAD=1
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __VK_LAYER_NV_optimus=NVIDIA_only
exec "$@"
'';
in
{
nixpkgs.config.allowUnfree = true;
services.xserver.videoDrivers = [ "nvidia" ];
hardware = {
opengl.enable = true;
nvidia = {
open = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
modesetting.enable = true;
};
};
# Offloading
# environment.systemPackages = [ nvidia-offload ];
# hardware.nvidia.prime = {
# offload.enable = true;
# intelBusId = "PCI::00:02:0";
# nvidiaBusId = "PCI:01:00:0";
# };
}

View file

@ -1,82 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.hardware.nvidia;
# The graphics cards for which to do offloading
do-offloading = builtins.elem cfg.model [ "Quadro T2000" ];
nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" ''
export __NV_PRIME_RENDER_OFFLOAD=1
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __VK_LAYER_NV_optimus=NVIDIA_only
exec "$@"
'';
in {
options.sisyphus.hardware.nvidia = {
enable = lib.mkEnableOption "NVIDIA GPU support";
model = lib.mkOption {
type = lib.types.enum [ "" "Quadro T2000" "RTX 2060" ];
default = "";
example = "Quadro T2000";
description = lib.mdDoc "The model of NVIDIA GPU card";
};
gui-settings = lib.mkEnableOption "NVIDIA settings menu";
};
config = lib.mkIf cfg.enable {
# boot = {
# extraModprobeConfig = "options nvidia-drm modeset=1";
#
# initrd.kernelModules = [
# "nvidia"
# "nvidia_modeset"
# "nvidia_uvm"
# "nvidia_drm"
# ];
# };
hardware = {
opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
nvidia = {
open = false;
package = config.boot.kernelPackages.nvidiaPackages.stable;
modesetting.enable = true;
nvidiaSettings = cfg.gui-settings;
powerManagement = {
enable = do-offloading;
finegrained = do-offloading;
};
# Avoid flickering
forceFullCompositionPipeline = true;
prime = lib.mkMerge [
(lib.mkIf do-offloading {
offload = {
enable = true;
enableOffloadCmd = true;
};
})
(lib.mkIf (cfg.model == "Quadro T2000") {
intelBusId = "PCI::00:02:0";
nvidiaBusId = "PCI:01:00:0";
})
(lib.mkIf (cfg.model == "RTX 2060") {
sync.enable = true;
intelBusId = "PCI::00:02:0";
nvidiaBusId = "PCI:01:00:0";
})
];
};
};
environment.systemPackages = lib.mkIf do-offloading [
nvidia-offload
];
};
}

View file

@ -1,36 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.hardware.yubikey;
in {
options.sisyphus.hardware.yubikey.enable = lib.mkEnableOption "YubiKey support";
config = lib.mkIf cfg.enable {
programs = {
gnupg.agent = {
enable = true;
# TODO Necessary?
# enableSSHSupport = true;
# pinentryFlavor = "curses";
};
# yubikey-touch-detector.enable = true;
};
# Enable smart card reading
services.pcscd.enable = true;
environment.systemPackages = with pkgs; [
yubikey-touch-detector
];
# Send a notification if the YubiKey is waiting for touch.
systemd.user.services.yubikey-touch-detector = {
enable = true;
description = "Detects when your YubiKey is waiting for a touch";
path = with pkgs; [ yubikey-touch-detector ];
script = ''exec yubikey-touch-detector --notify'';
environment.YUBIKEY_TOUCH_DETECTOR_LIBNOTIFY = "true";
};
};
}

View file

@ -1,6 +0,0 @@
{
imports = [
./networkmanager
./openconnect-sso
];
}

View file

@ -1,14 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.networking.networkmanager;
in {
options.sisyphus.networking.networkmanager.enable = lib.mkEnableOption "NetworkManager";
config = lib.mkIf cfg.enable {
networking.networkmanager.enable = true;
# Prevent slow boot times
systemd.services.NetworkManager-wait-online.enable = false;
};
}

View file

@ -1,13 +0,0 @@
{ config, inputs, lib, pkgs, ... }:
let
cfg = config.sisyphus.networking.openconnect-sso;
in {
options.sisyphus.networking.openconnect-sso.enable = lib.mkEnableOption "OpenConnect SSO";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
inputs.openconnect-sso.packages.${config.nixpkgs.localSystem.system}.default
];
};
}

View file

@ -1,6 +0,0 @@
{
imports = [
./flakes
./gc
];
}

View file

@ -1,14 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.nix.flakes;
in {
options.sisyphus.nix.flakes.enable = lib.mkEnableOption "Nix Flakes";
config.nix = lib.mkIf cfg.enable {
extraOptions = ''
experimental-features = nix-command flakes
'';
package = pkgs.nixFlakes;
};
}

View file

@ -1,25 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.nix.gc;
in {
options.sisyphus.nix.gc = {
weekly.enable = lib.mkEnableOption "Scheduled Nix garbage-collection";
onFull.enable = lib.mkEnableOption "Nix garbage-collection when disk is almost full";
};
config.nix = {
# If the disk has less than 100MiB, free up to 2GiB by garbage-collecting.
extraOptions = lib.mkIf cfg.onFull.enable ''
min-free = ${toString (100 * 1024 * 1024)}
max-free = ${toString (2048 * 1024 * 1024)}
'';
# Scheduled garbage-collect
gc = lib.mkIf cfg.weekly.enable {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
};
}

View file

@ -1,9 +0,0 @@
{
imports = [
./direnv
./home-manager
./sops
./spotify-adblock
./ssh
];
}

View file

@ -1,21 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.programs.direnv;
in {
options.sisyphus.programs.direnv.enable = lib.mkEnableOption "direnv";
config = lib.mkIf cfg.enable {
programs.direnv = {
enable = true;
nix-direnv.enable = true; # Use nix-specific direnv.
};
# This is also done by setting programs.direnv.persistDerivations.
# Keep derivations so shells don't break.
nix.extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
};
}

View file

@ -1,15 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.programs.home-manager;
in {
options.sisyphus.programs.home-manager.enable = lib.mkEnableOption "Home-manager";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
home-manager
];
home-manager.useGlobalPkgs = true;
};
}

View file

@ -1,41 +0,0 @@
# Adding SSH keys
To incorporate SSH keys, for instance, to enable authentication with a Git server, follow these steps:
Step 0: If necessary, generate a keypair, for example using the command:
```bash
ssh-keygen -t ed25519
```
Please note that setting a password for the keypair is not yet tested.
Step 1: Create a new file named `yourservice.yaml` within the [secrets](../../../secrets/) directory by executing the following command:
```bash
sops secrets/yourservice.yaml
```
Within this file, create a value that contains your private key. For example:
```yaml
yourservice:
ssh: |
-----BEGIN OPENSSH PRIVATE KEY-----
<...>
-----END OPENSSH PRIVATE KEY-----
```
Step 2: Reference this value in [your sops configuration](../../utils/sops/default.nix) as follows:
```
sops.secrets."yourservice/ssh".format = "yaml";
sops.secrets."yourservice/sss".sopsFile = secrets/youservice.yaml;
```
Step 3: Finally, add the SSH key to your SSH configuration so that it is used correctly when connecting to your host. Add the following lines to your SSH configuraton file:
```
Host yourservice
IdentityFile /run/secrets/yourservice/ssh
```

View file

@ -1,25 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.programs.sops;
in {
options.sisyphus.programs.sops.enable = lib.mkEnableOption "Sops";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
sops
];
sops = {
# Add secrets.yml to the Nix Store.
defaultSopsFile = ../../../secrets/secrets.yaml;
age = {
# Automatically import SSH keys as age keys.
sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
# Use an age key that is expected to already be in the filesystem.
# You will need to place this file manually.
keyFile = "/var/lib/sops-nix/key.txt";
};
};
};
}

View file

@ -1,11 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.programs.spotify-adblock;
in {
options.sisyphus.programs.spotify-adblock.enable = lib.mkEnableOption "Spotify adblock";
config = lib.mkIf cfg.enable {
environment.etc."spotify-adblock/config.toml".source = "${pkgs.spotify-adblock}/config.toml";
};
}

View file

@ -1,13 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.programs.ssh;
in {
options.sisyphus.programs.ssh.enable = lib.mkEnableOption "SSH";
config = lib.mkIf cfg.enable {
programs.ssh = {
enableAskPassword = false;
};
};
}

View file

@ -1,10 +0,0 @@
{
imports = [
./monero
./openrgb
./openssh
./pipewire
./printing
./tailscale
];
}

View file

@ -1,41 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.services.monero;
in {
options.sisyphus.services.monero.enable = lib.mkEnableOption "Monero";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
monero-cli
];
services = {
# Choose to run a node or not.
monero.enable = true;
xmrig = {
enable = true;
settings = {
autosave = true;
background = true;
pause-on-battery = true;
pause-on-active = 60;
donate-level = 5;
cpu = true;
opencl = false;
cuda = true;
pools = [
{
url = "monerohash.com:9999";
# url = "127.0.0.1:18081"; # Local node
user = "44FjmmLn1k1GC1AFTLSdWDZ17CHB2h3eRCnfkfTQBucHaKX1AGS5oLERR1FEaHxPQcUNwrbEfsgbY4Y6bYJm6ZrdCYGwg7b";
keepalive = true;
tls = true;
}
];
};
};
};
};
}

View file

@ -1,23 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.services.openrgb;
in {
options.sisyphus.services.openrgb.enable = lib.mkEnableOption "OpenRGB";
config = lib.mkIf cfg.enable {
services.udev.packages = with pkgs; [
openrgb
];
boot.kernelModules = [ "i2c-dev" ];
hardware.i2c.enable = true;
services.hardware.openrgb = {
enable = true;
package = pkgs.openrgb-with-all-plugins;
motherboard = "intel";
};
};
}

View file

@ -1,17 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.services.openssh;
in {
options.sisyphus.services.openssh.enable = lib.mkEnableOption "OpenSSH";
config = lib.mkIf cfg.enable {
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
PermitRootLogin = "no";
};
};
};
}

View file

@ -1,25 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.services.pipewire;
in {
options.sisyphus.services.pipewire.enable = lib.mkEnableOption "Pipewire";
config = lib.mkIf cfg.enable {
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
};
}

View file

@ -1,18 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.services.printing;
in {
options.sisyphus.services.printing.enable = lib.mkEnableOption "Printing";
config = lib.mkIf cfg.enable {
services = {
printing.enable = true;
avahi = {
enable = true;
nssmdns = true;
openFirewall = true;
};
};
};
}

View file

@ -1,15 +0,0 @@
{ config, lib, pkgs, pkgs-unstable, ... }:
let
cfg = config.sisyphus.services.tailscale;
in {
options.sisyphus.services.tailscale.enable = lib.mkEnableOption "Tailscale";
config = lib.mkIf cfg.enable {
services.tailscale = {
enable = true;
package = pkgs-unstable.tailscale;
useRoutingFeatures = "client";
};
};
}

View file

@ -0,0 +1,5 @@
{
imports = [
./zsh
];
}

View file

@ -0,0 +1,70 @@
{ config, lib, pkgs, ... }:
{
programs.zsh.enable = true;
users.users.tdpeuter.shell = pkgs.zsh;
home-manager.users.tdpeuter = { pkgs, ... }: {
home = {
packages = with pkgs; [
font-awesome
];
file = {
".oh-my-zsh".source = ../../../../stow/zsh/.oh-my-zsh;
};
};
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableSyntaxHighlighting = true;
history = {
expireDuplicatesFirst = true;
extended = true;
};
initExtra = ''
eval "$(direnv hook zsh)"
'';
oh-my-zsh = {
enable = true;
custom = "$HOME/.oh-my-zsh";
plugins = [
"dirhistory"
"git"
"screen"
];
theme = "mrfortem";
};
plugins = [
{
name = "cmdtime";
src = pkgs.fetchFromGitHub {
owner = "tom-auger";
repo = "cmdtime";
rev = "ffc72641dcfa0ee6666ceb1dc712b61be30a1e8b";
hash = "sha256-v6wCfNoPXDD3sS6yUYE6lre8Ir1yJcLGoAW3O8sUOCg=";
};
}
];
shellAliases = {
cp = "cp -i"; # Confirm before overwriting something
df = "df -h";
free = "free -m";
ll = "ls -la";
np = "nano -w PKGBUILD";
more = "less";
hgrep = "history | grep";
gs = "git status";
update = ''
pushd ~/projects/sisyphus/nixos
nix flake update
sudo nixos-rebuild switch --flake .# --show-trace
popd
'';
};
};
};
}

View file

@ -0,0 +1,43 @@
{
imports = [
./mpv
./vifm
./vim
./zellij
];
home-manager.users.tdpeuter = { pkgs, ... }: {
home.packages = with pkgs; [
direnv
duf
git-crypt
lynx
nsxiv
w3m
wget
zenith-nvidia
];
programs = {
direnv = {
enable = true;
nix-direnv.enable = true;
};
git = {
enable = true;
userName = "tdpeuter";
userEmail = "tibo.depeuter@gmail.com";
extraConfig = {
core.editor = "vim";
};
includes = [
{
path = "~/.gitconfig-ugent";
condition = "gitdir:~/Nextcloud/Documenten/UGent";
}
];
};
};
};
}

View file

@ -0,0 +1,11 @@
{ config, system, lib, pkgs-unstable, ... }:
{
home-manager.users.tdpeuter.home = {
packages = with pkgs-unstable; [
mpv
];
file.".config/mpv".source = ../../../../stow/mpv/.config/mpv;
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
services.openssh = {
enable = true;
passwordAuthentication = false;
};
}

View file

@ -0,0 +1,22 @@
{ config, lib, pkgs, ... }:
{
home-manager.users.tdpeuter.home = {
packages = with pkgs; [
vifm
chafa # Terminal image previewer
glow # Terminal Markdown renderer
font-awesome_5
];
# Put files separately so history still works
file = {
".config/vifm/colors".source = ../../../../stow/vifm/.config/vifm/colors;
".config/vifm/scripts".source = ../../../../stow/vifm/.config/vifm/scripts;
".config/vifm/vifmrc".source = ../../../../stow/vifm/.config/vifm/vifmrc;
};
};
}

View file

@ -0,0 +1,76 @@
{ inputs, lib, config, pkgs, ... }:
{
home-manager.users.tdpeuter = { pkgs, ... }: {
home.file = {
".vim".source = ../../../../stow/vim/.vim;
};
programs.vim = {
enable = true;
extraConfig = ''
colorscheme catppuccin_mocha_mod
" Tags
" pacman -S ctags
command! MakeTags !ctags -R . &
" Move to defintion using ^]
" Move to ambigious using g^]
" Move back using ^t
filetype on
filetype indent on
filetype plugin on
" File browsing
let g:netrw_browse_split=4 " open in the previous window
let g:netrw_altv=1 " split new windows to the right
let g:netrw_liststyle=3 " treeview
set autoindent
set conceallevel=2
set incsearch
set linebreak
set nocompatible
set path+=**
set scrolloff=3
set showcmd
set showmatch
set smartindent
set smarttab
set title
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
set wildmenu
syntax enable
if $TERM == 'alacritty'
set ttymouse=sgr " Alacritty specific
endif
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
" https://stackoverflow.com/a/37558470/19044747
augroup remember_folds
autocmd!
autocmd BufWinLeave * silent! mkview
autocmd BufWinEnter * silent! loadview
augroup END
endif
'';
plugins = with pkgs.vimPlugins; [
ale
catppuccin-vim
statix
vifm-vim
];
settings = {
expandtab = true;
mouse = "a";
number = true;
relativenumber = true;
shiftwidth = 4;
tabstop = 4;
};
};
};
}

View file

@ -0,0 +1,16 @@
{ config, pkgs, lib, ... }:
{
home-manager.users.tdpeuter.home = {
packages = with pkgs; [
zellij
];
file.".config/zellij".source = ../../../../stow/zellij/.config/zellij;
};
fonts.fonts = with pkgs; [
noto-fonts
noto-fonts-cjk
];
}

View file

@ -1,7 +0,0 @@
{
imports = [
./docker
./qemu
./virtualbox
];
}

View file

@ -1,17 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.virtualisation.docker;
in {
options.sisyphus.virtualisation.docker.enable = lib.mkEnableOption "Docker";
config = lib.mkIf cfg.enable {
virtualisation.docker = {
enable = true;
# Because these are made for development purposes and not for servers
enableOnBoot = false;
};
hardware.nvidia-container-toolkit.enable = true;
};
}

View file

@ -1,15 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.virtualisation.qemu;
in {
options.sisyphus.virtualisation.qemu.enable = lib.mkEnableOption "QEMU";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
qemu
];
virtualisation.libvirtd.qemu.runAsRoot = false;
};
}

View file

@ -1,41 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.virtualisation.virtualbox;
# I like to override the virtualbox package because it is frequently
# and rebuilds take quite long.
inherit (pkgs) fetchurl;
version = "7.0.10";
virtualbox-override = pkgs.virtualbox.overrideAttrs (oldAttrs: {
src = fetchurl {
url = "https://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
sha256 = "0b1e6d8b7f87d017c7fae37f80586acff04f799ffc1d51e995954d6415dee371";
};
});
in {
options.sisyphus.virtualisation.virtualbox.enable = lib.mkEnableOption "VirtualBox";
config = lib.mkIf cfg.enable {
virtualisation.virtualbox = {
host = {
enable = true;
enableExtensionPack = true;
package = virtualbox-override;
};
guest = {
enable = true;
clipboard = true;
seamless = true;
};
};
# Define the group
users.groups.vboxusers = {};
sisyphus.users.wantedGroups = [
config.users.groups.vboxusers.name # The group we defined earlier
config.users.groups.dialout.name # Serial Port
];
};
}

View file

@ -1,17 +0,0 @@
final: prev: {
cmdtime = final.stdenv.mkDerivation {
name = "cmdtime";
version = "v0.0.0";
src = final.fetchFromGitHub {
owner = "tom-auger";
repo = "cmdtime";
rev = "ffc72641dcfa0ee6666ceb1dc712b61be30a1e8b";
hash = "sha256-v6wCfNoPXDD3sS6yUYE6lre8Ir1yJcLGoAW3O8sUOCg=";
};
installPhase = ''
mkdir -p $out/share/cmdtime
cp $src/cmdtime.plugin.zsh $out/share/cmdtime/cmdtime.plugin.zsh
'';
};
}

View file

@ -1,12 +0,0 @@
# The following is taken from: https://nixos-and-flakes.thiscute.world/nixpkgs/overlays
# import all nix files in the current folder, and execute them with args as parameters
# The return value is a list of all execution results, which is the list of overlays
args:
# execute and import all overlay files in the current directory with the given args
builtins.map
(f: (import (./. + "/${f}") args)) # execute and import the overlay file
(builtins.filter # find all overlay files in the current directory
(f: f != "default.nix")
(builtins.attrNames (builtins.readDir ./.)))

View file

@ -1,18 +0,0 @@
final: prev: {
icosystem = final.stdenv.mkDerivation {
name = "icosystem";
version = "v1.0.0";
src = final.fetchFromGitea {
domain = "git.depeuter.dev";
owner = "tdpeuter";
repo = "icosystem";
rev = "ca565dc36d";
hash = "sha256-GJu0APTkrsFH981Y1RBedOnvVJ5Z79w2WPcLkrc8CH0=";
};
installPhase = ''
mkdir -p $out/share/icons
cp -R $src $out/share/icons/icosystem
'';
};
}

View file

@ -1,18 +0,0 @@
final: prev: {
letter = final.stdenv.mkDerivation {
name = "letter";
version = "v1.0.0";
src = final.fetchFromGitea {
domain = "git.depeuter.dev";
owner = "tdpeuter";
repo = "letter";
rev = "v1.0.0";
hash = "sha256-2HaXZMIYSauqj9Cy7rRzYGyuYLno9AHAXpWsyD+BdtE=";
};
installPhase = ''
mkdir -p $out/share/fonts
cp -R $src/ttf $out/share/fonts/letter
'';
};
}

View file

@ -1,24 +0,0 @@
final: prev: {
spotify-adblock = final.rustPlatform.buildRustPackage rec {
name = "spotify-adblock";
version = "v1.0.3";
src = final.fetchFromGitHub {
owner = "abba23";
repo = "spotify-adblock";
rev = "5a3281d";
sha256 = "sha256-UzpHAHpQx2MlmBNKm2turjeVmgp5zXKWm3nZbEo0mYE=";
};
cargoHash = "sha256-oHfk68mAIcmOenW7jn71Xpt8hWVDtxyInWhVN2rH+kk=";
buildInputs = with final; [
cargo
rustc
];
postPatch = ''
mkdir -p $out
cp $src/config.toml $out/config.toml
'';
};
}

View file

@ -1,22 +0,0 @@
GitHub:
ssh: ENC[AES256_GCM,data:jzRpTgefhZg7Vhm8QvWNsPBko1yw56sM/XehY72lAc7aRz+dx6BGgyYbZiifd7GrGJGUbH6gWfUg8YjgVla6VRsiHCEvSK3bY0ADDwTeSUs+wuybYXQZqhivSCInVtVSNAcp99uI1QwKor289zmxcFtSZEXgU1OCSel/8br+qipAbOkzAKX1v15eigjY4OSQxXL59EuuuHEQ+vjVVv95tDv03jaNAoU9UKr0Atrny/Fn2sQn4Tmec5Q1XdvDErKhSxrAFiACkxXUwPZMHez+BUZrmkksqpzNJjYNIlmsITuOVr7Fyen9wotAwsDf96Fmz5JYLtRX9CAboUgQLdUOKprwX/xgBnFtDTSH1Qr785T1QSAZL6xdE6hNibxZO3vGeeaPC3oGB5g9x5CwTQelMdOUPKdKorCDj226o56cTc/IQxUpsULbeOyi2pMGHiTHbiQBzHpxWyQ/gBktPkF25GOFeaCu3gW+xsspX91jSKudcYdBqWUNmJcdsfHfPxPM4cZtA/sVMyoA+YcehgU7GTu9DAlxDTug/JWo,iv:5shfzmrFFVEuaYmyTkBMAw9BIFFkKz0yl1dyJWxq6Y4=,tag:CX7TBJJXCKuIPSmg9/RpGg==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYWWFUdnpERVlkK29TQ09k
SnJMVm5rUEV6S0huSzJ2YjFFQ3pNR0pmZWprClZEVDloeDE2ODNkMVVJTUtqaENz
ZzhwTTA4V2xOeW55WGtPZU5FWElQNDAKLS0tIFh5ZWtmZHRBWTAvM3ZwY3pKQ0R6
aDNUbFlhWWVoOWpjVlV1VTVJejlSMjQK6wCeCRdHY5oyTX6/R1U5AOGJyp0exi1A
dWPUMfkKBBBkrR+G6ougd8o3FwFf+yfb5RhaTxxqjit6p2RyMjR64w==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-09-11T10:23:48Z"
mac: ENC[AES256_GCM,data:3XEbhFY1TlXo6bTctV2u4i6QPzXnJC6iU3F/MUARSQl1z4peOB5x8hZfdiV/hVMR8I+83TxDcEAmKDrcaMf89Tqa+OiD//wBekMUfS7AmBRhpv7X5qfarflfnygacFsAMhf/bdiqowYbGSNvlPjueqHJaFZ+3x/wPrt/jAYNlr8=,iv:ciQmY7bE+Je6kMlmxxtQvp+r3e/ZK942tT4TtXhDX2M=,tag:4+7uZlEm5bcRfZC7pp5Y7Q==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.7.3

View file

@ -1,24 +0,0 @@
Hugo:
ssh: ENC[AES256_GCM,data:Qi4YEvG64lJqhISMNtuC0mM02TU5KPpzdgs8x2UJwxAxus4+Aa3nIttkbcbKxtobL7ohKcMFGq7bBdj+s4zbctctknHdjiwj1caDoD7+Fm5H0RWLe7yjt5e4IxRywN8cNF59FfINl2tMutuENOzSucjHIXTKSV/ARZzwhcyZkQy//YvlReUSrUNaNkVM1VtjVILOToAXGzQx5w74eX+9JYV9FtZRTbr/spule+UDDtPZaaiFZmFfE5YjULFPaZJo2iUiirKalPodxfIar9eXzoN+bOQbz2Xys1QHNEt2cwWjERruCsojiyA+XeYFreWEWGggSEXizxv7cS5ab1e9XqtWR+u3Gdy/t1/cjoMBVXuLxQ+BwTlAO8NDgRbW0aq8q5yOsPCjShI/N4EVN5qtMUT1+mYZLCiZPPXbLBIiyqIWea/Ru8iIo7+WoF2iDBgshwnw8+uGDFfwlNh3SAwMSQOcGg06+U17PeU56Q/wqID2lEMDgGfHdqObvMlae1q+Qa9cwrp4xDw5S42NlgVaNcovUav5US5kO43r,iv:xvuRv4sqLRGv9npIVjnGV7zDPzIyS58ZKN2T23BmMZs=,tag:iGnBzgRhREEfKjE/ea5Drw==,type:str]
Gitea:
ssh: ENC[AES256_GCM,data:digqDmnEPg/Zn9Xt7+Z/R9lTBs6CeOgHgIhstWxHnvucwshUO7Zu+l80YPyzAck0pO5YIKML8hjAqj30lYqSPRzG1uRpT7likCy15MqyyQ64U+5PGQRNhybo1eYoqVFYd2sYc5xzkve1b8zCDfxj2mbmRYETYSidHZLaDilq6iKtWWSX+mnTXqJ2gIj+J7pfFBOHskWglnrVdj93AOdpG6cmnvzE7ey8SrMt9t0GzmRFAvjP3slio8NTsI97fu3isF0phGoh8q9tGGRnRMDq3E33zzntT3jawtWiib9ZCxuJ8Zhwc1fIF07YfBJ+sZJ7Kau1205NFJtISGbVhVmpD9kQdoFwYQxYJuvPcDYyIYH/K86bYnBmJWRCwbTh7Es7DCCC90VY/yMjRNoYvjupjhuHKGXE8O/Y8weERZ+GuZ8BSxFwU81YK9mcQyw+Z+MdAFsZEhR7cpxRkty2INKxOdX8wJGVw3A1cInwuiBjLiED0ndh39RqJbE8DUQAJgngSbYK52rCadjhs2xf+tPiDatsDMAHU2DpyDcz,iv:Dh9hhr1mp+gXA1eUvsJVb5opbaEtdRMKAd4HQSQlOpc=,tag:k4M96tstNATvyFe6xF2IzQ==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYWWFUdnpERVlkK29TQ09k
SnJMVm5rUEV6S0huSzJ2YjFFQ3pNR0pmZWprClZEVDloeDE2ODNkMVVJTUtqaENz
ZzhwTTA4V2xOeW55WGtPZU5FWElQNDAKLS0tIFh5ZWtmZHRBWTAvM3ZwY3pKQ0R6
aDNUbFlhWWVoOWpjVlV1VTVJejlSMjQK6wCeCRdHY5oyTX6/R1U5AOGJyp0exi1A
dWPUMfkKBBBkrR+G6ougd8o3FwFf+yfb5RhaTxxqjit6p2RyMjR64w==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-10-05T19:05:15Z"
mac: ENC[AES256_GCM,data:8xMV6RkmXpt2uY07E+59ZXwTwTL6oqo9j5sFOxejwnFU06MGW9t1h/5HFg+GKpp3Jj1LT6a7uuyip6bDGCMEhI054sTv2uDlOIFd4nbHwOh+keEH/FLa8csTq4yyisROsaXUUCtWxraGXz0MQXT8xlQMT7Pn0x43JssmPhOwrRo=,iv:JKNsroIAxvV5V23at/DsDdud5idVn5IEQHrgeFHR3fQ=,tag:XY0hikk4yvqfynPI8q+GBg==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.7.3

View file

@ -1,27 +0,0 @@
UGent:
GitHub:
ssh: ENC[AES256_GCM,data:J50bZHBhN1AT1mF0YpzAFvC4zYeXiIPLJsb4Bx2oqnwX8XlfL0xta7z9Y5CmLxBIxowpj2sLaAnElO1pbsGl8NCnERYvAAt0tpnF3ndozLKfqGPsBKnnc/s9CrZhcsCtoH23lMlVsYMJfVR3B1/0W1XeU+E/GpzBTaH0jkwpmE9+k/TdtPPqSqHvF47NS9lTDx9puHSFixNhxUE82/7wvKTrkGO6+SJXTELXqFM7IojwIHs9UrL2zIrMMRnSPwAiZ96UI4Cg2S18j610ZzX/aw1qODqL53ZfZ9HKurGxyEN58ehR4UhiGsHiml9Ged9UIHhpX3DtMCrwrZfAzGLDV4DxDGQRT8C/aCgOag5AtYJczivY8wA9CQpiTBBUlomUurjRtiSX4FdvZxZLTmY+DtnE/SblRNsAZUEu6DVcg+HUYgqWu+XgVhWyKCiEbKpw0Crl4O3e8evIZ8H7+o3ydQjSgjbIkNjtYGR6fH/8Hh1HOsdh9CDevhNh0TtD/KP7ahTEIeelm6A9ZaP92Bnga5aafKtjX0RBOv4u,iv:6YE94ihsaUkB9+c48ELvRiY8bgZvS0EoyP+l5AisW8o=,tag:NSMpky7GoxDkybFSCjJm3Q==,type:str]
HPC:
ssh: ENC[AES256_GCM,data:A4ir0yvCgIVJCl4C5fB4+WhJVj6Go9XWfjw1/lOaWr2rP+tVNnjGuv/d47z55Gxose5keYX2wRMet/M2Re18+5ckFTyfT4YkcHtQCyBGbmwYmIzxcaxinNsCuOelEdNnFnYW2ha0aJ8Q5Xjfpec1YqDrCT/Add3qGRzBizQJ1FajbyhxJOKLYvUrYvLZ8+XE8SUndvjQnVig3ArUm2hDFsEMm4ClZ4T+EwcIuWrS8ia7ZoqlQhglEtlSEczE65a6hQAFeXE64YC3s8kWlRGhRqJQXjB5g/UTkOht3Vrw2cNzrz90tR9vhooOEBEI6d8F8RJGkdyUe5zod1eKnE/lwOFhhTbzrGrYzX4oUrDIL+Dx9+R9mQchv9qSau1JtKDvzkYmqVVgTC6wE98gTRSBw78f0MKO27FA3diC/k3t+mwsKVRjcvlTUcbRcFAxjq/U5TbOq5jOgA41dI9KE/+bnJoLRh81m/sq9EqMTp90wDKn+jjCn7lGcGDwtaaTlbLIGIw5u9pcfD4UyvJZamnS96JAhsDUqk+fxb05,iv:jPCdaC7CahKrj3tvzZTs1ZI/3+zuCCqIdXp3vo9l/iY=,tag:DeUdWEZHpsB1AMD2AQuiTg==,type:str]
SubGit:
ssh: ENC[AES256_GCM,data:hJAle4DHJNvX569reclBG5rEdWsjAyV2TtHYMiPfky/dMKJkYgT4+T0doLfUn1O6at77kJGPmwUEvmK819DUuvHtNY7c6angV7iLygJ/ThI1FIFOKH+NxEsI3scoT0VDDybHpgice/fcJL1tMcvE74+dWOnZ2r4pxcMJEFHUPVVWcl9/stJLn78OonsyWpj8PglcnYFOfZ6THIe3lyNBxRp7XEweuwjacthGzOzNu3Z95zcCAnAokFVZ570glJNhjJVNEmPHZkHOcGiGNNM4JNbR11v+dOYtac942t/mmmWwAzbznuu8ZLupYWjdg/f07ftkPAwFwCoXblZ3708Lvf6uOt/CPeWvEII2Haf1Cr5w+U6TAt14zzL73xCSQqwz1TfkcmD+bJplmtcpSP/KX8/BRK7qr6Ec5T9ecbraRB7zDBg0X2x51DSHLrA7UIhpI9JNaOArU5UOVYTWwuzFiGG61elJMcPZ5vWEVrTCocfa4INPo4B2MkFbbsYf6xnY1L3Wc9LQjkff6aCqYnQaXZ/WfPWepf9YvYG1,iv:0Bm1r0FuJJKKmcbTiPL36rb5FaMZfOO7Mx8pXU2FSfg=,tag:0ShoJPJUx37mEAus+mhPmw==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYWWFUdnpERVlkK29TQ09k
SnJMVm5rUEV6S0huSzJ2YjFFQ3pNR0pmZWprClZEVDloeDE2ODNkMVVJTUtqaENz
ZzhwTTA4V2xOeW55WGtPZU5FWElQNDAKLS0tIFh5ZWtmZHRBWTAvM3ZwY3pKQ0R6
aDNUbFlhWWVoOWpjVlV1VTVJejlSMjQK6wCeCRdHY5oyTX6/R1U5AOGJyp0exi1A
dWPUMfkKBBBkrR+G6ougd8o3FwFf+yfb5RhaTxxqjit6p2RyMjR64w==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-10-10T06:57:11Z"
mac: ENC[AES256_GCM,data:Tvwv2mqceAxi7ic3+95Y6hBMHjqVoCkYnTkEsXOrhumgXpuuB/QQ0ASEf6gbgkCLXGwnUAXsK41bIIJfFgYSk89fHw6AaXfs6a+zL2Mh5zkhMIE2bm68mFK8+/TX/e8SibbEwNZCKOcPqvaO6nK816KCmh3KKCbT9ObaB6CA/KI=,iv:YPKgYAnQ135JXou7q9jVN7b3SKIDwceKcbqiIjkqnTU=,tag:udPrEVu2F+hWkhNoEyjTYg==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.7.3

View file

@ -1,30 +0,0 @@
hello: ENC[AES256_GCM,data:Qs69AsC8Yz+2RWSMvZp3zw==,iv:9p9bf2MI0HFwPB5qu0nTy3riyE6xUqsdObaXv3vgs3c=,tag:fjwrOPR/2vIeNgPDEVI+LQ==,type:str]
example_key: ENC[AES256_GCM,data:JaknfPEPPtIotkwWpQ==,iv:OQy1S24scW0Ac9omkHg1HSCH6b7cClBMDH1GXZkzUBY=,tag:ItO6EdXKy4zOuZ2DROI+Tg==,type:str]
#ENC[AES256_GCM,data:Pok2Tcvryb59LmHDanq5/Q==,iv:Wl2nAb0X7s3bFeGeVUAHb+FMqrKHSJwwHulhdwhPkuE=,tag:YxicHwyrYLZZ6sFGNvkMMA==,type:comment]
example_array:
- ENC[AES256_GCM,data:ULZ3vixg/k1biadqhw8=,iv:7NMuh30RkiBGpXO/sd5WKzBggNnMZkV8eD16w39utd4=,tag:+ReYo3sQf2rgK0nTXAq1UA==,type:str]
- ENC[AES256_GCM,data:VawE9ClM28rRQPScWAM=,iv:XKiKDFGy6Io5gyp/FHLXIs7CpT41E6KAKHQmuZLRVHE=,tag:FSIdSnI/emPwHk0dQVT/TQ==,type:str]
example_number: ENC[AES256_GCM,data:yd6R8u2Nd5effA==,iv:7NO330iRkYO42a4AjBr5Ebv/nxx5J0/OpWKIqMTqdPQ=,tag:N/RK1+Q+QqnVPCkGPA1/AQ==,type:float]
example_booleans:
- ENC[AES256_GCM,data:Ul7fKA==,iv:U51FhTsWwkbhUWGsO8D+bl2mLdTIfapIB+OGJEOAiRA=,tag:9NJLKp8s2TSKLyXwM8OncA==,type:bool]
- ENC[AES256_GCM,data:LVU1a90=,iv:1X1qV+8iIe1i5hIrqyB3tJew9hsHjJHlATmkEmwRA0Y=,tag:ko/5OwmJH/6HKPsvbkoRpw==,type:bool]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3ekx1bzluY0ZhYmhnRmhW
b3pzM2RlKzFrREpMK3RNU1MweldNRXJ5NjE4CmNRbnFvbk1EN0V0ZWJiVzFmL3Jt
N1Vpb3NEdXFzdzU4MjN1elp1RWZ5THcKLS0tIDR4cTFJNVFveEdxaEYvZndKbURa
UHpaNENhL3c1K3RXc05hUmdNZVBpT2MKwBj4+Gb7giVJIoPWiwY3tvugEAexXy6Q
YTWgZQZk96r5aF2mBjRCFCc7prj85PsUN/UXOPjPLVAFG3lwS0Eaog==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-09-10T20:20:18Z"
mac: ENC[AES256_GCM,data:yfmYEo8pdlG3tu4Fabwde57igIvpt4UuhQqStVlV36rvPnv9dc42+6iduu+heuQ2OAVw0jk6/o6SWJpcms2DReOAMGDOgt+zV3TgJym52YdMcjTNJTo+4loULhvaWyN9ZdPJjSYKEoSgOZi+oMx4BpwreQEaPaYUxcbTqrWCUa8=,iv:Mb81sBxibRxSaC2kgakhy2pyEmW0MDobF+lHF7cny5E=,tag:DCqTWSnf5Gv5YfAGSEC2yw==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.7.3

View file

@ -0,0 +1,3 @@
# created: 2023-04-11T14:44:53+02:00
# public key: age1q2gqur3t4fu8flsuu2zdnule37vdkh6egpt6a2e3ytx433x8gpvsr4hw6l
AGE-SECRET-KEY-10J7MWCWQQY33TVNMQ9AMH4TH5LULSVAZ539P9QG3NA2Z3LTMXAFS2QQ4NG

View file

@ -1,14 +0,0 @@
{ config, lib, ... }:
{
imports = [
./tdpeuter
];
options.sisyphus.users.wantedGroups = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
example = [ config.users.groups.wheel.name ];
description = "Groups to which a user should be added";
};
}

View file

@ -1,174 +0,0 @@
{ config, lib, pkgs, pkgs-unstable, ... }:
let
cfg = config.sisyphus.users.tdpeuter;
user = config.users.users.tdpeuter.name;
installedPkgs = config.environment.systemPackages ++ config.home-manager.users.tdpeuter.home.packages;
cursor = {
package = pkgs.phinger-cursors;
name = "phinger-cursors";
size = 24;
};
in {
imports = [
./dotfiles.nix
./firefox.nix # Enables Firefox without setting options
./mail.nix # Enables Thunderbird without setting options
./secrets.nix
];
options.sisyphus.users.tdpeuter.enable = lib.mkEnableOption "user Tibo De Peuter";
config = lib.mkIf cfg.enable {
users.users.tdpeuter = {
description = "Tibo De Peuter";
isNormalUser = true;
extraGroups = config.sisyphus.users.wantedGroups ++ [
config.users.groups.input.name
config.users.groups.keys.name
config.users.groups.networkmanager.name
config.users.groups.wheel.name
];
initialPassword = "ChangeMe";
shell = pkgs.zsh;
};
fonts.packages = with pkgs; [
corefonts # Calibri for Uni
font-awesome # Dependency of Vifm & zsh config
letter # Personal font
noto-fonts-cjk # Dependency of Zellij config
noto-fonts # Dependency of Zellij config
vistafonts # Microsoft fonts
];
sisyphus = {
programs.spotify-adblock.enable = true;
};
home-manager.users.tdpeuter = lib.mkIf config.sisyphus.programs.home-manager.enable {
programs.home-manager.enable = true;
home = {
username = user;
homeDirectory = "/home/${user}";
inherit (config.system) stateVersion;
packages = (with pkgs; [
cmdtime # Zsh plugin
icosystem # Personal icon theme
spotify-adblock
]) ++ (with pkgs-unstable; [
brave
chafa # Terminal image viewer
duf # Df alternative
foot
fzf
glow # Terminal Markdown renderer
jellyfin-media-player
kitty
libreoffice-fresh
logseq
mpv
nextcloud-client
nsxiv # Lightweight image viewer
qalculate-gtk # Calculator
spotify
unzip
vifm # File manager
zathura # PDF viewer
zellij # Tmux + screen alternative
zsh
zsh-autosuggestions
zsh-syntax-highlighting
# SMB
cifs-utils psmisc
# Linters and LSPs
statix # Nix
ruff pylint # Python
]);
pointerCursor = {
inherit (cursor) package name size;
gtk.enable = true;
x11.enable = true;
};
};
# GNOME ricing
# Browse available settings by running:
# gsettings list-schemas | xargs -I % sh -c 'echo %; gsettings list-keys %' | less
dconf.settings = lib.mkIf config.sisyphus.desktop.gnome.enable {
"org/gnome/desktop/background" = {
picture-uri = "file:///home/tdpeuter/Nextcloud/Afbeeldingen/wallpapers/bg";
picture-uri-dark = "file:///home/tdpeuter/Nextcloud/Afbeeldingen/wallpapers/bg-dark";
};
"org/gnome/desktop/interface" = {
enable-animations = false;
enable-hot-corners = false;
};
"org/gnome/desktop/notifications" = {
show-in-lock-screen = false;
};
"org/gnome/desktop/peripherals.touchpad" = {
tap-to-click = true;
};
"org/gnome/mutter" = {
dynamic-workspaces = true;
workspaces-only-on-primary = false;
};
"org/gnome/shell/app-switcher" = {
current-workspace-only = true;
};
};
gtk = {
enable = true;
cursorTheme = cursor;
};
xdg = {
desktopEntries.spotify = {
name = "Spotify";
genericName = "Music Player";
icon = "spotify-client";
exec = "env LD_PRELOAD=${pkgs.spotify-adblock}/lib/libspotifyadblock.so spotify %U";
mimeType = [ "x-scheme-handler/spotify" ];
categories = [ "Audio" "Music" "Player" "AudioVideo" ];
settings = {
TryExec = "spotify";
StartupWMClass = "spotify";
};
};
mimeApps = {
enable = true;
defaultApplications = let
browser = "firefox.desktop";
image-viewer = "nsxiv.desktop";
pdf-viewer = "org.pwmt.zathura-pdf-mupdf.desktop";
in {
"application/pdf" = pdf-viewer;
"application/x-extension-htm" = browser;
"application/x-extension-html" = browser;
"application/x-extension-shtml" = browser;
"application/x-extension-xht" = browser;
"application/x-extension-xhtml" = browser;
"application/xhtml+xml" = browser;
"image/jpeg" = image-viewer;
"image/png" = image-viewer;
"image/webp" = image-viewer;
"text/html" = browser;
"x-scheme-handler/chrome" = browser;
"x-scheme-handler/http" = browser;
"x-scheme-handler/https" = browser;
};
};
};
};
};
}

View file

@ -1,117 +0,0 @@
{ config, lib, pkgs, pkgs-unstable, ... }:
# Does basically the same thing that stow does, but using Nix.
let
cfg = config.sisyphus.users.tdpeuter;
user = config.users.users.tdpeuter.name;
installedPkgs = config.environment.systemPackages ++ config.home-manager.users.tdpeuter.home.packages;
in {
config = lib.mkIf cfg.enable {
home-manager.users.tdpeuter = lib.mkIf config.sisyphus.programs.home-manager.enable {
home = {
file = lib.mkMerge [
{
".config/alacritty" = {
enable = false;
source = ../../../stow/alacritty/.config/alacritty;
};
".config/dunst" = {
inherit (config.sisyphus.desktop.sway) enable;
source = ../../../stow/dunst/.config/dunst;
};
".config/foot" = {
recursive = true;
source = ../../../stow/foot/.config/foot;
};
".config/fuzzel" = {
recursive = true;
source = ../../../stow/fuzzel/.config/fuzzel;
};
".config/git" = {
recursive = true;
source = ../../../stow/git/.config/git;
};
".config/kitty" = {
enable = false;
recursive = true;
source = ../../../stow/kitty/.config/kitty;
};
".config/mako" = {
enable = false;
source = ../../../stow/mako/.config/mako;
};
".config/mpv" = {
source = ../../../stow/mpv/.config/mpv;
};
".config/OpenRGB" = {
inherit (config.sisyphus.services.openrgb) enable;
recursive = true;
source = ../../../stow/openrgb/.config/OpenRGB;
};
".config/sway" = {
inherit (config.sisyphus.desktop.sway) enable;
source = ../../../stow/sway/.config/sway;
};
".config/swayidle" = {
inherit (config.sisyphus.desktop.sway) enable;
source = ../../../stow/swayidle/.config/swayidle;
};
".config/swaylock" = {
inherit (config.sisyphus.desktop.sway) enable;
source = ../../../stow/swaylock/.config/swaylock;
};
".config/vifm" = {
recursive = true; # Fix history and all working
source = ../../../stow/vifm/.config/vifm;
};
".config/waybar" = {
inherit (config.sisyphus.desktop.sway) enable;
source = ../../../stow/waybar/.config/waybar;
};
".config/zellij" = {
source = ../../../stow/zellij/.config/zellij;
};
".oh-my-zsh" = {
enable = config.users.users.tdpeuter.shell == pkgs.zsh;
source = "${pkgs.oh-my-zsh}/share/oh-my-zsh";
recursive = true;
};
".oh-my-zsh/themes/tdpeuter.zsh-theme" = {
enable = config.users.users.tdpeuter.shell == pkgs.zsh;
source = ../../../stow/zsh/.oh-my-zsh/themes/tdpeuter.zsh-theme;
};
".ssh/config" = lib.mkIf config.sisyphus.programs.ssh.enable {
inherit (config.sisyphus.programs.ssh) enable;
source = ../../../stow/ssh/.ssh/config;
};
".vim" = {
recursive = true;
source = ../../../stow/vim/.vim;
};
".vim/autoload/plug.vim" = {
source = "${pkgs.vimPlugins.vim-plug}/plug.vim";
};
".vimrc" = {
source = ../../../stow/vim/.vimrc;
};
}
(lib.mkIf (config.users.users.tdpeuter.shell == pkgs.zsh) {
".zshrc" = {
source = ../../../stow/zsh/.zshrc;
};
".zsh/plugins/cmdtime/cmdtime.plugin.zsh" = {
source = "${pkgs.cmdtime}/share/cmdtime/cmdtime.plugin.zsh";
};
".zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh" = {
source = "${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh";
};
".zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" = {
source = "${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh";
};
})
];
};
};
};
}

View file

@ -1,66 +0,0 @@
{ config, lib, pkgs, pkgs-unstable, ... }:
let
cfg = config.sisyphus.users.tdpeuter;
user = config.users.users.tdpeuter.name;
in {
config = lib.mkIf cfg.enable {
home-manager.users.tdpeuter.programs.firefox = lib.mkIf config.sisyphus.programs.home-manager.enable {
enable = true;
package = pkgs-unstable.firefox.override {
cfg = {
speechSynthesisSupport = true; # Allow Text-to-speech in e.g. Discord
};
nativeMessagingHosts = with pkgs; [
tridactyl-native
];
extraPolicies = {
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
OfferToSaveLogins = false;
};
# Support smart cards
pkcs11Modules = with pkgs-unstable; [
eid-mw
];
};
profiles.tdpeuter.search= {
default = "DuckDuckGo";
force = true;
engines = {
"Bing".metaData.hidden = true;
"eBay".metaData.hidden = true;
"Qwant".metaData.hidden = true;
"Nix Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@np" ];
};
"GitHub" = {
urls = [{
template = "https://github.com/search";
params = [
{ name = "q"; value = "{searchTerms}"; }
{ name = "type"; value = "repositories"; }
];
}];
icon = "${pkgs.icosystem}/share/icons/icosystem/scalable/apps/github-mark.svg";
definedAliases = [ "@gh" ];
};
};
};
};
};
}

View file

@ -1,139 +0,0 @@
{ config, lib, pkgs, pkgs-unstable, ... }:
let
cfg = config.sisyphus.users.tdpeuter;
user = config.users.users.tdpeuter.name;
signatures = {
default = ''
Met vriendelijke groeten
Tibo De Peuter
'';
UGent = ''
Met vriendelijke groeten
Tibo De Peuter
Student 2Ba/3Ba Informatica
'';
MrFortem = ''
Kind regards
MrFortem Fiducia
'';
};
in {
config = lib.mkIf cfg.enable {
home-manager.users.tdpeuter = lib.mkIf config.sisyphus.programs.home-manager.enable {
accounts.email.accounts = {
Telenet = {
address = "tibo.depeuter@telenet.be";
userName = "tibo.depeuter@telenet.be";
imap = {
host = "imap.telenet.be";
port = 993;
tls.enable = true;
};
smtp = {
host = "smtp.telenet.be";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
realName = config.users.users.tdpeuter.description;
signature = {
showSignature = "append";
text = signatures.default;
};
primary = true;
thunderbird = {
enable = true;
settings = id: {
"mail.identity.id_${id}.htmlSigText" = signatures.default;
};
};
};
UGent = {
flavor = "outlook.office365.com";
address = "tibo.depeuter@ugent.be";
realName = config.users.users.tdpeuter.description;
signature = {
showSignature = "append";
text = signatures.UGent;
};
thunderbird = {
enable = true;
settings = id: {
"mail.server.server_${id}.authMethod" = 10;
"mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.identity.id_${id}.htmlSigText" = signatures.UGent;
# Allow PGP
"mail.identity.id_${id}.openpgp_key_id" = "9B11F5243089DB5B"; # Your 'master' key
"mail.identity.id_${id}.attachPgpKey" = true;
};
};
};
Gmail = {
flavor = "gmail.com";
address = "tibo.depeuter@gmail.com";
realName = config.users.users.tdpeuter.description;
signature = {
showSignature = "append";
text = signatures.default;
};
thunderbird = {
enable = true;
settings = id: {
"mail.identity.id_${id}.htmlSigText" = signatures.default;
};
};
};
MrFortem = {
flavor = "gmail.com";
address = "fortemfiducia@gmail.com";
realName = "Fortem Fiducia";
signature = {
showSignature = "append";
text = signatures.MrFortem;
};
thunderbird = {
enable = true;
settings = id: {
"mail.server.server_${id}.directory" = ".thunderbird/tdpeuter/ImapMail/imap.gmail.com-mrfortem";
"mail.server.server_${id}.directory-rel" = "[ProfD]ImapMail/imap.gmail.com-mrfortem";
"mail.identity.id_${id}.htmlSigText" = signatures.MrFortem;
};
};
};
};
programs = {
thunderbird = {
enable = true;
profiles.tdpeuter = {
isDefault = true;
settings = {
# View
"mailnews.default_sort_order" = 2; # Sort descending
"mailnews.mark_message_read.delay" = true;
"mailnews.start_page.enabled" = false;
"mail.pane_config.dynamic" = 2; # Vertical view
# Encryption
"mail.openpgp.allow_external_gnupg" = true; # Enable YubiKey GPG signing
"mail.e2ee.auto_enable" = true; # Automatically enable encryption when possible.
};
};
};
};
};
};
}

View file

@ -1,34 +0,0 @@
{ config, lib, pkgs, pkgs-unstable, ... }:
let
cfg = config.sisyphus.users.tdpeuter;
user = config.users.users.tdpeuter.name;
in {
config = lib.mkIf cfg.enable {
sops.secrets = lib.mkIf config.sisyphus.programs.sops.enable (
let
Hugo = {
format = "yaml";
sopsFile = ../../secrets/Hugo.yaml;
owner = user;
};
UGent = {
format = "yaml";
sopsFile = ../../secrets/UGent.yaml;
owner = user;
};
in {
"Hugo/ssh" = Hugo;
"UGent/HPC/ssh" = UGent;
"GitHub/ssh" = {
format = "yaml";
sopsFile = ../../secrets/GitHub.yaml;
owner = user;
};
"Hugo/Gitea/ssh" = Hugo;
"UGent/GitHub/ssh" = UGent;
"UGent/SubGit/ssh" = UGent;
});
};
}

View file

@ -1,19 +0,0 @@
#!/usr/bin/env bash
# Script to toggle Do not disturb mode for dunst
# Get current state
if [ "$( command -v dunstctl )" ]; then
current_state="$( dunstctl is-paused )"
fi
# Toggle
if [ "${current_state}" == "false" ] ; then
notify-send 'Hiding notifications'
sleep 5
# makoctl set-mode do-not-disturb
dunstctl set-paused true
else
# makoctl set-mode default
dunstctl set-paused false
notify-send 'Showing notifications'
fi

View file

@ -1,140 +0,0 @@
#!/usr/bin/env bash
# Toggle light- or dark-mode for your applications
# Usage: toggle [-m light|dark] [-g]
#################
### Variables ###
#################
THEME_LIGHT='tdpeuter-light'
THEME_DARK='tdpeuter-dark'
THEME_DEFAULT="${THEME_LIGHT}"
STATE_DIR="${HOME}/.local/state/sisyphus"
STATE_FILE="${STATE_DIR}/theme"
BG_DIR="${HOME}/Nextcloud/Afbeeldingen/wallpapers"
declare -A theme_next
theme_next[${THEME_LIGHT}]="${THEME_DARK}"
theme_next[${THEME_DARK}]="${THEME_LIGHT}"
declare -A gsettings_alt
gsettings_alt[${THEME_LIGHT}]='default'
gsettings_alt[${THEME_DARK}]='prefer-dark'
declare -A gtk_theme
gtk_theme[${THEME_LIGHT}]='Adwaita'
gtk_theme[${THEME_DARK}]='Adwaita-dark'
declare -A wallpaper
wallpaper[${THEME_LIGHT}]="bg-light"
wallpaper[${THEME_DARK}]="bg-dark"
#############
### Logic ###
#############
# Parse options
while getopts ":m:g" option; do
case "${option}" in
m)
if [ "${OPTARG}" == 'light' ]; then
theme="${THEME_LIGHT}"
elif [ "${OPTARG}" == 'dark' ]; then
theme="${THEME_DARK}"
else
>&2 printf "Error: Invalid mode: '%s'.\nShould be either 'light' or 'dark'\n" "${option}"
exit 1
fi
;;
g)
previous_theme="$(cat ${STATE_FILE})"
if [ "${previous_theme}" == "${THEME_LIGHT}" ]; then
class="activated"
percentage=1
else
percentage=0
fi
printf '{ "class": "%s", "percentage": %d }' "${class}" "${percentage}"
exit 0
;;
*)
>&2 printf "Error: Invalid option: '%s'.\n" "${option}"
exit 1
;;
esac
done
shift $(( OPTIND - 1 ))
# Check if the state file exists
if ! [ -d "$(dirname ${STATE_FILE})" ]; then
mkdir -p "$(dirname ${STATE_FILE})"
fi
# Choose next theme
previous_theme="$(cat ${STATE_FILE})"
if ! [[ -z "${previous_theme}" || "${theme}" ]]; then
theme="${theme_next[${previous_theme}]}"
fi
echo "${theme:=${THEME_DEFAULT}}" > "${STATE_FILE}"
######################
### Set all themes ###
######################
# Update terminal colors by sending it OSC sequences.
# Alternatively, you could use theme.sh (https://github.com/lemnos/theme.sh)
# Function below loosely based on theme.sh and https://codeberg.org/dnkl/foot/issues/708
function update_terminal_colors() {
for pid in $(pgrep zsh); do
if [ "${theme}" == "${THEME_LIGHT}" ]; then
printf "\033]10;#000000\007" >> /proc/${pid}/fd/0
printf "\033]11;#ffffff\007" >> /proc/${pid}/fd/0
elif [ "${theme}" == "${THEME_DARK}" ]; then
printf "\033]10;#ffffff\007" >> /proc/${pid}/fd/0
printf "\033]11;#000000\007" >> /proc/${pid}/fd/0
fi
done
}
# Foot
if [ "$(command -v foot)" ] ; then
# Make color theme switch 'permanent'.
echo "include=~/.config/foot/themes/${theme}.ini" > ~/.config/foot/theme.ini &
# We will have to change the terminal colors ourselves.
update_terminal_colors &
fi
# GNOME (GTK)
if [ "$(command -v gsettings)" ]; then
gsettings set org.gnome.desktop.interface color-scheme "${gsettings_alt[${theme}]}" &
gsettings set org.gnome.desktop.interface gtk-theme "${gtk_theme[${theme}]}" &
fi
# Kitty
if [ "$(command -v kitty)" ]; then
kitten themes --reload-in all --config-file-name theme.conf "${theme}" &
fi
# Sway
if [ "$(command -v swaybg)" ]; then
bg_path="${BG_DIR}/${wallpaper[${theme}]}"
/run/current-system/sw/bin/cp "${bg_path}" "${STATE_DIR}/bg" && swaymsg reload &
fi
# Vifm
if [ "$(command -v vifm)" ]; then
echo "colorscheme ${theme} Default-256 Default" > ~/.config/vifm/theme.conf
# Update all running instances
vifm --remote -c "colorscheme ${theme}" &
fi
# Vim
if [ "$(command -v vim)" ]; then
echo "colorscheme ${theme}" > ~/.vim/theme.conf
# Update all running instances
for server in $(vim --serverlist); do
vim --servername "${server}" --remote-send "<C-\><C-N>:colorscheme ${theme}<CR>"
done
fi

View file

@ -102,41 +102,41 @@ window:
#multiplier: 3 #multiplier: 3
# Font configuration # Font configuration
font: # font:
# Normal (roman) font face # Normal (roman) font face
normal: # normal:
# Font family # Font family
# #
# Default: # Default:
# - (macOS) Menlo # - (macOS) Menlo
# - (Linux/BSD) monospace # - (Linux/BSD) monospace
# - (Windows) Consolas # - (Windows) Consolas
family: Letter # family: Letter
# The `style` can be specified to pick a specific face. # The `style` can be specified to pick a specific face.
style: Extended # style: Extended
# Bold font face # Bold font face
bold: # bold:
# Font family # Font family
# #
# If the bold family is not specified, it will fall back to the # If the bold family is not specified, it will fall back to the
# value specified for the normal font. # value specified for the normal font.
family: Letter # family: Letter
# The `style` can be specified to pick a specific face. # The `style` can be specified to pick a specific face.
style: Heavy # style: Heavy
# Italic font face # Italic font face
italic: # italic:
# Font family # Font family
# #
# If the italic family is not specified, it will fall back to the # If the italic family is not specified, it will fall back to the
# value specified for the normal font. # value specified for the normal font.
family: Letter # family: Letter
# The `style` can be specified to pick a specific face. # The `style` can be specified to pick a specific face.
style: Oblique # style: Oblique
# Bold italic font face # Bold italic font face
#bold_italic: #bold_italic:

View file

@ -1,229 +0,0 @@
# -*- conf -*-
# ~/.config/foot/foot.ini
# Include the correct color scheme
include=~/.config/foot/theme.ini
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
term=xterm-256color
# login-shell=no
# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
# title=foot
# locked-title=no
font=letter extended:size=10
# font-bold=<bold variant of regular font>
# font-italic=<italic variant of regular font>
# font-bold-italic=<bold+italic variant of regular font>
# font-size-adjustment=0.5
# line-height=<font metrics>
# letter-spacing=0
# horizontal-letter-offset=0
# vertical-letter-offset=0
# underline-offset=<font metrics>
# underline-thickness=<font underline thickness>
# box-drawings-uses-font-glyphs=no
dpi-aware=yes
# initial-window-size-pixels=700x500 # Or,
# initial-window-size-chars=<COLSxROWS>
# initial-window-mode=windowed
pad=10x10 # optionally append 'center'
# resize-delay-ms=100
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
# bold-text-in-bright=no
# word-delimiters=,│`|:"'()[]{}<>
# selection-target=primary
# workers=<number of logical CPUs>
# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is libutempter (Linux)
# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ulog (FreeBSD)
[environment]
# name=value
[bell]
urgent=yes
notify=yes
visual=yes
# command=
# command-focused=no
[scrollback]
# lines=1000
# multiplier=3.0
# indicator-position=relative
# indicator-format=""
[url]
# launch=xdg-open ${url}
# label-letters=sadfjklewcmpgh
# osc8-underline=url-mode
# protocols=http, https, ftp, ftps, file, gemini, gopher
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
[cursor]
# style=block
# color=<inverse foreground/background>
# blink=no
# beam-thickness=1.5
# underline-thickness=<font underline thickness>
[mouse]
# hide-when-typing=no
# alternate-scroll-mode=yes
[touch]
# long-press-delay=400
[colors]
alpha=0.8
# background=242424
# foreground=ffffff
flash=b00020
# flash-alpha=0.5
## Normal/regular colors (color palette 0-7)
# regular0=242424 # black
# regular1=f62b5a # red
# regular2=47b413 # green
# regular3=e3c401 # yellow
# regular4=24acd4 # blue
# regular5=f2affd # magenta
# regular6=13c299 # cyan
# regular7=e6e6e6 # white
## Bright colors (color palette 8-15)
# bright0=616161 # bright black
# bright1=ff4d51 # bright red
# bright2=35d450 # bright green
# bright3=e9e836 # bright yellow
# bright4=5dc5f8 # bright blue
# bright5=feabf2 # bright magenta
# bright6=24dfc4 # bright cyan
# bright7=ffffff # bright white
## dimmed colors (see foot.ini(5) man page)
# dim0=<not set>
# ...
# dim7=<not-set>
## The remaining 256-color palette
# 16 = <256-color palette #16>
# ...
# 255 = <256-color palette #255>
## Misc colors
# selection-foreground=<inverse foreground/background>
# selection-background=<inverse foreground/background>
# jump-labels=<regular0> <regular3> # black-on-yellow
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
# search-box-no-match=<regular0> <regular1> # black-on-red
# search-box-match=<regular0> <regular3> # black-on-yellow
# urls=<regular3>
[csd]
preferred=none
# size=26
# font=<primary font>
# color=<foreground color>
# hide-when-maximized=no
# double-click-to-maximize=yes
# border-width=0
# border-color=<csd.color>
# button-width=26
# button-color=<background color>
# button-minimize-color=<regular4>
# button-maximize-color=<regular2>
# button-close-color=<regular1>
[key-bindings]
# scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none
# scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none
# scrollback-down-line=none
# scrollback-home=none
# scrollback-end=none
# clipboard-copy=Control+Shift+c XF86Copy
# clipboard-paste=Control+Shift+v XF86Paste
# primary-paste=Shift+Insert
# search-start=Control+Shift+r
# font-increase=Control+plus Control+equal Control+KP_Add
# font-decrease=Control+minus Control+KP_Subtract
# font-reset=Control+0 Control+KP_0
# spawn-terminal=Control+Shift+n
# minimize=none
# maximize=none
# fullscreen=none
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-selected=[xargs -r firefox] none
# show-urls-launch=Control+Shift+o
# show-urls-copy=none
# show-urls-persistent=none
# prompt-prev=Control+Shift+z
# prompt-next=Control+Shift+x
# unicode-input=Control+Shift+u
# noop=none
[search-bindings]
# cancel=Control+g Control+c Escape
# commit=Return
# find-prev=Control+r
# find-next=Control+s
# cursor-left=Left Control+b
# cursor-left-word=Control+Left Mod1+b
# cursor-right=Right Control+f
# cursor-right-word=Control+Right Mod1+f
# cursor-home=Home Control+a
# cursor-end=End Control+e
# delete-prev=BackSpace
# delete-prev-word=Mod1+BackSpace Control+BackSpace
# delete-next=Delete
# delete-next-word=Mod1+d Control+Delete
# extend-char=Shift+Right
# extend-to-word-boundary=Control+w Control+Shift+Right
# extend-to-next-whitespace=Control+Shift+w
# extend-line-down=Shift+Down
# extend-backward-char=Shift+Left
# extend-backward-to-word-boundary=Control+Shift+Left
# extend-backward-to-next-whitespace=none
# extend-line-up=Shift+Up
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
# primary-paste=Shift+Insert
# unicode-input=none
# scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none
# scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none
# scrollback-down-line=none
# scrollback-home=none
# scrollback-end=none
[url-bindings]
# cancel=Control+g Control+c Control+d Escape
# toggle-url-visible=t
[text-bindings]
# \x03=Mod4+c # Map Super+c -> Ctrl+c
[mouse-bindings]
# scrollback-up-mouse=BTN_BACK
# scrollback-down-mouse=BTN_FORWARD
# selection-override-modifiers=Shift
# primary-paste=BTN_MIDDLE
# select-begin=BTN_LEFT
# select-begin-block=Control+BTN_LEFT
# select-extend=BTN_RIGHT
# select-extend-character-wise=Control+BTN_RIGHT
# select-word=BTN_LEFT-2
# select-word-whitespace=Control+BTN_LEFT-2
# select-quote = BTN_LEFT-3
# select-row=BTN_LEFT-4
# vim: ft=dosini

View file

@ -1,64 +0,0 @@
[colors]
# alpha=0.8
background=171717
foreground=dcdfe4
# flash=b00020
# flash-alpha=0.5
## Normal/regular colors (color palette 0-7)
regular0=242424 # black
# regular0=21222c
# regular1=f62b5a # red
regular1=c86564
regular2=47b413 # green
# regular2=b2bc68
regular3=e3c401 # yellow
# regular3=f7e03f
# regular4=24acd4 # blue
regular4=80a2be
regular5=f2affd # magenta
# color5 #b294bb
# regular6=13c299 # cyan
regular6=8abeb7
regular7=e6e6e6 # white
# regular7=ffffff
## Bright colors (color palette 8-15)
# bright0=616161 # bright black
# bright0=6272a4
# bright1=ff4d51 # bright red
# color9 #C86564
# bright2=35d450 # bright green
# color10 #B2BC68
# bright3=e9e836 # bright yellow
# color11 #f7e03f
# bright4=5dc5f8 # bright blue
# color12 #80A2BE
# bright5=feabf2 # bright magenta
# bright5=b294bb
# bright6=24dfc4 # bright cyan
# bright6=8abeb7
bright7=ffffff # bright white
## dimmed colors (see foot.ini(5) man page)
# dim0=<not set>
# ...
# dim7=<not-set>
## The remaining 256-color palette
# 16 = <256-color palette #16>
# ...
# 255 = <256-color palette #255>
## Misc colors
# selection-foreground=<inverse foreground/background>
# selection-foreground=000000
# selection-background=<inverse foreground/background>
# selection-background=fffacd
# jump-labels=<regular0> <regular3> # black-on-yellow
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
# search-box-no-match=<regular0> <regular1> # black-on-red
# search-box-match=<regular0> <regular3> # black-on-yellow
# urls=<regular3>
urls=0087bd

View file

@ -1,64 +0,0 @@
[colors]
# alpha=0.8
background=fafafa
foreground=000000
# flash=b00020
# flash-alpha=0.5
## Normal/regular colors (color palette 0-7)
# regular0=242424 # black
# color0 #383A42
# regular1=f62b5a # red
# color1 #E45649
# regular2=47b413 # green
# color2 #40A14F
# regular3=e3c401 # yellow
# color3 #C18401
# regular4=24acd4 # blue
regular4=0184bc
# regular5=f2affd # magenta
# color5 #A626A4
# regular6=13c299 # cyan
# color6 #0997B3
# regular7=e6e6e6 # white
# color7 #FAFAFA
## Bright colors (color palette 8-15)
# bright0=616161 # bright black
# color8 #6272a4
# bright1=ff4d51 # bright red
# color9 #E45649
# bright2=35d450 # bright green
# color10 #40A14F
# bright3=e9e836 # bright yellow
# color11 #C18401
# bright4=5dc5f8 # bright blue
# color12 #0184BC
# bright5=feabf2 # bright magenta
# color13 #A626A4
# bright6=24dfc4 # bright cyan
# color14 #0997B3
# bright7=ffffff # bright white
# color15 #FAFAFA
## dimmed colors (see foot.ini(5) man page)
# dim0=<not set>
# ...
# dim7=<not-set>
## The remaining 256-color palette
# 16 = <256-color palette #16>
# ...
# 255 = <256-color palette #255>
## Misc colors
# selection-foreground=<inverse foreground/background>
selection-foreground=383a42
# selection-background=<inverse foreground/background>
selection-background=bfceff
# jump-labels=<regular0> <regular3> # black-on-yellow
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
# search-box-no-match=<regular0> <regular1> # black-on-red
# search-box-match=<regular0> <regular3> # black-on-yellow
urls=f0f0f0

View file

@ -1,28 +0,0 @@
[user]
name = "Tibo De Peuter"
email = "tibo@depeuter.dev"
signingkey = "0x9B11F5243089DB5B"
[color]
ui = true
[commit]
# Always sign commits
gpgsign = true
[core]
editor = "vim";
excludesFile = "~/.config/git/ignore"
[help]
autocorrect = 15
[includeIf "gitdir:~/university/"] # Trailing backslash is necessary!
path = "~/.config/git/university"
[init]
defaultBranch = "main"
[safe]
directory = "/home/tdpeuter/university/sshfs"

View file

@ -1,2 +0,0 @@
*~
.*.swp

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