diff --git a/roles/kde/sddm.nix b/roles/kde/sddm.nix index 4a52489..9b7f8c9 100644 --- a/roles/kde/sddm.nix +++ b/roles/kde/sddm.nix @@ -45,7 +45,6 @@ in { # Enable SDDM. services.displayManager.sddm = { enable = true; - wayland.enable = true; # theme = "sugar-candy"; settings = { General = {Numlock = "off";}; diff --git a/roles/school/default.nix b/roles/school/default.nix index dc31263..515d2d6 100644 --- a/roles/school/default.nix +++ b/roles/school/default.nix @@ -1,5 +1,6 @@ {...}: { imports = [ ./services + ./programs ]; } diff --git a/roles/school/programs/default.nix b/roles/school/programs/default.nix new file mode 100644 index 0000000..24452c0 --- /dev/null +++ b/roles/school/programs/default.nix @@ -0,0 +1,13 @@ +{pkgs, ...}: { + imports = [ + ./virtualbox.nix + ./jetbrains.nix + ./vscode.nix + ./helix.nix + ./unity.nix + ]; + + environment.systemPackages = with pkgs; [ + dia + ]; +} diff --git a/roles/school/programs/helix.nix b/roles/school/programs/helix.nix new file mode 100644 index 0000000..e16ddf0 --- /dev/null +++ b/roles/school/programs/helix.nix @@ -0,0 +1,10 @@ +{pkgs, ...}: { + home-manager.users.toast = { + programs.helix = { + extraPackages = with pkgs; [ + nodePackages.typescript-language-server + omnisharp-roslyn + ]; + }; + }; +} diff --git a/roles/school/programs/jetbrains.nix b/roles/school/programs/jetbrains.nix new file mode 100644 index 0000000..57fe938 --- /dev/null +++ b/roles/school/programs/jetbrains.nix @@ -0,0 +1,19 @@ +{pkgs, ...}: +with pkgs; { + environment.systemPackages = with jetbrains; [ + idea-ultimate + scenebuilder + datagrip + ]; + + home-manager.users.toast = { + /* + If you use programs.java.enable intellij picks up the jdk package directly, which is not ideal + This adds the jdks I want to use to a directory intellij expects jdks to be + */ + home.file.".jdks/jdk8".source = "${pkgs.jdk8}/lib/openjdk"; + home.file.".jdks/jdk17".source = let + jdk17 = pkgs.jdk17.override {enableJavaFX = true;}; + in "${jdk17}/lib/openjdk"; + }; +} diff --git a/roles/school/programs/unity.nix b/roles/school/programs/unity.nix new file mode 100644 index 0000000..b30daf4 --- /dev/null +++ b/roles/school/programs/unity.nix @@ -0,0 +1,8 @@ +{pkgs, ...}: { + home-manager.users.toast = { + home.packages = with pkgs; [ + unityhub + jetbrains.rider + ]; + }; +} diff --git a/roles/school/programs/virtualbox.nix b/roles/school/programs/virtualbox.nix new file mode 100644 index 0000000..58e7ff1 --- /dev/null +++ b/roles/school/programs/virtualbox.nix @@ -0,0 +1,15 @@ +{...}: { + # Need to use visual studio 2019 :( + virtualisation.virtualbox.host = { + enable = true; + }; + home-manager.sharedModules = [ + { + systemd.user.tmpfiles.rules = [ + "d '/%h/VirtualBox VMs'" + "h '/%h/VirtualBox VMs' - - - - C " + ]; + } + ]; + users.users.toast.extraGroups = ["vboxusers"]; +} diff --git a/roles/school/programs/vscode.nix b/roles/school/programs/vscode.nix new file mode 100644 index 0000000..e39e633 --- /dev/null +++ b/roles/school/programs/vscode.nix @@ -0,0 +1,23 @@ +{ + pkgs, + lib, + flakeSelf, + ... +}: let + inputs = flakeSelf.inputs; +in { + home-manager.users.toast.programs.vscode = { + # The redhat xml extension needs an fhs environment + package = lib.mkForce pkgs.vscodium-fhs; + extensions = with inputs.vscode-extensions.extensions.x86_64-linux; [ + open-vsx.redhat.vscode-xml + open-vsx.tomoki1207.pdf + open-vsx.ms-vscode.live-server + open-vsx.ecmel.vscode-html-css + open-vsx.angular.ng-template + ]; + userSettings = { + redhat.telemetry.enabled = false; + }; + }; +} diff --git a/roles/school/services/default.nix b/roles/school/services/default.nix index 24b067d..350d7bd 100644 --- a/roles/school/services/default.nix +++ b/roles/school/services/default.nix @@ -1,5 +1,8 @@ {...}: { imports = [ ./syncthing.nix + ./mysql.nix + ./xampp.nix + ./mongodb.nix ]; } diff --git a/roles/school/services/mongodb.nix b/roles/school/services/mongodb.nix new file mode 100644 index 0000000..42c12fc --- /dev/null +++ b/roles/school/services/mongodb.nix @@ -0,0 +1,34 @@ +{ + config, + pkgs, + lib, + ... +}: { + services.mongodb = { + enable = true; + package = pkgs.mongodb-5_0; + user = "toast"; + }; + + # Don't autostart MySQL + systemd.services.mongodb.wantedBy = lib.mkForce []; + + # Allow regular users to start/stop mongodb + # https://stackoverflow.com/questions/61480914/using-policykit-to-allow-non-root-users-to-start-and-stop-a-service + security.polkit.extraConfig = '' + polkit.addRule(function(action, subject) { + if ( + action.id == "org.freedesktop.systemd1.manage-units" && + action.lookup("unit") == "mongodb.service" && + subject.user == "${config.services.mongodb.user}" + ) + { + return polkit.Result.YES; + } + }) + ''; + + environment.systemPackages = with pkgs; [ + mongosh + ]; +} diff --git a/roles/school/services/mysql.nix b/roles/school/services/mysql.nix new file mode 100644 index 0000000..fbbd3f9 --- /dev/null +++ b/roles/school/services/mysql.nix @@ -0,0 +1,36 @@ +{ + config, + pkgs, + lib, + ... +}: { + services.mysql = { + enable = true; + package = pkgs.mysql80; + user = "toast"; + group = "users"; + }; + + # Don't autostart MySQL + systemd.services.mysql.wantedBy = lib.mkForce []; + + # Allow regular users to start/stop mysql + # https://stackoverflow.com/questions/61480914/using-policykit-to-allow-non-root-users-to-start-and-stop-a-service + security.polkit.extraConfig = '' + polkit.addRule(function(action, subject) { + if ( + action.id == "org.freedesktop.systemd1.manage-units" && + action.lookup("unit") == "mysql.service" && + subject.user == "${config.services.mysql.user}" + ) + { + return polkit.Result.YES; + } + }) + ''; + + environment.systemPackages = with pkgs; [ + mysql-workbench + mycli + ]; +} diff --git a/roles/school/services/xampp.nix b/roles/school/services/xampp.nix new file mode 100644 index 0000000..26ee73b --- /dev/null +++ b/roles/school/services/xampp.nix @@ -0,0 +1,34 @@ +{pkgs, ...}: let + booDark = pkgs.fetchzip { + url = "https://github.com/adorade/boodark/releases/download/v1.1.1/boodark-v1.1.1.zip"; + hash = "sha256-GE/FtFlU6A4I9sRyjMhQIidGpDLD99Wzzngz3QI/rSo="; + }; +in { + # I tried setting up httpd + php in class but I just gave up + virtualisation.oci-containers = { + containers."xampp" = { + autoStart = false; + image = "tomsik68/xampp"; + #user = "${toString users.users.atfc.uid}:${toString users.groups.minecraft.gid}"; + volumes = [ + "xampp-mysql:/opt/lampp/var/mysql" + # No dark mode installed by default :( + "${booDark}:/opt/lampp/phpmyadmin/themes/booDark" + ]; + ports = ["41061:22" "41062:80"]; + }; + }; + + security.polkit.extraConfig = '' + polkit.addRule(function(action, subject) { + if ( + action.id == "org.freedesktop.systemd1.manage-units" && + action.lookup("unit") == "podman-xampp.service" && + subject.user == "toast" + ) + { + return polkit.Result.YES; + } + }) + ''; +}