basic quickshell config

This commit is contained in:
Daniel Bulant 2025-06-19 21:21:43 +02:00
parent 99f4cef832
commit 3fc1005c35
No known key found for this signature in database
19 changed files with 760 additions and 580 deletions

View file

@ -1,10 +1,3 @@
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
#autogenerated = 1 # remove this line to remove the warning
#env=LIBSEAT_BACKEND,seatd
# env = HYPRLAND_LOG_WLR,1
#env = WLR_DRM_DEVICES,$HOME/.config/hypr/nvidia:$HOME/.config/hypr/amd
@ -25,9 +18,9 @@ monitor=,preferred,auto,1
# env = GBM_BACKEND,nvidia-drm
# env = __GLX_VENDOR_LIBRARY_NAME,nvidia
# cursor {
# no_hardware_cursors = true
# }
cursor {
no_hardware_cursors = true
}
source = ~/.config/hypr/monitors.conf
source = ~/.config/hypr/workspaces.conf
@ -75,7 +68,8 @@ exec-once=lorri daemon
#exec-once=wlsunset -S 6:00 -s 21:30
exec-once=swaybg -m fill -i ~/.config/hypr/wallpapers/sunflowers.jpg
exec-once=waybar
# exec-once=waybar
exec-once=quickshell
exec-once=blueman-applet
exec-once=dunst
exec-once=udev-block-notify
@ -100,9 +94,9 @@ env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_ENABLE_HIGHDPI_SCALING,1
env = QT_QPA_PLATFORM,wayland;xcb
env = XCURSOR_SIZE,24
#env = LIBVA_DRIVER_NAME,nvidia
env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
#env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
#env = WLR_NO_HARDWARE_CURSORS,1
env = WLR_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0
env = GDK_SCALE,1
@ -243,19 +237,19 @@ misc {
mouse_move_enables_dpms=true
}
windowrule=float,blueman
windowrule=float,Anydesk
windowrule=float,file_progress
windowrule=float,confirm
windowrule=float,dialog
windowrule=float,download
windowrule=float,notification
windowrule=float,error
windowrule=float,splash
windowrule=float,confirmreset
windowrule=float,class:blueman
windowrule=float,class:Anydesk
windowrule=float,class:file_progress
windowrule=float,class:confirm
windowrule=float,class:dialog
windowrule=float,class:download
windowrule=float,class:notification
windowrule=float,class:error
windowrule=float,class:splash
windowrule=float,class:confirmreset
windowrule=float,title:Open File
windowrule=float,title:branchdialog
windowrule=tile,*vivaldi*
windowrule=tile,title:*vivaldi*
blurls=gtk-layer-shell
blurls=lockscreen
@ -419,7 +413,7 @@ decoration {
#windowrule = nofullscreenrequest,flameshot
windowrule = float,flameshot
windowrule = monitor 1,flameshot
windowrule = move 0 0,flameshot
windowrule = noanim,flameshot
windowrule = float,title:flameshot
windowrule = monitor 1,title:flameshot
windowrule = move 0 0,title:flameshot
windowrule = noanim,title:flameshot

View file

@ -254,10 +254,10 @@ $env.config = {
}
}
filesize: {
metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard)
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto
}
# filesize: {
# metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard)
# format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto
# }
cursor_shape: {
emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line (line is the default)

View file

@ -0,0 +1,114 @@
import Quickshell
import Quickshell.Hyprland
// import Quickshell.Services.SystemTray
import Quickshell.Services.Pipewire
import Quickshell.Services.Notifications
import QtQuick
import "../widgets"
import QtQuick.Layouts
Scope {
property font customFont: Qt.font({
bold: true,
pointSize: 12,
family: "FantasqueSansMNerdFont"
})
Variants {
model: Quickshell.screens
PanelWindow {
id: root
property var modelData
screen: modelData
anchors {
top: true
left: true
right: true
}
margins {
top: 10
left: 10
right: 10
}
height: 50
color: "#171a18"
RowLayout {
spacing: 15
anchors {
left: parent.left
verticalCenter: parent.verticalCenter
leftMargin: 30
}
Text {
font: customFont
color: "#8ec07c"
text: ""
}
HyprlandWorkspacesWidget {
font: customFont
default_color: "#689D6A"
active_color: "#8ec07c"
empty_color: "#928374"
spacing: 15
}
}
RowLayout {
anchors.centerIn: parent
spacing: 15
ClockWidget {
font: customFont
color: "#8ec07c"
}
NotificationsWidget {
font: customFont
color: "#8ec07c"
}
}
RowLayout {
anchors {
right: parent.right
verticalCenter: parent.verticalCenter
rightMargin: 30
}
spacing: 15
// Image {
// Layout.fillHeight: true
// Layout.maximumHeight: 20
//
// source: SystemTray.items.values[0].icon
// fillMode: Image.PreserveAspectFit
// }
PlayingWidget {
custom_font: customFont
hover_color: "#928374"
default_color: "#8ec07c"
}
NetworkWidget {
font: customFont
color: "#8ec07c"
}
AudioWidget {
font: customFont
color: "#8ec07c"
node: Pipewire.defaultAudioSink
}
}
}
}
}

View file

@ -0,0 +1,39 @@
import QtQuick
import Quickshell.Hyprland
Text {
id: text
required property int id
required property string icon
required property color default_color
required property color empty_color
required property color active_color
text: icon
color: empty_color
Component.onCompleted: {
Hyprland.rawEvent.connect(hyprEvent)
colorWorkspace()
}
function hyprEvent(e) {
if (e.name == "workspace") {
if (e.data == id) {
text.color = text.active_color
} else {
colorWorkspace()
}
}
}
function colorWorkspace() {
if (Hyprland.workspaces.values.some((w) => {
return w.id == id && w.lastIpcObject.windows > 0
})) {
text.color = text.default_color
} else {
text.color = text.empty_color
}
}
}

View file

@ -0,0 +1,10 @@
import QtQuick
Text {
required property int id
required property string body
required property string summary
property int margin
text: `- ${summary}: ${body}`
}

View file

@ -0,0 +1,100 @@
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import Quickshell
import Quickshell.Wayland
import Quickshell.Services.Notifications
PanelWindow {
required property font custom_font
required property color text_color
property list<QtObject> notification_objects
width: 500
height: 600
color: "#171a18"
WlrLayershell.layer: WlrLayer.Overlay
Rectangle {
border.width: 5
border.color: "#8ec07c"
anchors.fill: parent
color: "transparent"
ColumnLayout {
id: content
anchors {
left: parent.left
leftMargin: 10
right: parent.right
rightMargin: 10
top: parent.top
topMargin: 10
}
RowLayout {
Layout.fillWidth: true
Text {
Layout.fillWidth: true
text: "Notifications:"
font: custom_font
color: text_color
}
Text {
text: "clear"
font: custom_font
color: text_color
TapHandler {
id: tapHandler
gesturePolicy: TapHandler.ReleaseWithinBounds
onTapped: {
server.trackedNotifications.values.forEach((notification) => {
notification.tracked = false
})
notification_objects.forEach((object) => {
object.destroy();
})
notification_objects = [];
}
}
HoverHandler {
id: mouse
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
cursorShape: Qt.PointingHandCursor
}
}
}
}
}
NotificationServer {
id: server
onNotification: (notification) => {
notification.tracked = true
console.log(JSON.stringify(notification));
var notification_component = Qt.createComponent("Notification.qml");
var notification_object = notification_component
.createObject(content,
{
id: notification.id,
body: notification.body,
summary: notification.summary,
font: custom_font,
color: text_color,
margin: 10
}
)
if (notification_object == null) {
console.log("Error creating notification")
} else {
notification_objects.push(notification_object);
}
}
}
}

View file

@ -0,0 +1,21 @@
pragma Singleton
import Quickshell
import Quickshell.Io
import QtQuick
Singleton {
property var date: new Date()
property string time: date.getHours() +
":" + date.getMinutes().toString().padStart(2, "0") +
" - " + date.getDate() +
"/" + (date.getMonth() + 1).toString().padStart(2, "0") +
"/" + date.getFullYear()
Timer {
interval: 1000
running: true
repeat: true
onTriggered: date = new Date()
}
}

View file

@ -0,0 +1,9 @@
import Quickshell
import QtQuick
import "./components"
import "./widgets"
import "./services"
ShellRoot {
Bar {}
}

View file

@ -0,0 +1,39 @@
import QtQuick
import Quickshell.Services.Pipewire
Text {
required property PwNode node
property list<string> icons: [
"",
"",
""
]
PwObjectTracker {
objects: [node]
}
HoverHandler {
id: mouse
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
cursorShape: Qt.PointingHandCursor
}
TapHandler {
id: tapHandler
gesturePolicy: TapHandler.ReleaseWithinBounds
onTapped: node.audio.muted = !node.audio.muted
}
text: {
var icon_id = Math.floor(node.audio.volume*icons.length)
var output = icon_id >= icons.length ? icons[icons.length-1] : icons[icon_id]
if (mouse.hovered) {
output = output + " " + Math.round(node.audio.volume*100) + "%"
}
if (node.audio.muted) {
output = ""
}
return output
}
}

View file

@ -0,0 +1,6 @@
import QtQuick
import "../services"
Text {
text: Time.time
}

View file

@ -0,0 +1,33 @@
import Quickshell.Hyprland
import QtQuick
import QtQuick.Layouts
RowLayout {
id: container
property var icons: {1: "一", 2: "二", 3: "三", 4: "四", 5: "五"}
property int nWorkspaces: 5
property font font
property color default_color
property color empty_color
property color active_color
Component.onCompleted: {
var workspaceComponent = Qt.createComponent("../components/HyprlandWorkspace.qml");
for (var i = 1; i <= nWorkspaces; i++) {
var workspace = workspaceComponent
.createObject(container,
{
id: i,
icon: icons[i],
font: font,
default_color: default_color,
empty_color: empty_color,
active_color: active_color
}
)
if (workspace == null) {
console.log("Error creating workspace")
}
}
}
}

View file

@ -0,0 +1,57 @@
import QtQuick
import Quickshell
import Quickshell.Io
Text {
id: network
property int quality
property string name
property list<string> icons: [
"󰤯",
"󰤟",
"󰤢",
"󰤥",
"󰤨"
]
property string no_connection: "󰤭"
text: {
var output = network.no_connection
if (name != "") {
var icon_id = Math.floor((quality*icons.length)/100)
output = icon_id >= icons.length ? icons[icons.length-1] : icons[icon_id]
if (mouse.hovered) {
output = output + " " + name
}
}
return output
}
Process {
id: nmcliProc
command: ["sh", "-c", "nmcli device wifi rescan | nmcli -t -f IN-USE,SSID,SIGNAL device wifi list | grep '^*'"]
running: true
stdout: SplitParser {
onRead: data => {
data = data.split(":")
name = data[1]
quality = data[2]
}
}
}
Timer {
interval: 1000
running: true
repeat: true
onTriggered: {
nmcliProc.running = true
}
}
HoverHandler {
id: mouse
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
}
}

View file

@ -0,0 +1,43 @@
import QtQuick
import Quickshell.Services.Notifications
import "../components"
Text {
id: root
property bool showNotification: false
text: " " + notifServer.trackedNotifications.values.length
NotificationServer {
id: notifServer
onNotification: (notification) => {
notification.tracked = true
}
}
HoverHandler {
id: mouse
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
cursorShape: Qt.PointingHandCursor
}
TapHandler {
id: tapHandler
gesturePolicy: TapHandler.ReleaseWithinBounds
onTapped: showNotification = !showNotification
}
NotificationPanel {
custom_font: root.font
text_color: root.color
visible: showNotification
anchors {
top: parent.top
}
margins {
top: 10
}
}
}

View file

@ -0,0 +1,179 @@
import QtQuick
import QtQuick.Layouts
import Quickshell.Services.Mpris
RowLayout {
id: root
required property font custom_font
property color default_color: "#8ec07c"
property color hover_color: "#928374"
property int text_width: 100
spacing: 10
Rectangle {
id: bounding
height: content.height
color: "transparent"
clip: true
Layout.minimumWidth: text_width
width: text_width
Text {
id: content
color: mouse.hovered ? hover_color : default_color
font: custom_font
text: (Mpris.players.values.length > 0 && Mpris.players.values[0].trackTitle.length > 0) ? Mpris.players.values[0].trackTitle : ""
clip: true
}
}
Text {
text: (Mpris.players.values.length > 0 && Mpris.players.values[0].trackTitle.length > 0) ? "" : "󰝛"
color: mouse.hovered ? hover_color : default_color
font: custom_font
z: 1
Text {
visible: mouse.hovered
color: default_color
font: parent.font
x: -(parent.width + text_width/2)
text: {
var state = "";
if (Mpris.players.values.length > 0 && Mpris.players.values[0].trackTitle.length > 0) {
switch (Mpris.players.values[0].playbackState) {
case 1:
state = "";
break;
case 2:
state = "";
break;
default:
state = "";
}
}
return state
}
}
}
Timer {
interval: 50
running: true
repeat: true
onTriggered: {
if (content.width > text_width) {
if (content.x <= -content.width) {
content.x = text_width;
} else {
content.x = content.x - 1;
}
}
}
}
TapHandler {
id: tapHandler
gesturePolicy: TapHandler.ReleaseWithinBounds
onTapped: {
if (Mpris.players.values.length > 0) {
if (Mpris.players.values[0].playbackState == 1) {
Mpris.players.values[0].pause();
} else {
Mpris.players.values[0].play();
}
}
}
}
HoverHandler {
id: mouse
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
cursorShape: Qt.PointingHandCursor
enabled: Mpris.players.values.length > 0 && Mpris.players.values[0].trackTitle.length > 0
}
}
// Text {
// property int tStart: 0
// property int nChar: 15
// property int countStopped: 15
// property int counter: 0
// property color default_color: "#8ec07c"
// property color hover_color: "#689D6A"
//
// color: mouse.hovered ? hover_color : default_color
//
// text: {
// var output = "";
// if (Mpris.players.values.length > 0 && Mpris.players.values[0].trackTitle.length > 0) {
// output = Mpris.players.values[0].trackTitle;
// output = ` ${output.substr(tStart, nChar)}`;
// } else {
// output = "󰝛";
// }
// return output
// }
//
// Text {
// visible: mouse.hovered
// color: default_color
// font: parent.font
// anchors.centerIn: parent
// text: {
// var state = "";
// switch (Mpris.players.values[0].playbackState) {
// case 1:
// state = "";
// break;
// case 2:
// state = "";
// break;
// default:
// state = "";
// }
// return state
// }
// }
//
// Timer {
// interval: 250
// running: true
// repeat: true
// onTriggered: {
// if (counter < countStopped) {
// counter++;
// tStart = 0;
// } else {
// if (tStart + nChar < Mpris.players.values[0].trackTitle.length) {
// tStart++;
// } else {
// counter = 0;
// }
// }
// }
// }
//
// TapHandler {
// id: tapHandler
// gesturePolicy: TapHandler.ReleaseWithinBounds
// onTapped: {
// if (Mpris.players.values.length > 0) {
// if (Mpris.players.values[0].playbackState == 1) {
// Mpris.players.values[0].pause();
// } else {
// Mpris.players.values[0].play();
// }
// }
// }
// }
//
// HoverHandler {
// id: mouse
// acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
// cursorShape: Qt.PointingHandCursor
// }
// }

View file

@ -3,7 +3,7 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, hyprland, options, hyprland-plugins, nixpkgs-unstable, lib, nixos-hardware, zen-browser/*, kwin-effects-forceblur*/, ... }:
{ config, pkgs, /*hyprland,*/ options, /*hyprland-plugins, nixpkgs-unstable,*/ lib, nixos-hardware, zen-browser/*, kwin-effects-forceblur*/, ... }:
# let
# unstable-pkgs = nixpkgs-unstable.legacyPackages.x86_64-linux; #import nixpkgs-unstable.nixosModules.readOnlyPkgs {};
# unstable-pkgs = hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system};
@ -120,6 +120,7 @@
services.localtimed.enable = true;
services.lorri.enable = true;
services.blueman.enable = true;
qt.enable = true;
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
programs.wireshark.enable = true;
@ -320,15 +321,17 @@
57621 # Spotify app discovery
42000
42001
1716 # kdeconnect
];
networking.firewall.allowedUDPPorts = [
5353 # Google cast discovery
42000 # warpinator
42001 # warpinator
67 68 # dhcp
1716 # kdeconnect
];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
networking.firewall.enable = false;
services.udev.extraRules = ''
# Wooting One Legacy

View file

@ -1,39 +1,6 @@
{
"nodes": {
"aquamarine": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1742213273,
"narHash": "sha256-0l0vDb4anfsBu1rOs94bC73Hub+xEivgBAo6QXl2MmU=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "484b732195cc53f4536ce4bd59a5c6402b1e7ccf",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"type": "github"
}
},
"aquamarine_2": {
"inputs": {
"hyprutils": [
"hyprland-plugins",
@ -106,32 +73,16 @@
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1743550720,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"lastModified": 1749398372,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github"
},
"original": {
@ -141,28 +92,6 @@
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"hyprland",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gitignore_2": {
"inputs": {
"nixpkgs": [
"hyprland-plugins",
@ -192,50 +121,21 @@
]
},
"locked": {
"lastModified": 1747331121,
"narHash": "sha256-3MmiUN/jOHBHQUnjqzg6qKArc17j2OS6jisEppDY4g8=",
"lastModified": 1749154018,
"narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "1eec32f0efe3b830927989767a9e6ece0d82d608",
"rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"ref": "release-25.05",
"repo": "home-manager",
"type": "github"
}
},
"hyprcursor": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1742215578,
"narHash": "sha256-zfs71PXVVPEe56WEyNi2TJQPs0wabU4WAlq0XV7GcdE=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "2fd36421c21aa87e2fe3bee11067540ae612f719",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprcursor",
"type": "github"
}
},
"hyprcursor_2": {
"inputs": {
"hyprlang": [
"hyprland-plugins",
@ -268,35 +168,6 @@
}
},
"hyprgraphics": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1739049071,
"narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprgraphics",
"type": "github"
}
},
"hyprgraphics_2": {
"inputs": {
"hyprutils": [
"hyprland-plugins",
@ -344,23 +215,22 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1743178567,
"narHash": "sha256-MRgOvqs+bqS7I72N/1CJUShaXxej1m1XzheH60t1xLs=",
"lastModified": 1746637327,
"narHash": "sha256-6aBqHP+pa8bqhORp/c8Y/Sw/KacWTow2qvOYNoAQ7M8=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "29e2e59fdbab8ed2cc23a20e3c6043d5decb5cdc",
"rev": "6abb5b0c7e98e064c752075b78cb7389ea818f46",
"type": "github"
},
"original": {
"owner": "hyprwm",
"ref": "v0.48.1",
"repo": "Hyprland",
"type": "github"
}
},
"hyprland-plugins": {
"inputs": {
"hyprland": "hyprland_2",
"hyprland": "hyprland",
"nixpkgs": [
"nixpkgs"
],
@ -371,11 +241,11 @@
]
},
"locked": {
"lastModified": 1747595918,
"narHash": "sha256-5wjvmFtk85uBJLnrKZbfrgo9OTTQlFP18ZNgfBwFsz0=",
"lastModified": 1750357661,
"narHash": "sha256-ODKLzMO/y79mHpUL5+6/6S6GTNAzanoIWUAwiyVnwm8=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "4dea1029e837ae642979ab509eb2eddc959470d0",
"rev": "a65f46c5646b11451a8ef462f9780e89f809cd5d",
"type": "github"
},
"original": {
@ -385,31 +255,6 @@
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1738422629,
"narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-protocols_2": {
"inputs": {
"nixpkgs": [
"hyprland-plugins",
@ -437,38 +282,6 @@
}
},
"hyprland-qt-support": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprland-qtutils",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"hyprland-qtutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-qtutils",
"systems"
]
},
"locked": {
"lastModified": 1737634706,
"narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=",
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"rev": "8810df502cdee755993cb803eba7b23f189db795",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"type": "github"
}
},
"hyprland-qt-support_2": {
"inputs": {
"hyprlang": [
"hyprland-plugins",
@ -506,42 +319,6 @@
"hyprland-qtutils": {
"inputs": {
"hyprland-qt-support": "hyprland-qt-support",
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-qtutils",
"hyprlang",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1739048983,
"narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"type": "github"
}
},
"hyprland-qtutils_2": {
"inputs": {
"hyprland-qt-support": "hyprland-qt-support_2",
"hyprlang": [
"hyprland-plugins",
"hyprland",
@ -579,65 +356,7 @@
"type": "github"
}
},
"hyprland_2": {
"inputs": {
"aquamarine": "aquamarine_2",
"hyprcursor": "hyprcursor_2",
"hyprgraphics": "hyprgraphics_2",
"hyprland-protocols": "hyprland-protocols_2",
"hyprland-qtutils": "hyprland-qtutils_2",
"hyprlang": "hyprlang_2",
"hyprutils": "hyprutils_2",
"hyprwayland-scanner": "hyprwayland-scanner_2",
"nixpkgs": "nixpkgs_2",
"pre-commit-hooks": "pre-commit-hooks_2",
"systems": "systems_2",
"xdph": "xdph_2"
},
"locked": {
"lastModified": 1746637327,
"narHash": "sha256-6aBqHP+pa8bqhORp/c8Y/Sw/KacWTow2qvOYNoAQ7M8=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "6abb5b0c7e98e064c752075b78cb7389ea818f46",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "Hyprland",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1741191527,
"narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "72df3861f1197e41b078faa3e38eedd60e00018d",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprlang_2": {
"inputs": {
"hyprutils": [
"hyprland-plugins",
@ -670,31 +389,6 @@
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1741534688,
"narHash": "sha256-EV3945SnjOCuRVbGRghsWx/9D89FyshnSO1Q6/TuQ14=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "dd1f720cbc2dbb3c71167c9598045dd3261d27b3",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprutils",
"type": "github"
}
},
"hyprutils_2": {
"inputs": {
"nixpkgs": [
"hyprland-plugins",
@ -722,31 +416,6 @@
}
},
"hyprwayland-scanner": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1739870480,
"narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"hyprwayland-scanner_2": {
"inputs": {
"nixpkgs": [
"hyprland-plugins",
@ -776,14 +445,14 @@
"nix-gaming": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_3"
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1747620037,
"narHash": "sha256-M5yyl1Cp5rolwGBuCEKXG6qJj9lao16lshqPF83z0qs=",
"lastModified": 1750353630,
"narHash": "sha256-WQe6vTVEQnreMUUiLkv7Ro8oxQfaMiecWJFAD+HRXWA=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "5d7985a2d5c877f6a276a2b024fff6bb2995ff24",
"rev": "f32963b465a2d1f31cdf53929bb46413950efde0",
"type": "github"
},
"original": {
@ -799,11 +468,11 @@
]
},
"locked": {
"lastModified": 1747540584,
"narHash": "sha256-cxCQ413JTUuRv9Ygd8DABJ1D6kuB/nTfQqC0Lu9C0ls=",
"lastModified": 1749960154,
"narHash": "sha256-EWlr9MZDd+GoGtZB4QsDzaLyaDQPGnRY03MFp6u2wSg=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "ec179dd13fb7b4c6844f55be91436f7857226dce",
"rev": "424a40050cdc5f494ec45e46462d288f08c64475",
"type": "github"
},
"original": {
@ -814,11 +483,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1747129300,
"narHash": "sha256-L3clA5YGeYCF47ghsI7Tcex+DnaaN/BbQ4dR2wzoiKg=",
"lastModified": 1750083401,
"narHash": "sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "e81fd167b33121269149c57806599045fd33eeed",
"rev": "61837d2a33ccc1582c5fabb7bf9130d39fee59ad",
"type": "github"
},
"original": {
@ -828,53 +497,6 @@
}
},
"nixpkgs": {
"locked": {
"lastModified": 1742069588,
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1743296961,
"narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1747542820,
"narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1746141548,
"narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=",
@ -890,13 +512,44 @@
"type": "github"
}
},
"nixpkgs_3": {
"nixpkgs-lib": {
"locked": {
"lastModified": 1747426788,
"narHash": "sha256-N4cp0asTsJCnRMFZ/k19V9akkxb7J/opG+K+jU57JGc=",
"lastModified": 1748740939,
"narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "656a64127e9d791a334452c6b6606d17539476e2",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1750134718,
"narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "12a55407652e04dcf2309436eb06fef0d3713ef3",
"rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1749871736,
"narHash": "sha256-K9yBph93OLTNw02Q6e9CYFGrUhvEXnh45vrZqIRWfvQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6afe187897bef7933475e6af374c893f4c84a293",
"type": "github"
},
"original": {
@ -906,23 +559,23 @@
"type": "github"
}
},
"nixpkgs_4": {
"nixpkgs_3": {
"locked": {
"lastModified": 1747485343,
"narHash": "sha256-YbsZyuRE1tobO9sv0PUwg81QryYo3L1F3R3rF9bcG38=",
"lastModified": 1750133334,
"narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9b5ac7ad45298d58640540d0323ca217f32a6762",
"rev": "36ab78dab7da2e4e27911007033713bab534187b",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"nixpkgs_4": {
"locked": {
"lastModified": 1727348695,
"narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
@ -942,29 +595,6 @@
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"hyprland",
"nixpkgs"
]
},
"locked": {
"lastModified": 1742058297,
"narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"pre-commit-hooks_2": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore_2",
"nixpkgs": [
"hyprland-plugins",
"hyprland",
@ -989,12 +619,11 @@
"inputs": {
"dolphin-overlay": "dolphin-overlay",
"home-manager": "home-manager",
"hyprland": "hyprland",
"hyprland-plugins": "hyprland-plugins",
"nix-gaming": "nix-gaming",
"nix-index-database": "nix-index-database",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_4",
"nixpkgs": "nixpkgs_3",
"nixpkgs-unstable": "nixpkgs-unstable",
"zen-browser": "zen-browser"
}
@ -1014,63 +643,7 @@
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": [
"hyprland",
"hyprland-protocols"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1741934139,
"narHash": "sha256-ZhTcTH9FoeAtbPfWGrhkH7RjLJZ7GeF18nygLAMR+WE=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "150b0b6f52bb422a1b232a53698606fe0320dde0",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
},
"xdph_2": {
"inputs": {
"hyprland-protocols": [
"hyprland-plugins",
@ -1119,7 +692,7 @@
},
"zen-browser": {
"inputs": {
"nixpkgs": "nixpkgs_5"
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1727721329,

View file

@ -1,11 +1,10 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
zen-browser.url = "github:MarceColl/zen-browser-flake";
nixos-hardware.url = "github:NixOS/nixos-hardware";
#hyprland.url = "github:hyprwm/Hyprland/v0.44.1-b";
hyprland.url = "github:hyprwm/Hyprland/v0.48.1";
# hyprland.url = "github:hyprwm/Hyprland/v0.48.1";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
# inputs.hyprland.follows = "hyprland";
@ -15,12 +14,8 @@
url = "github:rumboon/dolphin-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
# suyu = {
# url = "git+https://git.suyu.dev/suyu/nix-flake";
# inputs.nixpkgs.follows = "nixpkgs";
# };
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
@ -30,7 +25,7 @@
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { nixpkgs, dolphin-overlay, hyprland-plugins, hyprland, home-manager, nixpkgs-unstable, nix-gaming,/* suyu, */nix-index-database, ... }@attrs: {
outputs = { nixpkgs, dolphin-overlay, hyprland-plugins, /*hyprland,*/ home-manager, nixpkgs-unstable, nix-gaming,nix-index-database, ... }@attrs: {
nixosConfigurations.lenovo-nix = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = attrs;
@ -42,7 +37,7 @@
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.dan = (import ./home.nix) { inherit nixpkgs-unstable nix-gaming /*suyu */hyprland-plugins hyprland; };
home-manager.users.dan = (import ./home.nix) { inherit nixpkgs-unstable nix-gaming /*suyu hyprland*/ hyprland-plugins; };
home-manager.backupFileExtension = "backup";
}
./configuration.nix
@ -50,18 +45,5 @@
{ programs.nix-index-database.comma.enable = true; }
];
};
# homeConfigurations.lenovo-nix = home-manager.lib.homeManagerConfiguration {
# pkgs = import nixpkgs {
# system = "x86_64-linux";
# config.allowUnfree = true;
# };
# extraSpecialArgs = {inherit attrs;};
# modules = [
# ./home.nix
# ];
# };
};
}

View file

@ -1,4 +1,4 @@
{ nix-gaming, nixpkgs-unstable,/* suyu, */hyprland-plugins, hyprland, ... }:
{ nix-gaming, nixpkgs-unstable,/* suyu, */hyprland-plugins/*, hyprland*/, ... }:
{ pkgs, inputs, ...}:
let
@ -15,8 +15,8 @@ in
stateVersion = "24.05";
packages = with pkgs; [
# davinci-resolve # builds spidermonkey for some reason bruh
# robot3t
unstable.quickshell
minikube
nebula
nixpkgs-unstable.legacyPackages.${system}.jet-pilot
k9s
@ -28,17 +28,12 @@ in
anki-bin
xournalpp
simple-scan
dotnet-sdk
# acpilight
#kdePackages.plasma-workspace
godot_4
rar
wootility
surrealdb
#surrealist
pico-sdk
elf2uf2-rs
# nix-gaming.packages.${pkgs.system}.osu-lazer-bin
obsidian
betaflight-configurator
home-manager
@ -50,7 +45,8 @@ in
inter
fira
fira-code
fira-code-nerdfont
# fira-code-nerdfont
nerd-fonts.fira-code
iosevka
kitty
rofi-wayland
@ -61,7 +57,6 @@ in
meslo-lgs-nf
waybar
chromium
# firefox
dunst
sccache
swaybg
@ -70,12 +65,8 @@ in
kubectl
duf
dust
jetbrains.rust-rover
jetbrains.webstorm
jetbrains.phpstorm
jetbrains.pycharm-community-bin
jetbrains.clion
jetbrains.goland
jetbrains.datagrip
jetbrains.rider
datovka
@ -97,7 +88,7 @@ in
kdePackages.kinfocenter
kdePackages.kirigami-addons
kdePackages.ark
#xorg.xbacklight
kdePackages.qtdeclarative
cachix
playerctl
libcanberra-gtk3 # sound events
@ -117,7 +108,6 @@ in
cinny-desktop
gping
gparted
# redisinsight
valgrind
caddy
jq
@ -127,14 +117,12 @@ in
erlang
terraform
nodejs
# nodePackages.pnpm
corepack
ansible
aria2
qbittorrent
audacity
bettercap
# bitwarden
duperemove
ffmpeg
flameshot
@ -147,8 +135,6 @@ in
nheko
quickemu
qemu
# uwufetch
# vagrant
socat
websocat
whois
@ -164,7 +150,6 @@ in
nixpkgs-unstable.legacyPackages.${system}.zed-editor
nixpkgs-unstable.legacyPackages.${system}.pineflash
unstable.nosql-booster
# suyu.packages.${pkgs.stdenv.hostPlatform.system}.suyu
android-tools
hyperfine
@ -207,13 +192,6 @@ in
lsof
carapace
# (python312.withPackages (ps: with ps; [
# pyquery
# pygobject3
# ]))
# pipx
# gobject-introspection
crate2nix
];
};

View file

@ -1,4 +1,4 @@
# sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 30d
# nix-env --delete-generations 30d
# nix-collect-garbage
nh clean all -k 2 # -K 10d
nh clean all -k 1 # -K 10d