Compare commits

..

7 commits

13 changed files with 277 additions and 70 deletions

View file

@ -3,6 +3,9 @@ on:
workflow_dispatch:
push:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
parse-flake:
runs-on: ubuntu-latest
@ -96,7 +99,7 @@ jobs:
-d "Commit \`${GITHUB_SHA::7}\` deployed successfully." \
https://ntfy.sh/splitleaf
- name: Notify failure
if: needs.deploy.result != 'success'
if: needs.deploy.result == 'failure'
run: |
curl -s \
-H "Title: CI: Deploy failed" \

43
flake.lock generated
View file

@ -290,6 +290,48 @@
"type": "github"
}
},
"noctalia": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"noctalia-qs": "noctalia-qs"
},
"locked": {
"lastModified": 1772659442,
"narHash": "sha256-F1oSoSwGvBiqtSfGU9YzsjL9sP6IQDYQeUIQbXma70U=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "c56fa106b7d8c6ae3034ce6d706bc35432ac9ea6",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"type": "github"
}
},
"noctalia-qs": {
"inputs": {
"nixpkgs": [
"noctalia",
"nixpkgs"
]
},
"locked": {
"lastModified": 1772227064,
"narHash": "sha256-f821ZSoGpa/aXrWq0gPpea9qBnX8KDyavGKkptz2Mog=",
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"rev": "0741d27d2f7db567270f139c5d1684614ecf9863",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"type": "github"
}
},
"radicale-birthday-calendar": {
"flake": false,
"locked": {
@ -320,6 +362,7 @@
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable",
"noctalia": "noctalia",
"radicale-birthday-calendar": "radicale-birthday-calendar",
"sops": "sops",
"statix": "statix",

View file

@ -37,6 +37,11 @@
inputs.nixpkgs.follows = "nixpkgs";
};
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
inputs.nixpkgs.follows = "nixpkgs";

View file

@ -0,0 +1,51 @@
{
config,
pkgs,
lib,
...
}:
{
options.custom.de.hyprland.classic.enable = lib.mkEnableOption "";
config = lib.mkIf config.custom.de.hyprland.classic.enable {
custom = {
programs = {
hyprland.enable = true;
rofi.enable = true;
hyprlock.enable = true;
};
services = {
wpaperd.enable = true;
hypridle.enable = true;
waybar.enable = true;
cliphist.enable = true;
};
};
services.dunst.enable = true;
home.packages = [
pkgs.playerctl
pkgs.grimblast
];
wayland.windowManager.hyprland.extraConfig = lib.mkBefore ''
# Variables
$play-pause = playerctl --ignore-player=firefox play-pause
$play-next = playerctl --ignore-player=firefox next
$play-previous = playerctl --ignore-player=firefox previous
$mute = wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
$volume-up = wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
$volume-down = wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
$mute-mic = wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
# Launch programs
bind = SUPER, R, exec, rofi -show drun
bind = SUPER, V, exec, rofi-clipboard
# Manage session
bindrl = SUPER CONTROL, L, exec, loginctl lock-session
'';
};
}

View file

@ -1,42 +0,0 @@
{
config,
osConfig,
pkgs,
lib,
...
}:
{
options.custom.de.hyprland.enable = lib.mkEnableOption "" // {
default = osConfig.custom.de.hyprland.enable;
};
config = lib.mkIf config.custom.de.hyprland.enable {
wayland.windowManager.hyprland = {
enable = true;
package = null;
portalPackage = null;
};
home.packages = [
pkgs.playerctl
pkgs.grimblast
];
custom = {
services = {
wpaperd.enable = true;
hypridle.enable = true;
waybar.enable = true;
cliphist.enable = true;
};
programs = {
rofi.enable = true;
hyprlock.enable = true;
btop.enable = true;
};
};
services.dunst.enable = true;
};
}

View file

@ -0,0 +1,41 @@
{
config,
pkgs,
lib,
...
}:
{
options.custom.de.hyprland.noctalia.enable = lib.mkEnableOption "";
config = lib.mkIf config.custom.de.hyprland.noctalia.enable {
custom = {
programs = {
hyprland.enable = true;
noctalia-shell.enable = true;
};
services.cliphist.enable = true;
};
home.packages = [ pkgs.grimblast ];
wayland.windowManager.hyprland.extraConfig = lib.mkBefore ''
# Variables
$ipc = noctalia-shell ipc call
$play-pause = $ipc media playPause
$play-next = $ipc media next
$play-previous = $ipc media previous
$mute = $ipc volume muteOutput
$volume-up = $ipc volume increase
$volume-down = $ipc volume decrease
$mute-mic = $ipc volume muteInput
# Launch programs
bind = SUPER, R, exec, $ipc launcher toggle
bind = SUPER, V, exec, $ipc launcher clipboard
# Manage session
bindrl = SUPER CONTROL, L, exec, $ipc lockScreen lock
'';
};
}

View file

@ -0,0 +1,12 @@
{ config, lib, ... }:
{
options.custom.programs.hyprland.enable = lib.mkEnableOption "";
config = lib.mkIf config.custom.programs.hyprland.enable {
wayland.windowManager.hyprland = {
enable = true;
package = null;
portalPackage = null;
};
};
}

View file

@ -1,30 +1,19 @@
{ config, lib, ... }:
{
config = lib.mkIf config.custom.de.hyprland.enable {
config = lib.mkIf config.custom.programs.hyprland.enable {
wayland.windowManager.hyprland.extraConfig = ''
# Bindflags:
# r = release
# e = repeat
# l = locked
# Variables
$play-pause = playerctl --ignore-player=firefox play-pause
$play-next = playerctl --ignore-player=firefox next
$play-previous = playerctl --ignore-player=firefox previous
$mute = wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
$volume-up = wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
$volume-down = wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
$mute-mic = wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
# Essentials
bind = SUPER SHIFT, C, killactive,
bind = SUPER SHIFT, V, togglefloating,
bind = SUPER SHIFT, F, fullscreen, 0
# Launch programs
bind = SUPER, R, exec, rofi -show drun
bind = SUPER, RETURN, exec, kitty
bind = SUPER, V, exec, rofi-clipboard
bind = SUPER, B, exec, firefox
bind = SUPER, C, exec, code
@ -61,7 +50,6 @@
bindrl = SUPER CONTROL, R, exec, reboot
bindrl = SUPER CONTROL, H, exec, systemctl hibernate
bindrl = SUPER CONTROL, S, exec, systemctl sleep
bindrl = SUPER CONTROL, L, exec, loginctl lock-session
bindrl = SUPER CONTROL, B, exec, sleep 1 && hyprctl dispatch dpms off
# Control media

View file

@ -1,6 +1,6 @@
{ config, lib, ... }:
{
config = lib.mkIf config.custom.de.hyprland.enable {
config = lib.mkIf config.custom.programs.hyprland.enable {
wayland.windowManager.hyprland.settings = {
input = {
kb_layout = "de";

View file

@ -0,0 +1,106 @@
{
config,
osConfig,
inputs,
lib,
...
}:
{
imports = [ inputs.noctalia.homeModules.default ];
options.custom.programs.noctalia-shell.enable = lib.mkEnableOption "";
config = lib.mkIf config.custom.programs.noctalia-shell.enable {
programs.noctalia-shell = {
enable = true;
systemd.enable = true;
settings = {
general = {
animationSpeed = 1.8;
enableShadows = false;
compactLockScreen = true;
autoStartAuth = true;
allowPasswordWithFprintd = true;
showSessionButtonsOnLockScreen = false;
avatarImage = "/home/seb/Pictures/face";
telemetryEnabled = false;
};
ui.boxBorderEnabled = true;
colorSchemes = {
darkMode =
{
dark = true;
light = false;
}
.${config.custom.theme};
predefinedScheme = "GitHub Dark";
};
wallpaper = {
enabled = true;
directory = "/home/seb/Pictures/Wallpapers";
transitionType = "fade";
transitionDuration = 1000;
automationEnabled = true;
randomIntervalSec = 1800;
};
bar = {
barType = "simple";
position = "bottom";
density = "default";
fontScale = 1.2;
widgetSpacing = 10;
widgets = {
left = lib.singleton {
id = "Clock";
formatHorizontal = "HH:mm ddd, d MMM";
tooltipFormat = "yyyy-MM-dd HH:mm";
};
center = lib.singleton {
id = "Workspace";
};
right = [
{ id = "Tray"; }
{
id = "NotificationHistory";
hideWhenZeroUnread = true;
}
{ id = "Volume"; }
(lib.optionalAttrs osConfig.custom.networking.underlay.wireless.enable { id = "Network"; })
(lib.optionalAttrs osConfig.custom.services.bluetooth.enable { id = "Bluetooth"; })
(lib.optionalAttrs config.custom.programs.brightnessctl.enable { id = "Brightness"; })
{
id = "Battery";
displayMode = "icon-hover";
}
];
};
};
dock.enabled = false;
appLauncher = {
overviewLayer = true;
showCategories = false;
enableSessionSearch = false;
enableSettingsSearch = false;
enableWindowsSearch = false;
enableClipboardHistory = true;
};
osd.enabledTypes = [
0
1
2
3
];
location.name = "Darmstadt";
sessionMenu = {
largeButtonsStyle = false;
countdownDuration = 3000;
};
audio.mprisBlacklist = "firefox";
location = {
firstDayOfWeek = 1;
showWeekNumberInCalendar = true;
};
};
};
};
}

View file

@ -42,12 +42,6 @@
"extensions.autoCheckUpdates" = false;
"editor.fontFamily" = "JetBrainsMono Nerd Font";
"workbench.iconTheme" = "material-icon-theme";
"workbench.colorTheme" =
{
dark = "GitHub Dark";
light = "GitHub Light";
}
.${config.custom.theme};
"workbench.sideBar.location" = "right";
"workbench.editor.decorations.colors" = false;
"editor.renderWhitespace" = "none";
@ -68,6 +62,12 @@
"github.copilot.enable"."*" = false;
"chat.fontSize" = 15;
"chat.editor.fontSize" = 15;
"workbench.colorTheme" =
{
dark = "GitHub Dark";
light = "GitHub Light";
}
.${config.custom.theme};
}
);
in

View file

@ -8,11 +8,6 @@
options.custom.services.cliphist.enable = lib.mkEnableOption "";
config = lib.mkIf config.custom.services.cliphist.enable {
assertions = lib.singleton {
assertion = config.custom.programs.rofi.enable;
message = "Cliphist requires Rofi";
};
services.cliphist = {
enable = true;
extraOptions = [ ];
@ -23,7 +18,9 @@
home.packages = [
pkgs.wl-clipboard
(pkgs.writeScriptBin "rofi-clipboard" "cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy")
];
]
++ lib.optional config.custom.programs.rofi.enable (
pkgs.writeScriptBin "rofi-clipboard" "cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy"
);
};
}

View file

@ -19,6 +19,8 @@
custom = {
sops.enable = true;
de.hyprland.noctalia.enable = true;
programs = {
shell = {
zsh.enable = true;
@ -32,6 +34,7 @@
vscode.enable = true;
firefox.enable = true;
libreoffice.enable = true;
btop.enable = true;
};
};