dev #19

Open
tdpeuter wants to merge 79 commits from dev into main
80 changed files with 12733 additions and 902 deletions

2
.gitignore vendored
View file

@ -1 +1,3 @@
result result
.idea

BIN
assets/bluescreen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

225
colors.sh Normal file
View file

@ -0,0 +1,225 @@
# tdpeuter color schemes
# The goal is to offer light and dark theme that is easy on the eyes,
# whilst also being unique and defining.
###############################
# tdpeuter-light color scheme #
###############################
# 171717 # Foreground
# FAFAFA # Daisy (Background)
# Regular colors (0-7)
# 000000 # Black (0)
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# Bright colors (8-15)
# 000000 # Black (8)
# 9
# 10
# 11
# 12
# 13
# 14
# 15
##############################
# tdpeuter-dark color scheme #
##############################
# FAFAFA # Daisy (Foreground)
printf "\033]10;#FAFAFA\007"
# 171717 # Background
printf "\033]11;#171717\007"
# Regular colors (0-7)
# 242124 # Black 0
printf "\033]4;0;#242124\007"
# B90E0A # Crimson (Red) 1
printf "\033]4;1;#B90E0A\007"
# B2BC68 # Leafy (Green) 2
printf "\033]4;2;#B2BC68\007"
# FFE135 # Banana (Yellow) 3
printf "\033]4;3;#FFE135\007"
# 80A2BE # Icicle (Blue) 4
printf "\033]4;4;#80A2BE\007"
# A45EE5 # Amethyst (Magenta) 5
printf "\033]4;5;#A45EE5\007"
# # (Cyan) 6
printf "\033]4;6;#80A2BE\007"
# FBFCF8 # Pearl (White) 7
printf "\033]4;7;#FBFCF8\007"
# Bright colors (8-15)
# 363636 # Grey-isch (Black) 8
printf "\033]4;8;#363636\007"
# BC544B # Blush (Red) 9
printf "\033]4;9;#BC544B\007"
# A6E3A1 # Lime (Green) 10
printf "\033]4;10;#A6E3A1\007"
# FCF4A3 # Banana (Yellow) 11
printf "\033]4;11;#FCF4A3\007"
# 74C7EC # Sapphire (Blue) 12
printf "\033]4;12;#74C7EC\007"
# B4BEFE # Lavender (Magenta) 13
# #CBA6F7
printf "\033]4;13;#B4BEFE\007"
# # (Cyan) 14
printf "\033]4;14;#74C7EC\007"
# FFFFFF # White 15
printf "\033]4;15;#FFFFFF\007"
# NEW COLORS 20241101
#
# Nr # R G B H S B # Name
# FG # 250 250 250 0 0 98 # Daisy (White)
printf "\033]10;#FAFAFA\007"
# BG # 19 19 19 0 0 7 # -
printf "\033]11;#131313\007"
# Regular colors (0-7)
# Nr # R G B H S B # Name
# 0 # 61 61 61 0 0 24 # - (Black)
printf "\033]4;0;#3D3D3D\007"
# 1 # 186 19 61 345 90 73 # - (Red)
printf "\033]4;1;#BA133D\007"
# 2 # 61 186 19 105 90 73 # - (Green)
printf "\033]4;2;#3DBA13\007"
# 3 # 186 144 19 45 90 73 # - (Yellow)
printf "\033]4;3;#BA9013\007"
# 4 # 19 61 186 225 90 73 # - (Blue)
printf "\033]4;4;#133DBA\007"
# 5 # 144 19 186 285 90 73 # - (Magenta)
printf "\033]4;5;#9013BA\007"
# 6 # 19 186 144 165 90 73 # - (Cyan)
printf "\033]4;6;#13BA90\007"
# 7 # 186 186 186 0 0 73 # - (White)
printf "\033]4;7;#BABABA\007"
# Bright colors (8-15)
# Nr # R G B H S B # Name
# 8 # 122 122 122 0 0 48 # - (Black)
printf "\033]4;8;#363636\007"
# 9 # 250 25 81 345 90 98 # - (Red)
printf "\033]4;9;#FA1951\007"
# 10 # 81 250 25 105 90 98 # - (Green)
printf "\033]4;10;#51FA19\007"
# 11 # 250 194 25 45 90 98 # - (Yellow)
printf "\033]4;11;#FAC219\007"
# 12 # 25 81 250 225 90 98 # - (Blue)
printf "\033]4;12;#1951FA\007"
# 13 # 194 25 250 285 90 98 # - (Magenta)
printf "\033]4;13;#C219FA\007"
# 14 # 25 259 194 165 90 98 # - (Cyan)
printf "\033]4;14;#19FAC2\007"
# 15 # 250 250 250 0 0 98 # - (White)
printf "\033]4;15;#FAFAFA\007"
# BRIGHTER
#
# Nr # R G B H S B # Name
# FG # 250 250 250 0 0 98 # Daisy (White)
printf "\033]11;#FAFAFA\007"
# BG # 19 19 19 0 0 7 # -
printf "\033]10;#131313\007"
# Regular colors (0-7)
# Nr # R G B H S B # Name
# 0 # 61 61 61 0 0 24 # - (Black)
printf "\033]4;0;#3D3D3D\007"
# 1 # 186 19 61 345 90 73 # - (Red)
printf "\033]4;1;#E62E4D\007"
# 2 # 61 186 19 105 90 73 # - (Green)
printf "\033]4;2;#4DE62E\007"
# 3 # 186 144 19 45 90 73 # - (Yellow)
printf "\033]4;3;#E6C72E\007"
# 4 # 19 61 186 225 90 73 # - (Blue)
printf "\033]4;4;#2E4CE6\007"
# 5 # 144 19 186 285 90 73 # - (Magenta)
printf "\033]4;5;#C52DE3\007"
# 6 # 19 186 144 165 90 73 # - (Cyan)
printf "\033]4;6;#2EE6C7\007"
# 7 # 186 186 186 0 0 73 # - (White)
printf "\033]4;7;#BABABA\007"
# Bright colors (8-15)
# Nr # R G B H S B # Name
# 8 # 122 122 122 0 0 48 # - (Black)
printf "\033]4;8;#7A7A7A\007"
# 9 # 250 25 81 345 90 98 # - (Red)
printf "\033]4;9;#FF002B\007"
# 10 # 81 250 25 105 90 98 # - (Green)
printf "\033]4;10;#2BFF00\007"
# 11 # 250 194 25 45 90 98 # - (Yellow)
printf "\033]4;11;#FFd500\007"
# 12 # 25 81 250 225 90 98 # - (Blue)
printf "\033]4;12;#002AFF\007"
# 13 # 194 25 250 285 90 98 # - (Magenta)
printf "\033]4;13;#D400FF\007"
# 14 # 25 259 194 165 90 98 # - (Cyan)
printf "\033]4;14;#00FFC0\007"
# 15 # 250 250 250 0 0 98 # - (White)
printf "\033]4;15;#FAFAFA\007"
# TEsting again
# Nr # R G B H S B # Name
# FG # 250 250 250 0 0 98 # Daisy (White)
# FAFAFA # Daisy (Foreground)
printf "\033]10;#FAFAFA\007"
# 171717 # Background
printf "\033]11;#171717\007"
# Nr # R G B H S B # Name
# 0 # 61 61 61 0 0 24 # - (Black)
printf "\033]4;0;#202124\007"
# 1 # 186 19 61 345 90 73 # - (Red)
printf "\033]4;1;#EA4335\007"
# 2 # 61 186 19 105 90 73 # - (Green)
printf "\033]4;2;#34A853\007"
# 3 # 186 144 19 45 90 73 # - (Yellow)
printf "\033]4;3;#FBBC04\007"
# 4 # 19 61 186 225 90 73 # - (Blue)
printf "\033]4;4;#4285F4\007"
# 5 # 144 19 186 285 90 73 # - (Magenta)
printf "\033]4;5;#A142F4\007"
# 6 # 19 186 144 165 90 73 # - (Cyan)
printf "\033]4;6;#24C1E0\007"
# 7 # 186 186 186 0 0 73 # - (White)
printf "\033]4;7;#FBFCF8\007"
# Bright colors (8-15)
# Nr # R G B H S B # Name
# 8 # 122 122 122 0 0 48 # - (Black)
printf "\033]4;8;#5F6368\007"
# 9 # 250 25 81 345 90 98 # - (Red)
printf "\033]4;9;#EA4335\007"
# 10 # 81 250 25 105 90 98 # - (Green)
printf "\033]4;10;#34A853\007"
# 11 # 250 194 25 45 90 98 # - (Yellow)
printf "\033]4;11;#FBBC05\007"
# 12 # 25 81 250 225 90 98 # - (Blue)
printf "\033]4;12;#4285F4\007"
# 13 # 194 25 250 285 90 98 # - (Magenta)
printf "\033]4;13;#A142F4\007"
# 14 # 25 259 194 165 90 98 # - (Cyan)
printf "\033]4;14;#24C1E0\007"
# 15 # 250 250 250 0 0 98 # - (White)
printf "\033]4;15;#FFFFFF\007"

View file

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

165
nixos/flake.lock generated
View file

@ -1,54 +1,15 @@
{ {
"nodes": { "nodes": {
"devshell": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1713532798,
"narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=",
"owner": "numtide",
"repo": "devshell",
"rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1701680307, "lastModified": 1731533236,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -64,16 +25,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1716736833, "lastModified": 1758463745,
"narHash": "sha256-rNObca6dm7Qs524O4st8VJH6pZ/Xe1gxl+Rx6mcWYo0=", "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a631666f5ec18271e86a5cde998cba68c33d9ac6", "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.05", "ref": "release-25.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -86,11 +47,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1701208414, "lastModified": 1720066371,
"narHash": "sha256-xrQ0FyhwTZK6BwKhahIkUVZhMNk21IEI1nUcWSONtpo=", "narHash": "sha256-uPlLYH2S0ACj0IcgaK9Lsf4spmJoGejR9DotXiXSBZQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-github-actions", "repo": "nix-github-actions",
"rev": "93e39cc1a087d65bcf7a132e75a650c44dd2b734", "rev": "622f829f5fe69310a866c8a6cd07e747c44ef820",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -101,42 +62,26 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1717144377, "lastModified": 1760862643,
"narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=", "narHash": "sha256-PXwG0TM7Ek87DNx4LbGWuD93PbFeKAJs4FfALtp7Wo0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "805a384895c696f802a9bf5bf4720f37385df547", "rev": "33c6dca0c0cb31d6addcd34e90a63ad61826b28c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
"ref": "nixos-24.05", "ref": "nixos-25.05",
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs-stable": {
"locked": {
"lastModified": 1717265169,
"narHash": "sha256-IITcGd6xpNoyq9SZBigCkv4+qMHSqot0RDPR4xsZ2CA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3b1b4895b2c5f9f5544d02132896aeb9ceea77bc",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1716948383, "lastModified": 1760878510,
"narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", "narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ad57eef4ef0659193044870c731987a6df5cf56b", "rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -155,15 +100,15 @@
"nixpkgs" "nixpkgs"
], ],
"poetry2nix": "poetry2nix", "poetry2nix": "poetry2nix",
"systems": "systems_3", "systems": "systems_2",
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1701455376, "lastModified": 1758594056,
"narHash": "sha256-FMLrMdi6JY7ZfqV5XnNj64jnDcGKznKZLn7O6OMO3u0=", "narHash": "sha256-6XyKDRWqBngw1g73e789iyIaw/0VF04ELk/ATtlkTVU=",
"owner": "ThinkChaos", "owner": "ThinkChaos",
"repo": "openconnect-sso", "repo": "openconnect-sso",
"rev": "20c0015c4264c72cc19ac272de0dc534309bd21b", "rev": "2041471efd331d0591d34e122aefb02690fb233a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -197,11 +142,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1701105783, "lastModified": 1721039874,
"narHash": "sha256-5IOI0xXGbhAkUZNNcPId48V78Q+/JlW0hzlif0zxRmM=", "narHash": "sha256-XANsG9GYHip8pxZpbqKf/YGv8tIa0xTh289Y+WNBNfw=",
"owner": "nix-community", "owner": "nix-community",
"repo": "poetry2nix", "repo": "poetry2nix",
"rev": "0b2bff39e9bd4e6db3208e09c276ca83a063b370", "rev": "d11c01e58587e5f21037ed6477465a7f26a32e27",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -212,29 +157,28 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"devshell": "devshell", "flake-utils": "flake-utils",
"flake-utils": "flake-utils_2",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"openconnect-sso": "openconnect-sso", "openconnect-sso": "openconnect-sso",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"utils": "utils" "utils": "utils",
"zen-browser": "zen-browser"
} }
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ]
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1717297459, "lastModified": 1760998189,
"narHash": "sha256-cZC2f68w5UrJ1f+2NWGV9Gx0dEYmxwomWN2B0lx0QRA=", "narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "ab2a43b0d21d1d37d4d5726a892f714eaeb4b075", "rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -273,21 +217,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": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -296,11 +225,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1699786194, "lastModified": 1721769617,
"narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=", "narHash": "sha256-6Pqa0bi5nV74IZcENKYRToRNM5obo1EQ+3ihtunJ014=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1", "rev": "8db8970be1fb8be9c845af7ebec53b699fe7e009",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -316,11 +245,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715533576, "lastModified": 1738591040,
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=", "narHash": "sha256-4WNeriUToshQ/L5J+dTSWC5OJIwT39SEP7V7oylndi8=",
"owner": "gytis-ivaskevicius", "owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus", "repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", "rev": "afcb15b845e74ac5e998358709b2b5fe42a948d1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -328,6 +257,26 @@
"repo": "flake-utils-plus", "repo": "flake-utils-plus",
"type": "github" "type": "github"
} }
},
"zen-browser": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1761105987,
"narHash": "sha256-d01CGcdNlsqIn4ncGCWHM0Velnii/Ggef1iybQvEOfc=",
"owner": "youwen5",
"repo": "zen-browser-flake",
"rev": "e7d9fefd8665be5d4c77466140f21a15f6d29e93",
"type": "github"
},
"original": {
"owner": "youwen5",
"repo": "zen-browser-flake",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -2,20 +2,16 @@
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-25.05";
nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
devshell = {
url = "github:numtide/devshell";
inputs.nixpkgs.follows = "nixpkgs";
};
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-25.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
openconnect-sso = { openconnect-sso = {
url = github:ThinkChaos/openconnect-sso/fix/nix-flake; url = "github:ThinkChaos/openconnect-sso/fix/nix-flake";
inputs = { inputs = {
flake-utils.follows = "utils"; flake-utils.follows = "utils";
nixpkgs.follows = "nixpkgs"; nixpkgs.follows = "nixpkgs";
@ -29,23 +25,28 @@
url = "github:gytis-ivaskevicius/flake-utils-plus"; url = "github:gytis-ivaskevicius/flake-utils-plus";
inputs.flake-utils.follows = "flake-utils"; inputs.flake-utils.follows = "flake-utils";
}; };
zen-browser = {
url = "github:youwen5/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = inputs@{ outputs = inputs@{
self, nixpkgs, nixpkgs-unstable, self, nixpkgs, nixpkgs-unstable,
devshell, flake-utils, home-manager, openconnect-sso, sops-nix, utils, flake-utils, home-manager, openconnect-sso, sops-nix, utils, zen-browser,
... }: ... }:
let let
system = "x86_64-linux"; system = utils.lib.system.x86_64-linux;
unfreePackages = pkg: builtins.elem (nixpkgs.lib.getName pkg) [ unfreePackages = pkg: builtins.elem (nixpkgs.lib.getName pkg) [
"corefonts" "corefonts"
"nvidia-settings" "nvidia-x11" "nvidia-persistenced" "nvidia-settings" "nvidia-x11" "nvidia-persistenced"
"Oracle_VM_VirtualBox_Extension_Pack" "Oracle_VirtualBox_Extension_Pack"
"spotify" "spotify"
"steam" "steam-original" "steam-run" "steam" "steam-unwrapped" "steam-run"
"vista-fonts" "vista-fonts"
"nvidia-persistenced" # Docker "intel-ocl"
"libfprint-2-tod1-broadcom"
]; ];
in in
utils.lib.mkFlake { utils.lib.mkFlake {
@ -71,10 +72,11 @@
}; };
modules = [ modules = [
home-manager.nixosModule
sops-nix.nixosModules.sops
./modules ./modules
./users ./users
home-manager.nixosModules.home-manager
sops-nix.nixosModules.sops
]; ];
}; };
@ -82,6 +84,7 @@
Tibo-NixDesk.modules = [ ./hosts/Tibo-NixDesk ]; Tibo-NixDesk.modules = [ ./hosts/Tibo-NixDesk ];
Tibo-NixFat.modules = [ ./hosts/Tibo-NixFat ]; Tibo-NixFat.modules = [ ./hosts/Tibo-NixFat ];
Tibo-NixTest.modules = [ ./hosts/Tibo-NixTest ]; Tibo-NixTest.modules = [ ./hosts/Tibo-NixTest ];
Tibo-NixTop.modules = [ ./hosts/Tibo-NixTop ];
}; };
}; };
} }

View file

@ -6,7 +6,7 @@
]; ];
sisyphus = { sisyphus = {
desktop.sway.enable = true; desktop.hyprland.enable = true;
hardware = { hardware = {
nvidia = { nvidia = {
@ -35,6 +35,7 @@
}; };
services = { services = {
tailscale.enable = true;
pipewire.enable = true; pipewire.enable = true;
printing.enable = true; printing.enable = true;
openrgb.enable = true; openrgb.enable = true;
@ -56,6 +57,8 @@
efiSysMountPoint = "/boot/efi"; efiSysMountPoint = "/boot/efi";
}; };
}; };
plymouth.enable = true;
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -75,9 +78,9 @@
networking.hostName = "Tibo-NixDesk"; networking.hostName = "Tibo-NixDesk";
services.xserver = { services.xserver.xkb = {
layout = "us"; layout = "us";
xkbVariant = "altgr-intl"; variant = "altgr-intl";
}; };
system.stateVersion = "24.05"; system.stateVersion = "24.05";

View file

@ -6,7 +6,10 @@
]; ];
sisyphus = { sisyphus = {
desktop.sway.enable = true; desktop = {
sway.enable = true;
hyprland.enable = true;
};
hardware = { hardware = {
eid.enable = true; eid.enable = true;
@ -19,7 +22,7 @@
networking = { networking = {
networkmanager.enable = true; networkmanager.enable = true;
# openconnect-sso.enable = true; openconnect-sso.enable = true;
}; };
nix = { nix = {
@ -87,14 +90,20 @@
powerOnBoot = false; powerOnBoot = false;
}; };
networking.hostName = "Tibo-NixFat"; networking = {
hostName = "Tibo-NixFat";
networkmanager.wifi.powersave = true;
};
services = { services = {
# Handle the laptop lid switch as follows:
logind = { logind = {
# Handle the laptop lid switch as follows:
lidSwitch = "hybrid-sleep"; lidSwitch = "hybrid-sleep";
lidSwitchExternalPower = "lock"; lidSwitchExternalPower = "lock";
lidSwitchDocked = "ignore"; lidSwitchDocked = "ignore";
# Handle the power key
powerKey = "suspend";
}; };
xserver.xkb = { xserver.xkb = {
@ -105,10 +114,14 @@
# Touchpad # Touchpad
libinput.enable = true; libinput.enable = true;
thermald.enable = true;
}; };
system.stateVersion = "24.05"; system.stateVersion = "24.05";
systemd.coredump.enable = false;
time.timeZone = "Europe/Brussels"; time.timeZone = "Europe/Brussels";
# --- Barrier --- # --- Barrier ---

View file

@ -8,22 +8,33 @@
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; boot = {
boot.initrd.kernelModules = [ ]; initrd = {
boot.kernelModules = [ "kvm-intel" ]; availableKernelModules = [
boot.extraModulePackages = [ ]; "xhci_pci"
"nvme"
"usb_storage"
"sd_mod"
"rtsx_pci_sdmmc"
];
kernelModules = [ ];
luks.devices."luks-c21cb4a4-f618-43af-bc0c-e8be74fe3b81".device = "/dev/disk/by-uuid/c21cb4a4-f618-43af-bc0c-e8be74fe3b81";
};
kernelModules = [ "kvm-intel" ];
extraModulePackages = [ ];
};
fileSystems."/" = { fileSystems = {
"/" = {
device = "/dev/disk/by-label/NIX-ROOT"; device = "/dev/disk/by-label/NIX-ROOT";
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/efi" = {
fileSystems."/boot/efi" = {
device = "/dev/disk/by-label/NIX-BOOT"; device = "/dev/disk/by-label/NIX-BOOT";
fsType = "vfat"; fsType = "vfat";
}; };
};
swapDevices = [ swapDevices = [
{ device = "/dev/disk/by-label/SWAP"; } { device = "/dev/disk/by-label/SWAP"; }
@ -38,5 +49,9 @@
# networking.interfaces.wlp111s0.useDHCP = lib.mkDefault true; # networking.interfaces.wlp111s0.useDHCP = lib.mkDefault true;
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; nixpkgs.config.allowUnfree = true;
hardware = {
enableAllFirmware = true;
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
} }

View file

@ -0,0 +1,205 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }:
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
];
sisyphus = {
desktop.hyprland.enable = true;
hardware = {
eid.enable = true;
fingerprint-scanner.enable = true;
nvidia = {
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 = {
initrd = {
# Use EFI and YubiKey
kernelModules = [ "vfat" "nls_cp437" "nls_iso8859-1" "usbhid" ];
luks = {
# Enable YubiKey PBA
yubikeySupport = true;
devices."encrypted".yubikey = {
slot = 2;
twoFactor = false;
gracePeriod = 10;
keyLength = 64;
saltLength = 16;
storage.device = "/dev/nvme0n1p1";
};
};
};
loader = {
# Use the systemd-boot EFI boot loader.
systemd-boot = {
enable = true;
editor = false;
memtest86.enable = true;
};
efi.canTouchEfiVariables = true;
};
# Use latest kernel.
kernelPackages = pkgs.linuxPackages_latest;
plymouth.enable = true;
};
hardware.bluetooth = {
enable = true;
powerOnBoot = false;
};
nix.settings.download-buffer-size = 500 * 1024 * 1024; # 500 MiB
programs.zsh.enable = true;
services = {
auto-cpufreq = {
enable = true;
settings = {
battery = {
governor = "powersave";
turbo = "never";
};
charger = {
governor = "performance";
turbo = "auto";
};
};
};
logind = {
# Handle the laptop lid switch as follows:
lidSwitch = "hybrid-sleep";
lidSwitchExternalPower = "lock";
lidSwitchDocked = "ignore";
# Handle the power key
powerKey = "suspend";
};
power-profiles-daemon.enable = false;
smartd.enable = true;
thermald.enable = true;
xserver = {
# Keyboard layout
xkb = {
layout = "us";
variant = "altgr-intl";
};
};
# Touchpad
libinput.enable = true;
};
networking = {
hostName = "Tibo-NixTop"; # Define your hostname.
};
# Set your time zone.
time.timeZone = "Europe/Brussels";
# Select internationalisation properties.
i18n = {
defaultLocale = "en_GB.UTF-8"; # LANG
extraLocaleSettings.LC_TIME = "nl_BE.UTF-8";
};
console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
useXkbConfig = true; # use xkb.options in tty.
};
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.libinput.enable = true;
# List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options).
environment = {
# Enabled to allow installed binaries in ~/.local/bin
localBinInPath = true;
systemPackages = with pkgs; [
git
vim-full # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
w3m
wget
zenith-nvidia
];
};
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.05"; # Did you read the comment?
}

View file

@ -0,0 +1,41 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/e759b10f-7949-4094-9272-d91340dcc5b6";
fsType = "ext4";
};
boot.initrd.luks.devices."encrypted".device = "/dev/disk/by-uuid/2b6586fa-8823-4add-94f3-132aab17b7b8";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/12CE-A600";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
# 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
# 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`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno2.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -4,5 +4,7 @@
./hyprland ./hyprland
./plasma ./plasma
./sway ./sway
./waybar
]; ];
} }

View file

@ -6,7 +6,14 @@ in {
options.sisyphus.desktop.gnome.enable = lib.mkEnableOption "GNOME"; options.sisyphus.desktop.gnome.enable = lib.mkEnableOption "GNOME";
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
services.xserver = { services = {
gnome = {
core-apps.enable = false;
core-developer-tools.enable = false;
core-shell.enable = true;
};
xserver = {
enable = true; enable = true;
excludePackages = with pkgs; [ excludePackages = with pkgs; [
@ -15,45 +22,14 @@ in {
displayManager.gdm.enable = true; displayManager.gdm.enable = true;
desktopManager.gnome.enable = true; desktopManager.gnome.enable = true;
videoDrivers = [ "nvidia" ];
};
}; };
# Start a new instance of application instead of going to that window. # Start a new instance of application instead of going to that window.
environment.systemPackages = with pkgs.gnomeExtensions; [ environment.systemPackages = with pkgs.gnomeExtensions; [
launch-new-instance 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,4 +1,4 @@
{ config, lib, ... }: { config, lib, pkgs, ... }:
let let
cfg = config.sisyphus.desktop.hyprland; cfg = config.sisyphus.desktop.hyprland;
@ -6,10 +6,57 @@ in {
options.sisyphus.desktop.hyprland.enable = lib.mkEnableOption "Hyprland"; options.sisyphus.desktop.hyprland.enable = lib.mkEnableOption "Hyprland";
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment = {
sessionVariables = {
# Hint Electron apps to use wayland
NIXOS_OZONE_WL = "1";
ASSETS_DIR = ../../../../assets;
SCRIPT_DIR = ../../../../scripts;
};
systemPackages = with pkgs; [
brightnessctl
dunst
libnotify
swaybg
waycorner
playerctl
wlsunset
wl-clipboard # Copying to system clipboard in vim
wl-mirror # Mirror an output
wdisplays # Tool to configure displays
hyprlandPlugins.hy3 # i3/sway layout plugin
swaylock
glib
libva
dmenu
jq
j4-dmenu-desktop
rofi
];
};
programs.hyprland = { programs.hyprland = {
enable = true; enable = true;
xwayland.enable = true; xwayland.enable = true;
}; };
security.polkit.enable = true;
services = {
dbus.enable = true;
displayManager.ly.enable = true;
gnome.gnome-keyring.enable = true;
xserver.videoDrivers = [ "nvidia" ];
};
sisyphus.desktop.waybar.enable = true;
}; };
} }

View file

@ -8,36 +8,41 @@ in {
options.sisyphus.desktop.plasma.enable = lib.mkEnableOption "KDE Plasma"; options.sisyphus.desktop.plasma.enable = lib.mkEnableOption "KDE Plasma";
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
services.xserver = { services = {
enable = true;
displayManager = { displayManager = {
defaultSession = "plasmawayland"; defaultSession = "plasma";
sddm = { sddm = {
enable = true; enable = true;
wayland.enable = true;
# https://discourse.nixos.org/t/plasma-wayland-session-not-available-from-sddm/13447/2 # https://discourse.nixos.org/t/plasma-wayland-session-not-available-from-sddm/13447/2
settings.Wayland.SessionDir = "${pkgs.plasma5Packages.plasma-workspace}/share/wayland-sessions"; # settings.Wayland.SessionDir = "${pkgs.plasma5Packages.plasma-workspace}/share/wayland-sessions";
}; };
}; };
desktopManager.plasma5 = { desktopManager.plasma6.enable = true;
# Use gnome keyring instead of KDE Wallet.
gnome.gnome-keyring.enable = true;
xserver = {
enable = true; enable = true;
useQtScaling = true;
};
excludePackages = with pkgs; [ excludePackages = with pkgs; [
xterm xterm
]; ];
videoDrivers = [ "nvidia" ];
};
}; };
environment.plasma5.excludePackages = with pkgs.libsForQt5; [ environment.plasma6.excludePackages = with pkgs.kdePackages; [
elisa elisa
okular gwenview
kate
khelpcenter khelpcenter
konsole konsole
print-manager kwalletmanager
okular
plasma-systemmonitor plasma-systemmonitor
gwenview print-manager
]; ];
}; };
} }

View file

@ -65,24 +65,28 @@ in {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = (with pkgs; [ environment.systemPackages = (with pkgs; [
# Window manager related
dbus-sway-environment dbus-sway-environment
configure-gtk configure-gtk
wayland wayland
xdg-utils # Open with default program xdg-utils # Open with default program
glib # gsettings glib # gsettings
wl-clipboard wl-clipboard # Copying to system clipboard in vim
wl-mirror # Mirror an output
wdisplays # Tool to configure displays wdisplays # Tool to configure displays
# Desktop Environment related
brightnessctl brightnessctl
dunst dunst
libnotify libnotify
playerctl playerctl
swaybg swaybg
swaylock-effects swaylock-effects
waybar
wlsunset wlsunset
waycorner
# TODO Turn into own module/package? # TODO Turn into own module/package?
dmenu
jq jq
j4-dmenu-desktop j4-dmenu-desktop
rofi rofi
@ -91,6 +95,7 @@ in {
]); ]);
environment.sessionVariables = { environment.sessionVariables = {
ASSETS_DIR = ../../../../assets;
SCRIPT_DIR = ../../../../scripts; SCRIPT_DIR = ../../../../scripts;
}; };
@ -98,54 +103,45 @@ in {
dejavu_fonts dejavu_fonts
font-awesome font-awesome
noto-fonts noto-fonts
noto-fonts-cjk noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-emoji noto-fonts-emoji
source-han-sans
source-han-sans-japanese
source-han-serif-japanese
]; ];
security.polkit.enable = true; hardware.graphics.enable = true;
services = { services = {
atd.enable = true; # Required by sunset.sh atd.enable = true; # Required by sunset.sh
dbus.enable = true; dbus.enable = true;
displayManager.ly.enable = true;
gnome.gnome-keyring.enable = true; gnome.gnome-keyring.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
power-profiles-daemon.enable = true; power-profiles-daemon.enable = true;
xserver.videoDrivers = [ "nouveau" ];
xserver = { # xserver.videoDrivers = [ "nvidia" ];
displayManager.session = [{
manage = "window";
name = "Sway";
start = ''
${pkgs.sway}/bin/sway --unsupported-gpu &
waitPID=$!
'';
}];
videoDrivers = [ "nouveau" ];
};
}; };
xdg.portal = { xdg.portal = {
enable = true; enable = true;
wlr.enable = true; wlr.enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; extraPortals = with pkgs; [
xdg-desktop-portal-gtk
gtk-session-lock
];
xdgOpenUsePortal = true;
}; };
programs.sway = { programs.sway = {
enable = true; enable = true;
package = pkgs.swayfx;
wrapperFeatures.gtk = true; wrapperFeatures.gtk = true;
}; };
sisyphus.users.wantedGroups = [ sisyphus = {
desktop.waybar.enable = true;
users.wantedGroups = [
config.users.groups.video.name # Brightnessctl config.users.groups.video.name # Brightnessctl
]; ];
}; };
};
} }

View file

@ -0,0 +1,18 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.desktop.waybar;
in {
options.sisyphus.desktop.waybar.enable = lib.mkEnableOption "Waybar";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
libnotify
playerctl
jq
j4-dmenu-desktop
];
programs.waybar.enable = true;
};
}

View file

@ -1,6 +1,7 @@
{ {
imports = [ imports = [
./eid ./eid
./fingerprint-scanner
./nvidia ./nvidia
./yubikey ./yubikey
]; ];

View file

@ -0,0 +1,30 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.hardware.fingerprint-scanner;
in {
options.sisyphus.hardware.fingerprint-scanner.enable = lib.mkEnableOption "Fingerprint scanner support";
config = lib.mkIf cfg.enable {
# Enable driver
services.fprintd = {
enable = true;
# Enable Touch OEM Drivers library support
tod = {
enable = true;
# Dell drivers
driver = pkgs.libfprint-2-tod1-broadcom;
};
};
# Start driver at boot
systemd.services.fprintd = {
wantedBy = [
"multi-user.target"
];
serviceConfig.Type = "simple";
};
};
}

View file

@ -25,26 +25,34 @@ in {
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
# boot = { boot = {
# extraModprobeConfig = "options nvidia-drm modeset=1"; extraModprobeConfig = ''
# options nvidia-drm modeset=1
# initrd.kernelModules = [ '';
# "nvidia" kernelParams = [
# "nvidia_modeset" "nvidia_drm.modeset=1"
# "nvidia_uvm" ];
# "nvidia_drm" };
# ];
# };
hardware = { hardware = {
opengl = { graphics = {
enable = true; enable = true;
driSupport = true; enable32Bit = true;
driSupport32Bit = true; extraPackages = with pkgs; [
intel-ocl
intel-compute-runtime
opencl-clhpp
opencl-clang
opencl-headers
ocl-icd
];
}; };
nvidia = { nvidia = {
# Use the NVidia open source kernel module (or not)
open = false; open = false;
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
# Modesetting is required.
modesetting.enable = true; modesetting.enable = true;
nvidiaSettings = cfg.gui-settings; nvidiaSettings = cfg.gui-settings;
powerManagement = { powerManagement = {

View file

@ -25,11 +25,17 @@ in {
]; ];
# Send a notification if the YubiKey is waiting for touch. # Send a notification if the YubiKey is waiting for touch.
systemd.user.services.yubikey-touch-detector = { systemd.services.yubikey-touch-detector = {
enable = true; enable = true;
description = "Detects when your YubiKey is waiting for a touch"; description = "Detects when your YubiKey is waiting for a touch";
path = with pkgs; [ yubikey-touch-detector ]; path = with pkgs; [
script = ''exec yubikey-touch-detector --notify''; gnupg
yubikey-touch-detector
];
wantedBy = [
"graphical-session.target"
];
script = ''exec yubikey-touch-detector --libnotify'';
environment.YUBIKEY_TOUCH_DETECTOR_LIBNOTIFY = "true"; environment.YUBIKEY_TOUCH_DETECTOR_LIBNOTIFY = "true";
}; };
}; };

View file

@ -9,6 +9,6 @@ in {
extraOptions = '' extraOptions = ''
experimental-features = nix-command flakes experimental-features = nix-command flakes
''; '';
package = pkgs.nixFlakes; package = pkgs.nixVersions.stable;
}; };
} }

View file

@ -8,7 +8,7 @@ in {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
programs.direnv = { programs.direnv = {
enable = true; enable = true;
nix-direnv.enable = true; # Use nix-specific direnv. nix-direnv.enable = true; # Use nix-specific direnv, https://github.com/nix-community/nix-direnv
}; };
# This is also done by setting programs.direnv.persistDerivations. # This is also done by setting programs.direnv.persistDerivations.

View file

@ -14,8 +14,8 @@ in {
# Add secrets.yml to the Nix Store. # Add secrets.yml to the Nix Store.
defaultSopsFile = ../../../secrets/secrets.yaml; defaultSopsFile = ../../../secrets/secrets.yaml;
age = { age = {
# Automatically import SSH keys as age keys. # Don't derive age keys from SSH keys.
sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; sshKeyPaths = [ ];
# Use an age key that is expected to already be in the filesystem. # Use an age key that is expected to already be in the filesystem.
# You will need to place this file manually. # You will need to place this file manually.
keyFile = "/var/lib/sops-nix/key.txt"; keyFile = "/var/lib/sops-nix/key.txt";

View file

@ -5,6 +5,7 @@
./openssh ./openssh
./pipewire ./pipewire
./printing ./printing
./remEYEnder
./tailscale ./tailscale
]; ];
} }

View file

@ -6,8 +6,6 @@ in {
options.sisyphus.services.pipewire.enable = lib.mkEnableOption "Pipewire"; options.sisyphus.services.pipewire.enable = lib.mkEnableOption "Pipewire";
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
@ -20,6 +18,24 @@ in {
# use the example session manager (no others are packaged yet so this is enabled by default, # 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) # no need to redefine it in your config for now)
#media-session.enable = true; #media-session.enable = true;
wireplumber = {
enable = true;
# Fix pops after silence
extraConfig."99-disable-suspend" = {
"monitor.alsa.rules" = [
{
matches = [
# Headphone jack on laptop
{ "node.name" = "alsa_output.pci-0000_00_1f.3.analog-stereo"; }
];
actions.update-props = {
"session.suspend-timeout-seconds" = 0;
};
}
];
};
};
}; };
}; };
} }

