nixos-configs/nixosModules/ags-v2/packages.nix
matt1432 54385f2fa9
All checks were successful
Discord / discord commits (push) Has been skipped
chore: update flake.lock
Flake Inputs:
• Updated input 'agsV2':
    'github:Aylur/ags/f89742e' (2024-11-08)
  → 'github:Aylur/ags/5ec5640' (2024-11-12)

• Updated input 'astal':
    'github:Aylur/astal/302fcae' (2024-11-08)
  → 'github:Aylur/astal/2a9bb96' (2024-11-12)

• Updated input 'custom-sidebar-src':
    'github:elchininet/custom-sidebar/6b18c2e' (2024-11-10)
  → 'github:elchininet/custom-sidebar/a4b3aac' (2024-11-12)

• Updated input 'gpu-screen-recorder-src':
    'git+https://repo.dec05eba.com/gpu-screen-recorder?ref=refs/heads/master&rev=f1b4979' (2024-11-09)
  → 'git+https://repo.dec05eba.com/gpu-screen-recorder?ref=refs/heads/master&rev=c8fdf2f' (2024-11-10)

• Updated input 'hyprland':
    'github:hyprwm/Hyprland/dca75db' (2024-11-09)
  → 'github:hyprwm/Hyprland/a29cfa7' (2024-11-12)

• Updated input 'hyprland/hyprutils':
    'github:hyprwm/hyprutils/3ce0cde' (2024-11-07)
  → 'github:hyprwm/hyprutils/60d3dec' (2024-11-09)

• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/faf26ec' (2024-11-10)
  → 'github:fufexan/nix-gaming/e9adb42' (2024-11-12)

• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/b6023d8' (2024-11-10)
  → 'github:nix-community/nixpkgs-wayland/e25b62b' (2024-11-11)

• Updated input 'nvim-theme-src':
    'github:Mofiqul/dracula.nvim/94fa788' (2024-10-16)
  → 'github:Mofiqul/dracula.nvim/e6128ec' (2024-11-11)

• Updated input 'sops-nix':
    'github:Mic92/sops-nix/f1675e3' (2024-11-10)
  → 'github:Mic92/sops-nix/4c91d52' (2024-11-11)

• Updated input 'ts-for-gir-src':
    'github:gjsify/ts-for-gir/ffa9e9a' (2024-11-10)
  → 'github:gjsify/ts-for-gir/f703cc1' (2024-11-11)

• Updated input 'tuya-local-src':
    'github:make-all/tuya-local/175c1cc' (2024-11-09)
  → 'github:make-all/tuya-local/2739992' (2024-11-11)

Docker Images:
• nginx latest:
   sha256:28402db69fec7c17e179ea87882667f1e054391138f77ffaf0c3eb388efc3ffb
 → sha256:5026c85d87419b6c3622622570ea5c25ab9f9bb48961554658272bbc18e518b1

• quay.io/vaultwarden/server latest:
   sha256:7de8fd442afc26e4932a0b2521e2eec82db9f17667eef7b46fd9c2fa2e639de2
 → sha256:7271b8ceb729f9b46144c800125813dcc8d16bb6874217c48e59b22b45e47d7d
2024-11-11 23:45:04 -05:00

139 lines
3.8 KiB
Nix

{
self,
agsConfigDir,
}: {
lib,
osConfig,
pkgs,
...
}: {
options.programs.ags-v2.lockPkg = lib.mkOption {
type = with lib.types; nullOr package;
default = null;
};
config = 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 {
programs.ags-v2.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
buildNodeTypes
;
in (
(buildNodeTypes {
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;
}