Compare commits
122 Commits
fce3a4ff0c
...
main
Author | SHA1 | Date | |
---|---|---|---|
c0d1341448
|
|||
bba55dc973
|
|||
d48559e6d8
|
|||
c18c1d0060
|
|||
bec0e9d43a
|
|||
3937656ce1
|
|||
6554808614
|
|||
8a35e18e4e
|
|||
930417968f
|
|||
7d0e089e3f
|
|||
d135a13a5a
|
|||
9c0e7c4cae
|
|||
c65a7997e2
|
|||
61d4307a10
|
|||
81c866645f
|
|||
1065479388
|
|||
5d9782d733
|
|||
67009df2a9
|
|||
547e41d3f9
|
|||
8fe81eb9cd
|
|||
e599e4c5c4
|
|||
b42de80180
|
|||
2093304e4c
|
|||
e30f4a74cd
|
|||
7c72e527e7
|
|||
f854f65029
|
|||
9034502635
|
|||
24b195b766
|
|||
1ae179eb85
|
|||
efaae1a801
|
|||
27f29769e2
|
|||
c586cc93d8
|
|||
5526b559cf
|
|||
47c88ecf63
|
|||
71d94e52a8
|
|||
268e527db6
|
|||
f3bf120805
|
|||
422b0551db
|
|||
ac28a3442f
|
|||
078351becd
|
|||
46be9aa879
|
|||
8f91352720
|
|||
d3ce08e765
|
|||
5859b9d469
|
|||
a1cac8803a
|
|||
4054e42e21
|
|||
89ff07ac7b
|
|||
7641390aba
|
|||
539a1d8713
|
|||
b3ac24719a
|
|||
f8d4b52394
|
|||
4abde43c61
|
|||
686e36b144
|
|||
0bdff5ef5b
|
|||
02a8c645e9
|
|||
8217a70b34
|
|||
34795ac894
|
|||
a876874791
|
|||
6dbd2b86a2
|
|||
a4e5add644
|
|||
cc31b858f7
|
|||
e669331366
|
|||
453fda9a36
|
|||
e2f6ed72ed
|
|||
8a4af44494
|
|||
0c28f1e978
|
|||
1dc168ce63
|
|||
e170e9d2b7
|
|||
002b06bb91
|
|||
f39a105caf
|
|||
432fad779a
|
|||
590238d3e9
|
|||
fff9e50163
|
|||
161a5917f6
|
|||
e828500be7
|
|||
0db2cbfe19
|
|||
590a94af56
|
|||
c6d5a071b4
|
|||
9534e50252
|
|||
989c740184
|
|||
f6f5121d1e
|
|||
391886ef59
|
|||
0aec9e92c1
|
|||
7662e9cd6e
|
|||
5c11830083
|
|||
4397eec2a1
|
|||
3cd27e0e79
|
|||
572314fe46
|
|||
854a3be744
|
|||
a5a2e9ceac
|
|||
c58b5489d8
|
|||
4fb2c8cc12
|
|||
08deff70bc
|
|||
920c75e997
|
|||
2108320d1d
|
|||
463e6f1630
|
|||
16eb328cf5
|
|||
672f28c75c
|
|||
f5a5f4b87c
|
|||
95671a0343
|
|||
b63073cab7
|
|||
a22109abba
|
|||
af05ec7980
|
|||
ddd039c803
|
|||
8ae65a6752
|
|||
d81c644665
|
|||
f0ecc5bdb9
|
|||
7139cfb640
|
|||
5dfa9d62c4
|
|||
aff9f72f2c
|
|||
7bc1d7e36a
|
|||
f213931b6f
|
|||
52dcc3279e
|
|||
56bad06595
|
|||
afd1d00116
|
|||
14eaee2bbc
|
|||
43334d6dbd
|
|||
d70b2f7f8a
|
|||
38579e3cb4
|
|||
6658a54631
|
|||
9d51e09afe
|
|||
30fcac5ff6
|
23
README.md
23
README.md
@ -1,6 +1,17 @@
|
|||||||
<h1>So what is this?</h1>
|
# NixOS Configuration
|
||||||
<p>This is a personal config based on <a href="https://github.com/numtide/blueprint">Blueprint</a>, and it's pretty usable. If one wants to use it, they have to change and adapt it for their own use case, for that please visit the original repo, as it contains the necessary documentation.</p>
|
## So what is this?
|
||||||
<h2>TODOs:</h2>
|
|
||||||
<ul>
|
This is a personal NixOS config based on
|
||||||
<li>i'll put that in when i recall what i wanted to add</li>
|
[Blueprint](https://github.com/numtide/blueprint).
|
||||||
</ul>
|
This repo is mainly used to sync changes between devices. If you want to
|
||||||
|
use it - it's pretty composable, so modules can be integrated in your
|
||||||
|
configs without much hassle.
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
Configurations I took code/ideas from:
|
||||||
|
- [github:TheMaxMur/NixOS-Configuration](https://github.com/TheMaxMur/NixOS-Configuration)
|
||||||
|
- [github:nix-community/srvos](https://github.com/nix-community/srvos)
|
||||||
|
- [github:cloud-gouv/securix](https://github.com/cloud-gouv/securix)
|
||||||
|
- [GLF OS](https://www.gaminglinux.fr/glf-os/en)
|
||||||
|
|
||||||
|
Thx a lot <3
|
||||||
|
695
flake.lock
generated
695
flake.lock
generated
File diff suppressed because it is too large
Load Diff
131
flake.nix
131
flake.nix
@ -2,45 +2,104 @@
|
|||||||
description = "unexplrd's personal configuration";
|
description = "unexplrd's personal configuration";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
blueprint.url = "github:numtide/blueprint";
|
# lix = {
|
||||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
# url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.1.tar.gz";
|
||||||
disko.url = "github:nix-community/disko/latest";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
home-manager.url = "github:nix-community/home-manager";
|
# };
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
# neve = {
|
||||||
hyprsunset.url = "github:hyprwm/hyprsunset";
|
# inputs.nixvim.follows = "nixvim";
|
||||||
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
|
# url = "git+https://gitea.linerds.us/unexplrd/Neve";
|
||||||
# lix.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0-2.tar.gz";
|
# };
|
||||||
mysecrets.url = "git+ssh://gitea@gitea.linerds.us/unexplrd/nix-secrets";
|
|
||||||
# neve.url = "git+https://gitea.linerds.us/unexplrd/Neve";
|
|
||||||
# nixvim.url = "github:nix-community/nixvim";
|
# nixvim.url = "github:nix-community/nixvim";
|
||||||
nix-flatpak.url = "github:gmodena/nix-flatpak";
|
systems.url = "github:nix-systems/default";
|
||||||
nix-index-database.url = "github:nix-community/nix-index-database";
|
blueprint = {
|
||||||
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
|
url = "github:numtide/blueprint";
|
||||||
nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
inputs.systems.follows = "systems";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
};
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
|
chaotic = {
|
||||||
sops-nix.url = "github:mic92/sops-nix";
|
url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||||
walker = {
|
inputs = {
|
||||||
url = "github:abenz1267/walker";
|
home-manager.follows = "home-manager";
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
disko = {
|
||||||
|
url = "github:nix-community/disko/latest";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
stylix.url = "github:danth/stylix/8b0d9317edd57c5374adcf6957ae4775875c2a9d";
|
ghostty = {
|
||||||
# TODO: somehow reduce the number of *.inputs.nixpkgs.follows = "nixpkgs" stuff, mb a function?
|
url = "github:ghostty-org/ghostty";
|
||||||
blueprint.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
chaotic.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.flake-utils.inputs.systems.follows = "systems";
|
||||||
disko.inputs.nixpkgs.follows = "nixpkgs";
|
};
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
home-manager = {
|
||||||
hyprland.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:nix-community/home-manager";
|
||||||
hyprsunset.inputs.hyprland-protocols.follows = "hyprland/hyprland-protocols";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
hyprsunset.inputs.hyprutils.follows = "hyprland/hyprutils";
|
};
|
||||||
hyprsunset.inputs.nixpkgs.follows = "nixpkgs";
|
hyprland = {
|
||||||
lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:hyprwm/Hyprland";
|
||||||
# lix.inputs.nixpkgs.follows = "nixpkgs";
|
inputs = {
|
||||||
mysecrets.flake = false;
|
systems.follows = "systems";
|
||||||
# neve.inputs.nixvim.follows = "nixvim";
|
nixpkgs.follows = "nixpkgs";
|
||||||
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
|
};
|
||||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
};
|
||||||
|
hyprsunset = {
|
||||||
|
url = "github:hyprwm/hyprsunset";
|
||||||
|
inputs = {
|
||||||
|
hyprland-protocols.follows = "hyprland/hyprland-protocols";
|
||||||
|
hyprutils.follows = "hyprland/hyprutils";
|
||||||
|
hyprwayland-scanner.follows = "hyprland/hyprwayland-scanner";
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
systems.follows = "hyprland/systems";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lanzaboote = {
|
||||||
|
url = "github:nix-community/lanzaboote/v0.4.2";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
mysecrets = {
|
||||||
|
url = "git+ssh://gitea@gitea.linerds.us/unexplrd/nix-secrets";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
nix-flatpak.url = "github:gmodena/nix-flatpak";
|
||||||
|
nix-index-database = {
|
||||||
|
url = "github:nix-community/nix-index-database";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
nixos-cosmic = {
|
||||||
|
url = "github:lilyinstarlight/nixos-cosmic";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs-stable.follows = "nixpkgs-stable";
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
|
||||||
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
|
nixpkgs = {
|
||||||
|
url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
# workaround for `unexpected Nix daemon error: error: serialised integer 7022364302122705765 is too large for type 'j'`
|
||||||
|
# url = "github:NixOS/nixpkgs/pull/413627/head";
|
||||||
|
};
|
||||||
|
sops-nix = {
|
||||||
|
url = "github:mic92/sops-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
stylix = {
|
||||||
|
url = "github:danth/stylix";
|
||||||
|
inputs = {
|
||||||
|
# home-manager.follows = "home-manager";
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
systems.follows = "systems";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
walker = {
|
||||||
|
url = "github:abenz1267/walker";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
systems.follows = "systems";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs: inputs.blueprint {inherit inputs;};
|
outputs = inputs: inputs.blueprint {inherit inputs;};
|
||||||
|
@ -1,28 +1,27 @@
|
|||||||
{
|
{inputs, ...}: {
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
self.nixosModules.config
|
self.modules.shared.nixos
|
||||||
self.nixosModules.desktop
|
self.nixosModules.desktop
|
||||||
self.nixosModules.system
|
self.nixosModules.system
|
||||||
./disko
|
./disko
|
||||||
# ./minecraft.nix
|
./misc
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
networkmanager.enable = true;
|
|
||||||
hostId = "c7f6c4a1";
|
hostId = "c7f6c4a1";
|
||||||
hostName = "dunamis";
|
hostName = "dunamis";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.memoryAllocator.provider = "mimalloc";
|
system.stateVersion = "25.11";
|
||||||
system.stateVersion = "25.05";
|
|
||||||
time.timeZone = "Europe/Kyiv";
|
time.timeZone = "Europe/Kyiv";
|
||||||
|
|
||||||
desktop.niri.enable = true;
|
desktop.niri.enable = true;
|
||||||
|
|
||||||
|
services.displayManager.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "user";
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
config = {
|
config = {
|
||||||
secureBoot = true;
|
secureBoot = true;
|
||||||
@ -31,24 +30,13 @@
|
|||||||
};
|
};
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = "rose-pine-dawn";
|
theme = "sandcastle";
|
||||||
};
|
};
|
||||||
};
|
locale = "uk_UA.UTF-8";
|
||||||
|
misc = {
|
||||||
locale.ukrainian.enable = true;
|
|
||||||
opentabletdriver.enable = false;
|
opentabletdriver.enable = false;
|
||||||
qmk-vial.enable = true;
|
qmk-vial.enable = true;
|
||||||
virtual.libvirt.enable = true;
|
|
||||||
|
|
||||||
nix = let
|
|
||||||
inherit (builtins) readFile;
|
|
||||||
inherit (config.users.users) user;
|
|
||||||
in {
|
|
||||||
settings.trusted-users = ["nix-ssh"];
|
|
||||||
sshServe = {
|
|
||||||
enable = true;
|
|
||||||
write = true;
|
|
||||||
keys = map (f: readFile f) user.openssh.authorizedKeys.keyFiles;
|
|
||||||
};
|
};
|
||||||
|
virt.libvirt.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
{inputs, ...}: let
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (config.networking) hostId;
|
||||||
disk = "/dev/disk/by-id/nvme-eui.000000000000000100a075244b5d6185";
|
disk = "/dev/disk/by-id/nvme-eui.000000000000000100a075244b5d6185";
|
||||||
in {
|
in {
|
||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
@ -10,5 +15,5 @@ in {
|
|||||||
mountOptions = ["rw" "nosuid" "nodev"];
|
mountOptions = ["rw" "nosuid" "nodev"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
disko.devices.disk.main = import ./disk-main.nix {inherit disk;};
|
disko.devices.disk.main = import ./disk-main.nix {inherit disk hostId;};
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
{disk, ...}: {
|
{
|
||||||
|
disk,
|
||||||
|
hostId,
|
||||||
|
}: {
|
||||||
type = "disk";
|
type = "disk";
|
||||||
device = disk;
|
device = disk;
|
||||||
content = {
|
content = {
|
||||||
@ -25,45 +28,30 @@
|
|||||||
size = "100%";
|
size = "100%";
|
||||||
content = {
|
content = {
|
||||||
type = "luks";
|
type = "luks";
|
||||||
name = "luks-main";
|
name = "luks-" + hostId;
|
||||||
initrdUnlock = true;
|
initrdUnlock = true;
|
||||||
settings.allowDiscards = true;
|
settings.allowDiscards = true;
|
||||||
content = {
|
content = let
|
||||||
|
mountOptions = ["autodefrag" "compress-force=zstd" "noatime"];
|
||||||
|
in {
|
||||||
type = "btrfs";
|
type = "btrfs";
|
||||||
extraArgs = ["-f"];
|
extraArgs = ["-f"];
|
||||||
subvolumes = {
|
subvolumes = {
|
||||||
"@nixos-root" = {
|
"@nixos-root" = {
|
||||||
mountpoint = "/";
|
mountpoint = "/";
|
||||||
mountOptions = [
|
mountOptions = mountOptions ++ ["noexec"];
|
||||||
"autodefrag"
|
|
||||||
"compress=zstd"
|
|
||||||
"noatime"
|
|
||||||
"noexec"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
"@home" = {
|
"@home" = {
|
||||||
mountpoint = "/home";
|
mountpoint = "/home";
|
||||||
mountOptions = [
|
inherit mountOptions;
|
||||||
"autodefrag"
|
|
||||||
"compress=zstd"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
"@storage" = {
|
"@storage" = {
|
||||||
mountpoint = "/storage";
|
mountpoint = "/storage";
|
||||||
mountOptions = [
|
inherit mountOptions;
|
||||||
"autodefrag"
|
|
||||||
"compress=zstd"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
"@nix" = {
|
"@nix" = {
|
||||||
mountpoint = "/nix";
|
mountpoint = "/nix";
|
||||||
mountOptions = [
|
inherit mountOptions;
|
||||||
"autodefrag"
|
|
||||||
"compress-force=zstd"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
6
hosts/dunamis/misc/default.nix
Normal file
6
hosts/dunamis/misc/default.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./minecraft.nix
|
||||||
|
# ./nix-ssh-serve.nix
|
||||||
|
];
|
||||||
|
}
|
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = with inputs; [
|
|
||||||
nix-index-database.hmModules.nix-index
|
|
||||||
self.homeModules.desktop
|
|
||||||
self.homeModules.programs
|
|
||||||
];
|
|
||||||
inherit (osConfig) desktop;
|
|
||||||
home.stateVersion = osConfig.system.stateVersion;
|
|
||||||
home.sessionPath = ["$HOME/.local/bin"];
|
|
||||||
|
|
||||||
# TODO: remove when unbroken
|
|
||||||
stylix.targets.mako.enable = false;
|
|
||||||
}
|
|
@ -1,7 +1 @@
|
|||||||
{
|
{flake, ...}: {imports = [flake.modules.shared.user];}
|
||||||
imports = [
|
|
||||||
./common.nix
|
|
||||||
./flatpak.nix
|
|
||||||
./programs.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
@ -1,98 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
console.yazi.enable = true;
|
|
||||||
editor.helix.enable = true;
|
|
||||||
shell = {
|
|
||||||
fish.enable = true;
|
|
||||||
oh-my-posh.enable = true;
|
|
||||||
};
|
|
||||||
syncthing.enable = true;
|
|
||||||
terminal.wezterm.enable = true;
|
|
||||||
terminal.ghostty.enable = true;
|
|
||||||
systemd.user.settings.Manager.DefaultEnvironment = {
|
|
||||||
TERMINAL = "wezterm";
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
pueue.enable = true; # process queue in rust
|
|
||||||
ssh-agent.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
bat.enable = true; # cat in rust
|
|
||||||
btop = {
|
|
||||||
enable = true;
|
|
||||||
settings.update_ms = 200;
|
|
||||||
};
|
|
||||||
direnv.enable = true;
|
|
||||||
direnv.silent = true;
|
|
||||||
eza.enable = true; # ls in rust
|
|
||||||
fd.enable = true; # find in rust
|
|
||||||
fzf.enable = true; # fuzzy finder in rust
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
delta.enable = true; # diff in rust
|
|
||||||
signing.format = "ssh";
|
|
||||||
aliases = {
|
|
||||||
cl = "clone";
|
|
||||||
co = "checkout";
|
|
||||||
pom = "push origin main";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
gitui.enable = true; # git ui in rust
|
|
||||||
jujutsu.enable = true; # vcs in rust
|
|
||||||
keychain = {
|
|
||||||
enable = true;
|
|
||||||
keys = ["id_ed25519"];
|
|
||||||
};
|
|
||||||
nix-index-database.comma.enable = true;
|
|
||||||
nix-index.enable = true;
|
|
||||||
nix-your-shell.enable = true;
|
|
||||||
pay-respects.enable = true; # thefuck in rust
|
|
||||||
ripgrep.enable = true; # grep in rust
|
|
||||||
zoxide.enable = true; # fuzzy cd in rust
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
# development utils
|
|
||||||
alejandra # nix formatter in rust
|
|
||||||
devenv # programming deps in rust
|
|
||||||
jj-fzf # fuzzy finder jujutsu tui
|
|
||||||
just # make in rust
|
|
||||||
silicon # create code pics in rust
|
|
||||||
]
|
|
||||||
++ [
|
|
||||||
# console utils
|
|
||||||
bluetuith # bluetooth tui in go
|
|
||||||
dua # disk space usage in rust
|
|
||||||
duf # better df in go
|
|
||||||
fend # calculator in rust
|
|
||||||
mprocs # process runner in rust
|
|
||||||
ouch # archive manager in rust
|
|
||||||
procs # ps in rust
|
|
||||||
rbw # bitwarden cli in rust
|
|
||||||
sd # sed in rust
|
|
||||||
trashy # trash cli in rust
|
|
||||||
]
|
|
||||||
++ [
|
|
||||||
# misc apps
|
|
||||||
# vial # qmk keyboard configuring app
|
|
||||||
pinentry-qt # pinentry for rbw
|
|
||||||
virt-manager # libvirt gui
|
|
||||||
waycheck # check wayland protocols
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.desktopEntries = {
|
|
||||||
uni = {
|
|
||||||
actions."Copy".exec = "fish -c \"~/.local/bin/uni --copy\"";
|
|
||||||
categories = ["Utility" "X-Launch" "Network"];
|
|
||||||
comment = "Select and open or copy URLs from a list.";
|
|
||||||
exec = "fish -c \"~/.local/bin/uni\"";
|
|
||||||
icon = "web-browser";
|
|
||||||
name = "Uni URL Handler";
|
|
||||||
startupNotify = true;
|
|
||||||
terminal = false;
|
|
||||||
type = "Application";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,23 +1,34 @@
|
|||||||
{inputs, ...}: {
|
{inputs, ...}: {
|
||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
self.nixosModules.config
|
self.modules.shared.nixos
|
||||||
self.nixosModules.desktop
|
self.nixosModules.desktop
|
||||||
self.nixosModules.system
|
self.nixosModules.system
|
||||||
./disko
|
./disko
|
||||||
./hardware
|
./hardware
|
||||||
|
./misc
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
networkmanager.enable = true;
|
hostId = "14f63637";
|
||||||
# hostId = "";
|
|
||||||
hostName = "eldrid";
|
hostName = "eldrid";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.memoryAllocator.provider = "mimalloc";
|
system.stateVersion = "25.11";
|
||||||
system.stateVersion = "25.05";
|
|
||||||
time.timeZone = "Europe/Kyiv";
|
time.timeZone = "Europe/Kyiv";
|
||||||
|
|
||||||
desktop.plasma.enable = true;
|
desktop.niri.enable = true;
|
||||||
|
|
||||||
|
services.displayManager.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "user";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/swap/swapfile";
|
||||||
|
size = 8 * 1024; # eight gigs
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
config = {
|
config = {
|
||||||
@ -29,19 +40,11 @@
|
|||||||
};
|
};
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = "helios";
|
theme = "sandcastle";
|
||||||
};
|
};
|
||||||
};
|
locale = "uk_UA.UTF-8";
|
||||||
|
misc = {
|
||||||
locale.ukrainian.enable = true;
|
|
||||||
opentabletdriver.enable = false;
|
|
||||||
qmk-vial.enable = true;
|
qmk-vial.enable = true;
|
||||||
virtual.libvirt.enable = false;
|
};
|
||||||
|
};
|
||||||
swapDevices = [
|
|
||||||
{
|
|
||||||
device = "/swap/swapfile";
|
|
||||||
size = 8 * 1024; # eight gigs
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
{inputs, ...}: let
|
{
|
||||||
disk = "/dev/nvme0n1";
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (config.networking) hostId;
|
||||||
|
disk = "/dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a44022ad0";
|
||||||
in {
|
in {
|
||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
disko.nixosModules.disko
|
disko.nixosModules.disko
|
||||||
@ -10,5 +15,5 @@ in {
|
|||||||
mountOptions = ["rw" "nosuid" "nodev"];
|
mountOptions = ["rw" "nosuid" "nodev"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
disko.devices.disk.main = import ./disk-main.nix {inherit disk;};
|
disko.devices.disk.main = import ./disk-main.nix {inherit disk hostId;};
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
{disk, ...}: {
|
{
|
||||||
|
disk,
|
||||||
|
hostId,
|
||||||
|
}: {
|
||||||
type = "disk";
|
type = "disk";
|
||||||
device = disk;
|
device = disk;
|
||||||
content = {
|
content = {
|
||||||
@ -25,7 +28,7 @@
|
|||||||
size = "100%";
|
size = "100%";
|
||||||
content = {
|
content = {
|
||||||
type = "luks";
|
type = "luks";
|
||||||
name = "luks-main";
|
name = "luks-" + hostId;
|
||||||
initrdUnlock = true;
|
initrdUnlock = true;
|
||||||
settings.allowDiscards = true;
|
settings.allowDiscards = true;
|
||||||
content = {
|
content = {
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (builtins) readFile;
|
|
||||||
inherit (config.networking) hostName;
|
|
||||||
inherit (config.sops) secrets;
|
|
||||||
inherit (inputs) mysecrets;
|
|
||||||
pubHost = readFile "${mysecrets}/ssh/ssh_host_ed25519_dunamis.base64";
|
|
||||||
in {
|
|
||||||
nix = {
|
|
||||||
distributedBuilds = true;
|
|
||||||
buildMachines = [
|
|
||||||
{
|
|
||||||
hostName = "dunamis";
|
|
||||||
publicHostKey = pubHost;
|
|
||||||
sshKey = secrets."ssh-${hostName}-user".path;
|
|
||||||
sshUser = "nix-ssh";
|
|
||||||
supportedFeatures = [
|
|
||||||
"benchmark"
|
|
||||||
"big-parallel"
|
|
||||||
"kvm"
|
|
||||||
"nixos-test"
|
|
||||||
];
|
|
||||||
system = "x86_64-linux";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,20 +1,47 @@
|
|||||||
{pkgs, ...}: let
|
{pkgs, ...}: let
|
||||||
cb-ucm-conf = pkgs.alsa-ucm-conf.overrideAttrs {
|
cb-ucm-conf = with pkgs;
|
||||||
wttsrc = pkgs.fetchFromGitHub {
|
alsa-ucm-conf.overrideAttrs {
|
||||||
|
wttsrc = fetchFromGitHub {
|
||||||
owner = "WeirdTreeThing";
|
owner = "WeirdTreeThing";
|
||||||
repo = "chromebook-ucm-conf";
|
repo = "alsa-ucm-conf-cros";
|
||||||
rev = "b6ce2a7";
|
rev = "a4f0ed6cf59163fb571c33a81a6b40b6f53ed57d";
|
||||||
hash = "sha256-QRUKHd3RQmg1tnZU8KCW0AmDtfw/daOJ/H3XU5qWTCc=";
|
hash = "sha256-H0BsRzHSEJ6XCZB/Rvb3w+uGCzr+kAvAwcHWqYEtp6w=";
|
||||||
};
|
};
|
||||||
postInstall = ''
|
unpackPhase = ''
|
||||||
cp -R $wttsrc/common/* $out/share/alsa/ucm2/common
|
runHook preUnpack
|
||||||
cp -R $wttsrc/codecs/* $out/share/alsa/ucm2/codecs
|
tar xf "$src"
|
||||||
cp -R $wttsrc/platforms/* $out/share/alsa/ucm2/platforms
|
runHook postUnpack
|
||||||
cp -R $wttsrc/sof-rt5682 $out/share/alsa/ucm2/conf.d
|
'';
|
||||||
cp -R $wttsrc/sof-cs42l42 $out/share/alsa/ucm2/conf.d
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/share/alsa
|
||||||
|
cp -r alsa-ucm*/ucm2 $out/share/alsa
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
environment = {
|
||||||
|
systemPackages = [pkgs.sof-firmware];
|
||||||
|
sessionVariables.ALSA_CONFIG_UCM2 = "${cb-ucm-conf}/share/alsa/ucm2";
|
||||||
|
etc = {
|
||||||
|
"wireplumber/main.lua.d/51-increase-headroom.lua".text = ''
|
||||||
|
rule = {
|
||||||
|
matches = {
|
||||||
|
{
|
||||||
|
{ "node.name", "matches", "alsa_output.*" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
apply_properties = {
|
||||||
|
["api.alsa.headroom"] = 4096,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
table.insert(alsa_monitor.rules,rule)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
system.replaceDependencies.replacements = [
|
system.replaceDependencies.replacements = [
|
||||||
{
|
{
|
||||||
original = pkgs.alsa-ucm-conf;
|
original = pkgs.alsa-ucm-conf;
|
||||||
@ -22,6 +49,10 @@ in {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
boot.extraModprobeConfig = ''
|
||||||
|
options snd-intel-dspcfg dsp_driver=3
|
||||||
|
'';
|
||||||
|
|
||||||
services.pipewire.wireplumber.configPackages = [
|
services.pipewire.wireplumber.configPackages = [
|
||||||
(pkgs.writeTextDir "share/wireplumber/main.lua.d/51-increase-headroom.lua" ''
|
(pkgs.writeTextDir "share/wireplumber/main.lua.d/51-increase-headroom.lua" ''
|
||||||
rule = {
|
rule = {
|
||||||
@ -37,10 +68,19 @@ in {
|
|||||||
|
|
||||||
table.insert(alsa_monitor.rules,rule)
|
table.insert(alsa_monitor.rules,rule)
|
||||||
'')
|
'')
|
||||||
];
|
(pkgs.writeTextDir "share/wireplumber/main.lua.d/51-avs-dmic.lua" ''
|
||||||
boot = {
|
rule = {
|
||||||
extraModprobeConfig = ''
|
matches = {
|
||||||
options snd-intel-dspcfg dsp_driver=3
|
{
|
||||||
'';
|
{ "node.nick", "equals", "Internal Microphone" },
|
||||||
};
|
},
|
||||||
|
},
|
||||||
|
apply_properties = {
|
||||||
|
["audio.format"] = "S16LE",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
table.insert(alsa_monitor.rules, rule)
|
||||||
|
'')
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
6
hosts/eldrid/misc/default.nix
Normal file
6
hosts/eldrid/misc/default.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./distributed-build.nix
|
||||||
|
./undervolt.nix
|
||||||
|
];
|
||||||
|
}
|
7
hosts/eldrid/misc/undervolt.nix
Normal file
7
hosts/eldrid/misc/undervolt.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
services.undervolt = {
|
||||||
|
enable = true;
|
||||||
|
# coreOffset = -150;
|
||||||
|
turbo = 1;
|
||||||
|
};
|
||||||
|
}
|
@ -1,7 +1 @@
|
|||||||
{lib, ...}: {
|
{flake, ...}: {imports = [flake.modules.shared.user];}
|
||||||
imports = [
|
|
||||||
../../../dunamis/users/user/common.nix
|
|
||||||
../../../dunamis/users/user/programs.nix
|
|
||||||
../../../dunamis/users/user/flatpak.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
@ -1,41 +1,41 @@
|
|||||||
{
|
{inputs, ...}: {
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
self.nixosModules.config
|
self.modules.shared.nixos
|
||||||
self.nixosModules.desktop
|
self.nixosModules.desktop
|
||||||
self.nixosModules.system
|
self.nixosModules.system
|
||||||
./disko
|
./disko
|
||||||
./hardware
|
./hardware
|
||||||
|
./misc
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
networkmanager.enable = true;
|
hostId = "45b00123";
|
||||||
hostName = "legion";
|
hostName = "legion";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.memoryAllocator.provider = "mimalloc";
|
system.stateVersion = "25.11";
|
||||||
system.stateVersion = "25.05";
|
|
||||||
time.timeZone = "Europe/Kyiv";
|
time.timeZone = "Europe/Kyiv";
|
||||||
|
|
||||||
desktop.niri.enable = true;
|
desktop.niri.enable = true;
|
||||||
|
|
||||||
|
services.displayManager.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "user";
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
config = {
|
config = {
|
||||||
laptop.homeRowMods = true;
|
laptop.homeRowMods = true;
|
||||||
powerSave = true;
|
powerSave = true;
|
||||||
# secureBoot = true;
|
secureBoot = true;
|
||||||
# tpmDiskUnlock = true;
|
tpmDiskUnlock = true;
|
||||||
vaapi = "nvidia";
|
vaapi = "nvidia";
|
||||||
};
|
};
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = "helios";
|
theme = "sandcastle";
|
||||||
};
|
};
|
||||||
|
locale = "uk_UA.UTF-8";
|
||||||
|
virt.libvirt.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
locale.ukrainian.enable = true;
|
|
||||||
virtual.libvirt.enable = true;
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
{inputs, ...}: let
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (config.networking) hostId;
|
||||||
disk-main = "/dev/disk/by-id/nvme-INTEL_SSDPEKKF256G8L_BTHH81460QC2256B";
|
disk-main = "/dev/disk/by-id/nvme-INTEL_SSDPEKKF256G8L_BTHH81460QC2256B";
|
||||||
disk-second = "/dev/disk/by-id/nvme-WDC_PC_SN730_SDBPNTY-1T00-1101_21114D802446";
|
disk-second = "/dev/disk/by-id/nvme-WDC_PC_SN730_SDBPNTY-1T00-1101_21114D802446";
|
||||||
in {
|
in {
|
||||||
@ -11,6 +16,6 @@ in {
|
|||||||
mountOptions = ["rw" "nosuid" "nodev"];
|
mountOptions = ["rw" "nosuid" "nodev"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
disko.devices.disk.main = import ./disk-main.nix {inherit disk-main;};
|
disko.devices.disk.main = import ./disk-main.nix {inherit disk-main hostId;};
|
||||||
disko.devices.disk.second = import ./disk-second.nix {inherit disk-second;};
|
disko.devices.disk.second = import ./disk-second.nix {inherit disk-second hostId;};
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
{disk-main}: {
|
{
|
||||||
|
disk-main,
|
||||||
|
hostId,
|
||||||
|
}: {
|
||||||
type = "disk";
|
type = "disk";
|
||||||
device = disk-main;
|
device = disk-main;
|
||||||
content = {
|
content = {
|
||||||
@ -25,7 +28,7 @@
|
|||||||
size = "100%";
|
size = "100%";
|
||||||
content = {
|
content = {
|
||||||
type = "luks";
|
type = "luks";
|
||||||
name = "luks-main";
|
name = "luks-" + hostId;
|
||||||
initrdUnlock = true;
|
initrdUnlock = true;
|
||||||
settings.allowDiscards = true;
|
settings.allowDiscards = true;
|
||||||
content = {
|
content = {
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
{disk-second}: {
|
{
|
||||||
|
disk-second,
|
||||||
|
hostId,
|
||||||
|
}: {
|
||||||
type = "disk";
|
type = "disk";
|
||||||
device = disk-second;
|
device = disk-second;
|
||||||
content = {
|
content = {
|
||||||
@ -8,7 +11,7 @@
|
|||||||
size = "100%";
|
size = "100%";
|
||||||
content = {
|
content = {
|
||||||
type = "luks";
|
type = "luks";
|
||||||
name = "luks-second";
|
name = "luks-${hostId}-second";
|
||||||
initrdUnlock = true;
|
initrdUnlock = true;
|
||||||
settings.allowDiscards = true;
|
settings.allowDiscards = true;
|
||||||
content = {
|
content = {
|
||||||
|
5
hosts/legion/misc/default.nix
Normal file
5
hosts/legion/misc/default.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./distributed-build.nix
|
||||||
|
];
|
||||||
|
}
|
@ -1,7 +1 @@
|
|||||||
{
|
{flake, ...}: {imports = [flake.modules.shared.user];}
|
||||||
imports = [
|
|
||||||
../../../dunamis/users/user/common.nix
|
|
||||||
../../../dunamis/users/user/flatpak.nix
|
|
||||||
../../../dunamis/users/user/programs.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
47
hosts/morphius/configuration.nix
Normal file
47
hosts/morphius/configuration.nix
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{inputs, ...}: {
|
||||||
|
imports = with inputs; [
|
||||||
|
self.nixosModules.desktop
|
||||||
|
self.nixosModules.system
|
||||||
|
self.modules.shared.nixos
|
||||||
|
./disko
|
||||||
|
./hardware
|
||||||
|
./misc
|
||||||
|
];
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostId = "bd1b5837";
|
||||||
|
hostName = "morphius";
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "25.11";
|
||||||
|
time.timeZone = "Europe/Kyiv";
|
||||||
|
|
||||||
|
desktop.gnome.enable = true;
|
||||||
|
|
||||||
|
services.displayManager.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "user";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/swap/swapfile";
|
||||||
|
size = 8 * 1024;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
module = {
|
||||||
|
config = {
|
||||||
|
secureBoot = true;
|
||||||
|
tpmDiskUnlock = true;
|
||||||
|
powerSave = true;
|
||||||
|
useIwd = true;
|
||||||
|
vaapi = "intel-media-driver";
|
||||||
|
};
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
theme = "sandcastle";
|
||||||
|
};
|
||||||
|
locale = "uk_UA.UTF-8";
|
||||||
|
};
|
||||||
|
}
|
19
hosts/morphius/disko/default.nix
Normal file
19
hosts/morphius/disko/default.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (config.networking) hostId;
|
||||||
|
disk = "/dev/nvme0n1";
|
||||||
|
in {
|
||||||
|
imports = with inputs; [
|
||||||
|
disko.nixosModules.disko
|
||||||
|
];
|
||||||
|
disko.devices.nodev = {
|
||||||
|
"/tmp" = {
|
||||||
|
fsType = "tmpfs";
|
||||||
|
mountOptions = ["rw" "nosuid" "nodev"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
disko.devices.disk.main = import ./disk-main.nix {inherit disk hostId;};
|
||||||
|
}
|
@ -1,11 +1,15 @@
|
|||||||
{disk, ...}: {
|
{
|
||||||
|
disk,
|
||||||
|
hostId,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
type = "disk";
|
type = "disk";
|
||||||
device = disk;
|
device = disk;
|
||||||
content = {
|
content = {
|
||||||
type = "gpt";
|
type = "gpt";
|
||||||
partitions = {
|
partitions = {
|
||||||
ESP = {
|
ESP = {
|
||||||
size = "2G";
|
size = "1G";
|
||||||
type = "EF00";
|
type = "EF00";
|
||||||
content = {
|
content = {
|
||||||
type = "filesystem";
|
type = "filesystem";
|
||||||
@ -25,7 +29,7 @@
|
|||||||
size = "100%";
|
size = "100%";
|
||||||
content = {
|
content = {
|
||||||
type = "luks";
|
type = "luks";
|
||||||
name = "luks-main";
|
name = "luks-" + hostId;
|
||||||
initrdUnlock = true;
|
initrdUnlock = true;
|
||||||
settings.allowDiscards = true;
|
settings.allowDiscards = true;
|
||||||
content = {
|
content = {
|
||||||
@ -61,6 +65,12 @@
|
|||||||
"noatime"
|
"noatime"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
"@swap" = {
|
||||||
|
mountpoint = "/swap";
|
||||||
|
mountOptions = [
|
||||||
|
"noatime"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
12
hosts/morphius/hardware/default.nix
Normal file
12
hosts/morphius/hardware/default.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./laptop
|
||||||
|
];
|
||||||
|
hardware.sensor.iio.enable = true;
|
||||||
|
services = {
|
||||||
|
logind = {
|
||||||
|
lidSwitch = "ignore";
|
||||||
|
powerKey = "suspend";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
5
hosts/morphius/misc/default.nix
Normal file
5
hosts/morphius/misc/default.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./distributed-build.nix
|
||||||
|
];
|
||||||
|
}
|
1
hosts/morphius/users/user/home-configuration.nix
Normal file
1
hosts/morphius/users/user/home-configuration.nix
Normal file
@ -0,0 +1 @@
|
|||||||
|
{flake, ...}: {imports = [flake.modules.shared.user];}
|
@ -2,25 +2,40 @@
|
|||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
self.nixosModules.desktop
|
self.nixosModules.desktop
|
||||||
self.nixosModules.system
|
self.nixosModules.system
|
||||||
self.nixosModules.config
|
self.modules.shared.nixos
|
||||||
./disko
|
./disko
|
||||||
./hardware
|
./hardware
|
||||||
./distributed-build.nix
|
./misc
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
networkmanager.enable = true;
|
|
||||||
hostId = "31150fae";
|
hostId = "31150fae";
|
||||||
hostName = "sarien";
|
hostName = "sarien";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
system.stateVersion = "25.11";
|
||||||
environment.memoryAllocator.provider = "mimalloc";
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
time.timeZone = "Europe/Kyiv";
|
time.timeZone = "Europe/Kyiv";
|
||||||
|
|
||||||
desktop.niri.enable = true;
|
desktop.niri.enable = true;
|
||||||
|
|
||||||
|
services.displayManager.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "user";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/swap/swapfile";
|
||||||
|
size = 4 * 1024;
|
||||||
|
priority = 100;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
device = "/swap/hibernate";
|
||||||
|
size = 16 * 1024;
|
||||||
|
priority = 1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
config = {
|
config = {
|
||||||
laptop.homeRowMods = true;
|
laptop.homeRowMods = true;
|
||||||
@ -30,12 +45,10 @@
|
|||||||
};
|
};
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = "nord";
|
theme = "sandcastle";
|
||||||
};
|
};
|
||||||
|
locale = "uk_UA.UTF-8";
|
||||||
|
misc.qmk-vial.enable = true;
|
||||||
|
virt.libvirt.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
locale.ukrainian.enable = true;
|
|
||||||
opentabletdriver.enable = false;
|
|
||||||
qmk-vial.enable = true;
|
|
||||||
virtual.libvirt.enable = true;
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
{inputs, ...}: let
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (config.networking) hostId;
|
||||||
disk = "/dev/disk/by-id/nvme-eui.0025385911b36714";
|
disk = "/dev/disk/by-id/nvme-eui.0025385911b36714";
|
||||||
in {
|
in {
|
||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
@ -10,5 +15,6 @@ in {
|
|||||||
mountOptions = ["rw" "nosuid" "nodev"];
|
mountOptions = ["rw" "nosuid" "nodev"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
disko.devices.disk.main = import ./disk-main.nix {inherit disk;};
|
# same partitioning setup
|
||||||
|
disko.devices.disk.main = import ../../dunamis/disko/disk-main.nix {inherit disk hostId;};
|
||||||
}
|
}
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (builtins) readFile;
|
|
||||||
inherit (config.networking) hostName;
|
|
||||||
inherit (config.sops) secrets;
|
|
||||||
inherit (inputs) mysecrets;
|
|
||||||
pubHost = readFile "${mysecrets}/ssh/ssh_host_ed25519_dunamis.base64";
|
|
||||||
in {
|
|
||||||
nix = {
|
|
||||||
distributedBuilds = true;
|
|
||||||
buildMachines = [
|
|
||||||
{
|
|
||||||
hostName = "dunamis";
|
|
||||||
publicHostKey = pubHost;
|
|
||||||
sshKey = secrets."ssh-${hostName}-user".path;
|
|
||||||
sshUser = "nix-ssh";
|
|
||||||
supportedFeatures = [
|
|
||||||
"benchmark"
|
|
||||||
"big-parallel"
|
|
||||||
"kvm"
|
|
||||||
"nixos-test"
|
|
||||||
];
|
|
||||||
system = "x86_64-linux";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
5
hosts/sarien/misc/default.nix
Normal file
5
hosts/sarien/misc/default.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./distributed-build.nix
|
||||||
|
];
|
||||||
|
}
|
@ -1,7 +1 @@
|
|||||||
{
|
{flake, ...}: {imports = [flake.modules.shared.user];}
|
||||||
imports = [
|
|
||||||
../../../dunamis/users/user/common.nix
|
|
||||||
../../../dunamis/users/user/programs.nix
|
|
||||||
../../../dunamis/users/user/flatpak.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./xdg-userdirs.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
{config, ...}: let
|
|
||||||
inherit (config.home) homeDirectory;
|
|
||||||
home = f: "${homeDirectory}/${f}";
|
|
||||||
in {
|
|
||||||
xdg.userDirs = {
|
|
||||||
enable = true;
|
|
||||||
createDirectories = true;
|
|
||||||
templates = home "temps";
|
|
||||||
publicShare = home "pub";
|
|
||||||
desktop = home "desktop";
|
|
||||||
download = home "downloads";
|
|
||||||
documents = home "docs";
|
|
||||||
pictures = home "pics";
|
|
||||||
videos = home "vids";
|
|
||||||
music = home "music";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./common
|
# ./common
|
||||||
./cosmic
|
./cosmic
|
||||||
./gnome
|
./gnome
|
||||||
./hyprland
|
./hyprland
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
osConfig,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
@ -13,33 +14,63 @@ in {
|
|||||||
mkEnableOption "enable gnome desktop";
|
mkEnableOption "enable gnome desktop";
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages =
|
||||||
gnomeExtensions.alphabetical-app-grid
|
(with pkgs.gnomeExtensions; [
|
||||||
gnomeExtensions.removable-drive-menu
|
# extensions
|
||||||
gnomeExtensions.caffeine
|
alphabetical-app-grid
|
||||||
gnomeExtensions.space-bar
|
app-icons-taskbar
|
||||||
gnomeExtensions.switcher
|
caffeine
|
||||||
gnomeExtensions.tactile
|
pano
|
||||||
gnomeExtensions.pano
|
removable-drive-menu
|
||||||
gnomeExtensions.window-is-ready-remover
|
space-bar
|
||||||
|
switcher
|
||||||
|
tactile
|
||||||
|
window-is-ready-remover
|
||||||
|
])
|
||||||
|
++ (with pkgs; [
|
||||||
|
# regular packages
|
||||||
junction
|
junction
|
||||||
celluloid
|
celluloid
|
||||||
mission-center
|
mission-center
|
||||||
dconf
|
dconf
|
||||||
pwvucontrol
|
pwvucontrol
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
];
|
]);
|
||||||
programs.gnome-shell.extensions = [
|
programs.gnome-shell.extensions = [
|
||||||
{package = pkgs.gnomeExtensions.alphabetical-app-grid;}
|
{package = pkgs.gnomeExtensions.alphabetical-app-grid;}
|
||||||
|
{package = pkgs.gnomeExtensions.app-icons-taskbar;}
|
||||||
{package = pkgs.gnomeExtensions.removable-drive-menu;}
|
|
||||||
{package = pkgs.gnomeExtensions.caffeine;}
|
{package = pkgs.gnomeExtensions.caffeine;}
|
||||||
|
{package = pkgs.gnomeExtensions.pano;}
|
||||||
|
{package = pkgs.gnomeExtensions.removable-drive-menu;}
|
||||||
{package = pkgs.gnomeExtensions.space-bar;}
|
{package = pkgs.gnomeExtensions.space-bar;}
|
||||||
{package = pkgs.gnomeExtensions.switcher;}
|
{package = pkgs.gnomeExtensions.switcher;}
|
||||||
{package = pkgs.gnomeExtensions.tactile;}
|
{package = pkgs.gnomeExtensions.tactile;}
|
||||||
{package = pkgs.gnomeExtensions.pano;}
|
|
||||||
{package = pkgs.gnomeExtensions.window-is-ready-remover;}
|
{package = pkgs.gnomeExtensions.window-is-ready-remover;}
|
||||||
];
|
];
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
iconTheme = let
|
||||||
|
name =
|
||||||
|
if (lib.strings.hasPrefix "gruvbox" osConfig.module.stylix.theme)
|
||||||
|
then "Gruvbox-Plus-Dark"
|
||||||
|
else if config.stylix.polarity == "dark"
|
||||||
|
then "Papirus-Dark"
|
||||||
|
else "Papirus-Light";
|
||||||
|
package =
|
||||||
|
if (lib.strings.hasPrefix "gruvbox" osConfig.module.stylix.theme)
|
||||||
|
then pkgs.gruvbox-plus-icons
|
||||||
|
else if (lib.strings.hasPrefix "rose-pine" osConfig.module.stylix.theme)
|
||||||
|
then pkgs.papirus-icon-theme.override {color = "indigo";}
|
||||||
|
else if (lib.strings.hasPrefix "nord" osConfig.module.stylix.theme)
|
||||||
|
then pkgs.papirus-icon-theme.override {color = "nordic";}
|
||||||
|
else pkgs.papirus-icon-theme;
|
||||||
|
in {inherit name package;};
|
||||||
|
};
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme.name = lib.mkForce "adwaita";
|
||||||
|
};
|
||||||
|
|
||||||
dconf.settings = with lib.hm.gvariant; {
|
dconf.settings = with lib.hm.gvariant; {
|
||||||
"org/gnome/desktop/a11y/applications" = {
|
"org/gnome/desktop/a11y/applications" = {
|
||||||
screen-reader-enabled = false;
|
screen-reader-enabled = false;
|
||||||
@ -54,12 +85,12 @@ in {
|
|||||||
|
|
||||||
"org/gnome/desktop/input-sources" = {
|
"org/gnome/desktop/input-sources" = {
|
||||||
mru-sources = [(mkTuple ["xkb" "us"])];
|
mru-sources = [(mkTuple ["xkb" "us"])];
|
||||||
sources = [(mkTuple ["xkb" "us"]) (mkTuple ["xkb" "ua"]) (mkTuple ["xkb" "us+colemak_dh"])];
|
# sources = [(mkTuple ["xkb" "us"]) (mkTuple ["xkb" "ua"]) (mkTuple ["xkb" "us+colemak_dh"])];
|
||||||
xkb-options = ["terminate:ctrl_alt_bksp"];
|
xkb-options = ["terminate:ctrl_alt_bksp"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"org/gnome/desktop/interface" = {
|
"org/gnome/desktop/interface" = {
|
||||||
accent-color = "slate";
|
# accent-color = "slate";
|
||||||
clock-show-seconds = true;
|
clock-show-seconds = true;
|
||||||
color-scheme = "prefer-dark";
|
color-scheme = "prefer-dark";
|
||||||
enable-animations = true;
|
enable-animations = true;
|
||||||
@ -100,8 +131,8 @@ in {
|
|||||||
move-to-workspace-last = ["<Shift><Control><Super>End"];
|
move-to-workspace-last = ["<Shift><Control><Super>End"];
|
||||||
move-to-workspace-left = ["<Control><Super>Left"];
|
move-to-workspace-left = ["<Control><Super>Left"];
|
||||||
move-to-workspace-right = ["<Control><Super>Right"];
|
move-to-workspace-right = ["<Control><Super>Right"];
|
||||||
switch-input-source = ["<Super>Escape"];
|
switch-input-source = ["<Super>Space"];
|
||||||
switch-input-source-backward = ["<Shift><Super>Escape"];
|
switch-input-source-backward = ["<Shift><Super>Space"];
|
||||||
switch-to-workspace-1 = ["<Super>1"];
|
switch-to-workspace-1 = ["<Super>1"];
|
||||||
switch-to-workspace-2 = ["<Super>2"];
|
switch-to-workspace-2 = ["<Super>2"];
|
||||||
switch-to-workspace-3 = ["<Super>3"];
|
switch-to-workspace-3 = ["<Super>3"];
|
||||||
@ -135,7 +166,18 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
"org/gnome/shell" = {
|
"org/gnome/shell" = {
|
||||||
enabled-extensions = ["drive-menu@gnome-shell-extensions.gcampax.github.com" "caffeine@patapon.info" "AlphabeticalAppGrid@stuarthayhurst" "appindicatorsupport@rgcjonas.gmail.com" "user-theme@gnome-shell-extensions.gcampax.github.com" "tactile@lundal.io" "switcher@landau.fi" "pano@elhan.io" "space-bar@luchrioh"];
|
enabled-extensions = [
|
||||||
|
"AlphabeticalAppGrid@stuarthayhurst"
|
||||||
|
"appindicatorsupport@rgcjonas.gmail.com"
|
||||||
|
"aztaskbar@aztaskbar.gitlab.com"
|
||||||
|
"caffeine@patapon.info"
|
||||||
|
"drive-menu@gnome-shell-extensions.gcampax.github.com"
|
||||||
|
"pano@elhan.io"
|
||||||
|
"space-bar@luchrioh"
|
||||||
|
"switcher@landau.fi"
|
||||||
|
"tactile@lundal.io"
|
||||||
|
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
"org/gnome/shell/app-switcher" = {
|
"org/gnome/shell/app-switcher" = {
|
||||||
@ -167,6 +209,21 @@ in {
|
|||||||
workspace-indicator = true;
|
workspace-indicator = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"org/gnome/shell/extensions/aztaskbar" = with lib.hm.gvariant; {
|
||||||
|
favorites = true;
|
||||||
|
icon-size = 25;
|
||||||
|
icon-style = "REGULAR";
|
||||||
|
# intellihide = true;
|
||||||
|
main-panel-height = mkTuple [true 40];
|
||||||
|
position-offset = 4;
|
||||||
|
prefs-visible-page = "";
|
||||||
|
show-apps-button = mkTuple [true 0];
|
||||||
|
show-panel-activities-button = true;
|
||||||
|
show-weather-by-clock = "LEFT";
|
||||||
|
taskbar-spacing = 2;
|
||||||
|
# update-notifier-project-version = 30;
|
||||||
|
};
|
||||||
|
|
||||||
"org/gnome/shell/extensions/tactile" = {
|
"org/gnome/shell/extensions/tactile" = {
|
||||||
background-color = "#${colors.base00}";
|
background-color = "#${colors.base00}";
|
||||||
border-color = "#${colors.base0D}";
|
border-color = "#${colors.base0D}";
|
||||||
|
File diff suppressed because it is too large
Load Diff
458
modules/home/desktop/hyprland/hyprland.nix
Normal file
458
modules/home/desktop/hyprland/hyprland.nix
Normal file
@ -0,0 +1,458 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
osConfig,
|
||||||
|
perSystem,
|
||||||
|
launcher,
|
||||||
|
lockscreen,
|
||||||
|
# pkgs,
|
||||||
|
# lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (config.lib.stylix) colors;
|
||||||
|
# inherit (lib) mkIf;
|
||||||
|
hostname = osConfig.networking.hostName;
|
||||||
|
cursorSize = config.stylix.cursor.size;
|
||||||
|
fontName = config.stylix.fonts.sansSerif.name;
|
||||||
|
keyboard =
|
||||||
|
if hostname == "eldrid"
|
||||||
|
then "chromeos"
|
||||||
|
else "platform";
|
||||||
|
xdgPictures =
|
||||||
|
config.xdg.userDirs.pictures;
|
||||||
|
# ifLaptop = mkIf (hostname != "dunamis");
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
variables = [
|
||||||
|
"--all"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
package = perSystem.hyprland.hyprland;
|
||||||
|
portalPackage = perSystem.hyprland.xdg-desktop-portal-hyprland;
|
||||||
|
# plugins = with pkgs.hyprlandPlugins; [
|
||||||
|
# hyprspace
|
||||||
|
# hy3
|
||||||
|
# hyprscroller
|
||||||
|
# ];
|
||||||
|
settings = {
|
||||||
|
input = {
|
||||||
|
kb_layout = "us,ua";
|
||||||
|
resolve_binds_by_sym =
|
||||||
|
if hostname == "dunamis"
|
||||||
|
then 0
|
||||||
|
else 1;
|
||||||
|
repeat_rate = 50;
|
||||||
|
repeat_delay = 300;
|
||||||
|
# mouse
|
||||||
|
accel_profile = "flat";
|
||||||
|
sensitivity = 0;
|
||||||
|
};
|
||||||
|
device = [
|
||||||
|
{
|
||||||
|
name = "ite-tech.-inc.-ite-device(8910)-keyboard";
|
||||||
|
kb_variant = "colemak_dh,";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "at-translated-set-2-keyboard";
|
||||||
|
kb_variant = "colemak_dh,";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "keyd-virtual-keyboard";
|
||||||
|
kb_variant = "colemak_dh,";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
xwayland.force_zero_scaling = true;
|
||||||
|
monitor = [
|
||||||
|
", preferred, auto, 1"
|
||||||
|
"desc:AOC 27V2G5 0x0000026C, addreserved, 0, 300, 0, 0"
|
||||||
|
"desc:Samsung Electric Company S24R65x H4TMA03291, preferred, 0x0, 1, bitdepth, 10, vrr, 1"
|
||||||
|
"desc:Philips Consumer Electronics Company 27M2N5500 UK02418033254, 2560x1440@180.00Hz, 0x0, 1.3333333, bitdepth, 10, vrr, 1"
|
||||||
|
"desc:BOE 0x08E8, preferred, 1920x0, 1.2, bitdepth, 10"
|
||||||
|
"desc:LG Display 0x068B, preferred, 1920x0, 1.2, bitdepth, 10"
|
||||||
|
"desc:Chimei Innolux Corporation 0x1406, preferred, 1920x0, 1.2"
|
||||||
|
"desc:KDC 0x0000, preferred, 1920x0, 1.25"
|
||||||
|
];
|
||||||
|
env = [
|
||||||
|
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
||||||
|
"QT_QPA_PLATFORM,wayland"
|
||||||
|
"QT_QPA_PLATFORMTHEME,gtk3"
|
||||||
|
"XCURSORSIZE,${toString cursorSize}"
|
||||||
|
"GSK_RENDERER,ngl"
|
||||||
|
];
|
||||||
|
decoration = {
|
||||||
|
shadow.enabled = false;
|
||||||
|
# drop_shadow = false;
|
||||||
|
blur = {
|
||||||
|
size = 8;
|
||||||
|
passes = 3;
|
||||||
|
};
|
||||||
|
# shadow_offset = "0 5";
|
||||||
|
# "col.shadow" = "rgba(00000099)";
|
||||||
|
rounding = 12;
|
||||||
|
};
|
||||||
|
misc = {
|
||||||
|
font_family = fontName;
|
||||||
|
disable_splash_rendering = true;
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
# vfr = true;
|
||||||
|
};
|
||||||
|
bezier = [
|
||||||
|
"easeOutQuad, 0.25, 0.46, 0.45, 0.94"
|
||||||
|
"easeOutExpo, 0.19, 1, 0.22, 1"
|
||||||
|
];
|
||||||
|
animation = [
|
||||||
|
"workspaces, 1, 3, easeOutExpo, slidefade 20%"
|
||||||
|
"windows, 1, 3, easeOutExpo, popin 80%"
|
||||||
|
"layers, 1, 2, easeOutExpo, fade"
|
||||||
|
];
|
||||||
|
plugin = [
|
||||||
|
{
|
||||||
|
overview = {
|
||||||
|
gapsIn = 12;
|
||||||
|
gapsOut = 24;
|
||||||
|
exitOnClick = true;
|
||||||
|
centerAligned = true;
|
||||||
|
showNewWorkspace = false;
|
||||||
|
showEmptyWorkspace = false;
|
||||||
|
affectStrut = false;
|
||||||
|
};
|
||||||
|
hyprexpo = {
|
||||||
|
columns = 3;
|
||||||
|
gap_size = 8;
|
||||||
|
#bg_col = "rgb(111111)";
|
||||||
|
workspace_method = "first 1"; # [center/first] [workspace] e.g. first 1 or center m+1
|
||||||
|
enable_gesture = true; # laptop touchpad
|
||||||
|
gesture_fingers = 3; # 3 or 4
|
||||||
|
gesture_distance = 400; # how far is the "max"
|
||||||
|
gesture_positive = false; # positive = swipe down. Negative = swipe up.;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
hy3 = {
|
||||||
|
autotile = true;
|
||||||
|
tab_first_window = false;
|
||||||
|
tabs = {
|
||||||
|
render_text = true;
|
||||||
|
height = 24;
|
||||||
|
padding = 8;
|
||||||
|
rounding = 8;
|
||||||
|
text_height = 14;
|
||||||
|
text_center = true;
|
||||||
|
text_font = fontName;
|
||||||
|
|
||||||
|
"col.active" = "0xff${colors.base00}";
|
||||||
|
"col.inactive" = "0xff${colors.base00}";
|
||||||
|
"col.urgent" = "0xff${colors.base00}";
|
||||||
|
"col.active.text" = "0xff${colors.base0D}";
|
||||||
|
"col.inactive.text" = "0xff${colors.base05}";
|
||||||
|
"col.urgent.text" = "0xff${colors.base09}";
|
||||||
|
"col.active.border" = "0xff${colors.base00}";
|
||||||
|
"col.inactive.border" = "0xff${colors.base00}";
|
||||||
|
"col.urgent.border" = "0xff${colors.base00}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
scroller = {
|
||||||
|
column_widths = "onethird onehalf twothirds one";
|
||||||
|
window_heights = "onethird onehalf twothirds one";
|
||||||
|
gesture_scroll_fingers = 3;
|
||||||
|
gesture_overview_fingers = 3;
|
||||||
|
jump_labels_font = fontName;
|
||||||
|
jump_labels_color = "0xff${colors.base0A}";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
force_split = 2;
|
||||||
|
default_split_ratio = 1.2;
|
||||||
|
};
|
||||||
|
master = {
|
||||||
|
mfact = 0.6;
|
||||||
|
};
|
||||||
|
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
"$modShift" = "$mod SHIFT";
|
||||||
|
"$modCtrl" = "$mod CTRL";
|
||||||
|
"$modShiftCtrl" = "$mod SHIFT CTRL";
|
||||||
|
|
||||||
|
"$left" = "N";
|
||||||
|
"$down" = "E";
|
||||||
|
"$up" = "I";
|
||||||
|
"$right" = "O";
|
||||||
|
|
||||||
|
"$terminal" = "ghostty";
|
||||||
|
"$launcher" = launcher;
|
||||||
|
"$screenLocker" = lockscreen;
|
||||||
|
"$webBrowser" = "io.github.zen_browser.zen";
|
||||||
|
"$clipboardManager" = "copyq menu";
|
||||||
|
|
||||||
|
general = {
|
||||||
|
"col.active_border" = "0xff${colors.base0D}";
|
||||||
|
"col.inactive_border" = "0xff${colors.base03}";
|
||||||
|
gaps_in = 4;
|
||||||
|
gaps_out = 8;
|
||||||
|
border_size = 3;
|
||||||
|
allow_tearing = true;
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
group = {
|
||||||
|
"col.border_active" = "0xff${colors.base0D}";
|
||||||
|
"col.border_inactive" = "0xff${colors.base03}";
|
||||||
|
"col.border_locked_active" = "0xff${colors.base0A}";
|
||||||
|
"col.border_locked_inactive" = "0xff${colors.base0F}";
|
||||||
|
groupbar = {
|
||||||
|
height = 16;
|
||||||
|
rounding = 0;
|
||||||
|
indicator_height = 0;
|
||||||
|
gradient_rounding = 4;
|
||||||
|
font_size = 14;
|
||||||
|
gradients = true;
|
||||||
|
font_family = fontName;
|
||||||
|
"text_color" = "0xff${colors.base00}";
|
||||||
|
"col.active" = "0xff${colors.base0D}";
|
||||||
|
"col.inactive" = "0xff${colors.base03}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
binds.scroll_event_delay = 0;
|
||||||
|
cursor.persistent_warps = true;
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
"$mod, Return, exec, $terminal"
|
||||||
|
"$mod, Space, exec, $launcher"
|
||||||
|
# "$modShift, Space, exec, $launcher"
|
||||||
|
"$modCtrl, Q, killactive"
|
||||||
|
"$modCtrl, M, fullscreen"
|
||||||
|
"$modCtrl, G, togglefloating"
|
||||||
|
"$mod, G, pin"
|
||||||
|
|
||||||
|
"$mod, T, togglegroup"
|
||||||
|
"$mod, period, changegroupactive, f"
|
||||||
|
"$mod, comma, changegroupactive, b"
|
||||||
|
"$modCtrl, period, movewindoworgroup, r"
|
||||||
|
"$modCtrl, comma, movewindoworgroup, l"
|
||||||
|
|
||||||
|
"$mod, Tab, cyclenext,"
|
||||||
|
"$modShift, Tab, cyclenext, prev"
|
||||||
|
"$mod, Tab, bringactivetotop,"
|
||||||
|
|
||||||
|
"$modShift, U, focusurgentorlast"
|
||||||
|
|
||||||
|
"$modCtrl, L, exec, $screenLocker"
|
||||||
|
"$modCtrl, B, exec, $webBrowser"
|
||||||
|
"$modCtrl, V, exec, $clipboardManager"
|
||||||
|
"$modCtrl, K, focuswindow, title:(Meet:.*)"
|
||||||
|
|
||||||
|
# ", Print, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -o -r -c '\#\#00000000')\" -t ppm - | ${pkgs.satty}/bin/satty --filename - --fullscreen --output-filename ${xdgPictures}/screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png"
|
||||||
|
", Print, exec, hyprshot -z -m region -o ${xdgPictures}/screenshots -f screenshot-$(date '+%Y%m%d-%H:%M:%S').png"
|
||||||
|
"CTRL, Print, exec, hyprshot -z -m window -o ${xdgPictures}/screenshots -f screenshot-$(date '+%Y%m%d-%H:%M:%S').png"
|
||||||
|
"SHIFT, Print, exec, hyprshot -z -m output -o ${xdgPictures}/screenshots -f screenshot-$(date '+%Y%m%d-%H:%M:%S').png"
|
||||||
|
## navigation
|
||||||
|
"$mod, $left, movefocus, l"
|
||||||
|
"$mod, $down, movefocus, d"
|
||||||
|
"$mod, $up, movefocus, u"
|
||||||
|
"$mod, $right, movefocus, r"
|
||||||
|
"$modShift, $left, workspace, e-1"
|
||||||
|
"$modShift, $right, workspace, e+1"
|
||||||
|
"$mod, left, movefocus, l"
|
||||||
|
"$mod, up, movefocus, u"
|
||||||
|
"$mod, down, movefocus, d"
|
||||||
|
"$mod, right, movefocus, r"
|
||||||
|
"$modShift, W, focuscurrentorlast"
|
||||||
|
"$mod, mouse_down, workspace, e-1"
|
||||||
|
"$mod, mouse_up, workspace, e+1"
|
||||||
|
"$modShift, left, workspace, e-1"
|
||||||
|
"$modShift, right, workspace, e+1"
|
||||||
|
|
||||||
|
"$modCtrl, $left, movewindow, l"
|
||||||
|
"$modCtrl, $down, movewindow, d"
|
||||||
|
"$modCtrl, $up, movewindow, u"
|
||||||
|
"$modCtrl, $right, movewindow, r"
|
||||||
|
"$modCtrl, left, movewindow, l"
|
||||||
|
"$modCtrl, up, movewindow, u"
|
||||||
|
"$modCtrl, down, movewindow, d"
|
||||||
|
"$modCtrl, right, movewindow, r"
|
||||||
|
# workspaces
|
||||||
|
"$mod, 1, workspace, 1"
|
||||||
|
"$mod, 2, workspace, 2"
|
||||||
|
"$mod, 3, workspace, 3"
|
||||||
|
"$mod, 4, workspace, 4"
|
||||||
|
"$mod, 5, workspace, 5"
|
||||||
|
"$mod, 6, workspace, 6"
|
||||||
|
"$mod, 7, workspace, 7"
|
||||||
|
"$mod, 8, workspace, 8"
|
||||||
|
"$mod, 9, workspace, 9"
|
||||||
|
"$mod, 0, togglespecialworkspace"
|
||||||
|
|
||||||
|
"$modShiftCtrl, 1, movetoworkspace, 1"
|
||||||
|
"$modShiftCtrl, 2, movetoworkspace, 2"
|
||||||
|
"$modShiftCtrl, 3, movetoworkspace, 3"
|
||||||
|
"$modShiftCtrl, 4, movetoworkspace, 4"
|
||||||
|
"$modShiftCtrl, 5, movetoworkspace, 5"
|
||||||
|
"$modShiftCtrl, 6, movetoworkspace, 6"
|
||||||
|
"$modShiftCtrl, 7, movetoworkspace, 7"
|
||||||
|
"$modShiftCtrl, 8, movetoworkspace, 8"
|
||||||
|
"$modShiftCtrl, 9, movetoworkspace, 9"
|
||||||
|
"$modShiftCtrl, 0, movetoworkspace, special"
|
||||||
|
|
||||||
|
"$mod, Q, workspace, 1"
|
||||||
|
"$mod, W, workspace, 2"
|
||||||
|
"$mod, F, workspace, 3"
|
||||||
|
"$mod, P, workspace, 4"
|
||||||
|
"$mod, B, workspace, 5"
|
||||||
|
"$mod, J, workspace, 6"
|
||||||
|
"$mod, L, workspace, 7"
|
||||||
|
"$mod, U, workspace, 8"
|
||||||
|
"$mod, Y, workspace, 9"
|
||||||
|
"$mod, apostrophe, togglespecialworkspace"
|
||||||
|
|
||||||
|
"$modShiftCtrl, Q, movetoworkspace, 1"
|
||||||
|
"$modShiftCtrl, W, movetoworkspace, 2"
|
||||||
|
"$modShiftCtrl, F, movetoworkspace, 3"
|
||||||
|
"$modShiftCtrl, P, movetoworkspace, 4"
|
||||||
|
"$modShiftCtrl, B, movetoworkspace, 5"
|
||||||
|
"$modShiftCtrl, J, movetoworkspace, 6"
|
||||||
|
"$modShiftCtrl, L, movetoworkspace, 7"
|
||||||
|
"$modShiftCtrl, U, movetoworkspace, 8"
|
||||||
|
"$modShiftCtrl, Y, movetoworkspace, 9"
|
||||||
|
"$modShiftCtrl, apostrophe, movetoworkspace, special"
|
||||||
|
|
||||||
|
"$modShiftCtrl, $left, movetoworkspace, e-1"
|
||||||
|
"$modShiftCtrl, $right, movetoworkspace, e+1"
|
||||||
|
"$modShiftCtrl, left, movetoworkspace, e-1"
|
||||||
|
"$modShiftCtrl, right, movetoworkspace, e+1"
|
||||||
|
|
||||||
|
''$mod ALT, mouse_down, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 1.25}')"''
|
||||||
|
''$mod ALT, mouse_up, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 1.25}')"''
|
||||||
|
"$mod ALT, mouse:274, exec, hyprctl keyword cursor:zoom_factor 1" # middle wheel click
|
||||||
|
];
|
||||||
|
# binde = [
|
||||||
|
# "$mod, comma, resizeactive, -10 0"
|
||||||
|
# "$mod, period, resizeactive, 10 0"
|
||||||
|
# "$modShift, comma, resizeactive, 0 -10"
|
||||||
|
# "$modShift, period, resizeactive, 0 10"
|
||||||
|
# ];
|
||||||
|
bindl = [
|
||||||
|
"$mod, Escape, exec, hyprctl switchxkblayout all next"
|
||||||
|
", switch:on:Lid Switch, exec, hyprctl keyword monitor 'eDP-1, disable'"
|
||||||
|
", switch:off:Lid Switch, exec, hyprctl keyword monitor 'eDP-1, preferred, 1920x0, 1.2'"
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
|
", XF86AudioNext, exec, playerctl next"
|
||||||
|
"$modShiftCtrl ALT, Q, exit"
|
||||||
|
];
|
||||||
|
binde = [
|
||||||
|
", XF86MonBrightnessUp, exec, brightnessctl s 5%+"
|
||||||
|
", XF86MonBrightnessDown, exec, brightnessctl s 5%-"
|
||||||
|
"ALT, XF86MonBrightnessUp, exec, brightnessctl s 5%+ -d ${keyboard}::kbd_backlight"
|
||||||
|
"ALT, XF86MonBrightnessDown, exec, brightnessctl s 5%- -d ${keyboard}::kbd_backlight"
|
||||||
|
", XF86KbdBrightnessUp, exec, brightnessctl s 5%+ -d ${keyboard}::kbd_backlight"
|
||||||
|
", XF86KbdBrightnessDown, exec, brightnessctl s 5%- -d ${keyboard}::kbd_backlight"
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
|
];
|
||||||
|
bindm = [
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
"$mod ALT, mouse:272, resizewindow"
|
||||||
|
];
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe = true;
|
||||||
|
workspace_swipe_fingers = 3;
|
||||||
|
workspace_swipe_distance = 300;
|
||||||
|
};
|
||||||
|
|
||||||
|
workspace = [
|
||||||
|
"1, defaultName:general"
|
||||||
|
"2, defaultName:web"
|
||||||
|
"3, defaultName:chat"
|
||||||
|
"4, defaultName:code"
|
||||||
|
"5, defaultName:uni"
|
||||||
|
"6, defaultName:games"
|
||||||
|
"7, defaultName:system"
|
||||||
|
"8, defaultName:media"
|
||||||
|
"9, defaultName:tray"
|
||||||
|
# "10, defaultName:"
|
||||||
|
];
|
||||||
|
windowrulev2 = [
|
||||||
|
## tray/misc utilities
|
||||||
|
# file picker
|
||||||
|
"float, class:xdg-desktop-portal-gtk"
|
||||||
|
"size <50% <90%, class:xdg-desktop-portal-gtk"
|
||||||
|
"center 1, class:xdg-desktop-portal-gtk"
|
||||||
|
# xdp-hyprland stream picker
|
||||||
|
"float, initialTitle:MainPicker"
|
||||||
|
# general apps
|
||||||
|
"float, class:(com.saivert.pwvucontrol)"
|
||||||
|
"float, class:(re.sonny.Junction)"
|
||||||
|
"float, class:(com.github.hluk.copyq)"
|
||||||
|
"float, class:(nm-connection-editor)"
|
||||||
|
"float, class:(.blueman-manager-wrapped)"
|
||||||
|
# telegram
|
||||||
|
"maximize, initialTitle:Медіапереглядач"
|
||||||
|
"noborder, title:TelegramDesktop"
|
||||||
|
"keepaspectratio, title:TelegramDesktop"
|
||||||
|
"noblur, title:TelegramDesktop"
|
||||||
|
"float, title:TelegramDesktop"
|
||||||
|
"pin, title:TelegramDesktop"
|
||||||
|
# any chromium-based
|
||||||
|
"noborder, title:Картинка в картинці"
|
||||||
|
"keepaspectratio, title:Картинка в картинці"
|
||||||
|
"noblur, title:Картинка в картинці"
|
||||||
|
"float, title:Картинка в картинці"
|
||||||
|
"pin, title:Картинка в картинці"
|
||||||
|
# and firefox
|
||||||
|
"noborder, title:Picture-in-Picture"
|
||||||
|
"keepaspectratio, title:Picture-in-Picture"
|
||||||
|
"noblur, title:Picture-in-Picture"
|
||||||
|
"float, title:Picture-in-Picture"
|
||||||
|
"pin, title:Picture-in-Picture"
|
||||||
|
# screenshot editor
|
||||||
|
"noanim, class:com.gabm.satty"
|
||||||
|
"float, class:com.gabm.satty"
|
||||||
|
"rounding 0, class:com.gabm.satty"
|
||||||
|
"size 100% 100%, class:com.gabm.satty"
|
||||||
|
"move 0 0, class:com.gabm.satty"
|
||||||
|
"pin, class:com.gabm.satty"
|
||||||
|
## games
|
||||||
|
"float, class:(com.mojang.minecraft.java-edition)"
|
||||||
|
"immediate, class:(com.mojang.minecraft.java-edition)"
|
||||||
|
# cs2
|
||||||
|
"immediate, class:(cs2)"
|
||||||
|
# deadlock
|
||||||
|
# "float, class:(steam_app_1422450)"
|
||||||
|
"fullscreen, class:(steam_app_1422450)"
|
||||||
|
"immediate, class:(steam_app_1422450)"
|
||||||
|
"immediate, initialTitle:(Ghostrunner)"
|
||||||
|
# dead by daylight
|
||||||
|
"immediate, class:deadbydaylight-egs-shipping.exe"
|
||||||
|
## workspace assignments
|
||||||
|
"workspace name:chat, class:org.telegram.desktop"
|
||||||
|
"workspace name:chat, class:org.signal.Signal"
|
||||||
|
"workspace name:chat, class:im.riot.Riot"
|
||||||
|
"workspace name:chat, class:WebCord"
|
||||||
|
|
||||||
|
"workspace name:games, class:com.heroicgameslauncher.hgl"
|
||||||
|
"workspace name:games, class:net.lutris.Lutris"
|
||||||
|
"workspace name:games, class:steam"
|
||||||
|
# "workspace name:game, class:"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
bind = $modShift, R, submap, resize
|
||||||
|
submap = resize
|
||||||
|
binde = , right, resizeactive, 10 0
|
||||||
|
binde = , left, resizeactive, -10 0
|
||||||
|
binde = , up, resizeactive, 0 -10
|
||||||
|
binde = , down, resizeactive, 0 10
|
||||||
|
binde = , $right, resizeactive, 10 0
|
||||||
|
binde = , $left, resizeactive, -10 0
|
||||||
|
binde = , $up, resizeactive, 0 -10
|
||||||
|
binde = , $down, resizeactive, 0 10
|
||||||
|
bind = , escape, submap, reset
|
||||||
|
submap = reset
|
||||||
|
'';
|
||||||
|
}
|
23
modules/home/desktop/hyprland/programs/default.nix
Normal file
23
modules/home/desktop/hyprland/programs/default.nix
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
osConfig,
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf mkDefault getExe;
|
||||||
|
inherit (config.lib.stylix) colors;
|
||||||
|
inherit (osConfig.networking) hostName;
|
||||||
|
ifLaptop = mkIf (hostName != "dunamis");
|
||||||
|
in {
|
||||||
|
imports = with inputs; [
|
||||||
|
walker.homeManagerModules.default
|
||||||
|
];
|
||||||
|
options = config.desktop.hyprland.enable {
|
||||||
|
# programs.fuzzel = import ./fuzzel {inherit config mkDefault;};
|
||||||
|
programs.walker = import ./walker {inherit config inputs pkgs;};
|
||||||
|
programs.waybar = import ./waybar {inherit colors config getExe ifLaptop pkgs;};
|
||||||
|
programs.hyprlock = import ./hyprlock {inherit config pkgs;};
|
||||||
|
};
|
||||||
|
}
|
23
modules/home/desktop/hyprland/programs/fuzzel/default.nix
Normal file
23
modules/home/desktop/hyprland/programs/fuzzel/default.nix
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
mkDefault,
|
||||||
|
}: {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
main = {
|
||||||
|
terminal = "$TERMINAL -e";
|
||||||
|
fields = "filename,name,generic,keywords,categories,exec";
|
||||||
|
dpi-aware = false;
|
||||||
|
width = 20;
|
||||||
|
horizontal-pad = 12;
|
||||||
|
vertical-pad = 12;
|
||||||
|
show-actions = true;
|
||||||
|
match-mode = "fuzzy";
|
||||||
|
icon-theme = config.dconf.settings."org/gnome/desktop/interface".icon-theme;
|
||||||
|
};
|
||||||
|
border = mkDefault {
|
||||||
|
width = 3;
|
||||||
|
radius = 12;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
94
modules/home/desktop/hyprland/programs/hyprlock/default.nix
Normal file
94
modules/home/desktop/hyprland/programs/hyprlock/default.nix
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (config.stylix) colors;
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
disable_loading_bar = true;
|
||||||
|
#grace = 300;
|
||||||
|
hide_cursor = true;
|
||||||
|
no_fade_in = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
path = "screenshot";
|
||||||
|
blur_passes = 4;
|
||||||
|
blur_size = 8;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
input-field = [
|
||||||
|
{
|
||||||
|
size = "274, 50";
|
||||||
|
rounding = 12;
|
||||||
|
outline_thickness = 3;
|
||||||
|
position = "0, 0";
|
||||||
|
monitor = "";
|
||||||
|
dots_center = true;
|
||||||
|
fade_on_empty = false;
|
||||||
|
font_family = "${config.stylix.fonts.serif.name}";
|
||||||
|
font_color = "rgb(${colors.base05})";
|
||||||
|
inner_color = "rgb(${colors.base00})";
|
||||||
|
outer_color = "rgb(${colors.base0D})";
|
||||||
|
check_color = "rgb(${colors.base0A})";
|
||||||
|
fail_color = "rgb(${colors.base08})";
|
||||||
|
placeholder_text = "locked...";
|
||||||
|
fail_text = "wrong";
|
||||||
|
shadow_passes = 0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
shape = [
|
||||||
|
{
|
||||||
|
rounding = 12;
|
||||||
|
#border_size = 3;
|
||||||
|
size = "274, 50";
|
||||||
|
color = "rgb(${colors.base00})";
|
||||||
|
border_color = "rgb(${colors.base0D})";
|
||||||
|
position = "0, 60";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
rounding = 12;
|
||||||
|
#border_size = 3;
|
||||||
|
size = "274, 50";
|
||||||
|
color = "rgb(${colors.base00})";
|
||||||
|
border_color = "rgb(${colors.base0D})";
|
||||||
|
position = "0, -60";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
label = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "$LAYOUT"; #"cmd[update:1000] ${pkgs.uutils-coreutils-noprefix}/bin/echo $(${pkgs.uutils-coreutils-noprefix}/bin/date +%H:%M:%S)";
|
||||||
|
text_align = "center";
|
||||||
|
font_size = 16;
|
||||||
|
font_family = "${config.stylix.fonts.serif.name}";
|
||||||
|
outer_color = "rgb(${colors.base00})";
|
||||||
|
color = "rgb(${colors.base05})";
|
||||||
|
position = "0, 60";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "cmd[update:1000] ${pkgs.uutils-coreutils-noprefix}/bin/echo $(${pkgs.uutils-coreutils-noprefix}/bin/date +'%m/%d %a %T')";
|
||||||
|
text_align = "center";
|
||||||
|
font_size = 16;
|
||||||
|
font_family = "${config.stylix.fonts.serif.name}";
|
||||||
|
outer_color = "rgb(${colors.base00})";
|
||||||
|
color = "rgb(${colors.base05})";
|
||||||
|
position = "0, -60";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
307
modules/home/desktop/hyprland/programs/walker/default.nix
Normal file
307
modules/home/desktop/hyprland/programs/walker/default.nix
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.walker;
|
||||||
|
runAsService = true;
|
||||||
|
config = {
|
||||||
|
activation_mode.labels = "neiotsra";
|
||||||
|
as_window = false;
|
||||||
|
disabled = [
|
||||||
|
"bookmarks"
|
||||||
|
"clipboard"
|
||||||
|
"custom_commands"
|
||||||
|
"translation"
|
||||||
|
"websearch"
|
||||||
|
];
|
||||||
|
builtins = {
|
||||||
|
applications = {
|
||||||
|
actions.enabled = true;
|
||||||
|
context_aware = true;
|
||||||
|
name = "applications";
|
||||||
|
placeholder = "Applications";
|
||||||
|
prioritize_new = true;
|
||||||
|
refresh = true;
|
||||||
|
show_generic = true;
|
||||||
|
show_icon_when_single = true;
|
||||||
|
show_sub_when_single = true;
|
||||||
|
weight = 10;
|
||||||
|
};
|
||||||
|
calc = {
|
||||||
|
icon = "accessories-calculator";
|
||||||
|
min_chars = 4;
|
||||||
|
name = "calc";
|
||||||
|
placeholder = "Calculator";
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
clipboard = {
|
||||||
|
image_height = 300;
|
||||||
|
max_entries = 10;
|
||||||
|
name = "clipboard";
|
||||||
|
placeholder = "Clipboard";
|
||||||
|
switcher_only = true;
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
commands = {
|
||||||
|
icon = "utilities-terminal";
|
||||||
|
name = "commands";
|
||||||
|
placeholder = "Commands";
|
||||||
|
switcher_only = true;
|
||||||
|
weight = 8;
|
||||||
|
};
|
||||||
|
custom_commands = {
|
||||||
|
icon = "utilities-terminal";
|
||||||
|
name = "custom_commands";
|
||||||
|
placeholder = "Custom Commands";
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
dmenu = {
|
||||||
|
name = "dmenu";
|
||||||
|
placeholder = "Dmenu";
|
||||||
|
switcher_only = true;
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
emojis = {
|
||||||
|
history = true;
|
||||||
|
name = "emojis";
|
||||||
|
placeholder = "Emojis";
|
||||||
|
switcher_only = true;
|
||||||
|
typeahead = true;
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
finder = {
|
||||||
|
concurrency = 8;
|
||||||
|
icon = "folder";
|
||||||
|
ignore_gitignore = true;
|
||||||
|
name = "finder";
|
||||||
|
placeholder = "Finder";
|
||||||
|
refresh = true;
|
||||||
|
switcher_only = true;
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
runner = {
|
||||||
|
generic_entry = false;
|
||||||
|
history = true;
|
||||||
|
icon = "utilities-terminal";
|
||||||
|
name = "runner";
|
||||||
|
placeholder = "Runner";
|
||||||
|
refresh = true;
|
||||||
|
typeahead = true;
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
ssh = {
|
||||||
|
history = true;
|
||||||
|
icon = "preferences-system-network";
|
||||||
|
name = "ssh";
|
||||||
|
placeholder = "SSH";
|
||||||
|
refresh = true;
|
||||||
|
switcher_only = true;
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
switcher = {
|
||||||
|
name = "switcher";
|
||||||
|
placeholder = "Switcher";
|
||||||
|
prefix = "/";
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
websearch = {
|
||||||
|
icon = "applications-internet";
|
||||||
|
name = "websearch";
|
||||||
|
placeholder = "Websearch";
|
||||||
|
weight = 5;
|
||||||
|
};
|
||||||
|
windows = {
|
||||||
|
icon = "view-restore";
|
||||||
|
name = "windows";
|
||||||
|
placeholder = "Windows";
|
||||||
|
weight = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
disable_click_to_close = false;
|
||||||
|
force_keyboard_focus = true;
|
||||||
|
list = {
|
||||||
|
max_entries = 50;
|
||||||
|
show_initial_entries = true;
|
||||||
|
single_click = true;
|
||||||
|
};
|
||||||
|
search = {
|
||||||
|
delay = 0;
|
||||||
|
force_keyboard_focus = true;
|
||||||
|
history = true;
|
||||||
|
placeholder = "Search...";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
theme = {
|
||||||
|
layout = {
|
||||||
|
ui = {
|
||||||
|
anchors = {
|
||||||
|
bottom = false;
|
||||||
|
left = false;
|
||||||
|
right = false;
|
||||||
|
top = false;
|
||||||
|
};
|
||||||
|
window = {
|
||||||
|
h_align = "center";
|
||||||
|
v_align = "center";
|
||||||
|
box = {
|
||||||
|
width = 450;
|
||||||
|
h_align = "center";
|
||||||
|
v_align = "center";
|
||||||
|
# spacing = 12;
|
||||||
|
orientation = "vertical";
|
||||||
|
search = {
|
||||||
|
margins = {
|
||||||
|
start = 8;
|
||||||
|
top = 8;
|
||||||
|
end = 8;
|
||||||
|
bottom = 0;
|
||||||
|
};
|
||||||
|
h_align = "top";
|
||||||
|
};
|
||||||
|
scroll = {
|
||||||
|
overlay_scrolling = true;
|
||||||
|
list = {
|
||||||
|
margins = {
|
||||||
|
bottom = 8;
|
||||||
|
top = 4;
|
||||||
|
start = 8;
|
||||||
|
end = 8;
|
||||||
|
};
|
||||||
|
item = {
|
||||||
|
icon.theme = "${config.gtk.iconTheme.name}";
|
||||||
|
spacing = 4;
|
||||||
|
activation_label = {
|
||||||
|
x_align = 0.5;
|
||||||
|
y_align = 0.5;
|
||||||
|
width = 32;
|
||||||
|
};
|
||||||
|
text = {
|
||||||
|
h_align = "start";
|
||||||
|
h_expand = true;
|
||||||
|
revert = true;
|
||||||
|
wrap = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = let
|
||||||
|
inherit (config.lib.stylix) colors;
|
||||||
|
in ''
|
||||||
|
@define-color base00 #${colors.base00};
|
||||||
|
@define-color base01 #${colors.base01};
|
||||||
|
@define-color base02 #${colors.base02};
|
||||||
|
@define-color base03 #${colors.base03};
|
||||||
|
@define-color base04 #${colors.base04};
|
||||||
|
@define-color base05 #${colors.base05};
|
||||||
|
@define-color base06 #${colors.base06};
|
||||||
|
@define-color base07 #${colors.base07};
|
||||||
|
@define-color base08 #${colors.base08};
|
||||||
|
@define-color base09 #${colors.base09};
|
||||||
|
@define-color base0A #${colors.base0A};
|
||||||
|
@define-color base0B #${colors.base0B};
|
||||||
|
@define-color base0C #${colors.base0C};
|
||||||
|
@define-color base0D #${colors.base0D};
|
||||||
|
@define-color base0E #${colors.base0E};
|
||||||
|
@define-color base0F #${colors.base0F};
|
||||||
|
|
||||||
|
#window,
|
||||||
|
#box,
|
||||||
|
#search,
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#typeahead,
|
||||||
|
#spinner,
|
||||||
|
#list,
|
||||||
|
child,
|
||||||
|
scrollbar,
|
||||||
|
slider,
|
||||||
|
#item,
|
||||||
|
#text,
|
||||||
|
#label,
|
||||||
|
#sub,
|
||||||
|
#activationlabel {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
background: @base00;
|
||||||
|
color: @base05;
|
||||||
|
border-radius: 20px;
|
||||||
|
border: 3px solid @base0D;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box {
|
||||||
|
background: @base00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#search {
|
||||||
|
background: @base01;
|
||||||
|
border-radius: 12px 12px 6px 6px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#password,
|
||||||
|
#input,
|
||||||
|
#typeahead {
|
||||||
|
background: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input > *:first-child,
|
||||||
|
#typeahead > *:first-child {
|
||||||
|
margin-right: 12px;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typeahead {
|
||||||
|
color: @base05;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input placeholder {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#list {
|
||||||
|
padding: 8px;
|
||||||
|
border-radius: 6px 6px 12px 12px;
|
||||||
|
background: @base01;
|
||||||
|
}
|
||||||
|
|
||||||
|
child {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
child:selected,
|
||||||
|
child:hover {
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: @base02;
|
||||||
|
}
|
||||||
|
|
||||||
|
#item {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sub {
|
||||||
|
font-size: smaller;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#activationlabel {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activation #activationlabel {
|
||||||
|
opacity: 1;
|
||||||
|
color: @base05;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
331
modules/home/desktop/hyprland/programs/waybar/default.nix
Normal file
331
modules/home/desktop/hyprland/programs/waybar/default.nix
Normal file
@ -0,0 +1,331 @@
|
|||||||
|
{
|
||||||
|
colors,
|
||||||
|
config,
|
||||||
|
getExe,
|
||||||
|
ifLaptop,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
enable = true;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
target = "graphical-session.target";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
bar-0 = {
|
||||||
|
# layer = "top";
|
||||||
|
position = "bottom";
|
||||||
|
height = 24;
|
||||||
|
spacing = 6;
|
||||||
|
# margin-left = 33 + 3;
|
||||||
|
# margin-right = 33 + 3;
|
||||||
|
margin-left = 8;
|
||||||
|
margin-right = 8;
|
||||||
|
margin-bottom = 8;
|
||||||
|
reload_style_on_change = true;
|
||||||
|
modules-left = [
|
||||||
|
"hyprland/language"
|
||||||
|
"hyprland/workspaces"
|
||||||
|
"wlr/taskbar"
|
||||||
|
];
|
||||||
|
modules-center = ["clock"];
|
||||||
|
modules-right = [
|
||||||
|
(ifLaptop "group/laptop")
|
||||||
|
"wireplumber"
|
||||||
|
"tray"
|
||||||
|
"privacy"
|
||||||
|
(ifLaptop "power-profiles-daemon")
|
||||||
|
"idle_inhibitor"
|
||||||
|
"custom/notification"
|
||||||
|
];
|
||||||
|
"niri/workspaces" = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
"1" = "൧";
|
||||||
|
"2" = "൨";
|
||||||
|
"3" = "൩";
|
||||||
|
"4" = "൪";
|
||||||
|
"5" = "൫";
|
||||||
|
"6" = "൬";
|
||||||
|
"7" = "൭";
|
||||||
|
"8" = "൮";
|
||||||
|
"9" = "൯";
|
||||||
|
"10" = "൰";
|
||||||
|
general = "";
|
||||||
|
web = "";
|
||||||
|
chat = "";
|
||||||
|
code = "";
|
||||||
|
uni = "";
|
||||||
|
games = "";
|
||||||
|
system = "";
|
||||||
|
media = "";
|
||||||
|
tray = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"niri/language" = {
|
||||||
|
format = "{}";
|
||||||
|
format-en = "🇺🇸";
|
||||||
|
format-uk = "🇺🇦";
|
||||||
|
};
|
||||||
|
"custom/separator" = {
|
||||||
|
format = "";
|
||||||
|
interval = "once";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"group/laptop" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"battery"
|
||||||
|
"backlight"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"backlight" = {
|
||||||
|
format = "{icon} {percent}%";
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"idle_inhibitor" = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
activated = "";
|
||||||
|
deactivated = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"tray" = {
|
||||||
|
icon-size = 20;
|
||||||
|
spacing = 6;
|
||||||
|
};
|
||||||
|
"clock" = {
|
||||||
|
interval = 1;
|
||||||
|
format = "{:%H:%M:%S}";
|
||||||
|
tooltip-format = "{:%d.%m.%Y}";
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
states = {
|
||||||
|
good = 95;
|
||||||
|
warning = 30;
|
||||||
|
critical = 15;
|
||||||
|
};
|
||||||
|
format = "{icon} {capacity}%";
|
||||||
|
format-full = " {capacity}%";
|
||||||
|
format-charging = " {capacity}%";
|
||||||
|
format-plugged = " {capacity}%";
|
||||||
|
format-alt = "{icon} {time}";
|
||||||
|
format-icons = ["" "" "" "" "" "" "" "" "" ""];
|
||||||
|
};
|
||||||
|
mpris = {
|
||||||
|
format = "{player_icon} {dynamic}";
|
||||||
|
format-paused = "{status_icon} <i>{dynamic}</i>";
|
||||||
|
playing-len = 30;
|
||||||
|
playing-paused = 30;
|
||||||
|
player-icons = {
|
||||||
|
default = "▶";
|
||||||
|
mpv = "🎵";
|
||||||
|
};
|
||||||
|
status-icons = {paused = "⏸";};
|
||||||
|
};
|
||||||
|
"upower" = {
|
||||||
|
icon-size = 16;
|
||||||
|
format = "{percentage}";
|
||||||
|
hide-if-empty = true;
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-spacing = 20;
|
||||||
|
};
|
||||||
|
"power-profiles-daemon" = {
|
||||||
|
format = "{icon}";
|
||||||
|
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
||||||
|
tooltip = true;
|
||||||
|
format-icons = {
|
||||||
|
default = "";
|
||||||
|
performance = "";
|
||||||
|
balanced = "";
|
||||||
|
power-saver = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"wireplumber" = {
|
||||||
|
scroll-step = 3;
|
||||||
|
format = "{icon} {volume}%";
|
||||||
|
format-muted = "";
|
||||||
|
format-icons = ["" "" ""];
|
||||||
|
on-click = getExe pkgs.pwvucontrol;
|
||||||
|
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
||||||
|
};
|
||||||
|
"custom/notification" = {
|
||||||
|
tooltip = false;
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
notification = "";
|
||||||
|
none = "";
|
||||||
|
dnd-notification = "";
|
||||||
|
dnd-none = "";
|
||||||
|
};
|
||||||
|
return-type = "json";
|
||||||
|
exec-if = "which swaync-client";
|
||||||
|
exec = "swaync-client -swb";
|
||||||
|
on-click = "swaync-client -t -sw";
|
||||||
|
on-click-right = "swaync-client -d -sw";
|
||||||
|
escape = true;
|
||||||
|
};
|
||||||
|
"privacy" = {
|
||||||
|
icon-spacing = 2;
|
||||||
|
icon-size = 16;
|
||||||
|
transition-duration = 250;
|
||||||
|
screenshare = {
|
||||||
|
type = "screenshare";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-icon-size = 24;
|
||||||
|
};
|
||||||
|
audio-in = {
|
||||||
|
type = "audio-in";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-icon-size = 24;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"wlr/taskbar" = {
|
||||||
|
format = "{icon}";
|
||||||
|
icon-size = 20;
|
||||||
|
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
||||||
|
tooltip-format = "{title}";
|
||||||
|
on-click = "activate";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = ''
|
||||||
|
@define-color base00 #${colors.base00};
|
||||||
|
@define-color base01 #${colors.base01};
|
||||||
|
@define-color base02 #${colors.base02};
|
||||||
|
@define-color base03 #${colors.base03};
|
||||||
|
@define-color base04 #${colors.base04};
|
||||||
|
@define-color base05 #${colors.base05};
|
||||||
|
@define-color base06 #${colors.base06};
|
||||||
|
@define-color base07 #${colors.base07};
|
||||||
|
@define-color base08 #${colors.base08};
|
||||||
|
@define-color base09 #${colors.base09};
|
||||||
|
@define-color base0A #${colors.base0A};
|
||||||
|
@define-color base0B #${colors.base0B};
|
||||||
|
@define-color base0C #${colors.base0C};
|
||||||
|
@define-color base0D #${colors.base0D};
|
||||||
|
@define-color base0E #${colors.base0E};
|
||||||
|
@define-color base0F #${colors.base0F};
|
||||||
|
* {
|
||||||
|
font-family: ${config.stylix.fonts.sansSerif.name}, FontAwesome;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
window#waybar {
|
||||||
|
background-color: transparent;
|
||||||
|
color: @base05;
|
||||||
|
}
|
||||||
|
.modules-center {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.mpris.stopped {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.modules-left,
|
||||||
|
.modules-center,
|
||||||
|
.modules-right {
|
||||||
|
/* border-bottom-left-radius: 12px;
|
||||||
|
border-bottom-right-radius: 12px;
|
||||||
|
border-top-left-radius: 0px;
|
||||||
|
border-top-right-radius: 0px; */
|
||||||
|
background-color: @base00;
|
||||||
|
border-radius: 24px;
|
||||||
|
border: 3px solid @base0D;
|
||||||
|
color: @base05;
|
||||||
|
padding: 0 0.4em;
|
||||||
|
}
|
||||||
|
tooltip {
|
||||||
|
background: @base01;
|
||||||
|
border: 1px solid @base0E;
|
||||||
|
}
|
||||||
|
tooltip label {
|
||||||
|
color: @base05;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
box-shadow: inset 0 -3px transparent;
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
button:hover {
|
||||||
|
background: inherit;
|
||||||
|
box-shadow: inset 0 -3px transparent;
|
||||||
|
}
|
||||||
|
#mode {
|
||||||
|
background-color: rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: inset 0 -3px @base05;
|
||||||
|
}
|
||||||
|
#battery,
|
||||||
|
#backlight,
|
||||||
|
/* #workspaces,
|
||||||
|
#taskbar,
|
||||||
|
#privacy, */
|
||||||
|
#taskbar button,
|
||||||
|
#language,
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#backlight,
|
||||||
|
#wireplumber,
|
||||||
|
#workspaces button,
|
||||||
|
#custom-notification,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#power-profiles-daemon,
|
||||||
|
#privacy-item,
|
||||||
|
#custom-separator {
|
||||||
|
padding: 0 0.3em;
|
||||||
|
}
|
||||||
|
#tray button {
|
||||||
|
padding: 0 0.3em;
|
||||||
|
margin: 0 0.2em;
|
||||||
|
}
|
||||||
|
#workspaces button.active {
|
||||||
|
color: @base0D;
|
||||||
|
}
|
||||||
|
#taskbar button:hover {
|
||||||
|
box-shadow: transparent;
|
||||||
|
}
|
||||||
|
#taskbar.empty,
|
||||||
|
window#empty {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
color: @base09;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: steps(12);
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
#power-profiles-daemon.performance {
|
||||||
|
color: @base0D;
|
||||||
|
}
|
||||||
|
#power-profiles-daemon.balanced {
|
||||||
|
color: @base0B;
|
||||||
|
}
|
||||||
|
#power-profiles-daemon.power-saver {
|
||||||
|
color: @base0A;
|
||||||
|
}
|
||||||
|
label:focus {
|
||||||
|
background-color: #000000;
|
||||||
|
}
|
||||||
|
#tray > .passive {
|
||||||
|
-gtk-icon-effect: dim;
|
||||||
|
}
|
||||||
|
#tray > .needs-attention {
|
||||||
|
-gtk-icon-effect: highlight;
|
||||||
|
background-color: @base08;
|
||||||
|
}
|
||||||
|
#privacy-item.screenshare {
|
||||||
|
color: @base0C;
|
||||||
|
}
|
||||||
|
#privacy-item.audio-in {
|
||||||
|
color: @base0E;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
65
modules/home/desktop/hyprland/services/default.nix
Normal file
65
modules/home/desktop/hyprland/services/default.nix
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
{
|
||||||
|
# getExe,
|
||||||
|
perSystem,
|
||||||
|
# pkgs,
|
||||||
|
lockscreen,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
swaync = import ./swaync;
|
||||||
|
network-manager-applet.enable = true;
|
||||||
|
blueman-applet.enable = true;
|
||||||
|
playerctld.enable = true;
|
||||||
|
wpaperd.enable = true;
|
||||||
|
hyprpaper.enable = true;
|
||||||
|
copyq = {
|
||||||
|
enable = true;
|
||||||
|
package = perSystem.nixpkgs-stable.copyq;
|
||||||
|
};
|
||||||
|
gnome-keyring = {
|
||||||
|
enable = true;
|
||||||
|
components = ["secrets"];
|
||||||
|
};
|
||||||
|
gammastep = {
|
||||||
|
enable = true;
|
||||||
|
provider = "manual";
|
||||||
|
latitude = 49.6;
|
||||||
|
longitude = 36.1;
|
||||||
|
tray = true;
|
||||||
|
temperature = {
|
||||||
|
day = 6500;
|
||||||
|
night = 3000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
swayosd = {
|
||||||
|
enable = true;
|
||||||
|
topMargin = 0.8;
|
||||||
|
};
|
||||||
|
udiskie = {
|
||||||
|
enable = true;
|
||||||
|
automount = false;
|
||||||
|
notify = true;
|
||||||
|
tray = "auto";
|
||||||
|
};
|
||||||
|
hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
|
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||||
|
lock_cmd = "pidof hyprlock || hyprlock";
|
||||||
|
# unlock_cmd = "loginctl unlock-session";
|
||||||
|
};
|
||||||
|
listener = [
|
||||||
|
{
|
||||||
|
timeout = 600;
|
||||||
|
on-timeout = "pidof ${lockscreen} || ${lockscreen}";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 601;
|
||||||
|
on-timeout = "hyprctl dispatch dpms off";
|
||||||
|
on-resume = "hyprctl dispatch dpms on";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
177
modules/home/desktop/hyprland/services/swaync/default.nix
Normal file
177
modules/home/desktop/hyprland/services/swaync/default.nix
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
cssPriority = "user";
|
||||||
|
image-visibility = "when-available";
|
||||||
|
keyboard-shortcut = true;
|
||||||
|
relative-timestamps = true;
|
||||||
|
timeout = 5;
|
||||||
|
timeout-low = 5;
|
||||||
|
timeout-critical = 0;
|
||||||
|
script-fail-notify = true;
|
||||||
|
transition-time = 200;
|
||||||
|
|
||||||
|
# Layer settings
|
||||||
|
layer-shell = true;
|
||||||
|
layer = "overlay";
|
||||||
|
control-center-layer = "overlay";
|
||||||
|
|
||||||
|
# Notification settings
|
||||||
|
positionX = "right";
|
||||||
|
positionY = "top";
|
||||||
|
notification-2fa-action = true;
|
||||||
|
notification-inline-replies = false;
|
||||||
|
notification-icon-size = 32;
|
||||||
|
notification-body-image-height = 100;
|
||||||
|
notification-body-image-width = 200;
|
||||||
|
notification-window-width = 400;
|
||||||
|
|
||||||
|
# Control center settings
|
||||||
|
control-center-positionX = "right";
|
||||||
|
control-center-positionY = "top";
|
||||||
|
control-center-width = 500;
|
||||||
|
control-center-exclusive-zone = true;
|
||||||
|
fit-to-screen = true;
|
||||||
|
hide-on-action = true;
|
||||||
|
hide-on-clear = false;
|
||||||
|
|
||||||
|
# Widget settings
|
||||||
|
widgets = [
|
||||||
|
"title"
|
||||||
|
"dnd"
|
||||||
|
"notifications"
|
||||||
|
"mpris"
|
||||||
|
];
|
||||||
|
|
||||||
|
widget-config = {
|
||||||
|
title = {
|
||||||
|
text = "Notifications";
|
||||||
|
clear-all-button = true;
|
||||||
|
button-text = "Clear All";
|
||||||
|
};
|
||||||
|
dnd = {
|
||||||
|
text = "Do Not Disturb";
|
||||||
|
};
|
||||||
|
mpris = {
|
||||||
|
image-size = 96;
|
||||||
|
image-radius = 12;
|
||||||
|
blur = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = ''
|
||||||
|
/*** Global ***/
|
||||||
|
progress,
|
||||||
|
progressbar,
|
||||||
|
trough {
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-icon,
|
||||||
|
.image {
|
||||||
|
-gtk-icon-effect: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-action {
|
||||||
|
border-radius: 12px;
|
||||||
|
margin: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button {
|
||||||
|
margin: 24px;
|
||||||
|
padding: 0.2rem;
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** Notifications ***/
|
||||||
|
.notification-group.collapsed
|
||||||
|
.notification-row:not(:last-child)
|
||||||
|
.notification-action,
|
||||||
|
.notification-group.collapsed
|
||||||
|
.notification-row:not(:last-child)
|
||||||
|
.notification-default-action {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.trough {
|
||||||
|
margin: 4px;
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification,
|
||||||
|
.notification.low,
|
||||||
|
.notification.normal,
|
||||||
|
.notification.critical,
|
||||||
|
.control-center {
|
||||||
|
margin: 16px;
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications,
|
||||||
|
.notification-content {
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-list {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** Widgets ***/
|
||||||
|
/* Title widget */
|
||||||
|
.widget-title {
|
||||||
|
margin: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-title > label {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-title > button {
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DND Widget */
|
||||||
|
.widget-dnd {
|
||||||
|
margin: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > label {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch {
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch slider {
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mpris widget */
|
||||||
|
.widget-mpris .widget-mpris-player {
|
||||||
|
border-radius: 16px;
|
||||||
|
margin: 0.5rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-mpris .widget-mpris-player .widget-mpris-album-art {
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-mpris .widget-mpris-player .widget-mpris-title {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-mpris .widget-mpris-player .widget-mpris-subtitle {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-mpris .widget-mpris-player > box > button {
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 0.25rem;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
@ -1,22 +1,27 @@
|
|||||||
{
|
{
|
||||||
perSystem,
|
|
||||||
osConfig,
|
|
||||||
config,
|
config,
|
||||||
pkgs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
|
osConfig,
|
||||||
|
# perSystem,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.strings) removeSuffix;
|
inherit (lib) mkIf mkEnableOption mkForce getExe;
|
||||||
inherit (lib) mkIf mkEnableOption mkDefault mkForce getExe;
|
|
||||||
inherit (osConfig.module.stylix) theme;
|
|
||||||
inherit (osConfig.networking) hostName;
|
inherit (osConfig.networking) hostName;
|
||||||
|
|
||||||
cfg = config.desktop.niri;
|
cfg = config.desktop.niri;
|
||||||
|
|
||||||
ifLaptop = mkIf (hostName != "dunamis");
|
ifLaptop = mkIf (hostName != "dunamis");
|
||||||
|
|
||||||
|
commonArgs = {
|
||||||
|
inherit config inputs lib osConfig pkgs;
|
||||||
launcher = getExe pkgs.walker;
|
launcher = getExe pkgs.walker;
|
||||||
lockscreen = getExe pkgs.gtklock;
|
lockscreen = getExe pkgs.gtklock;
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = with inputs; [
|
||||||
./programs
|
walker.homeManagerModules.default
|
||||||
];
|
];
|
||||||
options = {
|
options = {
|
||||||
desktop.niri.enable =
|
desktop.niri.enable =
|
||||||
@ -28,6 +33,24 @@ in {
|
|||||||
wpaperd.enable = true;
|
wpaperd.enable = true;
|
||||||
qt.enable = false;
|
qt.enable = false;
|
||||||
};
|
};
|
||||||
|
stylix.iconTheme = {
|
||||||
|
enable = true;
|
||||||
|
light = "Papirus-Light";
|
||||||
|
dark = "Papirus-Dark";
|
||||||
|
package = let
|
||||||
|
inherit (lib.strings) hasPrefix;
|
||||||
|
inherit (osConfig.module.stylix) theme;
|
||||||
|
color =
|
||||||
|
if (hasPrefix "rose-pine" theme)
|
||||||
|
then "indigo"
|
||||||
|
else if (hasPrefix "nord" theme)
|
||||||
|
then "nordic"
|
||||||
|
else if (hasPrefix "s" theme)
|
||||||
|
then "teal"
|
||||||
|
else null;
|
||||||
|
in
|
||||||
|
pkgs.papirus-icon-theme.override {inherit color;};
|
||||||
|
};
|
||||||
dconf.settings = {
|
dconf.settings = {
|
||||||
"org/gnome/desktop/wm/preferences" = {
|
"org/gnome/desktop/wm/preferences" = {
|
||||||
button-layout = "icon:close";
|
button-layout = "icon:close";
|
||||||
@ -40,45 +63,26 @@ in {
|
|||||||
else lib.mkDefault "prefer-light";
|
else lib.mkDefault "prefer-light";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
iconTheme = let
|
|
||||||
papirusPackage =
|
|
||||||
if (lib.strings.hasPrefix "rose-pine" osConfig.module.stylix.theme)
|
|
||||||
then pkgs.papirus-icon-theme.override {color = "indigo";}
|
|
||||||
else if (lib.strings.hasPrefix "nord" osConfig.module.stylix.theme)
|
|
||||||
then pkgs.papirus-icon-theme.override {color = "nordic";}
|
|
||||||
else pkgs.papirus-icon-theme;
|
|
||||||
in {
|
|
||||||
name =
|
|
||||||
if config.stylix.polarity == "dark"
|
|
||||||
then "Papirus-Dark"
|
|
||||||
else "Papirus-Light";
|
|
||||||
package = papirusPackage;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme.name = "gtk3";
|
platformTheme.name = "gtk3";
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile.niri = import ./niri.nix {inherit config hostName launcher lockscreen;};
|
programs.walker = import ./programs/walker commonArgs;
|
||||||
services = import ./services {inherit pkgs lockscreen getExe perSystem;};
|
programs.waybar = import ./programs/waybar commonArgs;
|
||||||
|
services = import ./services commonArgs;
|
||||||
|
|
||||||
home.packages = with pkgs;
|
home.packages = with pkgs;
|
||||||
[
|
[
|
||||||
# gui libadwaita apps
|
# gui libadwaita apps
|
||||||
celluloid # mpv gui in libadwaita
|
celluloid # mpv gui in libadwaita
|
||||||
|
gnome-text-editor
|
||||||
helvum # pipewire patchbay in rust
|
helvum # pipewire patchbay in rust
|
||||||
junction # app chooser
|
junction # app chooser
|
||||||
loupe # image viewer and editor in rust
|
loupe # image viewer and editor in rust
|
||||||
mission-center # task manager in rust (partly)
|
|
||||||
nautilus # file manager
|
nautilus # file manager
|
||||||
overskride # bluetooth gui in rust
|
|
||||||
papers # pdf reader in rust
|
papers # pdf reader in rust
|
||||||
pika-backup # borg gui in rust
|
|
||||||
pwvucontrol # pipewire gui in rust
|
pwvucontrol # pipewire gui in rust
|
||||||
sonusmix # pipewire routing tool in rust
|
|
||||||
wdisplays # wlroots display configurator
|
wdisplays # wlroots display configurator
|
||||||
]
|
]
|
||||||
++ [
|
++ [
|
||||||
@ -91,6 +95,10 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
xdg = {
|
xdg = {
|
||||||
|
configFile = {
|
||||||
|
niri = import ./niri.nix commonArgs;
|
||||||
|
"mimeapps.list".force = true;
|
||||||
|
};
|
||||||
mime.enable = true;
|
mime.enable = true;
|
||||||
mimeApps = {
|
mimeApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -119,12 +127,11 @@ in {
|
|||||||
};
|
};
|
||||||
systemd.user = {
|
systemd.user = {
|
||||||
settings.Manager.DefaultEnvironment = {
|
settings.Manager.DefaultEnvironment = {
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
DISPLAY = ":123";
|
DISPLAY = ":123";
|
||||||
};
|
};
|
||||||
targets.tray.Unit.Description = "Home Manager System Tray"; # workaround for udiskie
|
targets.tray.Unit.Description = "Home Manager System Tray"; # workaround for udiskie
|
||||||
services = let
|
services = let
|
||||||
mkGraphicalService = config: graphicalService // config;
|
mkGraphicalService = config: lib.attrsets.recursiveUpdate graphicalService config;
|
||||||
graphicalService = {
|
graphicalService = {
|
||||||
Install.WantedBy = ["niri.service"];
|
Install.WantedBy = ["niri.service"];
|
||||||
Unit = {
|
Unit = {
|
||||||
@ -138,38 +145,50 @@ in {
|
|||||||
RestartSec = 1;
|
RestartSec = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
udiskie = mkGraphicalService {};
|
lib.mkMerge [
|
||||||
waybar = mkGraphicalService {};
|
{
|
||||||
|
copyq = mkGraphicalService {Service.Environment = mkForce "QT_QPA_PLATFORM=wayland";};
|
||||||
network-manager-applet = mkGraphicalService {};
|
network-manager-applet = mkGraphicalService {};
|
||||||
copyq = mkGraphicalService {
|
udiskie = mkGraphicalService {};
|
||||||
Service =
|
walker = mkGraphicalService {};
|
||||||
graphicalService.Service
|
waybar = mkGraphicalService {};
|
||||||
|
wpaperd =
|
||||||
|
mkGraphicalService {}
|
||||||
// {
|
// {
|
||||||
Environment = mkForce "QT_QPA_PLATFORM=wayland";
|
Service.TimeoutStopSec = mkForce "1";
|
||||||
};
|
Service.Restart = mkForce "always";
|
||||||
};
|
};
|
||||||
xwayland-satellite = mkGraphicalService {
|
xwayland-satellite = mkGraphicalService {
|
||||||
Service =
|
Service = {
|
||||||
graphicalService.Service
|
|
||||||
// {
|
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
ExecStart = getExe pkgs.xwayland-satellite + " :123";
|
ExecStart = getExe pkgs.xwayland-satellite + " :123";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
wpaperd = mkGraphicalService {
|
# gnome-polkit-agent = mkGraphicalService {
|
||||||
Service =
|
# Service = {
|
||||||
mkDefault graphicalService.Service;
|
# Type = "simple";
|
||||||
};
|
# ExecStart = pkgs.polkit_gnome + "/libexec/polkit-gnome-authentication-agent-1";
|
||||||
gnome-polkit-agent = mkGraphicalService {
|
# };
|
||||||
Service =
|
# };
|
||||||
graphicalService.Service
|
}
|
||||||
// {
|
(lib.mkIf (hostName == "morphius") {
|
||||||
|
lisgd = mkGraphicalService {
|
||||||
|
Service = {
|
||||||
|
# Group = "input";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
ExecStart = pkgs.polkit_gnome + "/libexec/polkit-gnome-authentication-agent-1";
|
ExecStart =
|
||||||
};
|
"${pkgs.lisgd}/bin/lisgd"
|
||||||
|
+ " -d /dev/input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-event"
|
||||||
|
+ " -g \"1,DU,TL,*,P,niri msg action toggle-overview\""
|
||||||
|
+ " -g \"3,UD,T,*,P,niri msg action focus-workspace-up\""
|
||||||
|
+ " -g \"3,DU,B,*,P,niri msg action focus-workspace-down\""
|
||||||
|
+ " -g \"3,LR,L,*,P,niri msg action focus-column-left\""
|
||||||
|
+ " -g \"3,RL,R,*,P,niri msg action focus-column-right\"";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
hostName,
|
osConfig,
|
||||||
launcher,
|
launcher,
|
||||||
lockscreen,
|
lockscreen,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (config.lib.stylix) colors;
|
inherit (config.lib.stylix) colors;
|
||||||
inherit (config.stylix) cursor;
|
inherit (config.stylix) cursor;
|
||||||
|
inherit (osConfig.networking) hostName;
|
||||||
|
|
||||||
keyboard =
|
keyboard =
|
||||||
if hostName == "eldrid"
|
if hostName == "eldrid"
|
||||||
then "chromeos"
|
then "chromeos"
|
||||||
@ -91,74 +93,40 @@ in {
|
|||||||
in ''
|
in ''
|
||||||
environment {
|
environment {
|
||||||
DISPLAY ":123"
|
DISPLAY ":123"
|
||||||
QT_QPA_PLATFORMTHEME "gtk3"
|
CLUTTER_BACKEND "wayland"
|
||||||
|
GDK_BACKEND "wayland"
|
||||||
MOZ_ENABLE_WAYLAND "1"
|
MOZ_ENABLE_WAYLAND "1"
|
||||||
MOZ_WEBRENDER "1"
|
MOZ_WEBRENDER "1"
|
||||||
GDK_BACKEND "wayland"
|
|
||||||
QT_QPA_PLATFORM "wayland"
|
QT_QPA_PLATFORM "wayland"
|
||||||
XDG_SESSION_TYPE "wayland"
|
|
||||||
CLUTTER_BACKEND "wayland"
|
|
||||||
SDL_VIDEODRIVER "wayland"
|
SDL_VIDEODRIVER "wayland"
|
||||||
|
XDG_SESSION_TYPE "wayland"
|
||||||
}
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
keyboard {
|
keyboard {
|
||||||
xkb {
|
xkb {
|
||||||
layout "us,ua"
|
layout "us,ua"
|
||||||
${
|
variant "colemak_dh_ortho,"
|
||||||
if (hostName == "dunamis" || hostName == "legion")
|
|
||||||
then "// variant \"colemak_dh_ortho,\""
|
|
||||||
else "variant \"colemak_dh_ortho,\""
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
repeat-delay 200
|
repeat-delay 200
|
||||||
repeat-rate 50
|
repeat-rate 50
|
||||||
track-layout "global"
|
track-layout "window"
|
||||||
}
|
}
|
||||||
touchpad {
|
touchpad {
|
||||||
// off
|
|
||||||
tap
|
tap
|
||||||
// dwt
|
|
||||||
// dwtp
|
|
||||||
natural-scroll
|
natural-scroll
|
||||||
accel-speed 0.2
|
accel-speed 0.2
|
||||||
accel-profile "flat"
|
accel-profile "flat"
|
||||||
// scroll-method "two-finger"
|
|
||||||
// disabled-on-external-mouse
|
|
||||||
}
|
}
|
||||||
mouse {
|
mouse {
|
||||||
// off
|
|
||||||
// natural-scroll
|
|
||||||
accel-speed 0.0
|
accel-speed 0.0
|
||||||
accel-profile "flat"
|
accel-profile "flat"
|
||||||
// scroll-method "no-scroll"
|
}
|
||||||
|
touch {
|
||||||
|
map-to-output "eDP-1"
|
||||||
}
|
}
|
||||||
warp-mouse-to-focus
|
warp-mouse-to-focus
|
||||||
// focus-follows-mouse
|
workspace-auto-back-and-forth
|
||||||
}
|
|
||||||
output "eDP-1" {
|
|
||||||
// off
|
|
||||||
scale 1.2
|
|
||||||
transform "normal"
|
|
||||||
// position x=1920 y=0
|
|
||||||
}
|
|
||||||
output "Samsung Electric Company S24R65x H4TMA03291" {
|
|
||||||
position x=0 y=0
|
|
||||||
variable-refresh-rate
|
|
||||||
}
|
|
||||||
output "Philips Consumer Electronics Company 27M2N5500 UK02418033254" {
|
|
||||||
mode "2560x1440@${
|
|
||||||
if hostName == "legion"
|
|
||||||
then "144.001"
|
|
||||||
else "180.000"
|
|
||||||
}"
|
|
||||||
variable-refresh-rate
|
|
||||||
position x=0 y=0
|
|
||||||
scale 1.33
|
|
||||||
}
|
|
||||||
output "PNP(AOC) 27V2G5 0x0000026C" {
|
|
||||||
position x=1920 y=0
|
|
||||||
mode "1920x1080@74.973"
|
|
||||||
variable-refresh-rate
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cursor {
|
cursor {
|
||||||
@ -166,44 +134,62 @@ in {
|
|||||||
xcursor-size ${toString cursor.size}
|
xcursor-size ${toString cursor.size}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hotkey-overlay {
|
||||||
|
skip-at-startup
|
||||||
|
}
|
||||||
|
|
||||||
|
prefer-no-csd
|
||||||
|
|
||||||
|
screenshot-path "${xdgPics}/screenshots/screenshot-%Y-%m-%d-%H-%M-%S.png"
|
||||||
|
|
||||||
|
animations {
|
||||||
|
slowdown 0.5
|
||||||
|
}
|
||||||
|
|
||||||
layout {
|
layout {
|
||||||
gaps 6
|
gaps 3
|
||||||
|
|
||||||
|
// background-color "#${colors.base02}"
|
||||||
|
background-color "transparent"
|
||||||
center-focused-column "never" // "on-overflow"
|
center-focused-column "never" // "on-overflow"
|
||||||
|
default-column-width { proportion 1.0; }
|
||||||
|
|
||||||
preset-column-widths {
|
preset-column-widths {
|
||||||
proportion 0.33333
|
proportion 0.33333
|
||||||
proportion 0.66667
|
proportion 0.66667
|
||||||
}
|
}
|
||||||
|
|
||||||
// default-column-width { proportion 0.9; }
|
struts {
|
||||||
default-column-width { proportion 0.5; }
|
left 36
|
||||||
|
right 36
|
||||||
|
}
|
||||||
|
|
||||||
tab-indicator {
|
tab-indicator {
|
||||||
active-color "#${colors.base04}"
|
active-color "#${colors.base04}"
|
||||||
inactive-color "#${colors.base03}"
|
inactive-color "#${colors.base03}"
|
||||||
corner-radius 4
|
corner-radius 6
|
||||||
gap 6
|
gap 3
|
||||||
gaps-between-tabs 3
|
gaps-between-tabs 3
|
||||||
length total-proportion=0.3
|
// length total-proportion=0.3
|
||||||
place-within-column
|
place-within-column
|
||||||
position "left"
|
position "left"
|
||||||
width 6
|
width 6
|
||||||
}
|
}
|
||||||
focus-ring {
|
focus-ring {
|
||||||
// off
|
width 1
|
||||||
width 3
|
active-color "#${colors.base0D}"
|
||||||
active-gradient from="#${colors.base0D}" to="#${colors.base0F}" angle=40 relative-to="workspace-view"
|
|
||||||
inactive-color "#${colors.base03}"
|
inactive-color "#${colors.base03}"
|
||||||
|
urgent-color "#${colors.base08}"
|
||||||
}
|
}
|
||||||
struts {
|
border {
|
||||||
left 33
|
off
|
||||||
right 33
|
width 1
|
||||||
|
active-color "#${colors.base0D}"
|
||||||
|
inactive-color "#${colors.base03}"
|
||||||
|
urgent-color "#${colors.base08}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
prefer-no-csd
|
|
||||||
|
|
||||||
hotkey-overlay {
|
|
||||||
skip-at-startup
|
|
||||||
}
|
|
||||||
window-rule {
|
window-rule {
|
||||||
geometry-corner-radius 12
|
geometry-corner-radius 12
|
||||||
clip-to-geometry true
|
clip-to-geometry true
|
||||||
@ -220,17 +206,22 @@ in {
|
|||||||
active-color "#${colors.base0F}"
|
active-color "#${colors.base0F}"
|
||||||
inactive-color "#${colors.base03}"
|
inactive-color "#${colors.base03}"
|
||||||
}
|
}
|
||||||
shadow {
|
|
||||||
on
|
|
||||||
color "#${colors.base0F}"
|
|
||||||
inactive-color "#${colors.base03}"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
screenshot-path "${xdgPics}/screenshots/screenshot-%Y-%m-%d-%H-%M-%S.png"
|
layer-rule {
|
||||||
|
match namespace="^wpaperd.*$"
|
||||||
|
place-within-backdrop true
|
||||||
|
}
|
||||||
|
overview {
|
||||||
|
workspace-shadow {
|
||||||
|
off
|
||||||
|
}
|
||||||
|
}
|
||||||
|
layer-rule {
|
||||||
|
match namespace="waybar"
|
||||||
|
match at-startup=true
|
||||||
|
|
||||||
animations {
|
opacity 0.99 // fixes the black fill
|
||||||
slowdown 0.8
|
|
||||||
}
|
}
|
||||||
|
|
||||||
window-rule {
|
window-rule {
|
||||||
@ -245,6 +236,7 @@ in {
|
|||||||
}
|
}
|
||||||
window-rule {
|
window-rule {
|
||||||
match app-id="re.sonny.Junction"
|
match app-id="re.sonny.Junction"
|
||||||
|
match app-id="com.github.hluk.copyq"
|
||||||
open-floating true
|
open-floating true
|
||||||
open-focused true
|
open-focused true
|
||||||
}
|
}
|
||||||
@ -258,6 +250,7 @@ in {
|
|||||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
||||||
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
||||||
match app-id=r#"^Bitwarden$"#
|
match app-id=r#"^Bitwarden$"#
|
||||||
|
match app-id="io.github.kukuruzka165.materialgram"
|
||||||
match app-id="org.telegram.desktop"
|
match app-id="org.telegram.desktop"
|
||||||
match app-id="org.signal.Signal"
|
match app-id="org.signal.Signal"
|
||||||
match app-id="WebCord"
|
match app-id="WebCord"
|
||||||
@ -265,6 +258,7 @@ in {
|
|||||||
block-out-from "screencast"
|
block-out-from "screencast"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
binds {
|
binds {
|
||||||
Mod+Shift+Slash { show-hotkey-overlay; }
|
Mod+Shift+Slash { show-hotkey-overlay; }
|
||||||
|
|
||||||
@ -276,6 +270,7 @@ in {
|
|||||||
Mod+Shift+T { set-column-width "67%"; }
|
Mod+Shift+T { set-column-width "67%"; }
|
||||||
Mod+V { toggle-column-tabbed-display; }
|
Mod+V { toggle-column-tabbed-display; }
|
||||||
Mod+G { switch-focus-between-floating-and-tiling; }
|
Mod+G { switch-focus-between-floating-and-tiling; }
|
||||||
|
Mod+X { spawn "pkill" "-SIGUSR1" "waybar"; } // hide/show waybar
|
||||||
|
|
||||||
Mod+Ctrl+Comma { consume-or-expel-window-left; }
|
Mod+Ctrl+Comma { consume-or-expel-window-left; }
|
||||||
Mod+Ctrl+Period { consume-or-expel-window-right; }
|
Mod+Ctrl+Period { consume-or-expel-window-right; }
|
||||||
@ -284,6 +279,8 @@ in {
|
|||||||
Mod+Ctrl+M { fullscreen-window; }
|
Mod+Ctrl+M { fullscreen-window; }
|
||||||
Mod+Ctrl+G { toggle-window-floating; }
|
Mod+Ctrl+G { toggle-window-floating; }
|
||||||
|
|
||||||
|
Mod+Ctrl+Shift+M { toggle-windowed-fullscreen; }
|
||||||
|
|
||||||
Mod+Minus { set-column-width "-10%"; }
|
Mod+Minus { set-column-width "-10%"; }
|
||||||
Mod+Equal { set-column-width "+10%"; }
|
Mod+Equal { set-column-width "+10%"; }
|
||||||
Mod+Comma { set-column-width "-10%"; }
|
Mod+Comma { set-column-width "-10%"; }
|
||||||
@ -291,12 +288,15 @@ in {
|
|||||||
Mod+Shift+Comma { set-window-height "-10%"; }
|
Mod+Shift+Comma { set-window-height "-10%"; }
|
||||||
Mod+Shift+Period { set-window-height "+10%"; }
|
Mod+Shift+Period { set-window-height "+10%"; }
|
||||||
|
|
||||||
Mod+Escape { switch-layout "next"; }
|
Mod+Space { switch-layout "next"; }
|
||||||
|
|
||||||
|
Mod+Ctrl+Space repeat=false { toggle-overview; }
|
||||||
|
|
||||||
Mod+Return repeat=false { spawn "sh" "-c" "$TERMINAL"; }
|
Mod+Return repeat=false { spawn "sh" "-c" "$TERMINAL"; }
|
||||||
Mod+Space repeat=false { spawn "${launcher}"; }
|
Mod+BackSpace repeat=false { spawn "${launcher}"; }
|
||||||
|
Mod+A repeat=false { spawn "${launcher}"; }
|
||||||
Mod+Ctrl+L repeat=false { spawn "${lockscreen}"; }
|
Mod+Ctrl+L repeat=false { spawn "${lockscreen}"; }
|
||||||
Mod+Ctrl+V repeat=false { spawn "copyq" "toggle"; }
|
Mod+Ctrl+V repeat=false { spawn "copyq" "menu"; }
|
||||||
|
|
||||||
Mod+Shift+W repeat=false { spawn "walker" "-m" "windows"; }
|
Mod+Shift+W repeat=false { spawn "walker" "-m" "windows"; }
|
||||||
|
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
osConfig,
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf mkDefault getExe;
|
|
||||||
inherit (config.lib.stylix) colors;
|
|
||||||
inherit (osConfig.networking) hostName;
|
|
||||||
ifLaptop = mkIf (hostName != "dunamis");
|
|
||||||
in {
|
|
||||||
imports = with inputs; [
|
|
||||||
walker.homeManagerModules.default
|
|
||||||
];
|
|
||||||
# programs.fuzzel = import ./fuzzel {inherit config mkDefault;};
|
|
||||||
programs.walker = import ./walker {inherit config inputs pkgs;};
|
|
||||||
programs.waybar = import ./waybar {inherit colors config getExe ifLaptop pkgs;};
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
mkDefault,
|
lib,
|
||||||
}: {
|
}: {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
@ -15,7 +15,7 @@
|
|||||||
match-mode = "fuzzy";
|
match-mode = "fuzzy";
|
||||||
icon-theme = config.dconf.settings."org/gnome/desktop/interface".icon-theme;
|
icon-theme = config.dconf.settings."org/gnome/desktop/interface".icon-theme;
|
||||||
};
|
};
|
||||||
border = mkDefault {
|
border = lib.mkDefault {
|
||||||
width = 3;
|
width = 3;
|
||||||
radius = 12;
|
radius = 12;
|
||||||
};
|
};
|
||||||
|
@ -146,32 +146,30 @@
|
|||||||
h_align = "center";
|
h_align = "center";
|
||||||
v_align = "center";
|
v_align = "center";
|
||||||
box = {
|
box = {
|
||||||
width = 450;
|
|
||||||
h_align = "center";
|
h_align = "center";
|
||||||
v_align = "center";
|
v_align = "center";
|
||||||
# spacing = 12;
|
|
||||||
orientation = "vertical";
|
orientation = "vertical";
|
||||||
search = {
|
search = {
|
||||||
margins = {
|
|
||||||
start = 8;
|
|
||||||
top = 8;
|
|
||||||
end = 8;
|
|
||||||
bottom = 0;
|
|
||||||
};
|
|
||||||
h_align = "top";
|
h_align = "top";
|
||||||
|
margins = {
|
||||||
|
start = 3;
|
||||||
|
top = 3;
|
||||||
|
end = 3;
|
||||||
|
bottom = 3;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
scroll = {
|
scroll = {
|
||||||
overlay_scrolling = true;
|
overlay_scrolling = true;
|
||||||
list = {
|
list = {
|
||||||
margins = {
|
margins = {
|
||||||
bottom = 8;
|
bottom = 3;
|
||||||
top = 4;
|
top = 0;
|
||||||
start = 8;
|
start = 3;
|
||||||
end = 8;
|
end = 3;
|
||||||
};
|
};
|
||||||
item = {
|
item = {
|
||||||
icon.theme = "${config.gtk.iconTheme.name}";
|
icon.theme = "${config.gtk.iconTheme.name}";
|
||||||
spacing = 4;
|
spacing = 3;
|
||||||
activation_label = {
|
activation_label = {
|
||||||
x_align = 0.5;
|
x_align = 0.5;
|
||||||
y_align = 0.5;
|
y_align = 0.5;
|
||||||
@ -230,20 +228,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#window {
|
#window {
|
||||||
background: none;
|
background: @base00;
|
||||||
color: @base05;
|
color: @base05;
|
||||||
|
border-radius: 12px;
|
||||||
|
border: 1px solid @base0D;
|
||||||
}
|
}
|
||||||
|
|
||||||
#box {
|
#box {
|
||||||
border-radius: 20px;
|
|
||||||
border-width: 4px;
|
|
||||||
border-color: @base0D;
|
|
||||||
background: @base00;
|
background: @base00;
|
||||||
}
|
}
|
||||||
|
|
||||||
#search {
|
#search {
|
||||||
background: @base01;
|
background: @base01;
|
||||||
border-radius: 12px 12px 6px 6px;
|
border-radius: 9px;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,12 +249,12 @@
|
|||||||
#typeahead {
|
#typeahead {
|
||||||
background: none;
|
background: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
border-radius: 12px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#input > *:first-child,
|
#input > *:first-child,
|
||||||
#typeahead > *:first-child {
|
#typeahead > *:first-child {
|
||||||
margin-right: 12px;
|
margin-right: 3px;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,8 +267,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#list {
|
#list {
|
||||||
padding: 8px;
|
padding: 3px;
|
||||||
border-radius: 6px 6px 12px 12px;
|
border-radius: 9px;
|
||||||
background: @base01;
|
background: @base01;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,7 +279,7 @@
|
|||||||
child:selected,
|
child:selected,
|
||||||
child:hover {
|
child:hover {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
border-radius: 8px;
|
border-radius: 6px;
|
||||||
background: @base02;
|
background: @base02;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,84 +1,54 @@
|
|||||||
{
|
{
|
||||||
colors,
|
|
||||||
config,
|
config,
|
||||||
getExe,
|
lib,
|
||||||
ifLaptop,
|
osConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
launcher,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
inherit (config.lib.stylix) colors;
|
||||||
|
|
||||||
|
ifLaptop = lib.mkIf (osConfig.networking.hostName != "dunamis");
|
||||||
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd = {
|
systemd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
target = "graphical-session.target";
|
target = "graphical-session.target";
|
||||||
};
|
};
|
||||||
settings = {
|
settings.bottom = {
|
||||||
bar-0 = {
|
|
||||||
# layer = "top";
|
|
||||||
position = "bottom";
|
position = "bottom";
|
||||||
height = 24;
|
height = 33;
|
||||||
spacing = 6;
|
spacing = 0;
|
||||||
margin-left = 33 + 3;
|
# margin-left = 36 + 3;
|
||||||
margin-right = 33 + 3;
|
# margin-right = 36 + 3;
|
||||||
margin-bottom = 3;
|
# margin-bottom = 3;
|
||||||
reload_style_on_change = true;
|
|
||||||
modules-left = [
|
modules-left = [
|
||||||
"niri/language"
|
"custom/launcher"
|
||||||
"niri/workspaces"
|
|
||||||
"wlr/taskbar"
|
"wlr/taskbar"
|
||||||
|
# "privacy"
|
||||||
];
|
];
|
||||||
modules-center = ["clock"];
|
|
||||||
modules-right = [
|
modules-right = [
|
||||||
(ifLaptop "group/laptop")
|
"niri/workspaces"
|
||||||
"wireplumber"
|
"niri/language"
|
||||||
"tray"
|
|
||||||
"privacy"
|
|
||||||
(ifLaptop "power-profiles-daemon")
|
|
||||||
"idle_inhibitor"
|
|
||||||
"custom/notification"
|
|
||||||
];
|
];
|
||||||
"niri/workspaces" = {
|
"niri/workspaces" = {
|
||||||
format = "{index}";
|
format = "{index}";
|
||||||
format-icons = {
|
|
||||||
"1" = "൧";
|
|
||||||
"2" = "൨";
|
|
||||||
"3" = "൩";
|
|
||||||
"4" = "൪";
|
|
||||||
"5" = "൫";
|
|
||||||
"6" = "൬";
|
|
||||||
"7" = "൭";
|
|
||||||
"8" = "൮";
|
|
||||||
"9" = "൯";
|
|
||||||
"10" = "൰";
|
|
||||||
general = "";
|
|
||||||
web = "";
|
|
||||||
chat = "";
|
|
||||||
code = "";
|
|
||||||
uni = "";
|
|
||||||
games = "";
|
|
||||||
system = "";
|
|
||||||
media = "";
|
|
||||||
tray = "";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
"niri/language" = {
|
"niri/language" = {
|
||||||
format = "{}";
|
format = "{}";
|
||||||
format-en = "🇺🇸";
|
format-en = "🇺🇸";
|
||||||
format-uk = "🇺🇦";
|
format-uk = "🇺🇦";
|
||||||
};
|
};
|
||||||
"custom/separator" = {
|
|
||||||
format = "";
|
|
||||||
interval = "once";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"group/laptop" = {
|
"group/laptop" = {
|
||||||
orientation = "inherit";
|
orientation = "inherit";
|
||||||
modules = [
|
modules = [
|
||||||
"battery"
|
|
||||||
"backlight"
|
"backlight"
|
||||||
|
"battery"
|
||||||
|
"power-profiles-daemon"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"backlight" = {
|
backlight = {
|
||||||
format = "{icon} {percent}%";
|
format = "{percent}% {icon}";
|
||||||
format-icons = [
|
format-icons = [
|
||||||
""
|
""
|
||||||
""
|
""
|
||||||
@ -89,21 +59,22 @@
|
|||||||
""
|
""
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"idle_inhibitor" = {
|
idle_inhibitor = {
|
||||||
format = "{icon}";
|
format = "{icon}";
|
||||||
format-icons = {
|
format-icons = {
|
||||||
activated = "";
|
activated = "";
|
||||||
deactivated = "";
|
deactivated = "";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"tray" = {
|
tray = {
|
||||||
icon-size = 20;
|
icon-size = 16;
|
||||||
spacing = 6;
|
spacing = 6;
|
||||||
};
|
};
|
||||||
"clock" = {
|
clock = {
|
||||||
interval = 1;
|
interval = 1;
|
||||||
format = "{:%H:%M:%S}";
|
format = "{:%R}";
|
||||||
tooltip-format = "{:%d.%m.%Y}";
|
tooltip = true;
|
||||||
|
tooltip-format = "{:%B %d, %A}";
|
||||||
};
|
};
|
||||||
battery = {
|
battery = {
|
||||||
states = {
|
states = {
|
||||||
@ -111,32 +82,36 @@
|
|||||||
warning = 30;
|
warning = 30;
|
||||||
critical = 15;
|
critical = 15;
|
||||||
};
|
};
|
||||||
format = "{icon} {capacity}%";
|
format = "{capacity}% {icon}";
|
||||||
format-full = " {capacity}%";
|
format-full = "{capacity}% ";
|
||||||
format-charging = " {capacity}%";
|
format-charging = "{capacity}% ";
|
||||||
format-plugged = " {capacity}%";
|
format-plugged = "{capacity}% ";
|
||||||
format-alt = "{icon} {time}";
|
format-alt = "{icon} {time}";
|
||||||
format-icons = ["" "" "" "" "" "" "" "" "" ""];
|
format-icons = ["" "" "" "" "" "" "" "" "" ""];
|
||||||
};
|
};
|
||||||
mpris = {
|
memory = {
|
||||||
format = "{player_icon} {dynamic}";
|
format = "{used:0.1f}G ";
|
||||||
format-paused = "{status_icon} <i>{dynamic}</i>";
|
tooltip-format = ''
|
||||||
playing-len = 30;
|
RAM: {used:0.1f}G/{total:0.1f}G ({percentage}%)
|
||||||
playing-paused = 30;
|
Swap: {swapUsed:0.1f}G/{swapTotal:0.1f}G ({swapPercentage}%)'';
|
||||||
player-icons = {
|
|
||||||
default = "▶";
|
|
||||||
mpv = "🎵";
|
|
||||||
};
|
};
|
||||||
status-icons = {paused = "⏸";};
|
network = {
|
||||||
|
format = "{bandwidthDownBits} | {bandwidthUpBits} ";
|
||||||
|
interval = 3;
|
||||||
|
tooltip = false;
|
||||||
};
|
};
|
||||||
"upower" = {
|
cpu = {
|
||||||
|
format = "{usage}% ";
|
||||||
|
interval = 3;
|
||||||
|
};
|
||||||
|
upower = {
|
||||||
icon-size = 16;
|
icon-size = 16;
|
||||||
format = "{percentage}";
|
format = "{percentage}";
|
||||||
hide-if-empty = true;
|
hide-if-empty = true;
|
||||||
tooltip = true;
|
tooltip = true;
|
||||||
tooltip-spacing = 20;
|
tooltip-spacing = 20;
|
||||||
};
|
};
|
||||||
"power-profiles-daemon" = {
|
power-profiles-daemon = {
|
||||||
format = "{icon}";
|
format = "{icon}";
|
||||||
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
||||||
tooltip = true;
|
tooltip = true;
|
||||||
@ -147,14 +122,19 @@
|
|||||||
power-saver = "";
|
power-saver = "";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"wireplumber" = {
|
wireplumber = {
|
||||||
scroll-step = 3;
|
scroll-step = 3;
|
||||||
format = "{icon} {volume}%";
|
format = "{volume}% {icon}";
|
||||||
format-muted = "";
|
format-muted = "";
|
||||||
format-icons = ["" "" ""];
|
format-icons = ["" "" ""];
|
||||||
on-click = getExe pkgs.pwvucontrol;
|
on-click = lib.getExe pkgs.pwvucontrol;
|
||||||
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
||||||
};
|
};
|
||||||
|
"custom/launcher" = {
|
||||||
|
format = "";
|
||||||
|
on-click = launcher;
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
"custom/notification" = {
|
"custom/notification" = {
|
||||||
tooltip = false;
|
tooltip = false;
|
||||||
format = "{icon}";
|
format = "{icon}";
|
||||||
@ -172,7 +152,7 @@
|
|||||||
escape = true;
|
escape = true;
|
||||||
};
|
};
|
||||||
"privacy" = {
|
"privacy" = {
|
||||||
icon-spacing = 2;
|
icon-spacing = 0;
|
||||||
icon-size = 16;
|
icon-size = 16;
|
||||||
transition-duration = 250;
|
transition-duration = 250;
|
||||||
screenshare = {
|
screenshare = {
|
||||||
@ -187,143 +167,371 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
"wlr/taskbar" = {
|
"wlr/taskbar" = {
|
||||||
format = "{icon}";
|
format = "{icon} {name}";
|
||||||
icon-size = 20;
|
icon-size = 16;
|
||||||
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
||||||
tooltip-format = "{title}";
|
tooltip-format = "{title}";
|
||||||
on-click = "activate";
|
on-click = "activate";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
settings.top = {
|
||||||
|
position = "top";
|
||||||
|
height = 33;
|
||||||
|
spacing = 0;
|
||||||
|
# margin-left = 36 + 3;
|
||||||
|
# margin-right = 36 + 3;
|
||||||
|
# margin-top = 3;
|
||||||
|
modules-left = [
|
||||||
|
"custom/notification"
|
||||||
|
"tray"
|
||||||
|
];
|
||||||
|
modules-center = ["clock"];
|
||||||
|
modules-right = [
|
||||||
|
"privacy"
|
||||||
|
"network"
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"wireplumber"
|
||||||
|
(ifLaptop "group/laptop")
|
||||||
|
# "tray"
|
||||||
|
"idle_inhibitor"
|
||||||
|
];
|
||||||
|
"niri/workspaces" = {
|
||||||
|
format = "{index}";
|
||||||
};
|
};
|
||||||
style = ''
|
"niri/language" = {
|
||||||
@define-color base00 #${colors.base00};
|
format = "{}";
|
||||||
@define-color base01 #${colors.base01};
|
format-en = "🇺🇸";
|
||||||
@define-color base02 #${colors.base02};
|
format-uk = "🇺🇦";
|
||||||
@define-color base03 #${colors.base03};
|
};
|
||||||
@define-color base04 #${colors.base04};
|
"group/laptop" = {
|
||||||
@define-color base05 #${colors.base05};
|
orientation = "inherit";
|
||||||
@define-color base06 #${colors.base06};
|
modules = [
|
||||||
@define-color base07 #${colors.base07};
|
"backlight"
|
||||||
@define-color base08 #${colors.base08};
|
"battery"
|
||||||
@define-color base09 #${colors.base09};
|
"power-profiles-daemon"
|
||||||
@define-color base0A #${colors.base0A};
|
];
|
||||||
@define-color base0B #${colors.base0B};
|
};
|
||||||
@define-color base0C #${colors.base0C};
|
backlight = {
|
||||||
@define-color base0D #${colors.base0D};
|
format = "{percent}% {icon}";
|
||||||
@define-color base0E #${colors.base0E};
|
format-icons = [
|
||||||
@define-color base0F #${colors.base0F};
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
idle_inhibitor = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
activated = "";
|
||||||
|
deactivated = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
tray = {
|
||||||
|
icon-size = 16;
|
||||||
|
spacing = 6;
|
||||||
|
};
|
||||||
|
clock = {
|
||||||
|
interval = 1;
|
||||||
|
format = "{:%R}";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{:%B %d, %A}";
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
states = {
|
||||||
|
good = 95;
|
||||||
|
warning = 30;
|
||||||
|
critical = 15;
|
||||||
|
};
|
||||||
|
format = "{capacity}% {icon}";
|
||||||
|
format-full = "{capacity}% ";
|
||||||
|
format-charging = "{capacity}% ";
|
||||||
|
format-plugged = "{capacity}% ";
|
||||||
|
format-alt = "{icon} {time}";
|
||||||
|
format-icons = ["" "" "" "" "" "" "" "" "" ""];
|
||||||
|
};
|
||||||
|
memory = {
|
||||||
|
format = "{used:0.1f}G ";
|
||||||
|
tooltip-format = ''
|
||||||
|
RAM: {used:0.1f}G/{total:0.1f}G ({percentage}%)
|
||||||
|
Swap: {swapUsed:0.1f}G/{swapTotal:0.1f}G ({swapPercentage}%)'';
|
||||||
|
};
|
||||||
|
network = {
|
||||||
|
format = "{bandwidthDownBits} | {bandwidthUpBits} ";
|
||||||
|
interval = 3;
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
cpu = {
|
||||||
|
format = "{usage}% ";
|
||||||
|
interval = 3;
|
||||||
|
};
|
||||||
|
upower = {
|
||||||
|
icon-size = 16;
|
||||||
|
format = "{percentage}";
|
||||||
|
hide-if-empty = true;
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-spacing = 20;
|
||||||
|
};
|
||||||
|
power-profiles-daemon = {
|
||||||
|
format = "{icon}";
|
||||||
|
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
||||||
|
tooltip = true;
|
||||||
|
format-icons = {
|
||||||
|
default = "";
|
||||||
|
performance = "";
|
||||||
|
balanced = "";
|
||||||
|
power-saver = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
wireplumber = {
|
||||||
|
scroll-step = 3;
|
||||||
|
format = "{volume}% {icon}";
|
||||||
|
format-muted = "";
|
||||||
|
format-icons = ["" "" ""];
|
||||||
|
on-click = lib.getExe pkgs.pwvucontrol;
|
||||||
|
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
||||||
|
};
|
||||||
|
"custom/launcher" = {
|
||||||
|
format = "";
|
||||||
|
on-click = launcher;
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/notification" = {
|
||||||
|
tooltip = false;
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
notification = "";
|
||||||
|
none = "";
|
||||||
|
dnd-notification = "";
|
||||||
|
dnd-none = "";
|
||||||
|
};
|
||||||
|
return-type = "json";
|
||||||
|
exec-if = "which swaync-client";
|
||||||
|
exec = "swaync-client -swb";
|
||||||
|
on-click = "swaync-client -t -sw";
|
||||||
|
on-click-right = "swaync-client -d -sw";
|
||||||
|
escape = true;
|
||||||
|
};
|
||||||
|
"privacy" = {
|
||||||
|
icon-spacing = 0;
|
||||||
|
icon-size = 16;
|
||||||
|
transition-duration = 250;
|
||||||
|
screenshare = {
|
||||||
|
type = "screenshare";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-icon-size = 24;
|
||||||
|
};
|
||||||
|
audio-in = {
|
||||||
|
type = "audio-in";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-icon-size = 24;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"wlr/taskbar" = {
|
||||||
|
format = "{icon} {name}";
|
||||||
|
icon-size = 18;
|
||||||
|
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
||||||
|
tooltip-format = "{title}";
|
||||||
|
on-click = "activate";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: figure out magic waybar css styling (does it pick up `~/.config/gtk-3.0/gtk.css` ?)
|
||||||
|
style =
|
||||||
|
# css
|
||||||
|
''
|
||||||
|
@define-color base00 #${colors.base00}; @define-color base08 #${colors.base08};
|
||||||
|
@define-color base01 #${colors.base01}; @define-color base09 #${colors.base09};
|
||||||
|
@define-color base02 #${colors.base02}; @define-color base0A #${colors.base0A};
|
||||||
|
@define-color base03 #${colors.base03}; @define-color base0B #${colors.base0B};
|
||||||
|
@define-color base04 #${colors.base04}; @define-color base0C #${colors.base0C};
|
||||||
|
@define-color base05 #${colors.base05}; @define-color base0D #${colors.base0D};
|
||||||
|
@define-color base06 #${colors.base06}; @define-color base0E #${colors.base0E};
|
||||||
|
@define-color base07 #${colors.base07}; @define-color base0F #${colors.base0F};
|
||||||
|
|
||||||
* {
|
* {
|
||||||
font-family: ${config.stylix.fonts.sansSerif.name}, FontAwesome;
|
/* all: unset; */
|
||||||
|
font-family: Symbols Nerd Font, FontAwesome, ${config.stylix.fonts.sansSerif.name};
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 100%;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
window#waybar {
|
|
||||||
background-color: transparent;
|
.modules-left, .modules-center, .modules-right, window#waybar {
|
||||||
color: @base05;
|
|
||||||
}
|
|
||||||
.modules-center {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
.mpris.stopped {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
.modules-left,
|
|
||||||
.modules-center,
|
|
||||||
.modules-right {
|
|
||||||
/* border-bottom-left-radius: 12px;
|
|
||||||
border-bottom-right-radius: 12px;
|
|
||||||
border-top-left-radius: 0px;
|
|
||||||
border-top-right-radius: 0px; */
|
|
||||||
background-color: @base00;
|
background-color: @base00;
|
||||||
border-radius: 24px;
|
|
||||||
border: 3px solid @base0D;
|
|
||||||
color: @base05;
|
color: @base05;
|
||||||
padding: 0 0.4em;
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* for leftmost modules */
|
||||||
|
.modules-left, .modules-center, .modules-right {
|
||||||
|
padding-left: 3px;
|
||||||
|
background-color: @base00;
|
||||||
|
color: @base05;
|
||||||
|
}
|
||||||
|
window#bottom.modules-center {
|
||||||
|
background-color: transparent
|
||||||
}
|
}
|
||||||
tooltip {
|
tooltip {
|
||||||
background: @base01;
|
background: @base01;
|
||||||
border: 1px solid @base0E;
|
border: 1px solid @base0D;
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
tooltip label {
|
tooltip label {
|
||||||
color: @base05;
|
color: @base05;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
box-shadow: inset 0 -3px transparent;
|
box-shadow: inset 0 -3px transparent;
|
||||||
border-radius: 16px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
button:hover {
|
button:hover {
|
||||||
background: inherit;
|
background: inherit;
|
||||||
box-shadow: inset 0 -3px transparent;
|
box-shadow: inset 0 -3px transparent;
|
||||||
}
|
}
|
||||||
#mode {
|
|
||||||
background-color: rgba(0, 0, 0, 0.2);
|
|
||||||
box-shadow: inset 0 -3px @base05;
|
|
||||||
}
|
|
||||||
#battery,
|
|
||||||
#backlight,
|
#backlight,
|
||||||
/* #workspaces,
|
#battery,
|
||||||
#taskbar,
|
|
||||||
#privacy, */
|
|
||||||
#taskbar button,
|
|
||||||
#language,
|
|
||||||
#clock,
|
#clock,
|
||||||
#battery,
|
#cpu,
|
||||||
#backlight,
|
#custom-launcher,
|
||||||
|
#custom-notification,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#language,
|
||||||
|
#memory,
|
||||||
|
#network,
|
||||||
|
#power-profiles-daemon,
|
||||||
|
#privacy,
|
||||||
|
#privacy-item,
|
||||||
|
#taskbar button,
|
||||||
|
#taskbar,
|
||||||
|
#tray button,
|
||||||
|
#tray,
|
||||||
#wireplumber,
|
#wireplumber,
|
||||||
#workspaces button,
|
#workspaces button,
|
||||||
|
#workspaces {
|
||||||
|
all: unset;
|
||||||
|
border-radius: 9px;
|
||||||
|
background-color: @base01;
|
||||||
|
margin: 3px 3px 3px 0;
|
||||||
|
padding: 0 0.42em;
|
||||||
|
min-width: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight,
|
||||||
|
#battery,
|
||||||
|
#custom-launcher,
|
||||||
#custom-notification,
|
#custom-notification,
|
||||||
#idle_inhibitor,
|
#idle_inhibitor,
|
||||||
#power-profiles-daemon,
|
#power-profiles-daemon,
|
||||||
#privacy-item,
|
#wireplumber {
|
||||||
#custom-separator {
|
padding: 0 0.5em;
|
||||||
|
}
|
||||||
|
#custom-notification,
|
||||||
|
#power-profiles-daemon {
|
||||||
|
min-width: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy,
|
||||||
|
#taskbar,
|
||||||
|
#workspaces {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
padding-left: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy-item {
|
||||||
padding: 0 0.3em;
|
padding: 0 0.3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#taskbar button {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
#taskbar button,
|
||||||
|
#tray button,
|
||||||
|
#workspaces button {
|
||||||
|
border-radius: 6px;
|
||||||
|
min-width: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
background-color: @base09;
|
||||||
|
color: @base00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power-profiles-daemon.performance {
|
||||||
|
background-color: @base0D;
|
||||||
|
color: @base00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power-profiles-daemon.power-saver {
|
||||||
|
background-color: @base0A;
|
||||||
|
color: @base00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy-item.audio-in {
|
||||||
|
background-color: @base0E;
|
||||||
|
color: @base00;
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy-item.screenshare {
|
||||||
|
background-color: @base0C;
|
||||||
|
color: @base00;
|
||||||
|
margin: 3px 0 3px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button,
|
||||||
#tray button {
|
#tray button {
|
||||||
padding: 0 0.3em;
|
padding: 0 0.4em;
|
||||||
margin: 0 0.2em;
|
margin: 3px;
|
||||||
}
|
}
|
||||||
#workspaces button.active {
|
|
||||||
color: @base0D;
|
#workspaces button.active,
|
||||||
|
#taskbar button.active {
|
||||||
|
background-color: @base02;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover,
|
||||||
|
#workspaces button.active:hover,
|
||||||
|
#taskbar button.active:hover,
|
||||||
#taskbar button:hover {
|
#taskbar button:hover {
|
||||||
box-shadow: transparent;
|
background-color: @base0D;
|
||||||
|
color: @base00;
|
||||||
}
|
}
|
||||||
#taskbar.empty,
|
|
||||||
window#empty {
|
#taskbar.empty {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
#battery.critical:not(.charging) {
|
|
||||||
color: @base09;
|
|
||||||
animation-name: blink;
|
|
||||||
animation-duration: 0.5s;
|
|
||||||
animation-timing-function: steps(12);
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-direction: alternate;
|
|
||||||
}
|
|
||||||
#power-profiles-daemon.performance {
|
|
||||||
color: @base0D;
|
|
||||||
}
|
|
||||||
#power-profiles-daemon.balanced {
|
|
||||||
color: @base0B;
|
|
||||||
}
|
|
||||||
#power-profiles-daemon.power-saver {
|
|
||||||
color: @base0A;
|
|
||||||
}
|
|
||||||
label:focus {
|
|
||||||
background-color: #000000;
|
|
||||||
}
|
|
||||||
#tray > .passive {
|
|
||||||
-gtk-icon-effect: dim;
|
|
||||||
}
|
|
||||||
#tray > .needs-attention {
|
#tray > .needs-attention {
|
||||||
-gtk-icon-effect: highlight;
|
-gtk-icon-effect: highlight;
|
||||||
background-color: @base08;
|
background-color: @base08;
|
||||||
}
|
}
|
||||||
#privacy-item.screenshare {
|
|
||||||
color: @base0C;
|
#tray > .passive {
|
||||||
|
-gtk-icon-effect: dim;
|
||||||
}
|
}
|
||||||
#privacy-item.audio-in {
|
|
||||||
color: @base0E;
|
/* #workspaces button.active {
|
||||||
|
color: @base00;
|
||||||
|
background-color: @base0D;
|
||||||
|
} */
|
||||||
|
|
||||||
|
label:focus {
|
||||||
|
background-color: #000000;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,26 @@
|
|||||||
{
|
{
|
||||||
getExe,
|
lib,
|
||||||
perSystem,
|
osConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
lockscreen,
|
lockscreen,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
swaync = import ./swaync;
|
lib.attrsets.recursiveUpdate {
|
||||||
|
blueman-applet.enable = osConfig.services.blueman.enable;
|
||||||
|
copyq.enable = true;
|
||||||
|
gammastep.enable = true;
|
||||||
|
gnome-keyring.enable = true;
|
||||||
|
hypridle.enable = true;
|
||||||
|
kanshi = import ./kanshi;
|
||||||
network-manager-applet.enable = true;
|
network-manager-applet.enable = true;
|
||||||
playerctld.enable = true;
|
playerctld.enable = true;
|
||||||
|
swaync = import ./swaync;
|
||||||
|
swayosd.enable = true;
|
||||||
|
udiskie.enable = true;
|
||||||
wpaperd.enable = true;
|
wpaperd.enable = true;
|
||||||
copyq = {
|
}
|
||||||
enable = true;
|
{
|
||||||
package = perSystem.nixpkgs-stable.copyq;
|
|
||||||
};
|
|
||||||
gnome-keyring = {
|
|
||||||
enable = true;
|
|
||||||
components = ["secrets"];
|
|
||||||
};
|
|
||||||
gammastep = {
|
gammastep = {
|
||||||
enable = true;
|
|
||||||
provider = "manual";
|
provider = "manual";
|
||||||
latitude = 49.6;
|
latitude = 49.6;
|
||||||
longitude = 36.1;
|
longitude = 36.1;
|
||||||
@ -28,19 +30,8 @@
|
|||||||
night = 3000;
|
night = 3000;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
swayosd = {
|
gnome-keyring.components = ["secrets"];
|
||||||
enable = true;
|
hypridle.settings = {
|
||||||
topMargin = 0.8;
|
|
||||||
};
|
|
||||||
udiskie = {
|
|
||||||
enable = true;
|
|
||||||
automount = false;
|
|
||||||
notify = true;
|
|
||||||
tray = "auto";
|
|
||||||
};
|
|
||||||
hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
general = {
|
||||||
before_sleep_cmd = "loginctl lock-session";
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
lock_cmd = "pidof ${lockscreen} || ${lockscreen}";
|
lock_cmd = "pidof ${lockscreen} || ${lockscreen}";
|
||||||
@ -53,9 +44,14 @@
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
timeout = 601;
|
timeout = 601;
|
||||||
on-timeout = getExe pkgs.niri + " msg action power-off-monitors";
|
on-timeout = lib.getExe pkgs.niri + " msg action power-off-monitors";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
swayosd.topMargin = 0.8;
|
||||||
|
udiskie = {
|
||||||
|
automount = false;
|
||||||
|
notify = true;
|
||||||
|
tray = "auto";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
113
modules/home/desktop/niri/services/kanshi/default.nix
Normal file
113
modules/home/desktop/niri/services/kanshi/default.nix
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
settings = let
|
||||||
|
main = "Philips Consumer Electronics Company 27M2N5500 UK02418033254";
|
||||||
|
second = "Samsung Electric Company S24R65x H4TMA03291";
|
||||||
|
builtin = {
|
||||||
|
eldrid = "Chimei Innolux Corporation 0x1406 Unknown";
|
||||||
|
sarien = "LG Display 0x068B Unknown";
|
||||||
|
# morphius =;
|
||||||
|
};
|
||||||
|
in [
|
||||||
|
{
|
||||||
|
output = {
|
||||||
|
criteria = main;
|
||||||
|
position = "0,0";
|
||||||
|
scale = 4.0 / 3.0;
|
||||||
|
adaptiveSync = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = {
|
||||||
|
criteria = second;
|
||||||
|
mode = "1920x1080@74.973";
|
||||||
|
adaptiveSync = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = {
|
||||||
|
criteria = builtin.eldrid;
|
||||||
|
position = "0,0";
|
||||||
|
scale = 1.2;
|
||||||
|
# adaptiveSync = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = {
|
||||||
|
criteria = builtin.sarien;
|
||||||
|
position = "0,0";
|
||||||
|
scale = 1.25;
|
||||||
|
# adaptiveSync = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "dunamis";
|
||||||
|
outputs = [
|
||||||
|
{criteria = main;}
|
||||||
|
{
|
||||||
|
criteria = second;
|
||||||
|
position = "1920,180";
|
||||||
|
scale = 1.2;
|
||||||
|
# transform = "90";
|
||||||
|
adaptiveSync = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "eldrid-docked";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
criteria = main;
|
||||||
|
position = "0,0";
|
||||||
|
scale = 4.0 / 3.0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria = builtin.eldrid;
|
||||||
|
position = "1920,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "eldrid-undocked";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
criteria = builtin.eldrid;
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "sarien-docked";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
criteria = main;
|
||||||
|
position = "0,0";
|
||||||
|
scale = 4.0 / 3.0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria = builtin.sarien;
|
||||||
|
position = "1920,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "sarien-undocked";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
criteria = builtin.sarien;
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
@ -17,17 +17,17 @@
|
|||||||
control-center-layer = "overlay";
|
control-center-layer = "overlay";
|
||||||
|
|
||||||
# Notification settings
|
# Notification settings
|
||||||
positionX = "right";
|
positionX = "left";
|
||||||
positionY = "top";
|
positionY = "top";
|
||||||
notification-2fa-action = true;
|
notification-2fa-action = true;
|
||||||
notification-inline-replies = false;
|
notification-inline-replies = false;
|
||||||
notification-icon-size = 32;
|
notification-icon-size = 48;
|
||||||
notification-body-image-height = 100;
|
notification-body-image-height = 100;
|
||||||
notification-body-image-width = 200;
|
notification-body-image-width = 200;
|
||||||
notification-window-width = 400;
|
notification-window-width = 400;
|
||||||
|
|
||||||
# Control center settings
|
# Control center settings
|
||||||
control-center-positionX = "right";
|
control-center-positionX = "left";
|
||||||
control-center-positionY = "top";
|
control-center-positionY = "top";
|
||||||
control-center-width = 500;
|
control-center-width = 500;
|
||||||
control-center-exclusive-zone = true;
|
control-center-exclusive-zone = true;
|
||||||
@ -59,8 +59,12 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# TODO: disable stylix, redo everything
|
||||||
style = ''
|
style = ''
|
||||||
/*** Global ***/
|
* {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
progress,
|
progress,
|
||||||
progressbar,
|
progressbar,
|
||||||
trough {
|
trough {
|
||||||
@ -70,20 +74,19 @@
|
|||||||
.app-icon,
|
.app-icon,
|
||||||
.image {
|
.image {
|
||||||
-gtk-icon-effect: none;
|
-gtk-icon-effect: none;
|
||||||
|
padding-right: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-action {
|
.notification-action {
|
||||||
border-radius: 12px;
|
border-radius: 9px;
|
||||||
margin: 0.5rem;
|
margin: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.close-button {
|
.close-button {
|
||||||
margin: 24px;
|
margin: 12px;
|
||||||
padding: 0.2rem;
|
border-radius: 6px;
|
||||||
border-radius: 16px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** Notifications ***/
|
|
||||||
.notification-group.collapsed
|
.notification-group.collapsed
|
||||||
.notification-row:not(:last-child)
|
.notification-row:not(:last-child)
|
||||||
.notification-action,
|
.notification-action,
|
||||||
@ -103,21 +106,21 @@
|
|||||||
.notification.normal,
|
.notification.normal,
|
||||||
.notification.critical,
|
.notification.critical,
|
||||||
.control-center {
|
.control-center {
|
||||||
margin: 16px;
|
border-radius: 12px;
|
||||||
border-radius: 7px;
|
margin: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.floating-notifications,
|
.floating-notifications,
|
||||||
.notification-content {
|
.notification-content {
|
||||||
border-radius: 7px;
|
padding: 0.5rem;
|
||||||
|
margin: 3px;
|
||||||
|
border-radius: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-center-list {
|
.control-center-list {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** Widgets ***/
|
|
||||||
/* Title widget */
|
|
||||||
.widget-title {
|
.widget-title {
|
||||||
margin: 0.5rem;
|
margin: 0.5rem;
|
||||||
}
|
}
|
||||||
@ -127,11 +130,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.widget-title > button {
|
.widget-title > button {
|
||||||
border-radius: 16px;
|
border-radius: 9px;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* DND Widget */
|
|
||||||
.widget-dnd {
|
.widget-dnd {
|
||||||
margin: 0.5rem;
|
margin: 0.5rem;
|
||||||
}
|
}
|
||||||
@ -141,23 +143,23 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.widget-dnd > switch {
|
.widget-dnd > switch {
|
||||||
border-radius: 16px;
|
border-radius: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.widget-dnd > switch slider {
|
.widget-dnd > switch slider {
|
||||||
border-radius: 16px;
|
margin: 3px;
|
||||||
padding: 0.25rem;
|
border-radius: 6px;
|
||||||
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mpris widget */
|
|
||||||
.widget-mpris .widget-mpris-player {
|
.widget-mpris .widget-mpris-player {
|
||||||
border-radius: 16px;
|
border-radius: 12px;
|
||||||
margin: 0.5rem;
|
margin: 0.5rem;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.widget-mpris .widget-mpris-player .widget-mpris-album-art {
|
.widget-mpris .widget-mpris-player .widget-mpris-album-art {
|
||||||
border-radius: 16px;
|
border-radius: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.widget-mpris .widget-mpris-player .widget-mpris-title {
|
.widget-mpris .widget-mpris-player .widget-mpris-title {
|
||||||
@ -169,9 +171,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.widget-mpris .widget-mpris-player > box > button {
|
.widget-mpris .widget-mpris-player > box > button {
|
||||||
border: 1px solid transparent;
|
border-radius: 6px;
|
||||||
border-radius: 16px;
|
padding: 3px;
|
||||||
padding: 0.25rem;
|
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -62,19 +62,25 @@ in {
|
|||||||
};
|
};
|
||||||
languages = {
|
languages = {
|
||||||
language-server = {
|
language-server = {
|
||||||
clangd.command = "${pkgs.clang-tools}/bin/clangd";
|
# markdown-oxide.command = getExe pkgs.markdown-oxide;
|
||||||
markdown-oxide.command = getExe pkgs.markdown-oxide;
|
# nixd.command = getExe pkgs.nixd;
|
||||||
# nil.command = getExe pkgs.nil;
|
# pyright = {
|
||||||
nixd.command = getExe pkgs.nixd;
|
# command = getExe pkgs.pyright;
|
||||||
# pyright.command = getExe pkgs.pyright;
|
# args = ["-"];
|
||||||
# pyright.args = ["-"];
|
# };
|
||||||
ruff.command = getExe pkgs.ruff;
|
|
||||||
ruff.args = ["server"];
|
|
||||||
# rust-analyzer.command = getExe pkgs.rust-analyzer;
|
# rust-analyzer.command = getExe pkgs.rust-analyzer;
|
||||||
# texlab.command = getExe pkgs.texlab;
|
# texlab.command = getExe pkgs.texlab;
|
||||||
tinymist.command = getExe pkgs.tinymist;
|
bash-language-server = {
|
||||||
fsac.command = getExe pkgs.fsautocomplete;
|
command = getExe pkgs.bash-language-server;
|
||||||
fsac.config = {
|
environment = {
|
||||||
|
"SHELLCHECK_PATH" = getExe pkgs.shellcheck;
|
||||||
|
"SHFMT_PATH" = getExe pkgs.shfmt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
clangd.command = "${pkgs.clang-tools}/bin/clangd";
|
||||||
|
fsac = {
|
||||||
|
command = getExe pkgs.fsautocomplete;
|
||||||
|
config = {
|
||||||
# editor.formatOnSave = true;
|
# editor.formatOnSave = true;
|
||||||
AutomaticWorkspaceInit = true;
|
AutomaticWorkspaceInit = true;
|
||||||
FSharp.ExternalAutocomplete = true;
|
FSharp.ExternalAutocomplete = true;
|
||||||
@ -83,19 +89,30 @@ in {
|
|||||||
FSharp.formatting.fantomas.enabled = true;
|
FSharp.formatting.fantomas.enabled = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
nil = {
|
||||||
|
command = getExe pkgs.nil;
|
||||||
|
config = {
|
||||||
|
formatting.command = [(getExe pkgs.alejandra)];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ruff = {
|
||||||
|
command = getExe pkgs.ruff;
|
||||||
|
args = ["server"];
|
||||||
|
};
|
||||||
|
tinymist.command = getExe pkgs.tinymist;
|
||||||
|
vscode-json-language-server.command = getExe pkgs.nodePackages.vscode-json-languageserver;
|
||||||
|
yaml-language-server.command = getExe pkgs.yaml-language-server;
|
||||||
|
zk = {
|
||||||
|
command = getExe pkgs.zk;
|
||||||
|
args = ["lsp"];
|
||||||
|
};
|
||||||
|
};
|
||||||
language = [
|
language = [
|
||||||
{
|
{
|
||||||
name = "nix";
|
name = "nix";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
formatter.command = getExe pkgs.alejandra;
|
language-servers = ["nil"];
|
||||||
language-servers = ["nixd"];
|
|
||||||
}
|
}
|
||||||
# {
|
|
||||||
# name = "latex";
|
|
||||||
# auto-format = true;
|
|
||||||
# formatter.command = "${pkgs.texlivePackages.latexindent}/bin/latexindent";
|
|
||||||
# language-servers = ["texlab"];
|
|
||||||
# }
|
|
||||||
{
|
{
|
||||||
name = "typst";
|
name = "typst";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
@ -105,23 +122,21 @@ in {
|
|||||||
{
|
{
|
||||||
name = "markdown";
|
name = "markdown";
|
||||||
# auto-format = true;
|
# auto-format = true;
|
||||||
# formatter.command = "${pkgs.comrak}/bin/comrak";
|
language-servers = ["zk" "markdown-oxide"];
|
||||||
language-servers = ["markdown-oxide"];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "c";
|
name = "c";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
formatter.command = "${pkgs.clang-tools}/bin/clang-format";
|
# formatter.command = "${pkgs.clang-tools}/bin/clang-format";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "cpp";
|
name = "cpp";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
formatter.command = "${pkgs.clang-tools}/bin/clang-format";
|
# formatter.command = "${pkgs.clang-tools}/bin/clang-format";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "fsharp";
|
name = "fsharp";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
# formatter.command = getExe pkgs.fantomas;
|
|
||||||
language-servers = ["fsac"];
|
language-servers = ["fsac"];
|
||||||
scope = "source.fs";
|
scope = "source.fs";
|
||||||
roots = ["fsproj" "sln" ".git"];
|
roots = ["fsproj" "sln" ".git"];
|
||||||
@ -132,6 +147,25 @@ in {
|
|||||||
# language-servers = ["rust-analyzer"];
|
# language-servers = ["rust-analyzer"];
|
||||||
# formatter.command = getExe pkgs.rustfmt;
|
# formatter.command = getExe pkgs.rustfmt;
|
||||||
# }
|
# }
|
||||||
|
{
|
||||||
|
name = "json";
|
||||||
|
auto-format = true;
|
||||||
|
formatter.command = getExe pkgs.jq;
|
||||||
|
language-servers = ["vscode-json-language-server"];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "yaml";
|
||||||
|
auto-format = true;
|
||||||
|
formatter.command = getExe pkgs.yamlfmt;
|
||||||
|
formatter.args = ["-"];
|
||||||
|
language-servers = ["yaml-language-server"];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "bash";
|
||||||
|
auto-format = true;
|
||||||
|
# formatter.command = getExe pkgs.shfmt;
|
||||||
|
# formatter.args = ["-"];
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "python";
|
name = "python";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
|
@ -15,44 +15,49 @@ in {
|
|||||||
programs.zed-editor = {
|
programs.zed-editor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extensions = [
|
extensions = [
|
||||||
"nix"
|
"bash"
|
||||||
"latex"
|
"fsharp"
|
||||||
"typst"
|
|
||||||
"justfile"
|
"justfile"
|
||||||
|
"nix"
|
||||||
|
"typst"
|
||||||
];
|
];
|
||||||
userSettings = {
|
userSettings = {
|
||||||
vim_mode = true;
|
vim_mode = true;
|
||||||
ui_font_size = mkForce 16;
|
ui_font_size = mkForce 16;
|
||||||
buffer_font_size = mkForce 16;
|
buffer_font_size = mkForce 16;
|
||||||
features = {inline_completion_provider = "none";};
|
# features = {inline_completion_provider = "none";};
|
||||||
auto_update = false;
|
auto_update = false;
|
||||||
languages = {
|
languages = {
|
||||||
|
"FSharp" = {
|
||||||
|
language-servers = [
|
||||||
|
"fsautocomplete"
|
||||||
|
];
|
||||||
|
};
|
||||||
"Nix" = {
|
"Nix" = {
|
||||||
language-servers = [
|
language-servers = [
|
||||||
"!nil"
|
"nil"
|
||||||
"nixd"
|
|
||||||
];
|
];
|
||||||
formatter = {
|
# formatter = {
|
||||||
external.command = getExe pkgs.alejandra;
|
# external.command = getExe pkgs.alejandra;
|
||||||
};
|
# };
|
||||||
};
|
|
||||||
"Rust" = {
|
|
||||||
formatter = {
|
|
||||||
external = {
|
|
||||||
command = getExe pkgs.rustfmt;
|
|
||||||
arguments = ["--edition" "2021"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
# "Rust" = {
|
||||||
|
# formatter = {
|
||||||
|
# external = {
|
||||||
|
# command = getExe pkgs.rustfmt;
|
||||||
|
# arguments = ["--edition" "2021"];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
"typst" = {
|
"typst" = {
|
||||||
language-servers = ["tinymist"];
|
language-servers = ["tinymist"];
|
||||||
format_on_save = "on";
|
format_on_save = "on";
|
||||||
formatter = {
|
# formatter = {
|
||||||
external = {
|
# external = {
|
||||||
command = getExe pkgs.typstyle;
|
# command = getExe pkgs.typstyle;
|
||||||
arguments = ["-i" "{buffer_path}"];
|
# arguments = ["-i" "{buffer_path}"];
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
"Python" = {
|
"Python" = {
|
||||||
format_on_save = "on";
|
format_on_save = "on";
|
||||||
@ -67,50 +72,81 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
lsp = {
|
lsp = {
|
||||||
|
bash-language-server = {
|
||||||
|
binary = {
|
||||||
|
path = getExe pkgs.bash-language-server;
|
||||||
|
env = {
|
||||||
|
"SHELLCHECK_PATH" = getExe pkgs.shellcheck;
|
||||||
|
"SHFMT_PATH" = getExe pkgs.shfmt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fsautocomplete = {
|
||||||
|
binary = {
|
||||||
|
path = getExe pkgs.fsautocomplete;
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
AutomaticWorkspaceInit = true;
|
||||||
|
FSharp.ExternalAutocomplete = true;
|
||||||
|
FSharp.linting.fsharplint.enabled = true;
|
||||||
|
FSharp.linting.fsharplint.configFile = "fsharplint.json";
|
||||||
|
FSharp.formatting.fantomas.enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
clangd = {
|
clangd = {
|
||||||
binary = {
|
binary = {
|
||||||
arguments = [];
|
arguments = [];
|
||||||
path = "${pkgs.clang-tools}/bin/clangd";
|
path = "${pkgs.clang-tools}/bin/clangd";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
rust-analyzer = {
|
# rust-analyzer = {
|
||||||
binary = {
|
# binary = {
|
||||||
arguments = [];
|
# arguments = [];
|
||||||
path = getExe pkgs.rust-analyzer;
|
# path = getExe pkgs.rust-analyzer;
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
ruff = {
|
ruff = {
|
||||||
binary = {
|
binary = {
|
||||||
arguments = [];
|
arguments = [];
|
||||||
path = getExe pkgs.ruff;
|
path = getExe pkgs.ruff;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nixd = {
|
# nixd = {
|
||||||
binary = {
|
# binary = {
|
||||||
arguments = [];
|
# arguments = [];
|
||||||
path = getExe pkgs.nixd;
|
# path = getExe pkgs.nixd;
|
||||||
};
|
# };
|
||||||
initialization_options.formatting.command = [(getExe pkgs.alejandra)];
|
# initialization_options.formatting.command = [(getExe pkgs.alejandra)];
|
||||||
};
|
# };
|
||||||
nil = {
|
nil = {
|
||||||
binary = {
|
binary = {
|
||||||
arguments = [];
|
arguments = [];
|
||||||
path = getExe pkgs.nil;
|
path = getExe pkgs.nil;
|
||||||
};
|
};
|
||||||
initialization_options.formatting.command = [(getExe pkgs.alejandra)];
|
settings.formatting.command = [(getExe pkgs.alejandra)];
|
||||||
};
|
|
||||||
texlab = {
|
|
||||||
binary = {
|
|
||||||
arguments = [];
|
|
||||||
path = getExe pkgs.texlab;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
# texlab = {
|
||||||
|
# binary = {
|
||||||
|
# arguments = [];
|
||||||
|
# path = getExe pkgs.texlab;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
tinymist = {
|
tinymist = {
|
||||||
binary = {
|
binary = {
|
||||||
arguments = [];
|
arguments = [];
|
||||||
path = getExe pkgs.tinymist;
|
path = getExe pkgs.tinymist;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
vscode-json-language-server = {
|
||||||
|
binary = {
|
||||||
|
path = getExe pkgs.nodePackages.vscode-json-languageserver;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
yaml-language-server = {
|
||||||
|
binary = {
|
||||||
|
path = getExe pkgs.yaml-language-server;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
telemetry = {
|
telemetry = {
|
||||||
diagnostics = false;
|
diagnostics = false;
|
||||||
|
@ -23,7 +23,7 @@ in {
|
|||||||
"dunamis".id = "72VRZFX-65SZUKP-2XL2WLG-75MMKLG-PQLDEZN-G5OI5U7-RLF4OHS-LNCXEQX";
|
"dunamis".id = "72VRZFX-65SZUKP-2XL2WLG-75MMKLG-PQLDEZN-G5OI5U7-RLF4OHS-LNCXEQX";
|
||||||
"eldrid".id = "VTSBNN6-W6UUT66-NDEQBNJ-DJJM5YE-PWU63IW-Y6CTJNN-Q3RHEQB-POBLCQH";
|
"eldrid".id = "VTSBNN6-W6UUT66-NDEQBNJ-DJJM5YE-PWU63IW-Y6CTJNN-Q3RHEQB-POBLCQH";
|
||||||
"legion".id = "FDS73OW-BHRWDBO-AOFQX4D-FSCABP2-HN4575T-CSIO6TX-5CPJQLQ-L25TYQJ";
|
"legion".id = "FDS73OW-BHRWDBO-AOFQX4D-FSCABP2-HN4575T-CSIO6TX-5CPJQLQ-L25TYQJ";
|
||||||
"phone".id = "XBZLA7Y-YOBZHLO-MSTRAGS-6SN5MEZ-FDKR76F-DIX2BKE-FMDNUYR-TMD6UAQ";
|
"morphius".id = "VATWBD7-ZTMGGCT-XH6YDYD-5OMPILK-U43UYYW-OGC4BLB-IQGH35R-4X5HZQH";
|
||||||
"sarien".id = "LUVZGFV-OV6FV5E-SDROWHZ-4BR5PFB-VP5Y326-AFEP6NL-ORUMJQQ-SSYCQQO";
|
"sarien".id = "LUVZGFV-OV6FV5E-SDROWHZ-4BR5PFB-VP5Y326-AFEP6NL-ORUMJQQ-SSYCQQO";
|
||||||
};
|
};
|
||||||
folders = {
|
folders = {
|
||||||
@ -33,7 +33,7 @@ in {
|
|||||||
"dunamis"
|
"dunamis"
|
||||||
"eldrid"
|
"eldrid"
|
||||||
"legion"
|
"legion"
|
||||||
"phone"
|
"morphius"
|
||||||
"sarien"
|
"sarien"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@ -42,6 +42,7 @@ in {
|
|||||||
devices = [
|
devices = [
|
||||||
"dunamis"
|
"dunamis"
|
||||||
"eldrid"
|
"eldrid"
|
||||||
|
"morphius"
|
||||||
"legion"
|
"legion"
|
||||||
"sarien"
|
"sarien"
|
||||||
];
|
];
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
perSystem,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
@ -12,6 +13,7 @@ in {
|
|||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = perSystem.ghostty.ghostty;
|
||||||
settings = {
|
settings = {
|
||||||
gtk-single-instance = true;
|
gtk-single-instance = true;
|
||||||
window-decoration = "client";
|
window-decoration = "client";
|
||||||
|
@ -1,99 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf mkDefault;
|
|
||||||
in {
|
|
||||||
security = {
|
|
||||||
sudo.enable = false;
|
|
||||||
# doas.enable = true;
|
|
||||||
sudo-rs = {
|
|
||||||
enable = true;
|
|
||||||
execWheelOnly = true;
|
|
||||||
};
|
|
||||||
polkit.enable = true;
|
|
||||||
polkit.extraConfig = ''
|
|
||||||
polkit.addRule(function(action, subject) {
|
|
||||||
if (
|
|
||||||
subject.isInGroup("users")
|
|
||||||
&& (
|
|
||||||
action.id == "org.freedesktop.login1.reboot" ||
|
|
||||||
action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
|
|
||||||
action.id == "org.freedesktop.login1.power-off" ||
|
|
||||||
action.id == "org.freedesktop.login1.power-off-multiple-sessions"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return polkit.Result.YES;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
'';
|
|
||||||
apparmor.enable = mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
(mkIf config.security.doas.enable doas-sudo-shim) # if doas install doas sudo shim
|
|
||||||
];
|
|
||||||
|
|
||||||
services.dbus = {
|
|
||||||
apparmor = "enabled";
|
|
||||||
implementation = "broker";
|
|
||||||
};
|
|
||||||
services.ntpd-rs = {
|
|
||||||
enable = true;
|
|
||||||
#settings = {
|
|
||||||
# server = {
|
|
||||||
# require-nts = true;
|
|
||||||
# };
|
|
||||||
#};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.kernelParams = [
|
|
||||||
"amd_iommu=force_isolation"
|
|
||||||
"debugfs=off"
|
|
||||||
"efi=disable_early_pci_dma"
|
|
||||||
"gather_data_sampling=force"
|
|
||||||
"intel_iommu=on"
|
|
||||||
"iommu.passthrough=0"
|
|
||||||
"iommu.strict=1"
|
|
||||||
"iommu=force"
|
|
||||||
"page_alloc.shuffle=1"
|
|
||||||
"vsyscall=none"
|
|
||||||
# "ia32_emulation=0"
|
|
||||||
# "lockdown=confidentiality"
|
|
||||||
# "module.sig_enforce=1"
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.blacklistedKernelModules = [
|
|
||||||
# Obscure network protocols
|
|
||||||
"ax25"
|
|
||||||
"netrom"
|
|
||||||
"rose"
|
|
||||||
# Old or rare or insufficiently audited filesystems
|
|
||||||
"adfs"
|
|
||||||
"affs"
|
|
||||||
"bfs"
|
|
||||||
"befs"
|
|
||||||
"cramfs"
|
|
||||||
"efs"
|
|
||||||
"erofs"
|
|
||||||
"exofs"
|
|
||||||
"freevxfs"
|
|
||||||
"f2fs"
|
|
||||||
"hfs"
|
|
||||||
"hpfs"
|
|
||||||
"jfs"
|
|
||||||
"minix"
|
|
||||||
"nilfs2"
|
|
||||||
"ntfs"
|
|
||||||
"omfs"
|
|
||||||
"qnx4"
|
|
||||||
"qnx6"
|
|
||||||
"sysv"
|
|
||||||
"ufs"
|
|
||||||
];
|
|
||||||
|
|
||||||
nix.settings.allowed-users = mkDefault ["@users"];
|
|
||||||
}
|
|
16
modules/nixos/desktop/common/default.nix
Normal file
16
modules/nixos/desktop/common/default.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{config, ...}: {
|
||||||
|
imports = [
|
||||||
|
./gnome-keyring.nix
|
||||||
|
./greeter.nix
|
||||||
|
./pam-rtprio.nix
|
||||||
|
./pipewire.nix
|
||||||
|
];
|
||||||
|
fonts.fontDir.enable = true;
|
||||||
|
security = {
|
||||||
|
pam = {
|
||||||
|
services.greetd.enableGnomeKeyring = config.services.greetd.enable && config.services.gnome.gnome-keyring.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.udisks2.enable = true;
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
}
|
25
modules/nixos/desktop/common/gnome-keyring.nix
Normal file
25
modules/nixos/desktop/common/gnome-keyring.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.module.desktop.gnome-keyring;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
module.desktop.gnome-keyring.enable = mkEnableOption "enable gnome keyring";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gcr_4
|
||||||
|
libsecret
|
||||||
|
];
|
||||||
|
programs.seahorse.enable = true;
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
xdg.portal.config.common = {
|
||||||
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
51
modules/nixos/desktop/common/greeter.nix
Normal file
51
modules/nixos/desktop/common/greeter.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkOption mkIf getExe types mkMerge;
|
||||||
|
cfg = config.module.desktop;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
module.desktop.displayManager = mkOption {
|
||||||
|
default = "greetd";
|
||||||
|
type = types.enum [
|
||||||
|
"cosmic"
|
||||||
|
"gdm"
|
||||||
|
"greetd"
|
||||||
|
"sddm"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkMerge [
|
||||||
|
(mkIf (cfg.displayManager == "cosmic") {
|
||||||
|
services.displayManager.cosmic-greeter.enable = true;
|
||||||
|
})
|
||||||
|
(mkIf (cfg.displayManager == "gdm") {
|
||||||
|
services.displayManager.gdm = {
|
||||||
|
enable = true;
|
||||||
|
wayland = true;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(mkIf (cfg.displayManager == "greetd") {
|
||||||
|
programs.regreet.enable = true;
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
vt = 1;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
command = "${getExe pkgs.cage} -s -m last -- ${getExe pkgs.greetd.regreet}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(mkIf (cfg.displayManager == "sddm") {
|
||||||
|
services.displayManager.sddm = {
|
||||||
|
enable = true;
|
||||||
|
wayland.enable = true;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
10
modules/nixos/desktop/common/pam-rtprio.nix
Normal file
10
modules/nixos/desktop/common/pam-rtprio.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
security.pam.loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "@users";
|
||||||
|
item = "rtprio";
|
||||||
|
type = "-";
|
||||||
|
value = -1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
@ -16,17 +16,11 @@ in {
|
|||||||
mkEnableOption "enable cosmic desktop";
|
mkEnableOption "enable cosmic desktop";
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1;
|
module.desktop.displayManager = "cosmic";
|
||||||
sound.pipewire.enable = true;
|
sound.pipewire.enable = true;
|
||||||
services = {
|
|
||||||
desktopManager.cosmic.enable = true;
|
environment.sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1;
|
||||||
displayManager.cosmic-greeter.enable = true;
|
services.desktopManager.cosmic.enable = true;
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
dbus = {
|
|
||||||
apparmor = "enabled";
|
|
||||||
implementation = "broker";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd = {
|
systemd = {
|
||||||
packages = [pkgs.observatory];
|
packages = [pkgs.observatory];
|
||||||
services.monitord.wantedBy = ["multi-user.target"];
|
services.monitord.wantedBy = ["multi-user.target"];
|
||||||
@ -37,10 +31,7 @@ in {
|
|||||||
xdg-desktop-portal-cosmic
|
xdg-desktop-portal-cosmic
|
||||||
xdg-desktop-portal-gtk
|
xdg-desktop-portal-gtk
|
||||||
];
|
];
|
||||||
config.cosmic = {
|
config.cosmic.default = ["cosmic" "gtk"];
|
||||||
default = ["cosmic" "gtk"];
|
|
||||||
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./common/pipewire.nix
|
./common
|
||||||
./cosmic.nix
|
./cosmic
|
||||||
./gnome.nix
|
./gnome
|
||||||
./hyprland.nix
|
./hyprland
|
||||||
./niri.nix
|
./niri
|
||||||
./plasma.nix
|
./plasma
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.desktop.gnome;
|
|
||||||
in {
|
|
||||||
options = {
|
|
||||||
desktop.gnome.enable =
|
|
||||||
mkEnableOption "enable gnome desktop";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
sound.pipewire.enable = true;
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
displayManager.gdm.enable = true;
|
|
||||||
desktopManager.gnome.enable = true;
|
|
||||||
};
|
|
||||||
programs.dconf.enable = true;
|
|
||||||
programs.seahorse.enable = true;
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
services.udisks2.enable = true;
|
|
||||||
services.dbus = {
|
|
||||||
apparmor = "enabled";
|
|
||||||
implementation = "broker";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
79
modules/nixos/desktop/gnome/default.nix
Normal file
79
modules/nixos/desktop/gnome/default.nix
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.desktop.gnome;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
desktop.gnome.enable =
|
||||||
|
mkEnableOption "enable gnome desktop";
|
||||||
|
};
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(mkIf cfg.enable {
|
||||||
|
module.desktop.displayManager = "gdm";
|
||||||
|
sound.pipewire.enable = true;
|
||||||
|
services.desktopManager.gnome.enable = true;
|
||||||
|
environment.gnome.excludePackages = with pkgs; [
|
||||||
|
orca
|
||||||
|
evince
|
||||||
|
# file-roller
|
||||||
|
geary
|
||||||
|
# gnome-disk-utility
|
||||||
|
# seahorse
|
||||||
|
# sushi
|
||||||
|
# sysprof
|
||||||
|
#
|
||||||
|
# gnome-shell-extensions
|
||||||
|
#
|
||||||
|
# adwaita-icon-theme
|
||||||
|
# nixos-background-info
|
||||||
|
# gnome-backgrounds
|
||||||
|
# gnome-bluetooth
|
||||||
|
# gnome-color-manager
|
||||||
|
# gnome-control-center
|
||||||
|
# gnome-shell-extensions
|
||||||
|
gnome-tour # GNOME Shell detects the .desktop file on first log-in.
|
||||||
|
gnome-user-docs
|
||||||
|
# glib # for gsettings program
|
||||||
|
# gnome-menus
|
||||||
|
# gtk3.out # for gtk-launch program
|
||||||
|
# xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
|
||||||
|
# xdg-user-dirs-gtk # Used to create the default bookmarks
|
||||||
|
#
|
||||||
|
# baobab
|
||||||
|
# epiphany
|
||||||
|
# gnome-text-editor
|
||||||
|
# gnome-calculator
|
||||||
|
# gnome-calendar
|
||||||
|
# gnome-characters
|
||||||
|
# gnome-clocks
|
||||||
|
gnome-console
|
||||||
|
gnome-contacts
|
||||||
|
# gnome-font-viewer
|
||||||
|
gnome-logs
|
||||||
|
# gnome-maps
|
||||||
|
gnome-music
|
||||||
|
gnome-system-monitor
|
||||||
|
# gnome-weather
|
||||||
|
# loupe
|
||||||
|
# nautilus
|
||||||
|
gnome-connections
|
||||||
|
# simple-scan
|
||||||
|
# snapshot
|
||||||
|
totem
|
||||||
|
yelp
|
||||||
|
# gnome-software
|
||||||
|
];
|
||||||
|
})
|
||||||
|
# workaround for crashing autologin session
|
||||||
|
(mkIf (cfg.enable && config.services.displayManager.autoLogin.enable) {
|
||||||
|
systemd.services = {
|
||||||
|
"getty@tty1".enable = false;
|
||||||
|
"autovt@tty1".enable = false;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
@ -1,77 +0,0 @@
|
|||||||
{
|
|
||||||
perSystem,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.desktop.hyprland;
|
|
||||||
in {
|
|
||||||
options = {
|
|
||||||
desktop.hyprland.enable =
|
|
||||||
mkEnableOption "enable hyprland desktop";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
sound.pipewire.enable = true;
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = perSystem.hyprland.hyprland;
|
|
||||||
portalPackage = perSystem.hyprland.xdg-desktop-portal-hyprland;
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
brightnessctl
|
|
||||||
gcr_4
|
|
||||||
];
|
|
||||||
fonts.fontDir.enable = true;
|
|
||||||
security.pam = {
|
|
||||||
services.hyprlock = {};
|
|
||||||
loginLimits = [
|
|
||||||
{
|
|
||||||
domain = "@users";
|
|
||||||
item = "rtprio";
|
|
||||||
type = "-";
|
|
||||||
value = 1;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
udisks2.enable = true;
|
|
||||||
dbus = {
|
|
||||||
apparmor = "enabled";
|
|
||||||
implementation = "broker";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
dconf.enable = true;
|
|
||||||
seahorse.enable = true;
|
|
||||||
};
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
extraPortals = [
|
|
||||||
perSystem.hyprland.xdg-desktop-portal-hyprland
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
config.common.default = [
|
|
||||||
"hyprland"
|
|
||||||
"gtk"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.regreet.enable = true;
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
vt = 6;
|
|
||||||
settings = {
|
|
||||||
default_session = {
|
|
||||||
command = "${pkgs.cage}/bin/cage -s -m last -- ${pkgs.greetd.regreet}/bin/regreet";
|
|
||||||
};
|
|
||||||
initial_session = {
|
|
||||||
user = "user";
|
|
||||||
command = "Hyprland";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
36
modules/nixos/desktop/hyprland/default.nix
Normal file
36
modules/nixos/desktop/hyprland/default.nix
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
perSystem,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
inherit (perSystem) hyprland;
|
||||||
|
cfg = config.desktop.hyprland;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
desktop.hyprland.enable =
|
||||||
|
mkEnableOption "enable hyprland desktop";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
module.desktop.displayManager = "greetd";
|
||||||
|
module.desktop.gnome-keyring.enable = true;
|
||||||
|
sound.pipewire.enable = true;
|
||||||
|
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = hyprland.hyprland;
|
||||||
|
portalPackage = hyprland.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
security.pam.services.hyprlock = {};
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [
|
||||||
|
hyprland.xdg-desktop-portal-hyprland
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
config.hyprland.default = ["hyprland" "gtk"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -1,72 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf mkEnableOption getExe;
|
|
||||||
cfg = config.desktop.niri;
|
|
||||||
in {
|
|
||||||
options = {
|
|
||||||
desktop.niri.enable =
|
|
||||||
mkEnableOption "enable niri desktop";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
sound.pipewire.enable = true;
|
|
||||||
programs.niri.enable = true; # wayland compositor in rust
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
brightnessctl
|
|
||||||
gcr_4
|
|
||||||
];
|
|
||||||
fonts.fontDir.enable = true;
|
|
||||||
security.pam = {
|
|
||||||
services.greetd.enableGnomeKeyring = true;
|
|
||||||
services.gtklock = {};
|
|
||||||
loginLimits = [
|
|
||||||
{
|
|
||||||
domain = "@users";
|
|
||||||
item = "rtprio";
|
|
||||||
type = "-";
|
|
||||||
value = 1;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
udisks2.enable = true;
|
|
||||||
dbus = {
|
|
||||||
apparmor = "enabled";
|
|
||||||
implementation = "broker";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
dconf.enable = true;
|
|
||||||
seahorse.enable = true;
|
|
||||||
};
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
extraPortals = with pkgs; [
|
|
||||||
xdg-desktop-portal-gnome
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
config.niri = {
|
|
||||||
default = ["gnome" "gtk"];
|
|
||||||
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.regreet.enable = true;
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
vt = 6;
|
|
||||||
settings = {
|
|
||||||
default_session = {
|
|
||||||
command = "${pkgs.cage}/bin/cage -s -m last -- ${getExe pkgs.greetd.regreet}";
|
|
||||||
};
|
|
||||||
initial_session = {
|
|
||||||
user = "user";
|
|
||||||
command = "${pkgs.niri}/bin/niri-session";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
45
modules/nixos/desktop/niri/default.nix
Normal file
45
modules/nixos/desktop/niri/default.nix
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf mkEnableOption;
|
||||||
|
cfg = config.desktop.niri;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
desktop.niri.enable =
|
||||||
|
mkEnableOption "enable niri desktop";
|
||||||
|
};
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(mkIf cfg.enable {
|
||||||
|
module.desktop = {
|
||||||
|
displayManager = "greetd";
|
||||||
|
gnome-keyring.enable = true;
|
||||||
|
};
|
||||||
|
sound.pipewire.enable = true;
|
||||||
|
|
||||||
|
programs.niri.enable = true; # wayland compositor in rust
|
||||||
|
security = {
|
||||||
|
pam.services.gtklock = {};
|
||||||
|
soteria.enable = true; # polkit agent in rust
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
blueman.enable = config.hardware.bluetooth.enable;
|
||||||
|
gvfs.enable = true;
|
||||||
|
};
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = with pkgs; [xdg-desktop-portal-gnome xdg-desktop-portal-gtk];
|
||||||
|
config.niri.default = ["gnome" "gtk"];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(mkIf (cfg.enable
|
||||||
|
&& config.services.displayManager.autoLogin.enable) {
|
||||||
|
services.greetd.settings.initial_session = {
|
||||||
|
command = "niri-session";
|
||||||
|
user = config.services.displayManager.autoLogin.user;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
@ -1,39 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.desktop.plasma;
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
./common/pipewire.nix
|
|
||||||
];
|
|
||||||
options = {
|
|
||||||
desktop.plasma = {
|
|
||||||
enable = mkEnableOption "enable plasma desktop";
|
|
||||||
# sddmEnable = mkEnableOption "enable simple display manager";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
stylix.targets.qt.enable = mkDefault false;
|
|
||||||
environment.systemPackages = with pkgs; [gcr_4];
|
|
||||||
services = {
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
desktopManager.plasma6.enable = true;
|
|
||||||
displayManager.sddm = {
|
|
||||||
enable = true; # cfg.sddmEnable;
|
|
||||||
wayland.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
fonts.fontDir.enable = true;
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
config.common = {
|
|
||||||
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
22
modules/nixos/desktop/plasma/default.nix
Normal file
22
modules/nixos/desktop/plasma/default.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.desktop.plasma;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
desktop.plasma = {
|
||||||
|
enable = mkEnableOption "enable plasma desktop";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
module.desktop.displayManager = "sddm";
|
||||||
|
sound.pipewire.enable = true;
|
||||||
|
|
||||||
|
services.desktopManager.plasma6.enable = true;
|
||||||
|
stylix.targets.qt.enable = mkDefault false;
|
||||||
|
};
|
||||||
|
}
|
@ -1,11 +1,21 @@
|
|||||||
{lib, ...}: {
|
{
|
||||||
environment.variables = {
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
boot.tmp.cleanOnBoot = lib.mkDefault true;
|
||||||
|
|
||||||
|
console.font = "${pkgs.spleen}/share/consolefonts/spleen-16x32.psfu";
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
ldso32 = null;
|
||||||
|
memoryAllocator.provider = "mimalloc";
|
||||||
|
variables = {
|
||||||
LESS = "-R --mouse";
|
LESS = "-R --mouse";
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
environment.ldso32 = null;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
boot.tmp.cleanOnBoot = lib.mkDefault true;
|
|
||||||
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
settings.X11Forwarding = false;
|
settings.X11Forwarding = false;
|
||||||
@ -24,4 +34,12 @@
|
|||||||
"sntrup761x25519-sha512@openssh.com"
|
"sntrup761x25519-sha512@openssh.com"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.journald.extraConfig = ''
|
||||||
|
SystemMaxUse=1G
|
||||||
|
'';
|
||||||
|
systemd.coredump.extraConfig = ''
|
||||||
|
Storage=none
|
||||||
|
ProcessSizeMax=0
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./common.nix
|
./common.nix
|
||||||
|
./locale.nix
|
||||||
./misc
|
./misc
|
||||||
./virtual
|
./stylix
|
||||||
|
./virt
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -3,16 +3,18 @@
|
|||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkIf mkEnableOption;
|
inherit (lib) types mkOption;
|
||||||
cfg = config.locale.ukrainian;
|
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
locale.ukrainian.enable =
|
module.locale = mkOption {
|
||||||
mkEnableOption "enables ukrainian locale";
|
type = types.strMatching "[a-z]{2}_[A-Z]{2}\\.UTF-8";
|
||||||
|
default = "en_US.UTF-8";
|
||||||
|
description = "set locale";
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
};
|
||||||
|
config = {
|
||||||
i18n = let
|
i18n = let
|
||||||
locale = "uk_UA.UTF-8";
|
inherit (config.module) locale;
|
||||||
in {
|
in {
|
||||||
defaultLocale = locale;
|
defaultLocale = locale;
|
||||||
extraLocaleSettings = {
|
extraLocaleSettings = {
|
@ -1,8 +1,6 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./locale.nix
|
|
||||||
./opentabletdriver.nix
|
./opentabletdriver.nix
|
||||||
./qmk-vial.nix
|
./qmk-vial.nix
|
||||||
./stylix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
inherit (lib) mkIf mkEnableOption;
|
inherit (lib) mkIf mkEnableOption;
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
opentabletdriver.enable =
|
module.misc.opentabletdriver.enable =
|
||||||
mkEnableOption "enables opentabletdriver";
|
mkEnableOption "enables opentabletdriver";
|
||||||
};
|
};
|
||||||
config = mkIf config.opentabletdriver.enable {
|
config = mkIf config.module.misc.opentabletdriver.enable {
|
||||||
hardware.opentabletdriver = {
|
hardware.opentabletdriver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
daemon.enable = true;
|
daemon.enable = true;
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
inherit (lib) mkIf mkEnableOption;
|
inherit (lib) mkIf mkEnableOption;
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
qmk-vial.enable =
|
module.misc.qmk-vial.enable =
|
||||||
mkEnableOption "adds a udev rule for vial keyboards";
|
mkEnableOption "adds a udev rule for vial keyboards";
|
||||||
};
|
};
|
||||||
config = mkIf config.qmk-vial.enable {
|
config = mkIf config.module.misc.qmk-vial.enable {
|
||||||
services.udev.extraRules = ''
|
services.udev.extraRules = ''
|
||||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
||||||
'';
|
'';
|
||||||
|
@ -5,57 +5,81 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
inherit (builtins) fetchurl;
|
||||||
inherit (lib) mkEnableOption mkOption mkIf;
|
inherit (lib) mkEnableOption mkOption mkIf;
|
||||||
inherit (lib) optionalAttrs;
|
inherit (lib) optionalAttrs;
|
||||||
inherit (lib.types) bool str;
|
inherit (lib.types) bool str;
|
||||||
inherit (config.system) stateVersion;
|
|
||||||
|
|
||||||
cfg = config.module.stylix;
|
cfg = config.module.stylix;
|
||||||
|
|
||||||
|
fromBase16Schemes = f: "${pkgs.base16-schemes}/share/themes/${f}.yaml";
|
||||||
|
|
||||||
interPackage = pkgs.inter-nerdfont;
|
interPackage = pkgs.inter-nerdfont;
|
||||||
iosevkaPackage =
|
iosevkaPackage = pkgs.nerd-fonts.iosevka;
|
||||||
if stateVersion == "24.11"
|
iosevkaTermPackage = pkgs.nerd-fonts.iosevka-term;
|
||||||
then pkgs.nerdfonts.override {fonts = ["Iosevka"];}
|
mesloLgPackage = pkgs.nerd-fonts.meslo-lg;
|
||||||
else pkgs.nerd-fonts.iosevka;
|
# jetBrainsMonoPackage = pkgs.nerd-fonts.jetbrains-mono;
|
||||||
iosevkaTermPackage =
|
geistMonoPackage = pkgs.nerd-fonts.geist-mono;
|
||||||
if stateVersion == "24.11"
|
geistPackage = pkgs.geist-font;
|
||||||
then pkgs.nerdfonts.override {fonts = ["Iosevka Term"];}
|
|
||||||
else pkgs.nerd-fonts.iosevka-term;
|
|
||||||
mesloLgPackage =
|
|
||||||
if stateVersion == "24.11"
|
|
||||||
then pkgs.nerdfonts.override {fonts = ["MesloLG"];}
|
|
||||||
else pkgs.nerd-fonts.meslo-lg;
|
|
||||||
jetBrainsMonoPackage =
|
|
||||||
if stateVersion == "24.11"
|
|
||||||
then pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}
|
|
||||||
else pkgs.nerd-fonts.jetbrains-mono;
|
|
||||||
|
|
||||||
wallpapers = {
|
wallpapers = {
|
||||||
fern-outline = builtins.fetchurl {
|
abstract = {
|
||||||
|
squares = fetchurl {
|
||||||
|
url = "https://w.wallhaven.cc/full/p9/wallhaven-p91dym.jpg";
|
||||||
|
name = "wallhaven-p91dym.jpg";
|
||||||
|
sha256 = "wnsAhh0Soxm+lxahh+Xc/+CAw/abWgPIkeoOlzNGaDo=";
|
||||||
|
};
|
||||||
|
waves = fetchurl {
|
||||||
|
url = "https://w.wallhaven.cc/full/5y/wallhaven-5ydl93.png";
|
||||||
|
name = "wallhaven-5ydl93.png";
|
||||||
|
sha256 = "fTE2cyn2mkx05+Zn6qcs4+Rb7AYD0uyi6CNznuZYOjw=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fern-outline = fetchurl {
|
||||||
url = "https://w.wallhaven.cc/full/p9/wallhaven-p9m7ve.png";
|
url = "https://w.wallhaven.cc/full/p9/wallhaven-p9m7ve.png";
|
||||||
name = "wallhaven-p9m7ve.png";
|
name = "wallhaven-p9m7ve.png";
|
||||||
sha256 = "0r7dl4fjwv2p5q5ggr4sjsl2h5m0s98k9qhiwkvmwi010lyffkx7";
|
sha256 = "0r7dl4fjwv2p5q5ggr4sjsl2h5m0s98k9qhiwkvmwi010lyffkx7";
|
||||||
};
|
};
|
||||||
mountains-pink = builtins.fetchurl {
|
mountains-pink = fetchurl {
|
||||||
url = "https://w.wallhaven.cc/full/yq/wallhaven-yq7gox.jpg";
|
url = "https://w.wallhaven.cc/full/yq/wallhaven-yq7gox.jpg";
|
||||||
name = "wallhaven-yq7gox.jpg";
|
name = "wallhaven-yq7gox.jpg";
|
||||||
sha256 = "09s31spp9mq71fgkl1w80nzdc1458p1gjfyi3y6fy14wj2dza0pj";
|
sha256 = "09s31spp9mq71fgkl1w80nzdc1458p1gjfyi3y6fy14wj2dza0pj";
|
||||||
};
|
};
|
||||||
mountains-black = builtins.fetchurl {
|
mountains-black = fetchurl {
|
||||||
url = "https://w.wallhaven.cc/full/9d/wallhaven-9djzww.jpg";
|
url = "https://w.wallhaven.cc/full/9d/wallhaven-9djzww.jpg";
|
||||||
name = "wallhaven-9djzww.jpg";
|
name = "wallhaven-9djzww.jpg";
|
||||||
sha256 = "1p2si922i9qs09h8c74lrvx0f284g0xvm7lh85gk1x7lqhn611zm";
|
sha256 = "1p2si922i9qs09h8c74lrvx0f284g0xvm7lh85gk1x7lqhn611zm";
|
||||||
};
|
};
|
||||||
cyber-dawn = builtins.fetchurl {
|
cyber-dawn = fetchurl {
|
||||||
url = "https://w.wallhaven.cc/full/ym/wallhaven-ymo2y7.png";
|
url = "https://w.wallhaven.cc/full/ym/wallhaven-ymo2y7.png";
|
||||||
name = "wallhaven-ymo2y7.png";
|
name = "wallhaven-ymo2y7.png";
|
||||||
sha256 = "1b3j0hxxy8m25scq42lxsxc99xvr15pha1j4wplgz761asrvxly3";
|
sha256 = "1b3j0hxxy8m25scq42lxsxc99xvr15pha1j4wplgz761asrvxly3";
|
||||||
};
|
};
|
||||||
|
nixos-rainbow = fetchurl {
|
||||||
|
url = "https://w.wallhaven.cc/full/p9/wallhaven-p9pd23.png";
|
||||||
|
name = "wallhaven-p9pd23.png";
|
||||||
|
sha256 = "7CMuETntiVUCKhUIdJzX+sf3F47GvuX2a61o4xbEzww=";
|
||||||
|
};
|
||||||
|
mountains-sepia = fetchurl {
|
||||||
|
url = "https://w.wallhaven.cc/full/k8/wallhaven-k89k81.jpg";
|
||||||
|
name = "wallhaven-k89k81.jpg";
|
||||||
|
sha256 = "C0lvJ0ff0mCC3i9mmeHZsj/n6Ehkp3jaslVr7VDUB3k=";
|
||||||
|
};
|
||||||
|
jcurry-cloud = fetchurl {
|
||||||
|
url = "https://w.wallhaven.cc/full/7j/wallhaven-7j6wpy.jpg";
|
||||||
|
name = "wallhaven-je8rwq.jpg";
|
||||||
|
sha256 = "xsuCYc0mCDkrJZ+BUmEEclAfF17g1n39JHeubtZHP78=";
|
||||||
|
};
|
||||||
|
vapor-moon = fetchurl {
|
||||||
|
url = "https://w.wallhaven.cc/full/lm/wallhaven-lm6d2r.png";
|
||||||
|
name = "wallhaven-lm6d2r.png";
|
||||||
|
sha256 = "V07kj2zwFHDwzIN8QE8IFrJMXxDOBoK9C11sQGgTjyQ=";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
themes = {
|
themes = {
|
||||||
rose-pine-dawn = {
|
rose-pine-dawn = {
|
||||||
polarity = "light";
|
polarity = "light";
|
||||||
scheme = "${pkgs.base16-schemes}/share/themes/rose-pine-dawn.yaml";
|
scheme = fromBase16Schemes "rose-pine-dawn";
|
||||||
wallpaper = wallpapers.cyber-dawn;
|
wallpaper = wallpapers.cyber-dawn;
|
||||||
|
|
||||||
serif = {
|
serif = {
|
||||||
@ -76,12 +100,12 @@
|
|||||||
};
|
};
|
||||||
rose-pine-moon = {
|
rose-pine-moon = {
|
||||||
polarity = "dark";
|
polarity = "dark";
|
||||||
scheme = "${pkgs.base16-schemes}/share/themes/rose-pine-moon.yaml";
|
scheme = fromBase16Schemes "rose-pine-moon";
|
||||||
wallpaper = wallpapers.cyber-dawn;
|
wallpaper = wallpapers.cyber-dawn;
|
||||||
|
|
||||||
serif = {
|
serif = {
|
||||||
package = iosevkaPackage;
|
package = interPackage;
|
||||||
name = "Iosevka Nerd Font Propo";
|
name = "Inter Nerd Font";
|
||||||
};
|
};
|
||||||
|
|
||||||
monospace = {
|
monospace = {
|
||||||
@ -95,10 +119,52 @@
|
|||||||
size = 24;
|
size = 24;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
sandcastle = {
|
||||||
|
polarity = "dark";
|
||||||
|
scheme = fromBase16Schemes "sandcastle";
|
||||||
|
wallpaper = wallpapers.abstract.waves;
|
||||||
|
|
||||||
|
serif = {
|
||||||
|
package = geistPackage;
|
||||||
|
name = "Geist";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = geistMonoPackage;
|
||||||
|
name = "GeistMono NFM";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
gruvbox-dark-pale = {
|
||||||
|
polarity = "dark";
|
||||||
|
scheme = fromBase16Schemes "gruvbox-dark-pale";
|
||||||
|
wallpaper = wallpapers.mountains-sepia;
|
||||||
|
|
||||||
|
serif = {
|
||||||
|
package = geistPackage;
|
||||||
|
name = "Geist";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = geistMonoPackage;
|
||||||
|
name = "GeistMono Nerd Font";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
};
|
||||||
nord = {
|
nord = {
|
||||||
polarity = "dark";
|
polarity = "dark";
|
||||||
scheme = "${pkgs.base16-schemes}/share/themes/nord.yaml";
|
scheme = fromBase16Schemes "nord";
|
||||||
wallpaper = builtins.fetchurl {
|
wallpaper = fetchurl {
|
||||||
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
|
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
|
||||||
name = "wallhaven-l8l9gq.png";
|
name = "wallhaven-l8l9gq.png";
|
||||||
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
|
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
|
||||||
@ -123,8 +189,8 @@
|
|||||||
|
|
||||||
nord-light = {
|
nord-light = {
|
||||||
polarity = "light";
|
polarity = "light";
|
||||||
scheme = "${pkgs.base16-schemes}/share/themes/nord-light.yaml";
|
scheme = fromBase16Schemes "nord-light";
|
||||||
wallpaper = builtins.fetchurl {
|
wallpaper = fetchurl {
|
||||||
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
|
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
|
||||||
name = "wallhaven-l8l9gq.png";
|
name = "wallhaven-l8l9gq.png";
|
||||||
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
|
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
|
||||||
@ -149,8 +215,8 @@
|
|||||||
|
|
||||||
helios = {
|
helios = {
|
||||||
polarity = "dark";
|
polarity = "dark";
|
||||||
scheme = "${pkgs.base16-schemes}/share/themes/helios.yaml";
|
scheme = fromBase16Schemes "helios";
|
||||||
wallpaper = builtins.fetchurl {
|
wallpaper = fetchurl {
|
||||||
url = "https://w.wallhaven.cc/full/lq/wallhaven-lqorw2.png";
|
url = "https://w.wallhaven.cc/full/lq/wallhaven-lqorw2.png";
|
||||||
name = "wallhaven-lqorw2.png";
|
name = "wallhaven-lqorw2.png";
|
||||||
sha256 = "sha256:1rjchjq4pc2jyq8dvpa17mmscv9qcm0h0zv468lsf8s51anpid6p";
|
sha256 = "sha256:1rjchjq4pc2jyq8dvpa17mmscv9qcm0h0zv468lsf8s51anpid6p";
|
||||||
@ -175,8 +241,8 @@
|
|||||||
|
|
||||||
sulphurpool = {
|
sulphurpool = {
|
||||||
polarity = "dark";
|
polarity = "dark";
|
||||||
scheme = "${pkgs.base16-schemes}/share/themes/atelier-sulphurpool.yaml";
|
scheme = fromBase16Schemes "atelier-sulphurpool";
|
||||||
wallpaper = builtins.fetchurl {
|
wallpaper = fetchurl {
|
||||||
url = "https://w.wallhaven.cc/full/rd/wallhaven-rd5q3m.jpg";
|
url = "https://w.wallhaven.cc/full/rd/wallhaven-rd5q3m.jpg";
|
||||||
name = "wallhaven-rd5q3m.jpg";
|
name = "wallhaven-rd5q3m.jpg";
|
||||||
sha256 = "sha256:1sa2739vwwv1xafzjvxlg3kvq26xmcxg6hrwq29q40j617r63sy6";
|
sha256 = "sha256:1sa2739vwwv1xafzjvxlg3kvq26xmcxg6hrwq29q40j617r63sy6";
|
||||||
@ -201,7 +267,7 @@
|
|||||||
himalaya = {
|
himalaya = {
|
||||||
# lightly pink like himalayan salt
|
# lightly pink like himalayan salt
|
||||||
polarity = "light";
|
polarity = "light";
|
||||||
scheme = "${pkgs.base16-schemes}/share/themes/atelier-plateau-light.yaml";
|
scheme = fromBase16Schemes "atelier-plateau-light";
|
||||||
wallpaper = wallpapers.mountains-pink;
|
wallpaper = wallpapers.mountains-pink;
|
||||||
|
|
||||||
serif = {
|
serif = {
|
||||||
@ -214,6 +280,48 @@
|
|||||||
name = "MesloLGM Nerd Font Mono";
|
name = "MesloLGM Nerd Font Mono";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Ice";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
vesper = {
|
||||||
|
polarity = "dark";
|
||||||
|
scheme = fromBase16Schemes "vesper";
|
||||||
|
wallpaper = wallpapers.abstract.squares;
|
||||||
|
|
||||||
|
serif = {
|
||||||
|
package = geistPackage;
|
||||||
|
name = "Geist";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = geistMonoPackage;
|
||||||
|
name = "GeistMono Nerd Font";
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
github = {
|
||||||
|
polarity = "light";
|
||||||
|
scheme = fromBase16Schemes "github";
|
||||||
|
wallpaper = wallpapers.abstract.squares;
|
||||||
|
|
||||||
|
serif = {
|
||||||
|
package = geistPackage;
|
||||||
|
name = "Geist Light";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = geistMonoPackage;
|
||||||
|
name = "GeistMono Nerd Font";
|
||||||
|
};
|
||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
package = pkgs.bibata-cursors;
|
package = pkgs.bibata-cursors;
|
||||||
name = "Bibata-Modern-Ice";
|
name = "Bibata-Modern-Ice";
|
||||||
@ -243,6 +351,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
fonts.packages = [pkgs.nerd-fonts.symbols-only];
|
||||||
stylix =
|
stylix =
|
||||||
{
|
{
|
||||||
enable = true;
|
enable = true;
|
@ -5,10 +5,10 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.virtual.docker;
|
cfg = config.module.virt.docker;
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
virtual.docker.enable =
|
module.virt.docker.enable =
|
||||||
mkEnableOption "enable docker";
|
mkEnableOption "enable docker";
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
@ -5,10 +5,10 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.virtual.libvirt;
|
cfg = config.module.virt.libvirt;
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
virtual.libvirt.enable =
|
module.virt.libvirt.enable =
|
||||||
mkEnableOption "enables virtualisation";
|
mkEnableOption "enables virtualisation";
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
@ -5,10 +5,10 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.virtual.podman;
|
cfg = config.module.virt.podman;
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
virtual.podman.enable =
|
module.virt.podman.enable =
|
||||||
mkEnableOption "enables podman";
|
mkEnableOption "enables podman";
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
@ -4,7 +4,7 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
timeout = 3;
|
timeout = 0;
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
consoleMode = "auto";
|
consoleMode = "auto";
|
@ -11,6 +11,7 @@ in {
|
|||||||
imports = [
|
imports = [
|
||||||
./boot
|
./boot
|
||||||
./hardware
|
./hardware
|
||||||
|
./misc
|
||||||
./networking
|
./networking
|
||||||
./nix
|
./nix
|
||||||
./security
|
./security
|
||||||
@ -43,15 +44,26 @@ in {
|
|||||||
keyboards = {
|
keyboards = {
|
||||||
internal = {
|
internal = {
|
||||||
ids = ["0001:0001" "048d:c101"];
|
ids = ["0001:0001" "048d:c101"];
|
||||||
settings.main = {
|
settings.main = let
|
||||||
a = "lettermod(alt, a, 200, 150)";
|
# finger = mod;
|
||||||
s = "lettermod(meta, s, 200, 150)";
|
pinky = "alt";
|
||||||
d = "lettermod(control, d, 200, 150)";
|
ring = "meta";
|
||||||
f = "lettermod(shift, f, 200, 150)";
|
middle = "control";
|
||||||
j = "lettermod(shift, j, 200, 150)";
|
index = "shift";
|
||||||
k = "lettermod(control, k, 200, 150)";
|
# timeouts
|
||||||
l = "lettermod(meta, l, 200, 150)";
|
idle = "200";
|
||||||
";" = "lettermod(alt, ;, 200, 150)";
|
hold = "150";
|
||||||
|
# function takes finger and letter
|
||||||
|
homeRowMod = f: l: "lettermod(${f}, ${l}, ${idle}, ${hold})";
|
||||||
|
in {
|
||||||
|
"a" = homeRowMod pinky "a";
|
||||||
|
"s" = homeRowMod ring "s";
|
||||||
|
"d" = homeRowMod middle "d";
|
||||||
|
"f" = homeRowMod index "f";
|
||||||
|
"j" = homeRowMod index "j";
|
||||||
|
"k" = homeRowMod middle "k";
|
||||||
|
"l" = homeRowMod ring "l";
|
||||||
|
";" = homeRowMod pinky ";";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
3
modules/shared/nixos/misc/default.nix
Normal file
3
modules/shared/nixos/misc/default.nix
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
imports = [./slim.nix ./zram.nix];
|
||||||
|
}
|
20
modules/shared/nixos/misc/slim.nix
Normal file
20
modules/shared/nixos/misc/slim.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
# taken from https://github.com/NuschtOS/nixos-modules/blob/main/modules/slim.nix
|
||||||
|
documentation = {
|
||||||
|
# html docs and info are not required, man pages are enough
|
||||||
|
doc.enable = false;
|
||||||
|
info.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# environment.defaultPackages = lib.mkForce [];
|
||||||
|
|
||||||
|
# programs.thunderbird.package = pkgs.thunderbird.override {cfg.speechSynthesisSupport = false;};
|
||||||
|
|
||||||
|
# during testing only 550K-650K of the tmpfs where used
|
||||||
|
security.wrapperDirSize = "10M";
|
||||||
|
|
||||||
|
services = {
|
||||||
|
orca.enable = false; # requires speechd
|
||||||
|
speechd.enable = false; # voice files are big and fat
|
||||||
|
};
|
||||||
|
}
|
8
modules/shared/nixos/misc/zram.nix
Normal file
8
modules/shared/nixos/misc/zram.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
zramSwap = {
|
||||||
|
enable = true;
|
||||||
|
algorithm = "zstd";
|
||||||
|
memoryPercent = 25;
|
||||||
|
priority = 5;
|
||||||
|
};
|
||||||
|
}
|
@ -1,13 +1,20 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
|
# inputs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
# imports = with inputs; [lix.nixosModules.default];
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.lixPackageSets.latest.lix;
|
package = pkgs.lixPackageSets.latest.lix;
|
||||||
channel.enable = false;
|
channel.enable = false;
|
||||||
daemonCPUSchedPolicy = "idle";
|
daemonCPUSchedPolicy = "idle";
|
||||||
|
optimise = {
|
||||||
|
automatic = true;
|
||||||
|
dates = ["weekly"];
|
||||||
|
};
|
||||||
settings = {
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
experimental-features = [
|
experimental-features = [
|
||||||
"nix-command"
|
"nix-command"
|
||||||
"flakes"
|
"flakes"
|
||||||
@ -19,7 +26,7 @@
|
|||||||
"fetch-closure"
|
"fetch-closure"
|
||||||
|
|
||||||
# Allow derivation builders to call Nix, and thus build derivations recursively.
|
# Allow derivation builders to call Nix, and thus build derivations recursively.
|
||||||
"recursive-nix"
|
# "recursive-nix"
|
||||||
|
|
||||||
# Allow the use of the impure-env setting.
|
# Allow the use of the impure-env setting.
|
||||||
# "configurable-impure-env"
|
# "configurable-impure-env"
|
||||||
@ -32,8 +39,5 @@
|
|||||||
nix.settings.use-cgroups = true;
|
nix.settings.use-cgroups = true;
|
||||||
|
|
||||||
# for container in builds support
|
# for container in builds support
|
||||||
nix.settings.system-features =
|
nix.settings.system-features = ["uid-range"];
|
||||||
if lib.versionAtLeast lib.version "25.05pre"
|
|
||||||
then ["uid-range"]
|
|
||||||
else lib.mkDefault ["uid-range"];
|
|
||||||
}
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user