View file

@ -10,7 +10,7 @@ in {
printing.enable = true; printing.enable = true;
avahi = { avahi = {
enable = true; enable = true;
nssmdns = true; nssmdns4 = true;
openFirewall = true; openFirewall = true;
}; };
}; };

View file

@ -0,0 +1,35 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.services.remEYEnder;
icon = ./vecteezy_eyes-line-icon-vector-isolated_13932670.jpg;
in {
options.sisyphus.services.remEYEnder.enable = lib.mkEnableOption "Eye reminder";
config = lib.mkIf cfg.enable {
systemd.user = {
services.remEYEnder = {
enable = true;
description = "Send an eye reminder";
serviceConfig.Type = "oneshot";
script = ''
# Display reminder for 20 seconds.
${pkgs.libnotify}/bin/notify-send -t 20000 --icon=${icon} "RemEYEnder" "Look away from your screen :)"
'';
};
timers.remEYEnder = {
enable = true;
description = "Timer for remEYEnders, runs every 20 minutes.";
wantedBy = [
"timers.target"
];
timerConfig = {
OnActiveSec = "20min";
OnUnitActiveSec = "20min";
Unit = "remEYEnder.service";
};
};
};
};
}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View file

@ -10,8 +10,15 @@ in {
enable = true; enable = true;
# Because these are made for development purposes and not for servers # Because these are made for development purposes and not for servers
enableOnBoot = false; enableOnBoot = false;
daemon.settings.features.cdi = true;
}; };
# Updated version of deprecated enableNvidia.
hardware.nvidia-container-toolkit.enable = true; hardware.nvidia-container-toolkit.enable = true;
sisyphus.users.wantedGroups = [
"docker"
];
}; };
} }

View file

