Compare commits

..

9 commits

Author SHA1 Message Date
8d08db0b9b non important commit 2026-04-05 11:29:16 +02:00
24fdaf02a6 non important commit 2026-04-04 11:58:25 +02:00
b1d7394ac0 non important commit 2026-04-04 11:53:36 +02:00
4e32b3304f non important commit 2026-04-04 11:33:59 +02:00
a0ccf75216 non important commit 2026-04-04 11:12:10 +02:00
ad5a8e7645 non important commit 2026-04-01 22:13:13 +02:00
15ffdcfdc8 non important commit 2026-04-01 22:11:22 +02:00
fbc7323076 non important commit 2026-03-26 17:54:57 +01:00
308fcca844 non important commit 2026-03-24 23:27:35 +01:00
65 changed files with 2267 additions and 84 deletions

16
assets/bocchi/bocchi.txt Normal file
View file

@ -0,0 +1,16 @@
     ▄▄▀▀▀▀▀▀▀▀▀▄▄          
   ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄    
 ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄ 
▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀    
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀    
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄   
   ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   
    ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   
    ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   
    ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀    
     ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀     
       ▀▀▀▀▀▀▀▀▀            
      ▀▀▀▀▀▀▀▀▀▀▀           

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

View file

@ -0,0 +1,7 @@
{
fileSystems."/mnt/500G-disk" = {
device = "/dev/disk/by-uuid/1a899f03-4c6a-460a-9635-c4b208b29fba";
fsType = "ext4";
options = ["nofail" "user" "rw" "exec"];
};
}

View file

@ -0,0 +1,49 @@
{
pkgs,
inputs,
...
}: {
imports = [
./hardware-configuration.nix
./verbatim.nix
./500G-disk.nix
../modules/system/graphics.nix
../modules/system/boot.nix
../modules/system/networking.nix
../modules/system/xdg-settings.nix
../modules/system/window-manager.nix
../modules/system/sddm.nix
../modules/system/main-user.nix
../modules/system/programs.nix
../modules/system/ssh.nix
../modules/system/sound.nix
../modules/system/printing.nix
../modules/system/input-handle.nix
../modules/system/keyboard.nix
../modules/system/locale.nix
../modules/dots/quick_shell/module.nix
];
programs.niri.enable = true;
programs.xwayland = {
enable = true;
package = pkgs.xwayland-satellite;
};
nix.settings.experimental-features = ["nix-command" "flakes"];
nixpkgs.config = {
allowUnfree = true;
nvidia.acceptLicense = true;
};
services.xserver.enable = true;
environment.shells = [pkgs.nushell];
home-manager.extraSpecialArgs = {inherit inputs;};
system.stateVersion = "25.11";
}

View file

@ -0,0 +1,40 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "ata_generic" "ehci_pci" "ahci" "nvme" "usbhid" "uas" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/339dddc4-c4f8-47ea-a7a9-471c77f7c89e";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/1ff36da1-f1eb-4ae0-911f-d638ad5cf5ec";
fsType = "ext4";
};
fileSystems."/mnt/500G-disk" =
{ device = "/dev/disk/by-uuid/1a899f03-4c6a-460a-9635-c4b208b29fba";
fsType = "ext4";
};
fileSystems."/mnt/verbatim" =
{ device = "/dev/disk/by-uuid/2aa5f849-1df0-4f3a-b7db-ef64d06b16e4";
fsType = "ext4";
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,7 @@
{
fileSystems."/mnt/verbatim" = {
device = "/dev/disk/by-uuid/2aa5f849-1df0-4f3a-b7db-ef64d06b16e4";
fsType = "ext4";
options = ["nofail" "user" "rw" "exec"];
};
}

View file

@ -0,0 +1 @@
/run/user/1000/quickshell/vfs/740f0dbe5bf608b9ce0b8dffafd96492/.qmlls.ini

View file

@ -0,0 +1,39 @@
pragma ComponentBehavior: Bound
import Quickshell
import QtQuick
PanelWindow {
id: calendarPopup
required property bool expanderOpen
required property color bgColor
required property color recColor
required property int recRadius
required property int barWidth
anchors.left: true
anchors.bottom: true
implicitWidth: (expanderOpen || popupAnim.running) ? 160 : 0
implicitHeight: (expanderOpen || popupAnim.running) ? 1400 : 0
color: "transparent"
Rectangle {
id: popupRectangle
y: calendarPopup.height - height
x: calendarPopup.expanderOpen ? 0 : -(width + calendarPopup.barWidth)
width: 160
height: 140
color: calendarPopup.bgColor
Behavior on x {
NumberAnimation {
id: popupAnim
duration: 400
easing.type: Easing.OutCubic
}
}
}
}

View file

@ -0,0 +1,86 @@
pragma ComponentBehavior: Bound
import Quickshell
import QtQuick
import QtQuick.Controls
PanelWindow {
id: powerPopup
required property bool expanderOpen
required property color bgColor
required property color recColor
required property int recRadius
required property int barWidth
anchors.left: true
anchors.bottom: true
implicitWidth: (expanderOpen || popupAnim.running) ? 140 : 0
implicitHeight: (expanderOpen || popupAnim.running) ? 100 : 0
color: "transparent"
Rectangle {
id: popupRectangle
y: parent.height - height
x: powerPopup.expanderOpen ? 0 : -(width + powerPopup.barWidth)
width: 140
height: 100
color: powerPopup.bgColor
Behavior on x {
NumberAnimation {
id: popupAnim
duration: 400
easing.type: Easing.OutCubic
}
}
Row {
anchors.centerIn: popupRectangle
spacing: 10
Rectangle {
color: powerPopup.recColor
width: 50
height: 50
radius: powerPopup.recRadius * 2
Button {
anchors.fill: parent
opacity: 0
onClicked: Quickshell.execDetached(["poweroff"])
}
Image {
anchors.centerIn: parent
source: "file://" + Quickshell.shellDir + "/assets/power.svg"
sourceSize.width: 28
sourceSize.height: 28
}
}
Rectangle {
color: powerPopup.recColor
width: 50
height: 50
radius: powerPopup.recRadius * 2
Button {
anchors.fill: parent
opacity: 0
onClicked: Quickshell.execDetached(["reboot"])
}
Image {
anchors.centerIn: parent
source: "file://" + Quickshell.shellDir + "/assets/reboot.svg"
sourceSize.width: 28
sourceSize.height: 28
}
}
}
}
}

View file

@ -0,0 +1,143 @@
pragma ComponentBehavior: Bound
import Quickshell
import QtQuick
import QtQuick.Controls
PanelWindow {
id: sideBar
required property var clock
required property color bgColor
required property color recColor
required property color fontColor
required property int fontSize
required property int barWidth
required property int recRadius
required property int recLength
required property int myMargin
required property int edgeMargin
required property bool powerExpanderOpen
required property bool calendarExpanderOpen
anchors.top: true
anchors.left: true
anchors.bottom: true
implicitWidth: sideBar.barWidth
color: sideBar.bgColor
Rectangle {
id: logo
anchors {
horizontalCenter: parent.horizontalCenter
top: parent.top
topMargin: sideBar.edgeMargin
}
implicitHeight: sideBar.recLength
implicitWidth: sideBar.recLength
radius: sideBar.recRadius
color: sideBar.recColor
Image {
anchors.centerIn: parent
source: "file://" + Quickshell.shellDir + "/assets/logo.svg"
sourceSize.width: 30
sourceSize.height: 30
}
}
Rectangle {
id: workspaces
anchors {
horizontalCenter: parent.horizontalCenter
top: logo.bottom
topMargin: sideBar.myMargin
}
implicitHeight: 200
implicitWidth: sideBar.recLength
radius: sideBar.recRadius
color: sideBar.recColor
Text {
anchors.centerIn: parent
color: sideBar.fontColor
font.pixelSize: sideBar.fontSize
text: "ws"
}
}
Rectangle {
id: notifications
anchors {
horizontalCenter: parent.horizontalCenter
bottom: time.top
bottomMargin: sideBar.myMargin
}
implicitHeight: sideBar.recLength
implicitWidth: sideBar.recLength
radius: sideBar.recRadius
color: sideBar.recColor
Text {
anchors.centerIn: parent
color: sideBar.fontColor
font.pixelSize: sideBar.fontSize
text: "notif"
}
}
Rectangle {
id: time
anchors {
horizontalCenter: parent.horizontalCenter
bottom: power.top
bottomMargin: sideBar.myMargin
}
implicitHeight: sideBar.recLength
implicitWidth: sideBar.recLength
radius: sideBar.recRadius
color: sideBar.recColor
property real hello: time.y
Button {
anchors.fill: parent
opacity: 0
onClicked: sideBar.calendarExpanderOpen = !sideBar.calendarExpanderOpen
}
Text {
anchors.centerIn: parent
color: sideBar.fontColor
font.pixelSize: sideBar.fontSize
text: Qt.formatDateTime(sideBar.clock.date, "hh\nmm")
}
}
Rectangle {
id: power
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
bottomMargin: sideBar.edgeMargin
}
implicitHeight: sideBar.recLength
implicitWidth: sideBar.recLength
radius: sideBar.recRadius
color: sideBar.recColor
Button {
anchors.fill: parent
opacity: 0
onClicked: sideBar.powerExpanderOpen = !sideBar.powerExpanderOpen
}
Image {
anchors.centerIn: parent
source: "file://" + Quickshell.shellDir + "/assets/power.svg"
sourceSize.width: 28
sourceSize.height: 28
}
}
}

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64" viewBox="0 0 60 60"><g fill-rule="evenodd"><use xlink:href="#B" fill="#5277c3"/><path d="M23.58 20.214L8.964 45.528 5.55 39.743l3.94-6.78-7.823-.02L0 30.052l1.703-2.956 11.135.035 4.002-6.9zM24.7 40.45h29.23l-3.302 5.85-7.84-.022 3.894 6.785-1.67 2.9-3.412.004-5.537-9.66-7.976-.016zm17.014-11.092L27.1 4.043l6.716-.063 3.902 6.8 3.93-6.765 3.337.002 1.7 2.953-5.598 9.626 3.974 6.916z" fill="#7ebae4"/><g fill="#5277c3"><use xlink:href="#B"/><path d="M35.28 19.486l-29.23-.002 3.303-5.848 7.84.022L13.3 6.873l1.67-2.9 3.412-.004 5.537 9.66 7.976.016zm1.14 20.294l14.616-25.313 3.413 5.785-3.94 6.78 7.823.02 1.668 2.9-1.703 2.956-11.135-.035-4.002 6.9z"/></g></g><defs ><path id="B" d="M18.305 30.642L32.92 55.956l-6.716.063-3.902-6.8-3.93 6.765-3.337-.002-1.71-2.953 5.598-9.626-3.974-6.916z"/></defs></svg>

After

Width:  |  Height:  |  Size: 915 B

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512" xml:space="preserve">
<g>
<g>
<rect x="233.075" width="45.851" height="183.403"/>
</g>
</g>
<g>
<g>
<path d="M455.209,146.865c-23.994-37.197-57.767-66.878-97.67-85.836l-19.675,41.415c66.323,31.51,109.18,99.284,109.18,172.66
c0,105.342-85.703,191.045-191.045,191.045S64.955,380.447,64.955,275.104c0-73.376,42.857-141.15,109.18-172.66L154.46,61.029
c-39.902,18.958-73.676,48.64-97.67,85.836c-24.655,38.223-37.686,82.568-37.686,128.24C19.104,405.729,125.374,512,256,512
s236.896-106.271,236.896-236.896C492.896,229.433,479.865,185.087,455.209,146.865z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 877 B

View file

@ -0,0 +1,2 @@
<?xml version="1.0" ?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 11.9998C3 7.02919 7.02944 2.99976 12 2.99976C14.8273 2.99976 17.35 4.30342 19 6.34242" stroke="#292929" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="M19.5 2.99976L19.5 6.99976L15.5 6.99976" stroke="#292929" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="M21 11.9998C21 16.9703 16.9706 20.9998 12 20.9998C9.17273 20.9998 6.64996 19.6961 5 17.6571" stroke="#292929" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="M4.5 20.9998L4.5 16.9998L8.5 16.9998" stroke="#292929" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>

After

Width:  |  Height:  |  Size: 836 B

View file

@ -0,0 +1,73 @@
pragma ComponentBehavior: Bound
import Quickshell
import QtQuick
ShellRoot {
id: root
property color bgColor: "#6a6365"
property color recColor: "#595254"
property color fontColor: "#FFFFFF"
property int fontSize: 14
property int barWidth: 50
property int recRadius: 8
property int recLength: 35
property int myMargin: 10
property int edgeMargin: 15
SystemClock {
id: clock
precision: SystemClock.Minutes
}
Variants {
model: Quickshell.screens
delegate: Scope {
id: delegate
required property var modelData
property bool powerExpanderOpen: false
property bool calendarExpanderOpen: false
SideBar {
clock: clock
screen: delegate.modelData
bgColor: root.bgColor
recColor: root.recColor
fontColor: root.fontColor
fontSize: root.fontSize
barWidth: root.barWidth
recRadius: root.recRadius
recLength: root.recLength
myMargin: root.myMargin
edgeMargin: root.edgeMargin
powerExpanderOpen: delegate.powerExpanderOpen
onPowerExpanderOpenChanged: delegate.powerExpanderOpen = powerExpanderOpen
calendarExpanderOpen: delegate.calendarExpanderOpen
onCalendarExpanderOpenChanged: delegate.calendarExpanderOpen = calendarExpanderOpen
}
PowerPopup {
screen: delegate.modelData
expanderOpen: delegate.powerExpanderOpen
bgColor: root.bgColor
recColor: root.recColor
recRadius: root.recRadius
barWidth: root.barWidth
}
CalendarPopup {
screen: delegate.modelData
expanderOpen: delegate.calendarExpanderOpen
bgColor: root.bgColor
recColor: root.recColor
recRadius: root.recRadius
barWidth: root.barWidth
}
}
}
}

View file

@ -0,0 +1,20 @@
{pkgs, ...}: let
qs_config = pkgs.callPackage ./package.nix {};
in {
environment.systemPackages = [pkgs.quickshell];
systemd.user.services.quickshell = {
restartIfChanged = true;
description = "quickshell desktop shell";
wantedBy = ["graphical-session.target"];
partOf = ["graphical-session.target"];
after = ["graphical-session.target"];
serviceConfig = {
ExecStart = "${pkgs.quickshell}/bin/qs -c ${qs_config}";
Restart = "on-failure";
RestartSec = 3;
};
};
}

View file

@ -0,0 +1,9 @@
{stdenv}:
stdenv.mkDerivation {
pname = "quickshell-config";
version = "unstable";
src = ./config;
installPhase = ''
cp -r . $out
'';
}

View file

@ -0,0 +1,10 @@
{pkgs ? import <nixpkgs> {}}:
pkgs.mkShell {
buildInputs = [
pkgs.qt6.qtbase
pkgs.qt6.qtdeclarative
pkgs.qt6.qtwayland
pkgs.qtcreator
pkgs.quickshell
];
}

@ -0,0 +1 @@
Subproject commit 4895333ff1e6b2b9442a58a3c69dad96d7f3b8f3

View file

@ -0,0 +1,11 @@
{pkgs, ...}: {
boot = {
kernelPackages = pkgs.linuxPackages_6_12;
kernelParams = ["nvidia-drm.modeset=1"];
loader.grub = {
enable = true;
device = "/dev/disk/by-id/ata-KINGSTON_SKC300S37A60G_50026B7239039148";
};
};
}

View file

@ -1,18 +1,19 @@
{config, ...}: { {config, ...}: {
flake.modules.nixos.desktop = { services.xserver.videoDrivers = [
nixpkgs.hostPlatform = "x86_64-linux"; "nvidia"
];
hardware = { hardware = {
graphics = { graphics = {
enable = true; enable = true;
enable32Bit = true; enable32Bit = true;
}; };
};
nvidia = { nvidia = {
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = true; powerManagement.enable = true;
open = false; open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.production; package = config.boot.kernelPackages.nvidiaPackages.production;
}; };
}; };

View file

@ -0,0 +1,3 @@
{
services.libinput.enable = true;
}

View file

@ -0,0 +1,6 @@
{
services.xserver.xkb = {
layout = "cz";
options = "caps:escape";
};
}

View file

@ -0,0 +1,19 @@
{
console.keyMap = "cz-lat2";
time.timeZone = "Europe/Prague";
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "cs_CZ.UTF-8";
LC_IDENTIFICATION = "cs_CZ.UTF-8";
LC_MEASUREMENT = "cs_CZ.UTF-8";
LC_MONETARY = "cs_CZ.UTF-8";
LC_NAME = "cs_CZ.UTF-8";
LC_NUMERIC = "cs_CZ.UTF-8";
LC_PAPER = "cs_CZ.UTF-8";
LC_TELEPHONE = "cs_CZ.UTF-8";
LC_TIME = "cs_CZ.UTF-8";
};
};
}

View file

@ -0,0 +1,8 @@
{pkgs, ...}: {
users.users.benag = {
isNormalUser = true;
extraGroups = ["wheel"];
shell = pkgs.nushell;
};
}

View file

@ -0,0 +1,6 @@
{
networking = {
hostName = "nixos";
networkmanager.enable = true;
};
}

View file

@ -0,0 +1,9 @@
{
services.printing.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
}

View file

@ -0,0 +1,18 @@
{pkgs, ...}: {
programs = {
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
extraPackages = with pkgs; [
freetype
fontconfig
];
};
gamemode.enable = true;
bash.blesh.enable = true;
nix-ld.enable = true;
};
}

View file

@ -0,0 +1,7 @@
{
services.displayManager.sddm = {
enable = true;
autoNumlock = true;
wayland.enable = false;
};
}

View file

@ -0,0 +1,13 @@
{
services = {
pipewire = {
enable = true;
pulse.enable = true;
alsa = {
enable = true;
support32Bit = true;
};
};
};
}

View file

@ -0,0 +1,3 @@
{
services.openssh.enable = true;
}

View file

@ -0,0 +1,5 @@
{
services.xserver.windowManager = {
bspwm.enable = true;
};
}

View file

@ -0,0 +1,14 @@
{pkgs, ...}: {
xdg = {
portal = {
enable = true;
extraPortals = [pkgs.xdg-desktop-portal-gtk];
configPackages = with pkgs; [
xdg-desktop-portal-gtk
];
};
mime.enable = true;
menus.enable = true;
};
}

401
flake.lock generated Normal file
View file

@ -0,0 +1,401 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1751685974,
"narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
"ref": "refs/heads/main",
"rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
"revCount": 92,
"type": "git",
"url": "https://git.lix.systems/lix-project/flake-compat.git"
},
"original": {
"type": "git",
"url": "https://git.lix.systems/lix-project/flake-compat.git"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nvf",
"nixpkgs"
]
},
"locked": {
"lastModified": 1768135262,
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"floating-calc": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1772147792,
"narHash": "sha256-dxrp+Srkq9mQ+qg53oFI1RKieIi9epEdXyJkv44bZP4=",
"ref": "refs/heads/main",
"rev": "2abbacf66e99db523d624037f3e449aa40e8f366",
"revCount": 12,
"type": "git",
"url": "https://git.stribrny.org/max_ag/floating-calculator"
},
"original": {
"type": "git",
"url": "https://git.stribrny.org/max_ag/floating-calculator"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1773810247,
"narHash": "sha256-6Vz1Thy/1s7z+Rq5OfkWOBAdV4eD+OrvDs10yH6xJzQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "d47357a4c806d18a3e853ad2699eaec3c01622e7",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"zen-browser",
"nixpkgs"
]
},
"locked": {
"lastModified": 1773422513,
"narHash": "sha256-MPjR48roW7CUMU6lu0+qQGqj92Kuh3paIulMWFZy+NQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ef12a9a2b0f77c8fa3dda1e7e494fca668909056",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"mnw": {
"locked": {
"lastModified": 1767030222,
"narHash": "sha256-kSvWF3Xt2HW9hmV5V7i8PqeWJIBUKmuKoHhOgj3Znzs=",
"owner": "Gerg-L",
"repo": "mnw",
"rev": "75bb637454b0fbbb5ed652375a4bf7ffd28bcf6f",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "mnw",
"type": "github"
}
},
"ndg": {
"inputs": {
"nixpkgs": [
"nvf",
"nixpkgs"
]
},
"locked": {
"lastModified": 1768214250,
"narHash": "sha256-hnBZDQWUxJV3KbtvyGW5BKLO/fAwydrxm5WHCWMQTbw=",
"owner": "feel-co",
"repo": "ndg",
"rev": "a6bd3c1ce2668d096e4fdaaa03ad7f03ba1fbca8",
"type": "github"
},
"original": {
"owner": "feel-co",
"ref": "refs/tags/v2.6.0",
"repo": "ndg",
"type": "github"
}
},
"niri-flake": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1773809319,
"narHash": "sha256-ZuMZEuxqWneGaK+HAXz50JyCmtFo0neo6mp6F2NWj24=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "c4ee62058cd37d7b842c3b081917f792efee9082",
"type": "github"
},
"original": {
"owner": "sodiboo",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1756556321,
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v25.08",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1773130184,
"narHash": "sha256-3bwx4WqCB06yfQIGB+OgIckOkEDyKxiTD5pOo4Xz2rI=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "b07bde3ee82dd73115e6b949e4f3f63695da35ea",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1773734432,
"narHash": "sha256-IF5ppUWh6gHGHYDbtVUyhwy/i7D261P7fWD1bPefOsw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "cda48547b432e8d3b18b4180ba07473762ec8558",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1773705440,
"narHash": "sha256-xB30bbAp0e7ogSEYyc126mAJMt4FRFh8wtm6ADE1xuM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "48652e9d5aea46e555b3df87354280d4f29cd3a3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nvf": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"mnw": "mnw",
"ndg": "ndg",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1768464392,
"narHash": "sha256-H3DRARqclUFdUaWgu1xQEb86/wrh41ZG0fIQJVjcZdE=",
"owner": "notashelf",
"repo": "nvf",
"rev": "007f14a2c8d67568f4655654b401871920d73011",
"type": "github"
},
"original": {
"owner": "notashelf",
"repo": "nvf",
"rev": "007f14a2c8d67568f4655654b401871920d73011",
"type": "github"
}
},
"root": {
"inputs": {
"floating-calc": "floating-calc",
"home-manager": "home-manager",
"niri-flake": "niri-flake",
"nixpkgs": "nixpkgs",
"nvf": "nvf",
"wayland-bar": "wayland-bar",
"zen-browser": "zen-browser"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"floating-calc",
"nixpkgs"
]
},
"locked": {
"lastModified": 1771729765,
"narHash": "sha256-HNsDSR5bhLSrIpi9bTb2uTK1qnPo1xFSBxs6YmFyprk=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "be926cb1a76e8450ab2b92121b2e88d09fa4d41c",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"nixpkgs": [
"wayland-bar",
"nixpkgs"
]
},
"locked": {
"lastModified": 1773630837,
"narHash": "sha256-zJhgAGnbVKeBMJOb9ctZm4BGS/Rnrz+5lfSXTVah4HQ=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "f600ea449c7b5bb596fa1cf21c871cc5b9e31316",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"wayland-bar": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1773784783,
"narHash": "sha256-T3oP3c75kt0Ef+uO3D9qy85VucA4mzhuREWz3FZBTSg=",
"ref": "refs/heads/main",
"rev": "58166358ba26a277d59fafd852ca7b10f1dbd442",
"revCount": 7,
"type": "git",
"url": "https://git.stribrny.org/max_ag/wayland_panel"
},
"original": {
"type": "git",
"url": "https://git.stribrny.org/max_ag/wayland_panel"
}
},
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1755491097,
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.7",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1773622265,
"narHash": "sha256-wToKwH7IgWdGLMSIWksEDs4eumR6UbbsuPQ42r0oTXQ=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "a879e5e0896a326adc79c474bf457b8b99011027",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
}
},
"zen-browser": {
"inputs": {
"home-manager": "home-manager_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1773737882,
"narHash": "sha256-P6k0BtT1/idYveVRdcwAZk8By9UjZW8XOMhSoS6wTBY=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "a7f1db35d74faf04e5189b3a32f890186ace5c28",
"type": "github"
},
"original": {
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View file

@ -1,11 +1,57 @@
{ {
description = "My nixos dots :3";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-parts.url = "github:/hercules-cli/flake-parts";
import-tree.url = "github:vic/import-tree"; nvf = {
url = "github:notashelf/nvf/007f14a2c8d67568f4655654b401871920d73011";
inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = inputs: awww = {
inputs.flake-parts.lib.mkFlake {inherit inputs;} url = "git+https://codeberg.org/LGFae/awww";
(inputs.import-tree [./modules]); inputs.nixpkgs.follows = "nixpkgs";
};
niri-flake = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
floating-calc = {
url = "git+https://git.stribrny.org/max_ag/floating-calculator?rev=2abbacf66e99db523d624037f3e449aa40e8f366";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ {
nixpkgs,
home-manager,
...
}: {
nixosConfigurations.benag = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {inherit inputs;};
modules = [
./configuration/main/configuration.nix
home-manager.nixosModules.default
{
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
users.benag = ./home/home.nix;
};
}
];
};
};
} }

62
home/home.nix Normal file
View file

@ -0,0 +1,62 @@
{
pkgs,
inputs,
...
}: {
home = {
username = "benag";
homeDirectory = "/home/benag";
stateVersion = "25.11";
};
programs.home-manager.enable = true;
imports = [
./modules/niri.nix
./modules/bspwm.nix
./modules/sxhkd.nix
./modules/picom.nix
./modules/shells.nix
./modules/zellij.nix
./modules/nvf.nix
./modules/kitty.nix
./modules/foot.nix
./modules/polybar.nix
./modules/waybar.nix
./modules/fastfetch.nix
./modules/cursor.nix
./modules/git.nix
./modules/create-project/create-project.nix
];
home.packages = [
inputs.zen-browser.packages."x86_64-linux".default
pkgs.bspwm
pkgs.sxhkd
inputs.awww.packages.x86_64-linux.awww
pkgs.feh
pkgs.picom
pkgs.wofi
pkgs.neovim
pkgs.kitty
pkgs.foot
pkgs.fastfetch
pkgs.pavucontrol
pkgs.btop
pkgs.playerctl
pkgs.dunst
pkgs.zellij
inputs.floating-calc.packages.x86_64-linux.default
pkgs.discord
pkgs.heroic
pkgs.prismlauncher
pkgs.protonup-ng
pkgs.easyeffects
];
}

49
home/modules/bspwm.nix Normal file
View file

@ -0,0 +1,49 @@
{
xsession.windowManager.bspwm = {
enable = true;
settings = {
focus_follows_pointer = true;
pointer_follows_focus = true;
pointer_follows_monitor = true;
};
monitors = {
DVI-I-1 = [
"I"
"II"
"III"
"IV"
"V"
"VI"
"VII"
"VIII"
"IX"
"X"
];
HDMI-0 = [
"I"
"II"
"III"
"IV"
"V"
"VI"
"VII"
"VIII"
"IX"
"X"
];
};
extraConfig = ''
feh --bg-fill "/home/benag/.nix-config/assets/pictures/bocchi_wallpaper.png"
xsetroot -cursor_name left_ptr &
'';
startupPrograms = [
"polybar primary"
"polybar secondary"
];
};
}

View file

@ -0,0 +1,62 @@
{pkgs, ...}: {
home.packages = [
(pkgs.writeScriptBin "create-project"
''
#!${pkgs.nushell}/bin/nu
def main [
type?: string
name?: string
--local (-l)
] {
if $name == null or $type == null {
print "Usage: create-project <name> <type> [Options: -l]"
exit 1
}
if ($name | str contains "/") or ($name | str contains ".") {
print "This is not a valid name for a project"
exit 1
}
if ($type | str contains "/") or ($type | str contains ".") {
print "This is not a valid project type"
exit 1
}
mkdir $name
cd $name
if ($"~/.nix-config/home/modules/create-project/project-blueprints/($type)" | path expand | ls $in | length) > 0 {
glob $"~/.nix-config/home/modules/create-project/project-blueprints/($type)/*" | each { |file| cp $file . }
}
if ($"./init.sh" | path type) == "file" {
bash $"./init.sh" $name
rm "init.sh"
}
echo "use flake" | save .envrc
direnv allow
git init
git add .
git commit -m "Project setup"
if $local {
print "You are all done"
exit 0
}
${pkgs.tea}/bin/tea repos create --name $name
git remote add origin $"https://git.stribrny.org/ben_ag/($name).git"
git push -u origin main
print "You are all done"
exit 0
}
'')
];
}

View file

@ -0,0 +1,23 @@
{
description = "My python development shell";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
};
outputs = {nixpkgs, ...}: let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
};
in {
devShells."${system}" = {
default = pkgs.mkShell {
packages = [
(pkgs.python3.withPackages (python-pkgs: [
python-pkgs.numpy
python-pkgs.pandas
]))
];
};
};
};
}

View file

@ -0,0 +1,6 @@
def main():
pass
if __name__ == "__main__":
main()

View file

@ -0,0 +1 @@
target

View file

@ -0,0 +1,29 @@
{
description = "My rust development shell";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {nixpkgs, ...} @ inputs: let
system = "x86_64-linux";
overlays = [(import inputs.rust-overlay)];
pkgs = import nixpkgs {
inherit system overlays;
};
in {
devShells."${system}" = {
default = pkgs.mkShell {
buildInputs = with pkgs; [
gcc
gnumake
rust-bin.stable.latest.default
evcxr
];
};
};
};
}

View file

@ -0,0 +1,6 @@
#!/usr/bin/env bash
nix develop . --command bash -c "cargo new $1"
cp -r "$1"/* .
rm -fr "$1"

9
home/modules/cursor.nix Normal file
View file

@ -0,0 +1,9 @@
{pkgs, ...}: {
home.pointerCursor = {
gtk.enable = true;
x11.enable = true;
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 14;
};
}

View file

@ -0,0 +1,88 @@
{
programs.fastfetch = {
enable = true;
settings = {
logo = {
source = "/home/benag/.nix-config/assets/bocchi/bocchi.txt";
padding = {
top = 1;
left = 1;
};
};
display = {
separator = " -> ";
};
modules = [
"break"
{
type = "custom";
format = "Hardware";
}
{
type = "title";
key = " PC";
keyColor = "green";
}
{
type = "disk";
key = " ";
device = "/dev/sdb";
keyColor = "green";
}
{
type = "cpu";
key = " ";
keyColor = "green";
}
{
type = "gpu";
key = " 󰍛";
keyColor = "green";
}
{
type = "memory";
key = " 󰍛";
keyColor = "green";
}
{
type = "custom";
format = "";
}
"break"
{
type = "custom";
format = "Software";
}
{
type = "os";
key = "󰻀 OS";
keyColor = "yellow";
}
{
type = "kernel";
key = " ";
keyColor = "yellow";
}
{
type = "packages";
key = " 󰏖";
keyColor = "yellow";
}
{
type = "shell";
key = " ";
keyColor = "yellow";
}
{
type = "custom";
format = "";
}
];
};
};
}

17
home/modules/foot.nix Normal file
View file

@ -0,0 +1,17 @@
{pkgs, ...}: {
home.packages = [pkgs.nerd-fonts.jetbrains-mono];
programs.foot = {
enable = true;
settings = {
main = {
font = "JetBrainsMono Nerd Font:size=10";
};
colors-dark = {
alpha = "0.75";
};
};
};
}

13
home/modules/git.nix Normal file
View file

@ -0,0 +1,13 @@
{pkgs, ...}: {
programs.git = {
enable = true;
package = pkgs.gitFull;
settings = {
user.name = "benstrb";
user.email = "ben.stribrny@gmail.com";
init.defaultBranch = "main";
github.user = "benstrb";
credential.helper = "store";
};
};
}

9
home/modules/kitty.nix Normal file
View file

@ -0,0 +1,9 @@
{
programs.kitty = {
enable = false;
settings = {
background_opacity = 0.75;
};
};
}

169
home/modules/niri.nix Normal file
View file

@ -0,0 +1,169 @@
{inputs, ...}: {
imports = [inputs.niri-flake.homeModules.niri];
programs.niri = {
enable = true;
settings = {
spawn-at-startup = [
{command = ["awww-daemon"];}
{command = ["awww" "img" "/home/benag/.nix-config/assets/pictures/bocchi_wallpaper.png"];}
];
input = {
keyboard = {
xkb = {
layout = "cz";
options = "caps:escape";
};
};
};
outputs = {
"DVI-D-1".mode = {
width = 1920;
height = 1080;
};
"HDMI-A-1".mode = {
width = 1680;
height = 1050;
};
};
environment = {
NIXOS_OZONE_WL = "1";
SDL_VIDEODRIVER = "wayland";
CLUTTER_BACKEND = "wayland";
};
gestures = {
hot-corners.enable = false;
};
layout = {
gaps = 2;
default-column-width = {proportion = 0.5;};
preset-column-widths = [
{proportion = 0.33333;}
{proportion = 0.5;}
{proportion = 0.66667;}
{proportion = 1.0;}
];
preset-window-heights = [
{proportion = 0.33333;}
{proportion = 0.5;}
{proportion = 0.66667;}
{proportion = 1.0;}
];
border = {
enable = true;
active.color = "#feb6c7";
width = 2;
};
shadow.enable = false;
focus-ring.enable = false;
};
prefer-no-csd = true;
cursor.size = 14;
screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png";
hotkey-overlay.skip-at-startup = true;
window-rules = [
/*
{
geometry-corner-radius = {
top-left = 2.0;
top-right = 2.0;
bottom-left = 2.0;
bottom-right = 2.0;
};
}
*/
{
clip-to-geometry = true;
}
];
input = {
keyboard.numlock = true;
warp-mouse-to-focus.enable = true;
focus-follows-mouse = {
enable = true;
max-scroll-amount = "0%";
};
};
binds = {
"Mod+Q".action.close-window = [];
"Mod+Return".action.spawn = ["foot"];
"Mod+A".action.spawn = ["wofi" "--show" "drun"];
"Mod+B".action.spawn = ["zen-beta"];
"Mod+D".action.spawn = ["discord"];
"Mod+O".action.toggle-overview = [];
"Mod+Alt+H".action.focus-monitor-left = [];
"Mod+Alt+L".action.focus-monitor-right = [];
"Mod+Alt+Left".action.focus-monitor-left = [];
"Mod+Alt+Right".action.focus-monitor-right = [];
"Mod+Ctrl+J".action.focus-workspace-down = [];
"Mod+Ctrl+K".action.focus-workspace-up = [];
"Mod+Ctrl+Down".action.focus-workspace-down = [];
"Mod+Ctrl+Up".action.focus-workspace-up = [];
"Mod+H".action.focus-column-left = [];
"Mod+L".action.focus-column-right = [];
"Mod+J".action.focus-window-down = [];
"Mod+K".action.focus-window-up = [];
"Mod+Left".action.focus-column-left = [];
"Mod+Right".action.focus-column-right = [];
"Mod+Down".action.focus-window-down = [];
"Mod+Up".action.focus-window-up = [];
"Mod+WheelScrollDown".action.focus-column-right = [];
"Mod+WheelScrollUp".action.focus-column-left = [];
"Mod+Y".action.consume-or-expel-window-left = [];
"Mod+X".action.consume-or-expel-window-right = [];
"Mod+R".action.switch-preset-column-width = [];
"Mod+Shift+R".action.switch-preset-window-height = [];
"Mod+F".action.maximize-column = [];
"Mod+Shift+F".action.fullscreen-window = [];
"Mod+V".action.toggle-window-floating = [];
"Mod+Minus".action.set-column-width = ["-10%"];
"Mod+Equal".action.set-column-width = ["+10%"];
"Mod+Shift+Q".action.quit = [];
"Print".action.screenshot = [];
"Ctrl+Print".action.screenshot-screen = [];
"Alt+Print".action.screenshot-window = [];
"Mod+Escape".action.toggle-keyboard-shortcuts-inhibit = [];
"XF86AudioPlay".action.spawn = ["playerctl" "play-pause"];
"XF86AudioNext".action.spawn = ["playerctl" "next"];
"XF86AudioPrev".action.spawn = ["playerctl" "previous"];
"XF86AudioStop".action.spawn = ["playerctl" "stop"];
"XF86AudioRaiseVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"];
"XF86AudioLowerVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"];
"xF86AudioMute".action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"];
};
};
};
}

164
home/modules/nvf.nix Normal file
View file

@ -0,0 +1,164 @@
{
pkgs,
lib,
inputs,
...
}: {
imports = [
inputs.nvf.homeManagerModules.default
];
programs.nvf = {
enable = true;
enableManpages = true;
settings.vim = {
theme = {
enable = true;
transparent = true;
name = "catppuccin";
style = "mocha";
};
lsp = {
enable = true;
null-ls.enable = false;
inlayHints.enable = true;
formatOnSave = true;
lspkind.enable = true;
lspsaga.enable = true;
trouble.enable = true;
};
debugger = {
nvim-dap = {
enable = true;
ui.enable = true;
};
};
options = {
tabstop = 2;
expandtab = false;
autoindent = true;
shiftwidth = 2;
};
clipboard = {
enable = true;
registers = "unnamedplus";
providers = {
wl-copy = {
enable = true;
package = pkgs.wl-clipboard;
};
};
};
languages = {
enableFormat = true;
enableTreesitter = true;
enableExtraDiagnostics = true;
nix.enable = true;
markdown.enable = true;
nu.enable = true;
bash.enable = true;
css.enable = true;
html = {
enable = true;
format.enable = true;
lsp.servers = [
"emmet-ls"
"superhtml"
];
};
python.enable = true;
sql.enable = false;
qml.enable = true;
qml.format.enable = true;
ts.enable = true;
zig.enable = true;
csharp.enable = true;
rust = {
enable = true;
extensions.crates-nvim.enable = true;
};
};
visuals = {
nvim-web-devicons.enable = true;
nvim-cursorline.enable = true;
cinnamon-nvim.enable = true;
fidget-nvim.enable = true;
highlight-undo.enable = true;
indent-blankline.enable = true;
};
statusline = {
lualine = {
enable = true;
};
};
autopairs.nvim-autopairs.enable = true;
autocomplete = {
nvim-cmp.enable = true;
blink-cmp.enable = false;
};
snippets.luasnip.enable = true;
telescope.enable = true;
git = {
enable = true;
};
dashboard.alpha.enable = true;
notify.nvim-notify.enable = true;
projects.project-nvim.enable = true;
utility = {
ccc.enable = true;
diffview-nvim.enable = true;
icon-picker.enable = true;
surround.enable = true;
motion = {
hop.enable = true;
leap.enable = true;
};
};
comments.comment-nvim.enable = true;
ui = {
noice.enable = true;
colorizer.enable = true;
illuminate.enable = true;
fastaction.enable = true;
};
};
};
xdg.desktopEntries.nvim-foot = {
name = "Neovim (foot)";
comment = "Edit text files with Neovim in foot terminal";
icon = "nvim";
exec = "foot -e nvim %F";
categories = ["Utility" "TextEditor" "Development"];
mimeType = ["text/plain" "text/x-makefile" "application/x-shellscript"];
};
}

7
home/modules/picom.nix Normal file
View file

@ -0,0 +1,7 @@
{
services.picom = {
enable = false;
backend = "glx";
};
}

149
home/modules/polybar.nix Normal file
View file

@ -0,0 +1,149 @@
{pkgs, ...}: {
services.polybar = {
enable = false;
package = pkgs.polybar.override {
mpdSupport = true;
};
script = ''
polybar primary &
polybar secondary &
'';
settings = {
"colors" = {
fg = "#fafafa";
fg-alt = "#bdbdbd";
purple = "#d500f9";
red = "#ff1744";
trans = "#00000000";
};
"bar/primary" = {
monitor = "DVI-I-1";
width = "100%";
height = "30";
offset-y = "0";
top = "true";
fixed-center = "true";
wm-restack = "bspwm";
override-redirect = "false";
scroll-up = "next";
scroll-down = "prev";
enable-ipc = "true";
background = "\${colors.trans}";
foreground = "\${colors.fg}";
font-0 = "monospace:size=10;2";
font-1 = "monospace:size=10;2";
font-2 = "monospace:size=10;2";
font-3 = "monospace:size=10;2";
font-4 = "monospace:size=10;2";
font-5 = "monospace:size=10;2";
font-6 = "monospace:size=10;2";
font-7 = "monospace:size=12;3";
cursor-click = "pointer";
cursor-scroll = "ns-resize";
modules-left = "bspwm";
modules-right = "date";
};
"bar/secondary" = {
monitor = "HDMI-0";
width = "100%";
height = "30";
offset-y = "0";
top = "true";
fixed-center = "true";
wm-restack = "bspwm";
override-redirect = "false";
scroll-up = "next";
scroll-down = "prev";
enable-ipc = "true";
background = "\${colors.trans}";
foreground = "\${colors.fg}";
font-0 = "monospace:size=10;2";
font-1 = "monospace:size=10;2";
font-2 = "monospace:size=10;2";
font-3 = "monospace:size=10;2";
font-4 = "monospace:size=10;2";
font-5 = "monospace:size=10;2";
font-6 = "monospace:size=10;2";
font-7 = "monospace:size=12;3";
cursor-click = "pointer";
cursor-scroll = "ns-resize";
modules-left = "bspwm";
modules-right = "date";
};
"module/bspwm" = {
type = "internal/bspwm";
format = "<label-state> <label-mode>";
label-focused = "%{T7}%{T-}";
label-focused-foreground = "\${colors.purple}";
label-focused-padding = 1;
label-occupied = "%{T7}%{T-}";
label-occupied-foreground = "\${colors.fg-alt}";
label-occupied-padding = 1;
label-urgent = "%{T7}%{T-}";
label-urgent-foreground = "\${colors.red}";
label-urgent-padding = 1;
label-empty = "%{T7}%{T-}";
label-empty-foreground = "\${colors.fg-alt}";
label-empty-padding = 1;
label-locked = "%{T7}%{T-}";
label-locked-foreground = "\${colors.fg}";
label-locked-padding = 1;
label-sticky = "%{T7}%{T-}";
label-sticky-foreground = "\${colors.fg}";
label-sticky-padding = 1;
label-private = "%{T7}%{T-}";
label-private-foreground = "\${colors.fg}";
label-private-padding = 1;
label-marked = "%{T7}%{T-}";
label-marked-foreground = "\${colors.fg}";
label-marked-padding = 1;
};
"module/date" = {
type = "internal/date";
interval = 1;
time = "%H:%M";
time-alt = "%a, %b %d %H:%M:%S";
format = "<label>";
format-foreground = "\${colors.fg}";
format-padding = 1;
label = "%{T2}%time%%{T-}";
};
};
};
}

116
home/modules/shells.nix Normal file
View file

@ -0,0 +1,116 @@
{pkgs, ...}: {
home.packages = with pkgs; [
bat
fzf
fd
eza
most
];
home.sessionVariables = {
EDITOR = "nvim";
PAGER = "most";
MANPAGER = "most";
MANROFFOPT = "-c";
};
programs = {
bash.enable = true;
fzf.enable = true;
eza.enable = true;
direnv = {
enable = true;
silent = true;
nix-direnv.enable = true;
};
nushell = {
enable = true;
settings = {
show_banner = false;
};
shellAliases = {
cat = "bat -p -P";
system = "nvim /home/benag/.nix-config/flake.nix";
home = "nvim /home/benag/.nix-config/home/home.nix";
config = "nvim /home/benag/.nix-config/configuration/main/configuration.nix";
};
extraConfig = ''
if "ZELLIJ" in $env == false {
zellij
exit
} else {
if "IN_NIX_SHELL" in $env == false {
fastfetch
}
}
def c [] {
clear
fastfetch
}
def rebuild [message?: string] {
cd /home/benag/.nix-config
let commit_message = if $message != null {$message} else {"non important commit"}
try {
git pull
git add .
git commit -m $commit_message
git push
}
sudo nixos-rebuild switch --flake .#benag
}
def --env fzf-cd [] {
let dir = (fd -t d -L . | fzf --reverse --height 40% --border rounded --preview=("eza --color=always --group-directories-first --icons --long {}") --preview-window=border-left)
if $dir != null and $dir != "" {
cd $dir
}
}
def --env fzf-nvim [] {
let file = (fd -t f -L . | fzf --reverse --height 40% --border rounded --preview=("bat -p -P --color always {}") --preview-window=border-left)
if $file != null and $file != "" {
nvim $file
}
}
$env.config.keybindings = ($env.config.keybindings | append {
name: "fzf-cd"
modifier: "control"
keycode: "char_f"
mode: "emacs"
event: [
{
send: "executehostcommand"
cmd: 'fzf-cd'
}
]
})
$env.config.keybindings = ($env.config.keybindings | append {
name: "fzf-nvim"
modifier: "control"
keycode: "char_e"
mode: "emacs"
event: [
{
send: "executehostcommand"
cmd: 'fzf-nvim'
}
]
})
'';
};
};
}

43
home/modules/sxhkd.nix Normal file
View file

@ -0,0 +1,43 @@
{
services.sxhkd = {
enable = true;
keybindings = {
"super + q" = "bspc node -c";
"super + f" = "bspc node -t fullscreen";
"super + t" = "bspc node -t tiled";
"super + Return" = "kitty";
"super + b" = "firefox";
"super + d" = "discord";
"super + a" = "rofi -show drun";
"XF86AudioPlay" = "playerctl play-pause";
"XF86AudioNext" = "playerctl next";
"XF86AudioPrev" = "playerctl previous";
"XF86AudioStop" = "playerctl stop";
"super + plus" = "bspc desktop --focus focused:^1";
"super + ecaron" = "bspc desktop --focus focused:^2";
"super + scaron" = "bspc desktop --focus focused:^3";
"super + ccaron" = "bspc desktop --focus focused:^4";
"super + rcaron" = "bspc desktop --focus focused:^5";
"super + zcaron" = "bspc desktop --focus focused:^6";
"super + yacute" = "bspc desktop --focus focused:^7";
"super + aacute" = "bspc desktop --focus focused:^8";
"super + iacute" = "bspc desktop --focus focused:^9";
"super + eacute" = "bspc desktop --focus focused:^10";
"super + shift + plus" = "bspc node -d focused:^1";
"super + shift + ecaron" = "bspc node -d focused:^2";
"super + shift + scaron" = "bspc node -d focused:^3";
"super + shift + ccaron" = "bspc node -d focused:^4";
"super + shift + rcaron" = "bspc node -d focused:^5";
"super + shift + zcaron" = "bspc node -d focused:^6";
"super + shift + yacute" = "bspc node -d focused:^7";
"super + shift + aacute" = "bspc node -d focused:^8";
"super + shift + iacute" = "bspc node -d focused:^9";
"super + shift + eacute" = "bspc node -d focused:^10";
};
};
}

126
home/modules/waybar.nix Normal file
View file

@ -0,0 +1,126 @@
{
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 20;
output = [
"DVI-D-1"
"HDMI-A-1"
];
modules-left = ["niri/workspaces"];
modules-right = ["clock"];
"niri/workspaces" = {
disable-scroll = true;
format = "{icon}";
format-icons = {
active = "";
default = "";
};
};
"clock" = {
interval = 1;
format = "{:%H:%M:%S} ";
format-alt = "{:%d/%m/%Y %H:%M:%S}";
tooltip = false;
};
};
};
style = ''
/* Colors */
@define-color fg #fafafa;
@define-color fg-alt #bdbdbd;
@define-color purple #d500f9;
@define-color red #ff1744;
@define-color trans transparent;
/* Global Settings */
* {
font-family: 'monospace';
font-size: 10px;
min-height: 0px;
border: none;
border-radius: 0;
}
/* Waybar */
window#waybar {
background-color: rgba(0, 0, 0, 0);
color: @fg;
}
/* Workspaces */
#workspaces {
background-color: rgba(0, 0, 0, 0);
color: @fg;
}
#workspaces button {
padding: 0 4px;
background-color: rgba(0, 0, 0, 0);
background-image: none;
color: @fg-alt;
border: none;
box-shadow: none;
text-shadow: none;
min-width: 0;
}
#workspaces button:hover {
background-color: rgba(0, 0, 0, 0);
background-image: none;
background: none;
color: @fg-alt;
box-shadow: none;
text-shadow: none;
border: none;
}
#workspaces button.active {
background-color: rgba(0, 0, 0, 0);
color: @purple;
}
#workspaces button.active:hover {
background-color: rgba(0, 0, 0, 0);
background-image: none;
color: @purple;
}
#workspaces button.urgent {
background-color: rgba(0, 0, 0, 0);
color: @red;
}
#workspaces button.urgent:hover {
background-color: rgba(0, 0, 0, 0);
background-image: none;
color: @red;
}
/* Clock */
#clock {
background-color: rgba(0, 0, 0, 0);
background-image: none;
background: none;
color: @fg;
padding: 0 8px;
border: none;
box-shadow: none;
text-shadow: none;
}
#clock:hover {
background-color: rgba(0, 0, 0, 0);
background-image: none;
background: none;
color: @fg;
box-shadow: none;
text-shadow: none;
border: none;
}
'';
};
}

13
home/modules/zellij.nix Normal file
View file

@ -0,0 +1,13 @@
{
programs.zellij = {
enable = true;
enableBashIntegration = false;
settings = {
on_force_close = "quit";
simplified_ui = true;
pane_frames = false;
default_layout = "compact";
show_startup_tips = false;
};
};
}

View file

@ -1,13 +0,0 @@
{
config.flake.factory.user = username: {
nixos."${username}" = {pkgs, ...}: {
users.users."${username}" = {
isNormalUser = true;
name = "${username}";
};
extraGroups = ["wheel"];
shell = pkgs.nushell;
};
};
}

View file

@ -1,13 +0,0 @@
{pkgs, ...}: {
flake.modules.nixos.desktop = {
boot = {
kernelPackages = pkgs.linuxPackages_6_12;
kernelParams = ["nvidia-drm.modeset=1"];
loader.grub = {
enable = true;
device = "/dev/disk/by-id/ata-KINGSTON_SKC300S37A60G_50026B7239039148";
};
};
};
}

View file

@ -1 +0,0 @@
{inputs, ...}: {flake.nixosConfigurations = inputs.self.lib.mkNixos "x86_64-linux" "desktop";}

View file

@ -1,7 +0,0 @@
{self, ...}: {
flake.modules.nixos.desktop = {
imports = [
self.factory.benDesktop
];
};
}

View file

@ -1,6 +0,0 @@
{lib, ...}: {
options.flake.factory = lib.mkOption {
type = lib.types.attrsof lib.types.unspecified;
default = {};
};
}

View file

@ -1,21 +0,0 @@
{
inputs,
lib,
...
}: {
options.flake.lib = lib.mkOption {
type = lib.types.attrsOf lib.types.unspecified;
default = {};
};
config.flake.lib = {
mkNixos = system: name: {
${name} = inputs.nixpkgs.lib.nixosSystem {
modules = [
inputs.self.modules.nixos.${name}
{nixpkgs.hostPlatform = lib.mkDefault system;}
];
};
};
};
}

View file

@ -1,9 +0,0 @@
{
self,
lib,
...
}: {
flake.modules = lib.mkMerge [
(self.factory.user "benDesktop")
];
}