Compare commits

...

9 Commits

Author SHA1 Message Date
Jan-Bulthuis
c3c61ce654 Updated personal config 2025-05-09 15:01:50 +02:00
Jan-Bulthuis
626d78f088 Added BvA user 2025-05-09 15:01:40 +02:00
Jan-Bulthuis
bcd5606107 Restarted firewall 2025-05-09 15:01:25 +02:00
Jan-Bulthuis
f8fbb52607 Small change 2025-05-09 15:01:14 +02:00
Jan-Bulthuis
2b0bdb0248 Enabled grdp correctly by adding GDM 2025-05-09 15:01:07 +02:00
Jan-Bulthuis
f0403330e2 Fixed package 2025-05-09 15:00:51 +02:00
Jan-Bulthuis
e10079e578 Updated some theming 2025-05-09 15:00:21 +02:00
Jan-Bulthuis
2a8fcf627b Fixed some packages 2025-05-09 14:59:38 +02:00
Jan-Bulthuis
3d54536168 Set up account or programming contests 2025-05-09 14:59:11 +02:00
16 changed files with 714 additions and 484 deletions

108
flake.lock generated
View File

@ -5,11 +5,11 @@
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1732200724,
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
"lastModified": 1745523430,
"narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
"rev": "58bfe2553d937d8af0564f79d5b950afbef69717",
"type": "github"
},
"original": {
@ -70,11 +70,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1743774811,
"narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=",
"lastModified": 1744642301,
"narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e",
"rev": "59e3de00f01e5adb851d824cf7911bd90c31083a",
"type": "github"
},
"original": {
@ -339,11 +339,11 @@
]
},
"locked": {
"lastModified": 1745340124,
"narHash": "sha256-zQTOl/JPGjiAQoU1yraCGfPBg7yr4nlHNdbZy8Ebrl4=",
"lastModified": 1746040799,
"narHash": "sha256-osgPX/SzIpkR50vev/rqoTEAVkEcOWXoQXmbzsaI4KU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c9433ae62fbb4bd09609e242569edc3b551e21a9",
"rev": "5f217e5a319f6c186283b530f8c975e66c028433",
"type": "github"
},
"original": {
@ -360,11 +360,11 @@
]
},
"locked": {
"lastModified": 1745198506,
"narHash": "sha256-0hVbHuqAnZUnnGaBTqNes0P0kfH+KKyup2boWDST0iI=",
"lastModified": 1746040799,
"narHash": "sha256-osgPX/SzIpkR50vev/rqoTEAVkEcOWXoQXmbzsaI4KU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b0cc092405da805da6fa964f5a178343658ceaf0",
"rev": "5f217e5a319f6c186283b530f8c975e66c028433",
"type": "github"
},
"original": {
@ -409,11 +409,11 @@
]
},
"locked": {
"lastModified": 1745161329,
"narHash": "sha256-OEx+1ceH7bONZhxZv+CjoE9CXElL2raz2Zb/9iabWuE=",
"lastModified": 1746111721,
"narHash": "sha256-Jsn01TrHUZuo2IzeRkcnty+ftBcnHkbtv9NmLwdV9zk=",
"owner": "doronbehar",
"repo": "nix-matlab",
"rev": "751b9ca566a57ad297987937e7873365a034788c",
"rev": "07739cc347be4fda69deab66eea68b030e918e89",
"type": "gitlab"
},
"original": {
@ -430,11 +430,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1745320144,
"narHash": "sha256-Rbw+E3Na694sTPjNSRFHtT1o31eQXO3OLEzM+25kcME=",
"lastModified": 1746109800,
"narHash": "sha256-sjDpqdvbQaiA6OAsgLE4niz6hmmCpoUH0cl5zyfu6FI=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "84d7c1002734f21f150c641da095c5ce43f1cb98",
"rev": "9fe1aa7b6a1043003b38f36626dd29b52247d720",
"type": "github"
},
"original": {
@ -445,11 +445,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1744932701,
"narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=",
"lastModified": 1745930157,
"narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
"rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae",
"type": "github"
},
"original": {
@ -461,11 +461,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1744440957,
"narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=",
"lastModified": 1746055187,
"narHash": "sha256-3dqArYSMP9hM7Qpy5YWhnSjiqniSaT2uc5h2Po7tmg0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d",
"rev": "3e362ce63e16b9572d8c2297c04f7c19ab6725a5",
"type": "github"
},
"original": {
@ -477,11 +477,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1744868846,
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
"lastModified": 1746061036,
"narHash": "sha256-OxYwCGJf9VJ2KnUO+w/hVJVTjOgscdDg/lPv8Eus07Y=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
"rev": "3afd19146cac33ed242fc0fc87481c67c758a59e",
"type": "github"
},
"original": {
@ -493,11 +493,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1744868846,
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
"lastModified": 1746061036,
"narHash": "sha256-OxYwCGJf9VJ2KnUO+w/hVJVTjOgscdDg/lPv8Eus07Y=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
"rev": "3afd19146cac33ed242fc0fc87481c67c758a59e",
"type": "github"
},
"original": {
@ -509,11 +509,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1743583204,
"narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
"lastModified": 1745930157,
"narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434",
"rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae",
"type": "github"
},
"original": {
@ -530,11 +530,11 @@
"nuschtosSearch": "nuschtosSearch"
},
"locked": {
"lastModified": 1745324162,
"narHash": "sha256-Sjb/LvtWpPtSXacjJCTrLAmWtXNJd0SWxO3PzTvD7Tc=",
"lastModified": 1746101723,
"narHash": "sha256-loxT2bAglD3w8XDx+7huMXQHbg07yHHHCNiCiVWneqI=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "60638182b8d1b0fe13631d02eafaf8903499ee60",
"rev": "c91753bbe57781e08226829b9e354facd50caf1b",
"type": "github"
},
"original": {
@ -552,11 +552,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1745342999,
"narHash": "sha256-50TqkAv1ma3zI8TwekiVOdxBD+fyJsEeBHRgQtmSktk=",
"lastModified": 1746118004,
"narHash": "sha256-E5WQwA602g5qMnZDmgV7EqDAwyg4PqnoeMJAkDD1yak=",
"owner": "nix-community",
"repo": "NUR",
"rev": "71cefa751b886862229c679aab1c2b0fab837052",
"rev": "9a4aaf927694321aeedfec791dfcc7850f8503cd",
"type": "github"
},
"original": {
@ -575,11 +575,11 @@
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1743884191,
"narHash": "sha256-foVcginhVvjg8ZnTzY5wwMeZ4wjJ8yX66PW5kgyivPE=",
"lastModified": 1746056780,
"narHash": "sha256-/emueQGaoT4vu0QjU9LDOG5roxRSfdY0K2KkxuzazcM=",
"owner": "nix-community",
"repo": "NUR",
"rev": "fde90f5f52e13eed110a0e53a2818a2b09e4d37c",
"rev": "d476cd0972dd6242d76374fcc277e6735715c167",
"type": "github"
},
"original": {
@ -631,11 +631,11 @@
]
},
"locked": {
"lastModified": 1745289264,
"narHash": "sha256-7nt+UJ7qaIUe2J7BdnEEph9n2eKEwxUwKS/QIr091uA=",
"lastModified": 1746067100,
"narHash": "sha256-6JeEbboDvRjLwB9kzCnmWj+f+ZnMtKOe5c2F1VBpaTs=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "3b7171858c20d5293360042936058fb0c4cb93a9",
"rev": "026e8fedefd6b167d92ed04b195c658d95ffc7a5",
"type": "github"
},
"original": {
@ -666,11 +666,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1745332124,
"narHash": "sha256-2lRWKSUlKTsfqLhyxXsxKcoPQG5tFQ3GbTne8/vVCQY=",
"lastModified": 1746111784,
"narHash": "sha256-94MEscICizhXBJvP5o6f9lcY2vWXTSg1XKZZbS19Yso=",
"owner": "danth",
"repo": "stylix",
"rev": "375b1de2424aac1338ee6e8b4ef15976b64b0462",
"rev": "716e6669a9840e4ba0d8deb6ab1d016ef01c475a",
"type": "github"
},
"original": {
@ -761,11 +761,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1742851696,
"narHash": "sha256-sR4K+OVFKeUOvNIqcCr5Br7NLxOBEwoAgsIyjsZmb8s=",
"lastModified": 1744974599,
"narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "c37771c4ae8ff1667e27ddcf24991ebeb94a4e77",
"rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd",
"type": "github"
},
"original": {
@ -777,11 +777,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1743296873,
"narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=",
"lastModified": 1745111349,
"narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a",
"rev": "e009f18a01182b63559fb28f1c786eb027c3dee9",
"type": "github"
},
"original": {

View File

@ -71,6 +71,10 @@
sudo = true;
configuration = ./users/jan.nix;
};
berg-van-abstractie = {
sudo = false;
configuration = ./users/comp-prog.nix;
};
};
"vm-audio" = mkConfig "x86_64-linux" ./machines/vm-audio.nix {
local = {

View File

@ -185,7 +185,6 @@
DiscoverableTimeout = 0;
AlwaysPairable = true;
PairableTimeout = 0;
ControllerMode = "bredr";
FastConnectable = true;
JustWorksRepairing = "always";
};

View File

@ -58,7 +58,7 @@ in
programs.dconf.enable = true;
services.libinput.enable = true;
networking.firewall = {
enable = mkForce false;
enable = true;
logRefusedConnections = true;
logRefusedPackets = true;
logReversePathDrops = true;
@ -84,6 +84,7 @@ in
}
];
security.rtkit.enable = true;
security.polkit.enable = true;
# TODO: Move to USB module
# services.gvfs.enable = true;