@ -1,35 +1,24 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs-unstable, ... }:
let let
cfg = config.sisyphus.virtualisation.virtualbox; 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 { in {
options.sisyphus.virtualisation.virtualbox.enable = lib.mkEnableOption "VirtualBox"; options.sisyphus.virtualisation.virtualbox.enable = lib.mkEnableOption "VirtualBox";
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
virtualisation.virtualbox = { virtualisation.virtualbox.host = {
host = {
enable = true; enable = true;
enableExtensionPack = true; enableExtensionPack = true;
package = virtualbox-override; enableHardening = true;
}; package = pkgs-unstable.virtualbox;
guest = {
enable = true;
clipboard = true;
seamless = true;
};
}; };
# https://www.virtualbox.org/ticket/22248#comment:1
# and
# https://github.com/NixOS/nixpkgs/pull/444438
boot.kernelParams = [ "kvm.enable_virt_at_load=0" ];
# Define the group # Define the group
users.groups.vboxusers = {}; users.groups.vboxusers = {};

View file

@ -9,7 +9,7 @@ final: prev: {
sha256 = "sha256-UzpHAHpQx2MlmBNKm2turjeVmgp5zXKWm3nZbEo0mYE="; sha256 = "sha256-UzpHAHpQx2MlmBNKm2turjeVmgp5zXKWm3nZbEo0mYE=";
}; };
cargoHash = "sha256-oHfk68mAIcmOenW7jn71Xpt8hWVDtxyInWhVN2rH+kk="; cargoHash = "sha256-oGpe+kBf6kBboyx/YfbQBt1vvjtXd1n2pOH6FNcbF8M=";
buildInputs = with final; [ buildInputs = with final; [
cargo cargo

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

@ -0,0 +1,41 @@
HomeLab:
Gitea:
ssh: ENC[AES256_GCM,data:+H9qhfOg5WlTB7pihvbJ9omY/zLTAADe8KzI4fbdZ7NuaM0auC95AIQqhwNNCZNglg9UGOVL662pY7dNhbQ/2iCLPHSPgFFXf3fx1moRRcYYQzoJxsgxp19FZQeGNJ0qfRf72xYbZQZKslyHQmcqDieoVTyhaLqTfgC8MQ/UZofw/ortmgME7z51rGV5sXXMjxpJpHz9JxiPwQEL0ABWDAeCqBVBzlqqwdmfKEdkcR4l3USHfH1iNF5XQ5V26I+UGDOyoixt1c/BXzD9xzKI7MUDoRz+qfC6C62LIlEgqZY5tWg+tVZnqobakxwH6d8pXtQ7vaIREEP0LqQMkrNcK8X+cDRteToQ1fcxtN1V+JfZSa9pVC+iGgvmSZ00q4bnOgTmgO9IZ80TvOR4bHpRhjM5l4JMbLBv2jqY1zeUx/5L3WNuYIm9sL5mWXkV/RAD8WCemNSWdKbGsvByEUeiFcxczL/vQ6y3fi+ntmXUgeXVy5zVNkNlYbqd+DemBmwZQb9D1T5T97i2ChciYb3/ON1NObja/bt0PTQa,iv:hIbwsPcDSfgDItlvFFy0vCjuQWvgoQHBH60v8nTVTNg=,tag:1T/TdTEy98TfgMzYAxfHKA==,type:str]
HTPC:
ssh: ENC[AES256_GCM,data:svt6jhMXVCydmlcoa052TtFoIwQiAzNJRn9GPZDBuOGSnB83kUpuy/oqPOIa2ipco0L/5F/mQWn7OHUFtyhWWMerzY8niPldUDKH4jgsvRhRIatGOFiDyL8oA+f1O9lmhyFx35uxGa+Q6tn6rtXVKRVWQFe8kYBvGYjugKixsOMugoqLIxY8wUlMTzm6uDd7a72s/0hgQZGKp0eHWBHEdSJGPdv8svVDZ1PBMrlZa5ZpuiUmmvZvyCEnRtImUZALG4nKMvJjunxKr/4MJhWuffQ60jLYzInoGggiJlwBm+E+m43FwIFndY+LJ+ykO5RAbHhSwgXsCS5WXBrvDGuOTNAlIp6yTgSK1DCzSjzOJOc93rVSPhPdkaOoKgxhz1k95qCEhYUf9vyBgyIaOntWEArV+OZmHje6awbk4fpyIzRe7ggHlhKILYoGYzeejxbMGB9nH15RlUiTF7QnAWxWNSwcET6dSn2MtpC3yegnYl4u3eJ7YkHHYYQtwCQ9vCnt0i/sfuJmbrSFBXnVKMWB2w1Att145gDdlDok,iv:4bkSYvgmG6j/AwVnfGsLjdqtyP/gpWRvOKZCQxP0sMs=,tag:LyjE7dTt0+IDuSlbVLgCMg==,type:str]
Hugo:
ssh: ENC[AES256_GCM,data:y233CFIH7/n4EGEd2D7MuoprcMV9A8DaiV9JYZ6sr5j+hZnGr8sIAm9/55Bi2cD74sBZcE+tjOz+V2aJ2llKgcdS84ZmXMPh6KQ2QYRYuGdBLeztl8foKdimToblBapebTVO7Rc2mdhg7sZtC/TKSIJnG3R3lRfRdKaxNjaRS51epl7VZKGhLBjZoZqMXOezY7lvNBvF3hFfMh5el5I5Te/yQbbp0a7DkAvA+c1nG9bo9FN0h3VJJTzcuHqvGHI736VosLe8UGirMkX9mBwB8ZV4+2Vp7ZsSHnX5or/MzuYexT0zeLbTNHfj64d2W2/LKDkxNc35Sw7NvxwsVj3k2UHC2jEgus2z0AdMFszEFXh+Eu9wK8yX4ebzUut+OHNPuxvIk+ORxYr3OdVkOhhWHLinu/skNg0u5OdUXo/0p1876+gpcnOVC5UrUflwrtKGQgNk+ovWWjSfcQMh+gI6GYXzksX3YdMEriYZt4Z8lev2od/i7q48cV4W3Lo6TDDttipynxQus6K+J3oBKRirLHylRA5gusqUOVzC,iv:thw9OUnA02qe6aMuLTwy+q/a6isB375/k7JixPEy960=,tag:s95FtFRmPG0Up2oVuQyXsg==,type:str]
Nextcloud:
ssh: ENC[AES256_GCM,data:aVqa57u9hIOquP367EDj2rlyQWRe3EZv8l5cC+yQQKCri2bN5IFSq8qNemOIcU9ycBnxIyK6gLerJYQQcgzIIARmnfDpbJ9w+EeUL5yvPVJN6FM7oBeaL9mzYRl8aDKr22LhL9YiKAT1nKHESmTb3TZRvuvWJTGzCMRV85ROGxZYVUgG6BjuHEzuTsc4fy3NVPIl7/4ZjPgNNYx+UNsV5xwTejveB/sGblVrHOO74LZXzUWRlQNun5nM3MY3GALzfrPrVIAyGNu37CGachtwxaPOj7vUKZmD/e+XajYVKRJ3v33jrUeI0dDmhuwJj3taoFik6suAyiK3RlDdeWoERR8vqduiyxJnVMs6mNkigzkVtifpwZyQ8vNyG7w1JNPygMYgQzjN43lGVml8cx1lZvcoBzQabjWxcNzhV8gXxoGKvAwUV7ELB6l00rUH+EeI0uU8/IFm9kwmZq42ciM/bRGSGXzo2PYG2OHOiDe5b0nrIlajaRKd+vuuzTtFFU9EwH0GPzERRaoxVK+h9tzcco/REITCE+CVlHSx,iv:bb1X95HK5tT7EJpqqgMOUxw5VO5MuzoYxkPIzR5sEqU=,tag:y2LKHm7czwyuHp7Ea8KiYw==,type:str]
NixOS:
admin:
ssh: ENC[AES256_GCM,data:rAn/H2CtK2dkES2UIJrZbEP/3rqLgJsy5rortmdqoCthQ41IxztiaH1VtdaVDtw5j0qu49RJ59KkmYpOQXC2okAgLeqcb+J9iwrwspfKd+/I186a4gHZ2l+hGpmr3Vbs6K/UoCY67uygZhznBuwKeW4EjYJgGS7zInJFmMvcMV1rP/t4VoW+5oxptQNCrzoRukIG6NiAOcqU1GtvBfL5PxLaTWUEcZMYuo6sY/9VuEWgkZP1bmhBPUIv9D5yJo94KQr0YOaX4lz2pwd+K0cdD8d0Lh8B5YplA1NDCUnBbuDXfH0aSUAm7DCm6Y/E2UECEMRLuwfyEoe/yaHh8iCGveI//FkmiIKNY1SmTkjM2Fdfk6QaVDF8sG2CWdX21H3senfeM6jSow7JLY1LDvC2WxO4YIJEi14Y7zEpIZinWimyAhihPvMLnwd3taOhE59NrTOQKQS3tyFX+5tO3LtBrpn+Tm/B7WO49EkRn1LXN8CWkFnEEGXgxfNRg91C967nHaNpDMssGjfVG20WwYAtMKXzrNyzSEJbZglQ,iv:vY/8yyO0eLzpdho9aPUH9WGQ8Cp5LA+5RckjzDgYMMY=,tag:Jar1qVS/c1rQ8f3qpYqJdA==,type:str]
Roxanne:
ghost:
ssh: ENC[AES256_GCM,data:hkgVUVyCLANeYB4bcCTLB/F6eAbg7J4eN8y+VVzBfkcgnpDmXmghBihreQVT7OIwRrHIH1ok2vuH8vgXb38tuplUD5I8e0Gqy3EqpOGagsO8lss4aIg2lRwZ9WazJknvo4OaGc34jrwcZicesnaxK6g+GX2r2N4caGKMuOZ2i1mLKBwOcEtL6l3REKrGkExd3mYJX1Yqs7sMbGLNpfemDghv646zvxDRwPby49qIPA8OtGR+DBMZTTEviNqamJaFbs7YX+K77J1NHK59u6UfzU6hEjTBEYIjkFDzGATAZAopCsjOHcAA0alejHK4QZZt3e8unVsLICNK08ZCyEzwSXQ/wpUh3ccGcLit2t1LYZT4PqqG8+6ooaQYso67Wral0pdsTsrF0mGNfsZm76MDV9puP5B+IInanHz+2mCHbdmTi6rg9t8Q6mpFqrUbrwxMn2Ns1proBXBCqK/sFjC/bVIyMHUVOh6GYcKaVTv8ecB9ZEjp5dZ4VeStqTMT+xqS7dXBAJzGytLwXT/JaQelIE0w47aBaGy63Pqy,iv:WuAGU+ru8xLp2LXK12x/ueCH0XDxA0zGUt7+HWUdVMo=,tag:UqUMD/jSdTXOkf0kyMqwHA==,type:str]
Vaultwarden:
ssh: ENC[AES256_GCM,data:LJ7nbIdl1GqcsBtOwqsDtjKMfks13X5hsGkEFxDj0eX1EegEBkoWnzstu34RTgt1O1O+3Y/Amg7cDce2ZyZrTwDmLqinpuJD3CI7pRtQygAH8X9wPQYE6U3D1t4dXuMcDftjS+uY0CJFmq01dLv0GytSZSiNBcqNepTY+fO20yylyUbDGjI3Foyi86ipEtLVeFJqESiHDMHn/Cr+ggpLNMXijpnyoCRstPlm3GY3n6EhPwKhwovLB3AXolUeScnInIpwiikVTkYLNLCbrG8KAAr+DmWK3GTZYToH0wV8HpacPQI+4cHf96+EvAVlYMwGyQztPmXO7/9xUgWCNYow+z8BD6ijMuyZHT9aNkoAPt/y72N/PSf5HqW0QVWr3LmyIG+i9Bxbhqc7mRUIy4wZsODbtoO8/RtAly6mXIg0DZLlbo8kDe3TE3m+P5E/KQJOAvM2QdL+NXPcf2J2JYHW4kzITx447Bc3+F/DRs616MhekIoDybLhY3MT0XvYX1d1wAv/Ip98EGzfptXjnJvKPcJgTBlqNyeKuPOe,iv:oEGJUpoj+N30TgLpSWQqGdqYBdWLUWnSuQ+7TdSgmFc=,tag:AUZ2QnPUxLHaxsHbrmSYZQ==,type:str]
sops:
age:
- recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlL05vZHk2T1B6OHArUXlj
bEZWV0dUeVN0M3ZpeHdKcGlKV1RWYmRLM0FjCm9PLzBZTFo3RjhZTEhYMDBSN2Nj
aithQ2hpZXVCSngxcVBvQ2hKRzFXUEEKLS0tIE5rL0NHb1llRmlSQXVUeU8rVmNY
aEZHdDFEWUdxMzRVVjFhQWZmS04wRkkKrD2CiwdNcbK9s64omQ7xSA29J48HwIHa
ickyL/uorYhXmBKhqdvNq/j1Nb88LR9ti55Z7eecJNbyJb4OTtgzXQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1qzutny0mqpcccqw6myyfntu6wcskruu9ghzvt6r4te7afkqwnguq05ex37
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBOWNXQ1BsekdoS3BCdHA4
YTJJRHJBTEJ1bmhkWktSamYyRk1TUmovZ2trCnBXbUZQZFBndmU3VzJHVjczZGtY
ZkJDY3RzSEhXQVlLL0g1QTYxSC9CZGMKLS0tIGFBZnNlWmZjZFdkdGZvaHA5ZjMw
NFRtOFIybnFPWm1idFY0WEVqVGxOK1UKiJDByqKv/i/l9dvOplDyzDORU3ulhSwi
6xyEqmyNQpIkiS6TLZZYrBlQMDYqZ2gj1HhdIUssWJCf5Ho8KVDjJQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-18T15:55:58Z"
mac: ENC[AES256_GCM,data:vdVOTFlDD9jlGJksI5TDxk3stPkLY8lB6LMhV6QGqh9R2vaGuGGh6RZuR6AInq1Rm89innA6M1S2UUM6Jef1EKiPgq41neWMx/i3n7Ixx8FcraO/lgUYKG5yszYdjAlLQvKWqIbvX0bMYNwpF10FO5OyiXWiJrP9Om0Pjvk7dO8=,iv:W9I1nv0fKckNlNjJF0U4HlkyI5VDpvOGiSo0GeOODaY=,tag:RjkSTQYejyf1WO0LilbXYg==,type:str]
unencrypted_suffix: _unencrypted
version: 3.10.2

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

@ -6,22 +6,26 @@ UGent:
SubGit: 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] 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: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y - recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYWWFUdnpERVlkK29TQ09k YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpb0dlWE5PNllnME1jQWE4
SnJMVm5rUEV6S0huSzJ2YjFFQ3pNR0pmZWprClZEVDloeDE2ODNkMVVJTUtqaENz cHFzWkR4ZzNaWlR0WDJ4c1hEdlJGN0FISWlZCmNNdVRtL080QzgwQTZtTGpVRkxW
ZzhwTTA4V2xOeW55WGtPZU5FWElQNDAKLS0tIFh5ZWtmZHRBWTAvM3ZwY3pKQ0R6 dkdvYXdQNUlhYWQrYlNDR2JISXdpdkkKLS0tIEpIU20rK3F3WGpBS1g3NmJqYWRX
aDNUbFlhWWVoOWpjVlV1VTVJejlSMjQK6wCeCRdHY5oyTX6/R1U5AOGJyp0exi1A SWlNbFZ0NTJJZ09Wd3JzK1hscjJoS2MK4GU8ndim80CaOjgvMwVlgIq/1VQIylSZ
dWPUMfkKBBBkrR+G6ougd8o3FwFf+yfb5RhaTxxqjit6p2RyMjR64w== EJl15zUFaDiDZUCcZE8TkJQ/rbGDSiq7KlWyFe48Q3UC86jfF88qCg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2023-10-10T06:57:11Z" - recipient: age1qzutny0mqpcccqw6myyfntu6wcskruu9ghzvt6r4te7afkqwnguq05ex37
mac: ENC[AES256_GCM,data:Tvwv2mqceAxi7ic3+95Y6hBMHjqVoCkYnTkEsXOrhumgXpuuB/QQ0ASEf6gbgkCLXGwnUAXsK41bIIJfFgYSk89fHw6AaXfs6a+zL2Mh5zkhMIE2bm68mFK8+/TX/e8SibbEwNZCKOcPqvaO6nK816KCmh3KKCbT9ObaB6CA/KI=,iv:YPKgYAnQ135JXou7q9jVN7b3SKIDwceKcbqiIjkqnTU=,tag:udPrEVu2F+hWkhNoEyjTYg==,type:str] enc: |
pgp: [] -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYNjkzeHloK3hKUTJaMTdr
NUdiZ2JGZitqN1k0WCtEODU4R2MrTmUzR1hrCmNJL0Y4ZEpLN0l6ZmhGWEM5UktG
ck1PUnFSSVNCRUd5Sm9kSXNmVW5jZDQKLS0tIHpHWVBVNFNBSlUvZldJVGowUEtZ
S05HZ0FiSVlkUjRRV01TbjlpVFlkQWcK7jAqOYd9EDT93xpVgtpKl03EO6oHmGRR
iK9j2y7j1YSghPKDBrC5eKy9+IP/EFEBGygcokqT7C6Nscu80YhVbg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-06T14:01:15Z"
mac: ENC[AES256_GCM,data:bWo5DGCt5cK02Lf61yKFDZLLaMmcWyba+03CZ35EnGz7Hoc1sl3qTmgJfNz8EKDeXTIkk33DdnI/kZ2nX7vsZ/QgOhFQWzWRYe1cxqiWyd0wnUlwdoeeFrBP3uOTHXAOVe6q77S3qChzBP3J+5OijztvdOVEOKFmFPSCgyA029Q=,iv:6DSp63IrtYyaFxkaify/JZDXpB76AaGGW/OcPTKBbvk=,tag:sPKddpcx60JFZ4VEGD1tnQ==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.7.3 version: 3.10.2

View file

@ -0,0 +1,28 @@
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]
Gitea:
ssh: ENC[AES256_GCM,data:8eyuycMkBVMHfzaGeGs+0RA4vCpaAUTjCwiplUamypEk9BDYqxe+69O6OjJAGaPnmH4kpsb/WVd5sU6HNUogBuzDQhCrv2B6NadcmnV+fH3MHfAWvDy7R68PUkwcywWVOo65SONckjKVa0Y+8IeeJh9zpr36qCbbs+zPC4XTk+Y5R4vK/ocmSJSmwqVK1SfGGwOjFoJvHVI6jdXh//vgKaITqmyZV7N3OU9EiQp1FmNKwFf/x70w2LGATrNBcexwNy20ZYd6ewiAfJxFHR6Svfc2P5X2nlv99W5t1eU5QEGUcalcslsW/VkmFC3agN3Yry2EMIlfTlm0hm4+ryDGWEvgyUC0dLA8Ao0TLaaqig9HzBRP1h6aORe0lDwzTUg6WltrIu0s7hFwD4YLi1qP5lY99hvrDIRbTEg6AY6X4b32YFlyOXy0YDetv90+QyEcwANWO9MXz2S9hxuQmjOXMCVYMaiMLVUkG+mShbQuxTiFQt/7D83yOBSRLugx/aU318NKvUDlCt7wpZbMI3gBia4nUYLoLcXRKcAZ,iv:uc1ZtGdcolLrpQgS5n5LEAwBt0vMmkj2OuTXcn8sQ7A=,tag:F2ofcj0zEBgxwukMUd7+uw==,type:str]
sops:
age:
- recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwSDRZQ0pVNWhmdFo1UDVv
MFlrZEFtNjlpZ3pBU0VrdkFpR2x4WGxUZ0RRClJad1JPYWhFTWd1N2ZKQWsrSjFj
YXREaGRrbE15MEdpblJtcTk2cFk1eGsKLS0tIHE2ZTd3R1gwQ3E1VzkvZTZoZjBW
aTRLcFJ6NkpJRjkyenVxeFRLVmgwMjQK47HRKyg1SxWABZHCdVdIaPEKoSiWIOO/
OYu/1owbUwTh1KouUb4tgNmVBOkERJ9i3lEjWLHUWrlCAUImc9dG4g==
-----END AGE ENCRYPTED FILE-----
- recipient: age1qzutny0mqpcccqw6myyfntu6wcskruu9ghzvt6r4te7afkqwnguq05ex37
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBVDZtU2g4dmFXTlNIMFBs
OFBpS2RXRzFwTVdJazQrSldwWUFtdCs0U1ZFCmxRdy9yY3VIWU4zenc4eVNEVUZv
VUlyT29JekNTS3RIMktmS2RGNU5GMTgKLS0tIEhvM2RkcUs0SE5uSXFxc3dvSXhP
WmViM05IMHFPckNic1hHY2ZlTEMrYkkK+66rYqbGQucqQch4Tx9jONR9OIXdjMUd
q/fGLCoSluHuCOkUWr/wUgvF5dWAHftYj9JjDB/9vpp4Q0WClLDszw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-10-19T12:24:38Z"
mac: ENC[AES256_GCM,data:g15gV0H0rlzoeN5Z/Zkgh/8ya9GSrWDVP9oqdVz3m4obmquCLDIygsPaYpRXmfOtPSgvX2KzZ08sNLfcBZSh7eH2Ws7xcezWOntOcmAQNz5LvemqP7YuwtivMK/P4qrkME+LQPkSrSUR+rT99Zj+RQXisy91Cq9NbVBj6uQH7+I=,iv:W+oDp5Dun0g35BFprOmgfI0LoPME3HpPuuniCKA32Kc=,tag:CUU74HZuRNedyI3txn9D+g==,type:str]
unencrypted_suffix: _unencrypted
version: 3.8.1

View file

@ -9,22 +9,26 @@ example_booleans:
- ENC[AES256_GCM,data:Ul7fKA==,iv:U51FhTsWwkbhUWGsO8D+bl2mLdTIfapIB+OGJEOAiRA=,tag:9NJLKp8s2TSKLyXwM8OncA==,type:bool] - 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] - ENC[AES256_GCM,data:LVU1a90=,iv:1X1qV+8iIe1i5hIrqyB3tJew9hsHjJHlATmkEmwRA0Y=,tag:ko/5OwmJH/6HKPsvbkoRpw==,type:bool]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y - recipient: age1fva6s64s884z0q2w7de024sp69ucvqu0pg9shrhhqsn3ewlpjfpsh6md7y
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3ekx1bzluY0ZhYmhnRmhW YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4KzMrV2dpWFQyQUQyV050
b3pzM2RlKzFrREpMK3RNU1MweldNRXJ5NjE4CmNRbnFvbk1EN0V0ZWJiVzFmL3Jt elVhN0dUeTRodG1kNHZ0VEVmTUI1QjhidFJnClhJU0tVY0tmMkFaMDZkMDJOKzV1
N1Vpb3NEdXFzdzU4MjN1elp1RWZ5THcKLS0tIDR4cTFJNVFveEdxaEYvZndKbURa NVJiSERtR0VZR3VBOGVJbGk3cUxTMzAKLS0tIGhvMmIyOWQwVlhXRzYwampTeG5V
UHpaNENhL3c1K3RXc05hUmdNZVBpT2MKwBj4+Gb7giVJIoPWiwY3tvugEAexXy6Q UDVWQnE4NDY5cFF3RnpxcjhMY2N0VUUK+B24C0CT5b82DJSdKotX4iPhzWxnYsn6
YTWgZQZk96r5aF2mBjRCFCc7prj85PsUN/UXOPjPLVAFG3lwS0Eaog== kS7Ut9uy5OwcB+p6erlbLMEUVmmSNw89KBrowT0Ui1d3AfyGAN4rqQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1qzutny0mqpcccqw6myyfntu6wcskruu9ghzvt6r4te7afkqwnguq05ex37
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwTjh4NDRYZGM1VHRZWGor
MmhFWDNvMjI4UUVPbnorNnpabGNZY1BuMVdrCisvZ0U5SXRPM3IzNlZvZEpWZktz
b2FJemtNVHU0WUI4M0U1L2tWR3g1MEUKLS0tIGczTmVubzcwVjg5NDdQdEllWEFw
TWRIRE5WSGRCbncvWlpEMmdWOW5kb00Kq79O2C4aYmZmrq+rbyMtwmEqkqL9epn/
pw2dxXmYt95qu3x/BxjoN8RFZhabFp9xHkZ1kqJe9FGmBtAmoWXjWA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2023-09-10T20:20:18Z" 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] mac: ENC[AES256_GCM,data:yfmYEo8pdlG3tu4Fabwde57igIvpt4UuhQqStVlV36rvPnv9dc42+6iduu+heuQ2OAVw0jk6/o6SWJpcms2DReOAMGDOgt+zV3TgJym52YdMcjTNJTo+4loULhvaWyN9ZdPJjSYKEoSgOZi+oMx4BpwreQEaPaYUxcbTqrWCUa8=,iv:Mb81sBxibRxSaC2kgakhy2pyEmW0MDobF+lHF7cny5E=,tag:DCqTWSnf5Gv5YfAGSEC2yw==,type:str]
pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.7.3 version: 3.7.3

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, pkgs-unstable, ... }: { config, inputs, lib, pkgs, pkgs-unstable, ... }:
let let
cfg = config.sisyphus.users.tdpeuter; cfg = config.sisyphus.users.tdpeuter;
@ -8,7 +8,7 @@ let
cursor = { cursor = {
package = pkgs.phinger-cursors; package = pkgs.phinger-cursors;
name = "phinger-cursors"; name = "phinger-cursors-light";
size = 24; size = 24;
}; };
in { in {
@ -33,19 +33,68 @@ in {
]; ];
initialPassword = "ChangeMe"; initialPassword = "ChangeMe";
shell = pkgs.zsh; shell = pkgs.zsh;
packages = (with pkgs; [
bitwarden-desktop
brave # Internet browser
chafa # Terminal image viewer
cmdtime # Zsh plugin
duf # Df alternative
feishin # Jellyfin music client
foot
fzf
gh # GitHub CLI tool
glow # Terminal Markdown renderer
icosystem # Personal icon theme
jellyfin-media-player
libreoffice-fresh # Office tools
librewolf # Internet browser
mpv # Media player
nextcloud-client
nsxiv # Lightweight image viewer
qalculate-gtk # Calculator
spotify
spotify-adblock
unzip
vifm # File manager
zathura # PDF viewer
zellij # Tmux + screen alternative
zotero
zsh
zsh-autosuggestions
zsh-syntax-highlighting
# SMB
cifs-utils
psmisc
# Linters and LSPs
statix # Nix
# TODO Move to devshells
# ruff pylint # Python
]) ++ (with pkgs-unstable; [
logseq # Note taking
]) ++ [
inputs.zen-browser.packages.${pkgs.system}.default
];
}; };
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
corefonts # Calibri for Uni corefonts # Calibri for Uni
dejavu_fonts
font-awesome # Dependency of Vifm & zsh config font-awesome # Dependency of Vifm & zsh config
letter # Personal font letter # Personal font
noto-fonts-cjk # Dependency of Zellij config
noto-fonts # Dependency of Zellij config noto-fonts # Dependency of Zellij config
noto-fonts-cjk-sans # Dependency of Zellij config
noto-fonts-cjk-serif # Dependency of Zellij config
noto-fonts-emoji
noto-fonts-color-emoji # Emoji's!
vistafonts # Microsoft fonts vistafonts # Microsoft fonts
]; ];
sisyphus = { sisyphus = {
programs.spotify-adblock.enable = true; programs.spotify-adblock.enable = true;
services.remEYEnder.enable = true;
}; };
home-manager.users.tdpeuter = lib.mkIf config.sisyphus.programs.home-manager.enable { home-manager.users.tdpeuter = lib.mkIf config.sisyphus.programs.home-manager.enable {
@ -56,46 +105,13 @@ in {
homeDirectory = "/home/${user}"; homeDirectory = "/home/${user}";
inherit (config.system) stateVersion; inherit (config.system) stateVersion;
packages = (with pkgs; [ # packages = (with pkgs; [
cmdtime # Zsh plugin # ]) ++ (with pkgs-unstable; [
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 = { pointerCursor = {
inherit (cursor) package name size; inherit (cursor) package name size;
gtk.enable = true; gtk.enable = true;
x11.enable = true;
}; };
}; };
@ -126,9 +142,12 @@ in {
}; };
}; };
gtk = { services.syncthing = {
enable = true; enable = true;
cursorTheme = cursor; extraOptions = [
"--no-default-folder"
];
tray.enable = true;
}; };
xdg = { xdg = {

View file

@ -17,7 +17,7 @@ in {
source = ../../../stow/alacritty/.config/alacritty; source = ../../../stow/alacritty/.config/alacritty;
}; };
".config/dunst" = { ".config/dunst" = {
inherit (config.sisyphus.desktop.sway) enable; enable = config.sisyphus.desktop.hyprland.enable || config.sisyphus.desktop.sway.enable;
source = ../../../stow/dunst/.config/dunst; source = ../../../stow/dunst/.config/dunst;
}; };
".config/foot" = { ".config/foot" = {
@ -32,6 +32,11 @@ in {
recursive = true; recursive = true;
source = ../../../stow/git/.config/git; source = ../../../stow/git/.config/git;
}; };
".config/hypr" = {
inherit (config.sisyphus.desktop.hyprland) enable;
recursive = true;
source = ../../../stow/hyprland/.config/hypr;
};
".config/kitty" = { ".config/kitty" = {
enable = false; enable = false;
recursive = true; recursive = true;
@ -58,7 +63,7 @@ in {
source = ../../../stow/swayidle/.config/swayidle; source = ../../../stow/swayidle/.config/swayidle;
}; };
".config/swaylock" = { ".config/swaylock" = {
inherit (config.sisyphus.desktop.sway) enable; enable = config.sisyphus.desktop.sway.enable || config.sisyphus.desktop.hyprland.enable;
source = ../../../stow/swaylock/.config/swaylock; source = ../../../stow/swaylock/.config/swaylock;
}; };
".config/vifm" = { ".config/vifm" = {
@ -66,20 +71,20 @@ in {
source = ../../../stow/vifm/.config/vifm; source = ../../../stow/vifm/.config/vifm;
}; };
".config/waybar" = { ".config/waybar" = {
inherit (config.sisyphus.desktop.sway) enable; enable = config.sisyphus.desktop.sway.enable || config.sisyphus.desktop.hyprland.enable;
source = ../../../stow/waybar/.config/waybar; source = ../../../stow/waybar/.config/waybar;
}; };
".config/zellij" = { ".config/zellij" = {
source = ../../../stow/zellij/.config/zellij; source = ../../../stow/zellij/.config/zellij;
}; };
".oh-my-zsh" = { ".gnupg" = {
enable = config.users.users.tdpeuter.shell == pkgs.zsh; inherit (config.programs.gnupg.agent) enable;
source = "${pkgs.oh-my-zsh}/share/oh-my-zsh"; source = ../../../stow/gnupg/.gnupg;
recursive = true; recursive = true;
}; onChange = ''
".oh-my-zsh/themes/tdpeuter.zsh-theme" = { chmod 700 /home/tdpeuter/.gnupg
enable = config.users.users.tdpeuter.shell == pkgs.zsh; # chmod 600 /home/tdpeuter/.gnupg/* # Already read-only?
source = ../../../stow/zsh/.oh-my-zsh/themes/tdpeuter.zsh-theme; '';
}; };
".ssh/config" = lib.mkIf config.sisyphus.programs.ssh.enable { ".ssh/config" = lib.mkIf config.sisyphus.programs.ssh.enable {
inherit (config.sisyphus.programs.ssh) enable; inherit (config.sisyphus.programs.ssh) enable;
@ -97,6 +102,13 @@ in {
}; };
} }
(lib.mkIf (config.users.users.tdpeuter.shell == pkgs.zsh) { (lib.mkIf (config.users.users.tdpeuter.shell == pkgs.zsh) {
".oh-my-zsh" = {
source = "${pkgs.oh-my-zsh}/share/oh-my-zsh";
recursive = true;
};
".oh-my-zsh/themes/tdpeuter.zsh-theme" = {
source = ../../../stow/zsh/.oh-my-zsh/themes/tdpeuter.zsh-theme;
};
".zshrc" = { ".zshrc" = {
source = ../../../stow/zsh/.zshrc; source = ../../../stow/zsh/.zshrc;
}; };

View file

@ -14,11 +14,38 @@ in {
nativeMessagingHosts = with pkgs; [ nativeMessagingHosts = with pkgs; [
tridactyl-native tridactyl-native
]; ];
# https://mozilla.github.io/policy-templates/
extraPolicies = { extraPolicies = {
DisableFirefoxStudies = true; DisableFirefoxStudies = true;
DisablePocket = true; DisablePocket = true;
DisableTelemetry = true; DisableTelemetry = true;
FirefoxHome = {
SponsoredTopSites = false;
SponsoredPocket = false;
};
OfferToSaveLogins = false; OfferToSaveLogins = false;
# https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265
ExtensionSettings = {
"amazon@search.mozilla.org".installation_mode = "blocked";
"google@search.mozilla.org".installation_mode = "blocked";
};
# Anything in about:config
Preferences = let
falseLocked = {
Value = false;
Status = "falseLocked";
};
in {
"browser.newtabpage.activity-stream.showSponsoredCheckboxes" = falseLocked;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = falseLocked;
"browser.newtabpage.pinned" = {
Value = "[]";
Status = "default";
};
"services.sync.prefs.sync-seen.browser.newtabpage.activity-stream.showSponsoredTopSites" = falseLocked;
};
}; };
# Support smart cards # Support smart cards
@ -27,26 +54,18 @@ in {
]; ];
}; };
languagePacks = [
"en-GB"
"nl"
];
profiles.tdpeuter.search= { profiles.tdpeuter.search= {
default = "DuckDuckGo"; default = "ddg"; # Reference by id instead of by name
force = true; force = true;
engines = { engines = {
"Bing".metaData.hidden = true; "bing".metaData.hidden = true;
"eBay".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" = { "GitHub" = {
urls = [{ urls = [{
template = "https://github.com/search"; template = "https://github.com/search";
@ -59,6 +78,39 @@ in {
icon = "${pkgs.icosystem}/share/icons/icosystem/scalable/apps/github-mark.svg"; icon = "${pkgs.icosystem}/share/icons/icosystem/scalable/apps/github-mark.svg";
definedAliases = [ "@gh" ]; definedAliases = [ "@gh" ];
}; };
"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" ];
};
"NixOS Options" = {
urls = [{
template = "https://search.nixos.org/options";
params = [
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@no" ];
};
"Google Scholar" = {
urls = [{
template = "https://scholar.google.ch/scholar";
params = [
{ name = "q"; value = "{searchTerms}"; }
];
}];
definedAliases = [ "@gs" ];
};
}; };
}; };
}; };

View file

@ -8,13 +8,17 @@ let
Met vriendelijke groeten Met vriendelijke groeten
Tibo De Peuter Tibo De Peuter
''; '';
UGent = '' english = ''
Kind regards
Tibo De Peuter
'';
academic = ''
Met vriendelijke groeten Met vriendelijke groeten
Tibo De Peuter Tibo De Peuter
Student 2Ba/3Ba Informatica Student Ma Informatica
''; '';
MrFortem = '' alias = ''
Kind regards Kind regards
MrFortem Fiducia MrFortem Fiducia
''; '';
@ -61,7 +65,7 @@ in {
realName = config.users.users.tdpeuter.description; realName = config.users.users.tdpeuter.description;
signature = { signature = {
showSignature = "append"; showSignature = "append";
text = signatures.UGent; text = signatures.academic;
}; };
thunderbird = { thunderbird = {
@ -69,7 +73,7 @@ in {
settings = id: { settings = id: {
"mail.server.server_${id}.authMethod" = 10; "mail.server.server_${id}.authMethod" = 10;
"mail.smtpserver.smtp_${id}.authMethod" = 10; "mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.identity.id_${id}.htmlSigText" = signatures.UGent; "mail.identity.id_${id}.htmlSigText" = signatures.academic;
# Allow PGP # Allow PGP
"mail.identity.id_${id}.openpgp_key_id" = "9B11F5243089DB5B"; # Your 'master' key "mail.identity.id_${id}.openpgp_key_id" = "9B11F5243089DB5B"; # Your 'master' key
@ -109,7 +113,7 @@ in {
settings = id: { settings = id: {
"mail.server.server_${id}.directory" = ".thunderbird/tdpeuter/ImapMail/imap.gmail.com-mrfortem"; "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.server.server_${id}.directory-rel" = "[ProfD]ImapMail/imap.gmail.com-mrfortem";
"mail.identity.id_${id}.htmlSigText" = signatures.MrFortem; "mail.identity.id_${id}.htmlSigText" = signatures.alias;
}; };
}; };
}; };

View file

@ -7,9 +7,14 @@ in {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
sops.secrets = lib.mkIf config.sisyphus.programs.sops.enable ( sops.secrets = lib.mkIf config.sisyphus.programs.sops.enable (
let let
Hugo = { HomeLab = {
format = "yaml"; format = "yaml";
sopsFile = ../../secrets/Hugo.yaml; sopsFile = ../../secrets/HomeLab.yaml;
owner = user;
};
personal = {
format = "yaml";
sopsFile = ../../secrets/personal.yaml;
owner = user; owner = user;
}; };
UGent = { UGent = {
@ -18,17 +23,26 @@ in {
owner = user; owner = user;
}; };
in { in {
"Hugo/ssh" = Hugo;
"UGent/HPC/ssh" = UGent; "UGent/HPC/ssh" = UGent;
"GitHub/ssh" = { # Git authentication
format = "yaml"; "Gitea/ssh" = personal;
sopsFile = ../../secrets/GitHub.yaml; "GitHub/ssh" = personal;
owner = user;
};
"Hugo/Gitea/ssh" = Hugo;
"UGent/GitHub/ssh" = UGent; "UGent/GitHub/ssh" = UGent;
"UGent/SubGit/ssh" = UGent; "UGent/SubGit/ssh" = UGent;
# HomeLab
# Physical hosts
"HomeLab/Hugo/ssh" = HomeLab;
"HomeLab/Roxanne/ghost/ssh" = HomeLab;
"HomeLab/HTPC/ssh" = HomeLab;
# Virtual hosts
"HomeLab/Gitea/ssh" = HomeLab;
"HomeLab/Nextcloud/ssh" = HomeLab;
"HomeLab/Vaultwarden/ssh" = HomeLab;
"HomeLab/NixOS/admin/ssh" = HomeLab;
}); });
}; };
} }

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

@ -22,15 +22,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]*%\]' \ | grep -o '[0-9]*%' \
| tr -d '][%' \ | tr -d '%' \
| head -n1 ) | head -n1 )
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@ | grep -o '\(yes\|no\)' | head -n1 )" == 'yes' ] ; then
title="Volume: ${value}% (Disabled)" title="Volume: ${value}% (Disabled)"
value=0 value=0
fi fi

View file

@ -48,14 +48,14 @@ while getopts ":m:g" option; do
fi fi
;; ;;
g) g)
previous_theme="$(cat ${STATE_FILE})" current_state="$(cat "${STATE_FILE}")"
if [ "${previous_theme}" == "${THEME_LIGHT}" ]; then next_state="${theme_next[${current_state}]}"
class="activated" if [ "${current_state}" == "${THEME_DARK}" ]; then
percentage=1 class='activated'
else percentage=100
percentage=0
fi fi
printf '{ "class": "%s", "percentage": %d }' "${class}" "${percentage}" printf '{"alt": "%s", "tooltip": "Set theme to %s", "percentage": %d, "class": "%s"}' \
"${gsettings_alt[${current_state}]}" "${next_state}" "${percentage:=0}" "${class:="none"}"
exit 0 exit 0
;; ;;
*) *)
@ -119,7 +119,12 @@ fi
# Sway # Sway
if [ "$(command -v swaybg)" ]; then if [ "$(command -v swaybg)" ]; then
bg_path="${BG_DIR}/${wallpaper[${theme}]}" bg_path="${BG_DIR}/${wallpaper[${theme}]}"
/run/current-system/sw/bin/cp "${bg_path}" "${STATE_DIR}/bg" && swaymsg reload & /run/current-system/sw/bin/cp "${bg_path}" "${STATE_DIR}/bg"
if [ "$(command -v swaymsg)" ]; then
pkill swaybg && swaymsg exec "swaybg -m fill -i ${STATE_DIR}/bg" &
elif [ "$(command -v hyprctl)" ]; then
pkill swaybg && hyprctl keyword exec "swaybg -m fill -i ${STATE_DIR}/bg" &
fi
fi fi
# Vifm # Vifm

48
scripts/toggle-notifications.sh Executable file
View file

@ -0,0 +1,48 @@
#!/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
while getopts ":g" option; do
case "${option}" in
g)
if [ "${current_state}" == "false" ]; then
state='normal'
tooltip='Hide notifications'
class='none'
else
state='paused'
tooltip='Show notifications'
class='activated'
fi
printf '{"alt": "%s", "tooltip": "%s", "class": "%s" }' \
"${state}" "${tooltip}" "${class}"
exit 0
;;
esac
done
# Toggle
if [ "${current_state}" == "false" ] ; then
notify-send 'Hiding notifications'
sleep 5
if [ "$(command -v makoctl)" ]; then
makoctl set-mode do-not-disturb
fi
if [ "$(command -v dunstctl)" ]; then
dunstctl set-paused true
fi
else
if [ "$(command -v makoctl)" ]; then
makoctl set-mode default
fi
if [ "$(command -v dunstctl)" ]; then
dunstctl set-paused false
fi
notify-send 'Showing notifications'
fi

