ags is finally mostly setup...
This commit is contained in:
parent
3eda03e1d8
commit
7311597752
|
@ -1,19 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
if [[ ! -d "/home/chris/.dotfiles/.config/ags" ]]; then
|
||||
echo "Cannot find source directory; Did you move it?"
|
||||
echo "(Looking for "/home/chris/.dotfiles/.config/ags")"
|
||||
echo 'Cannot force reload with this script - use "direnv reload" manually and then try again'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# rebuild the cache forcefully
|
||||
_nix_direnv_force_reload=1 direnv exec "/home/chris/.dotfiles/.config/ags" true
|
||||
|
||||
# Update the mtime for .envrc.
|
||||
# This will cause direnv to reload again - but without re-building.
|
||||
touch "/home/chris/.dotfiles/.config/ags/.envrc"
|
||||
|
||||
# Also update the timestamp of whatever profile_rc we have.
|
||||
# This makes sure that we know we are up to date.
|
||||
touch -r "/home/chris/.dotfiles/.config/ags/.envrc" "/home/chris/.dotfiles/.config/ags/.direnv"/*.rc
|
|
@ -1 +0,0 @@
|
|||
use flake
|
|
@ -1,8 +0,0 @@
|
|||
(ns ags-config)
|
||||
|
||||
(defn bar [monitor]
|
||||
(let [my-label (Widget.Label.
|
||||
(clj->js {
|
||||
:label "some example content"
|
||||
}))])
|
||||
)
|
|
@ -1,11 +1,15 @@
|
|||
const css = `${App.configDir}/style.css`;
|
||||
const hyprland = await Service.import("hyprland");
|
||||
// const systray = await Service.import("systemtray");
|
||||
const systray = await Service.import("systemtray");
|
||||
const battery = await Service.import("battery");
|
||||
const audio = await Service.import('audio')
|
||||
|
||||
import { NotificationPopups } from "./notifications.js"
|
||||
|
||||
function workspaces() {
|
||||
const active = hyprland.active.workspace.bind("id");
|
||||
const workspaces = hyprland.bind("workspaces")
|
||||
.as(ws => ws.map(({ id }) => Widget.Button({
|
||||
.as(ws => ws.map(({ id }) => id === -99 ? "" : Widget.Button({
|
||||
onClicked: () => hyprland.messageAsync(`dispatch workspace ${id}`),
|
||||
child: Widget.Label(`${id}`),
|
||||
class_name: active.as(i => `${i === id ? "focused" : ""}`),
|
||||
|
@ -16,27 +20,121 @@ function workspaces() {
|
|||
})
|
||||
}
|
||||
|
||||
function client_name() {
|
||||
const client_class = hyprland.active.client.bind("class");
|
||||
return Widget.Box({
|
||||
class_name: "window-title-box",
|
||||
spacing: 6,
|
||||
children: [
|
||||
Widget.Icon({
|
||||
class_name: "client-icon",
|
||||
icon: client_class.as(c => `${c === "ff" ? "firefox" : c}`),
|
||||
}),
|
||||
Widget.Label({
|
||||
class_name: "client-title",
|
||||
label: hyprland.active.client.bind("title"),
|
||||
maxWidthChars: 54,
|
||||
truncate: "end",
|
||||
}),
|
||||
],
|
||||
})
|
||||
}
|
||||
|
||||
function system_tray() {
|
||||
/** @param {import('types/service/systemtray').TrayItem} item */
|
||||
const systray_item = item => Widget.Button({
|
||||
child: Widget.Icon().bind('icon', item, 'icon'),
|
||||
tooltipMarkup: item.bind('tooltip_markup'),
|
||||
onPrimaryClick: (_, event) => item.activate(event),
|
||||
onSecondaryClick: (_, event) => item.openMenu(event),
|
||||
});
|
||||
return Widget.Box({
|
||||
class_name: "systemtray",
|
||||
children: systray.bind("items").as(i => i.map(systray_item)),
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
function battery_function() {
|
||||
const bat = battery.bind("percent");
|
||||
const charging = battery.bind("charging");
|
||||
const time_left = battery.bind("time-remaining");
|
||||
return Widget.CircularProgress({
|
||||
start_at: 0.75,
|
||||
rounded: true,
|
||||
value: bat.as(p => p / 100),
|
||||
class_name: battery.bind("charging").as(c => c ? "battery_dial_charging" : "battery_dial"),
|
||||
child: Widget.Icon({
|
||||
class_name: "battery_icon",
|
||||
icon: battery.bind("icon-name"),
|
||||
}),
|
||||
tooltip_text: time_left.as(t => "Time till full charge: " + t),
|
||||
})
|
||||
}
|
||||
|
||||
const date = Variable("", {
|
||||
poll: [1000, 'date "+\%a \%b \%d, \%-I:\%M \%p"'],
|
||||
})
|
||||
|
||||
const expander = Widget.Label({
|
||||
hexpand: true,
|
||||
label: "",
|
||||
})
|
||||
|
||||
const volume_indicator = Widget.Button({
|
||||
on_clicked: () => audio.speaker.is_muted = !audio.speaker.is_muted,
|
||||
child: Widget.Icon().hook(audio.speaker, self => {
|
||||
const vol = audio.speaker.volume * 100;
|
||||
const icon = [
|
||||
[101, 'overamplified'],
|
||||
[67, 'high'],
|
||||
[34, 'medium'],
|
||||
[1, 'low'],
|
||||
[0, 'muted'],
|
||||
].find(([threshold]) => threshold <= vol)?.[1];
|
||||
|
||||
self.icon = `audio-volume-${icon}-symbolic`;
|
||||
self.tooltip_text = `Volume ${Math.floor(vol)}%`;
|
||||
}),
|
||||
})
|
||||
|
||||
function Bar(monitor = 0) {
|
||||
const myLabel = Widget.Label({
|
||||
label: 'some example content',
|
||||
})
|
||||
|
||||
const clock = Widget.Label({
|
||||
class_name: "clock",
|
||||
label: date.bind(),
|
||||
truncate: "end",
|
||||
})
|
||||
|
||||
return Widget.Window({
|
||||
monitor,
|
||||
name: `bar${monitor}`, // this name has to be unique
|
||||
anchor: ['top', 'left', 'right'],
|
||||
anchor: ['bottom', 'left', 'right'],
|
||||
exclusivity: "exclusive",
|
||||
margins: [0, 20, 8, 20],
|
||||
child: Widget.CenterBox({
|
||||
startWidget: workspaces(),
|
||||
class_name: "windowbox",
|
||||
startWidget: Widget.Box({
|
||||
spacing: 0,
|
||||
children: [
|
||||
workspaces(),
|
||||
client_name(),
|
||||
],
|
||||
}),
|
||||
centerWidget: clock,
|
||||
endWidget: myLabel,
|
||||
endWidget: Widget.Box({
|
||||
hexpand: true,
|
||||
css: "margin-right: 1em;",
|
||||
children: [
|
||||
expander,
|
||||
volume_indicator,
|
||||
system_tray(),
|
||||
battery_function(),
|
||||
],
|
||||
}),
|
||||
}),
|
||||
})
|
||||
}
|
||||
|
@ -45,8 +143,7 @@ App.config({
|
|||
style: css,
|
||||
windows: [
|
||||
Bar(0), // can be instantiated for each monitor
|
||||
Bar(1),
|
||||
NotificationPopups(),
|
||||
],
|
||||
})
|
||||
|
||||
export { }
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
function Bar(monitor = 0) {
|
||||
const myLabel = Widget.Label({
|
||||
label: 'some example content',
|
||||
})
|
||||
|
||||
return Widget.Window({
|
||||
monitor,
|
||||
name: `bar${monitor}`, // this name has to be unique
|
||||
anchor: ['top', 'left', 'right'],
|
||||
child: myLabel,
|
||||
})
|
||||
}
|
||||
|
||||
App.config({
|
||||
windows: [
|
||||
Bar(0), // can be instantiated for each monitor
|
||||
Bar(1),
|
||||
Bar(2),
|
||||
],
|
||||
})
|
|
@ -1,61 +0,0 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1718318537,
|
||||
"narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
|
||||
{
|
||||
description = "The Flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = inputs: with inputs;
|
||||
flake-utils.lib.eachDefaultSystem
|
||||
(system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
|
||||
nativeBuildInputs = with pkgs; [
|
||||
];
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
stdenv
|
||||
clojure
|
||||
clojure-lsp
|
||||
clj-kondo
|
||||
leiningen
|
||||
];
|
||||
|
||||
nativeLibs = with pkgs; [
|
||||
];
|
||||
in rec
|
||||
{
|
||||
devShell = pkgs.mkShell {
|
||||
nativeBuildInputs = nativeBuildInputs;
|
||||
buildInputs = buildInputs;
|
||||
nativeLibs = nativeLibs;
|
||||
};
|
||||
defaultPackage = pkgs.libsForQt5.callPackage ./default.nix { };
|
||||
}
|
||||
);
|
||||
}
|
26466
.config/ags/main.js
Normal file
26466
.config/ags/main.js
Normal file
File diff suppressed because it is too large
Load diff
130
.config/ags/notifications.js
Normal file
130
.config/ags/notifications.js
Normal file
|
@ -0,0 +1,130 @@
|
|||
const notifications = await Service.import("notifications")
|
||||
|
||||
/** @param {import('resource:///com/github/Aylur/ags/service/notifications.js').Notification} n */
|
||||
function NotificationIcon({ app_entry, app_icon, image }) {
|
||||
if (image) {
|
||||
return Widget.Box({
|
||||
css: `background-image: url("${image}");`
|
||||
+ "background-size: contain;"
|
||||
+ "background-repeat: no-repeat;"
|
||||
+ "background-position: center;",
|
||||
})
|
||||
}
|
||||
|
||||
let icon = "dialog-information-symbolic"
|
||||
if (Utils.lookUpIcon(app_icon))
|
||||
icon = app_icon
|
||||
|
||||
if (app_entry && Utils.lookUpIcon(app_entry))
|
||||
icon = app_entry
|
||||
|
||||
return Widget.Box({
|
||||
child: Widget.Icon(icon),
|
||||
})
|
||||
}
|
||||
|
||||
/** @param {import('resource:///com/github/Aylur/ags/service/notifications.js').Notification} n */
|
||||
function Notification(n) {
|
||||
const icon = Widget.Box({
|
||||
vpack: "start",
|
||||
class_name: "notif-icon",
|
||||
child: NotificationIcon(n),
|
||||
})
|
||||
|
||||
const title = Widget.Label({
|
||||
class_name: "notif-title",
|
||||
xalign: 0,
|
||||
justification: "left",
|
||||
hexpand: true,
|
||||
max_width_chars: 24,
|
||||
truncate: "end",
|
||||
wrap: true,
|
||||
label: n.summary,
|
||||
use_markup: true,
|
||||
})
|
||||
|
||||
const body = Widget.Label({
|
||||
class_name: "notif-body",
|
||||
hexpand: true,
|
||||
use_markup: true,
|
||||
xalign: 0,
|
||||
justification: "left",
|
||||
label: n.body,
|
||||
wrap: true,
|
||||
})
|
||||
|
||||
const actions = Widget.Box({
|
||||
class_name: "notif-actions",
|
||||
children: n.actions.map(({ id, label }) => Widget.Button({
|
||||
class_name: "notif-action-button",
|
||||
on_clicked: () => {
|
||||
n.invoke(id)
|
||||
n.dismiss()
|
||||
},
|
||||
hexpand: true,
|
||||
child: Widget.Label(label),
|
||||
})),
|
||||
})
|
||||
|
||||
return Widget.EventBox(
|
||||
{
|
||||
attribute: { id: n.id },
|
||||
on_primary_click: n.dismiss,
|
||||
},
|
||||
Widget.Box(
|
||||
{
|
||||
class_name: `notification ${n.urgency}`,
|
||||
vertical: true,
|
||||
},
|
||||
Widget.Box([
|
||||
icon,
|
||||
Widget.Box(
|
||||
{ vertical: true },
|
||||
title,
|
||||
body,
|
||||
),
|
||||
]),
|
||||
actions,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
export function NotificationPopups(monitor = 0) {
|
||||
const list = Widget.Box({
|
||||
vertical: true,
|
||||
children: notifications.popups.map(Notification),
|
||||
})
|
||||
|
||||
function onNotified(_, /** @type {number} */ id) {
|
||||
const n = notifications.getNotification(id)
|
||||
if (n)
|
||||
list.children = [...list.children, Notification(n)]
|
||||
}
|
||||
|
||||
function onDismissed(_, /** @type {number} */ id) {
|
||||
list.children.find(n => n.attribute.id === id)?.destroy()
|
||||
}
|
||||
|
||||
list.hook(notifications, onNotified, "notified")
|
||||
.hook(notifications, onDismissed, "dismissed")
|
||||
|
||||
return Widget.Window({
|
||||
monitor,
|
||||
name: `notifications${monitor}`,
|
||||
class_name: "notification-popups",
|
||||
anchor: ["bottom", "right"],
|
||||
child: Widget.Box({
|
||||
css: "min-width: 2px; min-height: 2px;",
|
||||
class_name: "notifications",
|
||||
vertical: true,
|
||||
child: list,
|
||||
|
||||
/** this is a simple one liner that could be used instead of
|
||||
hooking into the 'notified' and 'dismissed' signals.
|
||||
but its not very optimized becuase it will recreate
|
||||
the whole list everytime a notification is added or dismissed */
|
||||
// children: notifications.bind('popups')
|
||||
// .as(popups => popups.map(Notification))
|
||||
}),
|
||||
})
|
||||
}
|
|
@ -9,6 +9,6 @@
|
|||
; The standard ClojureScript compiler options:
|
||||
; (See the ClojureScript compiler documentation for details.)
|
||||
:compiler {
|
||||
:output-to "config.js" ; default: target/cljsbuild-main.js
|
||||
:output-to "main.js" ; default: target/cljsbuild-main.js
|
||||
:optimizations :simple
|
||||
:pretty-print true}}]})
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
{ pkgs ? import <nixpkgs> { } }:
|
||||
with pkgs;
|
||||
mkShell rec {
|
||||
name = "ags-config";
|
||||
|
||||
nativeBuildInputs = [
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
stdenv
|
||||
clojure
|
||||
clojure-lsp
|
||||
clj-kondo
|
||||
];
|
||||
}
|
|
@ -4,5 +4,4 @@
|
|||
(let [my-label (Widget.Label.
|
||||
(clj->js {
|
||||
:label "some example content"
|
||||
}))])
|
||||
)
|
||||
}))]))
|
|
@ -1,21 +1,171 @@
|
|||
@define-color base00 #282a36;
|
||||
@define-color base01 #34353e;
|
||||
@define-color base02 #43454f;
|
||||
@define-color base03 #78787e;
|
||||
@define-color base04 #a5a5a9;
|
||||
@define-color base05 #e2e4e5;
|
||||
@define-color base06 #eff0eb;
|
||||
@define-color base07 #f1f1f0;
|
||||
@define-color base08 #ff5c57;
|
||||
@define-color base09 #ff9f43;
|
||||
@define-color base0A #f3f99d;
|
||||
@define-color base0B #5af78e;
|
||||
@define-color base0C #9aedfe;
|
||||
@define-color base0D #57c7ff;
|
||||
@define-color base0E #ff6ac1;
|
||||
@define-color base0F #b2643c;
|
||||
@define-color basetransparent rgba(40, 42, 54, 0.0);
|
||||
@define-color backtransparent rgba(40, 42, 54, 0.80);
|
||||
|
||||
window {
|
||||
background-color: transparent;
|
||||
background-color: @basetransparent;
|
||||
}
|
||||
|
||||
.windowbox {
|
||||
background-color: @backtransparent;
|
||||
border-radius: 20px;
|
||||
box-shadow: 5px 5px 4px 4px #202020;
|
||||
margin-bottom: 1em;
|
||||
margin-right: 20px;
|
||||
margin-top: 0.4em;
|
||||
margin-left: 20px;
|
||||
min-height: 30px;
|
||||
border-color: @base08;
|
||||
border-width: 3px;
|
||||
}
|
||||
|
||||
button {
|
||||
background-color: @basetransparent;
|
||||
background-image: none;
|
||||
border-color: @basetransparent;
|
||||
}
|
||||
|
||||
.workspaces button {
|
||||
}
|
||||
|
||||
.workspaces {
|
||||
background-color: blue;
|
||||
border-color: purple;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.client-title {
|
||||
color: @base0D;
|
||||
}
|
||||
|
||||
/* button { */
|
||||
/* background-color: @base00; */
|
||||
/* border-color: purple; */
|
||||
/* } */
|
||||
|
||||
button:active {
|
||||
background-color: @theme_selected_bg_color;
|
||||
background-color: @basetransparent;
|
||||
color: @base0D;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
border-bottom: 3px solid @theme_fg_color;
|
||||
background-color: @basetransparent;
|
||||
color: @base0D;
|
||||
}
|
||||
|
||||
.workspaces button.focused {
|
||||
background-color: @theme_selected_bg_color;
|
||||
color: @theme_selected_fg_color;
|
||||
background-color: @basetransparent;
|
||||
color: @base0D;
|
||||
}
|
||||
|
||||
.window-title-box {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.systemtray {
|
||||
}
|
||||
|
||||
.clock {
|
||||
color: @base0B;
|
||||
}
|
||||
|
||||
.battery_dial_charging {
|
||||
min-width: 30px;
|
||||
min-height: 30px;
|
||||
font-size: 4px;
|
||||
margin-top: 1em;
|
||||
margin: 1em;
|
||||
background-color: @basetransparent;
|
||||
color: @base0B;
|
||||
}
|
||||
|
||||
.battery_dial_charged {
|
||||
min-width: 30px;
|
||||
min-height: 30px;
|
||||
font-size: 4px;
|
||||
margin-top: 1em;
|
||||
margin: 1em;
|
||||
background-color: @basetransparent;
|
||||
color: @base0B;
|
||||
}
|
||||
|
||||
.battery_dial {
|
||||
min-width: 30px;
|
||||
min-height: 30px;
|
||||
font-size: 4px;
|
||||
margin-top: 1em;
|
||||
margin: 1em;
|
||||
background-color: @basetransparent;
|
||||
color: @base0A;
|
||||
}
|
||||
|
||||
.battery_icon {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
window.notification-popups box.notifications {
|
||||
padding: .5em;
|
||||
}
|
||||
|
||||
.notification {
|
||||
min-width: 100px;
|
||||
border-radius: 20px;
|
||||
padding: 1em;
|
||||
margin: 1em;
|
||||
background-color: @backtransparent;
|
||||
}
|
||||
|
||||
.notif-icon {
|
||||
min-width: 38px;
|
||||
min-height: 38px;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.notif-icon image {
|
||||
font-size: 28px;
|
||||
/* to center the icon */
|
||||
margin: 5px;
|
||||
color: @base0C;
|
||||
}
|
||||
|
||||
.notif-icon box {
|
||||
min-width: 38px;
|
||||
min-height: 38px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.notif-title {
|
||||
color: @base0C;
|
||||
font-size: 1.2em;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.notif-body {
|
||||
color: @base0C;
|
||||
}
|
||||
|
||||
.notif-actions .notif-action-button {
|
||||
margin: 0 .4em;
|
||||
margin-top: .8em;
|
||||
}
|
||||
|
||||
.notif-actions .notif-action-button:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.notif-actions .notif-action-button:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
|
21
flake.lock
21
flake.lock
|
@ -1,5 +1,25 @@
|
|||
{
|
||||
"nodes": {
|
||||
"ags": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718921313,
|
||||
"narHash": "sha256-TFJah1RW5qnYW7kajjAFPAS5j/0q0R3vz9zPjrRA0Mc=",
|
||||
"owner": "Aylur",
|
||||
"repo": "ags",
|
||||
"rev": "646d5ad073ff7f8b1d50cfbd40f5b8a250fcd59d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Aylur",
|
||||
"repo": "ags",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16": {
|
||||
"inputs": {
|
||||
"fromYaml": "fromYaml"
|
||||
|
@ -612,6 +632,7 @@
|
|||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"ags": "ags",
|
||||
"emacs": "emacs",
|
||||
"eww": "eww",
|
||||
"home-manager": "home-manager",
|
||||
|
|
14
flake.nix
14
flake.nix
|
@ -27,10 +27,10 @@
|
|||
url = "github:elkowar/eww";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# ags = {
|
||||
# url = "github:Aylur/ags";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
ags = {
|
||||
url = "github:Aylur/ags";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
emacs = {
|
||||
url = "github:nix-community/emacs-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
@ -67,7 +67,7 @@
|
|||
nix-bitcoin,
|
||||
libre-presenter,
|
||||
eww,
|
||||
# ags,
|
||||
ags,
|
||||
stylix,
|
||||
rust-overlay, ... }:
|
||||
let
|
||||
|
@ -107,7 +107,7 @@
|
|||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
# home-manager.extraSpecialArgs = { inherit ags; };
|
||||
home-manager.extraSpecialArgs = { inherit ags; };
|
||||
home-manager.users.chris = import ./home/home.nix;
|
||||
}
|
||||
];
|
||||
|
@ -124,7 +124,7 @@
|
|||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
# home-manager.extraSpecialArgs = { inherit ags; };
|
||||
home-manager.extraSpecialArgs = { inherit ags; };
|
||||
home-manager.users.chris = import ./home/home.nix;
|
||||
}
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{ config, lib, pkgs, ags, ... }:
|
||||
|
||||
let
|
||||
laptop = builtins.readFile "/etc/hostname" == "syl\n";
|
||||
|
@ -6,7 +6,7 @@ in
|
|||
{
|
||||
imports = [
|
||||
./modules/hyprland.nix
|
||||
# ags.homeManagerModules.default
|
||||
ags.homeManagerModules.default
|
||||
];
|
||||
# Home Manager needs a bit of information about you and the
|
||||
# paths it should manage.
|
||||
|
@ -729,14 +729,14 @@ tooltip label {
|
|||
source = ../.config/fish/functions;
|
||||
};
|
||||
|
||||
# programs.ags = {
|
||||
# enable = true;
|
||||
# extraPackages = with pkgs; [
|
||||
# gtksourceview
|
||||
# webkitgtk
|
||||
# accountsservice
|
||||
# ];
|
||||
# };
|
||||
programs.ags = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
gtksourceview
|
||||
webkitgtk
|
||||
accountsservice
|
||||
];
|
||||
};
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
|
|
@ -327,10 +327,11 @@ in
|
|||
|
||||
exec-once = [
|
||||
"kwalletd5"
|
||||
"eww daemon"
|
||||
# "eww daemon"
|
||||
"swww-daemon --format xrgb"
|
||||
"eww open ${if laptop then "bar0" else "bar1"}"
|
||||
"dunst"
|
||||
# "eww open ${if laptop then "bar0" else "bar1"}"
|
||||
# "dunst"
|
||||
"ags"
|
||||
"rbw-agent"
|
||||
"/home/chris/bin/startup.sh"
|
||||
"hyprctl dispatch --batch 'splitratio 1; splitration -0.35'"
|
||||
|
|
|
@ -60,6 +60,11 @@
|
|||
ts
|
||||
du-dust
|
||||
sbcl
|
||||
|
||||
clojure
|
||||
clojure-lsp
|
||||
clj-kondo
|
||||
leiningen
|
||||
];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue