diff --git a/containers/common-config/wayland.nix b/containers/common-config/wayland.nix new file mode 100644 index 00000000..5e78ad0b --- /dev/null +++ b/containers/common-config/wayland.nix @@ -0,0 +1,19 @@ +{ + environment.sessionVariables = { + WAYLAND_DISPLAY = "wayland-1"; + QT_QPA_PLATFORM = "wayland"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + SDL_VIDEODRIVER = "wayland"; + CLUTTER_BACKEND = "wayland"; + MOZ_ENABLE_WAYLAND = "1"; + XDG_RUNTIME_DIR = "/run/user/1000"; + DISPLAY = ":0"; + }; + + services.xserver.enable = true; + + hardware.opengl = { + enable = true; + driSupport32Bit = true; + }; +} diff --git a/containers/common-container/wayland.nix b/containers/common-container/wayland.nix new file mode 100644 index 00000000..236019b7 --- /dev/null +++ b/containers/common-container/wayland.nix @@ -0,0 +1,14 @@ +{ + bindMounts = { + waylandDisplay = rec { + hostPath = "/run/user/1000"; + mountPoint = hostPath; + }; + + x11Display = rec { + hostPath = "/tmp/.X11-unix"; + mountPoint = hostPath; + isReadOnly = true; + }; + }; +} diff --git a/containers/gui.nix b/containers/gui.nix new file mode 100644 index 00000000..be0c1869 --- /dev/null +++ b/containers/gui.nix @@ -0,0 +1,64 @@ +{ home-manager, ... }: +let + VARIABLES = import ../src/variables.nix; +in +{ + containers.gui = { + imports = [ + ./common-container/wayland.nix + ]; + + privateNetwork = true; + ephemeral = true; + autoStart = true; + + bindMounts = { + "/mnt" = { + hostPath = "/home/${VARIABLES.username}/containers/gui"; + isReadOnly = false; + }; + }; + + config = { pkgs, lib, ... }: { + imports = [ + home-manager.nixosModules.home-manager + ./common-config/wayland.nix + ]; + + environment.systemPackages = with pkgs; [ + audacity # Audio editing + gimp # Video editing + anki # Spaced repetition + sqlitebrowser # SQL + kanjidraw # Kanji draw + kitty # TODO: import common module + ]; + + users = { + mutableUsers = false; + allowNoPasswordLogin = true; + + users.user = { + isNormalUser = true; + home = "/home/user"; + }; + }; + + #home-manager.sharedModules = [{ + #}]; + + home-manager.users.user = { pkgs, ... }: { + home.packages = [ pkgs.atool pkgs.httpie ]; + home.stateVersion = VARIABLES.stateVersion; + }; + + environment = { + variables = { TERM = "xterm-kitty"; }; + defaultPackages = [ ]; + }; + + # environment.systemPackages = with pkgs; [ kitty ]; + system.stateVersion = VARIABLES.stateVersion; + }; + }; +}