50
scripts/toggle-tailscale.sh Executable file
View file

@ -0,0 +1,50 @@
#!/usr/bin/env bash
# Script to toggle Do not disturb mode for dunst
STOPPED_MSG='Tailscale is stopped'
# Check if tailscale is installed
if [ ! "$( command -v tailscale )" ]; then
echo 'Tailscale is not installed!'
exit 1
fi
# Get current state
status="$( tailscale status )"
current_state="$( grep -o "${STOPPED_MSG}" <<< "${status}" )"
while getopts ":g" option; do
case "${option}" in
g)
if [ "${current_state}" == "${STOPPED_MSG}" ]; then
state='disconnected'
tooltip='Connect tailnet'
printf '{"alt": "%s", "tooltip": "%s", "class": "%s" }' \
"${state}" "${tooltip}" "${state}"
else
state='connected'
tooltip="${status:='Disconnect tailnet'}"
printf '{"alt": "%s", "tooltip": "<tt>%q</tt>", "class": "%s" }' \
"${state}" "${tooltip}" "${state}"
fi
exit 0
;;
*)
echo 'Invalid option'
exit 1
;;
esac
done
# Toggle
if [ "${current_state}" == "${STOPPED_MSG}" ] ; then
notify-send 'Connecting tailnet'
notify-send 'Connected tailnet' "$( tailscale up )"
else
notify-send 'Disconnecting tailnet'
notify-send 'Disconnected tailnet' "$( tailscale down )"
fi

View file

@ -29,7 +29,7 @@ dpi-aware=yes
# initial-window-size-pixels=700x500 # Or, # initial-window-size-pixels=700x500 # Or,
# initial-window-size-chars=<COLSxROWS> # initial-window-size-chars=<COLSxROWS>
# initial-window-mode=windowed # initial-window-mode=windowed
pad=10x10 # optionally append 'center' #pad=10x10 # optionally append 'center'
# resize-delay-ms=100 # resize-delay-ms=100
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} # notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}

View file

@ -0,0 +1,5 @@
enable-ssh-support
default-cache-ttl 60
default-cache-ttl-ssh 60
max-cache-ttl 120
max-cache-ttl-ssh 120

View file

@ -0,0 +1,37 @@
# Use UTF-8 character encoding everywhere.
display-charset utf-8
utf8-strings
# When verifying a signature made from a subkey, require that the
# cross-certification "back signature" on the subkey is present and valid.
require-cross-certification
# Method references
personal-cipher-preferences AES256 AES192 AES
personal-digest-preferences SHA512 SHA384 SHA256
personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed
# New keys config
default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
cert-digest-algo SHA512
# Symmatric ops
s2k-digest-algo SHA512
s2k-cipher-algo AES256
# Disable cahcing of passphrase for symmatrical ops
no-symkey-cache
# Don't leak comments or software version information
no-comments
no-emit-version
# Display full fingerprints
keyid-format 0xlong
with-fingerprint
# Other display preferences
list-options show-uid-validity
verify-options show-uid-validity
# Enable smart card
use-agent

View file

@ -0,0 +1,7 @@
# Power down and ask PIN again after timout.
card-timeout 180 # 3 minutes
# Fix repeatedly prompting for an already-inserted YubiKey.
# It works by disabling CCID-support, so it does not clash with pcsc.
disable-ccid

View file

@ -0,0 +1,6 @@
monitor=desc:BOE 0x08CF,1920x1080@60.0,640x3240,1.0
monitor=desc:Hewlett Packard HP ZR2740w CNT319Y008,2560x1440@59.95,0x1800,1.0
monitor=desc:Dell Inc. DELL P2214H 29C2937M4YTL,1920x1080@60.0,2560x1800,1.0
monitor=desc:Dell Inc. DELL P2214H 29C2937M4YTL,transform,1
monitor=desc:Samsung Electric Company SAMSUNG,1920x1080@60.0,640x0,0.6000000000000001
monitor=desc:Samsung Electric Company SAMSUNG,disable

View file

@ -0,0 +1,164 @@
# TODO Do not hardcode this path
plugin = /nix/store/afivj8v5kfdsadxs4pa45vh0y65s3ajm-hy3-hl0.49.0/lib/libhy3.so
general:layout = hy3
plugin {
hy3 {
# disable gaps when only one window is onscreen
# 0 - always show gaps
# 1 - hide gaps with a single window onscreen
# 2 - 1 but also show the window border
no_gaps_when_only = 1 # default: 0
# policy controlling what happens when a node is removed from a group,
# leaving only a group
# 0 = remove the nested group
# 1 = keep the nested group
# 2 = keep the nested group only if its parent is a tab group
node_collapse_policy = 2 # default: 2
# offset from group split direction when only one window is in a group
group_inset = 10 # default: 10
# if a tab group will automatically be created for the first window spawned in a workspace
tab_first_window = false
# tab group settings
tabs {
# height of the tab bar
height = 10 # default: 22
# padding between the tab bar and its focused node
padding = 0 # default: 6
# the tab bar should animate in/out from the top instead of below the window
from_top = false # default: false
# radius of tab bar corners
radius = 0 # default: 6
# tab bar border width
border_width = 2 # default: 2
# render the window title on the bar
render_text = false # default: true
# center the window title
text_center = true # default: true
# font to render the window title with
text_font = Sans # default: Sans
# height of the window title
text_height = 8 # default: 8
# left padding of the window title
text_padding = 3 # default: 3
# active tab bar segment colors
#col.active = <color> # default: rgba(33ccff40)
#col.active.border = <color> # default: rgba(33ccffee)
#col.active.text = <color> # default: rgba(ffffffff)
# active tab bar segment colors for bars on an unfocused monitor
#col.active_alt_monitor = <color> # default: rgba(60606040)
#col.active_alt_monitor.border = <color> # default: rgba(808080ee)
#col.active_alt_monitor.text = <color> # default: rgba(ffffffff)
# focused tab bar segment colors (focused node in unfocused container)
#col.focused = <color> # default: rgba(60606040)
#col.focused.border = <color> # default: rgba(808080ee)
#col.focused.text = <color> # default: rgba(ffffffff)
# inactive tab bar segment colors
col.inactive = rgba(a6a6a620) # default: rgba(30303020)
col.inactive.border = rgba(a6a6a6aa) # default: rgba(606060aa)
#col.inactive.text = <color> # default: rgba(ffffffff)
# urgent tab bar segment colors
#col.urgent = <color> # default: rgba(ff223340)
#col.urgent.border = <color> # default: rgba(ff2233ee)
#col.urgent.text = <color> # default: rgba(ffffffff)
# urgent tab bar segment colors
#col.locked = <color> # default: rgba(90903340)
#col.locked.border = <color> # default: rgba(909033ee)
#col.locked.text = <color> # default: rgba(ffffffff)
# if tab backgrounds should be blurred
# Blur is only visible when the above colors are not opaque.
blur = true # default: true
# opacity multiplier for tabs
# Applies to blur as well as the given colors.
opacity = 1.0 # default: 1.0
}
# autotiling settings
autotile {
# enable autotile
enable = true # default: false
# make autotile-created groups ephemeral
ephemeral_groups = true # default: true
# if a window would be squished smaller than this width, a vertical split will be created
# -1 = never automatically split vertically
# 0 = always automatically split vertically
# <number> = pixel width to split at
trigger_width = -1 # default: 0
# if a window would be squished smaller than this height, a horizontal split will be created
# -1 = never automatically split horizontally
# 0 = always automatically split horizontally
# <number> = pixel height to split at
trigger_height = 0 # default: 0
# a space or comma separated list of workspace ids where autotile should be enabled
# it's possible to create an exception rule by prefixing the definition with "not:"
# workspaces = 1,2 # autotiling will only be enabled on workspaces 1 and 2
# workspaces = not:1,2 # autotiling will be enabled on all workspaces except 1 and 2
workspaces = all # default: all
}
}
}
# Keybinds
# Navigation
# Focus
# First, unbind default
unbind = $flag, $up
unbind = $flag, $right
unbind = $flag, $down
unbind = $flag, $left
unbind = $flag, up
unbind = $flag, right
unbind = $flag, down
unbind = $flag, left
bind = $flag, $up, hy3:movefocus, u
bind = $flag, $right, hy3:movefocus, r
bind = $flag, $down, hy3:movefocus, d
bind = $flag, $left, hy3:movefocus, l
bind = $flag, up, hy3:movefocus, u
bind = $flag, right, hy3:movefocus, r
bind = $flag, down, hy3:movefocus, d
bind = $flag, left, hy3:movefocus, l
# Layout
bind = $flag, z, hy3:changegroup, opposite
bind = $flag, x, hy3:changegroup, toggletab
bind = $flag, c, hy3:changegroup, h
bind = $flag, v, hy3:changegroup, v
bind = $flag, p, hy3:changefocus, raise
bind = $flag+Shift, p, hy3:changefocus, lower
bind = $flag, space, hy3:togglefocuslayer

View file