View File

@ -1,4 +1,9 @@
{ config, lib, ... }:
{
config,
lib,
pkgs,
...
}:
with lib;
{
@ -8,11 +13,29 @@ with lib;
config = mkIf config.modules.grdp.enable {
services.gnome.gnome-remote-desktop.enable = true;
environment.systemPackages = with pkgs; [
gnome-remote-desktop
gnome-control-center
gnome-session
gnome-shell
gnome-settings-daemon
gdm
];
systemd.services."gnome-remote-desktop".wantedBy = [ "graphical.target" ];
networking.firewall = {
allowedTCPPorts = [ 3389 ];
allowedUDPPorts = [ 3389 ];
};
services.xserver.displayManager.gdm.enable = true;
modules.greetd.enable = mkForce false;
# security.polkit.extraConfig = ''
# polkit.addRule(function(action, subject) {
# if (action.id == "org.gnome.controlcenter.remote-session-helper" &&
# subject.isInGroup("wheel")) {
# return polkit.Result.YES;
# }
# });'';
# programs.dconf.profiles.user.databases = [
# {
# settings = with lib.gvariant; {

View File

@ -54,8 +54,7 @@ in
# Theming
userChrome = readFile (
pkgs.substituteAll {
src = ./userChrome.css;
pkgs.replaceVars ./userChrome.css {
colors = config.desktop.theming.colorsCSS;
}
);

View File

@ -11,26 +11,30 @@ let
in
{
options.desktop.theming.background = {
path = mkOption {
type = types.str;
default = "minimal/a_flower_on_a_dark_background.png";
description = "Path to the background image.";
};
themed = mkEnableOption "themed background";
invert = mkEnableOption "invert background";
src = mkOption {
default = pkgs.fetchFromGitHub {
owner = "dharmx";
repo = "walls";
rev = "6bf4d733ebf2b484a37c17d742eb47e5139e6a14";
sha256 = "sha256-M96jJy3L0a+VkJ+DcbtrRAquwDWaIG9hAUxenr/TcQU=";
image = {
url = mkOption {
type = types.str;
default = "https://raw.githubusercontent.com/dharmx/walls/refs/heads/main/digital/a_drawing_of_a_spider_on_a_white_surface.png";
description = "URL to the background image.";
};
hash = mkOption {
type = types.str;
default = "sha256-eCEjM7R9yeHNhZZtvHjrgkfwT25JA7FeMoVwnQ887CQ=";
description = "SHA256 hash of the background image.";
};
};
themed = mkEnableOption "themed background";
inverted = mkEnableOption "invert background";
};
config =
with pkgs;
let
src = pkgs.fetchurl {
url = cfg.image.url;
hash = cfg.image.hash;
};
theme = writeTextFile {
name = "gowall-theme";
text = builtins.toJSON {
@ -61,45 +65,56 @@ in
executable = true;
};
fileExtension =
name:
let
parts = splitString "." name;
in
if length parts > 1 then lists.last parts else "";
fileName =
name:
let
parts = splitString "/" name;
in
if length parts > 1 then lists.last parts else name;
image = fileName cfg.image.url;
background-themed = stdenv.mkDerivation {
name = "background-themed-1.0.0";
src = cfg.src;
src = src;
buildInputs = [
gowall
imagemagick
(writeShellScriptBin "xdg-open" "")
tree
];
buildPhase =
if cfg.themed then
if cfg.invert then
''
cp ${theme} ./theme.json
unpackPhase = ''
cp ${src} ./${image}
chmod u+w ./${image}
'';
export HOME=$PWD
convert ./${cfg.path} -channel RGB -negate ./${cfg.path}
buildPhase = ''
${optionalString cfg.inverted ''
convert ./${image} -channel RGB -negate ./${image}
''}
${optionalString cfg.themed ''
cp ${theme} ./theme.json
gowall convert ./${cfg.path} -o themed -t ./theme.json
mv Pictures/gowall/themed.* ./
mogrify -format png themed.*
''
else
''
cp ${theme} ./theme.json
export HOME=$PWD
export HOME=$PWD
gowall convert ./${cfg.path} -o themed -t ./theme.json
mv Pictures/gowall/themed.* ./
mogrify -format png themed.*
''
else
''
cp ${cfg.path} ./themed
mogrify -format png themed
'';
gowall convert ./${image} --output themed -t ./theme.json
tree
mv ./themed/*.* ./
''}
mv ./${image} themed.${fileExtension image}
${optionalString (fileExtension image != "png") ''
mogrify -format png themed.*
''}
'';
installPhase = ''
install -Dm644 -t $out themed.png

View File

@ -110,8 +110,11 @@ in
# Configure qt theme
qt = mkIf config.desktop.enable {
enable = true;
platformTheme.name = "adwaita";
style.name = if cfg.darkMode then "adwaita-dark" else "adwaita-light";
platformTheme.name = "gtk";
style = {
name = if cfg.darkMode then "adwaita-dark" else "adwaita-light";
package = pkgs.adwaita-qt;
};
};
# Configure gtk theme

View File

@ -35,6 +35,8 @@ let
fontModules = [
# Import all fonts
./fonts/adwaita-mono.nix
./fonts/adwaita-sans.nix
./fonts/cozette-vector.nix
./fonts/cozette.nix
./fonts/dejavu-sans.nix
@ -190,8 +192,8 @@ in
{
enable = true;
# TODO: Toggles
gtk3.extraCss = disableCSD;
gtk4.extraCss = disableCSD;
gtk3.extraCss = mkIf config.modules.river.enable disableCSD;
gtk4.extraCss = mkIf config.modules.river.enable disableCSD;
};
# TODO: Make cursors configurable using modules.

View File

@ -0,0 +1,8 @@
{ pkgs, ... }:
{
name = "Adwaita Mono";
package = pkgs.adwaita-fonts;
recommendedSize = 12;
fallbackFonts = [ ];
}

View File

@ -0,0 +1,8 @@
{ pkgs, ... }:
{
name = "Adwaita Sans";
package = pkgs.adwaita-fonts;
recommendedSize = 12;
fallbackFonts = [ ];
}

View File

@ -11,7 +11,7 @@ let
my-mathematica = pkgs.mathematica.override {
# TODO: Just use a generic name for the installer?
source = ./Wolfram_14.1.0_LIN_Bndl.sh;
# source = ./Wolfram_14.2.1_LIN_Bndl.sh;
};
in
{

View File

@ -15,5 +15,11 @@ in
config = mkIf cfg.enable {
# TODO: Move to audioling
home.packages = with pkgs; [ feishin ];
# TODO: Remove exception once no longer required by feishin
nixpkgs.config.permittedInsecurePackages = [
"electron-33.4.11"
"freeimage-3.18.0-unstable-2024-04-18"
];
};
}

View File

@ -44,7 +44,7 @@ in
listchars = "tab:»«,trail:·,extends:,precedes:,nbsp:";
};
diagnostics = {
diagnostic.settings = {
enable = true;
signs = true;
underline = true;

172
users/comp-prog.nix Normal file
View File

@ -0,0 +1,172 @@
{
lib,
config,
pkgs,
...
}:
{
home.stateVersion = "24.11";
home.packages = with pkgs; [
# Desktop environment
firefox
gnome-text-editor
gnome-calculator
gnome-console
gnome-logs
gnome-system-monitor
nautilus
adwaita-icon-theme
gnome-control-center
gnome-shell-extensions
glib
gnome-menus
gtk3.out
xdg-user-dirs
xdg-user-dirs-gtk
cantarell-fonts
dejavu_fonts
source-code-pro
source-sans
gnome-session
adwaita-fonts
# Coding tools
vim-full
nano
neovim
emacs
gedit
geany
kdePackages.kate
vscode
python310
jdk17
gcc
lldb
pypy310
# Runners
(writeShellScriptBin "mygcc" "gcc -std=gnu17 -x c -Wall -O2 -static -pipe -o $1 \"$1.c\" -lm")
(writeShellScriptBin "mygpp" "g++ -std=gnu++20 -x c++ -Wall -O2 -static -pipe -o $1 \"$1.cpp\" -lm")
(writeShellScriptBin "mypython" "pypy3 $@")
(writeShellScriptBin "myjavac" "javac -encoding UTF-8 -sourcepath . -d . $@")
(writeShellScriptBin "mykotlinc" "kotlinc -d . $@")
];
programs.vscode = {
enable = true;
mutableExtensionsDir = false;
profiles.default = {
extensions = with pkgs.vscode-extensions; [
ms-vscode.cpptools
ms-dotnettools.csharp
formulahendry.code-runner
vscjava.vscode-java-debug
dbaeumer.vscode-eslint
redhat.java
ms-python.python
];
};
};
programs.firefox = {
enable = true;
profiles.default = {
settings = {
"browser.startup.homepage" = "https://domjudge.bulthuis.dev";
};
bookmarks = {
force = true;
settings = [
{
name = "Sites";
toolbar = true;
bookmarks = [
{
name = "C Reference";
url = "https://en.cppreference.com/w/c";
}
{
name = "C++ Reference";
url = "https://en.cppreference.com/w/cpp";
}
{
name = "Python 3.10 documentation";
url = "https://docs.python.org/3.10/download.html";
}
{
name = "Java 17 API Specification";
url = "https://docs.oracle.com/en/java/javase/17/docs/api/";
}
{
name = "Kotlin Language Documentation";
url = "https://kotlinlang.org/docs/kotlin-reference.pdf";
}
{
name = "DOMjudge Team Manual";
url = "https://www.domjudge.org/docs/manual/main/index.html";
}
];
}
];
};
};
};
modules = {
unfree = {
enable = true;
allowedPackages = [
"vscode"
"vscode-extension-ms-vscode-cpptools"
];
};
};
desktop = {
enable = true;
name = "Gnome";
initScript = ''
${pkgs.gnome-session}/bin/gnome-session
'';
session = {
type = "wayland";
desktop = "GNOME";
};
};
xdg.portal = {
enable = true;
config.common.default = [
"gnome"
"gtk"
];
extraPortals = with pkgs; [
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
];
};
# Theme configuration
desktop.theming =
let
fontpkgs = config.desktop.theming.fonts.pkgs;
in
{
# Fonts
fonts.serif = fontpkgs."DejaVu Serif";
fonts.sansSerif = fontpkgs."Adwaita Sans";
fonts.monospace = fontpkgs."Adwaita Mono";
fonts.emoji = fontpkgs."Noto Color Emoji";
fonts.interface = fontpkgs."Adwaita Sans";
fonts.extraFonts = [ ];
# Color scheme
# themes.catppuccin = {
# enable = true;
# flavor = "mocha";
# };
};
}

View File

@ -8,409 +8,399 @@
}:
{
config = {
# State version
home.stateVersion = "24.05";
config = (
lib.recursiveUpdate
{
# State version
home.stateVersion = "24.05";
# TODO: Move into modules
home.packages = with pkgs; [
libreoffice-still
remmina
pinentry
thunderbird
signal-desktop
prusa-slicer
freecad-wayland
inkscape
ente-auth
bitwarden
carla
];
# TODO: Move into modules
home.packages = with pkgs; [
libreoffice-still
remmina
pinentry
thunderbird
signal-desktop
prusa-slicer
freecad-wayland
inkscape
ente-auth
bitwarden
carla
baobab
gnome-calculator
nautilus
];
# desktop.development = "river-light";
desktop.enable = true;
desktop.environments = {
river-dark = {
name = "River Dark";
type = "custom";
config = { };
extraConfig = {
modules = {
# Desktop environment
river.enable = true;
waylock.enable = true;
waybar.enable = true;
mako.enable = true;
foot.enable = true;
rofi-rbw.enable = true;
};
# desktop.development = "river-light";
desktop.enable = true;
desktop.environments = {
river-dark = {
name = "River Dark";
type = "custom";
config = { };
extraConfig = {
modules = {
# Desktop environment
river.enable = true;
waylock.enable = true;
waybar.enable = true;
mako.enable = true;
foot.enable = true;
rofi-rbw.enable = true;
};
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
xdg.portal = {
enable = true;
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
xdg.portal = {
enable = true;
config.common.default = [
"wlr"
"gtk"
];
config.common.default = [
"wlr"
"gtk"
];
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
# Color scheme
desktop.theming.background = {
# path = "unsorted/a_group_of_mountains_with_a_building_in_the_background.jpg";
path = "anime/a_colorful_buildings_with_power_lines.jpg";
themed = true;
invert = false;
};
desktop.theming.themes.catppuccin = {
enable = true;
flavor = "mocha";
};
};
};
river-light = {
name = "River Light";
type = "custom";
config = { };
extraConfig = {
modules = {
# Desktop environment
river.enable = true;
waylock.enable = true;
waybar.enable = true;
mako.enable = true;
foot.enable = true;
rofi-rbw.enable = true;
};
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
xdg.portal = {
enable = true;
config.common.default = [
"wlr"
"gtk"
];
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
# Color scheme
desktop.theming.background = {
# path = "unsorted/a_group_of_mountains_with_a_building_in_the_background.jpg";
path = "anime/a_cartoon_of_a_street_with_buildings.jpeg";
themed = true;
invert = false;
};
desktop.theming.themes.catppuccin = {
enable = true;
flavor = lib.mkForce "latte";
};
};
};
# cosmic = {
# name = "Cosmic";
# type = "custom";
# config = { };
# extraConfig = {
# desktop = {
# initScript = ''
# ${pkgs.cosmic-session}/bin/cosmic-session
# '';
# session = {
# type = "wayland";
# desktop = "cosmic";
# };
# };
# # TODO: Remove everything below, it is here out of convenience and should be elsewhere
# xdg.portal = {
# enable = true;
# config.common.default = [
# "cosmic"
# "gtk"
# ];
# extraPortals = with pkgs; [
# xdg-desktop-portal-cosmic
# xdg-desktop-portal-gtk
# ];
# configPackages = lib.mkDefault (with pkgs; [ xdg-desktop-portal-cosmic ]);
# };
# home.packages = with pkgs; [
# adwaita-icon-theme
# alsa-utils
# cosmic-applets
# cosmic-applibrary
# cosmic-bg
# (cosmic-comp.override {
# useXWayland = false;
# })
# cosmic-edit
# cosmic-files
# cosmic-greeter
# cosmic-icons
# cosmic-idle
# cosmic-launcher
# cosmic-notifications
# cosmic-osd
# cosmic-panel
# cosmic-player
# cosmic-randr
# cosmic-screenshot
# cosmic-session
# cosmic-settings
# cosmic-settings-daemon
# cosmic-term
# cosmic-wallpapers
# cosmic-workspaces-epoch
# hicolor-icon-theme
# playerctl
# pop-icon-theme
# pop-launcher
# xdg-user-dirs
# xwayland
# cosmic-store
# # Fonts
# fira
# noto-fonts
# open-sans
# ];
# };
# };
gnome = {
name = "Gnome";
type = "custom";
config = { };
extraConfig = {
programs = {
gnome-shell.enable = true;
};
desktop = {
initScript = ''
${pkgs.gnome-session}/bin/gnome-session
'';
session = {
type = "wayland";
desktop = "GNOME";
# Color scheme
desktop.theming.background = {
# path = "unsorted/a_group_of_mountains_with_a_building_in_the_background.jpg";
# image = "anime/a_colorful_buildings_with_power_lines.jpg";
image = {
url = "https://i.postimg.cc/tTB3dM3T/1382899.png";
hash = "sha256-kStcwAtK2vxitU6uaQtZTA5iFS8k0iXkFwinY2M8wQE=";
};
# image = {
# url = "https://raw.githubusercontent.com/dharmx/walls/refs/heads/main/digital/a_couple_of_people_standing_on_a_mountain.png";
# hash = "sha256-SgKG090iSxwOPCGH/2ODPbwe275Zi5k0+d5Hso0mN7c=";
# };
themed = true;
inverted = false;
};
desktop.theming.themes.catppuccin = {
enable = true;
flavor = "mocha";
};
};
};
river-light = {
name = "River Light";
type = "custom";
config = { };
extraConfig = {
modules = {
# Desktop environment
river.enable = true;
waylock.enable = true;
waybar.enable = true;
mako.enable = true;
foot.enable = true;
rofi-rbw.enable = true;
};
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
xdg.portal = {
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
xdg.portal = {
enable = true;
config.common.default = [
"wlr"
"gtk"
];
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
# Color scheme
desktop.theming.background = {
# path = "unsorted/a_group_of_mountains_with_a_building_in_the_background.jpg";
# image = "anime/a_cartoon_of_a_street_with_buildings.jpeg";
image = {
url = "https://raw.githubusercontent.com/dharmx/walls/refs/heads/main/digital/a_drawing_of_a_spider_on_a_white_surface.png";
hash = "sha256-eCEjM7R9yeHNhZZtvHjrgkfwT25JA7FeMoVwnQ887CQ=";
};
themed = true;
inverted = false;
};
desktop.theming.themes.catppuccin = {
enable = true;
flavor = lib.mkForce "latte";
};
};
};
gnome = {
name = "Gnome";
type = "custom";
config = { };
extraConfig = {
programs = {
gnome-shell.enable = true;
};
desktop = {
initScript = ''
${pkgs.gnome-session}/bin/gnome-session
'';
session = {
type = "wayland";
desktop = "GNOME";
};
};
modules.river.enable = lib.mkForce false;
# # Theme configuration
# desktop.theming =
# let
# fontpkgs = config.desktop.theming.fonts.pkgs;
# in
# {
# # Fonts
# fonts.serif = fontpkgs."DejaVu Serif";
# fonts.sansSerif = fontpkgs."Adwaita Sans";
# fonts.monospace = fontpkgs."Adwaita Mono";
# fonts.emoji = fontpkgs."Noto Color Emoji";
# fonts.interface = fontpkgs."Adwaita Sans";
# fonts.extraFonts = [ ];
# # Color scheme
# themes.catppuccin = {
# enable = true;
# flavor = "mocha";
# };
# };
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
xdg.portal = {
enable = true;
config.common.default = [
"gnome"
"gtk"
];
extraPortals = with pkgs; [
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
];
};
home.packages = [
# Core utilities
pkgs.epiphany
pkgs.gnome-text-editor
pkgs.gnome-calendar
pkgs.gnome-characters
pkgs.gnome-clocks
pkgs.gnome-console
pkgs.gnome-contacts
pkgs.gnome-font-viewer
pkgs.gnome-logs
pkgs.gnome-maps
pkgs.gnome-music
pkgs.gnome-system-monitor
pkgs.gnome-weather
pkgs.loupe
pkgs.gnome-connections
pkgs.simple-scan
pkgs.snapshot
pkgs.totem
pkgs.yelp
# Optional packages
pkgs.adwaita-icon-theme
pkgs.gnome-backgrounds
pkgs.gnome-bluetooth
pkgs.gnome-color-manager
pkgs.gnome-control-center
pkgs.gnome-shell-extensions
pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in.
pkgs.gnome-user-docs
pkgs.glib # for gsettings program
pkgs.gnome-menus
pkgs.gtk3.out # for gtk-launch program
pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
pkgs.xdg-user-dirs-gtk # Used to create the default bookmarks
# Fonts
pkgs.cantarell-fonts
pkgs.dejavu_fonts
pkgs.source-code-pro # Default monospace font in 3.32
pkgs.source-sans
# Other stuff
pkgs.gnome-session
];
};
};
};
# Pipewire roc sink
xdg.configFile."pipewire/pipewire.conf.d/60-roc-sink.conf" = {
text = ''
context.modules = [
{
name = "libpipewire-module-roc-sink"
args = {
fec.code = "rs8m"
remote.ip = "10.20.60.251"
remote.source.port = 10001
remote.repair.port = 10002
sink.name = "Roc Sink"
sink.props.node.name = "roc-sink"
}
}
]
'';
};
# Enabled modules
modules = {
# Communication
whatsapp.enable = true;
discord.enable = true;
# Browser
firefox = {
enable = true;
default = false;
};
qutebrowser = {
enable = true;
default = true;
};
config.common.default = [
"gnome"
"gtk"
];
# Gaming
steam.enable = true;
# modrinth.enable = true;
# es-de.enable = true; # TODO: Fix, again
retroarch.enable = true;
ryujinx.enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
# Media
spotify.enable = true;
feishin.enable = true;
# Tools
git = {
enable = true;
user = "Jan-Bulthuis";
email = "git@bulthuis.dev";
# TODO: Move
ignores = [
".envrc"
".direnv"
"flake.nix"
"flake.lock"
];
};
btop.enable = true;
fish.enable = true;
bluetuith.enable = false;
winbox.enable = true;
obsidian.enable = true;
zathura.enable = true;
eduvpn.enable = true;
keyring.enable = true;
scripts.enable = true;
xpra = {
enable = true;
hosts = [
"mixer@10.20.60.251"
];
};
home.packages = [
# Core utilities
pkgs.baobab
pkgs.epiphany
pkgs.gnome-text-editor
pkgs.gnome-calculator
pkgs.gnome-calendar
pkgs.gnome-characters
pkgs.gnome-clocks
pkgs.gnome-console
pkgs.gnome-contacts
pkgs.gnome-font-viewer
pkgs.gnome-logs
pkgs.gnome-maps
pkgs.gnome-music
pkgs.gnome-system-monitor
pkgs.gnome-weather
pkgs.loupe
pkgs.nautilus
pkgs.gnome-connections
pkgs.simple-scan
pkgs.snapshot
pkgs.totem
pkgs.yelp
# Optional packages
pkgs.adwaita-icon-theme
pkgs.gnome-backgrounds
pkgs.gnome-bluetooth
pkgs.gnome-color-manager
pkgs.gnome-control-center
pkgs.gnome-shell-extensions
pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in.
pkgs.gnome-user-docs
pkgs.glib # for gsettings program
pkgs.gnome-menus
pkgs.gtk3.out # for gtk-launch program
pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
pkgs.xdg-user-dirs-gtk # Used to create the default bookmarks
# Development
neovim.enable = true;
vscode.enable = true;
docker.enable = true;
matlab.enable = true;
mathematica.enable = true;
# Games
pkgs.aisleriot
pkgs.atomix
pkgs.five-or-more
pkgs.four-in-a-row
pkgs.gnome-2048
pkgs.gnome-chess
pkgs.gnome-klotski
pkgs.gnome-mahjongg
pkgs.gnome-mines
pkgs.gnome-nibbles
pkgs.gnome-robots
pkgs.gnome-sudoku
pkgs.gnome-taquin
pkgs.gnome-tetravex
pkgs.hitori
pkgs.iagno
pkgs.lightsoff
pkgs.quadrapassel
pkgs.swell-foop
pkgs.tali
# Languages
haskell.enable = false;
js.enable = true;
nix.enable = true;
rust.enable = true;
python.enable = true;
cpp.enable = true;
tex.enable = true;
jupyter.enable = true;
# Fonts
pkgs.cantarell-fonts
pkgs.dejavu_fonts
pkgs.source-code-pro # Default monospace font in 3.32
pkgs.source-sans
# Other stuff
pkgs.gnome-session
# pkgs.gnome-session.sessions
];
# Enable unfree
unfree.enable = true;
};
};
};
# Pipewire roc sink
xdg.configFile."pipewire/pipewire.conf.d/60-roc-sink.conf" = {
text = ''
context.modules = [
{
name = "libpipewire-module-roc-sink"
args = {
fec.code = "rs8m"
remote.ip = "10.20.60.251"
remote.source.port = 10001
remote.repair.port = 10002
sink.name = "Roc Sink"
sink.props.node.name = "roc-sink"
}
}
]
'';
};
# Theme configuration
desktop.theming =
let
fontpkgs = config.desktop.theming.fonts.pkgs;
in
lib.mkDefault {
# Fonts
fonts.serif = fontpkgs."DejaVu Serif";
fonts.sansSerif = fontpkgs."DejaVu Sans";
fonts.monospace = fontpkgs."Dina";
fonts.emoji = fontpkgs."Noto Color Emoji";
fonts.interface = fontpkgs."Dina";
fonts.extraFonts = [ ];
# Enabled modules
modules = {
# Communication
whatsapp.enable = true;
discord.enable = true;
# Browser
firefox = {
enable = true;
default = false;
};
qutebrowser = {
enable = true;
default = true;
};
# Gaming
steam.enable = true;
# modrinth.enable = true;
# es-de.enable = true; # TODO: Fix, again
retroarch.enable = true;
ryujinx.enable = true;
# Media
spotify.enable = true;
feishin.enable = true;
# Tools
git = {
enable = true;
user = "Jan-Bulthuis";
email = "git@bulthuis.dev";
# TODO: Move
ignores = [
".envrc"
".direnv"
"flake.nix"
"flake.lock"
];
};
btop.enable = true;
fish.enable = true;
bluetuith.enable = false;
winbox.enable = true;
obsidian.enable = true;
zathura.enable = true;
eduvpn.enable = true;
keyring.enable = true;
scripts.enable = true;
xpra = {
enable = true;
hosts = [
"mixer@10.20.60.251"
];
};
# Development
neovim.enable = true;
vscode.enable = true;
docker.enable = true;
matlab.enable = true;
mathematica.enable = false;
# Languages
haskell.enable = false;
js.enable = true;
nix.enable = true;
rust.enable = true;
python.enable = true;
cpp.enable = true;
tex.enable = true;
jupyter.enable = true;
# Enable unfree
unfree.enable = true;
};
# Theme configuration
desktop.theming =
let
fontpkgs = config.desktop.theming.fonts.pkgs;
in
# Color scheme
themes.catppuccin = {
enable = true;
flavor = "mocha";
};
};
}
{
# Fonts
fonts.serif = fontpkgs."DejaVu Serif";
fonts.sansSerif = fontpkgs."DejaVu Sans";
fonts.monospace = fontpkgs."Dina";
fonts.emoji = fontpkgs."Noto Color Emoji";
fonts.interface = fontpkgs."Dina";
fonts.extraFonts = [ ];
# Default desktop environment
modules = {
# Desktop environment
river.enable = true;
waylock.enable = true;
waybar.enable = true;
mako.enable = true;
foot.enable = true;
rofi-rbw.enable = true;
};
# TODO: Remove everything below, it is here out of convenience and should be elsewhere
xdg.portal = {
enable = true;
config.common.default = lib.mkDefault [
"wlr"
"gtk"
];
extraPortals =
with pkgs;
lib.mkDefault [
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
];
};
# Color scheme
themes.catppuccin = {
desktop.theming.background = lib.mkDefault {
# path = "unsorted/a_group_of_mountains_with_a_building_in_the_background.jpg";
# image = "anime/a_colorful_buildings_with_power_lines.jpg";
image = {
url = "https://i.postimg.cc/tTB3dM3T/1382899.png";
hash = "sha256-kStcwAtK2vxitU6uaQtZTA5iFS8k0iXkFwinY2M8wQE=";
};
# image = {
# url = "https://raw.githubusercontent.com/dharmx/walls/refs/heads/main/digital/a_couple_of_people_standing_on_a_mountain.png";
# hash = "sha256-SgKG090iSxwOPCGH/2ODPbwe275Zi5k0+d5Hso0mN7c=";
# };
themed = true;
inverted = false;
};
desktop.theming.themes.catppuccin = {
enable = true;
flavor = "mocha";
};
};
};
}
);
}