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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@ -40,6 +62,49 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
@ -187,6 +252,28 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
@ -457,6 +544,7 @@
|
||||
"emacs-overlay": "emacs-overlay",
|
||||
"hardware": "hardware",
|
||||
"home-manager": "home-manager",
|
||||
"hyprpanel": "hyprpanel",
|
||||
"nix-alien": "nix-alien",
|
||||
"nix-flatpak": "nix-flatpak",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
|
||||
@ -23,6 +23,8 @@
|
||||
|
||||
# Ags for widgets (this was a terrible idea)
|
||||
ags.url = "github:Aylur/ags";
|
||||
hyprpanel.url = "github:jas-singhfsu/hyprpanel";
|
||||
hyprpanel.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# Other
|
||||
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
||||
|
||||
@ -39,7 +39,7 @@ rec {
|
||||
};
|
||||
|
||||
modules = {
|
||||
ags.enable = true; # TODO: Configure
|
||||
ags.enable = false; # TODO: Configure
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
@ -66,8 +66,8 @@ rec {
|
||||
|
||||
hyprland = {
|
||||
enable = true;
|
||||
# theme = "Three-Bears";
|
||||
theme = "Foggy-Lake";
|
||||
dunst.enable = false; # Disable for hyprpanel
|
||||
theme = "Foggy-Lake"; # Three-Bears
|
||||
|
||||
keybindings = {
|
||||
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 = {
|
||||
"2" = [
|
||||
"neovide"
|
||||
@ -174,6 +180,7 @@ rec {
|
||||
];
|
||||
};
|
||||
|
||||
hyprpanel.enable = true;
|
||||
kitty.enable = true;
|
||||
latex.enable = true;
|
||||
|
||||
@ -191,7 +198,7 @@ rec {
|
||||
theme = "Foggy-Lake";
|
||||
};
|
||||
|
||||
waybar.enable = true;
|
||||
waybar.enable = false;
|
||||
zathura.enable = true;
|
||||
};
|
||||
|
||||
@ -346,6 +353,7 @@ rec {
|
||||
AusweisApp2
|
||||
thunderbird # TODO: Email module
|
||||
obsidian
|
||||
# anytype # Use flatpak
|
||||
helvum
|
||||
|
||||
# Office
|
||||
@ -616,6 +624,7 @@ rec {
|
||||
|
||||
# "com.google.Chrome"
|
||||
# "md.obsidian.Obsidian" # NOTE: Installed via package
|
||||
"io.anytype.anytype"
|
||||
];
|
||||
|
||||
uninstallUnmanaged = true;
|
||||
@ -641,6 +650,18 @@ rec {
|
||||
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,
|
||||
nixosConfig,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
@ -56,39 +57,95 @@
|
||||
waybar.monitor = "HDMI-A-1";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# quartus-prime-lite # Intel FPGA design software
|
||||
|
||||
# Don't want heavy IDE's on the laptop
|
||||
jetbrains.clion
|
||||
jetbrains.rust-rover
|
||||
jetbrains.pycharm-professional
|
||||
jetbrains.idea-ultimate
|
||||
jetbrains.webstorm
|
||||
|
||||
unityhub
|
||||
jetbrains.rider
|
||||
(with dotnetCorePackages;
|
||||
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
|
||||
]) # For Rider/Unity
|
||||
mono # For Rider/Unity
|
||||
];
|
||||
|
||||
blender
|
||||
# godot_4
|
||||
obs-studio
|
||||
kdePackages.kdenlive
|
||||
krita
|
||||
makemkv
|
||||
extra-path = with pkgs; [
|
||||
dotnetCore
|
||||
dotnetPackages.Nuget
|
||||
mono
|
||||
# msbuild
|
||||
|
||||
steam-devices-udev-rules
|
||||
];
|
||||
# Add any extra binaries you want accessible to Rider here
|
||||
];
|
||||
|
||||
# home.file.".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = config.lib.file.mkOutOfStoreSymlink "${config.paths.dotfiles}/mangohud/MangoHud.conf";
|
||||
home.file.".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = ../../../config/mangohud/MangoHud.conf;
|
||||
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
|
||||
|
||||
# Don't want heavy IDE's on the laptop
|
||||
jetbrains.clion
|
||||
jetbrains.rust-rover
|
||||
jetbrains.pycharm-professional
|
||||
jetbrains.idea-ultimate
|
||||
jetbrains.webstorm
|
||||
|
||||
# Unity Stuff
|
||||
unityhub
|
||||
rider
|
||||
dotnetCore
|
||||
mono
|
||||
|
||||
blender
|
||||
godot_4
|
||||
obs-studio
|
||||
kdePackages.kdenlive
|
||||
krita
|
||||
makemkv
|
||||
|
||||
steam-devices-udev-rules
|
||||
];
|
||||
|
||||
file = {
|
||||
".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 = {
|
||||
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
|
||||
$fg-color: #{"@theme_fg_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;
|
||||
color: $fg-color;
|
||||
font-weight: bold;
|
||||
font-size: x-large;
|
||||
|
||||
>centerbox {
|
||||
background: $bg-color;
|
||||
border-radius: 10px;
|
||||
margin: 8px;
|
||||
}
|
||||
.Bar {
|
||||
background-color: rgba($light-base, 0.3);
|
||||
border-radius: 6px;
|
||||
border-width: 2px;
|
||||
border-color: $dark-lavender;
|
||||
border-style: solid;
|
||||
margin: 10px 10px 0 10px;
|
||||
|
||||
button {
|
||||
border-radius: 8px;
|
||||
margin: 2px;
|
||||
.LauncherButton {
|
||||
background-color: $dark-lavender;
|
||||
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 { 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) {
|
||||
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
|
||||
|
||||
return <window
|
||||
visible
|
||||
cssClasses={["Bar"]}
|
||||
cssClasses={["Window"]}
|
||||
application={App}
|
||||
gdkmonitor={gdkmonitor}
|
||||
exclusivity={Astal.Exclusivity.EXCLUSIVE}
|
||||
anchor={TOP | LEFT | RIGHT}
|
||||
application={App}>
|
||||
<centerbox cssName="centerbox">
|
||||
<button
|
||||
onClicked="echo hello"
|
||||
hexpand
|
||||
halign={Gtk.Align.CENTER}
|
||||
>
|
||||
Welcome to AGS!
|
||||
</button>
|
||||
<box />
|
||||
<menubutton
|
||||
hexpand
|
||||
halign={Gtk.Align.CENTER}
|
||||
>
|
||||
<label label={time()} />
|
||||
<popover>
|
||||
<Gtk.Calendar />
|
||||
</popover>
|
||||
</menubutton>
|
||||
</centerbox>
|
||||
</window>
|
||||
visible
|
||||
|
||||
child={
|
||||
<centerbox
|
||||
cssClasses={["Bar"]}
|
||||
|
||||
startWidget={
|
||||
<box
|
||||
halign={Gtk.Align.START}
|
||||
children={[
|
||||
<button
|
||||
cssClasses={["LauncherButton"]}
|
||||
onClicked="rofi -drun-show-actions -show drun"
|
||||
cursor={Gdk.Cursor.new_from_name("pointer", null)}
|
||||
label={""}
|
||||
/>,
|
||||
|
||||
<label
|
||||
cssClasses={["UserLabel"]}
|
||||
label={user((value) => `${value.toUpperCase()}`)}
|
||||
/>,
|
||||
|
||||
<label
|
||||
cssClasses={["UptimeLabel"]}
|
||||
label={uptime((value) => `${value}`)}
|
||||
/>,
|
||||
|
||||
<label
|
||||
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
|
||||
];
|
||||
|
||||
# This should symlink
|
||||
configDir = ./config;
|
||||
# This should symlink but doesn't, it copies the files :/
|
||||
# configDir = ./config;
|
||||
};
|
||||
|
||||
# The ags module doesn't expose the "astal" cli tool or extraPackages
|
||||
@ -64,11 +64,67 @@ in {
|
||||
};
|
||||
|
||||
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";
|
||||
|
||||
# LSP typechecking support (use ags --init)
|
||||
# ".config/ags/types".source = config.lib.file.mkOutOfStoreSymlink "${pkgs.ags}/share/com.github.Aylur.ags/types";
|
||||
# NOTE: Don't symlink to ~/.config/ags/colors.scss, since that is already used by configDir
|
||||
".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.nixvim.homeManagerModules.nixvim
|
||||
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\""
|
||||
"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"
|
||||
|
||||
# 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.
|
||||
# This is used for example when running systemd commands without root.
|
||||
"${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1"
|
||||
@ -316,7 +319,7 @@ in {
|
||||
|
||||
# Notification service
|
||||
dunst = {
|
||||
enable = true;
|
||||
enable = hyprland.dunst.enable;
|
||||
|
||||
iconTheme.package = pkgs.papirus-icon-theme;
|
||||
iconTheme.name = "Papirus";
|
||||
@ -435,7 +438,8 @@ in {
|
||||
]
|
||||
++ lib.pipe hyprland.transparent [
|
||||
(builtins.map mkTranslucentRule)
|
||||
];
|
||||
]
|
||||
++ hyprland.windowrules;
|
||||
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
@ -464,9 +468,10 @@ in {
|
||||
layerrule = [
|
||||
"blur,rofi"
|
||||
"ignorealpha 0.001,rofi"
|
||||
# "dimaround,rofi"
|
||||
"dimaround,rofi"
|
||||
|
||||
"blur,waybar"
|
||||
"blur,gtk4-layer-shell"
|
||||
];
|
||||
|
||||
decoration = {
|
||||
|
||||
@ -25,6 +25,8 @@ with mylib.modules; {
|
||||
description = "Wallpaper and colorscheme to use";
|
||||
};
|
||||
|
||||
dunst.enable = mkEnableOption "Enable dunst notification daemon";
|
||||
|
||||
monitors = mkOption {
|
||||
type = types.attrs;
|
||||
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 {
|
||||
type = types.str;
|
||||
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.portal = {
|
||||
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; [
|
||||
# TODO: Needed?
|
||||
# xdg-desktop-portal-kde
|
||||
# xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-gtk
|
||||
|
||||
# xdg-desktop-portal-kde
|
||||
# xdg-desktop-portal-hyprland # Already enabled by hyprland system module
|
||||
# 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)
|
||||
# locate.enable = true; # Periodically update index
|
||||
ntp.enable = true; # Clock sync
|
||||
gvfs.enable = false; # Network shares TODO: Only gnome? Needed?
|
||||
gvfs.enable = true; # Network shares, spotify cover art caching, ...
|
||||
udev = {
|
||||
packages = with pkgs; [
|
||||
usb-blaster-udev-rules # For Intel Quartus
|
||||
|
||||
@ -58,6 +58,7 @@
|
||||
# 31431 # Parsec
|
||||
5173 # SvelteKit
|
||||
8090 # PocketBase
|
||||
4242 # Lan-Mouse
|
||||
];
|
||||
|
||||
allowedUDPPorts = [
|
||||
@ -66,6 +67,7 @@
|
||||
# 31431 # Parsec
|
||||
5173 # SvelteKit
|
||||
8090 # PocketBase
|
||||
4242 # Lan-Mouse
|
||||
];
|
||||
|
||||
wireguard-tunnels = {
|
||||
|
||||
@ -100,6 +100,7 @@
|
||||
enableRedistributableFirmware = true;
|
||||
# cpu.intel.updateMicrocode = true;
|
||||
cpu.amd.updateMicrocode = true;
|
||||
bluetooth.enable = true;
|
||||
|
||||
nvidia = {
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
|
||||
@ -53,6 +53,7 @@
|
||||
hardware = {
|
||||
enableRedistributableFirmware = true;
|
||||
cpu.intel.updateMicrocode = true;
|
||||
bluetooth.enable = true;
|
||||
|
||||
graphics = {
|
||||
enable = true;
|
||||
|
||||
Reference in New Issue
Block a user