@ -0,0 +1,279 @@
# ~/.config/hypr/hyperland.conf
general {
border_size = 1
no_border_on_floating = false
gaps_in = 3
gaps_out = 5
gaps_workspaces = 0
col.inactive_border = 0xff444444
col.active_border = 0xffffffff
col.nogroup_border = 0xffff00ff
layout = dwindle
no_focus_fallback = true
resize_on_border = true
extend_border_grab_area = 5
hover_icon_on_border = true
allow_tearing = false
resize_corner = 0
snap {
enabled = false
window_gap = 10
monitor_gap = 10
border_overlap = false
}
}
decoration {
rounding = 0
# rounding_power = 4.0
active_opacity = 1.0
inactive_opacity = 1.0
fullscreen_opacity = 1.0
dim_inactive = false
dim_strength = 0.5
dim_special = 0.2
dim_around = 0.4
blur {
enabled = true
size = 8
passes = 1
noise = 0.01
contrast = 0.8
brightness = 0.8
vibrancy = 0.0
vibrancy_darkness = 0.0
ignore_opacity = true
new_optimizations = true
xray = true
special = false
popups = false
# input_methods = false
}
shadow {
enabled = false
range = 4
render_power = 3
sharp = false
ignore_window = true
color = 0xee1a1a1a
color_inactive = 0xee1a1a1a
# offset = [0,0]
scale = 1.0
}
}
animations {
enabled = false
first_launch_animation = true
}
gestures {
workspace_swipe = true
workspace_swipe_fingers = 3
workspace_swipe_min_fingers = false
workspace_swipe_distance = 300
workspace_swipe_invert = true
workspace_swipe_min_speed_to_force = 30
workspace_swipe_cancel_ratio = 0.2
workspace_swipe_direction_lock = true
workspace_swipe_direction_lock_threshold = 10
workspace_swipe_touch = false
workspace_swipe_touch_invert = false
workspace_swipe_create_new = false
workspace_swipe_forever = true
workspace_swipe_use_r = false
}
group {
auto_group = true
insert_after_current = true
focus_removed_window = true
drag_into_group = 1
merge_groups_on_drag = true
merge_groups_on_groupbar = true
merge_floated_into_tiled_on_groupbar = false
group_on_movetoworkspace = false
col.border_active = 0x66ffff00
col.border_inactive = 0x66777700
col.border_locked_active = 0x66ff5500
col.border_locked_inactive = 0x66775500
groupbar {
enabled = true
font_family = misc:font_family
font_size = 8
gradients = true
height = 14
stacked = false
priority = 3
render_titles = false
scrolling = true
text_color = 0xffffffff
col.active = 0x66ffff00
col.inactive = 0x66777700
col.locked_active = 0x66ff5500
col.locked_inactive = 0x66775500
}
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
col.splash = 0xffffffff
font_family = Letter
# splash_font_family =
force_default_wallpaper = -1
vfr = true
vrr = 1
mouse_move_enables_dpms = false
key_press_enables_dpms = true
always_follow_on_dnd = true
layers_hog_keyboard_focus = true
animate_manual_resizes = false
animate_mouse_windowdragging = false
disable_autoreload = true
enable_swallow = false
# swallow_regex =
# swallow_exception_regex =
focus_on_activate = true
mouse_move_focuses_monitor = true
render_ahead_of_time = false
render_ahead_safezone = 1
allow_session_lock_restore = false
background_color = 0x018281
close_special_on_empty = true
new_window_takes_over_fullscreen = 2
exit_window_retains_fullscreen = false
initial_workspace_tracking = 1
middle_click_paste = false
render_unfocused_fps = 12
disable_xdg_env_checks = false
# disable_hyprland_qtutils_check = false
# lockdead_screen_delay = 1000
}
binds {
pass_mouse_when_bound = false
scroll_event_delay = 300
workspace_back_and_forth = false
allow_workspace_cycles = false
workspace_center_on = 1
focus_preferred_method = 0
ignore_group_lock = false
# movefocus_cycles_fullscreen = true
# movefocus_cycles_groupfirst = false
disable_keybind_grabbing = false
window_direction_monitor_fallback = true
# allow_pin_fullscreen = true
}
xwayland {
enabled = true
use_nearest_neighbor = true
force_zero_scaling = false
}
opengl {
nvidia_anti_flicker = false
}
render {
explicit_sync = 2
explicit_sync_kms = 2
direct_scanout = false
expand_undersized_textures = true
# xp_mode = false
# ctm_animation = 2
# allow_early_buffer_release = true
}
cursor {
sync_gsettings_theme = true
no_hardware_cursors = false
no_break_fs_vrr = false
min_refresh_rate = 24
hotspot_padding = 1
inactive_timeout = 10
no_warps = false
persistent_warps = false
warp_on_change_workspace = 0
# default_monitor =
zoom_factor = 1.0
zoom_rigid = false
# enable_hypercursor = false
hide_on_key_press = true
hide_on_touch = true
# use_cpu_buffer = 2
# warp_back_after_non_mouse_input = false
}
ecosystem {
# no_update_news = false
# no_donation_nag = true
}
exec-once = gnome-keyring-daemon --start --components=secrets
exec-once = dunst --verbosity crit
exec-once = waycorner
exec-once = waybar
# TODO Replace with something else?
exec-once = wlsunset -t 2500 -l 50.51 -L 4.21
exec-once = nextcloud --background
# Turn volume off at boot
exec-once = bash -c 'for i in $(seq 1 10); do pactl set-sink-mute @DEFAULT_SINK@ 1 && break; sleep 1; done'
# STYLING
exec-once = swaybg -i "${HOME}/.local/state/sisyphus/bg" --mode=fill
env = XCURSOR_SIZE,24
# SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5
$flag = MOD4
$left = h
$down = j
$up = k
$right = l
$term = foot
$menu = j4-dmenu-desktop --dmenu="rofi -dmenu -i" --no-generic --usage-log="/home/tdpeuter/.local/state/dmenu.log" --term=$term
$lock = swaylock --daemonize
# https://wiki.hyprland.org/Nvidia/#environment-variables
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = LIBVA_DRIVER_NAME,nvidia
env = NVD_BACKEND,direct
source = /home/tdpeuter/.config/hypr/input-output.conf
source = /home/tdpeuter/.config/hypr/keybinds.conf
source = /home/tdpeuter/.config/hypr/modes.conf
source = /home/tdpeuter/.config/hypr/hy3.conf # Sway tiling plugin

View file

@ -0,0 +1,62 @@
# ~/.config/hypr/input-output.conf
input {
kb_layout = us,be,us
kb_variant = altgr-intl,iso-alternate,dvorak
numlock_by_default = true
resolve_binds_by_sym = false
repeat_rate = 25
repeat_delay = 600
sensitivity = 0.0
accel_profile = flat
force_no_accel = false
left_handed = false
scroll_method = 2fg
scroll_button_lock = true
scroll_factor = 1.0
natural_scroll = false
follow_mouse = 2
focus_on_close = 0
mouse_refocus = true
float_switch_override_focus = 1
special_fallthrough = false
off_window_axis_events = 1
emulate_discrete_scroll = 1
touchpad {
disable_while_typing = true
natural_scroll = true
scroll_factor = 0.8
middle_button_emulation = false
tap_button_map = lrm
clickfinger_behavior = false
tap-to-click = true
drag_lock = false
tap-and-drag = true
}
}
device {
name = at-translated-set-2-keyboard
numlock_by_default = false
}
monitor = , preferred, auto, 1
monitor = desc:BOE 0x08CF, preferred, 640x1440, 1
monitor = desc:Hewlett Packard HP ZR2740w CNT319Y008, preferred, auto-up, 1
# Vertical monitors
monitor = desc:Dell Inc. DELL P2214H 29C2937M4YTL, preferred, auto-right, 1, transform, 1
monitor = desc:Samsung Electric Company S22C650, preferred, auto-right, 1, transform, 1
# TV
monitor = desc:Samsung Electric Company SAMSUNG, disable
bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "eDP-1, disable"
bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "eDP-1, enable"

View file

@ -0,0 +1,180 @@
$notify = "${SCRIPT_DIR}/notify.sh"
# Navigation
# Focus
bind = $flag, $up, movefocus, u
bind = $flag, $right, movefocus, r
bind = $flag, $down, movefocus, d
bind = $flag, $left, movefocus, l
bind = $flag, up, movefocus, u
bind = $flag, right, movefocus, r
bind = $flag, down, movefocus, d
bind = $flag, left, movefocus, l
# Move windows
bind = $flag+Shift, $up, movewindow, u
bind = $flag+Shift, $right, movewindow, r
bind = $flag+Shift, $down, movewindow, d
bind = $flag+Shift, $left, movewindow, l
bind = $flag+Shift, up, movewindow, u
bind = $flag+Shift, right, movewindow, r
bind = $flag+Shift, down, movewindow, d
bind = $flag+Shift, left, movewindow, l
# $flag+Next move scratchpad
# $flag+KP_Next move scratchpad
# $flag+Prior scratchpad show
# $flag+KP_Prior scratchpad show
bind = $flag, Next, movetoworkspace, special:scratchpad
bind = $flag, KP_Next, movetoworkspace, special:scratchpad
bind = $flag, Prior, togglespecialworkspace, special:scratchpad
bind = $flag, Prior, movetoworkspace, special:scratchpad
bind = $flag, Prior, togglespecialworkspace, special:scratchpad
# bind = $flag, Next, movetoworkspace, special:magic
# bind = $flag, Next, togglespecialworkspace, magic
# bind = $flag, KP_Next, togglespecialworkspace, magic
# bind = $flag, KP_Next, movetoworkspace, +0
# bind = $flag, KP_Next, togglespecialworkspace, magic
# bind = $flag, KP_Next, movetoworkspace, special:magic
# bind = $flag, KP_Next, togglespecialworkspace, magic
# Layouts
bind = $flag, f, togglefloating
bind = $flag+Shift, f, settiled
bind = $flag, s, pin
bind = $flag, s, setfloating
bind = $flag+Shift, s, pin
bind = $flag+Shift, s, settiled
bind = $flag, F11, fullscreen, 1
bind = $flag+Shift, F11, fullscreen, 0
# Workspaces
$ws1 = 1
$ws2 = 2
$ws3 = 3
$ws4 = 4
$ws5 = 5
$ws6 = 6
$ws7 = 7
$ws8 = 8
$ws9 = 9
$ws10 = 10
$ws11 = 11
$ws12 = 12
# Focus a specific workspace
bind = $flag, 1, workspace, $ws1
bind = $flag, 2, workspace, $ws2
bind = $flag, 3, workspace, $ws3
bind = $flag, 4, workspace, $ws4
bind = $flag, 5, workspace, $ws5
bind = $flag, 6, workspace, $ws6
bind = $flag, 7, workspace, $ws7
bind = $flag, 8, workspace, $ws8
bind = $flag, 9, workspace, $ws9
bind = $flag, 0, workspace, $ws10
bind = $flag, minus, workspace, $ws11
bind = $flag, equal, workspace, $ws12
# Move window to a specific workspace
bind = $flag+Shift, 1, movetoworkspace, $ws1
bind = $flag+Shift, 2, movetoworkspace, $ws2
bind = $flag+Shift, 3, movetoworkspace, $ws3
bind = $flag+Shift, 4, movetoworkspace, $ws4
bind = $flag+Shift, 5, movetoworkspace, $ws5
bind = $flag+Shift, 6, movetoworkspace, $ws6
bind = $flag+Shift, 7, movetoworkspace, $ws7
bind = $flag+Shift, 8, movetoworkspace, $ws8
bind = $flag+Shift, 9, movetoworkspace, $ws9
bind = $flag+Shift, 0, movetoworkspace, $ws10
bind = $flag+Shift, Minus, movetoworkspace, $ws11
bind = $flag+Shift, Equal, movetoworkspace, $ws12
# Go through workspaces in order
bind = $flag+Ctrl, $left, workspace, e-1
bind = $flag+Ctrl, $right, workspace, e+1
bind = $flag+Ctrl, left, workspace, e-1
bind = $flag+Ctrl, right, workspace, e+1
bind = $flag+Ctrl+Shift, $left, movetoworkspace, e-1
bind = $flag+Ctrl+Shift, $right, movetoworkspace, e+1
bind = $flag+Ctrl+Shift, left, movetoworkspace, e-1
bind = $flag+Ctrl+Shift, right, movetoworkspace, e+1
# GNOME-like keybinds
bind = $flag+Alt, $left, workspace, e-1
bind = $flag+Alt, $right, workspace, e+1
bind = $flag+Alt, left, workspace, e-1
bind = $flag+Alt, right, workspace, e+1
bind = $flag+Alt+Shift, $left, movetoworkspace, e-1
bind = $flag+Alt+Shift, $right, movetoworkspace, e+1
bind = $flag+Alt+Shift, left, movetoworkspace, e-1
bind = $flag+Alt+Shift, right, movetoworkspace, e+1
# System
# Brightness
bind = , XF86MonBrightnessDown, exec, brightnessctl -e s 5%- && $notify -b
bind = , XF86MonBrightnessUp, exec, brightnessctl -e s +5% && $notify -b
# Audio
bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 2%+ && $notify -v
bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- && $notify -v
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && $notify -v
bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
# Media
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioPrev, exec, playerctl previous
bind = , XF86AudioNext, exec, playerctl next
bind = Shift, XF86AudioMute, exec, playerctl play-pause
bind = Shift, XF86AudioLowerVolume, exec, playerctl previous
bind = Shift, XF86AudioRaiseVolume, exec, playerctl next
# Other special keys
bind = , XF86Calculator, exec, qalculate-gtk
# Shortcuts
# Reload
bind = Alt+Shift, r, exec, "hyperctl reload"
bind = Ctrl+Alt+Shift, r, forcerendererreload
bind = Alt+Shift, e, exit
# Kill a window
bind = $flag, q, closewindow, activewindow
# Start a terminal
bind = $flag, Return, exec, $term
bind = CTRL&ALT, T, exec, $term
# Application menu
bind = Alt, Space, exec, $menu
bind = Alt, Tab, focuscurrentorlast
bind = $flag, e, exec, $term -e vifm
bind = Ctrl+Shift, Escape, exec, $term -e zenith
bind = Ctrl+Shift, a, exec, notify-send "hole!" && hyprctl setcursor _ 87 && sleep 5 && hyprctl setcursor _ 24
# bind = $flag, mouse_up, movefocus, l
bind = SUPER, mouse_down, workspace, e-1
bind = SUPER, mouse_up, workspace, e+1
# bind = $flag, mouse_down, movefocus, r
bind = $flag, Delete, exec, $lock

View file

@ -0,0 +1,38 @@
# System actions
$mode_system = System (l)ock, (s)leep, (h)ibernate, (r)eboot, (Shift+s)hutdown
bind = Ctrl+Alt, Delete, submap, $mode_system
submap = $mode_system
bind = , l, exec, $lock
bind = , l, submap, reset
bind = , s, exec, $lock, exec, systemctl suspend
bind = , s, submap, reset
bind = , h, exec, $lock, exec, systemctl hibernate
bind = , h, submap, reset
bind = , r, exec, systemctl reboot
bind = Shift, s, exec, systemctl poweroff -i
bind = Ctrl+Alt, Delete, submap, reset
bind = , Escape, submap, reset
bind = , Return, submap, reset
submap = reset
# Launcher
$mode_launcher = Launch (f)irefox, (t)hunderbird, (l)ogseq.
bind = $flag, O, submap, $mode_launcher
submap = $mode_launcher
bind = , F, exec, firefox
bind = , F, submap, reset
bind = , L, exec, logseq
bind = , L, submap, reset
bind = , T, exec, thunderbird
bind = , T, submap, reset
bind = $flag, O, submap, reset
bind = , Escape, submap, reset
bind = , Return, submap, reset
submap = reset

View file

@ -0,0 +1,10 @@
# Generated by nwg-displays on 2025-01-27 at 13:58:39. Do not edit manually.
monitor=desc:BOE 0x08CF,1920x1080@60.0,0x0,1.0
monitor=desc:Hewlett Packard HP ZR2740w CNT319Y008,2560x1440@59.95,0x1800,1.0
monitor=desc:Hewlett Packard HP ZR2740w CNT319Y008,disable
monitor=desc:Dell Inc. DELL P2214H 29C2937M4YTL,1920x1080@60.0,2560x1800,1.0
monitor=desc:Dell Inc. DELL P2214H 29C2937M4YTL,transform,1
monitor=desc:Dell Inc. DELL P2214H 29C2937M4YTL,disable
monitor=desc:Samsung Electric Company SAMSUNG,0x0@60.0,-1x-1,1.0
monitor=desc:Samsung Electric Company SAMSUNG,disable

View file

@ -0,0 +1,9 @@
monitor=desc:BOE 0x08CF,1920x1080@60.0,0x0,1.0
monitor=desc:Hewlett Packard HP ZR2740w CNT319Y008,2560x1440@59.95,0x1800,1.0
monitor=desc:Hewlett Packard HP ZR2740w CNT319Y008,disable
monitor=desc:Dell Inc. DELL P2214H 29C2937M4YTL,1920x1080@60.0,2560x1800,1.0
monitor=desc:Dell Inc. DELL P2214H 29C2937M4YTL,transform,1
monitor=desc:Dell Inc. DELL P2214H 29C2937M4YTL,disable
monitor=desc:Samsung Electric Company SAMSUNG,0x0@60.0,-1x-1,1.0
monitor=desc:Samsung Electric Company SAMSUNG,disable

View file

@ -1,9 +1,3 @@
Host Hugo
User admin
HostName 192.168.0.11
IdentitiesOnly yes
IdentityFile /run/secrets/Hugo/ssh
Host HPC Host HPC
User vsc44995 User vsc44995
HostName login.hpc.ugent.be HostName login.hpc.ugent.be
@ -15,7 +9,7 @@ Host git.depeuter.dev
User git User git
HostName git.depeuter.dev HostName git.depeuter.dev
IdentitiesOnly yes IdentitiesOnly yes
IdentityFile /run/secrets/Hugo/Gitea/ssh IdentityFile /run/secrets/Gitea/ssh
Host github.com Host github.com
User git User git
@ -36,3 +30,60 @@ Host subgit.ugent.be
IdentityFile /run/secrets/UGent/SubGit/ssh IdentityFile /run/secrets/UGent/SubGit/ssh
CanonicalizeHostname yes # Ignore capitalization CanonicalizeHostname yes # Ignore capitalization
# HomeLab
# Physical hosts
Host Hugo
User admin
HostName 192.168.0.11
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/Hugo/ssh
Host Roxanne
User ghost
Hostname 192.168.0.13
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/Roxanne/ghost/ssh
Host HTPC
User root
Hostname 192.168.0.88
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/HTPC/ssh
# Virtual hosts
Host Gitea
User gh0st
HostName 192.168.0.24
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/Gitea/ssh
Host Nextcloud
User administrator
Hostname 192.168.0.14
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/Nextcloud/ssh
Host Vaultwarden
User gh0st
Hostname 192.168.0.22
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/Vaultwarden/ssh
Host Binnenpost
User admin
Hostname 192.168.0.89
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/NixOS/admin/ssh
Host Development
User admin
Hostname 192.168.0.91
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/NixOS/admin/ssh
Host Testing
User admin
Hostname 192.168.0.92
IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/Nixos/admin/ssh

View file

@ -61,5 +61,9 @@ exec wlsunset -l 50.50 -L 4.00 -t 3000 -T 6500
exec gnome-keyring-daemon --start --components=secrets # Secrets exec gnome-keyring-daemon --start --components=secrets # Secrets
exec dunst --verbosity crit # Notification manager exec dunst --verbosity crit # Notification manager
exec swayidle -w exec swayidle -w
exec waycorner
exec nextcloud --background exec nextcloud --background
# SwayFX
blur enable

View file

@ -1,6 +1,6 @@
input type:keyboard { input type:keyboard {
xkb_layout "us" xkb_layout "us","be"
xkb_variant "altgr-intl" xkb_variant "altgr-intl","iso-alternate"
} }
input type:touchpad { input type:touchpad {

View file

@ -1,7 +1,8 @@
set $notify ~/projects/sisyphus/scripts/notify.sh set $notify ~/projects/sisyphus/scripts/notify.sh
# Focus
bindsym { bindsym {
# Focus
$flag+$up focus up $flag+$up focus up
$flag+$right focus right $flag+$right focus right
$flag+$down focus down $flag+$down focus down
@ -14,10 +15,8 @@ bindsym {
$flag+p focus parent $flag+p focus parent
$flag+space focus mode_toggle $flag+space focus mode_toggle
}
# Move windows # Move windows
bindsym {
$flag+Shift+$up move up $flag+Shift+$up move up
$flag+Shift+$right move right $flag+Shift+$right move right
$flag+Shift+$down move down $flag+Shift+$down move down
@ -32,10 +31,8 @@ bindsym {
$flag+KP_Next move scratchpad $flag+KP_Next move scratchpad
$flag+Prior scratchpad show $flag+Prior scratchpad show
$flag+KP_Prior scratchpad show $flag+KP_Prior scratchpad show
}
# Layouts # Layouts
bindsym {
$flag+z layout toggle split $flag+z layout toggle split
$flag+x layout tabbed $flag+x layout tabbed
$flag+c split h $flag+c split h
@ -212,6 +209,8 @@ bindsym {
$flag+q kill $flag+q kill
# Start a terminal # Start a terminal
$flag+Return exec $term $flag+Return exec $term
Control+$alt+t exec $term
$alt+space exec $menu $alt+space exec $menu
$alt+Tab focus prev $alt+Tab focus prev
$flag+Tab exec $window_switcher $flag+Tab exec $window_switcher
@ -224,8 +223,6 @@ bindsym {
# File explorer # File explorer
$flag+e exec $term -e vifm $flag+e exec $term -e vifm
# Internet browser
$flag+i exec firefox
} }
bindgesture { bindgesture {

View file

@ -5,9 +5,10 @@
set $default "default" set $default "default"
# Resizing # Resizing
set $resize "Resize" set $mode_resize "Resize"
bindsym $flag+r mode $resize bindsym $flag+r mode $mode_resize
mode $resize bindsym { mode $mode_resize {
bindsym {
$right resize grow width 10 px or 10 ppt $right resize grow width 10 px or 10 ppt
$up resize grow height 10 px or 10 ppt $up resize grow height 10 px or 10 ppt
$left resize shrink width 10 px or 10 ppt $left resize shrink width 10 px or 10 ppt
@ -38,9 +39,17 @@ mode $resize bindsym {
$flag+Left move left $flag+Left move left
$flag+Down move down $flag+Down move down
Return mode $default
Escape mode $default
$flag+r mode $default $flag+r mode $default
Escape mode $default
Return mode $default
}
bindgesture {
swipe:2:right resize grow width 10 px or 10 ppt
swipe:2:down resize grow height 10 px or 10 ppt
swipe:2:left resize shrink width 10 px or 10 ppt
swipe:2:up resize shrink height 10 px or 10 ppt
}
} }
# System actions # System actions
@ -53,9 +62,23 @@ mode $mode_system bindsym {
r mode $default, exec systemctl reboot r mode $default, exec systemctl reboot
Shift+s mode $default, exec systemctl poweroff -i Shift+s mode $default, exec systemctl poweroff -i
Return mode $default
Escape mode $default
Control+$alt+Delete mode $default Control+$alt+Delete mode $default
Escape mode $default
Return mode $default
}
set $mode_preferences "Toggle (d)ark mode, (s)unset, (n)otification"
bindsym $alt+end mode $mode_preferences
bindsym $alt+KP_End mode $mode_preferences
mode $mode_preferences bindsym {
d exec "${SCRIPT_DIR}/toggle-light-dark.sh", mode $default
s exec "${SCRIPT_DIR}/sunset.sh", mode $default
n exec "${SCRIPT_DIR}/do-not-disturb.sh", mode $default
$alt+end mode $default
$alt+KP_End mode $default
Escape mode $default
Return mode $default
} }
# Screenshots # Screenshots
@ -72,20 +95,23 @@ mode $mode_screenshot bindsym {
Shift+s exec grimshot --notify save screen $save_format, mode $default Shift+s exec grimshot --notify save screen $save_format, mode $default
Print exec grimshot --notify save screen $save_format, mode $default Print exec grimshot --notify save screen $save_format, mode $default
Return mode $default
Escape mode $default Escape mode $default
Return mode $default
} }
set $mode_preferences "Toggle (d)ark mode, (s)unset, (n)otification" # Launcher
bindsym $alt+end mode $mode_preferences set $mode_launcher "Launch (f)irefox, (s)potify or (t)hunderbird."
bindsym $alt+KP_End mode $mode_preferences bindsym $flag+o mode $mode_launcher
mode $mode_preferences bindsym { mode $mode_launcher bindsym {
d exec "${SCRIPT_DIR}/toggle-light-dark.sh", mode $default f exec firefox, mode $default
s exec "${SCRIPT_DIR}/sunset.sh", mode $default t exec thunderbird, mode $default
n exec "${SCRIPT_DIR}/do-not-disturb.sh", mode $default
Return mode $default $flag+o mode $default
Escape mode $default Escape mode $default
$alt+end mode $default Return mode $default
$alt+KP_End mode $default
} }
# Ignore (all) keybinds. Useful when working with Virtual Machines.
set $mode_ignore "Ignore keybinds - Press Control+Alt+Insert to escape."
bindsym Control+$alt+Insert mode $mode_ignore
mode $mode_ignore bindsym Control+$alt+Insert mode $default

View file

@ -15,6 +15,10 @@ default_border pixel 1
default_floating_border normal 1 default_floating_border normal 1
hide_edge_borders smart hide_edge_borders smart
smart_borders on smart_borders on
gaps {
inner 5
outer 3
}
# Mimic no titles by setting the text color to background color # Mimic no titles by setting the text color to background color
# border backgr. text indic. child_border # border backgr. text indic. child_border

View file

@ -2,41 +2,55 @@
# .config/swaylock/config # .config/swaylock/config
# #
indicator #indicator
indicator-radius=200 #indicator-radius=200
#
#clock
#datestr=%A, %B %d %Y
#
#show-failed-attempts
#
#screenshots
#effect-pixelate=10
#effect-vignette=0.75:0 # Darken the whole screen.
#fade-in=0.25
#
#grace=7 # Allow to unlock without password for duration
#grace-no-mouse
clock image=${ASSETS_DIR}/bluescreen.png
datestr=%A, %B %d %Y
screenshots
effect-blur=5x5
effect-vignette=0.75:0 # Darken the whole screen.
fade-in=0.25
grace=7 # Allow to unlock without password for duration
grace-no-mouse
# Styling # Styling
color=000000 # The default background color when no image could be loaded
font=letter extended font=letter extended
text-color=ffffff text-color=ffffff
text-clear-color=ffffff text-clear-color=ffffff
text-wrong-color=eb4d4b text-caps-lock-color=ffffff
text-wrong-color=bd2024
layout-text-color=ffffff
# Make all the other stuff invisible # Make all the other stuff invisible
key-hl-color=00000000
separator-color=00000000
ring-color=00000000
ring-clear-color=00000000
ring-ver-color=00000000
ring-wrong-color=00000000
line-color=00000000
line-clear-color=00000000
line-ver-color=00000000
line-wrong-color=00000000
inside-color=00000000 inside-color=00000000
inside-clear-color=00000000 inside-clear-color=00000000
inside-caps-lock-color=00000000
inside-ver-color=00000000 inside-ver-color=00000000
inside-wrong-color=00000000 inside-wrong-color=00000000
key-hl-color=00000000
layout-bg-color=00000000
layout-border-color=00000000
line-color=00000000
line-clear-color=00000000
line-caps-lock-color=00000000
line-ver-color=00000000
line-wrong-color=00000000
ring-color=00000000
ring-clear-color=00000000
ring-caps-lock-color=00000000
ring-ver-color=00000000
ring-wrong-color=00000000
separator-color=00000000
text-ver-color=00000000 text-ver-color=00000000

View file

@ -25,8 +25,7 @@ set smarttab
set tabstop=4 set tabstop=4
set title set title
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
"" Show suggestions on another line instead of inplace set wildmenu "" Show suggestions on another line instead of inplace
set wildmenu
syntax enable syntax enable
@ -82,6 +81,9 @@ Plug 'prabirshrestha/vim-lsp'
Plug 'sheerun/vim-polyglot' Plug 'sheerun/vim-polyglot'
Plug 'vifm/vifm.vim' Plug 'vifm/vifm.vim'
" Coq
Plug 'whonore/Coqtail'
call plug#end() call plug#end()
" }}} " }}}

View file

@ -1,42 +0,0 @@
//
// ~/.config/waybar/config
//
[{
"name": "toggle",
"mode": "hide",
"ipc": true,
"position": "top",
"height": 25,
"spacing": 4,
"margin": "-25px 0 0 0", // Show this bar on top of the other one, seemingly the "same" one.
"custom/sep": {
"format": "\uf142"
},
"include": [
// Import modules (!)
"~/.config/waybar/modules.json",
// "~/.config/waybar/default.json"
"~/.config/waybar/left.json"
],
},
{
"name": "keep",
"position": "top",
"height": 25,
"modules-left": ["sway/mode", "keyboard-state"],
"modules-center": ["clock"],
"modules-right": ["privacy"],
"include": [
// Import modules (!)
"~/.config/waybar/modules.json"
],
}]

View file

@ -0,0 +1,63 @@
/* * * * * * * * * * * * * * * * *
* *
* ~/.config/waybar/config.jsonc *
* *
* * * * * * * * * * * * * * * * */
[
/* Always visible, contains less information */
{
"name": "keep",
"position": "top",
"height": 26,
"modules-left": [
"group/mode"
],
"modules-center": [
"clock#center"
],
"modules-right": [
"keyboard-state#numlock",
"keyboard-state#capslock",
"privacy"
],
"include": [
"~/.config/waybar/modules.json"
]
},
/* Toggle this bar, contains all information */
{
"name": "toggle",
"mode": "hide",
"ipc": true,
"position": "top",
"height": 26,
/* Show this bar on top of the other one, seemingly replacing it. */
"margin": "-26px 0 0 0",
"modules-left": [
"custom/meta",
"sway/window",
"group/workspaces",
"custom/scratchpad-indicator",
"group/mode"
],
"modules-center": [
"mpris"
],
"modules-right": [
"keyboard-state#numlock",
"keyboard-state#capslock",
"privacy",
"tray",
"group/control-center",
"group/network",
"pulseaudio",
"group/power",
"clock#bar"
],
"include": [
"~/.config/waybar/modules.json"
]
}
]

View file

@ -2,17 +2,15 @@
"modules-left": [ "modules-left": [
"sway/workspaces", "sway/workspaces",
"custom/scratchpad-indicator", "custom/scratchpad-indicator",
"mpris", "group/system"
"group/system",
], ],
"modules-right": [ "modules-right": [
"group/hardware", "tray",
"custom/sep", "sway/language",
"bluetooth", "bluetooth",
"network", "network",
"pulseaudio", "pulseaudio",
"battery", "group/battery",
"custom/sep", "mpris"
"tray"
] ]
} }

View file

@ -0,0 +1,80 @@
@define-color foreground rgb(202, 202, 202);
@define-color background rgb( 3, 3, 3);
@define-color highlight-background alpha(@foreground, 0.4);
@define-color accent #00897b;
@define-color white #ecf0f1;
@define-color warning-red #eb4d4b;
* {
font-family: letter, "Font Awesome 6 Free", font-awesome, monospace;
font-size: 13px;
font-weight: 600;
}
window#waybar {
border: none;
color: @white;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.keep {
background-color: @transparent;
}
window#waybar.toggle {
background-color: alpha(@foreground, 0.4);
}
tooltip {
background: alpha(@background, 0.8);
}
tooltip label {
color: @white;
}
#workspaces button {
border: none;
padding: 0 8px;
border-radius: 5px;
animation: ws_normal 20s ease-in-out 1;
}
#mode,
#workspaces button.focused {
background-color: alpha(@background, 0.2);
}
#workspaces button:hover {
background-color: alpha(@background, 0.2);
}
#battery,
#disk,
#bluetooth,
#clock,
#custom-browser,
#custom-scratchpad-indicator,
#custom-system-hibernate, #custom-system-lock, #custom-system-reboot, #custom-system-shutdown, #custom-system-sleep,
#custom-toggle-light-dark,
#custom-toggle-night-light,
#custom-toggle-notifications,
#cpu,
#idle_inhibitor,
#keyboard-state,
#memory,
#mpris,
#network,
#sway-language,
#sway-window,
#power-profiles-daemon,
#privacy,
#pulseaudio,
#temperature,
#tray {
color: @white;
}

View file

