added stuff
This commit is contained in:
parent
e8d9044d2b
commit
9d0ebdfbd0
907 changed files with 70990 additions and 0 deletions
122
nyx/homes/notashelf/services/wayland/ags/default.nix
Normal file
122
nyx/homes/notashelf/services/wayland/ags/default.nix
Normal file
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
inputs,
|
||||
osConfig,
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.fileset) fileFilter unions difference toSource;
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (osConfig.modules) device;
|
||||
|
||||
# dependencies required for the ags runtime to function properly
|
||||
# some of those dependencies are used internally for setting variables
|
||||
# or basic functionality where built-in services do not suffice
|
||||
coreDeps = with pkgs; [
|
||||
inputs.hyprpicker.packages.${pkgs.system}.default
|
||||
inputs.hyprland.packages.${pkgs.system}.default
|
||||
config.programs.foot.package
|
||||
|
||||
# basic functionality
|
||||
inotify-tools
|
||||
gtk3
|
||||
|
||||
# script and service helpers
|
||||
bash
|
||||
brightnessctl
|
||||
coreutils
|
||||
gawk
|
||||
gvfs
|
||||
imagemagick
|
||||
libnotify
|
||||
procps
|
||||
ripgrep
|
||||
slurp
|
||||
sysstat
|
||||
|
||||
# for weather widget
|
||||
(python3.withPackages (ps: [ps.requests]))
|
||||
];
|
||||
|
||||
# applications that are not necessarily required to compile ags
|
||||
# but are used by the widgets to launch certain applications
|
||||
widgetDeps = with pkgs; [
|
||||
pavucontrol
|
||||
networkmanagerapplet
|
||||
blueman
|
||||
];
|
||||
|
||||
dependencies = coreDeps ++ widgetDeps;
|
||||
filterNixFiles = fileFilter (file: lib.hasSuffix ".nix" file.name) ./.;
|
||||
|
||||
baseSrc = unions [
|
||||
# runtime executables
|
||||
./bin
|
||||
|
||||
# ags widgets and utilities
|
||||
./js
|
||||
./config.js
|
||||
|
||||
# compiled stylesheet
|
||||
# should be generated using the below command
|
||||
# `sassc -t compressed style/main.scss style.css`
|
||||
./style.css
|
||||
];
|
||||
|
||||
filter = difference baseSrc filterNixFiles;
|
||||
|
||||
cfg = config.programs.ags;
|
||||
acceptedTypes = ["desktop" "laptop" "lite" "hybrid"];
|
||||
in {
|
||||
imports = [inputs.ags.homeManagerModules.default];
|
||||
config = mkIf (builtins.elem device.type acceptedTypes) {
|
||||
programs.ags = {
|
||||
enable = true;
|
||||
configDir = toSource {
|
||||
root = ./.;
|
||||
fileset = filter;
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.ags = {
|
||||
Install.WantedBy = ["graphical-session.target"];
|
||||
|
||||
Unit = {
|
||||
Description = "Aylur's Gtk Shell (Ags)";
|
||||
After = ["graphical-session-pre.target"];
|
||||
PartOf = [
|
||||
"tray.target"
|
||||
"graphical-session.target"
|
||||
];
|
||||
};
|
||||
|
||||
Service = {
|
||||
Type = "simple";
|
||||
|
||||
Environment = "PATH=/run/wrappers/bin:${lib.makeBinPath dependencies}";
|
||||
ExecStart = "${cfg.package}/bin/ags";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID"; # hot-reloading
|
||||
|
||||
# runtime
|
||||
RuntimeDirectory = "ags";
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = "read-only";
|
||||
CacheDirectory = ["ags"];
|
||||
ReadWritePaths = [
|
||||
# socket access
|
||||
"%t" # /run/user/1000 for the socket
|
||||
"/tmp/hypr" # hyprland socket
|
||||
|
||||
# for thumbnail caching
|
||||
"~/notashelf/.local/share/firefox-mpris/"
|
||||
"~/.cache/ags/media"
|
||||
];
|
||||
|
||||
# restart on failure
|
||||
Restart = "on-failure";
|
||||
KillMode = "mixed";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue