Compare commits
16 Commits
bd152435c0
...
0efbd52631
| Author | SHA1 | Date | |
|---|---|---|---|
| 0efbd52631 | |||
| 2210fa7654 | |||
| 688ce92172 | |||
| 875dc2dc40 | |||
| d3742d78f3 | |||
| b042f46f57 | |||
| 4b03fba3f1 | |||
| 59f21166a5 | |||
| 2940eec8a3 | |||
| 16852be668 | |||
| 07a3fff57e | |||
| 83c0993019 | |||
| ce74e783ee | |||
| ffe7b54a5b | |||
| 03c2bc8225 | |||
| 75f88b9503 |
88
flake.lock
generated
88
flake.lock
generated
@ -19,6 +19,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ags_2": {
|
||||||
|
"inputs": {
|
||||||
|
"astal": "astal_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprpanel",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1744557573,
|
||||||
|
"narHash": "sha256-XAyj0iDuI51BytJ1PwN53uLpzTDdznPDQFG4RwihlTQ=",
|
||||||
|
"owner": "aylur",
|
||||||
|
"repo": "ags",
|
||||||
|
"rev": "3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "aylur",
|
||||||
|
"repo": "ags",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"astal": {
|
"astal": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@ -40,6 +62,49 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"astal_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprpanel",
|
||||||
|
"ags",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742571008,
|
||||||
|
"narHash": "sha256-5WgfJAeBpxiKbTR/gJvxrGYfqQRge5aUDcGKmU1YZ1Q=",
|
||||||
|
"owner": "aylur",
|
||||||
|
"repo": "astal",
|
||||||
|
"rev": "dc0e5d37abe9424c53dcbd2506a4886ffee6296e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "aylur",
|
||||||
|
"repo": "astal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"astal_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprpanel",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1748416910,
|
||||||
|
"narHash": "sha256-FEQcs58HL8Fe4i7XlqVEUwthjxwvRvgX15gTTfW17sU=",
|
||||||
|
"owner": "aylur",
|
||||||
|
"repo": "astal",
|
||||||
|
"rev": "c1bd89a47c81c66ab5fc6872db5a916c0433fb89",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "aylur",
|
||||||
|
"repo": "astal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"devshell": {
|
"devshell": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
@ -187,6 +252,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprpanel": {
|
||||||
|
"inputs": {
|
||||||
|
"ags": "ags_2",
|
||||||
|
"astal": "astal_3",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1750028451,
|
||||||
|
"narHash": "sha256-IQjlQcuoY89E1A1VkZo0lkpNy2ysXS9hXvtEGfhUoqQ=",
|
||||||
|
"owner": "jas-singhfsu",
|
||||||
|
"repo": "hyprpanel",
|
||||||
|
"rev": "e03666ab5d239e99b65a0df9cf33c6f47e145e4e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "jas-singhfsu",
|
||||||
|
"repo": "hyprpanel",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ixx": {
|
"ixx": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
@ -457,6 +544,7 @@
|
|||||||
"emacs-overlay": "emacs-overlay",
|
"emacs-overlay": "emacs-overlay",
|
||||||
"hardware": "hardware",
|
"hardware": "hardware",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"hyprpanel": "hyprpanel",
|
||||||
"nix-alien": "nix-alien",
|
"nix-alien": "nix-alien",
|
||||||
"nix-flatpak": "nix-flatpak",
|
"nix-flatpak": "nix-flatpak",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_5",
|
||||||
|
|||||||
@ -23,6 +23,8 @@
|
|||||||
|
|
||||||
# Ags for widgets (this was a terrible idea)
|
# Ags for widgets (this was a terrible idea)
|
||||||
ags.url = "github:Aylur/ags";
|
ags.url = "github:Aylur/ags";
|
||||||
|
hyprpanel.url = "github:jas-singhfsu/hyprpanel";
|
||||||
|
hyprpanel.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
# Other
|
# Other
|
||||||
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
||||||
|
|||||||
@ -39,7 +39,7 @@ rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
ags.enable = true; # TODO: Configure
|
ags.enable = false; # TODO: Configure
|
||||||
|
|
||||||
chromium = {
|
chromium = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -66,8 +66,8 @@ rec {
|
|||||||
|
|
||||||
hyprland = {
|
hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# theme = "Three-Bears";
|
dunst.enable = false; # Disable for hyprpanel
|
||||||
theme = "Foggy-Lake";
|
theme = "Foggy-Lake"; # Three-Bears
|
||||||
|
|
||||||
keybindings = {
|
keybindings = {
|
||||||
main-mod = "SUPER";
|
main-mod = "SUPER";
|
||||||
@ -99,6 +99,12 @@ rec {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
windowrules = [
|
||||||
|
# TODO: Doesn't work, use focus_on_activate for now
|
||||||
|
# "suppressevent activate, class:^(Unity)$"
|
||||||
|
# "suppressevent activatefocus, class:^(Unity)$"
|
||||||
|
];
|
||||||
|
|
||||||
workspacerules = {
|
workspacerules = {
|
||||||
"2" = [
|
"2" = [
|
||||||
"neovide"
|
"neovide"
|
||||||
@ -174,6 +180,7 @@ rec {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hyprpanel.enable = true;
|
||||||
kitty.enable = true;
|
kitty.enable = true;
|
||||||
latex.enable = true;
|
latex.enable = true;
|
||||||
|
|
||||||
@ -191,7 +198,7 @@ rec {
|
|||||||
theme = "Foggy-Lake";
|
theme = "Foggy-Lake";
|
||||||
};
|
};
|
||||||
|
|
||||||
waybar.enable = true;
|
waybar.enable = false;
|
||||||
zathura.enable = true;
|
zathura.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -346,6 +353,7 @@ rec {
|
|||||||
AusweisApp2
|
AusweisApp2
|
||||||
thunderbird # TODO: Email module
|
thunderbird # TODO: Email module
|
||||||
obsidian
|
obsidian
|
||||||
|
# anytype # Use flatpak
|
||||||
helvum
|
helvum
|
||||||
|
|
||||||
# Office
|
# Office
|
||||||
@ -616,6 +624,7 @@ rec {
|
|||||||
|
|
||||||
# "com.google.Chrome"
|
# "com.google.Chrome"
|
||||||
# "md.obsidian.Obsidian" # NOTE: Installed via package
|
# "md.obsidian.Obsidian" # NOTE: Installed via package
|
||||||
|
"io.anytype.anytype"
|
||||||
];
|
];
|
||||||
|
|
||||||
uninstallUnmanaged = true;
|
uninstallUnmanaged = true;
|
||||||
@ -641,6 +650,18 @@ rec {
|
|||||||
GTK_THEME = "Adwaita:light";
|
GTK_THEME = "Adwaita:light";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"io.anytype.anytype".Context = {
|
||||||
|
filesystems = [
|
||||||
|
"${config.home.homeDirectory}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"com.discordapp.Discord".Context = {
|
||||||
|
filesystems = [
|
||||||
|
"${config.home.homeDirectory}"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
nixosConfig,
|
nixosConfig,
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
@ -56,7 +57,52 @@
|
|||||||
waybar.monitor = "HDMI-A-1";
|
waybar.monitor = "HDMI-A-1";
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home = let
|
||||||
|
# Extra config to make Rider Unity integration work
|
||||||
|
dotnetCore = with pkgs.dotnetCorePackages;
|
||||||
|
combinePackages [
|
||||||
|
# sdk_6_0_1xx # Is EOL
|
||||||
|
# sdk_7_0_3xx # Is EOL
|
||||||
|
sdk_8_0_3xx
|
||||||
|
sdk_9_0_3xx
|
||||||
|
];
|
||||||
|
|
||||||
|
extra-path = with pkgs; [
|
||||||
|
dotnetCore
|
||||||
|
dotnetPackages.Nuget
|
||||||
|
mono
|
||||||
|
# msbuild
|
||||||
|
|
||||||
|
# Add any extra binaries you want accessible to Rider here
|
||||||
|
];
|
||||||
|
|
||||||
|
extra-lib = with pkgs; [
|
||||||
|
# Add any extra libraries you want accessible to Rider here
|
||||||
|
];
|
||||||
|
|
||||||
|
rider = pkgs.jetbrains.rider.overrideAttrs (attrs: {
|
||||||
|
postInstall =
|
||||||
|
''
|
||||||
|
# Wrap rider with extra tools and libraries
|
||||||
|
mv $out/bin/rider $out/bin/.rider-toolless
|
||||||
|
makeWrapper $out/bin/.rider-toolless $out/bin/rider \
|
||||||
|
--argv0 rider \
|
||||||
|
--prefix PATH : "${lib.makeBinPath extra-path}" \
|
||||||
|
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath extra-lib}"
|
||||||
|
|
||||||
|
# Making Unity Rider plugin work!
|
||||||
|
# The plugin expects the binary to be at /rider/bin/rider,
|
||||||
|
# with bundled files at /rider/
|
||||||
|
# It does this by going up two directories from the binary path
|
||||||
|
# Our rider binary is at $out/bin/rider, so we need to link $out/rider/ to $out/
|
||||||
|
shopt -s extglob
|
||||||
|
ln -s $out/rider/!(bin) $out/
|
||||||
|
shopt -u extglob
|
||||||
|
''
|
||||||
|
+ attrs.postInstall or "";
|
||||||
|
});
|
||||||
|
in {
|
||||||
|
packages = with pkgs; [
|
||||||
# quartus-prime-lite # Intel FPGA design software
|
# quartus-prime-lite # Intel FPGA design software
|
||||||
|
|
||||||
# Don't want heavy IDE's on the laptop
|
# Don't want heavy IDE's on the laptop
|
||||||
@ -66,19 +112,14 @@
|
|||||||
jetbrains.idea-ultimate
|
jetbrains.idea-ultimate
|
||||||
jetbrains.webstorm
|
jetbrains.webstorm
|
||||||
|
|
||||||
|
# Unity Stuff
|
||||||
unityhub
|
unityhub
|
||||||
jetbrains.rider
|
rider
|
||||||
(with dotnetCorePackages;
|
dotnetCore
|
||||||
combinePackages [
|
mono
|
||||||
# sdk_6_0_1xx # Is EOL
|
|
||||||
# sdk_7_0_3xx # Is EOL
|
|
||||||
sdk_8_0_3xx
|
|
||||||
sdk_9_0_3xx
|
|
||||||
]) # For Rider/Unity
|
|
||||||
mono # For Rider/Unity
|
|
||||||
|
|
||||||
blender
|
blender
|
||||||
# godot_4
|
godot_4
|
||||||
obs-studio
|
obs-studio
|
||||||
kdePackages.kdenlive
|
kdePackages.kdenlive
|
||||||
krita
|
krita
|
||||||
@ -87,8 +128,24 @@
|
|||||||
steam-devices-udev-rules
|
steam-devices-udev-rules
|
||||||
];
|
];
|
||||||
|
|
||||||
# home.file.".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = config.lib.file.mkOutOfStoreSymlink "${config.paths.dotfiles}/mangohud/MangoHud.conf";
|
file = {
|
||||||
home.file.".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = ../../../config/mangohud/MangoHud.conf;
|
".local/share/applications/jetbrains-rider.desktop".source = let
|
||||||
|
desktopFile = pkgs.makeDesktopItem {
|
||||||
|
name = "jetbrains-rider";
|
||||||
|
desktopName = "Rider";
|
||||||
|
exec = "\"${rider}/bin/rider\"";
|
||||||
|
icon = "rider";
|
||||||
|
type = "Application";
|
||||||
|
# Don't show desktop icon in search or run launcher
|
||||||
|
extraConfig.NoDisplay = "true";
|
||||||
|
};
|
||||||
|
in "${desktopFile}/share/applications/jetbrains-rider.desktop";
|
||||||
|
|
||||||
|
".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = ../../../config/mangohud/MangoHud.conf;
|
||||||
|
|
||||||
|
# ".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = config.lib.file.mkOutOfStoreSymlink "${config.paths.dotfiles}/mangohud/MangoHud.conf";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
flatpak = {
|
flatpak = {
|
||||||
|
|||||||
@ -1,20 +1,46 @@
|
|||||||
|
// Import the colors exported by the nixos config
|
||||||
|
// TODO: Depend on username somehow...
|
||||||
|
@use "/home/christoph/.config/colors" as *;
|
||||||
|
|
||||||
// https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/theme/Adwaita/_colors-public.scss
|
// https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/theme/Adwaita/_colors-public.scss
|
||||||
$fg-color: #{"@theme_fg_color"};
|
$fg-color: #{"@theme_fg_color"};
|
||||||
$bg-color: #{"@theme_bg_color"};
|
$bg-color: #{"@theme_bg_color"};
|
||||||
|
|
||||||
window.Bar {
|
// Order is Top-Right-Bottom-Left for combined properties
|
||||||
|
|
||||||
|
* {
|
||||||
|
// Remove the default theme's background-image, otherwise background-color doesn't work
|
||||||
|
background-image: none;
|
||||||
|
|
||||||
|
// Clear implicit paddings and margins, otherwise size management is terrible
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Window {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: $fg-color;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
font-size: x-large;
|
||||||
|
|
||||||
>centerbox {
|
.Bar {
|
||||||
background: $bg-color;
|
background-color: rgba($light-base, 0.3);
|
||||||
border-radius: 10px;
|
border-radius: 6px;
|
||||||
margin: 8px;
|
border-width: 2px;
|
||||||
}
|
border-color: $dark-lavender;
|
||||||
|
border-style: solid;
|
||||||
|
margin: 10px 10px 0 10px;
|
||||||
|
|
||||||
button {
|
.LauncherButton {
|
||||||
border-radius: 8px;
|
background-color: $dark-lavender;
|
||||||
margin: 2px;
|
border-radius: 6px;
|
||||||
|
border-width: 0;
|
||||||
|
margin: -1px 10px -1px -1px; // Negative margins to remove gaps from border radii
|
||||||
|
min-width: 36px;
|
||||||
|
min-height: 36px;
|
||||||
|
|
||||||
|
>label {
|
||||||
|
margin-left: -4px; // Tux not centered otherwise
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,36 +1,76 @@
|
|||||||
import { App, Astal, Gtk, Gdk } from "astal/gtk4"
|
import { App, Astal, Gtk, Gdk } from "astal/gtk4"
|
||||||
import { Variable } from "astal"
|
import { GLib, Variable } from "astal"
|
||||||
|
import { SysTray } from "./SysTray";
|
||||||
|
|
||||||
const time = Variable("").poll(1000, "date")
|
const user = Variable("")
|
||||||
|
.poll(60000, ["bash", "-c", "whoami"]);
|
||||||
|
|
||||||
|
const time = Variable("")
|
||||||
|
.poll(1000, ["bash", "-c", "date +'%H:%M:%S'"]);
|
||||||
|
|
||||||
|
const date = Variable("")
|
||||||
|
.poll(60000, ["bash", "-c", "date +'%y-%m-%d'"])
|
||||||
|
|
||||||
|
const uptime = Variable("")
|
||||||
|
.poll(60000, ["bash", "-c", "uptime | awk -F'( |,)+' '{print $4}'"]);
|
||||||
|
|
||||||
export default function Bar(gdkmonitor: Gdk.Monitor) {
|
export default function Bar(gdkmonitor: Gdk.Monitor) {
|
||||||
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
|
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
|
||||||
|
|
||||||
return <window
|
return <window
|
||||||
visible
|
cssClasses={["Window"]}
|
||||||
cssClasses={["Bar"]}
|
application={App}
|
||||||
gdkmonitor={gdkmonitor}
|
gdkmonitor={gdkmonitor}
|
||||||
exclusivity={Astal.Exclusivity.EXCLUSIVE}
|
exclusivity={Astal.Exclusivity.EXCLUSIVE}
|
||||||
anchor={TOP | LEFT | RIGHT}
|
anchor={TOP | LEFT | RIGHT}
|
||||||
application={App}>
|
visible
|
||||||
<centerbox cssName="centerbox">
|
|
||||||
|
child={
|
||||||
|
<centerbox
|
||||||
|
cssClasses={["Bar"]}
|
||||||
|
|
||||||
|
startWidget={
|
||||||
|
<box
|
||||||
|
halign={Gtk.Align.START}
|
||||||
|
children={[
|
||||||
<button
|
<button
|
||||||
onClicked="echo hello"
|
cssClasses={["LauncherButton"]}
|
||||||
hexpand
|
onClicked="rofi -drun-show-actions -show drun"
|
||||||
halign={Gtk.Align.CENTER}
|
cursor={Gdk.Cursor.new_from_name("pointer", null)}
|
||||||
>
|
label={""}
|
||||||
Welcome to AGS!
|
/>,
|
||||||
</button>
|
|
||||||
<box />
|
<label
|
||||||
<menubutton
|
cssClasses={["UserLabel"]}
|
||||||
hexpand
|
label={user((value) => `${value.toUpperCase()}`)}
|
||||||
halign={Gtk.Align.CENTER}
|
/>,
|
||||||
>
|
|
||||||
<label label={time()} />
|
<label
|
||||||
<popover>
|
cssClasses={["UptimeLabel"]}
|
||||||
<Gtk.Calendar />
|
label={uptime((value) => `${value}`)}
|
||||||
</popover>
|
/>,
|
||||||
</menubutton>
|
|
||||||
</centerbox>
|
<label
|
||||||
</window>
|
cssClasses={["WindowNameLabel"]}
|
||||||
|
label={"WINDOW"}
|
||||||
|
/>
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
|
||||||
|
centerWidget={
|
||||||
|
<box />
|
||||||
|
}
|
||||||
|
|
||||||
|
endWidget={
|
||||||
|
<box
|
||||||
|
halign={Gtk.Align.START}
|
||||||
|
children={[
|
||||||
|
<SysTray />
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
}
|
}
|
||||||
|
|||||||
40
home/modules/ags/config/widget/SysTray.tsx
Normal file
40
home/modules/ags/config/widget/SysTray.tsx
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import { Variable, bind } from "astal";
|
||||||
|
import { Gtk } from "astal/gtk4"
|
||||||
|
import AstalTray from "gi://AstalTray";
|
||||||
|
|
||||||
|
export function SysTray() {
|
||||||
|
const tray = AstalTray.get_default()
|
||||||
|
|
||||||
|
const trayIcons = Variable.derive(
|
||||||
|
[bind(tray, "items")],
|
||||||
|
(items) => {
|
||||||
|
return items.map((item) => {
|
||||||
|
return (
|
||||||
|
<menubutton
|
||||||
|
item={item}
|
||||||
|
child={
|
||||||
|
<image gicon={bind(item, "gicon")} />
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
return <box
|
||||||
|
cssClasses={["SysTray"]}
|
||||||
|
children={
|
||||||
|
bind(tray, "items").as(items => items.map(item => (
|
||||||
|
<menubutton
|
||||||
|
tooltipMarkup={bind(item, "tooltipMarkup")}
|
||||||
|
usePopover={false}
|
||||||
|
actionGroup={bind(item, "actionGroup").as(ag => ["dbusmenu", ag])}
|
||||||
|
menuModel={bind(item, "menuModel")}
|
||||||
|
child={
|
||||||
|
<image gicon={bind(item, "gicon")} />
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)))
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
}
|
||||||
@ -33,8 +33,8 @@ in {
|
|||||||
inputs.ags.packages.${pkgs.system}.wireplumber
|
inputs.ags.packages.${pkgs.system}.wireplumber
|
||||||
];
|
];
|
||||||
|
|
||||||
# This should symlink
|
# This should symlink but doesn't, it copies the files :/
|
||||||
configDir = ./config;
|
# configDir = ./config;
|
||||||
};
|
};
|
||||||
|
|
||||||
# The ags module doesn't expose the "astal" cli tool or extraPackages
|
# The ags module doesn't expose the "astal" cli tool or extraPackages
|
||||||
@ -64,11 +64,67 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
# NOTE: Keep this symlinked as long as I'm configuring
|
# Keep this symlinked as long as I'm configuring (not required anymore since I can start AGS locally)
|
||||||
# ".config/ags".source = config.lib.file.mkOutOfStoreSymlink "${config.paths.nixflake}/home/modules/ags/config";
|
# ".config/ags".source = config.lib.file.mkOutOfStoreSymlink "${config.paths.nixflake}/home/modules/ags/config";
|
||||||
|
|
||||||
# LSP typechecking support (use ags --init)
|
# NOTE: Don't symlink to ~/.config/ags/colors.scss, since that is already used by configDir
|
||||||
# ".config/ags/types".source = config.lib.file.mkOutOfStoreSymlink "${pkgs.ags}/share/com.github.Aylur.ags/types";
|
".config/_colors.scss".text = with config.modules.color.hex; ''
|
||||||
|
$dark-rosewater: #${dark.rosewater};
|
||||||
|
$dark-flamingo: #${dark.flamingo};
|
||||||
|
$dark-pink: #${dark.pink};
|
||||||
|
$dark-mauve: #${dark.mauve};
|
||||||
|
$dark-red: #${dark.red};
|
||||||
|
$dark-maroon: #${dark.maroon};
|
||||||
|
$dark-peach: #${dark.peach};
|
||||||
|
$dark-yellow: #${dark.yellow};
|
||||||
|
$dark-green: #${dark.green};
|
||||||
|
$dark-teal: #${dark.teal};
|
||||||
|
$dark-sky: #${dark.sky};
|
||||||
|
$dark-sapphire: #${dark.sapphire};
|
||||||
|
$dark-blue: #${dark.blue};
|
||||||
|
$dark-lavender: #${dark.lavender};
|
||||||
|
|
||||||
|
$dark-text: #${dark.text};
|
||||||
|
$dark-subtext1: #${dark.subtext1};
|
||||||
|
$dark-subtext0: #${dark.subtext0};
|
||||||
|
$dark-overlay2: #${dark.overlay2};
|
||||||
|
$dark-overlay1: #${dark.overlay1};
|
||||||
|
$dark-overlay0: #${dark.overlay0};
|
||||||
|
$dark-surface2: #${dark.surface2};
|
||||||
|
$dark-surface1: #${dark.surface1};
|
||||||
|
$dark-surface0: #${dark.surface0};
|
||||||
|
$dark-base: #${dark.base};
|
||||||
|
$dark-mantle: #${dark.mantle};
|
||||||
|
$dark-crust: #${dark.crust};
|
||||||
|
|
||||||
|
$light-rosewater: #${light.rosewater};
|
||||||
|
$light-flamingo: #${light.flamingo};
|
||||||
|
$light-pink: #${light.pink};
|
||||||
|
$light-mauve: #${light.mauve};
|
||||||
|
$light-red: #${light.red};
|
||||||
|
$light-maroon: #${light.maroon};
|
||||||
|
$light-peach: #${light.peach};
|
||||||
|
$light-yellow: #${light.yellow};
|
||||||
|
$light-green: #${light.green};
|
||||||
|
$light-teal: #${light.teal};
|
||||||
|
$light-sky: #${light.sky};
|
||||||
|
$light-sapphire: #${light.sapphire};
|
||||||
|
$light-blue: #${light.blue};
|
||||||
|
$light-lavender: #${light.lavender};
|
||||||
|
|
||||||
|
$light-text: #${light.text};
|
||||||
|
$light-subtext1: #${light.subtext1};
|
||||||
|
$light-subtext0: #${light.subtext0};
|
||||||
|
$light-overlay2: #${light.overlay2};
|
||||||
|
$light-overlay1: #${light.overlay1};
|
||||||
|
$light-overlay0: #${light.overlay0};
|
||||||
|
$light-surface2: #${light.surface2};
|
||||||
|
$light-surface1: #${light.surface1};
|
||||||
|
$light-surface0: #${light.surface0};
|
||||||
|
$light-base: #${light.base};
|
||||||
|
$light-mantle: #${light.mantle};
|
||||||
|
$light-crust: #${light.crust};
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,5 +22,6 @@
|
|||||||
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
||||||
inputs.nixvim.homeManagerModules.nixvim
|
inputs.nixvim.homeManagerModules.nixvim
|
||||||
inputs.ags.homeManagerModules.default
|
inputs.ags.homeManagerModules.default
|
||||||
|
inputs.hyprpanel.homeManagerModules.hyprpanel
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -118,9 +118,12 @@
|
|||||||
"wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\""
|
"wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\""
|
||||||
"hyprctl setcursor Bibata-Modern-Classic 16"
|
"hyprctl setcursor Bibata-Modern-Classic 16"
|
||||||
|
|
||||||
# NOTE: Hack because Hyprland doesn't set the xwayland/x11 keymap correctly
|
# HACK: Hyprland doesn't set the xwayland/x11 keymap correctly
|
||||||
"setxkbmap -layout ${hyprland.kb-layout} -variant ${hyprland.kb-variant} -model pc104"
|
"setxkbmap -layout ${hyprland.kb-layout} -variant ${hyprland.kb-variant} -model pc104"
|
||||||
|
|
||||||
|
# HACK: Flatpak doesn't find applications in the system PATH
|
||||||
|
"systemctl --user import-environment PATH && systemctl --user restart xdg-desktop-portal.service"
|
||||||
|
|
||||||
# Provide a polkit authentication UI.
|
# Provide a polkit authentication UI.
|
||||||
# This is used for example when running systemd commands without root.
|
# This is used for example when running systemd commands without root.
|
||||||
"${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1"
|
"${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1"
|
||||||
@ -316,7 +319,7 @@ in {
|
|||||||
|
|
||||||
# Notification service
|
# Notification service
|
||||||
dunst = {
|
dunst = {
|
||||||
enable = true;
|
enable = hyprland.dunst.enable;
|
||||||
|
|
||||||
iconTheme.package = pkgs.papirus-icon-theme;
|
iconTheme.package = pkgs.papirus-icon-theme;
|
||||||
iconTheme.name = "Papirus";
|
iconTheme.name = "Papirus";
|
||||||
@ -435,7 +438,8 @@ in {
|
|||||||
]
|
]
|
||||||
++ lib.pipe hyprland.transparent [
|
++ lib.pipe hyprland.transparent [
|
||||||
(builtins.map mkTranslucentRule)
|
(builtins.map mkTranslucentRule)
|
||||||
];
|
]
|
||||||
|
++ hyprland.windowrules;
|
||||||
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
pseudotile = true;
|
pseudotile = true;
|
||||||
@ -464,9 +468,10 @@ in {
|
|||||||
layerrule = [
|
layerrule = [
|
||||||
"blur,rofi"
|
"blur,rofi"
|
||||||
"ignorealpha 0.001,rofi"
|
"ignorealpha 0.001,rofi"
|
||||||
# "dimaround,rofi"
|
"dimaround,rofi"
|
||||||
|
|
||||||
"blur,waybar"
|
"blur,waybar"
|
||||||
|
"blur,gtk4-layer-shell"
|
||||||
];
|
];
|
||||||
|
|
||||||
decoration = {
|
decoration = {
|
||||||
|
|||||||
@ -25,6 +25,8 @@ with mylib.modules; {
|
|||||||
description = "Wallpaper and colorscheme to use";
|
description = "Wallpaper and colorscheme to use";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dunst.enable = mkEnableOption "Enable dunst notification daemon";
|
||||||
|
|
||||||
monitors = mkOption {
|
monitors = mkOption {
|
||||||
type = types.attrs;
|
type = types.attrs;
|
||||||
description = "Hyprland Monitor Configurations";
|
description = "Hyprland Monitor Configurations";
|
||||||
@ -90,6 +92,16 @@ with mylib.modules; {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
windowrules = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
description = "Specify specific window rules.";
|
||||||
|
example = ''
|
||||||
|
[
|
||||||
|
"suppressevent activate, class: Unity"
|
||||||
|
]
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
transparent-opacity = mkOption {
|
transparent-opacity = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = "The opacity transparent windows should have.";
|
description = "The opacity transparent windows should have.";
|
||||||
|
|||||||
20
home/modules/hyprpanel/default.nix
Normal file
20
home/modules/hyprpanel/default.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
nixosConfig,
|
||||||
|
lib,
|
||||||
|
mylib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (config.modules) hyprpanel;
|
||||||
|
in {
|
||||||
|
options.modules.hyprpanel = import ./options.nix {inherit lib mylib;};
|
||||||
|
|
||||||
|
config = lib.mkIf hyprpanel.enable {
|
||||||
|
programs.hyprpanel = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
overwrite.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
home/modules/hyprpanel/options.nix
Normal file
9
home/modules/hyprpanel/options.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
mylib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
with mylib.modules; {
|
||||||
|
enable = mkEnableOption "hyprpanel";
|
||||||
|
}
|
||||||
@ -150,12 +150,12 @@ with mylib.networking; {
|
|||||||
# XDG
|
# XDG
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wlr.enable = false; # I think hyprland has its own portal automatically enabled...
|
xdgOpenUsePortal = true;
|
||||||
|
wlr.enable = false; # Hyprland has its own portal automatically enabled...
|
||||||
extraPortals = with pkgs; [
|
extraPortals = with pkgs; [
|
||||||
# TODO: Needed?
|
xdg-desktop-portal-gtk
|
||||||
# xdg-desktop-portal-kde
|
|
||||||
# xdg-desktop-portal-gtk
|
|
||||||
|
|
||||||
|
# xdg-desktop-portal-kde
|
||||||
# xdg-desktop-portal-hyprland # Already enabled by hyprland system module
|
# xdg-desktop-portal-hyprland # Already enabled by hyprland system module
|
||||||
# xdg-desktop-portal-termfilechooser # Filepicker using nnn
|
# xdg-desktop-portal-termfilechooser # Filepicker using nnn
|
||||||
];
|
];
|
||||||
@ -386,7 +386,7 @@ with mylib.networking; {
|
|||||||
fwupd.enable = true; # Device firmware (I don't think I have any supported devices)
|
fwupd.enable = true; # Device firmware (I don't think I have any supported devices)
|
||||||
# locate.enable = true; # Periodically update index
|
# locate.enable = true; # Periodically update index
|
||||||
ntp.enable = true; # Clock sync
|
ntp.enable = true; # Clock sync
|
||||||
gvfs.enable = false; # Network shares TODO: Only gnome? Needed?
|
gvfs.enable = true; # Network shares, spotify cover art caching, ...
|
||||||
udev = {
|
udev = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
usb-blaster-udev-rules # For Intel Quartus
|
usb-blaster-udev-rules # For Intel Quartus
|
||||||
|
|||||||
@ -58,6 +58,7 @@
|
|||||||
# 31431 # Parsec
|
# 31431 # Parsec
|
||||||
5173 # SvelteKit
|
5173 # SvelteKit
|
||||||
8090 # PocketBase
|
8090 # PocketBase
|
||||||
|
4242 # Lan-Mouse
|
||||||
];
|
];
|
||||||
|
|
||||||
allowedUDPPorts = [
|
allowedUDPPorts = [
|
||||||
@ -66,6 +67,7 @@
|
|||||||
# 31431 # Parsec
|
# 31431 # Parsec
|
||||||
5173 # SvelteKit
|
5173 # SvelteKit
|
||||||
8090 # PocketBase
|
8090 # PocketBase
|
||||||
|
4242 # Lan-Mouse
|
||||||
];
|
];
|
||||||
|
|
||||||
wireguard-tunnels = {
|
wireguard-tunnels = {
|
||||||
|
|||||||
@ -100,6 +100,7 @@
|
|||||||
enableRedistributableFirmware = true;
|
enableRedistributableFirmware = true;
|
||||||
# cpu.intel.updateMicrocode = true;
|
# cpu.intel.updateMicrocode = true;
|
||||||
cpu.amd.updateMicrocode = true;
|
cpu.amd.updateMicrocode = true;
|
||||||
|
bluetooth.enable = true;
|
||||||
|
|
||||||
nvidia = {
|
nvidia = {
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
|||||||
@ -53,6 +53,7 @@
|
|||||||
hardware = {
|
hardware = {
|
||||||
enableRedistributableFirmware = true;
|
enableRedistributableFirmware = true;
|
||||||
cpu.intel.updateMicrocode = true;
|
cpu.intel.updateMicrocode = true;
|
||||||
|
bluetooth.enable = true;
|
||||||
|
|
||||||
graphics = {
|
graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user