@ -2,31 +2,28 @@
"battery": { "battery": {
"format": "{capacity}% {icon}", "format": "{capacity}% {icon}",
"format-alt": "{time} {icon}", "format-alt": "{time} {icon}",
"format-charging": "{capacity}% \uf0e7 {icon}", "format-charging": "{capacity}% \ue55b", /* */
"format-icons": ["\uf244", "\uf243", "\uf242", "\uf241", "\uf240"],
"format-plugged": "{capacity}% \ue55c", "format-plugged": "{capacity}% \ue55c",
"format-icons": [
"\uf244", /* */
"\uf243", /* */
"\uf242", /* */
"\uf241", /* */
"\uf240" /* */
],
"states": { "states": {
"warning": 30, "warning": 25,
"critical": 15 "critical": 12
} }
}, },
"disk": {
"interval": 30,
"format": "{percentage_used}% \uf0a0",
"on-click": "kitty -e duf /",
"path": "/",
"tooltip-format": "{used} used out of {total} on {path} ({percentage_free}% or {free} free)"
},
"bluetooth": { "bluetooth": {
"format-disabled": "<big>\uf294</big>", "format-disabled": "\uf294", /* */
"format-off": "\uf294", "format-off": "\uf294", /* */
"format-on": "<big>\uf294</big>", "format-on": "<big>\uf294</big>", /* */
"format-connected": "<big>\uf294</big>c", "format-connected": "<big>\uf294</big>c", /* c */
"max-length": 10.3, "max-length": 10.3,
"on-click": "bluetoothctl power $( bluetoothctl show | sed -n 's/\\s*Powered: \\(yes\\|no\\)/\\1/p' | sed 's/yes/off/;s/no/on/' )", "on-click": "bluetoothctl power $( bluetoothctl show | sed -n 's/\\s*Powered: \\(yes\\|no\\)/\\1/p' | sed 's/yes/off/;s/no/on/' )",
"on-click-right": "kitty -e bluetoothctl",
"tooltip-format": "{status}", "tooltip-format": "{status}",
"tooltip-format-on": "{status}, no devices connected", "tooltip-format-on": "{status}, no devices connected",
"tooltip-format-connected": "{status} ({num_connections}):\n{device_enumerate}", "tooltip-format-connected": "{status} ({num_connections}):\n{device_enumerate}",
@ -34,186 +31,357 @@
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}" "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}"
}, },
"clock": { "clock#center": {
"format": "{:%H:%M}", "format": "{:%H:%M}",
"format-alt": "{:%d/%m/%Y %H:%M}", "format-alt": "{:%a %b %d, %Y, %R}",
"timezone": "Europe/Brussels", "timezone": "Europe/Brussels",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>" "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"calendar": {
"mode": "month",
"week-pos": "left",
"format": {
/* Highlight todays date. */
"today": "<span background='#ffffff' color='#000000'><b>{}</b></span>"
}
},
"actions": {
"on-click": "mode"
}
}, },
"custom/browser": { "clock#bar": {
"format": "\uf120", "format": "{:%a %b %d, %R}",
"on-click": "dmenu_run", "timezone": "Europe/Brussels",
"tooltip-format": "Launch an application" "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"calendar": {
"mode-mon-col": 3,
"on-scroll": 1,
"format": {
/* Highlight today's date. */
"today": "<span background='#FFFFFF' color='#000000'><b>{}</b></span>"
}
},
"actions": {
"on-click": "mode"
}
}, },
"custom/light-dark-toggle": { "custom/control-center": {
"on-click": "bash ${SCRIPT_DIR}/toggle-light-dark.sh", "format": "\uf085", /* */
"tooltip-format": "Toggle between light and dark mode", "tooltip": false
"format": "\uf042 ",
"tooltip": true
}, },
"custom/night-light-toggle": { "custom/meta": {
"on-click": "bash ${SCRIPT_DIR}/sunset.sh", "format": "\uf17c", /* */
"tooltip-format": "Toggle night-light on or off", "tooltip": false,
"format": "\uf0eb ", "on-click": "dmenu_run"
"tooltip": true,
"tooltip-format": "Toggle night-light on or off",
}, },
"custom/scratchpad-indicator": { "custom/scratchpad-indicator": {
"interval": 3, "interval": 3,
"return-type": "json", "return-type": "json",
"exec": "swaymsg -t get_tree | jq --unbuffered --compact-output '(recurse(.nodes[]) | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [.. | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | if ($scratch_nodes|length) > 0 then { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") } else empty end'", "exec": "swaymsg -t get_tree | jq --unbuffered --compact-output '(recurse(.nodes[]) | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [.. | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | if ($scratch_nodes|length) > 0 then { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") } else empty end'",
"format": "{} \uf2d2", "format": "\uf2d2 {}",
"on-click": "exec swaymsg 'scratchpad show'", "on-click": "exec swaymsg 'scratchpad show'",
"on-click-right": "exec swaymsg 'move scratchpad'" "on-click-right": "exec swaymsg 'move scratchpad'"
}, },
"custom/system-lock": { "custom/system-lock": {
"format": "\uf09c", "format": "\uf09c", /* */
"tooltip": true, "tooltip": true,
"tooltip-format": "Lock device", "tooltip-format": "Lock device",
"on-click": "swaylock -f" "on-click": "swaylock --daemonize"
}, },
"custom/system-sleep": { "custom/system-sleep": {
"format": "\uf186", "format": "\uf186", /* */
"tooltip": true, "tooltip": true,
"tooltip-format": "Put device to sleep", "tooltip-format": "Put device to sleep",
"on-click": "swaylock -f; systemctl suspend" "on-click": "swaylock --daemonize; systemctl suspend"
}, },
"custom/system-hibernate": { "custom/system-hibernate": {
"format": "\uf2dc", "format": "\uf2dc", /* */
"tooltip": true, "tooltip": true,
"tooltip-format": "Hibernate device", "tooltip-format": "Hibernate device",
"on-click": "swaylock -f; systemctl hibernate" "on-click": "swaylock --daemonize; systemctl hibernate"
}, },
"custom/system-reboot": { "custom/system-reboot": {
"format": "\uf0e2", "format": "\uf0e2", /* */
"tooltip": true, "tooltip": true,
"tooltip-format": "Reboot device", "tooltip-format": "Reboot device",
"on-click": "systemctl reboot" "on-click": "systemctl reboot"
}, },
"custom/system-shutdown": { "custom/system-shutdown": {
"format": "\uf011", "format": "\uf011", /* */
"tooltip": true, "tooltip": true,
"tooltip-format": "Shutdown device", "tooltip-format": "Shutdown device",
"on-click": "systemctl poweroff -i" "on-click": "systemctl poweroff -i"
}, },
"custom/toggle-light-dark": {
"exec": "bash ${SCRIPT_DIR}/toggle-light-dark.sh -g",
"interval": 60,
"return-type": "json",
"on-click": "bash ${SCRIPT_DIR}/toggle-light-dark.sh",
"format": "{icon}",
"format-icons": {
"default": "\uf185",
"prefer-dark": "\uf005"
},
"tooltip": true
},
"custom/toggle-notifications": { "custom/toggle-notifications": {
"on-click": "bash ${SCRIPT_DIR}/do-not-disturb.sh", "exec": "bash ${SCRIPT_DIR}/toggle-notifications.sh -g",
"tooltip-format": "Toggle notifications", "interval": 60,
"format": "\uf1f6 ", "return-type": "json",
"on-click": "bash ${SCRIPT_DIR}/toggle-notifications.sh",
"format": "{icon}",
"format-icons": {
"normal": "\uf0f3", /* */
"paused": "\uf1f6" /* */
},
"tooltip": true "tooltip": true
}, },
"cpu": { "custom/toggle-tailscale": {
"format": "{usage}% \uf2db", "exec": "bash ${SCRIPT_DIR}/toggle-tailscale.sh -g",
"on-click": "foot -e htop", "interval": 60,
"return-type": "json",
"on-click": "bash ${SCRIPT_DIR}/toggle-tailscale.sh",
"format": "{icon}",
"format-icons": {
"disconnected": "\ue50b",
"connected": "\ue509",
},
"tooltip": true "tooltip": true
}, },
"group/hardware": { "group/control-center": {
"orientation": "inherit", "orientation": "inherit",
"modules": [ "modules": [
"power-profiles-daemon", "custom/control-center",
"memory", "group/language",
"cpu", /* "hyprland/language", "sway/language", */
"temperature", "custom/toggle-notifications",
"custom/toggle-light-dark",
"bluetooth"
],
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false,
"children-class": "drawer-child"
}
},
"group/language": {
"orientation": "inherit",
"modules": [
"hyprland/language",
"sway/language"
]
},
"group/mode": {
"orientation": "inherit",
"modules": [
"hyprland/submap",
"sway/mode"
]
},
"group/network": {
"orientation": "inherit",
"modules": [
/* Preview */
"network",
/* Most-left */
"custom/toggle-tailscale"
/* Most-right */
],
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false,
"children-class": "drawer-child"
}
},
"group/power": {
"orientation": "inherit",
"modules": [
/* Preview */
"battery",
/* Most-left */
"custom/system-shutdown", "custom/system-shutdown",
"custom/system-reboot", "custom/system-reboot",
"custom/system-hibernate", "custom/system-hibernate",
"custom/system-sleep", "custom/system-sleep",
"custom/system-lock", "custom/system-lock",
"power-profiles-daemon",
"idle_inhibitor"
/* Most-right */
], ],
"drawer": { "drawer": {
"transition-duration": 500, "transition-duration": 500,
"transition-left-to-right": false, "transition-left-to-right": false,
"children-class": "drawer-child", "children-class": "drawer-child"
}, }
}, },
"group/system": { "group/workspaces": {
"orientation": "inherit", "orientation": "inherit",
"modules": [ "modules": [
"idle_inhibitor", "hyprland/workspaces",
"custom/light-dark-toggle", "sway/workspaces"
"custom/night-light-toggle", ]
"custom/toggle-notifications",
],
"drawer": {
"transition-duration": 500,
"tansition-left-to-right": true,
"children-class": "drawer-child",
}, },
"hyprland/language": {
"format": "\uf11c",
"on-click": "hyprctl switchxkblayout at-translated-set-2-keyboard next && notify-send \"$(hyprctl devices -j | jq -r '.keyboards[] | select(.name == \"at-translated-set-2-keyboard\") | .active_keymap')\" --app-name 'waybar'",
"tooltip": true,
"tooltip-format": "Switch keyboard layouts",
"keyboard-name": "at-translated-set-2-keyboard"
},
"hyprland/workspaces": {
"all-outputs": false,
"disable-scroll": true,
"format": "{icon}{name}",
"format-icons": {
"default": "",
"urgent": "\uf071 " /* */
}
}, },
"idle_inhibitor": { "idle_inhibitor": {
"format": "{icon}", "format": "{icon}",
"format-icons": { "format-icons": {
"activated": "\uf06e", "activated": "\uf06e", /* */
"deactivated": "\uf070" "deactivated": "\uf070" /* */
}, },
"tooltip": false "tooltip": false
}, },
"keyboard-state": { "keyboard-state#capslock": {
"capslock": true,
"format": { "format": {
"capslock": "{icon}", "capslock": "{icon}"
}, },
"format-icons": { "format-icons": {
"locked": "\uf023", "locked": "\uf11c", /* */
"unlocked": "" "unlocked": ""
}, }
"numlock": false,
"capslock": true,
"scrollock": false,
}, },
"memory": { "keyboard-state#numlock": {
"format": "{}% \uf1c0", "numlock": true,
"on-click": "kitty -e zenith" "format": {
"numlock": "{icon}"
},
"format-icons": {
"locked": "\uf1ec", /* */
"unlocked": ""
}
}, },
"mpris": { "mpris": {
// "ignored-players": ["firefox"]
"format": "{player_icon} {dynamic}", "format": "{player_icon} {dynamic}",
"format-paused": "{status_icon} <i>{dynamic}</i>", "format-paused": "{status_icon} <i>{dynamic}</i>",
"tooltip-format": "{player} ({status}) {title} - {artist} - {album}", "tooltip-format": "{player} ({status}) {title} - {artist} - {album}",
"player-icons": { "player-icons": {
"default": "\uf51f", "default": "\uf8d9", /* */
"spotify": "\uf1bc", "mpv": "\uf144", /* */
"mpv": "🎵" "spotify": "\uf1bc" /* */
}, },
"status-icons": { "status-icons": {
"paused": "⏸" "paused": "\uf04c" /* */
}, },
"dynamic-order": [ "dynamic-order": [
"title", "title",
"artist" "artist"
], ],
"dynamic-len": 40, "dynamic-len": 40
}, },
"network": { "network": {
"format-disconnected": "\uf127", "format-disconnected": "\uf127", /* */
"format-ethernet": "\uf6ff {ifname}: {ipadds}/{cidr}", "format-ethernet": "\uf6ff", /* */
"format-wifi": "\uf1eb", "format-linked": "\uf0c1", /* */
"format-wifi": "{icon}",
"interval": 5, "interval": 5,
"on-click-right": "kitty -e nmtui", "tooltip": true,
"tooltip-format": "{ifname}: {ipaddr}", "tooltip-format": "{ifname}: {ipaddr}",
"tooltip-format-disconnected": "Disconnected", "tooltip-format-disconnected": "Disconnected",
"tooltip-format-wifi": "{essid} ({signalStrength}%)\n{ifname}: {ipaddr}" "tooltip-format-wifi": "{essid} ({signalStrength}%)\n{ifname}: {ipaddr}",
"format-icons": [
"\uf05e", /* */
"\uf1eb", /* */
"\uf1eb" /* */
]
},
"power-profiles-daemon": {
"format": "{icon}",
"format-icons": {
"default": "\uf110", /* */
"performance": "\uf135", /* */
"balanced": "\uf24e", /* */
"power-saver": "\uf06c" /* */
},
"tooltip": true,
"tooltip-format": "Profile: {profile}\nDriver: {driver}"
},
"privacy": {
"transition-duration": 250,
"icon-size": 16,
"modules": [
{
"type": "screenshare",
"tooltip": true
},
{
"type": "audio-in",
"tooltip": true
}
]
},
"pulseaudio": {
"format": "{volume}% {icon}",
"format-headset": "{volume}% \uf58f", /* */
"format-muted": "\uf6a9", /* */
"format-icons": [
"\uf026", /* */
"\uf027", /* */
"\uf028" /* */
],
"scroll-step": 2.0,
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
},
"sway/language": {
"format": "{short}",
"on-click": "swaymsg input type:keyboard xkb_switch_layout next",
"tooltip": true,
"tooltip-format": "Switch keyboard layouts"
}, },
"sway/window": { "sway/window": {
"max-length": 85 "format": "{title}",
"max-length": 20,
"tooltip": true,
"all-outputs": true,
"icon": false,
"icon-size": 18,
"rewrite": {
".* - (.*)": "$1",
".* — (.*)": "$1"
}
}, },
"sway/workspaces": { "sway/workspaces": {
@ -221,72 +389,14 @@
"disable-scroll": true, "disable-scroll": true,
"format": "{icon}{name}", "format": "{icon}{name}",
"format-icons": { "format-icons": {
"default": "", // Prevent showing workspace name literal. "default": "",
"urgent": "\uf071 " "urgent": "\uf071 " /* */
},
// "persistent_workspaces": {
// "0:¯\\_(ツ)_/¯": []
// }
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
} }
}, },
"privacy": {
"icon-spacing": 4,
"icon-size": 18,
"transition-duration": 250,
"modules": [
{
"type": "screenshare",
"tooltip": true,
"tooltip-icon-size": 18,
},
{
"type": "audio-in",
"tooltip": true,
"tooltip-icon-size": 18,
},
],
},
"pulseaudio": {
"format": "{volume}% {icon}{format_source}",
"format-muted": "\uf6a9{format_source}",
"format-bluetooth": "{volume}% {icon}\uf294{format_source}",
"format-bluetooth-muted": "\uf6a9 {icon}\uf294{format_source}",
"format-source": " {volume}% \uf130",
"format-source-muted": "",
"format-icons": {
"headphone": "\uf58f",
"hands-free": "\uf590",
"headset": "\uf590",
"phone": "\uf3ce",
"portable": "\uf3ce",
"car": "\uf1b9",
"default": ["\uf026", "\uf027", "\uf028 "]
},
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
"on-click-right": "pavucontrol",
"scroll-step": 2
},
"temperature": {
"critical-threshold": 70,
"format": "{temperatureC}°C {icon}",
"format-icons": ["\uf2cb", "\uf2c9", "\uf2c7"]
},
"tray": { "tray": {
"icon-size": 16,
"show-passive-items": true,
"spacing": 10 "spacing": 10
} }
} }

View file

@ -0,0 +1,14 @@
@import 'style.css';
* {
color: #C2C2C2;
}
window#waybar {
background-color: #171717;
}
window#waybar button.focused {
background-color: #C2C2C2;
}

View file

@ -0,0 +1,14 @@
@import 'style.css';
* {
color: #171717;
}
window#waybar {
background-color: #C2C2C2;
}
window#waybar button.focused {
background-color: #171717;
}

View file

@ -1,165 +1,118 @@
/* /* * * * * * * * * * * * * * * *
* ~/.config/waybar/style.css * *
* * ~/.config/waybar/style.css *
* `otf-font-awesome` is required to be installed for icons. * *
* * * * * * * * * * * * * * * * */
* Pick your stylesheet:
* - sharp.css
* - transparent.css
* - round.css
*/
@define-color transparent-black rgba(23, 23, 23, 0.9); @define-color background #C2C2C2;
@define-color white #ecf0f1; @define-color foreground #171717;
@define-color warning-red #eb4d4b;
@define-color accent #00897b; /* Pantone / PMS 18-1559 TCX / Red Alert */
@define-color warning rgb(208, 52, 44);
/* Safety orange */
@define-color safety rgb(255, 103, 0);
* {
padding: 0 4px;
}
window#waybar { window#waybar {
/* background: linear-gradient(90deg, #CECECE 0%, #D1D1D1 10%, #C9C9C9 50%, #BBBBBB 90%, #BABABA 100%); */
font-family: letter, "Font Awesome 6 Free", font-awesome, monospace; font-family: letter, "Font Awesome 6 Free", font-awesome, monospace;
font-size: 13px; font-size: 13px;
-webkit-font-smoothing: antialiased; font-weight: 600;
transition-property: background-color;
transition-duration: .5s;
} }
#window, #workspaces { .modules-right,
margin: 0 5px; .modules-right > widget:last-child {
} padding-right: 0;
#workspaces button {
border: none;
border-radius: 0;
min-width: 30px;
padding: 0 5px;
}
#workspaces button.focused {
background-color: transparent;
color: @white;
}
#workspaces button:hover {
background-color: transparent;
color: @transparent-black;
}
#workspaces button.urgent {
color: @white;
background-color: @warning-red;
}
/* All modules individually. */
#backlight,
#battery,
#bluetooth,
#clock,
#cpu,
#custom-browser,
#custom-light-dark-toggle,
#custom-night-light-toggle,
#custom-system-lock, #custom-system-sleep, #custom-system-hibernate, #custom-system-reboot, #custom-system-shutdown,
#custom-toggle-notifications,
#disk,
#group-hardware,
#group-system,
#idle_inhibitor,
#keyboard-state,
#memory,
#mode,
#mpd,
#mpris,
#network,
#power-profiles-daemon,
#privacy-item.audio-in, #privacy-item.audio-out, #privacy-item.screenshare,
#pulseaudio,
#temperature,
#tray {
padding: 0 5px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0; margin-right: 0;
} }
@keyframes blink { #battery.charging {
to {
background-color: #ffffff;
color: #000000;
}
}
label:focus {
background-color: #000000;
}
/* Module specific colours */
#battery.charging, #battery.plugged {
color: #ffffff;
background-color: #26A65B; background-color: #26A65B;
color: #FFFFFF;
} }
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
background-color: #f53c3c; background-color: @warning;
color: #ffffff; color: #FFFFFF;
animation-name: blink; animation-name: blink;
animation-duration: 0.5s; animation-duration: 0.5s;
animation-timing-function: linear; animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.plugged {
animation-name: blink;
animation-duration: 1.0s;
animation-timing-function: steps(12);
animation-iteration-count: infinite; animation-iteration-count: infinite;
animation-direction: alternate; animation-direction: alternate;
} }
#bluetooth.disabled, #bluetooth.disabled,
#bluetooth.off, #bluetooth.off {
#network.disconnected,
#pulseaudio.muted {
opacity: 0.6; opacity: 0.6;
} }
#mpris { #custom-toggle-tailscale.disconnected {
color: #2a5c45; opacity: 0.6;
min-width: 100px; }
#mpris.Feishin {
background: linear-gradient(45deg, rgba(170,92,195,1) 100%, rgba(0,164,220,1) 0%);
} }
#mpris.spotify { #mpris.spotify {
background-color: #66cc99; background-color: #66cc99;
color: #2a5c45;
} }
#mpris.vlc { #mpris.vlc {
background-color: #ffa000; background-color: #ffa000;
} }
#temperature.critical { #network.disconnected {
background-color: #eb4d4b; opacity: 0.6;
} }
#custom_light-dark-toggle.activated, #privacy,
#idle_inhibitor.activated { #privacy-item,
background-color: #ecf0f1; #privacy-item.screenshare,
color: #2d3436; #privacy-item.audio-in {
background-color: @safety;
}
#privacy-item.screenshare {
background-color: #000000;
}
#pulseaudio.muted {
opacity: 0.6;
}
#systemd-failed-units.degraded {
background-color: @warning;
}
#temperature.critical {
background-color: @warning;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: @warning;
} }
#tray > .passive { #tray > .passive {
-gtk-icon-effect: dim; -gtk-icon-effect: dim;
} }
#tray > .needs-attention { #workspaces button.urgent {
-gtk-icon-effect: highlight; background-color: @warning;
background-color: #eb4d4b; color: white;
} }
#privacy-item.audio-in,
#privacy-item.audio-out,
#privacy-item.screenshare {
background-color: #ffaa01;
color: #2d3436;
}
@import "sharp.css";

View file

@ -51,11 +51,15 @@ fi
alias cp='cp -i' alias cp='cp -i'
alias df='df -h' alias df='df -h'
alias free='free -m' alias free='free -m'
alias gs='git status' alias gs='git status --short'
alias hgrep='history | grep' alias hgrep='history | grep'
alias ll='ls -la' alias ll='ls -la'
alias mkdir='mkdir -pv'
alias more='less' alias more='less'
alias mv='mv -i'
alias np='nano -w PKGBUILD' alias np='nano -w PKGBUILD'
alias rm='rm -I --preserve-root'
alias zip='zip -r'
alias update='pushd ~/projects/sisyphus/nixos alias update='pushd ~/projects/sisyphus/nixos
nix flake update nix flake update
sudo nixos-rebuild switch --flake .# --show-trace sudo nixos-rebuild switch --flake .# --show-trace