parent
c20ec51142
commit
ab8bb48feb
137 changed files with 184 additions and 10725 deletions
nixosModules/desktop
|
@ -36,14 +36,6 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
ags.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether we want to enable AGS for the DE shell.
|
||||
'';
|
||||
};
|
||||
|
||||
ags-v2.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
|
@ -92,6 +84,14 @@ in {
|
|||
};
|
||||
|
||||
displayManager = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether we want to enable the Display Manager.
|
||||
'';
|
||||
};
|
||||
|
||||
duplicateScreen = mkOption {
|
||||
type = types.bool;
|
||||
description = ''
|
||||
|
|
|
@ -7,7 +7,6 @@ self: {
|
|||
inherit (self.inputs) hyprgrass hyprland hyprland-plugins;
|
||||
in {
|
||||
imports = [
|
||||
(import ../../ags self)
|
||||
(import ../../ags-v2 self)
|
||||
|
||||
./modules/dconf.nix
|
||||
|
|
|
@ -46,7 +46,6 @@ in {
|
|||
hyprgrass-bind = [
|
||||
", edge:u:d, exec, ags request 'open win-applauncher'"
|
||||
", edge:d:u, exec, ags request 'osk open'"
|
||||
", swipe:3:d, exec, hyprctl dispatch hyprexpo:expo on"
|
||||
];
|
||||
hyprgrass-bindm = [", longpress:2, movewindow"];
|
||||
};
|
||||
|
|
|
@ -12,19 +12,8 @@
|
|||
hmCfg = config.home-manager.users.${cfg.user};
|
||||
hyprPkg = hmCfg.wayland.windowManager.hyprland.finalPackage;
|
||||
|
||||
lockPkg =
|
||||
if cfg.ags.enable
|
||||
then
|
||||
pkgs.writeShellApplication {
|
||||
name = "lock";
|
||||
runtimeInputs = [hmCfg.programs.ags.finalPackage];
|
||||
|
||||
text = ''
|
||||
ags -r 'Tablet.setLaptopMode()'
|
||||
ags -b lockscreen -c /home/${cfg.user}/.config/ags/lockscreen.js
|
||||
'';
|
||||
}
|
||||
else hmCfg.programs.ags-v2.lockPkg;
|
||||
# See nixosModules/ags-v2/packages.nix
|
||||
lockPkg = hmCfg.programs.ags-v2.lockPkg;
|
||||
|
||||
runInDesktop = pkgs.writeShellApplication {
|
||||
name = "runInDesktop";
|
||||
|
|
|
@ -3,62 +3,24 @@ self: {
|
|||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
# TODO: clean this up
|
||||
inherit (self.inputs) agsV2 gtk-session-lock;
|
||||
in {
|
||||
}: {
|
||||
config = let
|
||||
# Libs
|
||||
inherit (lib) attrValues boolToString removeAttrs;
|
||||
inherit (lib) removePrefix;
|
||||
|
||||
# Cfg info
|
||||
inherit (config.networking) hostName;
|
||||
cfgDesktop = config.roles.desktop;
|
||||
cfg = config.roles.desktop;
|
||||
hmCfg = config.home-manager.users.${cfg.user};
|
||||
|
||||
# Astal libraries
|
||||
gtkSessionLock = gtk-session-lock.packages.${pkgs.system}.default;
|
||||
agsV2Packages = agsV2.packages.${pkgs.system};
|
||||
astalLibs = attrValues (removeAttrs agsV2.inputs.astal.packages.${pkgs.system} ["docs" "gjs"]) ++ [gtkSessionLock];
|
||||
|
||||
# Final ags package
|
||||
agsFull = agsV2Packages.ags.override {extraPackages = astalLibs;};
|
||||
ags = hmCfg.programs.ags-v2.package;
|
||||
hyprland = hmCfg.wayland.windowManager.hyprland.finalPackage;
|
||||
|
||||
agsConfig = let
|
||||
tsconfig = pkgs.writers.writeJSON "tsconfig.json" {
|
||||
"$schema" = "https://json.schemastore.org/tsconfig";
|
||||
"compilerOptions" = {
|
||||
"experimentalDecorators" = true;
|
||||
"strict" = true;
|
||||
"target" = "ES2023";
|
||||
"moduleResolution" = "Bundler";
|
||||
"jsx" = "react-jsx";
|
||||
"jsxImportSource" = "${agsV2Packages.gjs}/share/astal/gjs/gtk3";
|
||||
"paths" = {
|
||||
"astal" = ["${agsV2Packages.gjs}/share/astal/gjs"];
|
||||
"astal/*" = ["${agsV2Packages.gjs}/share/astal/gjs/*"];
|
||||
};
|
||||
"skipLibCheck" = true;
|
||||
"module" = "ES2022";
|
||||
"lib" = ["ES2023"];
|
||||
};
|
||||
};
|
||||
homeFiles = config.home-manager.users.${cfg.user}.home.file;
|
||||
agsDir = "${removePrefix "/home/${cfg.user}/" config.environment.variables.FLAKE}/nixosModules/ags-v2/config";
|
||||
|
||||
varsTs =
|
||||
pkgs.writeText "vars.ts"
|
||||
# javascript
|
||||
''
|
||||
export default {
|
||||
mainMonitor: '${cfgDesktop.mainMonitor}',
|
||||
dupeLockscreen: ${boolToString cfgDesktop.displayManager.duplicateScreen},
|
||||
hasFprintd: ${boolToString (hostName == "wim")},
|
||||
};
|
||||
'';
|
||||
|
||||
flakeDir = config.environment.variables.FLAKE;
|
||||
modulesDir = "${lib.removePrefix "/home/${cfg.user}/" flakeDir}/nixosModules";
|
||||
nodeModules =
|
||||
config.home-manager.users.${cfg.user}.home.file."${modulesDir}/ags/config/node_modules".source
|
||||
or config.home-manager.users.${cfg.user}.home.file."${modulesDir}/ags-v2/config/node_modules".source;
|
||||
nodeModules = homeFiles."${agsDir}/node_modules".source;
|
||||
tsconfig = homeFiles."${agsDir}/tsconfig.json".source;
|
||||
varsTs = homeFiles."${agsDir}/widgets/lockscreen/vars.ts".source;
|
||||
in
|
||||
pkgs.runCommandLocal "agsConfig" {} ''
|
||||
cp -ar ${tsconfig} ./tsconfig.json
|
||||
|
@ -66,21 +28,18 @@ in {
|
|||
chmod +w -R ./.
|
||||
cp -ar ${varsTs} ./widgets/lockscreen/vars.ts
|
||||
cp -ar ${nodeModules} ./node_modules
|
||||
${agsFull}/bin/ags bundle ./app.ts $out
|
||||
${ags}/bin/ags bundle ./app.ts $out
|
||||
'';
|
||||
|
||||
cfg = config.roles.desktop;
|
||||
|
||||
hyprland =
|
||||
config
|
||||
.home-manager
|
||||
.users
|
||||
.${cfg.user}
|
||||
.wayland
|
||||
.windowManager
|
||||
.hyprland
|
||||
.finalPackage;
|
||||
in {
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.ags-v2.enable;
|
||||
message = ''
|
||||
The Display Manager requires AGSv2 to be enabled.
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
# Add home folder for home-manager to work
|
||||
users.users.greeter = {
|
||||
home = "/var/lib/greeter";
|
||||
|
@ -95,7 +54,7 @@ in {
|
|||
name = "agsGreeter";
|
||||
|
||||
runtimeInputs = [
|
||||
agsFull
|
||||
ags
|
||||
hyprland
|
||||
];
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
self: {
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
|
@ -9,6 +10,8 @@ self: {
|
|||
];
|
||||
|
||||
config = let
|
||||
inherit (lib) mkIf;
|
||||
|
||||
cfg = config.roles.desktop;
|
||||
|
||||
hyprland =
|
||||
|
@ -26,30 +29,31 @@ self: {
|
|||
trap 'systemctl --user stop hyprland-session.target; sleep 1' EXIT
|
||||
exec Hyprland >/dev/null
|
||||
'');
|
||||
in {
|
||||
services = {
|
||||
displayManager.sessionPackages = [hyprland];
|
||||
in
|
||||
mkIf cfg.displayManager.enable {
|
||||
services = {
|
||||
displayManager.sessionPackages = [hyprland];
|
||||
|
||||
greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = cmd;
|
||||
user = "greeter";
|
||||
};
|
||||
greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = cmd;
|
||||
user = "greeter";
|
||||
};
|
||||
|
||||
initial_session = {
|
||||
command = cmd;
|
||||
user = cfg.user;
|
||||
initial_session = {
|
||||
command = cmd;
|
||||
user = cfg.user;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# unlock GPG keyring on login
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||
};
|
||||
# unlock GPG keyring on login
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||
};
|
||||
|
||||
# For accurate stack trace
|
||||
_file = ./default.nix;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue