Compare commits
23 Commits
4af0783c14
...
master
Author | SHA1 | Date | |
---|---|---|---|
815387a87e
|
|||
3c93a7e549
|
|||
e677a74c41
|
|||
a0d6bb0ab7
|
|||
03cf08f0d4
|
|||
c977589fde
|
|||
7af7980e07
|
|||
c47ca40705
|
|||
ebd19812a2
|
|||
844561a87c
|
|||
206d34adb2
|
|||
fa0a8f6901
|
|||
6db7efe71b
|
|||
1418e62598
|
|||
59075d1619
|
|||
db8ada4360
|
|||
6951525a3b
|
|||
295651262a
|
|||
83fcdd9710
|
|||
262b8913eb
|
|||
32a3205604
|
|||
914e011081
|
|||
94017ce4c9
|
BIN
Btop.png
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 2.2 MiB |
BIN
FastFetch.png
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 2.0 MiB |
BIN
NeoVim.png
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 2.0 MiB |
BIN
Rmpc.png
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 2.3 MiB |
@ -7,5 +7,6 @@
|
||||
|
||||
monolisa = pkgs.callPackage ./monolisa {};
|
||||
msty = pkgs.callPackage ./msty {};
|
||||
unityhub = pkgs.callPackage ./unityhub {};
|
||||
tidal-dl-ng = pkgs.callPackage ./tidal-dl-ng {};
|
||||
}
|
||||
|
@ -1,4 +1,3 @@
|
||||
# Taken from pull/422785
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
@ -47,7 +46,15 @@ stdenv.mkDerivation rec {
|
||||
++ extraPkgs pkgs;
|
||||
|
||||
multiPkgs = pkgs:
|
||||
with pkgs;
|
||||
with pkgs; let
|
||||
libxml2-legacy = libxml2.overrideAttrs (previousAttrs: rec {
|
||||
version = "2.13.8";
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/libxml2/${lib.versions.majorMinor version}/libxml2-${version}.tar.xz";
|
||||
hash = "sha256-J3KUyzMRmrcbK8gfL0Rem8lDW4k60VuyzSsOhZoO6Eo=";
|
||||
};
|
||||
});
|
||||
in
|
||||
[
|
||||
# Unity Hub ldd dependencies
|
||||
cups
|
||||
@ -94,7 +101,7 @@ stdenv.mkDerivation rec {
|
||||
xorg.libXcursor
|
||||
glib
|
||||
gdk-pixbuf
|
||||
libxml2
|
||||
libxml2-legacy
|
||||
zlib
|
||||
clang
|
||||
git # for git-based packages in unity package manager
|
118
flake.lock
generated
@ -161,7 +161,7 @@
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
@ -216,11 +216,11 @@
|
||||
},
|
||||
"hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1752666637,
|
||||
"narHash": "sha256-P8J72psdc/rWliIvp8jUpoQ6qRDlVzgSDDlgkaXQ0Fw=",
|
||||
"lastModified": 1753122741,
|
||||
"narHash": "sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "d1bfa8f6ccfb5c383e1eba609c1eb67ca24ed153",
|
||||
"rev": "cc66fddc6cb04ab479a1bb062f4d4da27c936a22",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -236,11 +236,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752814804,
|
||||
"narHash": "sha256-irfg7lnfEpJY+3Cffkluzp2MTVw1Uq9QGxFp6qadcXI=",
|
||||
"lastModified": 1753180535,
|
||||
"narHash": "sha256-KEtlzMs2O7FDvciFtjk9W4hyau013Pj9qZNK9a0PxEc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "d0300c8808e41da81d6edfc202f3d3833c157daf",
|
||||
"rev": "847711c7ffa9944b0c5c39a8342ac8eb6a9f9abc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -511,6 +511,27 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprspace": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland"
|
||||
],
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752663231,
|
||||
"narHash": "sha256-rTItuAWpzICMREF8Ww8cK4hYgNMRXJ4wjkN0akLlaWE=",
|
||||
"owner": "KZDKM",
|
||||
"repo": "Hyprspace",
|
||||
"rev": "0a82e3724f929de8ad8fb04d2b7fa128493f24f7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "KZDKM",
|
||||
"repo": "Hyprspace",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprutils": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@ -606,7 +627,7 @@
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733346208,
|
||||
@ -626,9 +647,7 @@
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"nix-index-database": "nix-index-database",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752566074,
|
||||
@ -697,13 +716,45 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1752687322,
|
||||
"narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=",
|
||||
"lastModified": 1753115646,
|
||||
"narHash": "sha256-yLuz5cz5Z+sn8DRAfNkrd2Z1cV6DaYO9JMrEz4KZo/c=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251",
|
||||
"rev": "92c2e04a475523e723c67ef872d8037379073681",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1752950548,
|
||||
"narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c87b95e25065c028d31a94f06a62927d18763fdf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1752950548,
|
||||
"narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c87b95e25065c028d31a94f06a62927d18763fdf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -713,7 +764,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1734323986,
|
||||
"narHash": "sha256-m/lh6hYMIWDYHCAsn81CDAiXoT3gmxXI9J987W5tZrE=",
|
||||
@ -733,14 +784,14 @@
|
||||
"nixpkgs"
|
||||
],
|
||||
"nuschtosSearch": "nuschtosSearch",
|
||||
"systems": "systems_3"
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752762787,
|
||||
"narHash": "sha256-WZLSOR2Pei7C4nH/ntKUqOZOAa5rgvc2fVZl4RoEXmw=",
|
||||
"lastModified": 1752976861,
|
||||
"narHash": "sha256-59HcrqHfbSJUdmpzrAa9x8fW1PoS+ZGhCjL5k5HbyV8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "bc0555c8694d43fb63ae2c7afec08b6987431a04",
|
||||
"rev": "0c50ed9349199219583cb1ed1a972d71e06039ec",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -780,11 +831,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752857527,
|
||||
"narHash": "sha256-M5/WooUjn1pOpixt9vEFc9AsCo+3Zi7wUNWl3VBJTRg=",
|
||||
"lastModified": 1753188105,
|
||||
"narHash": "sha256-+TzCdjqNolMiaXQputij1ZRd1kP5xp2AIcwWzxh+gDU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "fa509d10e459de7c36829cc2850d1df61c7e2e96",
|
||||
"rev": "e5000d3243509388c73347fab9d6adccba943a61",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -863,10 +914,12 @@
|
||||
"hypr-dynamic-cursors": "hypr-dynamic-cursors",
|
||||
"hyprland": "hyprland",
|
||||
"hyprland-plugins": "hyprland-plugins",
|
||||
"hyprspace": "hyprspace",
|
||||
"impermanence": "impermanence",
|
||||
"nix-alien": "nix-alien",
|
||||
"nix-flatpak": "nix-flatpak",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixvim": "nixvim",
|
||||
"nps": "nps",
|
||||
"nur": "nur",
|
||||
@ -910,6 +963,21 @@
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
@ -924,7 +992,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
|
59
flake.nix
@ -12,6 +12,9 @@
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
hardware.url = "github:nixos/nixos-hardware";
|
||||
|
||||
# NOTE: Update this after May and November
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||
|
||||
# Home Manager
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
@ -38,7 +41,9 @@
|
||||
|
||||
# Run unpatched binaries on NixOS
|
||||
nix-alien.url = "github:thiagokokada/nix-alien";
|
||||
nix-alien.inputs.nixpkgs.follows = "nixpkgs";
|
||||
# Don't follow nixpkgs:
|
||||
# https://github.com/thiagokokada/nix-alien#user-content-nixos-installation-with-flakes
|
||||
# nix-alien.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# Hyprland (use flake so plugins are not built from source)
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
@ -51,6 +56,9 @@
|
||||
hypr-dynamic-cursors.url = "github:VirtCode/hypr-dynamic-cursors";
|
||||
hypr-dynamic-cursors.inputs.nixpkgs.follows = "nixpkgs";
|
||||
hypr-dynamic-cursors.inputs.hyprland.follows = "hyprland";
|
||||
hyprspace.url = "github:KZDKM/Hyprspace";
|
||||
# hyprspace.inputs.nixpkgs.follows = "nixpkgs";
|
||||
hyprspace.inputs.hyprland.follows = "hyprland";
|
||||
|
||||
# NeoVim <3
|
||||
nixvim.url = "github:nix-community/nixvim";
|
||||
@ -71,10 +79,6 @@
|
||||
# Realtime audio
|
||||
# musnix.url = "github:musnix/musnix";
|
||||
# musnix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# Pinned versions
|
||||
# v4l2loopback-pinned.url = "github:nixos/nixpkgs/4684fd6b0c01e4b7d99027a34c93c2e09ecafee2";
|
||||
# unityhub-pinned.url = "github:huantianad/nixpkgs/9542b0bc7701e173a10e6977e57bbba68bb3051f";
|
||||
};
|
||||
|
||||
# Outputs is a function that takes the inputs as arguments.
|
||||
@ -108,41 +112,24 @@
|
||||
# firefox = prev.firefox.override { ... };
|
||||
# myBrowser = final.firefox;
|
||||
# }
|
||||
overlays = [
|
||||
overlays = let
|
||||
# Maintain additional stable pkgs.
|
||||
# This is supposed to provide a backup for packages in case they
|
||||
# stop building on the unstable branch.
|
||||
# It should otherwise not be mixed with this configuration,
|
||||
# so don't even pass it to the modules.
|
||||
pkgs-stable = import inputs.nixpkgs-stable {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
config.allowUnfreePredicate = pkg: true;
|
||||
};
|
||||
in [
|
||||
inputs.devshell.overlays.default
|
||||
inputs.nur.overlays.default
|
||||
# inputs.emacs-overlay.overlay
|
||||
|
||||
# Overriding specific packages from a different nixpkgs (e.g. a pull request)
|
||||
# can be done like this. Note that this creates an additional nixpkgs instance.
|
||||
# https://github.com/NixOS/nixpkgs/issues/418451
|
||||
# (final: prev: {
|
||||
# unityhub_pinned_3_13 = import inputs.unityhub-pinned {
|
||||
# config.allowUnfree = true;
|
||||
# localSystem = {inherit (prev) system;};
|
||||
# };
|
||||
# })
|
||||
|
||||
# TODO: Remove this after 0.15.1 hit nixpkgs
|
||||
(final: prev: {
|
||||
neovide = prev.neovide.overrideAttrs (finalAttrs: prevAttrs: {
|
||||
version = "0.15.1";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "neovide";
|
||||
repo = "neovide";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-2iV3g6tcCkMF7sFG/GZDz3czPZNIDi6YLfrVzYO9jYI=";
|
||||
};
|
||||
cargoHash = "sha256-YlHAcUCRk6ROg5yXIumHfsiR/2TrsSzbuXz/IQK7sEo=";
|
||||
cargoDeps = prev.rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname src version;
|
||||
hash = finalAttrs.cargoHash;
|
||||
};
|
||||
});
|
||||
})
|
||||
|
||||
# All my own overlays
|
||||
(import ./overlays {inherit nixpkgs inputs;})
|
||||
# All my own overlays (derivations + modifications)
|
||||
(import ./overlays {inherit inputs nixpkgs pkgs-stable;})
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -41,8 +41,7 @@
|
||||
};
|
||||
|
||||
modules = {
|
||||
# TODO: Reenable after build-failure on 2025-07-18
|
||||
beets.enable = false; # !headless;
|
||||
beets.enable = !headless;
|
||||
|
||||
btop.enable = true;
|
||||
|
||||
@ -82,7 +81,7 @@
|
||||
signCommits = true;
|
||||
};
|
||||
|
||||
hyprland = import ./hyprland.nix {inherit config headless;};
|
||||
hyprland = import ./hyprland.nix {inherit pkgs config headless;};
|
||||
hyprpanel.enable = !headless;
|
||||
kitty.enable = !headless;
|
||||
lazygit.enable = true;
|
||||
@ -460,7 +459,155 @@
|
||||
enableFishIntegration = config.modules.fish.enable;
|
||||
};
|
||||
|
||||
fastfetch.enable = true;
|
||||
fastfetch = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
logo = {
|
||||
padding = {
|
||||
top = 3;
|
||||
left = 1;
|
||||
right = 2;
|
||||
};
|
||||
};
|
||||
|
||||
display = {
|
||||
separator = "";
|
||||
key.width = 17;
|
||||
};
|
||||
|
||||
# Box Drawing: ╭ ─ ╮ ╰ ╯ │
|
||||
modules = [
|
||||
# Title
|
||||
{
|
||||
type = "title";
|
||||
format = "{#1}╭─── {#}{user-name-colored}";
|
||||
}
|
||||
|
||||
# System Information
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│ {#}System Information";
|
||||
}
|
||||
{
|
||||
type = "os";
|
||||
key = "{#separator}│ {#keys} OS";
|
||||
}
|
||||
{
|
||||
type = "kernel";
|
||||
key = "{#separator}│ {#keys} Kernel";
|
||||
}
|
||||
{
|
||||
type = "bootmgr";
|
||||
key = "{#separator}│ {#keys} BootMGR";
|
||||
}
|
||||
{
|
||||
type = "uptime";
|
||||
key = "{#separator}│ {#keys} Uptime";
|
||||
}
|
||||
{
|
||||
type = "packages";
|
||||
key = "{#separator}│ {#keys} Packages";
|
||||
# format = "{all}";
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│";
|
||||
}
|
||||
|
||||
# Desktop Environment
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│ {#}Desktop Environment";
|
||||
}
|
||||
{
|
||||
type = "de";
|
||||
key = "{#separator}│ {#keys} DE";
|
||||
}
|
||||
{
|
||||
type = "wm";
|
||||
key = "{#separator}│ {#keys} WM";
|
||||
}
|
||||
{
|
||||
type = "wmtheme";
|
||||
key = "{#separator}│ {#keys} Theme";
|
||||
}
|
||||
{
|
||||
type = "display";
|
||||
key = "{#separator}│ {#keys} Resolution";
|
||||
}
|
||||
{
|
||||
type = "shell";
|
||||
key = "{#separator}│ {#keys} Shell";
|
||||
}
|
||||
{
|
||||
type = "terminalfont";
|
||||
key = "{#separator}│ {#keys} Font";
|
||||
}
|
||||
{
|
||||
type = "icons";
|
||||
key = "{#separator}│ {#keys} Icons";
|
||||
}
|
||||
{
|
||||
type = "cursor";
|
||||
key = "{#separator}│ {#keys} Cursor";
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│";
|
||||
}
|
||||
|
||||
# Hardware Information
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│ {#}Hardware Information";
|
||||
}
|
||||
{
|
||||
type = "board";
|
||||
key = "{#separator}│ {#keys} Board";
|
||||
}
|
||||
{
|
||||
type = "cpu";
|
||||
key = "{#separator}│ {#keys} CPU";
|
||||
}
|
||||
{
|
||||
type = "gpu";
|
||||
key = "{#separator}│ {#keys} GPU";
|
||||
}
|
||||
{
|
||||
type = "memory";
|
||||
key = "{#separator}│ {#keys} Memory";
|
||||
}
|
||||
# {
|
||||
# type = "disk";
|
||||
# key = "{#separator}│ {#keys} Disk (/)";
|
||||
# folders = "/";
|
||||
# }
|
||||
# {
|
||||
# type = "disk";
|
||||
# key = "{#separator}│ {#keys} Disk (~/Games)";
|
||||
# folders = "/home/christoph/Games";
|
||||
# }
|
||||
{
|
||||
type = "btrfs";
|
||||
key = "{#separator}│ {#keys} BTRFS";
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│";
|
||||
}
|
||||
|
||||
# Colors Footer
|
||||
{
|
||||
type = "colors";
|
||||
key = "{#separator}╰─── {#1}";
|
||||
keyWidth = 6;
|
||||
symbol = "circle";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
fd.enable = true;
|
||||
|
||||
fzf = {
|
||||
|
@ -1,9 +1,14 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
headless,
|
||||
}: {
|
||||
enable = !headless;
|
||||
dunst.enable = !config.modules.hyprpanel.enable; # Disable for hyprpanel
|
||||
bars.enable = false;
|
||||
dynamicCursor.enable = false;
|
||||
trails.enable = true;
|
||||
hyprspace.enable = true;
|
||||
|
||||
keybindings = {
|
||||
main-mod = "SUPER";
|
||||
@ -33,6 +38,25 @@
|
||||
"$mainMod, XF86MonBrightnessDown" = ["exec, hyprctl hyprsunset temperature 5750"];
|
||||
"$mainMod, XF86MonBrightnessUp" = ["exec, hyprctl hyprsunset identity"];
|
||||
|
||||
"CTRL ALT, f" = let
|
||||
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
||||
grep = "${pkgs.gnugrep}/bin/grep";
|
||||
awk = "${pkgs.gawk}/bin/gawk";
|
||||
notify = "${pkgs.libnotify}/bin/notify-send";
|
||||
|
||||
toggleMouseFocus = pkgs.writeScriptBin "hypr-toggle-mouse-focus" ''
|
||||
CURRENT=$(${hyprctl} getoption input:follow_mouse | ${grep} int | ${awk} -F' ' '{print $2}')
|
||||
|
||||
if [[ "$CURRENT" == "1" ]]; then
|
||||
${hyprctl} keyword input:follow_mouse 0
|
||||
${notify} "Disabled Mouse Focus!"
|
||||
else
|
||||
${hyprctl} keyword input:follow_mouse 1
|
||||
${notify} "Enabled Mouse Focus!"
|
||||
fi
|
||||
'';
|
||||
in ["exec, ${toggleMouseFocus}/bin/hypr-toggle-mouse-focus"];
|
||||
|
||||
# "CTRL ALT, t" = ["exec, bash -c 'systemctl --user restart hyprpanel.service'"];
|
||||
};
|
||||
|
||||
@ -60,7 +84,7 @@
|
||||
|
||||
autostart = {
|
||||
immediate = [
|
||||
"kitty"
|
||||
"kitty --hold fastfetch"
|
||||
"zeal"
|
||||
"nextcloud --background"
|
||||
"protonvpn-app"
|
||||
@ -80,12 +104,16 @@
|
||||
};
|
||||
};
|
||||
|
||||
windowrules = [];
|
||||
windowrules = [
|
||||
# Fix jetbrains tooltip flicker
|
||||
"float,class:^(jetbrains-.*)$,title:^(win[0-9]+)$"
|
||||
"nofocus,class:^(jetbrains-.*)$,title:^(win[0-9]+)$"
|
||||
];
|
||||
|
||||
workspacerules = {
|
||||
"1" = [];
|
||||
"2" = ["Zotero" "neovide" "code-url-handler"];
|
||||
"3" = ["obsidian" "unityhub" "Unity"];
|
||||
"3" = ["obsidian"];
|
||||
"4" = ["firefox" "Google-chrome" "chromium-browser" "org.qutebrowser.qutebrowser"];
|
||||
"5" = ["steam"];
|
||||
"6" = ["steam_app_(.+)"];
|
||||
@ -102,6 +130,7 @@
|
||||
title = "File Operation Progress";
|
||||
}
|
||||
{class = "ffplay";}
|
||||
{class = "Unity";}
|
||||
];
|
||||
|
||||
transparent-opacity = "0.75";
|
||||
|
@ -91,8 +91,7 @@
|
||||
# Add any extra libraries you want accessible to Rider here
|
||||
];
|
||||
|
||||
# TODO: Broken, jetbrains.jdk doesn't build (see nixpkgs #425328)
|
||||
unity-rider = pkgs.jetbrains.rider.overrideAttrs (attrs: {
|
||||
rider-unity = pkgs.jetbrains.rider.overrideAttrs (attrs: {
|
||||
postInstall =
|
||||
''
|
||||
# Wrap rider with extra tools and libraries
|
||||
@ -115,25 +114,27 @@
|
||||
});
|
||||
in {
|
||||
packages = with pkgs; [
|
||||
# quartus-prime-lite # Intel FPGA design software
|
||||
# Intel FPGA design software
|
||||
# quartus-prime-lite
|
||||
|
||||
# Don't want heavy IDE's on the laptop
|
||||
# jetbrains.clion
|
||||
# jetbrains.rust-rover
|
||||
# jetbrains.pycharm-professional
|
||||
# jetbrains.idea-ultimate
|
||||
# jetbrains.webstorm
|
||||
# jetbrains.rider
|
||||
|
||||
# Unity Stuff
|
||||
# TODO: Unity module
|
||||
# unityhub # TODO: Wait for https://nixpk.gs/pr-tracker.html?pr=422785
|
||||
# unity-rider
|
||||
# dotnetCore
|
||||
# mono
|
||||
unityhub
|
||||
rider-unity
|
||||
dotnetCore
|
||||
mono
|
||||
steam-run-free # nix-alien doesn't seem to run unity apps, this does...
|
||||
|
||||
blender
|
||||
(blender.override {cudaSupport = true;})
|
||||
godot_4
|
||||
obs-studio
|
||||
(obs-studio.override {cudaSupport = true;})
|
||||
kdePackages.kdenlive
|
||||
krita
|
||||
makemkv
|
||||
@ -144,19 +145,20 @@
|
||||
|
||||
file = lib.mkMerge [
|
||||
{
|
||||
# ".local/share/applications/jetbrains-rider.desktop".source = let
|
||||
# desktopFile = pkgs.makeDesktopItem {
|
||||
# name = "jetbrains-rider";
|
||||
# desktopName = "Rider";
|
||||
# exec = "\"${unity-rider}/bin/rider\"";
|
||||
# icon = "rider";
|
||||
# type = "Application";
|
||||
# # Don't show desktop icon in search or run launcher
|
||||
# extraConfig.NoDisplay = "true";
|
||||
# };
|
||||
# in "${desktopFile}/share/applications/jetbrains-rider.desktop";
|
||||
".local/share/applications/jetbrains-rider.desktop".source = let
|
||||
desktopFile = pkgs.makeDesktopItem {
|
||||
name = "jetbrains-rider";
|
||||
desktopName = "Rider";
|
||||
exec = "\"${rider-unity}/bin/rider\"";
|
||||
icon = "rider";
|
||||
type = "Application";
|
||||
# Don't show desktop icon in search or run launcher
|
||||
extraConfig.NoDisplay = "true";
|
||||
};
|
||||
in "${desktopFile}/share/applications/jetbrains-rider.desktop";
|
||||
|
||||
".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source = ../../../config/mangohud/MangoHud.conf;
|
||||
".var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf".source =
|
||||
../../../config/mangohud/MangoHud.conf;
|
||||
}
|
||||
(lib.optionalAttrs (mylib.modules.contains config.home.packages pkgs.makemkv) {
|
||||
".MakeMKV/settings.conf".source =
|
||||
@ -213,7 +215,7 @@
|
||||
"com.usebottles.bottles"
|
||||
"io.github.lawstorant.boxflat"
|
||||
|
||||
"com.unity.UnityHub"
|
||||
# "com.unity.UnityHub"
|
||||
];
|
||||
|
||||
overrides = {
|
||||
|
@ -34,10 +34,10 @@ in {
|
||||
theme[hi_fg]=${color.hexS.accent}
|
||||
|
||||
# Background color of selected item in processes box
|
||||
theme[selected_bg]=${color.hexS.surface1}
|
||||
theme[selected_bg]=${color.hexS.accentDim}
|
||||
|
||||
# Foreground color of selected item in processes box
|
||||
theme[selected_fg]=${color.hexS.accent}
|
||||
theme[selected_fg]=${color.hexS.accentText}
|
||||
|
||||
# Color of inactive/disabled text
|
||||
theme[inactive_fg]=${color.hexS.overlay0}
|
||||
|
@ -78,6 +78,7 @@ in [
|
||||
(mkBm "DeepSeek Chat" "https://chat.deepseek.com/")
|
||||
(mkBm "Claude Chat" "https://claude.ai/new")
|
||||
(mkBm "ChatGPT" "https://chatgpt.com/")
|
||||
(mkBm "DeepWiki" "https://deepwiki.com/")
|
||||
"separator"
|
||||
(mkBm "Mistral API" "https://console.mistral.ai/usage")
|
||||
(mkBm "DeepSeek API" "https://platform.deepseek.com/usage")
|
||||
|
@ -11,7 +11,7 @@ builtins.concatLists [
|
||||
"wl-paste -t text --watch clipman store --no-persist"
|
||||
"wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\""
|
||||
|
||||
"hyprctl setcursor Bibata-Modern-Classic 16"
|
||||
"hyprctl setcursor ${config.home.pointerCursor.name} ${builtins.toString config.home.pointerCursor.size}"
|
||||
"hyprsunset --identity"
|
||||
|
||||
# HACK: Hyprland doesn't set the xwayland/x11 keymap correctly
|
||||
|
@ -48,7 +48,7 @@ in {
|
||||
x11.enable = true;
|
||||
package = pkgs.bibata-cursors;
|
||||
name = "Bibata-Modern-Classic";
|
||||
size = 16;
|
||||
size = 24;
|
||||
};
|
||||
|
||||
packages = with pkgs; [
|
||||
@ -145,9 +145,19 @@ in {
|
||||
systemd.variables = ["--all"]; # Import PATH into systemd
|
||||
xwayland.enable = true;
|
||||
|
||||
plugins = [
|
||||
inputs.hypr-dynamic-cursors.packages.${pkgs.system}.hypr-dynamic-cursors
|
||||
inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars
|
||||
plugins = builtins.concatLists [
|
||||
(lib.optionals
|
||||
hyprland.bars.enable
|
||||
[inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars])
|
||||
(lib.optionals
|
||||
hyprland.dynamicCursor.enable
|
||||
[inputs.hypr-dynamic-cursors.packages.${pkgs.system}.hypr-dynamic-cursors])
|
||||
(lib.optionals
|
||||
hyprland.trails.enable
|
||||
[inputs.hyprland-plugins.packages.${pkgs.system}.hyprtrails])
|
||||
(lib.optionals
|
||||
hyprland.hyprspace.enable
|
||||
[inputs.hyprspace.packages.${pkgs.system}.Hyprspace])
|
||||
];
|
||||
|
||||
settings = import ./settings.nix {
|
||||
|
@ -2,9 +2,15 @@
|
||||
lib,
|
||||
mylib,
|
||||
...
|
||||
}: rec {
|
||||
}: {
|
||||
enable = lib.mkEnableOption "Hyprland Window Manager + Compositor";
|
||||
|
||||
dunst.enable = lib.mkEnableOption "Enable dunst notification daemon";
|
||||
bars.enable = lib.mkEnableOption "Enable window bars";
|
||||
dynamicCursor.enable = lib.mkEnableOption "Enable dynamic cursors";
|
||||
trails.enable = lib.mkEnableOption "Enable dynamic window trails";
|
||||
hyprspace.enable = lib.mkEnableOption "Enable hyprspace workspace overview";
|
||||
|
||||
keyboard = {
|
||||
layout = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
@ -25,128 +31,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
dunst.enable = lib.mkEnableOption "Enable dunst notification daemon";
|
||||
|
||||
monitors = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
description = "Hyprland Monitor Configurations";
|
||||
example = ''
|
||||
{
|
||||
"HDMI-A-1" = {
|
||||
width = 2560;
|
||||
height = 1440;
|
||||
rate = 144;
|
||||
x = 1920;
|
||||
y = 0;
|
||||
scale = 1;
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
workspaces = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
description = "How workspaces are distributed to monitors. These monitors will also receive a wallpaper.";
|
||||
example = ''
|
||||
{
|
||||
"HDMI-A-1" = [1 2 3 4 5 6 7 8 9];
|
||||
"HDMI-A-2" = [0];
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
autostart = {
|
||||
immediate = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Programs to launch when Hyprland starts";
|
||||
example = ''
|
||||
[
|
||||
"kitty"
|
||||
]
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
delayed = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Programs to launch with a delay when Hyprland starts (e.g. to wait for the waybar tray)";
|
||||
example = ''
|
||||
[
|
||||
"keepassxc"
|
||||
"nextcloud --background"
|
||||
]
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
special-silent = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.listOf lib.types.str);
|
||||
description = "Programs to silently launch on special workspaces";
|
||||
example = ''
|
||||
{
|
||||
"ferdium" = ["ferdium"];
|
||||
"btop" = ["kitty --title=Btop btop"];
|
||||
}
|
||||
'';
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
|
||||
workspacerules = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
description = "Launch programs on specified workspaces, accepts window class.";
|
||||
example = ''
|
||||
{
|
||||
"2" = [
|
||||
"jetbrains-clion"
|
||||
"code-url-handler"
|
||||
];
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
windowrules = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Specify specific window rules.";
|
||||
example = ''
|
||||
[
|
||||
"suppressevent activate, class: Unity"
|
||||
]
|
||||
'';
|
||||
};
|
||||
|
||||
transparent-opacity = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "The opacity transparent windows should have.";
|
||||
example = "0.8";
|
||||
};
|
||||
|
||||
floating = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.attrs;
|
||||
description = "What programs are floating down here?";
|
||||
example = ''
|
||||
[
|
||||
{
|
||||
class = "thunar";
|
||||
title = "File Operation Progress";
|
||||
}
|
||||
{
|
||||
class = "org.kde.polkit-kde-authentication-agent-1";
|
||||
}
|
||||
]
|
||||
'';
|
||||
};
|
||||
|
||||
transparent = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "What programs should be transparent? Accepts window class.";
|
||||
example = ''
|
||||
[
|
||||
"kitty"
|
||||
]
|
||||
'';
|
||||
};
|
||||
|
||||
keybindings = {
|
||||
main-mod = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
@ -197,4 +81,124 @@
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
monitors = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
description = "Hyprland Monitor Configurations";
|
||||
example = ''
|
||||
{
|
||||
"HDMI-A-1" = {
|
||||
width = 2560;
|
||||
height = 1440;
|
||||
rate = 144;
|
||||
x = 1920;
|
||||
y = 0;
|
||||
scale = 1;
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
workspaces = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
description = "How workspaces are distributed to monitors. These monitors will also receive a wallpaper.";
|
||||
example = ''
|
||||
{
|
||||
"HDMI-A-1" = [1 2 3 4 5 6 7 8 9];
|
||||
"HDMI-A-2" = [0];
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
workspacerules = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
description = "Launch programs on specified workspaces, accepts window class.";
|
||||
example = ''
|
||||
{
|
||||
"2" = [
|
||||
"jetbrains-clion"
|
||||
"code-url-handler"
|
||||
];
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
windowrules = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Specify specific window rules.";
|
||||
example = ''
|
||||
[
|
||||
"suppressevent activate, class: Unity"
|
||||
]
|
||||
'';
|
||||
};
|
||||
|
||||
transparent-opacity = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "The opacity transparent windows should have.";
|
||||
example = "0.8";
|
||||
};
|
||||
|
||||
transparent = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "What programs should be transparent? Accepts window class.";
|
||||
example = ''
|
||||
[
|
||||
"kitty"
|
||||
]
|
||||
'';
|
||||
};
|
||||
|
||||
floating = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.attrs;
|
||||
description = "What programs are floating down here?";
|
||||
example = ''
|
||||
[
|
||||
{
|
||||
class = "thunar";
|
||||
title = "File Operation Progress";
|
||||
}
|
||||
{
|
||||
class = "org.kde.polkit-kde-authentication-agent-1";
|
||||
}
|
||||
]
|
||||
'';
|
||||
};
|
||||
|
||||
autostart = {
|
||||
immediate = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Programs to launch when Hyprland starts";
|
||||
example = ''
|
||||
[
|
||||
"kitty"
|
||||
]
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
delayed = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Programs to launch with a delay when Hyprland starts (e.g. to wait for the waybar tray)";
|
||||
example = ''
|
||||
[
|
||||
"keepassxc"
|
||||
"nextcloud --background"
|
||||
]
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
special-silent = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.listOf lib.types.str);
|
||||
description = "Programs to silently launch on special workspaces";
|
||||
example = ''
|
||||
{
|
||||
"ferdium" = ["ferdium"];
|
||||
"btop" = ["kitty --title=Btop btop"];
|
||||
}
|
||||
'';
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -205,4 +205,155 @@
|
||||
"workspaces, 1, 6, default"
|
||||
];
|
||||
};
|
||||
|
||||
plugin = lib.mergeAttrsList [
|
||||
(lib.optionalAttrs hyprland.bars.enable {
|
||||
hyprbars = {
|
||||
enabled = true;
|
||||
|
||||
bar_height = 25;
|
||||
bar_blur = true;
|
||||
bar_color = "rgb(${color.hex.base})";
|
||||
col.text = "rgb(${color.hex.text})";
|
||||
|
||||
bar_title_enabled = true;
|
||||
bar_text_size = 12;
|
||||
bar_text_font = color.font;
|
||||
|
||||
bar_text_align = "center";
|
||||
bar_buttons_alignment = "left";
|
||||
|
||||
bar_part_of_window = true;
|
||||
bar_precedence_over_border = false;
|
||||
|
||||
# example buttons (R -> L)
|
||||
# hyprbars-button = color, size, on-click
|
||||
hyprbars-button = [
|
||||
"rgb(${color.hex.red}), 10, , hyprctl dispatch killactive"
|
||||
"rgb(${color.hex.green}), 10, , hyprctl dispatch fullscreen 1"
|
||||
];
|
||||
|
||||
# cmd to run on double click of the bar
|
||||
on_double_click = "hyprctl dispatch fullscreen 1";
|
||||
};
|
||||
})
|
||||
|
||||
(lib.optionalAttrs hyprland.dynamicCursor.enable {
|
||||
dynamic-cursors = {
|
||||
# enables the plugin
|
||||
enabled = true;
|
||||
|
||||
# sets the cursor behaviour, supports these values:
|
||||
# tilt - tilt the cursor based on x-velocity
|
||||
# rotate - rotate the cursor based on movement direction
|
||||
# stretch - stretch the cursor shape based on direction and velocity
|
||||
# none - do not change the cursors behaviour
|
||||
mode = "rotate";
|
||||
|
||||
# minimum angle difference in degrees after which the shape is changed
|
||||
# smaller values are smoother, but more expensive for hw cursors
|
||||
threshold = 2;
|
||||
|
||||
# for mode = rotate
|
||||
rotate = {
|
||||
# length in px of the simulated stick used to rotate the cursor
|
||||
# most realistic if this is your actual cursor size
|
||||
length = 20;
|
||||
|
||||
# clockwise offset applied to the angle in degrees
|
||||
# this will apply to ALL shapes
|
||||
offset = 0.0;
|
||||
};
|
||||
|
||||
# for mode = tilt
|
||||
tilt = {
|
||||
# controls how powerful the tilt is, the lower, the more power
|
||||
# this value controls at which speed (px/s) the full tilt is reached
|
||||
# the full tilt being 60° in both directions
|
||||
limit = 1000;
|
||||
|
||||
# relationship between speed and tilt, supports these values:
|
||||
# linear - a linear function is used
|
||||
# quadratic - a quadratic function is used (most realistic to actual air drag)
|
||||
# negative_quadratic - negative version of the quadratic one, feels more aggressive
|
||||
# see `activation` in `src/mode/utils.cpp` for how exactly the calculation is done
|
||||
function = "negative_quadratic";
|
||||
|
||||
# time window (ms) over which the speed is calculated
|
||||
# higher values will make slow motions smoother but more delayed
|
||||
window = 100;
|
||||
};
|
||||
|
||||
# configure shake to find
|
||||
# magnifies the cursor if its is being shaken
|
||||
shake = {
|
||||
# enables shake to find
|
||||
enabled = false;
|
||||
|
||||
# use nearest-neighbour (pixelated) scaling when shaking
|
||||
# may look weird when effects are enabled
|
||||
nearest = true;
|
||||
|
||||
# controls how soon a shake is detected
|
||||
# lower values mean sooner
|
||||
threshold = 3.0;
|
||||
|
||||
# magnification level immediately after shake start
|
||||
base = 1.5;
|
||||
# magnification increase per second when continuing to shake
|
||||
speed = 0.0;
|
||||
# how much the speed is influenced by the current shake intensitiy
|
||||
influence = 0.0;
|
||||
|
||||
# maximal magnification the cursor can reach
|
||||
# values below 1 disable the limit (e.g. 0)
|
||||
limit = 0.0;
|
||||
|
||||
# time in millseconds the cursor will stay magnified after a shake has ended
|
||||
timeout = 1000;
|
||||
|
||||
# show cursor behaviour `tilt`, `rotate`, etc. while shaking
|
||||
effects = true;
|
||||
|
||||
# enable ipc events for shake
|
||||
# see the `ipc` section below
|
||||
ipc = false;
|
||||
};
|
||||
|
||||
# use hyprcursor to get a higher resolution texture when the cursor is magnified
|
||||
# see the `hyprcursor` section below
|
||||
hyprcursor = {
|
||||
# use nearest-neighbour (pixelated) scaling when magnifing beyond texture size
|
||||
# this will also have effect without hyprcursor support being enabled
|
||||
# 0 / false - never use pixelated scaling
|
||||
# 1 / true - use pixelated when no highres image
|
||||
# 2 - always use pixleated scaling
|
||||
nearest = true;
|
||||
|
||||
# enable dedicated hyprcursor support
|
||||
enabled = true;
|
||||
|
||||
# resolution in pixels to load the magnified shapes at
|
||||
# be warned that loading a very high-resolution image will take a long time and might impact memory consumption
|
||||
# -1 means we use [normal cursor size] * [shake:base option]
|
||||
resolution = -1;
|
||||
|
||||
# shape to use when clientside cursors are being magnified
|
||||
# see the shape-name property of shape rules for possible names
|
||||
# specifying clientside will use the actual shape, but will be pixelated
|
||||
fallback = "clientside";
|
||||
};
|
||||
};
|
||||
})
|
||||
|
||||
(lib.optionalAttrs hyprland.trails.enable {
|
||||
hyprtrails = {
|
||||
color = "rgb(${color.hex.accent})";
|
||||
};
|
||||
})
|
||||
|
||||
(lib.optionalAttrs hyprland.hyprspace.enable {
|
||||
overview = {};
|
||||
})
|
||||
];
|
||||
}
|
||||
|
@ -28,12 +28,13 @@ in {
|
||||
"bar.autoHide" = "never";
|
||||
|
||||
# https://github.com/Jas-SinghFSU/HyprPanel/blob/master/src/configuration/modules/config/bar/layouts/index.ts
|
||||
# TODO: To module option
|
||||
# TODO: This should contain battery etc. for laptop
|
||||
"bar.layouts" = {
|
||||
"HDMI-A-1" = {
|
||||
"left" = ["workspaces" "windowtitle"];
|
||||
"middle" = ["media"]; # "cava"
|
||||
"right" = ["volume" "network" "bluetooth" "cpu" "ram" "storage" "clock" "systray" "notifications"];
|
||||
"right" = ["volume" "network" "cpu" "ram" "storage" "clock" "systray" "notifications"]; # "bluetooth"
|
||||
};
|
||||
"DP-1" = {
|
||||
"left" = ["workspaces" "windowtitle"];
|
||||
@ -282,7 +283,12 @@ in {
|
||||
"theme.bar.buttons.clock.spacing" = "6px";
|
||||
"theme.bar.buttons.clock.text" = "#${color.hex.accentText}";
|
||||
|
||||
# TODO: To module option
|
||||
# https://github.com/Jas-SinghFSU/HyprPanel/blob/master/src/configuration/modules/config/bar/systray/index.ts
|
||||
"bar.systray.ignore" = [
|
||||
"Fcitx" # Keyboard indicator
|
||||
]; # Middle click the tray icon to show a notification with the app name :)
|
||||
"bar.systray.customIcons" = {};
|
||||
|
||||
# https://github.com/Jas-SinghFSU/HyprPanel/blob/master/src/configuration/modules/theme/bar/buttons/systray.ts
|
||||
"theme.bar.buttons.systray.background" = "#${color.hex.blue}";
|
||||
|
@ -68,6 +68,7 @@ in {
|
||||
(mkBm "DeepSeek Chat" "https://chat.deepseek.com/")
|
||||
(mkBm "Claude Chat" "https://claude.ai/new")
|
||||
(mkBm "ChatGPT" "https://chatgpt.com/")
|
||||
(mkBm "DeepWiki" "https://deepwiki.com/")
|
||||
(mkBm "Mistral API" "https://console.mistral.ai/usage")
|
||||
(mkBm "DeepSeek API" "https://platform.deepseek.com/usage")
|
||||
(mkBm "Claude API" "https://console.anthropic.com/usage")
|
||||
|
@ -62,21 +62,7 @@ in {
|
||||
background-color = mkLiteral trans;
|
||||
};
|
||||
|
||||
"message" = {
|
||||
background-color = mkLiteral trans;
|
||||
};
|
||||
|
||||
"error-message" = {
|
||||
background-color = mkLiteral trans;
|
||||
margin = mkLiteral "0px 0px 10px 0px";
|
||||
};
|
||||
|
||||
"textbox" = {
|
||||
background-color = mkLiteral trans;
|
||||
padding = 6;
|
||||
margin = mkLiteral "10px 10px 0px 10px";
|
||||
border-radius = 3;
|
||||
};
|
||||
# TOP INPUT BAR START
|
||||
|
||||
"inputbar" = {
|
||||
children = builtins.map mkLiteral ["prompt" "entry"];
|
||||
@ -101,6 +87,26 @@ in {
|
||||
border-color = mkLiteral color.hexS.accentHl;
|
||||
};
|
||||
|
||||
# MESSAGEBOX (usually not visible)
|
||||
|
||||
"message" = {
|
||||
background-color = mkLiteral trans;
|
||||
};
|
||||
|
||||
"error-message" = {
|
||||
background-color = mkLiteral trans;
|
||||
margin = mkLiteral "0px 0px 10px 0px";
|
||||
};
|
||||
|
||||
"textbox" = {
|
||||
background-color = mkLiteral trans;
|
||||
padding = 6;
|
||||
margin = mkLiteral "10px 10px 0px 10px";
|
||||
border-radius = 3;
|
||||
};
|
||||
|
||||
# LISTVIEW
|
||||
|
||||
"listview" = {
|
||||
# border = mkLiteral "0px 0px 0px";
|
||||
padding = 0;
|
||||
@ -109,7 +115,7 @@ in {
|
||||
background-color = mkLiteral trans;
|
||||
border = mkLiteral "2 solid 2 solid 2 solid 2 solid";
|
||||
border-radius = 3;
|
||||
border-color = mkLiteral color.hexS.accentHl;
|
||||
border-color = mkLiteral color.hexS.accentDim;
|
||||
};
|
||||
|
||||
"element" = {
|
||||
@ -125,7 +131,7 @@ in {
|
||||
};
|
||||
|
||||
"element selected" = {
|
||||
background-color = mkLiteral color.hexS.accentHl;
|
||||
background-color = mkLiteral color.hexS.accentDim;
|
||||
text-color = mkLiteral color.hexS.accentText;
|
||||
};
|
||||
};
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
inputs,
|
||||
nixpkgs,
|
||||
pkgs-stable,
|
||||
...
|
||||
}: let
|
||||
# Taken from https://github.com/Misterio77/nix-config/blob/main/overlay/default.nix
|
||||
@ -11,14 +12,39 @@
|
||||
pkgs = final;
|
||||
};
|
||||
|
||||
modifications = final: prev: rec {
|
||||
modifications = final: prev: {
|
||||
# Only kept as an example, has nothing to do with current dconf-editor-wrapped derivation
|
||||
# dconf-editor-wrapped = import ./dconf-editor.nix { inherit final prev; };
|
||||
# Use dconf-editor.nix: { final, prev }: final.<package>.overrideAttrs (oldAttrs: { ... }) or sth similar
|
||||
|
||||
# Overriding specific packages from a different nixpkgs (e.g. a pull request)
|
||||
# can be done like this. Note that this creates an additional nixpkgs instance.
|
||||
# https://github.com/NixOS/nixpkgs/issues/418451
|
||||
# unityhub_3_13 =
|
||||
# (import inputs.unityhub-pinned {
|
||||
# config.allowUnfree = true;
|
||||
# localSystem = {inherit (prev) system;};
|
||||
# }).unityhub;
|
||||
|
||||
# TODO: Remove this after 0.15.1 hits nixpkgs
|
||||
neovide = prev.neovide.overrideAttrs (finalAttrs: prevAttrs: {
|
||||
version = "0.15.1";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "neovide";
|
||||
repo = "neovide";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-2iV3g6tcCkMF7sFG/GZDz3czPZNIDi6YLfrVzYO9jYI=";
|
||||
};
|
||||
cargoHash = "sha256-YlHAcUCRk6ROg5yXIumHfsiR/2TrsSzbuXz/IQK7sEo=";
|
||||
cargoDeps = prev.rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) pname src version;
|
||||
hash = finalAttrs.cargoHash;
|
||||
};
|
||||
});
|
||||
|
||||
# TODO: Remove this after jetbrains.jdk builds again (nixpkgs issue 425328)
|
||||
jetbrains.rider = pkgs-stable.jetbrains.rider;
|
||||
};
|
||||
in
|
||||
# TODO: I have absolutely no clue what happens here lol
|
||||
# Basically we need some sort of list of all overlays that can be imported from the flake
|
||||
# in the overlays = [ ... ] section of the pkgs = import nixpkgs { ... } configuration
|
||||
# Somehow this library function turns additions/modifications into that
|
||||
# Composes a list of overlays and returns a single overlay function that combines them.
|
||||
nixpkgs.lib.composeManyExtensions [additions modifications]
|
||||
|
@ -43,6 +43,12 @@ in {
|
||||
mkRFile = mkFile "root";
|
||||
mkUDir = mkDir "${username}";
|
||||
mkUFile = mkFile "${username}";
|
||||
# TODO: sth. like this, make options for configdirs/sharedirs/statedirs/homedirs
|
||||
# populate options from respective modules, not here...
|
||||
# mkConfigDirs = dirs:
|
||||
# dirs
|
||||
# |> builtins.map (dir: ".config/${dir}")
|
||||
# |> builtins.map mkUDir # NOTE: mkUDir has wrong arg order
|
||||
in
|
||||
lib.mkIf impermanence.enable {
|
||||
# TODO: Create options to allow host-specific impermanence setup
|
||||
@ -80,13 +86,13 @@ in {
|
||||
files = [
|
||||
# NOTE: Don't put files generated/linked by HM here (they're already managed)
|
||||
|
||||
# TODO: These files are not mounted?
|
||||
(mkUFile ".config/.tidal-dl.json" m755)
|
||||
(mkUFile ".config/.tidal-dl.token.json" m755)
|
||||
(mkUFile ".config/QtProject.conf" m755) # KeePassXC
|
||||
# TODO: Specifying files here (e.g. .config/QtProject.conf) doesn't seem to work
|
||||
# They won't get mounted, also they can't be unmounted (because they're not mounted),
|
||||
# which leads to /home not being unmounted correctly during shutdown...
|
||||
];
|
||||
|
||||
directories = [
|
||||
# Home directory
|
||||
(mkUDir "Downloads" m755)
|
||||
(mkUDir "Documents" m755)
|
||||
(mkUDir "GitRepos" m755)
|
||||
@ -98,26 +104,35 @@ in {
|
||||
(mkUDir "Unity" m755)
|
||||
(mkUDir "Videos" m755)
|
||||
|
||||
# Secrets
|
||||
(mkUDir ".gnupg" m755) # m600
|
||||
(mkUDir ".secrets" m755) # m644
|
||||
(mkUDir ".ssh" m755) # m644
|
||||
|
||||
# The shit some applications add to ~/ without asking
|
||||
(mkUDir ".android" m755) # Unity
|
||||
(mkUDir ".gradle" m755) # Unity
|
||||
(mkUDir ".java" m755) # Unity/Rider
|
||||
(mkUDir ".mozilla/firefox" m755) # TODO: Remove this someday
|
||||
(mkUDir ".mozilla/native-messaging-hosts" m755)
|
||||
(mkUDir ".nix-package-search" m755)
|
||||
(mkUDir ".nv" m755) # Unity
|
||||
(mkUDir ".ollama" m755)
|
||||
(mkUDir ".plastic4" m755) # Unity
|
||||
(mkUDir ".var/app" m755)
|
||||
(mkUDir ".vim/undo" m755)
|
||||
(mkUDir ".zotero" m755)
|
||||
|
||||
# Cache that's actually useful
|
||||
(mkUDir ".cache/fish/generated_completions" m755)
|
||||
(mkUDir ".cache/nix-index" m755)
|
||||
(mkUDir ".cache/nix-search-tv" m755)
|
||||
(mkUDir ".cache/nvim" m755)
|
||||
|
||||
# Config
|
||||
(mkUDir ".config/.android" m755) # Unity
|
||||
(mkUDir ".config/beets" m755)
|
||||
(mkUDir ".config/blender" m755)
|
||||
(mkUDir ".config/chromium" m755) # TODO: Remove this someday
|
||||
(mkUDir ".config/Ferdium" m755)
|
||||
(mkUDir ".config/fish/completions" m755)
|
||||
@ -128,18 +143,22 @@ in {
|
||||
(mkUDir ".config/Msty" m755)
|
||||
(mkUDir ".config/Nextcloud" m755)
|
||||
(mkUDir ".config/obsidian" m755)
|
||||
(mkUDir ".config/obs-studio" m755)
|
||||
(mkUDir ".config/Signal" m755)
|
||||
(mkUDir ".config/singularitygroup-hotreload" m755) # Unity
|
||||
(mkUDir ".config/tidal-hifi" m755)
|
||||
(mkUDir ".config/tidal_dl_ng" m755)
|
||||
(mkUDir ".config/unity3d" m755) # Unity
|
||||
(mkUDir ".config/unityhub" m755) # Unity
|
||||
(mkUDir ".config/vlc" m755)
|
||||
(mkUDir ".config/Zeal" m755)
|
||||
|
||||
# Share
|
||||
(mkUDir ".local/share/direnv" m755)
|
||||
(mkUDir ".local/share/docker" m755)
|
||||
(mkUDir ".local/share/fish" m755)
|
||||
(mkUDir ".local/share/flatpak" m755)
|
||||
(mkUDir ".local/share/JetBrains" m755) # Unity/Rider
|
||||
(mkUDir ".local/share/JetBrains" m755) # Unity
|
||||
(mkUDir ".local/share/hyprland" m755)
|
||||
(mkUDir ".local/share/keyrings" m755) # m700
|
||||
(mkUDir ".local/share/mime" m755)
|
||||
@ -147,9 +166,12 @@ in {
|
||||
(mkUDir ".local/share/nvim" m755)
|
||||
(mkUDir ".local/share/qutebrowser" m755)
|
||||
(mkUDir ".local/share/systemd" m755)
|
||||
(mkUDir ".local/share/unity3d" m755) # Unity
|
||||
(mkUDir ".local/share/zoxide" m755)
|
||||
|
||||
# State
|
||||
(mkUDir ".local/state/astal/notifd" m755)
|
||||
(mkUDir ".local/state/home-manager/gc-roots" m755) # nix-flatpak stores its state there
|
||||
(mkUDir ".local/state/lazygit" m755)
|
||||
(mkUDir ".local/state/nix" m755)
|
||||
(mkUDir ".local/state/nvim" m755)
|
||||
|
@ -26,9 +26,7 @@ in {
|
||||
defaultSopsFile = ./secrets.yaml;
|
||||
|
||||
age = {
|
||||
# NOTE: Sops needs the keys before impermanence kicks in
|
||||
# so we have to link to /persist directly...
|
||||
keyFile = "/persist/home/${username}/.secrets/age/age.key";
|
||||
keyFile = lib.mkDefault "/home/${username}/.secrets/age/age.key";
|
||||
generateKey = false;
|
||||
sshKeyPaths = [];
|
||||
};
|
||||
|
@ -61,8 +61,8 @@
|
||||
};
|
||||
|
||||
allowedTCPPorts = [
|
||||
# 7777 # AvaTalk
|
||||
# 12777 # AvaTalk
|
||||
7777 # AvaTalk
|
||||
12777 # AvaTalk
|
||||
# 31431 # Parsec
|
||||
5173 # SvelteKit
|
||||
8090 # PocketBase
|
||||
@ -70,8 +70,8 @@
|
||||
];
|
||||
|
||||
allowedUDPPorts = [
|
||||
# 7777 # AvaTalk
|
||||
# 12777 # AvaTalk
|
||||
7777 # AvaTalk
|
||||
12777 # AvaTalk
|
||||
# 31431 # Parsec
|
||||
5173 # SvelteKit
|
||||
8090 # PocketBase
|
||||
@ -85,6 +85,10 @@
|
||||
];
|
||||
};
|
||||
|
||||
# NOTE: Sops needs the keys before impermanence kicks in
|
||||
# so we have to link to /persist directly...
|
||||
sops.age.keyFile = "/persist/home/${username}/.secrets/age/age.key";
|
||||
|
||||
sops.templates."makemkv-settings.conf" = {
|
||||
owner = config.users.users.${username}.name;
|
||||
content = ''
|
||||
@ -96,11 +100,7 @@
|
||||
boot = {
|
||||
# kernelPackages = pkgs.linuxPackages_zen;
|
||||
|
||||
kernelParams = [
|
||||
"loglevel=4" # 0 (critical) - 7 (debug)
|
||||
"udev.log_level=0" # 0 (debug) - 3 (critical)
|
||||
# "quiet"
|
||||
];
|
||||
# kernelParams = [ "quiet" ];
|
||||
# plymouth.enable = true;
|
||||
};
|
||||
|
||||
|
@ -43,9 +43,11 @@
|
||||
|
||||
blacklistedKernelModules = ["k10temp"]; # Disable in favor of zenpower
|
||||
|
||||
# Enable AMD pstate
|
||||
# https://github.com/NixOS/nixos-hardware/blob/master/common/cpu/amd/pstate.nix
|
||||
kernelParams = ["amd_pstate=active"];
|
||||
kernelParams = [
|
||||
# Enable AMD pstate
|
||||
# https://github.com/NixOS/nixos-hardware/blob/master/common/cpu/amd/pstate.nix
|
||||
"amd_pstate=active"
|
||||
];
|
||||
|
||||
# extraModprobeConfig = ''
|
||||
# options iwlwifi 11n_disable=1 wd_disable=0
|
||||
@ -117,9 +119,9 @@
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
# package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||
|
||||
modesetting.enable = true; # Not officially supported by NVidia but needed for wayland
|
||||
open = true;
|
||||
nvidiaSettings = false; # Those are for x-server
|
||||
modesetting.enable = true; # Required for wayland
|
||||
};
|
||||
|
||||
# video.hidpi.enable = lib.mkDefault true; # No longer has any effect
|
||||
|
@ -6,7 +6,7 @@
|
||||
}: let
|
||||
vectorchordVersion = "0.4.2";
|
||||
pgvectorsVersion = "0.2.0";
|
||||
immichVersion = "1.135.3";
|
||||
immichVersion = "1.136.0";
|
||||
in {
|
||||
virtualisation.oci-containers.containers = {
|
||||
immich-database = {
|
||||
@ -103,7 +103,7 @@ in {
|
||||
};
|
||||
|
||||
extraOptions = [
|
||||
# "--privileged"
|
||||
"--privileged"
|
||||
"--device=nvidia.com/gpu=all"
|
||||
"--net=behind-nginx"
|
||||
];
|
||||
|
@ -43,7 +43,7 @@ in {
|
||||
};
|
||||
|
||||
extraOptions = [
|
||||
# "--privileged"
|
||||
"--privileged"
|
||||
"--device=nvidia.com/gpu=all"
|
||||
"--net=behind-nginx"
|
||||
];
|
||||
|