feat(ags): update to official agsV2
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
5d27b3d975
commit
f3e06554e4
105 changed files with 233 additions and 240 deletions
|
@ -4,9 +4,9 @@
|
||||||
|
|
||||||
You might find it weird that most of my config is written in TypeScript.
|
You might find it weird that most of my config is written in TypeScript.
|
||||||
That's because all my desktops run
|
That's because all my desktops run
|
||||||
[AGSv2](https://github.com/Aylur/ags/tree/v2)
|
[AGS](https://github.com/Aylur/ags)
|
||||||
for UI. Click on
|
for UI. Click on
|
||||||
[this](https://git.nelim.org/matt1432/nixos-configs/src/branch/master/nixosModules/ags-v2)
|
[this](https://git.nelim.org/matt1432/nixos-configs/src/branch/master/nixosModules/ags)
|
||||||
to see my configuration.
|
to see my configuration.
|
||||||
|
|
||||||
I'm also a victim of Stockholm syndrome at this point and make my scripts
|
I'm also a victim of Stockholm syndrome at this point and make my scripts
|
||||||
|
|
|
@ -17,7 +17,7 @@ This directory encompasses every device's main configuration file.
|
||||||
|
|
||||||
## Global Vars
|
## Global Vars
|
||||||
|
|
||||||
In every device's `default.nix`, you'll find these [settings](https://git.nelim.org/matt1432/nixos-configs/src/branch/master/common/vars.nix)
|
In every device's `default.nix`, you'll find these [settings](https://git.nelim.org/matt1432/nixos-configs/src/branch/master/common/vars/default.nix)
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
# $FLAKE/devices/<name>/default.nix
|
# $FLAKE/devices/<name>/default.nix
|
||||||
|
|
|
@ -61,7 +61,7 @@ in {
|
||||||
roles.desktop = {
|
roles.desktop = {
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
|
|
||||||
ags-v2.enable = true;
|
ags.enable = true;
|
||||||
mainMonitor = "desc:GIGA-BYTE TECHNOLOGY CO. LTD. G27QC 0x00000B1D";
|
mainMonitor = "desc:GIGA-BYTE TECHNOLOGY CO. LTD. G27QC 0x00000B1D";
|
||||||
displayManager.duplicateScreen = false;
|
displayManager.duplicateScreen = false;
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ in {
|
||||||
roles.desktop = {
|
roles.desktop = {
|
||||||
user = mainUser;
|
user = mainUser;
|
||||||
|
|
||||||
ags-v2.enable = true;
|
ags.enable = true;
|
||||||
mainMonitor = "eDP-1";
|
mainMonitor = "eDP-1";
|
||||||
isLaptop = true;
|
isLaptop = true;
|
||||||
isTouchscreen = true;
|
isTouchscreen = true;
|
||||||
|
|
BIN
flake.lock
BIN
flake.lock
Binary file not shown.
BIN
flake.nix
BIN
flake.nix
Binary file not shown.
15
inputs.nix
15
inputs.nix
|
@ -160,19 +160,18 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
agsInputs = {
|
agsInputs = {
|
||||||
agsV2 = mkDep {
|
|
||||||
owner = "Aylur";
|
|
||||||
repo = "ags";
|
|
||||||
ref = "v2";
|
|
||||||
|
|
||||||
inputs.astal.follows = "astal";
|
|
||||||
};
|
|
||||||
|
|
||||||
astal = mkDep {
|
astal = mkDep {
|
||||||
owner = "Aylur";
|
owner = "Aylur";
|
||||||
repo = "astal";
|
repo = "astal";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ags = mkDep {
|
||||||
|
owner = "Aylur";
|
||||||
|
repo = "ags";
|
||||||
|
|
||||||
|
inputs.astal.follows = "astal";
|
||||||
|
};
|
||||||
|
|
||||||
gtk-session-lock = mkDep {
|
gtk-session-lock = mkDep {
|
||||||
owner = "Cu3PO42";
|
owner = "Cu3PO42";
|
||||||
repo = "gtk-session-lock";
|
repo = "gtk-session-lock";
|
||||||
|
|
|
@ -8,4 +8,4 @@ This directory encompasses every derivation scopes for packages exposed by my fl
|
||||||
| --------------- | ----------- |
|
| --------------- | ----------- |
|
||||||
| `dracula` | Themes for many apps from the [Dracula GitHub Org](https://github.com/dracula) |
|
| `dracula` | Themes for many apps from the [Dracula GitHub Org](https://github.com/dracula) |
|
||||||
| `firefoxAddons` | Firefox extensions updated with [mozilla-addons-to-nix](https://git.sr.ht/~rycee/mozilla-addons-to-nix) |
|
| `firefoxAddons` | Firefox extensions updated with [mozilla-addons-to-nix](https://git.sr.ht/~rycee/mozilla-addons-to-nix) |
|
||||||
| `mpvScripts` | MPV scripts that I use that are not in nixpkgs |
|
| `mpvScripts` | MPV scripts I use that are not in nixpkgs |
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
self: {
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config = let
|
|
||||||
inherit (lib) hasPrefix mkIf removePrefix;
|
|
||||||
|
|
||||||
# Configs
|
|
||||||
cfgDesktop = config.roles.desktop;
|
|
||||||
flakeDir = config.environment.variables.FLAKE;
|
|
||||||
|
|
||||||
agsConfigDir = "${removePrefix "/home/${cfgDesktop.user}/" flakeDir}/nixosModules/ags-v2/config";
|
|
||||||
in
|
|
||||||
mkIf cfgDesktop.ags-v2.enable {
|
|
||||||
assertions = [
|
|
||||||
{
|
|
||||||
assertion = hasPrefix "/home/${cfgDesktop.user}/" flakeDir;
|
|
||||||
message = ''
|
|
||||||
Your $FLAKE environment variable needs to point to a directory in
|
|
||||||
the main users' home to use the AGS module.
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Machine config
|
|
||||||
security.pam.services.astal-auth = {};
|
|
||||||
services.upower.enable = true;
|
|
||||||
|
|
||||||
home-manager.users.${cfgDesktop.user}.imports = [
|
|
||||||
(import ./packages.nix {inherit self agsConfigDir;})
|
|
||||||
./hyprland.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# For accurate stack trace
|
|
||||||
_file = ./default.nix;
|
|
||||||
}
|
|
|
@ -1,150 +0,0 @@
|
||||||
{
|
|
||||||
self,
|
|
||||||
agsConfigDir,
|
|
||||||
}: {
|
|
||||||
lib,
|
|
||||||
osConfig,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# Inputs
|
|
||||||
inherit (self.inputs) agsV2 gtk-session-lock;
|
|
||||||
|
|
||||||
# Libs
|
|
||||||
inherit (lib) attrValues boolToString optionals removeAttrs;
|
|
||||||
|
|
||||||
# Cfg info
|
|
||||||
inherit (osConfig.networking) hostName;
|
|
||||||
cfgDesktop = osConfig.roles.desktop;
|
|
||||||
fullConfPath = "/home/${cfgDesktop.user}/${agsConfigDir}";
|
|
||||||
|
|
||||||
# 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;};
|
|
||||||
in {
|
|
||||||
options.programs.ags-v2 = {
|
|
||||||
package = lib.mkOption {
|
|
||||||
type = with lib.types; nullOr package;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
lockPkg = lib.mkOption {
|
|
||||||
type = with lib.types; nullOr package;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
# Make these accessible outside these files
|
|
||||||
programs.ags-v2 = {
|
|
||||||
package = agsFull;
|
|
||||||
|
|
||||||
lockPkg = pkgs.writeShellApplication {
|
|
||||||
name = "lock";
|
|
||||||
runtimeInputs = [agsFull];
|
|
||||||
text = ''
|
|
||||||
export CONF="lock"
|
|
||||||
|
|
||||||
if [ "$#" == 0 ]; then
|
|
||||||
exec ags run ${fullConfPath}
|
|
||||||
else
|
|
||||||
exec ags "$@" -i lock
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
packages =
|
|
||||||
[
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "ags";
|
|
||||||
runtimeInputs = [agsFull];
|
|
||||||
text = ''
|
|
||||||
export CONF="${hostName}"
|
|
||||||
|
|
||||||
if [ "$#" == 0 ]; then
|
|
||||||
exec ags run ${fullConfPath}
|
|
||||||
else
|
|
||||||
exec ags "$@"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "agsConf";
|
|
||||||
runtimeInputs = [agsFull];
|
|
||||||
text = ''
|
|
||||||
export CONF="$1"
|
|
||||||
exec ${agsFull}/bin/ags run ${fullConfPath}
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
]
|
|
||||||
++ (builtins.attrValues {
|
|
||||||
inherit
|
|
||||||
(pkgs)
|
|
||||||
playerctl
|
|
||||||
pavucontrol # TODO: replace with ags widget
|
|
||||||
;
|
|
||||||
})
|
|
||||||
++ (optionals cfgDesktop.isTouchscreen (builtins.attrValues {
|
|
||||||
inherit
|
|
||||||
(pkgs)
|
|
||||||
ydotool
|
|
||||||
;
|
|
||||||
}));
|
|
||||||
|
|
||||||
file = let
|
|
||||||
inherit
|
|
||||||
(import "${self}/lib" {inherit pkgs self;})
|
|
||||||
buildNodeModules
|
|
||||||
buildGirTypes
|
|
||||||
;
|
|
||||||
in (
|
|
||||||
(buildGirTypes {
|
|
||||||
pname = "agsV2";
|
|
||||||
configPath = "${agsConfigDir}/@girs";
|
|
||||||
packages = astalLibs;
|
|
||||||
})
|
|
||||||
// {
|
|
||||||
"${agsConfigDir}/node_modules".source =
|
|
||||||
buildNodeModules ./config "sha256-cyVdjRV1o/UvAPzXigNzXATq1mRmsXhDqnG4wnBzSXE=";
|
|
||||||
|
|
||||||
"${agsConfigDir}/tsconfig.json".source = 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"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"${agsConfigDir}/widgets/lockscreen/vars.ts".text =
|
|
||||||
# javascript
|
|
||||||
''
|
|
||||||
export default {
|
|
||||||
mainMonitor: '${cfgDesktop.mainMonitor}',
|
|
||||||
dupeLockscreen: ${boolToString cfgDesktop.displayManager.duplicateScreen},
|
|
||||||
hasFprintd: ${boolToString (hostName == "wim")},
|
|
||||||
};
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# For accurate stack trace
|
|
||||||
_file = ./default.nix;
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
# Moving to [AGSv2](https://github.com/Aylur/ags/tree/v2)
|
|
|
@ -80,13 +80,11 @@ export const hyprMessage = (message: string) => new Promise<string>((
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
export const centerCursor = async(): Promise<void> => {
|
export const centerCursor = (): void => {
|
||||||
let x: number;
|
let x: number;
|
||||||
let y: number;
|
let y: number;
|
||||||
const monitor = (JSON.parse(await hyprMessage('j/monitors')) as AstalHyprland.Monitor[])
|
const monitor = Hyprland.get_monitors().find((m) => m.focused) as AstalHyprland.Monitor;
|
||||||
.find((m) => m.focused) as AstalHyprland.Monitor;
|
|
||||||
|
|
||||||
// @ts-expect-error this should be good
|
|
||||||
switch (monitor.transform) {
|
switch (monitor.transform) {
|
||||||
case 1:
|
case 1:
|
||||||
x = monitor.x - (monitor.height / 2);
|
x = monitor.x - (monitor.height / 2);
|
||||||
|
@ -109,7 +107,7 @@ export const centerCursor = async(): Promise<void> => {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
await hyprMessage(`dispatch movecursor ${x} ${y}`);
|
hyprMessage(`dispatch movecursor ${x} ${y}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const closeAll = () => {
|
export const closeAll = () => {
|
Binary file not shown.
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "ags-v2",
|
"name": "ags",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"main": "app.ts",
|
"main": "app.ts",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -7,7 +7,7 @@
|
||||||
"@stylistic/eslint-plugin": "2.10.1",
|
"@stylistic/eslint-plugin": "2.10.1",
|
||||||
"@types/node": "22.9.0",
|
"@types/node": "22.9.0",
|
||||||
"eslint": "9.14.0",
|
"eslint": "9.14.0",
|
||||||
"eslint-plugin-jsdoc": "50.4.3",
|
"eslint-plugin-jsdoc": "50.5.0",
|
||||||
"fzf": "0.5.2",
|
"fzf": "0.5.2",
|
||||||
"jiti": "2.4.0",
|
"jiti": "2.4.0",
|
||||||
"typescript-eslint": "8.14.0"
|
"typescript-eslint": "8.14.0"
|
|
@ -2,10 +2,9 @@ import { App, Astal, Gtk, Widget } from 'astal/gtk3';
|
||||||
import { property, register } from 'astal/gobject';
|
import { property, register } from 'astal/gobject';
|
||||||
import { Binding, idle } from 'astal';
|
import { Binding, idle } from 'astal';
|
||||||
|
|
||||||
import { hyprMessage } from '../../lib';
|
import { get_hyprland_monitor, hyprMessage } from '../../lib';
|
||||||
|
|
||||||
/* Types */
|
/* Types */
|
||||||
import AstalHyprland from 'gi://AstalHyprland';
|
|
||||||
type CloseType = 'none' | 'stay' | 'released' | 'clicked';
|
type CloseType = 'none' | 'stay' | 'released' | 'clicked';
|
||||||
type HyprTransition = 'slide' | 'slide top' | 'slide bottom' | 'slide left' |
|
type HyprTransition = 'slide' | 'slide top' | 'slide bottom' | 'slide left' |
|
||||||
'slide right' | 'popin' | 'fade';
|
'slide right' | 'popin' | 'fade';
|
||||||
|
@ -88,15 +87,7 @@ export class PopupWindow extends Widget.Window {
|
||||||
const monitor = this.gdkmonitor ??
|
const monitor = this.gdkmonitor ??
|
||||||
this.get_display().get_monitor_at_point(alloc.x, alloc.y);
|
this.get_display().get_monitor_at_point(alloc.x, alloc.y);
|
||||||
|
|
||||||
// FIXME: switch back to this when it's fixed upstream
|
const transform = get_hyprland_monitor(monitor)?.transform;
|
||||||
// const transform = get_hyprland_monitor(monitor)?.transform;
|
|
||||||
const manufacturer = monitor.manufacturer?.replace(',', '');
|
|
||||||
const model = monitor.model?.replace(',', '');
|
|
||||||
const start = `${manufacturer} ${model}`;
|
|
||||||
|
|
||||||
const transform = (JSON.parse(await hyprMessage('j/monitors')) as AstalHyprland.Monitor[])
|
|
||||||
// @ts-expect-error this will be fixed soon
|
|
||||||
.find((m) => m.description?.startsWith(start))?.transform;
|
|
||||||
|
|
||||||
let width: number;
|
let width: number;
|
||||||
|
|
62
nixosModules/ags/default.nix
Normal file
62
nixosModules/ags/default.nix
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
self: {
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) hasPrefix mkIf removePrefix;
|
||||||
|
|
||||||
|
# Configs
|
||||||
|
cfgDesktop = config.roles.desktop;
|
||||||
|
flakeDir = config.environment.variables.FLAKE;
|
||||||
|
|
||||||
|
agsConfigDir = "${removePrefix "/home/${cfgDesktop.user}/" flakeDir}/nixosModules/ags/config";
|
||||||
|
|
||||||
|
hmOpts = {lib, ...}: {
|
||||||
|
options.programs.ags = {
|
||||||
|
package = lib.mkOption {
|
||||||
|
type = with lib.types; nullOr package;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
astalLibs = lib.mkOption {
|
||||||
|
type = with lib.types; nullOr (listOf package);
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
lockPkg = lib.mkOption {
|
||||||
|
type = with lib.types; nullOr package;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
configDir = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = agsConfigDir;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
config = mkIf cfgDesktop.ags.enable {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = hasPrefix "/home/${cfgDesktop.user}/" flakeDir;
|
||||||
|
message = ''
|
||||||
|
Your $FLAKE environment variable needs to point to a directory in
|
||||||
|
the main users' home to use the AGS module.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Machine config
|
||||||
|
security.pam.services.astal-auth = {};
|
||||||
|
services.upower.enable = true;
|
||||||
|
|
||||||
|
home-manager.users.${cfgDesktop.user}.imports = [
|
||||||
|
hmOpts
|
||||||
|
(import ./packages.nix self)
|
||||||
|
./hyprland.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# For accurate stack trace
|
||||||
|
_file = ./default.nix;
|
||||||
|
}
|
137
nixosModules/ags/packages.nix
Normal file
137
nixosModules/ags/packages.nix
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
self: {
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
osConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (self.inputs) ags gtk-session-lock;
|
||||||
|
|
||||||
|
inherit (lib) attrValues boolToString optionals removeAttrs;
|
||||||
|
|
||||||
|
inherit (osConfig.networking) hostName;
|
||||||
|
|
||||||
|
cfg = config.programs.ags;
|
||||||
|
cfgDesktop = osConfig.roles.desktop;
|
||||||
|
in {
|
||||||
|
config = {
|
||||||
|
# Make these accessible outside these files
|
||||||
|
programs.ags = {
|
||||||
|
package = ags.packages.${pkgs.system}.ags.override {
|
||||||
|
extraPackages = cfg.astalLibs;
|
||||||
|
};
|
||||||
|
astalLibs =
|
||||||
|
attrValues (
|
||||||
|
removeAttrs ags.inputs.astal.packages.${pkgs.system} ["docs" "gjs"]
|
||||||
|
)
|
||||||
|
++ [gtk-session-lock.packages.${pkgs.system}.default];
|
||||||
|
|
||||||
|
lockPkg = pkgs.writeShellApplication {
|
||||||
|
name = "lock";
|
||||||
|
runtimeInputs = [cfg.package];
|
||||||
|
text = ''
|
||||||
|
export CONF="lock"
|
||||||
|
|
||||||
|
if [ "$#" == 0 ]; then
|
||||||
|
exec ags run ~/${cfg.configDir}
|
||||||
|
else
|
||||||
|
exec ags "$@" -i lock
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
packages =
|
||||||
|
[
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "ags";
|
||||||
|
runtimeInputs = [cfg.package];
|
||||||
|
text = ''
|
||||||
|
export CONF="${hostName}"
|
||||||
|
|
||||||
|
if [ "$#" == 0 ]; then
|
||||||
|
exec ags run ~/${cfg.configDir}
|
||||||
|
else
|
||||||
|
exec ags "$@"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "agsConf";
|
||||||
|
runtimeInputs = [cfg.package];
|
||||||
|
text = ''
|
||||||
|
export CONF="$1"
|
||||||
|
exec ${cfg.package}/bin/ags run ~/${cfg.configDir}
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
]
|
||||||
|
++ (builtins.attrValues {
|
||||||
|
inherit
|
||||||
|
(pkgs)
|
||||||
|
playerctl
|
||||||
|
pavucontrol # TODO: replace with ags widget
|
||||||
|
;
|
||||||
|
})
|
||||||
|
++ (optionals cfgDesktop.isTouchscreen (builtins.attrValues {
|
||||||
|
inherit
|
||||||
|
(pkgs)
|
||||||
|
ydotool
|
||||||
|
;
|
||||||
|
}));
|
||||||
|
|
||||||
|
file = let
|
||||||
|
inherit
|
||||||
|
(import "${self}/lib" {inherit pkgs self;})
|
||||||
|
buildNodeModules
|
||||||
|
buildGirTypes
|
||||||
|
;
|
||||||
|
in (
|
||||||
|
(buildGirTypes {
|
||||||
|
pname = "ags";
|
||||||
|
configPath = "${cfg.configDir}/@girs";
|
||||||
|
packages = cfg.astalLibs;
|
||||||
|
})
|
||||||
|
// {
|
||||||
|
"${cfg.configDir}/node_modules".source =
|
||||||
|
buildNodeModules ./config "sha256-DtrSplIOSudRgBCfKsDAtok0/21xzHiTJNrKLYy4mfY=";
|
||||||
|
|
||||||
|
"${cfg.configDir}/tsconfig.json".source = let
|
||||||
|
inherit (ags.packages.${pkgs.system}) gjs;
|
||||||
|
in
|
||||||
|
pkgs.writers.writeJSON "tsconfig.json" {
|
||||||
|
"$schema" = "https://json.schemastore.org/tsconfig";
|
||||||
|
"compilerOptions" = {
|
||||||
|
"experimentalDecorators" = true;
|
||||||
|
"strict" = true;
|
||||||
|
"target" = "ES2023";
|
||||||
|
"moduleResolution" = "Bundler";
|
||||||
|
"jsx" = "react-jsx";
|
||||||
|
"jsxImportSource" = "${gjs}/share/astal/gjs/gtk3";
|
||||||
|
"paths" = {
|
||||||
|
"astal" = ["${gjs}/share/astal/gjs"];
|
||||||
|
"astal/*" = ["${gjs}/share/astal/gjs/*"];
|
||||||
|
};
|
||||||
|
"skipLibCheck" = true;
|
||||||
|
"module" = "ES2022";
|
||||||
|
"lib" = ["ES2023"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"${cfg.configDir}/widgets/lockscreen/vars.ts".text =
|
||||||
|
# javascript
|
||||||
|
''
|
||||||
|
export default {
|
||||||
|
mainMonitor: '${cfgDesktop.mainMonitor}',
|
||||||
|
dupeLockscreen: ${boolToString cfgDesktop.displayManager.duplicateScreen},
|
||||||
|
hasFprintd: ${boolToString (hostName == "wim")},
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# For accurate stack trace
|
||||||
|
_file = ./default.nix;
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue