Compare commits
111
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a196abbb2d | ||
|
|
4ea28e044f | ||
|
|
9c97cd1820 | ||
|
|
1a091092c3 | ||
|
|
06b56c7422 | ||
|
|
a1d0228b0d | ||
|
|
cf9d79d660 | ||
|
|
bdca60700c | ||
|
|
81e665882c | ||
|
|
c1349d4fc7 | ||
|
|
e18601faa5 | ||
|
|
3df4cafe28 | ||
|
|
2745692e8a | ||
|
|
b43adbd161 | ||
|
|
f5f8a9b71b | ||
|
|
14182669e1 | ||
|
|
ffec78a68b | ||
|
|
369d8640cd | ||
|
|
f9ddbedb5f | ||
|
|
7016d1f24c | ||
|
|
70030a70e2 | ||
|
|
7ffde2b6a1 | ||
|
|
bd2ba1f38c | ||
|
|
9a5c1c4e51 | ||
|
|
ffce3398ef | ||
|
|
4dfb1b6ee3 | ||
|
|
1a123348dd | ||
|
|
6a2872f207 | ||
|
|
84d79462d2 | ||
|
|
b4d79e958d | ||
|
|
5b3480529e | ||
|
|
97849952a6 | ||
|
|
f0a304d9db | ||
|
|
2054ee1a7b | ||
|
|
cb920eaefd | ||
|
|
de827013c6 | ||
|
|
ce801ec0a8 | ||
|
|
121f79e048 | ||
|
|
e85156235c | ||
|
|
e89908b592 | ||
|
|
139402db48 | ||
|
|
0bbce5c85e | ||
|
|
3fd5c34aa1 | ||
|
|
a7df51dbb8 | ||
|
|
d89b8b51cc | ||
|
|
6c301d87fd | ||
|
|
4b6c84e63d | ||
|
|
59780f39d0 | ||
|
|
48d784a964 | ||
|
|
76ad137946 | ||
|
|
de081fe38f | ||
|
|
940ea05b3f | ||
|
|
107e86d533 | ||
|
|
db11705c44 | ||
|
|
6dca04621d | ||
|
|
00ef9ef193 | ||
|
|
d923423d52 | ||
|
|
9595f16689 | ||
|
|
77c9c87624 | ||
|
|
a5ebf46d0c | ||
|
|
1bd857c1ca | ||
|
|
de10839976 | ||
|
|
ae2995e972 | ||
|
|
f494e364e1 | ||
|
|
39cac2aedb | ||
|
|
3260c774ca | ||
|
|
daf0980eb9 | ||
|
|
c61f1f6741 | ||
|
|
99cc802565 | ||
|
|
4bc97efe7a | ||
|
|
6260c56bbd | ||
|
|
0b5d298bc4 | ||
|
|
f7ae712471 | ||
|
|
5601b1339c | ||
|
|
2b30fc1a4d | ||
|
|
cd0e4479f7 | ||
|
|
8ed9ed7b51 | ||
|
|
42be5edaf1 | ||
|
|
3040914409 | ||
|
|
c623efd959 | ||
|
|
002106286a | ||
|
|
0439a3a70c | ||
|
|
d7fd96b4ae | ||
|
|
1cc47bea5c | ||
|
|
2ddb17e9dd | ||
|
|
9de557705a | ||
|
|
27f2604ed4 | ||
|
|
c51feeac8a | ||
|
|
27154a2ad8 | ||
|
|
fc05eb7824 | ||
|
|
dab57c7754 | ||
|
|
2907927036 | ||
|
|
3945bc3204 | ||
|
|
f7a84f0531 | ||
|
|
327ceed460 | ||
|
|
0c1df548a2 | ||
|
|
948ac61d8b | ||
|
|
c0d6d4483d | ||
|
|
f6c123e3bf | ||
|
|
5ecb1594d1 | ||
|
|
8ce210ad1f | ||
|
|
2526cc4d63 | ||
|
|
59ecf03ecf | ||
|
|
7f6910098d | ||
|
|
1015048fc5 | ||
|
|
831f49e8bd | ||
|
|
8acb99770c | ||
|
|
7488da102e | ||
|
|
be5e9cce07 | ||
|
|
0eddfbef58 | ||
|
|
bdb85b6161 |
+8
-1
@@ -1,7 +1,7 @@
|
|||||||
keys:
|
keys:
|
||||||
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||||
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
||||||
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
- &builder-ssh age1vwanu6jm80jzwe78jzz7z9vuzlg94tl7rpdg34vjmxcrnhddxu9q5zaf49
|
||||||
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
|
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
|
||||||
|
|
||||||
creation_rules:
|
creation_rules:
|
||||||
@@ -17,3 +17,10 @@ creation_rules:
|
|||||||
- age:
|
- age:
|
||||||
- *primary
|
- *primary
|
||||||
- *builder-ssh
|
- *builder-ssh
|
||||||
|
|
||||||
|
- path_regex: features-nixos/optional/k9s/kubeconfig.secret.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *primary
|
||||||
|
- *aspi-ssh
|
||||||
|
- *kardorf-ssh
|
||||||
|
|||||||
@@ -36,3 +36,11 @@ ssh-to-age < /etc/ssh/ssh_host_ed25519_key.pub
|
|||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
sops updatekeys secrets/*
|
sops updatekeys secrets/*
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Installation of builder
|
||||||
|
- Start recent nixos installer in VM
|
||||||
|
- Set password for root
|
||||||
|
|
||||||
|
#+begin_src sh
|
||||||
|
nix run github:nix-community/nixos-anywhere -- --flake git+https://gitlab.julian-mutter.de/julian/dotfiles.git#builder --target-host root@<ip>
|
||||||
|
#+end_src
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
./nix.nix
|
./nix.nix
|
||||||
./sops.nix
|
./sops.nix
|
||||||
./root.nix
|
./root.nix
|
||||||
|
./stylix.nix
|
||||||
]
|
]
|
||||||
++ [
|
++ [
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
LC_NUMERIC = "en_US.UTF-8";
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
LC_PAPER = "de_DE.UTF-8";
|
LC_PAPER = "de_DE.UTF-8";
|
||||||
LC_TELEPHONE = "de_DE.UTF-8";
|
LC_TELEPHONE = "de_DE.UTF-8";
|
||||||
LC_TIME = "de_DE.UTF-8";
|
LC_TIME = "en_GB.UTF-8"; # english weekdays, but 24h format
|
||||||
};
|
};
|
||||||
|
|
||||||
# Keymap
|
# Keymap
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{outputs, ...}: {
|
{outputs, ...}: {
|
||||||
# Apply overlays
|
# Apply overlays
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
# TODO: apply this to hm and nixos without duplicate code
|
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
overlays = builtins.attrValues outputs.overlays;
|
||||||
config = {
|
config = {
|
||||||
nvidia.acceptLicense = true;
|
nvidia.acceptLicense = true;
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [inputs.stylix.nixosModules.stylix];
|
||||||
|
|
||||||
|
stylix.enable = true;
|
||||||
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||||
|
|
||||||
|
stylix.fonts = {
|
||||||
|
serif = {
|
||||||
|
package = pkgs.dejavu_fonts;
|
||||||
|
name = "DejaVu Serif";
|
||||||
|
};
|
||||||
|
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.dejavu_fonts;
|
||||||
|
name = "DejaVu Sans";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.dejavu_fonts;
|
||||||
|
name = "DejaVu Sans Mono";
|
||||||
|
};
|
||||||
|
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-color-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -6,18 +6,22 @@
|
|||||||
# Setup binary caches
|
# Setup binary caches
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
substituters = [
|
substituters = [
|
||||||
|
# high priority since it's almost always used
|
||||||
|
"https://cache.nixos.org?priority=10"
|
||||||
|
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://cache.nixos.org/"
|
|
||||||
"https://hyprland.cachix.org"
|
"https://hyprland.cachix.org"
|
||||||
"http://binarycache.julian-mutter.de"
|
# "http://binarycache.julian-mutter.de"
|
||||||
"https://devenv.cachix.org"
|
"https://devenv.cachix.org"
|
||||||
|
"https://noctalia.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
"binarycache.julian-mutter.de:7RB4Sif4WQU76XWIsRJ2KtKa45zg1QOTHEkUhi/JBe8="
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||||
|
"noctalia.cachix.org-1:pCOR47nnMEo5thcxNDtzWpOxNFQsBRglJzxWPp3dkU4="
|
||||||
];
|
];
|
||||||
|
|
||||||
trusted-users = [
|
trusted-users = [
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
{config, ...}: let
|
{
|
||||||
homeCfgs = config.home-manager.users;
|
|
||||||
julianCfg = homeCfgs.julian;
|
|
||||||
in {
|
|
||||||
users.extraUsers.greeter = {
|
users.extraUsers.greeter = {
|
||||||
# For caching
|
# For caching
|
||||||
home = "/tmp/greeter-home";
|
home = "/tmp/greeter-home";
|
||||||
@@ -10,28 +7,10 @@ in {
|
|||||||
|
|
||||||
programs.regreet = {
|
programs.regreet = {
|
||||||
enable = true;
|
enable = true;
|
||||||
iconTheme = julianCfg.gtk.iconTheme;
|
|
||||||
theme = julianCfg.gtk.theme;
|
|
||||||
# font = julianCfg.fontProfiles.regular; # TODO: do
|
|
||||||
cursorTheme = {
|
|
||||||
inherit (julianCfg.gtk.cursorTheme) name package;
|
|
||||||
};
|
|
||||||
cageArgs = [
|
cageArgs = [
|
||||||
"-s"
|
"-s"
|
||||||
"-m"
|
"-m"
|
||||||
"last"
|
"last"
|
||||||
]; # multimonitor use last monitor
|
]; # multimonitor use last monitor
|
||||||
# settings.background = {
|
|
||||||
# path = julianCfg.wallpaper;
|
|
||||||
# fit = "Cover";
|
|
||||||
# }; # TODO: fix
|
|
||||||
|
|
||||||
# TODO: setting keyboard language does not work
|
|
||||||
# settings = {
|
|
||||||
# env = {
|
|
||||||
# XKB_DEFAULT_LAYOUT = "de";
|
|
||||||
# # XKB_DEFAULT_VARIANT = "altgr-intl";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# Host hydra
|
||||||
|
{...}: {
|
||||||
|
services.hydra = {
|
||||||
|
enable = true;
|
||||||
|
hydraURL = "http://hydra.julian-mutter.de"; # externally visible URL
|
||||||
|
port = 3000;
|
||||||
|
notificationSender = "hydra@julian-mutter.de"; # e-mail of hydra service
|
||||||
|
# a standalone hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines
|
||||||
|
# buildMachinesFiles = [ ];
|
||||||
|
# you will probably also want, otherwise *everything* will be built from scratch
|
||||||
|
useSubstitutes = true;
|
||||||
|
|
||||||
|
minimumDiskFree = 5; # in GB
|
||||||
|
minimumDiskFreeEvaluator = 4; # in GB
|
||||||
|
};
|
||||||
|
|
||||||
|
# Uris allowed as flake inputs, otherwise hydra does not fetch them
|
||||||
|
nix.settings.allowed-uris = [
|
||||||
|
"github:"
|
||||||
|
"gitlab:"
|
||||||
|
"git+https://github.com/hyprwm/Hyprland"
|
||||||
|
"https://github.com/hyprwm/Hyprland"
|
||||||
|
"https://github"
|
||||||
|
"https://gitlab"
|
||||||
|
"https://gitlab.julian-mutter.de"
|
||||||
|
"git+https://gitlab.julian-mutter.de"
|
||||||
|
];
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
# recommendedTlsSettings = true;
|
||||||
|
# other Nginx options
|
||||||
|
virtualHosts."hydra.julian-mutter.de" = {
|
||||||
|
# enableACME = true;
|
||||||
|
# forceSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://127.0.0.1:3000";
|
||||||
|
# proxyWebsockets = true; # needed if you need to use WebSocket
|
||||||
|
# extraConfig =
|
||||||
|
# # required when the target is also TLS server with multiple hosts
|
||||||
|
# "proxy_ssl_server_name on;" +
|
||||||
|
# # required when the server wants to use HTTP Authentication
|
||||||
|
# "proxy_pass_header Authorization;"
|
||||||
|
# ;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# Setup the device as a jenkins agent
|
||||||
|
{pkgs, ...}: {
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
# require public key authentication for better security
|
||||||
|
settings.PasswordAuthentication = false;
|
||||||
|
settings.KbdInteractiveAuthentication = false;
|
||||||
|
settings.PermitRootLogin = "yes";
|
||||||
|
# Add older algorithms for jenkins ssh-agents-plugin to be compatible
|
||||||
|
settings.Macs = [
|
||||||
|
"hmac-sha2-512-etm@openssh.com"
|
||||||
|
"hmac-sha2-256-etm@openssh.com"
|
||||||
|
"umac-128-etm@openssh.com"
|
||||||
|
"hmac-sha2-512"
|
||||||
|
"hmac-sha2-256"
|
||||||
|
"umac-128@openssh.com"
|
||||||
|
];
|
||||||
|
settings.KexAlgorithms = [
|
||||||
|
"diffie-hellman-group-exchange-sha1"
|
||||||
|
"diffie-hellman-group14-sha1"
|
||||||
|
"mlkem768x25519-sha256"
|
||||||
|
"sntrup761x25519-sha512"
|
||||||
|
"sntrup761x25519-sha512@openssh.com"
|
||||||
|
"curve25519-sha256"
|
||||||
|
"curve25519-sha256@libssh.org"
|
||||||
|
"diffie-hellman-group-exchange-sha256"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.jenkins = {
|
||||||
|
createHome = true;
|
||||||
|
home = "/var/lib/jenkins";
|
||||||
|
group = "jenkins";
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ36sQhVz3kUEi8754G7r3rboihhG4iqFK/UvQm6SING jenkins@home"
|
||||||
|
];
|
||||||
|
packages = with pkgs; [
|
||||||
|
git
|
||||||
|
devenv
|
||||||
|
];
|
||||||
|
extraGroups = [
|
||||||
|
"docker"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.jenkins = {};
|
||||||
|
programs.java = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.jdk21; # Same as jenkins version on home
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
kubectl
|
||||||
|
k9s
|
||||||
|
];
|
||||||
|
|
||||||
|
sops.secrets.kubeconfig = {
|
||||||
|
sopsFile = ./kubeconfig.secret.yaml;
|
||||||
|
format = "binary";
|
||||||
|
owner = config.users.users.julian.name;
|
||||||
|
group = config.users.users.julian.group;
|
||||||
|
};
|
||||||
|
environment.variables.KUBECONFIG = config.sops.secrets."kubeconfig".path;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:nq2czkXqOhjRECF9kASPiBCiz1I7LQLljTV+LkrBp4+BH92YTV6ywRyerNoTDmaBmnY+fuhdnPkN7Q9jjT1SNGLIxBG4b6gOpzgr3amhfNAW3MAUUcPuqNsk0EZ4ZJiUluPCvRtAKHyXsrQpN8P04Rg0OjHoxCrOgKjmODr14QNiQH4RAONSai76dRgRBMQs0PIzcAiMSkwKc0OgBYTccSspV7DlulA3ngv0LuUavKS6QoJ4DuCnFgOu5KHGLQS0ww+Ijp1wAx/4/tq8Iimdn968uvzFjrZATb3bHVjHSR/cbNRCJn6GrpqFCNdpI5OPw3P9f9rodXZKai/bESu2aC8Dlya2by29lCPHkg5lp6atZA8ksnj9brYsFUb6xKPUAPGDElBaUEf+LidsZlI6hAz98/uf3bwyqq22+gMkfKUM1pX1YOtyTq+5eMSn0kBuSVupvEDJaO/G/YlTUDvJL0CzwO0hLzzotLrGcqhvYqjHCr2XhIER+YgYA7D22iml5YOLRxp5RQd3sj74hUGWJkGq1p/uhniaOvrjF0zmQsqHFC4+jUNBKVMVVTLBX/AdL45Lv+HDM4jYCvtNIKAGtTGT71cplhBI2xP1s607NiIbUsSY+2qayh3INOP7qGWwpYquYe/xAk6KZMu1/UuvneVqOjqlcJFOpLqydPnP0oQRy1dtCcJsvT5nv0QEI+Tr24Dbn3tX8fmc8EzZwpmEyHto7nYzHFicgvmYavmTHkmbzySDMI03ktZ7EdM0unlNe9EmR8YyGeg7tmG4bKx9K+7qs0Piqq03gHwN9L92O80J8jiKu8MDURWywYPYHUmCKYbkHh5en1qvyFTU7dDI7L+gdp9+VSqJrkQqPbWAouMBlLE0664lTpzmYQOXWo8riwjYPllkd8EqCaKxrMMHp4Y46X69lsZS1mImuHac3xJV57r6A+mMJajGW92KI13416rwG9sXS1ynNdBTi9+P/1f3Sy8B6ypYa1BP/6+tHqghNAuz5aaKZJnsCWYMAk6y5AuFaZ2ZkO1ruSfdPmyjKoMcp/qO5nmHxF+0h+teSuvLeCb7KrL80IlKElgDINlPYHDVtaoYVv4sZAWhSNJSOUWRbue3bJaqhKz3xOdq5lJy7H3P+MQF8YFgoY7Po4EcXqTP8Upm3tIehPr7BJXNIv6beDPwpMZrvVKqVIgsXD85DqyA1Mh7k5gQpB4uAhZfRUQ8T4reVumjOnGakXh+1DcFPYJumScCP1/68btIYGYJiPJTJhL7/U+12siGzzXXZeaJ7NpCzpvpgmFvoMfV+gFgrAUkb2+eSeEI6BNRjfXWc5NM03RQqotqW4E3Ui+gYbwU0D9/8b5UsRc4IiujnZFSKbCZGGHm79Yrm8IhtTuVyQV67/NeuRfIcJuPPmYGS8nnX8v7pymlagm/43sFHpupsrgeVStsLl1asKJanA6Njus/YA3zrdmgKb1kMK6ALBc73WaT9S+4aZeKB8A6jA5PD2GAgW/T5jaHxi0VPisg0eChKtJfhJVFoZFE+U2fx2YrTeC/joSdS4jqTKaqwDgJ19d5Wvs8ZDQDjHo5I8uUArWODTW/H8An9zp8jsEN6bS1mBeta8qhkz2v9diBUFwmDvmGNX5REirrm3bkqWF2xx6NEiDARTUVAf+fh9VQaQQKK2sQ35zjaAbI4aXmDTI9vy8aFs+6MvJ/iiIwKkjVgZYmyiUVtHy6ZRGwdzgpuOAcoYRxGHaDYIEL33nDQclLmgUwWAfbc0bTI1rvaIzZ25nZ6n4aFFtpANJHTtYeMrAAl1Sho0dio6clM7/k4XST5GA4BqDlRs/Oze4yNjjQb5WoYrBCFEuVcypvRBmLEbM3XOK1sHdQAEAqey/ZfhfNhAVeapVw3ir4E2jsX9pAqlTjH4YkrIURhG05yPb2D3+WMKGAoC4yyusd7siz6tJ4uXvFXkTeOjXMM/Xo/dBnm2J1FPHr9msELIxhtG046/m+I/MEaF6Hg9XC2CZrlxi5OsH61PGBOLLNVFiQ8NaPChHRppQEH1y1GSN+5FinxTK0R5GS3PxN15NZXjmMsj+ixYmbWjkJJXn2bDM7Muv7PRetpcMhU0UIr75+6MWbwPy6v62IsDoQCOslnQVbGc/oHY47EoZ7lKbuulP0ZvQOQxGNvcOtbVc0dJHdFUTgrPxpkCyOQ4NGSLSah1qzDP5j4Fq4ag+OdITPQpDdX6TkiufGfFqq7C5GNHDK8olYKGwH3D0GCGT8o9pFx+FIeRapaWJHkcPibDMyu3KumRy04HF1ih2Z6IoWFHa532pgsK9FlAMGHeqtL/LXWZKtLONR6wNU8DxfbIhV+lUlvbbs27VMj0VHXMXdYnbvGvXOPkb4iP4Pm+HQU4AF3ROA7rtWtrL401Qpdbln5qLEWz9hKCXbM1MbvpGvNvHKckKAWpKmCsVWY8oPCNOqqWAZF5sfrlLb4fULOXg0YQCeobo3O9DZjPf/D/ki6OX5KEgYlqikKdd9hR1d5koyt0bunuFHty2guh8oaUsPjJbcuSCLz80HND9j12msuG13qFWvf77rUiE3WZ5aTSGWh7VB/lUofuEn+aTaGBK7iLAj2PU+/YQUmEFAWaIXOdq7fumHgVdsBRThXvqf7RHD+ZkpMq3D0wsnCwIgCGvxH76ah1wZzPm0lg/tecL294e8ICDuQw+pyOVj96vMdiNF31ADd1BZCO505Y7jsEFdJCJvCGXNNvTr+ir4Vh9RdwBOXxxpX9DcQaaruVQ9nCty/ikBJ04Qok6ZVV8XXbN+HNu8iGVpLNrj1E1rRAJmeqfKiDuiG6ABqLDtq9beMS9K2xhKvwjG/z+AD3v6djipkdYjjlDOV6WNxWWv74LlzjSC9Se9ERATZfCj5U06LHO1yg8y+uIvRyoWIEaAFG7aFrEvfDH6OfzbhutGDMoxBThzKhxPDq9pm/N4cBcoRwGKgrlYmjLIl5Full/ArbLN1C6EXABn9Bu6lL7VrhwSj+HC0sp1vJb3ECmvtD7lzZsqejf4p6P/FPKLHUBNVr6sTJ9fHtOaYFi7DxQONqM/yoPBLB/TeZnB0KFFfKkCNM7YDOZjQ/UZscOZxztcYc7TeQ8dA0ZUfto=,iv:ZgZWZAQZmYUs0EqZuoTCTWQ52CnuSTS+zdIuIA1UNOM=,tag:vbI3RDpvU+X1xQo+lT7WbA==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvMVNBZDd4VndET2pMVjVr\nNkw4aW9HckJXYU0yREoyZ09oZ3JKSVlsQ3c4CkFRWURVN2tmOXNTZHhOdS91QW5a\nRlhhSDI3c2dHVVlTLzB3NjA4c1J2UncKLS0tIHFaL21rRWNpeGlqd0pIaXU5WFRP\neTZSOHpBTTE3ZjFIbXRuSnJjdlEwSXcKqWIxCnWJvE058ojm2RrwzXkTWQLZbE7L\nXPisgwudwY+vFaTziubbPp/U9P3LXs3oFhPSqgiuCkDNLETFkpw1ng==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHZHc0TzJKNzBUSG9GajVr\nazFWSS96Z3VXdDZOM2hPdVB4QTRhOEtVNDNRCmJkWm1TUGRwb0hpS1BBWm5WcURx\nQ21idzVZZzR5U0o3eDM1NmwySFpGQzAKLS0tIG51ZndsSDI1N2M4b280SW53eEF0\nMStNSU9odzRhY05SL05RYWlpaUlFQUkKoxVqeqZ9xAR4+JMcJXdEq0cq2CkZz63/\nSjwNDdCHjePc62yj5Qyw15zLrL2t7jvLUG44kPUbDuOIVwMH2KV2hQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYd1ZJTUtLbzY4d1hSRDA1\ndHdRQnhhUHVFMDJVOUQ0VFZCeW40S0lFODBJCmFvRSsyRkI3MDFGeDdkeGRSTVh5\nTEdwQTBWVVlwSjZHWXpoN0xzb0tuR1kKLS0tIEpvVU0rVTRWQUxLNW9zMFo3cVBr\ncGYxemF6MHlBS1dqSXM3aXRTZmdHQWMKjEcJJXRKCber6afB11j1VmWM3dObm45u\nkZ+E3bK1zd/L6YoLr1jF7GP9b62GjTG9Qv1M/JdKM4qlY//GmW6IIQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-06-18T18:37:59Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:UXFXrUrbmyp+MnBNDKKr4FP0WFhWH97W68KXlE/UzEvBVpeHste92UPzdX4FMk2rEd7ldsMcTV9hmRavWI5v/Y/y/hzuhdCkqsYfnixS15Z9PrfuFX6YjrpeoJ84s1itmhjimKe4mmXt/aND8DLJ49rQ/A1hebJ2UndBlsRIGmc=,iv:YJPVWuajQ0tzhuoIBcWw8Wy5IBy+HC0JcR69gelGzGM=,tag:YW0STCsswNaqjKBta1OwyQ==,type:str]",
|
||||||
|
"version": "3.13.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,7 +15,7 @@ in {
|
|||||||
|
|
||||||
# TODO: what does this do
|
# TODO: what does this do
|
||||||
# Let WAYLAND_DISPLAY be forwarded
|
# Let WAYLAND_DISPLAY be forwarded
|
||||||
AcceptEnv = "WAYLAND_DISPLAY";
|
# AcceptEnv = "WAYLAND_DISPLAY";
|
||||||
X11Forwarding = true;
|
X11Forwarding = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Generated
+941
-140
File diff suppressed because it is too large
Load Diff
@@ -3,20 +3,30 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||||
systems.url = "github:nix-systems/default-linux";
|
systems.url = "github:nix-systems/default-linux";
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
nixos-hardware.url = "github:nixos/nixos-hardware";
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
impermanence.url = "github:nix-community/impermanence";
|
||||||
nix-colors.url = "github:misterio77/nix-colors";
|
|
||||||
deploy-rs.url = "github:serokell/deploy-rs";
|
deploy-rs.url = "github:serokell/deploy-rs";
|
||||||
|
|
||||||
|
# For latest noctalia version
|
||||||
|
noctalia = {
|
||||||
|
url = "github:noctalia-dev/noctalia/cachix";
|
||||||
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix = {
|
||||||
|
url = "github:nix-community/stylix/release-26.05";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
nixos-generators = {
|
nixos-generators = {
|
||||||
url = "github:nix-community/nixos-generators";
|
url = "github:nix-community/nixos-generators";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-25.11";
|
url = "github:nix-community/home-manager/release-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nix-index-database = {
|
nix-index-database = {
|
||||||
@@ -42,8 +52,7 @@
|
|||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
nixvim = {
|
nixvim = {
|
||||||
url = "github:nix-community/nixvim/nixos-25.11";
|
url = "github:nix-community/nixvim/nixos-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
};
|
||||||
nix-matlab = {
|
nix-matlab = {
|
||||||
url = "gitlab:doronbehar/nix-matlab";
|
url = "gitlab:doronbehar/nix-matlab";
|
||||||
|
|||||||
@@ -2,5 +2,6 @@
|
|||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
nix-direnv.enable = true;
|
nix-direnv.enable = true;
|
||||||
|
mise.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ in {
|
|||||||
sqlite
|
sqlite
|
||||||
|
|
||||||
# Code formatters for use with doom emacs
|
# Code formatters for use with doom emacs
|
||||||
nixfmt-rfc-style # nix
|
nixfmt # nix
|
||||||
alejandra # nix
|
alejandra # nix
|
||||||
|
|
||||||
nixd # nix lsp
|
nixd # nix lsp
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
}:
|
}:
|
||||||
with lib; {
|
with lib; {
|
||||||
home.file = {
|
home.file = {
|
||||||
".config/starship.toml".source = ./starship.toml;
|
# ".config/starship.toml".source = ./starship.toml;
|
||||||
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ with lib; {
|
|||||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
nerd-fonts.fira-code
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
|
||||||
font-awesome
|
font-awesome
|
||||||
dejavu_fonts
|
dejavu_fonts
|
||||||
noto-fonts
|
noto-fonts
|
||||||
@@ -16,5 +18,7 @@ with lib; {
|
|||||||
fira-code
|
fira-code
|
||||||
fira-code-symbols
|
fira-code-symbols
|
||||||
source-code-pro
|
source-code-pro
|
||||||
|
source-sans
|
||||||
|
roboto
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
settings = {
|
settings = {
|
||||||
theme = "catppuccin-mocha";
|
# theme = "catppuccin-mocha";
|
||||||
font-size = 12;
|
font-size = 12;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
|
|
||||||
in {
|
|
||||||
# Do not make conditional, just toggle things on and off
|
|
||||||
imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
|
|
||||||
|
|
||||||
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
theme = {
|
|
||||||
name = inputs.nix-colors.colorschemes.${config.colorscheme.name}.slug;
|
|
||||||
package = gtkThemeFromScheme {
|
|
||||||
scheme = inputs.nix-colors.colorschemes.${config.colorscheme.name};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
iconTheme = {
|
|
||||||
name = "Papirus-Dark";
|
|
||||||
package = pkgs.papirus-icon-theme;
|
|
||||||
};
|
|
||||||
cursorTheme = {
|
|
||||||
package = pkgs.apple-cursor;
|
|
||||||
name = "macOS";
|
|
||||||
size = 24;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
|
||||||
}
|
|
||||||
@@ -4,27 +4,22 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
# inputs.hyprland.homeManagerModules.default
|
# inputs.hyprland.homeManagerModules.default
|
||||||
./waybar
|
# ./waybar
|
||||||
./wofi
|
# ./wofi
|
||||||
./mako
|
# ./mako
|
||||||
# ./hyprlock
|
# ./hyprlock
|
||||||
./wlogout
|
./wlogout
|
||||||
../gammastep
|
# ../gammastep
|
||||||
|
|
||||||
./swayidle.nix
|
# ./swayidle.nix
|
||||||
./swaylock.nix
|
./swaylock.nix
|
||||||
./zathura.nix
|
|
||||||
./waypipe.nix
|
./waypipe.nix
|
||||||
|
|
||||||
# ./hyprbars.nix
|
# ./hyprbars.nix
|
||||||
|
# inputs.noctalia.homeModules.default # Use for latest version from inputs
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
@@ -37,27 +32,48 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.imv.enable = true; # TODO: what is that
|
home.pointerCursor = {
|
||||||
|
hyprcursor.enable = true;
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
|
||||||
|
# noctalia-shell ipc call state all | jq .settings | xclip
|
||||||
|
xdg.configFile."noctalia/settings.json".source = ./noctalia.json;
|
||||||
|
|
||||||
|
# programs.noctalia = {
|
||||||
|
# enable = true;
|
||||||
|
# # noctalia config export full > noctalia.toml
|
||||||
|
# settings = ./noctalia.toml;
|
||||||
|
# };
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
unstable.noctalia-shell # Use for stable version instead of latest from the input
|
||||||
hyprpicker
|
hyprpicker
|
||||||
|
hyprcursor
|
||||||
brightnessctl
|
brightnessctl
|
||||||
|
playerctl
|
||||||
frajul.hyprshot-gui
|
frajul.hyprshot-gui
|
||||||
frajul.wl-ocr
|
frajul.wl-ocr
|
||||||
|
|
||||||
wf-recorder
|
wf-recorder
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "toggle-screen-mirroring" (
|
(pkgs.writeShellScriptBin "toggle-screen-mirroring"
|
||||||
builtins.readFile ./toggle-screen-mirroring.sh
|
(
|
||||||
))
|
builtins.replaceStrings
|
||||||
|
["@INTERNAL_MONITOR@" "@EXTERNAL_MONITOR@"]
|
||||||
|
[(builtins.elemAt config.monitors 0).name (builtins.elemAt config.monitors 1).name]
|
||||||
|
(builtins.readFile ./toggle-screen-mirroring.sh)
|
||||||
|
))
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "correct-workspace-locations" (
|
(pkgs.writeShellScriptBin "correct-workspace-locations" (
|
||||||
lib.concatStringsSep "\n" (
|
lib.concatStringsSep "\n" (
|
||||||
builtins.concatLists (
|
builtins.concatLists (
|
||||||
map (
|
map (
|
||||||
monitor:
|
monitor:
|
||||||
map (ws: "hyprctl dispatch moveworkspacetomonitor ${ws} ${monitor.name}") monitor.workspaces
|
map (ws: "hyprctl dispatch 'hl.dsp.workspace.move({workspace=\"${ws}\", monitor=\"${monitor.name}\"})'") monitor.workspaces
|
||||||
)
|
)
|
||||||
config.monitors
|
config.monitors
|
||||||
)
|
)
|
||||||
@@ -75,49 +91,46 @@ in {
|
|||||||
LIBSEAT_BACKEND = "logind";
|
LIBSEAT_BACKEND = "logind";
|
||||||
};
|
};
|
||||||
|
|
||||||
# services.hypridle = {
|
|
||||||
# enable = true;
|
|
||||||
# settings = {
|
|
||||||
# general = {
|
|
||||||
# after_sleep_cmd = "hyprctl dispatch dpms on";
|
|
||||||
# ignore_dbus_inhibit = false;
|
|
||||||
# lock_cmd = "hyprlock";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# listener = [
|
|
||||||
# {
|
|
||||||
# timeout = 300; # 5min
|
|
||||||
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
|
||||||
# on-resume = "brightnessctl -r"; # monitor backlight restore.
|
|
||||||
# }
|
|
||||||
|
|
||||||
# {
|
|
||||||
# timeout = 360; # 6min
|
|
||||||
# on-timeout = "hyprlock"; # lock screen when timeout has passed
|
|
||||||
# }
|
|
||||||
|
|
||||||
# {
|
|
||||||
# timeout = 600; # 10min
|
|
||||||
# on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
|
||||||
# on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# services.hypridle.enable = true; # can be configured
|
|
||||||
|
|
||||||
services.network-manager-applet.enable = true;
|
services.network-manager-applet.enable = true;
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
# Whether to enable Hyprland wayland compositor
|
|
||||||
enable = true;
|
enable = true;
|
||||||
# package = config.lib.nixGL.wrap (
|
|
||||||
# pkgs.hyprland.override {
|
configType = "lua";
|
||||||
# # nixgl needed?
|
extraConfig =
|
||||||
# wrapRuntimeDeps = false;
|
# Variables controllable by nix
|
||||||
# }
|
''
|
||||||
# );
|
-- Nix controlled variables
|
||||||
|
local terminal = "${config.terminal}"
|
||||||
|
local fileManager = "pcmanfm"
|
||||||
|
-- local menu = "wofi --show drun,run"
|
||||||
|
-- local menu = "noctalia msg panel-toggle launcher"
|
||||||
|
local menu = "noctalia-shell ipc call launcher toggle"
|
||||||
|
local calculator = "qalculate-gtk"
|
||||||
|
local browser = "firefox"
|
||||||
|
local editor = "emacs"
|
||||||
|
''
|
||||||
|
+ "-- Main config from `hyprland.lua`\n"
|
||||||
|
+ builtins.readFile ./hyprland.lua
|
||||||
|
+ "-- Monitor config\n"
|
||||||
|
+ lib.concatStringsSep "\n" (
|
||||||
|
map (
|
||||||
|
monitor: "hl.monitor({ output = \"${monitor.name}\", mode = \"preferred\", position = \"auto\", scale = \"auto\", mirror = \"\"})"
|
||||||
|
)
|
||||||
|
config.monitors
|
||||||
|
)
|
||||||
|
+ "\n-- For plugging in random monitors\n"
|
||||||
|
+ "hl.monitor({ output = \"\", mode = \"preferred\", position = \"auto\", scale = \"auto\", mirror = \"\"})\n"
|
||||||
|
+ "-- Assign workspaces to monitors\n"
|
||||||
|
+ lib.concatStringsSep "\n" (
|
||||||
|
builtins.concatLists (
|
||||||
|
map (
|
||||||
|
monitor:
|
||||||
|
map (ws: "hl.workspace_rule({ workspace = \"${ws}\", monitor = \"${monitor.name}\"})") monitor.workspaces
|
||||||
|
)
|
||||||
|
config.monitors
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
systemd = {
|
systemd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -134,319 +147,10 @@ in {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# package = inputs.hyprland.packages."${pkgs.system}".hyprland; # does only work with nixos-unstable
|
|
||||||
|
|
||||||
# The hyprland package to use (simplifies use of plugins)
|
|
||||||
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
|
||||||
# Whether to enable XWayland
|
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
|
|
||||||
# Optional
|
|
||||||
# Whether to enable hyprland-session.target on hyprland startup
|
|
||||||
# systemd.enable = true;
|
|
||||||
# Make PATH available to systemd services
|
|
||||||
# systemd.variables = [ "--all" ];
|
|
||||||
|
|
||||||
plugins = [
|
plugins = [
|
||||||
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable
|
|
||||||
# hyprlandPlugins.hyprbars
|
# hyprlandPlugins.hyprbars
|
||||||
];
|
];
|
||||||
|
|
||||||
submaps = {
|
|
||||||
"resize".settings = {
|
|
||||||
binde = [
|
|
||||||
", right, resizeactive, 20"
|
|
||||||
", left, resizeactive, -20 0"
|
|
||||||
", up, resizeactive, 0 -20"
|
|
||||||
", down, resizeactive, 0 20"
|
|
||||||
", l, resizeactive, 20"
|
|
||||||
", h, resizeactive, -20 0"
|
|
||||||
", k, resizeactive, 0 -20"
|
|
||||||
", j, resizeactive, 0 20"
|
|
||||||
];
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
", q, submap, reset"
|
|
||||||
", escape, submap, reset"
|
|
||||||
|
|
||||||
", catchall, submap, reset" # make any other keypress cancel the submap
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"open, reset".settings = {
|
|
||||||
bind = [
|
|
||||||
", e, exec, emacs"
|
|
||||||
", m, exec, open-messaging"
|
|
||||||
", b, exec, firefox"
|
|
||||||
|
|
||||||
", catchall, submap, reset" # make any other keypress cancel the submap
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
|
|
||||||
# Environment variables programs like emacs have access to
|
|
||||||
env = "TERMINAL,${config.terminal}";
|
|
||||||
|
|
||||||
# Monitors
|
|
||||||
monitor = ",preferred,auto,1";
|
|
||||||
|
|
||||||
# Autostart
|
|
||||||
exec-once = [
|
|
||||||
(lib.getExe pkgs.firefox)
|
|
||||||
(lib.getExe pkgs.waybar)
|
|
||||||
];
|
|
||||||
|
|
||||||
# Look and Feel
|
|
||||||
general = {
|
|
||||||
gaps_in = 5;
|
|
||||||
gaps_out = 5;
|
|
||||||
|
|
||||||
layout = "dwindle";
|
|
||||||
|
|
||||||
# "col.active_border" = "0xff${palette.base0C} 0xff${palette.base0D} 270deg";
|
|
||||||
# "col.inactive_border" = "0xff${palette.base00}";
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
# power saving
|
|
||||||
blur.enabled = false;
|
|
||||||
# power saving
|
|
||||||
shadow.enabled = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Dwindle layout
|
|
||||||
dwindle = {
|
|
||||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = true; # You probably want this
|
|
||||||
smart_split = false;
|
|
||||||
smart_resizing = false;
|
|
||||||
force_split = 2;
|
|
||||||
# no_gaps_when_only = 2; # with border
|
|
||||||
};
|
|
||||||
|
|
||||||
# Master layout
|
|
||||||
master = {
|
|
||||||
new_status = "slave";
|
|
||||||
# no_gaps_when_only = 2; # with border
|
|
||||||
mfact = 0.5; # Do not make master bigger
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windows,1,3,default,slide"
|
|
||||||
"fade,1,3,default"
|
|
||||||
"layers,1,3,default,slide"
|
|
||||||
"border,1,3,default"
|
|
||||||
"workspaces,1,3,default,slide"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
exec = [
|
|
||||||
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
|
||||||
"correct-workspace-locations"
|
|
||||||
];
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
# disable auto polling for config file changes
|
|
||||||
disable_autoreload = true;
|
|
||||||
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
|
|
||||||
vfr = true; # power saving
|
|
||||||
};
|
|
||||||
|
|
||||||
cursor = {
|
|
||||||
no_hardware_cursors = 1; # disable hardware cursors to fix tearing on kardorf
|
|
||||||
};
|
|
||||||
|
|
||||||
render = {
|
|
||||||
# we do, in fact, want direct scanout
|
|
||||||
direct_scanout = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Input
|
|
||||||
input = {
|
|
||||||
kb_layout = "de";
|
|
||||||
natural_scroll = false;
|
|
||||||
follow_mouse = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Window rules
|
|
||||||
windowrulev2 = [
|
|
||||||
"suppressevent maximize, class:.*"
|
|
||||||
"workspace 1, class:firefox"
|
|
||||||
"workspace 8, class:Zotero"
|
|
||||||
"workspace 9, class:nheko"
|
|
||||||
"workspace 9, class:Element"
|
|
||||||
"workspace 9, class:discord"
|
|
||||||
"workspace 9, class:org.telegram.desktop"
|
|
||||||
"workspace 10, class:thunderbird"
|
|
||||||
"float, class:qalculate-gtk"
|
|
||||||
"tile, class:MATLAB, title:MATLAB"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Workspace rules
|
|
||||||
workspace =
|
|
||||||
[
|
|
||||||
# smart gaps (none when only one window in workspace)
|
|
||||||
"w[t1], gapsin:0, gapsout:0, border:1"
|
|
||||||
"w[tg1], gapsin:0, gapsout:0, border:1"
|
|
||||||
"f[1], gapsin:0, gapsout:0, border:1"
|
|
||||||
]
|
|
||||||
# builds like "1, e-DP1" "2, HDMI-1" etc.
|
|
||||||
++ builtins.concatLists (
|
|
||||||
map (monitor: map (ws: "${ws}, monitor:${monitor.name}") monitor.workspaces) config.monitors
|
|
||||||
);
|
|
||||||
|
|
||||||
# Mouse binds
|
|
||||||
bindm = [
|
|
||||||
"$mod, mouse:272, movewindow" # leftclick
|
|
||||||
"$mod, mouse:273, resizewindow" # rightclick
|
|
||||||
];
|
|
||||||
|
|
||||||
# binds
|
|
||||||
bind =
|
|
||||||
[
|
|
||||||
# compositor commands
|
|
||||||
#
|
|
||||||
#
|
|
||||||
"$mod, R, submap, resize"
|
|
||||||
"$mod, O, submap, open"
|
|
||||||
#
|
|
||||||
|
|
||||||
"$mod, SPACE, focuswindow, floating"
|
|
||||||
"$mod SHIFT, SPACE, togglefloating,"
|
|
||||||
"$mod, F, fullscreen,"
|
|
||||||
"$mod, X, killactive,"
|
|
||||||
|
|
||||||
"$mod, -, togglesplit," # dwindle
|
|
||||||
|
|
||||||
# opening applications
|
|
||||||
"$mod, D, exec, wofi --show drun,run"
|
|
||||||
"$mod, E, exec, pcmanfm"
|
|
||||||
"$mod, Return, exec, ${config.terminal}"
|
|
||||||
"$mod, B, exec, firefox"
|
|
||||||
"$mod, C, exec, qalculate-gtk"
|
|
||||||
|
|
||||||
# other commands
|
|
||||||
"$mod SHIFT, E, exec, wlogout -p layer-shell"
|
|
||||||
"$mod, Escape, exec, wlogout -p layer-shell"
|
|
||||||
"$mod SHIFT, R, exec, hyprctl reload"
|
|
||||||
"$mod, Print, exec, hyprshot-gui"
|
|
||||||
", Print, exec, hyprshot-gui"
|
|
||||||
"$mod, P, exec, toggle-screen-mirroring; correct-workspace-locations"
|
|
||||||
|
|
||||||
# "$mod SHIFT, E, exec, pkill Hyprland"
|
|
||||||
# "$mod, G, togglegroup,"
|
|
||||||
# "$mod SHIFT, N, changegroupactive, f"
|
|
||||||
# "$mod SHIFT, P, changegroupactive, b"
|
|
||||||
# "$mod ALT, ,resizeactive,"
|
|
||||||
|
|
||||||
# media keys
|
|
||||||
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
", XF86AudioPlay, exec, playerctl play-pause"
|
|
||||||
", XF86AudioPause, exec, playerctl pause"
|
|
||||||
", XF86AudioStop, exec, playerctl stop"
|
|
||||||
", XF86AudioNext, exec, playerctl next"
|
|
||||||
", XF86AudioPrev, exec, playerctl previous"
|
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
", XF86MonBrightnessUp, exec, brightnessctl --class backlight set 5%+"
|
|
||||||
", XF86MonBrightnessDown, exec, brightnessctl --class backlight set 5%-"
|
|
||||||
|
|
||||||
# move focus
|
|
||||||
"$mod, left, movefocus, l"
|
|
||||||
"$mod, H, movefocus, l"
|
|
||||||
"$mod, right, movefocus, r"
|
|
||||||
"$mod, L, movefocus, r"
|
|
||||||
"$mod, up, movefocus, u"
|
|
||||||
"$mod, K, movefocus, u"
|
|
||||||
"$mod, down, movefocus, d"
|
|
||||||
"$mod, J, movefocus, d"
|
|
||||||
|
|
||||||
# move window
|
|
||||||
"$mod SHIFT, left, movewindow, l"
|
|
||||||
"$mod SHIFT, H, movewindow, l"
|
|
||||||
"$mod SHIFT, right, movewindow, r"
|
|
||||||
"$mod SHIFT, L, movewindow, r"
|
|
||||||
"$mod SHIFT, up, movewindow, u"
|
|
||||||
"$mod SHIFT, K, movewindow, u"
|
|
||||||
"$mod SHIFT, down, movewindow, d"
|
|
||||||
"$mod SHIFT, J, movewindow, d"
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
"$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, workspace, 10"
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
|
||||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
|
||||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
|
||||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
|
||||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
|
||||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
|
||||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
|
||||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
|
||||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
|
||||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
|
||||||
|
|
||||||
# Move active window to a workspace without following with mainMod + CTRL + [0-9]
|
|
||||||
"$mod CTRL, 1, movetoworkspacesilent, 1"
|
|
||||||
"$mod CTRL, 2, movetoworkspacesilent, 2"
|
|
||||||
"$mod CTRL, 3, movetoworkspacesilent, 3"
|
|
||||||
"$mod CTRL, 4, movetoworkspacesilent, 4"
|
|
||||||
"$mod CTRL, 5, movetoworkspacesilent, 5"
|
|
||||||
"$mod CTRL, 6, movetoworkspacesilent, 6"
|
|
||||||
"$mod CTRL, 7, movetoworkspacesilent, 7"
|
|
||||||
"$mod CTRL, 8, movetoworkspacesilent, 8"
|
|
||||||
"$mod CTRL, 9, movetoworkspacesilent, 9"
|
|
||||||
"$mod CTRL, 0, movetoworkspacesilent, 10"
|
|
||||||
]
|
|
||||||
++
|
|
||||||
# Screen lock
|
|
||||||
(
|
|
||||||
let
|
|
||||||
swaylock = lib.getExe config.programs.swaylock.package;
|
|
||||||
in
|
|
||||||
lib.optionals config.programs.swaylock.enable [
|
|
||||||
"$mod,TAB,exec,${swaylock} --daemonize"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
++
|
|
||||||
# Notification manager
|
|
||||||
(
|
|
||||||
let
|
|
||||||
makoctl = lib.getExe' config.services.mako.package "makoctl";
|
|
||||||
in
|
|
||||||
lib.optionals config.services.mako.enable [
|
|
||||||
"$mod,w,exec,${makoctl} dismiss"
|
|
||||||
"$mod SHIFT,W,exec,${makoctl} restore"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
# plugin = {
|
|
||||||
# hyprbars = {
|
|
||||||
# bar_text_size = 10;
|
|
||||||
# bar_height = 16;
|
|
||||||
# bar_text_font = "Ubuntu Nerd Font";
|
|
||||||
# bar_precedence_over_border = true;
|
|
||||||
# bar_color = "rgb(${palette.base01})";
|
|
||||||
|
|
||||||
# hyprbars-button = [ "rgb(${palette.base03}), 14, , hyprctl dispatch killactive" ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,306 @@
|
|||||||
|
-------------------
|
||||||
|
---- AUTOSTART ----
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
||||||
|
hl.on("hyprland.start", function()
|
||||||
|
-- hl.exec_cmd("waybar")
|
||||||
|
hl.exec_cmd("env QT_QPA_PLATFORMTHEME=qt5ct noctalia-shell") -- env ensures noctalia works alongside kde
|
||||||
|
hl.exec_cmd("firefox")
|
||||||
|
end)
|
||||||
|
hl.on("config.reloaded", function()
|
||||||
|
hl.exec_cmd("correct-workspace-locations")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-------------------------------
|
||||||
|
---- ENVIRONMENT VARIABLES ----
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
||||||
|
hl.env("TERMINAL", terminal) -- e.g. for emacs
|
||||||
|
|
||||||
|
-----------------------
|
||||||
|
----- PERMISSIONS -----
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/
|
||||||
|
-- Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||||
|
-- for security reasons
|
||||||
|
|
||||||
|
-- hl.config({
|
||||||
|
-- ecosystem = {
|
||||||
|
-- enforce_permissions = true,
|
||||||
|
-- },
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- hl.permission("/usr/(bin|local/bin)/grim", "screencopy", "allow")
|
||||||
|
-- hl.permission("/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", "screencopy", "allow")
|
||||||
|
-- hl.permission("/usr/(bin|local/bin)/hyprpm", "plugin", "allow")
|
||||||
|
|
||||||
|
-----------------------
|
||||||
|
---- LOOK AND FEEL ----
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
-- Refer to https://wiki.hypr.land/Configuring/Basics/Variables/
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
gaps_in = 5,
|
||||||
|
gaps_out = 5,
|
||||||
|
|
||||||
|
border_size = 2,
|
||||||
|
|
||||||
|
-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
resize_on_border = false,
|
||||||
|
|
||||||
|
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false,
|
||||||
|
|
||||||
|
layout = "dwindle",
|
||||||
|
},
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
-- power saving
|
||||||
|
shadow = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- power saving
|
||||||
|
blur = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
disable_autoreload = true,
|
||||||
|
},
|
||||||
|
cursor = {
|
||||||
|
no_hardware_cursors = 1, -- disable hardware cursors to fix tearing on kardorf
|
||||||
|
},
|
||||||
|
render = {
|
||||||
|
direct_scanout = 1,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Ref https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
||||||
|
-- "Smart gaps" / "No gaps when only"
|
||||||
|
hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 })
|
||||||
|
hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 })
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more
|
||||||
|
hl.config({
|
||||||
|
dwindle = {
|
||||||
|
preserve_split = false,
|
||||||
|
smart_split = false,
|
||||||
|
smart_resizing = true,
|
||||||
|
force_split = 2,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
----------------
|
||||||
|
---- MISC ----
|
||||||
|
----------------
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
misc = {
|
||||||
|
disable_hyprland_logo = true, -- If true disables the random hyprland logo / anime girl background. :(
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
---------------
|
||||||
|
---- INPUT ----
|
||||||
|
---------------
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
input = {
|
||||||
|
kb_layout = "de",
|
||||||
|
follow_mouse = 1,
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
---- KEYBINDINGS ----
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
local mainMod = "SUPER"
|
||||||
|
|
||||||
|
-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
|
||||||
|
hl.bind(mainMod .. " + RETURN", hl.dsp.exec_cmd(terminal))
|
||||||
|
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
|
||||||
|
hl.bind(mainMod .. " + D", hl.dsp.exec_cmd(menu))
|
||||||
|
hl.bind(mainMod .. " + B", hl.dsp.exec_cmd(browser))
|
||||||
|
hl.bind(mainMod .. " + C", hl.dsp.exec_cmd(calculator))
|
||||||
|
hl.bind(mainMod .. " + V", hl.dsp.exec_cmd(editor))
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + X", hl.dsp.window.close())
|
||||||
|
hl.bind(mainMod .. " + SHIFT + E", hl.dsp.exec_cmd("wlogout -p layer-shell"))
|
||||||
|
hl.bind(mainMod .. " + ESCAPE", hl.dsp.exec_cmd("wlogout -p layer-shell"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + R", hl.dsp.exec_cmd("hyprctl reload"))
|
||||||
|
hl.bind(mainMod .. " + PRINT", hl.dsp.exec_cmd("hyprshot-gui"))
|
||||||
|
hl.bind("PRINT", hl.dsp.exec_cmd("hyprshot-gui"))
|
||||||
|
hl.bind(mainMod .. " + P", hl.dsp.exec_cmd("toggle-screen-mirroring; correct-workspace-locations"))
|
||||||
|
hl.bind(mainMod .. " + TAB", hl.dsp.exec_cmd("swaylock --daemonize"))
|
||||||
|
hl.bind(mainMod .. " + W", hl.dsp.exec_cmd("makoctl dismiss"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + W", hl.dsp.exec_cmd("makoctl restore"))
|
||||||
|
hl.bind(mainMod .. " + R", hl.dsp.submap("resize"))
|
||||||
|
hl.bind(mainMod .. " + O", hl.dsp.submap("open"))
|
||||||
|
|
||||||
|
-- hl.bind(mainMod .. " + P", hl.dsp.window.pseudo())
|
||||||
|
-- hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit")) -- dwindle only
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + SHIFT + SPACE", hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
hl.bind(mainMod .. " + SPACE", hl.dsp.focus({ window = "floating" }))
|
||||||
|
hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen({ action = "toggle" }))
|
||||||
|
|
||||||
|
-- Move focus with mainMod + arrow keys
|
||||||
|
hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" }))
|
||||||
|
hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" }))
|
||||||
|
hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" }))
|
||||||
|
hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" }))
|
||||||
|
hl.bind(mainMod .. " + H", hl.dsp.focus({ direction = "left" }))
|
||||||
|
hl.bind(mainMod .. " + L", hl.dsp.focus({ direction = "right" }))
|
||||||
|
hl.bind(mainMod .. " + K", hl.dsp.focus({ direction = "up" }))
|
||||||
|
hl.bind(mainMod .. " + J", hl.dsp.focus({ direction = "down" }))
|
||||||
|
|
||||||
|
-- Move window with mainMod + SHIFT + arrow keys
|
||||||
|
hl.bind(mainMod .. " + SHIFT + left", hl.dsp.window.move({ direction = "left" }))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + right", hl.dsp.window.move({ direction = "right" }))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + up", hl.dsp.window.move({ direction = "up" }))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + down", hl.dsp.window.move({ direction = "down" }))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + H", hl.dsp.window.move({ direction = "left" }))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + L", hl.dsp.window.move({ direction = "right" }))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + K", hl.dsp.window.move({ direction = "up" }))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + J", hl.dsp.window.move({ direction = "down" }))
|
||||||
|
|
||||||
|
for i = 1, 10 do
|
||||||
|
local key = i % 10 -- 10 maps to key 0
|
||||||
|
-- Switch workspaces
|
||||||
|
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i }))
|
||||||
|
-- Move active window to a workspace
|
||||||
|
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
|
||||||
|
-- Move active window to a workspace without following
|
||||||
|
hl.bind(mainMod .. " + CTRL + " .. key, hl.dsp.window.move({ workspace = i }))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Example special workspace (scratchpad)
|
||||||
|
-- hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
|
||||||
|
-- hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
|
||||||
|
|
||||||
|
-- Scroll through existing workspaces with mainMod + scroll
|
||||||
|
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||||
|
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||||
|
|
||||||
|
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true }) -- leftclick
|
||||||
|
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true }) -- rightclick
|
||||||
|
|
||||||
|
-- Laptop multimedia keys for volume and LCD brightness
|
||||||
|
hl.bind(
|
||||||
|
"XF86AudioRaiseVolume",
|
||||||
|
hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"),
|
||||||
|
{ locked = true, repeating = true }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
"XF86AudioLowerVolume",
|
||||||
|
hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"),
|
||||||
|
{ locked = true, repeating = true }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
"XF86AudioMute",
|
||||||
|
hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"),
|
||||||
|
{ locked = true, repeating = true }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
"XF86AudioMicMute",
|
||||||
|
hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"),
|
||||||
|
{ locked = true, repeating = true }
|
||||||
|
)
|
||||||
|
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
||||||
|
|
||||||
|
-- Requires playerctl
|
||||||
|
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
|
||||||
|
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||||
|
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||||
|
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
||||||
|
|
||||||
|
hl.define_submap("resize", function()
|
||||||
|
-- Set repeating binds for resizing the active window.
|
||||||
|
hl.bind("right", hl.dsp.window.resize({ x = 20, y = 0, relative = true }), { repeating = true })
|
||||||
|
hl.bind("left", hl.dsp.window.resize({ x = -20, y = 0, relative = true }), { repeating = true })
|
||||||
|
hl.bind("up", hl.dsp.window.resize({ x = 0, y = 20, relative = true }), { repeating = true })
|
||||||
|
hl.bind("down", hl.dsp.window.resize({ x = 0, y = -20, relative = true }), { repeating = true })
|
||||||
|
hl.bind("H", hl.dsp.window.resize({ x = 20, y = 0, relative = true }), { repeating = true })
|
||||||
|
hl.bind("L", hl.dsp.window.resize({ x = -20, y = 0, relative = true }), { repeating = true })
|
||||||
|
hl.bind("K", hl.dsp.window.resize({ x = 0, y = 20, relative = true }), { repeating = true })
|
||||||
|
hl.bind("J", hl.dsp.window.resize({ x = 0, y = -20, relative = true }), { repeating = true })
|
||||||
|
|
||||||
|
-- Use `reset` to go back to the global submap
|
||||||
|
hl.bind("escape", hl.dsp.submap("reset"))
|
||||||
|
end)
|
||||||
|
|
||||||
|
hl.define_submap("open", "reset", function()
|
||||||
|
hl.bind("E", hl.dsp.exec_cmd("emacs"))
|
||||||
|
hl.bind("M", hl.dsp.exec_cmd("open-messaging"))
|
||||||
|
hl.bind("B", hl.dsp.exec_cmd("firefox"))
|
||||||
|
|
||||||
|
-- Use `reset` to go back to the global submap
|
||||||
|
hl.bind("escape", hl.dsp.submap("reset"))
|
||||||
|
end)
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
---- WINDOWS AND WORKSPACES ----
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/
|
||||||
|
-- and https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
||||||
|
|
||||||
|
-- Default workspaces for certain windows
|
||||||
|
hl.window_rule({ match = { class = "firefox" }, workspace = "1" })
|
||||||
|
hl.window_rule({ match = { class = "Zotero" }, workspace = "8" })
|
||||||
|
hl.window_rule({ match = { class = "nheko" }, workspace = "9" })
|
||||||
|
hl.window_rule({ match = { class = "element" }, workspace = "9" })
|
||||||
|
hl.window_rule({ match = { class = "discord" }, workspace = "9" })
|
||||||
|
hl.window_rule({ match = { class = "org.telegram.desktop" }, workspace = "9" })
|
||||||
|
hl.window_rule({ match = { class = "thunderbird" }, workspace = "10" })
|
||||||
|
|
||||||
|
-- Float calculator
|
||||||
|
hl.window_rule({ match = { class = "qalculate-gtk" }, float = true })
|
||||||
|
|
||||||
|
-- Example window rules that are useful
|
||||||
|
|
||||||
|
hl.window_rule({
|
||||||
|
-- Ignore maximize requests from all apps.
|
||||||
|
name = "suppress-maximize-events",
|
||||||
|
match = { class = ".*" },
|
||||||
|
|
||||||
|
suppress_event = "maximize",
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.window_rule({
|
||||||
|
-- Fix some dragging issues with XWayland
|
||||||
|
name = "fix-xwayland-drags",
|
||||||
|
match = {
|
||||||
|
class = "^$",
|
||||||
|
title = "^$",
|
||||||
|
xwayland = true,
|
||||||
|
float = true,
|
||||||
|
fullscreen = false,
|
||||||
|
pin = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
no_focus = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Disable animations for selection, fixes screenshots
|
||||||
|
hl.layer_rule({
|
||||||
|
name = "no-anim-overlay",
|
||||||
|
match = { namespace = "^my-overlay$" }, -- selection
|
||||||
|
no_anim = true,
|
||||||
|
})
|
||||||
@@ -1,16 +1,4 @@
|
|||||||
{
|
{
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
programs.hyprlock.enable = true;
|
programs.hyprlock.enable = true;
|
||||||
programs.hyprlock.settings = {
|
programs.hyprlock.settings = {
|
||||||
general = {
|
general = {
|
||||||
@@ -19,15 +7,6 @@ in {
|
|||||||
ignore_empty_input = true;
|
ignore_empty_input = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
background = [
|
|
||||||
{
|
|
||||||
color = "#${palette.base00}";
|
|
||||||
# path = "screenshot";
|
|
||||||
# blur_passes = 3;
|
|
||||||
# blur_size = 8;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
input-field = [
|
input-field = [
|
||||||
{
|
{
|
||||||
size = "200, 50";
|
size = "200, 50";
|
||||||
@@ -35,9 +14,6 @@ in {
|
|||||||
monitor = "";
|
monitor = "";
|
||||||
dots_center = true;
|
dots_center = true;
|
||||||
fade_on_empty = false;
|
fade_on_empty = false;
|
||||||
font_color = "#${palette.base0B}";
|
|
||||||
inner_color = "#${palette.base01}";
|
|
||||||
outer_color = "#${palette.base05}";
|
|
||||||
outline_thickness = 5;
|
outline_thickness = 5;
|
||||||
placeholder_text = "Password...";
|
placeholder_text = "Password...";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,10 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [libnotify];
|
home.packages = with pkgs; [libnotify];
|
||||||
|
|
||||||
services.mako = {
|
services.mako = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
defaultTimeout = "5000"; # milliseconds, can be overwritten by notification sender
|
defaultTimeout = "5000"; # milliseconds, can be overwritten by notification sender
|
||||||
backgroundColor = "#${palette.base00}";
|
|
||||||
textColor = "#${palette.base05}";
|
|
||||||
borderColor = "#${palette.base0D}";
|
|
||||||
progressColor = "over #${palette.base02}";
|
|
||||||
extraConfig = ''
|
|
||||||
[urgency=high]
|
|
||||||
border-color=#${palette.base09}
|
|
||||||
# '';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,646 @@
|
|||||||
|
{
|
||||||
|
"settingsVersion": 59,
|
||||||
|
"bar": {
|
||||||
|
"barType": "simple",
|
||||||
|
"position": "bottom",
|
||||||
|
"monitors": [],
|
||||||
|
"density": "default",
|
||||||
|
"showOutline": false,
|
||||||
|
"showCapsule": false,
|
||||||
|
"capsuleOpacity": 1,
|
||||||
|
"capsuleColorKey": "none",
|
||||||
|
"widgetSpacing": 6,
|
||||||
|
"contentPadding": 2,
|
||||||
|
"fontScale": 1,
|
||||||
|
"enableExclusionZoneInset": false,
|
||||||
|
"backgroundOpacity": 1,
|
||||||
|
"useSeparateOpacity": false,
|
||||||
|
"marginVertical": 4,
|
||||||
|
"marginHorizontal": 4,
|
||||||
|
"frameThickness": 8,
|
||||||
|
"frameRadius": 12,
|
||||||
|
"outerCorners": false,
|
||||||
|
"hideOnOverview": false,
|
||||||
|
"displayMode": "always_visible",
|
||||||
|
"autoHideDelay": 500,
|
||||||
|
"autoShowDelay": 150,
|
||||||
|
"showOnWorkspaceSwitch": true,
|
||||||
|
"widgets": {
|
||||||
|
"left": [
|
||||||
|
{
|
||||||
|
"characterCount": 2,
|
||||||
|
"colorizeIcons": false,
|
||||||
|
"emptyColor": "secondary",
|
||||||
|
"enableScrollWheel": true,
|
||||||
|
"focusedColor": "primary",
|
||||||
|
"followFocusedScreen": false,
|
||||||
|
"fontWeight": "bold",
|
||||||
|
"groupedBorderOpacity": 1,
|
||||||
|
"hideUnoccupied": false,
|
||||||
|
"iconScale": 0.8,
|
||||||
|
"id": "Workspace",
|
||||||
|
"labelMode": "index",
|
||||||
|
"occupiedColor": "secondary",
|
||||||
|
"pillSize": 0.8,
|
||||||
|
"showApplications": false,
|
||||||
|
"showApplicationsHover": false,
|
||||||
|
"showBadge": true,
|
||||||
|
"showLabelsOnlyWhenOccupied": false,
|
||||||
|
"unfocusedIconsOpacity": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"center": [],
|
||||||
|
"right": [
|
||||||
|
{
|
||||||
|
"compactMode": false,
|
||||||
|
"diskPath": "/",
|
||||||
|
"iconColor": "none",
|
||||||
|
"id": "SystemMonitor",
|
||||||
|
"showCpuCores": false,
|
||||||
|
"showCpuFreq": false,
|
||||||
|
"showCpuTemp": false,
|
||||||
|
"showCpuUsage": true,
|
||||||
|
"showDiskAvailable": true,
|
||||||
|
"showDiskUsage": true,
|
||||||
|
"showDiskUsageAsPercent": false,
|
||||||
|
"showGpuTemp": false,
|
||||||
|
"showLoadAverage": false,
|
||||||
|
"showMemoryAsPercent": true,
|
||||||
|
"showMemoryUsage": true,
|
||||||
|
"showNetworkStats": false,
|
||||||
|
"showSwapUsage": false,
|
||||||
|
"textColor": "none",
|
||||||
|
"useMonospaceFont": true,
|
||||||
|
"usePadding": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"compactMode": false,
|
||||||
|
"diskPath": "/",
|
||||||
|
"iconColor": "none",
|
||||||
|
"id": "SystemMonitor",
|
||||||
|
"showCpuCores": false,
|
||||||
|
"showCpuFreq": false,
|
||||||
|
"showCpuTemp": false,
|
||||||
|
"showCpuUsage": false,
|
||||||
|
"showDiskAvailable": false,
|
||||||
|
"showDiskUsage": false,
|
||||||
|
"showDiskUsageAsPercent": false,
|
||||||
|
"showGpuTemp": false,
|
||||||
|
"showLoadAverage": false,
|
||||||
|
"showMemoryAsPercent": false,
|
||||||
|
"showMemoryUsage": false,
|
||||||
|
"showNetworkStats": true,
|
||||||
|
"showSwapUsage": false,
|
||||||
|
"textColor": "none",
|
||||||
|
"useMonospaceFont": true,
|
||||||
|
"usePadding": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"displayMode": "alwaysShow",
|
||||||
|
"iconColor": "none",
|
||||||
|
"id": "Volume",
|
||||||
|
"middleClickCommand": "pwvucontrol || pavucontrol",
|
||||||
|
"textColor": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"deviceNativePath": "__default__",
|
||||||
|
"displayMode": "graphic-clean",
|
||||||
|
"hideIfIdle": false,
|
||||||
|
"hideIfNotDetected": true,
|
||||||
|
"id": "Battery",
|
||||||
|
"showNoctaliaPerformance": false,
|
||||||
|
"showPowerProfiles": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"clockColor": "none",
|
||||||
|
"customFont": "",
|
||||||
|
"formatHorizontal": "ddd, dd.MM. HH:mm:ss",
|
||||||
|
"formatVertical": "HH mm - dd MM",
|
||||||
|
"id": "Clock",
|
||||||
|
"tooltipFormat": "HH:mm ddd, MMM dd",
|
||||||
|
"useCustomFont": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"blacklist": [],
|
||||||
|
"chevronColor": "none",
|
||||||
|
"colorizeIcons": false,
|
||||||
|
"drawerEnabled": false,
|
||||||
|
"hidePassive": false,
|
||||||
|
"id": "Tray",
|
||||||
|
"pinned": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mouseWheelAction": "workspace",
|
||||||
|
"reverseScroll": false,
|
||||||
|
"mouseWheelWrap": true,
|
||||||
|
"middleClickAction": "launcherPanel",
|
||||||
|
"middleClickFollowMouse": false,
|
||||||
|
"middleClickCommand": "",
|
||||||
|
"rightClickAction": "controlCenter",
|
||||||
|
"rightClickFollowMouse": true,
|
||||||
|
"rightClickCommand": "",
|
||||||
|
"screenOverrides": []
|
||||||
|
},
|
||||||
|
"general": {
|
||||||
|
"avatarImage": "/home/julian/.face",
|
||||||
|
"dimmerOpacity": 0.2,
|
||||||
|
"showScreenCorners": false,
|
||||||
|
"forceBlackScreenCorners": false,
|
||||||
|
"scaleRatio": 1,
|
||||||
|
"radiusRatio": 1,
|
||||||
|
"iRadiusRatio": 1,
|
||||||
|
"boxRadiusRatio": 1,
|
||||||
|
"screenRadiusRatio": 1,
|
||||||
|
"animationSpeed": 1,
|
||||||
|
"animationDisabled": false,
|
||||||
|
"compactLockScreen": false,
|
||||||
|
"lockScreenAnimations": false,
|
||||||
|
"lockOnSuspend": true,
|
||||||
|
"showSessionButtonsOnLockScreen": true,
|
||||||
|
"showHibernateOnLockScreen": false,
|
||||||
|
"enableLockScreenMediaControls": false,
|
||||||
|
"enableShadows": true,
|
||||||
|
"enableBlurBehind": true,
|
||||||
|
"shadowDirection": "bottom_right",
|
||||||
|
"shadowOffsetX": 2,
|
||||||
|
"shadowOffsetY": 3,
|
||||||
|
"language": "",
|
||||||
|
"allowPanelsOnScreenWithoutBar": true,
|
||||||
|
"showChangelogOnStartup": true,
|
||||||
|
"telemetryEnabled": false,
|
||||||
|
"enableLockScreenCountdown": false,
|
||||||
|
"lockScreenCountdownDuration": 10000,
|
||||||
|
"autoStartAuth": false,
|
||||||
|
"allowPasswordWithFprintd": false,
|
||||||
|
"clockStyle": "custom",
|
||||||
|
"clockFormat": "hh\\nmm",
|
||||||
|
"passwordChars": false,
|
||||||
|
"lockScreenMonitors": [],
|
||||||
|
"lockScreenBlur": 0,
|
||||||
|
"lockScreenTint": 0,
|
||||||
|
"keybinds": {
|
||||||
|
"keyUp": [
|
||||||
|
"Up"
|
||||||
|
],
|
||||||
|
"keyDown": [
|
||||||
|
"Down"
|
||||||
|
],
|
||||||
|
"keyLeft": [
|
||||||
|
"Left"
|
||||||
|
],
|
||||||
|
"keyRight": [
|
||||||
|
"Right"
|
||||||
|
],
|
||||||
|
"keyEnter": [
|
||||||
|
"Return",
|
||||||
|
"Enter"
|
||||||
|
],
|
||||||
|
"keyEscape": [
|
||||||
|
"Esc"
|
||||||
|
],
|
||||||
|
"keyRemove": [
|
||||||
|
"Del"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"reverseScroll": false,
|
||||||
|
"smoothScrollEnabled": true
|
||||||
|
},
|
||||||
|
"ui": {
|
||||||
|
"fontDefault": "DejaVu Sans",
|
||||||
|
"fontFixed": "DejaVu Sans Mono",
|
||||||
|
"fontDefaultScale": 1,
|
||||||
|
"fontFixedScale": 1,
|
||||||
|
"tooltipsEnabled": true,
|
||||||
|
"scrollbarAlwaysVisible": true,
|
||||||
|
"boxBorderEnabled": false,
|
||||||
|
"panelBackgroundOpacity": 1,
|
||||||
|
"translucentWidgets": false,
|
||||||
|
"panelsAttachedToBar": true,
|
||||||
|
"settingsPanelMode": "attached",
|
||||||
|
"settingsPanelSideBarCardStyle": false
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"name": "",
|
||||||
|
"weatherEnabled": true,
|
||||||
|
"weatherShowEffects": true,
|
||||||
|
"weatherTaliaMascotAlways": false,
|
||||||
|
"useFahrenheit": false,
|
||||||
|
"use12hourFormat": false,
|
||||||
|
"showWeekNumberInCalendar": false,
|
||||||
|
"showCalendarEvents": true,
|
||||||
|
"showCalendarWeather": true,
|
||||||
|
"analogClockInCalendar": false,
|
||||||
|
"firstDayOfWeek": -1,
|
||||||
|
"hideWeatherTimezone": false,
|
||||||
|
"hideWeatherCityName": false,
|
||||||
|
"autoLocate": false
|
||||||
|
},
|
||||||
|
"calendar": {
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"id": "calendar-header-card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"id": "calendar-month-card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"id": "weather-card"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wallpaper": {
|
||||||
|
"enabled": false,
|
||||||
|
"overviewEnabled": false,
|
||||||
|
"directory": "/home/julian/Pictures/Wallpapers",
|
||||||
|
"monitorDirectories": [],
|
||||||
|
"enableMultiMonitorDirectories": false,
|
||||||
|
"showHiddenFiles": false,
|
||||||
|
"viewMode": "single",
|
||||||
|
"setWallpaperOnAllMonitors": true,
|
||||||
|
"linkLightAndDarkWallpapers": true,
|
||||||
|
"fillMode": "crop",
|
||||||
|
"fillColor": "#000000",
|
||||||
|
"useSolidColor": false,
|
||||||
|
"solidColor": "#1a1a2e",
|
||||||
|
"automationEnabled": false,
|
||||||
|
"wallpaperChangeMode": "random",
|
||||||
|
"randomIntervalSec": 300,
|
||||||
|
"transitionDuration": 1500,
|
||||||
|
"transitionType": [
|
||||||
|
"fade",
|
||||||
|
"disc",
|
||||||
|
"stripes",
|
||||||
|
"wipe",
|
||||||
|
"pixelate",
|
||||||
|
"honeycomb"
|
||||||
|
],
|
||||||
|
"skipStartupTransition": false,
|
||||||
|
"transitionEdgeSmoothness": 0.05,
|
||||||
|
"panelPosition": "follow_bar",
|
||||||
|
"hideWallpaperFilenames": false,
|
||||||
|
"useOriginalImages": false,
|
||||||
|
"overviewBlur": 0.4,
|
||||||
|
"overviewTint": 0.6,
|
||||||
|
"useWallhaven": false,
|
||||||
|
"wallhavenQuery": "",
|
||||||
|
"wallhavenSorting": "relevance",
|
||||||
|
"wallhavenOrder": "desc",
|
||||||
|
"wallhavenCategories": "111",
|
||||||
|
"wallhavenPurity": "100",
|
||||||
|
"wallhavenRatios": "",
|
||||||
|
"wallhavenApiKey": "",
|
||||||
|
"wallhavenResolutionMode": "atleast",
|
||||||
|
"wallhavenResolutionWidth": "",
|
||||||
|
"wallhavenResolutionHeight": "",
|
||||||
|
"sortOrder": "name",
|
||||||
|
"favorites": []
|
||||||
|
},
|
||||||
|
"appLauncher": {
|
||||||
|
"enableClipboardHistory": false,
|
||||||
|
"autoPasteClipboard": false,
|
||||||
|
"enableClipPreview": true,
|
||||||
|
"clipboardWrapText": true,
|
||||||
|
"enableClipboardSmartIcons": true,
|
||||||
|
"enableClipboardChips": true,
|
||||||
|
"clipboardWatchTextCommand": "wl-paste --type text --watch cliphist store",
|
||||||
|
"clipboardWatchImageCommand": "wl-paste --type image --watch cliphist store",
|
||||||
|
"position": "center",
|
||||||
|
"pinnedApps": [],
|
||||||
|
"sortByMostUsed": true,
|
||||||
|
"terminalCommand": "alacritty -e",
|
||||||
|
"customLaunchPrefixEnabled": false,
|
||||||
|
"customLaunchPrefix": "",
|
||||||
|
"viewMode": "list",
|
||||||
|
"showCategories": true,
|
||||||
|
"iconMode": "tabler",
|
||||||
|
"showIconBackground": false,
|
||||||
|
"enableSettingsSearch": true,
|
||||||
|
"enableWindowsSearch": true,
|
||||||
|
"enableSessionSearch": true,
|
||||||
|
"ignoreMouseInput": false,
|
||||||
|
"screenshotAnnotationTool": "",
|
||||||
|
"overviewLayer": false,
|
||||||
|
"density": "default"
|
||||||
|
},
|
||||||
|
"controlCenter": {
|
||||||
|
"position": "close_to_bar_button",
|
||||||
|
"diskPath": "/",
|
||||||
|
"shortcuts": {
|
||||||
|
"left": [
|
||||||
|
{
|
||||||
|
"id": "Network"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Bluetooth"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "WallpaperSelector"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "NoctaliaPerformance"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"right": [
|
||||||
|
{
|
||||||
|
"id": "Notifications"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "PowerProfile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "KeepAwake"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "NightLight"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"id": "profile-card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"id": "shortcuts-card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"id": "audio-card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"id": "brightness-card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"id": "weather-card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"id": "media-sysmon-card"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"systemMonitor": {
|
||||||
|
"cpuWarningThreshold": 80,
|
||||||
|
"cpuCriticalThreshold": 90,
|
||||||
|
"tempWarningThreshold": 80,
|
||||||
|
"tempCriticalThreshold": 90,
|
||||||
|
"gpuWarningThreshold": 80,
|
||||||
|
"gpuCriticalThreshold": 90,
|
||||||
|
"memWarningThreshold": 80,
|
||||||
|
"memCriticalThreshold": 90,
|
||||||
|
"swapWarningThreshold": 80,
|
||||||
|
"swapCriticalThreshold": 90,
|
||||||
|
"diskWarningThreshold": 80,
|
||||||
|
"diskCriticalThreshold": 90,
|
||||||
|
"diskAvailWarningThreshold": 20,
|
||||||
|
"diskAvailCriticalThreshold": 10,
|
||||||
|
"batteryWarningThreshold": 20,
|
||||||
|
"batteryCriticalThreshold": 5,
|
||||||
|
"enableDgpuMonitoring": false,
|
||||||
|
"useCustomColors": false,
|
||||||
|
"warningColor": "",
|
||||||
|
"criticalColor": "",
|
||||||
|
"externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor"
|
||||||
|
},
|
||||||
|
"noctaliaPerformance": {
|
||||||
|
"disableWallpaper": true,
|
||||||
|
"disableDesktopWidgets": true
|
||||||
|
},
|
||||||
|
"dock": {
|
||||||
|
"enabled": false,
|
||||||
|
"position": "bottom",
|
||||||
|
"displayMode": "auto_hide",
|
||||||
|
"dockType": "floating",
|
||||||
|
"backgroundOpacity": 1,
|
||||||
|
"floatingRatio": 1,
|
||||||
|
"size": 1,
|
||||||
|
"onlySameOutput": true,
|
||||||
|
"monitors": [],
|
||||||
|
"pinnedApps": [],
|
||||||
|
"colorizeIcons": false,
|
||||||
|
"showLauncherIcon": false,
|
||||||
|
"launcherPosition": "end",
|
||||||
|
"launcherUseDistroLogo": false,
|
||||||
|
"launcherIcon": "",
|
||||||
|
"launcherIconColor": "none",
|
||||||
|
"pinnedStatic": false,
|
||||||
|
"inactiveIndicators": false,
|
||||||
|
"groupApps": false,
|
||||||
|
"groupContextMenuMode": "extended",
|
||||||
|
"groupClickAction": "cycle",
|
||||||
|
"groupIndicatorStyle": "dots",
|
||||||
|
"deadOpacity": 0.6,
|
||||||
|
"animationSpeed": 1,
|
||||||
|
"sitOnFrame": false,
|
||||||
|
"showDockIndicator": false,
|
||||||
|
"indicatorThickness": 3,
|
||||||
|
"indicatorColor": "primary",
|
||||||
|
"indicatorOpacity": 0.6
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"bluetoothRssiPollingEnabled": false,
|
||||||
|
"bluetoothRssiPollIntervalMs": 60000,
|
||||||
|
"networkPanelView": "wifi",
|
||||||
|
"wifiDetailsViewMode": "grid",
|
||||||
|
"bluetoothDetailsViewMode": "grid",
|
||||||
|
"bluetoothHideUnnamedDevices": false,
|
||||||
|
"disableDiscoverability": false,
|
||||||
|
"bluetoothAutoConnect": true
|
||||||
|
},
|
||||||
|
"sessionMenu": {
|
||||||
|
"enableCountdown": false,
|
||||||
|
"countdownDuration": 10000,
|
||||||
|
"position": "center",
|
||||||
|
"showHeader": true,
|
||||||
|
"showKeybinds": true,
|
||||||
|
"largeButtonsStyle": false,
|
||||||
|
"largeButtonsLayout": "single-row",
|
||||||
|
"powerOptions": [
|
||||||
|
{
|
||||||
|
"action": "lock",
|
||||||
|
"command": "",
|
||||||
|
"countdownEnabled": true,
|
||||||
|
"enabled": true,
|
||||||
|
"keybind": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "suspend",
|
||||||
|
"command": "",
|
||||||
|
"countdownEnabled": true,
|
||||||
|
"enabled": false,
|
||||||
|
"keybind": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "hibernate",
|
||||||
|
"command": "",
|
||||||
|
"countdownEnabled": true,
|
||||||
|
"enabled": false,
|
||||||
|
"keybind": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "reboot",
|
||||||
|
"command": "",
|
||||||
|
"countdownEnabled": true,
|
||||||
|
"enabled": true,
|
||||||
|
"keybind": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "logout",
|
||||||
|
"command": "",
|
||||||
|
"countdownEnabled": true,
|
||||||
|
"enabled": true,
|
||||||
|
"keybind": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "shutdown",
|
||||||
|
"command": "",
|
||||||
|
"countdownEnabled": true,
|
||||||
|
"enabled": true,
|
||||||
|
"keybind": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "rebootToUefi",
|
||||||
|
"command": "",
|
||||||
|
"countdownEnabled": true,
|
||||||
|
"enabled": false,
|
||||||
|
"keybind": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "userspaceReboot",
|
||||||
|
"command": "",
|
||||||
|
"countdownEnabled": true,
|
||||||
|
"enabled": false,
|
||||||
|
"keybind": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"enabled": false,
|
||||||
|
"enableMarkdown": false,
|
||||||
|
"density": "default",
|
||||||
|
"monitors": [],
|
||||||
|
"location": "top_right",
|
||||||
|
"overlayLayer": true,
|
||||||
|
"backgroundOpacity": 1,
|
||||||
|
"respectExpireTimeout": false,
|
||||||
|
"lowUrgencyDuration": 3,
|
||||||
|
"normalUrgencyDuration": 8,
|
||||||
|
"criticalUrgencyDuration": 15,
|
||||||
|
"clearDismissed": true,
|
||||||
|
"saveToHistory": {
|
||||||
|
"low": true,
|
||||||
|
"normal": true,
|
||||||
|
"critical": true
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"enabled": false,
|
||||||
|
"volume": 0.5,
|
||||||
|
"separateSounds": false,
|
||||||
|
"criticalSoundFile": "",
|
||||||
|
"normalSoundFile": "",
|
||||||
|
"lowSoundFile": "",
|
||||||
|
"excludedApps": "discord,firefox,chrome,chromium,edge"
|
||||||
|
},
|
||||||
|
"enableMediaToast": false,
|
||||||
|
"enableKeyboardLayoutToast": true,
|
||||||
|
"enableBatteryToast": true
|
||||||
|
},
|
||||||
|
"osd": {
|
||||||
|
"enabled": true,
|
||||||
|
"location": "top_right",
|
||||||
|
"autoHideMs": 2000,
|
||||||
|
"overlayLayer": true,
|
||||||
|
"backgroundOpacity": 1,
|
||||||
|
"enabledTypes": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"monitors": []
|
||||||
|
},
|
||||||
|
"audio": {
|
||||||
|
"volumeStep": 5,
|
||||||
|
"volumeOverdrive": false,
|
||||||
|
"spectrumFrameRate": 30,
|
||||||
|
"visualizerType": "linear",
|
||||||
|
"spectrumMirrored": true,
|
||||||
|
"mprisBlacklist": [],
|
||||||
|
"preferredPlayer": "",
|
||||||
|
"volumeFeedback": false,
|
||||||
|
"volumeFeedbackSoundFile": ""
|
||||||
|
},
|
||||||
|
"brightness": {
|
||||||
|
"brightnessStep": 5,
|
||||||
|
"enforceMinimum": true,
|
||||||
|
"enableDdcSupport": false,
|
||||||
|
"backlightDeviceMappings": []
|
||||||
|
},
|
||||||
|
"colorSchemes": {
|
||||||
|
"useWallpaperColors": false,
|
||||||
|
"predefinedScheme": "Noctalia (default)",
|
||||||
|
"darkMode": true,
|
||||||
|
"schedulingMode": "off",
|
||||||
|
"manualSunrise": "06:30",
|
||||||
|
"manualSunset": "18:30",
|
||||||
|
"generationMethod": "tonal-spot",
|
||||||
|
"monitorForColors": "",
|
||||||
|
"syncGsettings": true
|
||||||
|
},
|
||||||
|
"templates": {
|
||||||
|
"activeTemplates": [],
|
||||||
|
"enableUserTheming": false
|
||||||
|
},
|
||||||
|
"nightLight": {
|
||||||
|
"enabled": true,
|
||||||
|
"forced": false,
|
||||||
|
"autoSchedule": true,
|
||||||
|
"nightTemp": "4000",
|
||||||
|
"dayTemp": "6500",
|
||||||
|
"manualSunrise": "06:30",
|
||||||
|
"manualSunset": "18:30"
|
||||||
|
},
|
||||||
|
"hooks": {
|
||||||
|
"enabled": false,
|
||||||
|
"wallpaperChange": "",
|
||||||
|
"darkModeChange": "",
|
||||||
|
"screenLock": "",
|
||||||
|
"screenUnlock": "",
|
||||||
|
"performanceModeEnabled": "",
|
||||||
|
"performanceModeDisabled": "",
|
||||||
|
"startup": "",
|
||||||
|
"session": "",
|
||||||
|
"colorGeneration": ""
|
||||||
|
},
|
||||||
|
"plugins": {
|
||||||
|
"autoUpdate": false,
|
||||||
|
"notifyUpdates": true
|
||||||
|
},
|
||||||
|
"idle": {
|
||||||
|
"enabled": false,
|
||||||
|
"screenOffTimeout": 600,
|
||||||
|
"lockTimeout": 660,
|
||||||
|
"suspendTimeout": 1800,
|
||||||
|
"fadeDuration": 5,
|
||||||
|
"screenOffCommand": "",
|
||||||
|
"lockCommand": "",
|
||||||
|
"suspendCommand": "",
|
||||||
|
"resumeScreenOffCommand": "",
|
||||||
|
"resumeLockCommand": "",
|
||||||
|
"resumeSuspendCommand": "",
|
||||||
|
"customCommands": "[]"
|
||||||
|
},
|
||||||
|
"desktopWidgets": {
|
||||||
|
"enabled": false,
|
||||||
|
"overviewEnabled": true,
|
||||||
|
"gridSnap": false,
|
||||||
|
"gridSnapScale": false,
|
||||||
|
"monitorWidgets": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,628 @@
|
|||||||
|
[audio]
|
||||||
|
enable_overdrive = true
|
||||||
|
enable_sounds = false
|
||||||
|
notification_sound = ""
|
||||||
|
sound_volume = 0.5
|
||||||
|
volume_change_sound = ""
|
||||||
|
|
||||||
|
[backdrop]
|
||||||
|
blur_intensity = 0.5
|
||||||
|
enabled = false
|
||||||
|
tint_intensity = 0.30000001192092896
|
||||||
|
|
||||||
|
[bar]
|
||||||
|
order = [ "widgets" ]
|
||||||
|
|
||||||
|
[bar.widgets]
|
||||||
|
auto_hide = false
|
||||||
|
background_opacity = 1.0
|
||||||
|
border = "outline"
|
||||||
|
border_width = 0.0
|
||||||
|
capsule = false
|
||||||
|
capsule_fill = "surface_variant"
|
||||||
|
capsule_group = []
|
||||||
|
capsule_opacity = 1.0
|
||||||
|
capsule_padding = 6.0
|
||||||
|
capsule_thickness = 0.75999999046325684
|
||||||
|
center = []
|
||||||
|
contact_shadow = false
|
||||||
|
enabled = true
|
||||||
|
end = [
|
||||||
|
"cpu",
|
||||||
|
"ram",
|
||||||
|
"sysmon",
|
||||||
|
"network_rx",
|
||||||
|
"network_tx",
|
||||||
|
"volume",
|
||||||
|
"battery",
|
||||||
|
"clock",
|
||||||
|
"network",
|
||||||
|
"clipboard",
|
||||||
|
"tray"
|
||||||
|
]
|
||||||
|
font_weight = 500
|
||||||
|
layer = "top"
|
||||||
|
margin_edge = 0
|
||||||
|
margin_ends = 0
|
||||||
|
margin_opposite_edge = 0
|
||||||
|
padding = 14
|
||||||
|
panel_overlap = 1
|
||||||
|
position = "bottom"
|
||||||
|
radius = 0
|
||||||
|
radius_bottom_left = 0
|
||||||
|
radius_bottom_right = 0
|
||||||
|
radius_top_left = 0
|
||||||
|
radius_top_right = 0
|
||||||
|
reserve_space = true
|
||||||
|
scale = 1.0
|
||||||
|
shadow = false
|
||||||
|
show_on_workspace_switch = true
|
||||||
|
start = [ "workspaces" ]
|
||||||
|
thickness = 34
|
||||||
|
widget_spacing = 12
|
||||||
|
|
||||||
|
[bar.widgets.dead_zone]
|
||||||
|
command = ""
|
||||||
|
middle_command = ""
|
||||||
|
right_command = ""
|
||||||
|
scroll_down_command = ""
|
||||||
|
scroll_up_command = ""
|
||||||
|
|
||||||
|
[battery]
|
||||||
|
warning_threshold = 10
|
||||||
|
|
||||||
|
[brightness]
|
||||||
|
enable_ddcutil = false
|
||||||
|
ignore_mmids = []
|
||||||
|
minimum_brightness = 0.0
|
||||||
|
sync_all_monitors = false
|
||||||
|
|
||||||
|
[calendar]
|
||||||
|
enabled = false
|
||||||
|
refresh_minutes = 15
|
||||||
|
|
||||||
|
[control_center]
|
||||||
|
hidden_tabs = []
|
||||||
|
sidebar = "full"
|
||||||
|
sidebar_section = "full"
|
||||||
|
width = 700
|
||||||
|
|
||||||
|
[[control_center.shortcuts]]
|
||||||
|
type = "wifi"
|
||||||
|
|
||||||
|
[[control_center.shortcuts]]
|
||||||
|
type = "bluetooth"
|
||||||
|
|
||||||
|
[[control_center.shortcuts]]
|
||||||
|
type = "caffeine"
|
||||||
|
|
||||||
|
[[control_center.shortcuts]]
|
||||||
|
type = "nightlight"
|
||||||
|
|
||||||
|
[[control_center.shortcuts]]
|
||||||
|
type = "notification"
|
||||||
|
|
||||||
|
[[control_center.shortcuts]]
|
||||||
|
type = "power_profile"
|
||||||
|
|
||||||
|
[desktop_widgets]
|
||||||
|
enabled = false
|
||||||
|
schema_version = 2
|
||||||
|
|
||||||
|
[desktop_widgets.grid]
|
||||||
|
cell_size = 16
|
||||||
|
major_interval = 4
|
||||||
|
visible = true
|
||||||
|
|
||||||
|
[dock]
|
||||||
|
active_monitor_only = false
|
||||||
|
active_opacity = 1.0
|
||||||
|
active_scale = 1.0
|
||||||
|
auto_hide = false
|
||||||
|
background_opacity = 0.87999999523162842
|
||||||
|
cross_axis_padding = 8
|
||||||
|
enabled = false
|
||||||
|
icon_size = 48
|
||||||
|
inactive_opacity = 0.85000002384185791
|
||||||
|
inactive_scale = 0.85000002384185791
|
||||||
|
item_spacing = 6
|
||||||
|
launcher_icon = "grid-dots"
|
||||||
|
launcher_position = "none"
|
||||||
|
magnification = true
|
||||||
|
magnification_scale = 1.4500000476837158
|
||||||
|
main_axis_padding = 16
|
||||||
|
margin_edge = 8
|
||||||
|
margin_ends = 0
|
||||||
|
monitors = []
|
||||||
|
pinned = []
|
||||||
|
position = "bottom"
|
||||||
|
radius = 16
|
||||||
|
radius_bottom_left = 16
|
||||||
|
radius_bottom_right = 16
|
||||||
|
radius_top_left = 16
|
||||||
|
radius_top_right = 16
|
||||||
|
reserve_space = true
|
||||||
|
shadow = true
|
||||||
|
show_dots = false
|
||||||
|
show_instance_count = true
|
||||||
|
show_running = true
|
||||||
|
|
||||||
|
[hooks]
|
||||||
|
battery_charging = []
|
||||||
|
battery_discharging = []
|
||||||
|
battery_percentage_changed = []
|
||||||
|
battery_plugged = []
|
||||||
|
bluetooth_disabled = []
|
||||||
|
bluetooth_enabled = []
|
||||||
|
colors_changed = []
|
||||||
|
logging_out = []
|
||||||
|
power_profile_changed = []
|
||||||
|
rebooting = []
|
||||||
|
session_locked = []
|
||||||
|
session_unlocked = []
|
||||||
|
shutting_down = []
|
||||||
|
started = []
|
||||||
|
theme_mode_changed = []
|
||||||
|
wallpaper_changed = []
|
||||||
|
wifi_disabled = []
|
||||||
|
wifi_enabled = []
|
||||||
|
|
||||||
|
[idle]
|
||||||
|
behavior_order = [ "lock", "screen-off", "lock-and-suspend" ]
|
||||||
|
pre_action_fade_seconds = 0.0
|
||||||
|
|
||||||
|
[idle.behavior.lock]
|
||||||
|
action = "lock"
|
||||||
|
command = ""
|
||||||
|
enabled = false
|
||||||
|
resume_command = ""
|
||||||
|
timeout = 600.0
|
||||||
|
|
||||||
|
[idle.behavior.lock-and-suspend]
|
||||||
|
action = "lock_and_suspend"
|
||||||
|
command = ""
|
||||||
|
enabled = false
|
||||||
|
resume_command = ""
|
||||||
|
timeout = 900.0
|
||||||
|
|
||||||
|
[idle.behavior.screen-off]
|
||||||
|
action = "screen_off"
|
||||||
|
command = ""
|
||||||
|
enabled = false
|
||||||
|
resume_command = ""
|
||||||
|
timeout = 660.0
|
||||||
|
|
||||||
|
[keybinds]
|
||||||
|
cancel = [ "Escape" ]
|
||||||
|
down = [ "Down" ]
|
||||||
|
left = [ "Left" ]
|
||||||
|
right = [ "Right" ]
|
||||||
|
tab_next = [ "Tab" ]
|
||||||
|
tab_previous = [ "Shift+ISO_Left_Tab" ]
|
||||||
|
up = [ "Up" ]
|
||||||
|
validate = [ "Return", "KP_Enter", "space" ]
|
||||||
|
|
||||||
|
[location]
|
||||||
|
address = "Würzburg, Germany"
|
||||||
|
auto_locate = false
|
||||||
|
sunrise = ""
|
||||||
|
sunset = ""
|
||||||
|
|
||||||
|
[lockscreen]
|
||||||
|
allow_empty_password = false
|
||||||
|
blur_intensity = 0.5
|
||||||
|
blurred_desktop = false
|
||||||
|
enabled = false
|
||||||
|
fingerprint = true
|
||||||
|
monitors = []
|
||||||
|
tint_intensity = 0.30000001192092896
|
||||||
|
wallpaper = ""
|
||||||
|
|
||||||
|
[lockscreen_widgets]
|
||||||
|
enabled = false
|
||||||
|
schema_version = 2
|
||||||
|
widget_order = [ "lockscreen-login-box@HDMI-A-1", "lockscreen-login-box@eDP-1" ]
|
||||||
|
|
||||||
|
[lockscreen_widgets.grid]
|
||||||
|
cell_size = 16
|
||||||
|
major_interval = 4
|
||||||
|
visible = true
|
||||||
|
|
||||||
|
[lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-1"]
|
||||||
|
box_height = 70.0
|
||||||
|
box_width = 400.0
|
||||||
|
cx = 960.0
|
||||||
|
cy = 961.0
|
||||||
|
enabled = true
|
||||||
|
output = "HDMI-A-1"
|
||||||
|
rotation = 0.0
|
||||||
|
type = "login_box"
|
||||||
|
|
||||||
|
[lockscreen_widgets.widget."lockscreen-login-box@HDMI-A-1".settings]
|
||||||
|
background_color = "surface_variant"
|
||||||
|
background_opacity = 0.88
|
||||||
|
background_radius = 12.0
|
||||||
|
input_opacity = 1.0
|
||||||
|
input_radius = 6.0
|
||||||
|
show_caps_lock = true
|
||||||
|
show_keyboard_layout = true
|
||||||
|
show_login_button = true
|
||||||
|
show_password_hint = true
|
||||||
|
|
||||||
|
[lockscreen_widgets.widget."lockscreen-login-box@eDP-1"]
|
||||||
|
box_height = 70.0
|
||||||
|
box_width = 400.0
|
||||||
|
cx = 960.0
|
||||||
|
cy = 961.0
|
||||||
|
enabled = true
|
||||||
|
output = "eDP-1"
|
||||||
|
rotation = 0.0
|
||||||
|
type = "login_box"
|
||||||
|
|
||||||
|
[lockscreen_widgets.widget."lockscreen-login-box@eDP-1".settings]
|
||||||
|
background_color = "surface_variant"
|
||||||
|
background_opacity = 0.88
|
||||||
|
background_radius = 12.0
|
||||||
|
input_opacity = 1.0
|
||||||
|
input_radius = 6.0
|
||||||
|
show_caps_lock = true
|
||||||
|
show_keyboard_layout = true
|
||||||
|
show_login_button = true
|
||||||
|
show_password_hint = true
|
||||||
|
|
||||||
|
[nightlight]
|
||||||
|
enabled = false
|
||||||
|
force = false
|
||||||
|
temperature_day = 6500
|
||||||
|
temperature_night = 4000
|
||||||
|
|
||||||
|
[notification]
|
||||||
|
background_opacity = 0.97000002861022949
|
||||||
|
collapse_on_dismiss = true
|
||||||
|
enable_daemon = false
|
||||||
|
layer = "top"
|
||||||
|
monitors = []
|
||||||
|
offset_x = 20
|
||||||
|
offset_y = 8
|
||||||
|
position = "top_right"
|
||||||
|
scale = 1.0
|
||||||
|
show_actions = true
|
||||||
|
show_app_name = true
|
||||||
|
|
||||||
|
[osd]
|
||||||
|
background_opacity = 0.97000002861022949
|
||||||
|
monitors = []
|
||||||
|
offset_x = 20
|
||||||
|
offset_y = 8
|
||||||
|
orientation = "horizontal"
|
||||||
|
position = "top_center"
|
||||||
|
position_vertical = "top_center"
|
||||||
|
scale = 1.0
|
||||||
|
|
||||||
|
[osd.kinds]
|
||||||
|
bluetooth = false
|
||||||
|
brightness = false
|
||||||
|
caffeine = false
|
||||||
|
dnd = false
|
||||||
|
keyboard_layout = false
|
||||||
|
lock_keys = false
|
||||||
|
media = false
|
||||||
|
nightlight = false
|
||||||
|
power_profile = false
|
||||||
|
privacy = false
|
||||||
|
volume = false
|
||||||
|
volume_input = true
|
||||||
|
volume_output = true
|
||||||
|
wifi = false
|
||||||
|
|
||||||
|
[plugins]
|
||||||
|
enabled = []
|
||||||
|
|
||||||
|
[[plugins.source]]
|
||||||
|
auto_update = false
|
||||||
|
enabled = true
|
||||||
|
kind = "git"
|
||||||
|
location = "https://github.com/noctalia-dev/official-plugins"
|
||||||
|
name = "official"
|
||||||
|
|
||||||
|
[[plugins.source]]
|
||||||
|
auto_update = false
|
||||||
|
enabled = true
|
||||||
|
kind = "git"
|
||||||
|
location = "https://github.com/noctalia-dev/community-plugins"
|
||||||
|
name = "community"
|
||||||
|
|
||||||
|
[shell]
|
||||||
|
app_icon_colorize = false
|
||||||
|
avatar_path = ""
|
||||||
|
clipboard_auto_paste = "auto"
|
||||||
|
clipboard_confirm_clear_history = true
|
||||||
|
clipboard_enabled = true
|
||||||
|
clipboard_history_max_entries = 100
|
||||||
|
clipboard_image_action_command = ""
|
||||||
|
corner_radius_scale = 1.0
|
||||||
|
date_format = "%A, %x"
|
||||||
|
disable_mipmaps = false
|
||||||
|
font_family = "sans-serif"
|
||||||
|
launch_apps_as_systemd_services = false
|
||||||
|
launch_apps_custom_command = ""
|
||||||
|
middle_click_opens_widget_settings = true
|
||||||
|
niri_overview_type_to_launch_enabled = false
|
||||||
|
offline_mode = false
|
||||||
|
password_style = "default"
|
||||||
|
polkit_agent = false
|
||||||
|
screen_time_enabled = false
|
||||||
|
settings_show_advanced = false
|
||||||
|
setup_wizard_enabled = true
|
||||||
|
shared_gl_context = true
|
||||||
|
show_location = true
|
||||||
|
telemetry_enabled = false
|
||||||
|
time_format = "{:%H:%M}"
|
||||||
|
ui_scale = 1.0
|
||||||
|
|
||||||
|
[shell.animation]
|
||||||
|
enabled = false
|
||||||
|
speed = 1.0
|
||||||
|
|
||||||
|
[shell.greeter_sync]
|
||||||
|
auto_sync = false
|
||||||
|
|
||||||
|
[shell.launcher]
|
||||||
|
app_grid = false
|
||||||
|
categories = true
|
||||||
|
compact = true
|
||||||
|
session_search = false
|
||||||
|
show_icons = true
|
||||||
|
sort_by_usage = true
|
||||||
|
|
||||||
|
[shell.launcher.dmenu]
|
||||||
|
|
||||||
|
[shell.mpris]
|
||||||
|
blacklist = []
|
||||||
|
|
||||||
|
[shell.panel]
|
||||||
|
borders = true
|
||||||
|
clipboard_placement = "attached"
|
||||||
|
clipboard_position = "center"
|
||||||
|
control_center_placement = "attached"
|
||||||
|
control_center_position = "auto"
|
||||||
|
floating_offset = 13
|
||||||
|
launcher_placement = "floating"
|
||||||
|
launcher_position = "center"
|
||||||
|
open_near_click_clipboard = true
|
||||||
|
open_near_click_control_center = true
|
||||||
|
open_near_click_launcher = false
|
||||||
|
open_near_click_session = true
|
||||||
|
open_near_click_wallpaper = true
|
||||||
|
polkit_placement = "floating"
|
||||||
|
polkit_position = "center"
|
||||||
|
session_placement = "attached"
|
||||||
|
session_position = "auto"
|
||||||
|
shadow = true
|
||||||
|
transparency_mode = "solid"
|
||||||
|
wallpaper_placement = "attached"
|
||||||
|
wallpaper_position = "auto"
|
||||||
|
|
||||||
|
[shell.privacy]
|
||||||
|
cam_filter_regex = ""
|
||||||
|
mic_filter_regex = ""
|
||||||
|
|
||||||
|
[shell.screen_corners]
|
||||||
|
enabled = false
|
||||||
|
size = 32
|
||||||
|
|
||||||
|
[shell.screenshot]
|
||||||
|
confirm_region = false
|
||||||
|
copy_to_clipboard = true
|
||||||
|
directory = ""
|
||||||
|
filename_pattern = ""
|
||||||
|
freeze_screen = true
|
||||||
|
pipe_command = ""
|
||||||
|
pipe_to_command = false
|
||||||
|
save_to_file = true
|
||||||
|
|
||||||
|
[shell.session.power]
|
||||||
|
|
||||||
|
[[shell.session.actions]]
|
||||||
|
action = "lock"
|
||||||
|
command = ""
|
||||||
|
countdown_seconds = 0.0
|
||||||
|
enabled = true
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
|
shortcut = "1"
|
||||||
|
variant = "default"
|
||||||
|
|
||||||
|
[[shell.session.actions]]
|
||||||
|
action = "logout"
|
||||||
|
command = ""
|
||||||
|
countdown_seconds = 0.0
|
||||||
|
enabled = true
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
|
shortcut = "2"
|
||||||
|
variant = "default"
|
||||||
|
|
||||||
|
[[shell.session.actions]]
|
||||||
|
action = "lock_and_suspend"
|
||||||
|
command = ""
|
||||||
|
countdown_seconds = 0.0
|
||||||
|
enabled = false
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
|
shortcut = "3"
|
||||||
|
variant = "default"
|
||||||
|
|
||||||
|
[[shell.session.actions]]
|
||||||
|
action = "reboot"
|
||||||
|
command = ""
|
||||||
|
countdown_seconds = 0.0
|
||||||
|
enabled = true
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
|
shortcut = "4"
|
||||||
|
variant = "default"
|
||||||
|
|
||||||
|
[[shell.session.actions]]
|
||||||
|
action = "shutdown"
|
||||||
|
command = ""
|
||||||
|
countdown_seconds = 0.0
|
||||||
|
enabled = true
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
|
shortcut = "5"
|
||||||
|
variant = "destructive"
|
||||||
|
|
||||||
|
[shell.shadow]
|
||||||
|
alpha = 0.55000001192092896
|
||||||
|
direction = "down"
|
||||||
|
|
||||||
|
[system.monitor]
|
||||||
|
cpu_poll_seconds = 2.0
|
||||||
|
cpu_temp_activity_threshold = 60.0
|
||||||
|
cpu_temp_critical_threshold = 85.0
|
||||||
|
cpu_temp_sensor_path = ""
|
||||||
|
cpu_usage_activity_threshold = 50.0
|
||||||
|
cpu_usage_critical_threshold = 90.0
|
||||||
|
disk_pct_activity_threshold = 80.0
|
||||||
|
disk_pct_critical_threshold = 95.0
|
||||||
|
disk_poll_seconds = 10.0
|
||||||
|
enabled = true
|
||||||
|
gpu_poll_seconds = 0.0
|
||||||
|
gpu_temp_activity_threshold = 60.0
|
||||||
|
gpu_temp_critical_threshold = 85.0
|
||||||
|
gpu_usage_activity_threshold = 50.0
|
||||||
|
gpu_usage_critical_threshold = 95.0
|
||||||
|
gpu_vram_activity_threshold = 50.0
|
||||||
|
gpu_vram_critical_threshold = 90.0
|
||||||
|
memory_poll_seconds = 2.0
|
||||||
|
net_rx_activity_threshold = 1.0
|
||||||
|
net_rx_critical_threshold = 50.0
|
||||||
|
net_tx_activity_threshold = 1.0
|
||||||
|
net_tx_critical_threshold = 50.0
|
||||||
|
network_poll_seconds = 3.0
|
||||||
|
ram_pct_activity_threshold = 60.0
|
||||||
|
ram_pct_critical_threshold = 90.0
|
||||||
|
swap_pct_activity_threshold = 20.0
|
||||||
|
swap_pct_critical_threshold = 80.0
|
||||||
|
|
||||||
|
[theme]
|
||||||
|
builtin = "Catppuccin"
|
||||||
|
community_palette = "Oxocarbon"
|
||||||
|
custom_palette = ""
|
||||||
|
mode = "dark"
|
||||||
|
source = "builtin"
|
||||||
|
wallpaper_scheme = "m3-content"
|
||||||
|
|
||||||
|
[theme.templates]
|
||||||
|
builtin_ids = []
|
||||||
|
community_ids = []
|
||||||
|
enable_builtin_templates = false
|
||||||
|
enable_community_templates = false
|
||||||
|
|
||||||
|
[wallpaper]
|
||||||
|
directory = ""
|
||||||
|
directory_dark = ""
|
||||||
|
directory_light = ""
|
||||||
|
edge_smoothness = 0.30000001192092896
|
||||||
|
enabled = false
|
||||||
|
fill_color = ""
|
||||||
|
fill_mode = "crop"
|
||||||
|
per_monitor_directories = false
|
||||||
|
transition = [ "fade", "wipe", "disc", "stripes", "zoom", "honeycomb" ]
|
||||||
|
transition_duration = 1500.0
|
||||||
|
transition_on_startup = false
|
||||||
|
|
||||||
|
[wallpaper.automation]
|
||||||
|
enabled = false
|
||||||
|
interval_seconds = 1800
|
||||||
|
order = "random"
|
||||||
|
recursive = true
|
||||||
|
|
||||||
|
[weather]
|
||||||
|
effects = true
|
||||||
|
enabled = true
|
||||||
|
refresh_minutes = 30
|
||||||
|
unit = "metric"
|
||||||
|
|
||||||
|
[widget.active_window]
|
||||||
|
icon_size = 14.0
|
||||||
|
max_length = 260.0
|
||||||
|
min_length = 80.0
|
||||||
|
title_scroll = "none"
|
||||||
|
type = "active_window"
|
||||||
|
|
||||||
|
[widget.clock]
|
||||||
|
format = "{:%a %d.%m. %H:%M:%S}"
|
||||||
|
type = "clock"
|
||||||
|
|
||||||
|
[widget.cpu]
|
||||||
|
display = "text"
|
||||||
|
stat = "cpu_usage"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.custom_button_2]
|
||||||
|
type = "custom_button"
|
||||||
|
|
||||||
|
[widget.date]
|
||||||
|
format = "{:%a %d %b}"
|
||||||
|
type = "clock"
|
||||||
|
|
||||||
|
[widget.input_volume]
|
||||||
|
device = "input"
|
||||||
|
type = "volume"
|
||||||
|
|
||||||
|
[widget.keyboard_layout]
|
||||||
|
cycle_command = ""
|
||||||
|
hide_when_single_layout = false
|
||||||
|
type = "keyboard_layout"
|
||||||
|
|
||||||
|
[widget.lock_keys]
|
||||||
|
display = "short"
|
||||||
|
hide_when_off = false
|
||||||
|
show_caps_lock = true
|
||||||
|
show_num_lock = true
|
||||||
|
show_scroll_lock = false
|
||||||
|
type = "lock_keys"
|
||||||
|
|
||||||
|
[widget.media]
|
||||||
|
art_size = 16.0
|
||||||
|
max_length = 220.0
|
||||||
|
min_length = 80.0
|
||||||
|
title_scroll = "none"
|
||||||
|
type = "media"
|
||||||
|
|
||||||
|
[widget.network_rx]
|
||||||
|
display = "text"
|
||||||
|
stat = "net_rx"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.network_tx]
|
||||||
|
display = "text"
|
||||||
|
stat = "net_tx"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.output_volume]
|
||||||
|
device = "output"
|
||||||
|
type = "volume"
|
||||||
|
|
||||||
|
[widget.ram]
|
||||||
|
display = "text"
|
||||||
|
stat = "ram_pct"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.spacer]
|
||||||
|
type = "spacer"
|
||||||
|
|
||||||
|
[widget.sysmon]
|
||||||
|
display = "text"
|
||||||
|
stat = "disk_pct"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.temp]
|
||||||
|
stat = "cpu_temp"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.workspaces]
|
||||||
|
scale = 1.1000000000000001
|
||||||
|
type = "workspaces"
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
in {
|
in {
|
||||||
services.swayidle = {
|
services.swayidle = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemdTarget = "graphical-session.target";
|
systemdTargets = ["graphical-session.target"];
|
||||||
timeouts =
|
timeouts =
|
||||||
# Lock screen
|
# Lock screen
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (config.colorscheme) colors;
|
|
||||||
in {
|
|
||||||
programs.swaylock = {
|
programs.swaylock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
color = "000000";
|
|
||||||
ignore-empty-password = true;
|
ignore-empty-password = true;
|
||||||
indicator-idle-visible = false;
|
indicator-idle-visible = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,66 +2,17 @@
|
|||||||
|
|
||||||
# A hyprland script for a laptop-external-monitor setup, toggling between which is in use
|
# A hyprland script for a laptop-external-monitor setup, toggling between which is in use
|
||||||
|
|
||||||
# Launch at startup to make hyprland disable the internal monitor if an external monitor is detected and enabled
|
INTERNAL_MONITOR="@INTERNAL_MONITOR@"
|
||||||
# Additionally it's called with a keybind to switch between a laptop monitor and an external display
|
EXTERNAL_MONITOR="@EXTERNAL_MONITOR@"
|
||||||
# Ideally the conditional monitor behaviour was instead done directly in hyprland.conf, but I'm not sure whether that's possible
|
|
||||||
#
|
|
||||||
# Relevant info:
|
|
||||||
# - hyprctl monitors: identifies currently enabled monitors
|
|
||||||
# - hyprctl monitors all: identifies ALL connected monitors - including those not in use
|
|
||||||
#
|
|
||||||
# Suggested use:
|
|
||||||
# Add this line somewhere after the regular monitor configuration in hyprland.conf:
|
|
||||||
# exec = /path/to/hyprland-monitors-toggle.sh
|
|
||||||
# Add a keybind to run this script on demand:
|
|
||||||
# bind =,SomeKeyHere, exec, /path/to/hyprland-monitors-toggle.sh
|
|
||||||
|
|
||||||
#move_all_workspaces_to_monitor() {
|
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r --arg EXTERNAL "$EXTERNAL_MONITOR" '.[] | select(.name == $EXTERNAL) | .mirrorOf')
|
||||||
# TARGET_MONITOR="$1"
|
|
||||||
|
|
||||||
# hyprctl workspaces | grep ^workspace | cut --delimiter ' ' --fields 3 | xargs -I '{}' hyprctl dispatch moveworkspacetomonitor '{}' "$TARGET_MONITOR"
|
echo "current setting: "
|
||||||
|
|
||||||
# # Previous approach
|
|
||||||
# #hyprctl swapactiveworkspaces $EXTERNAL_MONITOR $INTERNAL_MONITOR
|
|
||||||
#}
|
|
||||||
|
|
||||||
# TODO: Detect these instead of hardcoding them
|
|
||||||
INTERNAL_MONITOR="eDP-1"
|
|
||||||
EXTERNAL_MONITOR="HDMI-A-1"
|
|
||||||
|
|
||||||
# NUM_MONITORS=$(hyprctl monitors all | grep --count Monitor)
|
|
||||||
# NUM_MONITORS_ACTIVE=$(hyprctl monitors | grep --count Monitor)
|
|
||||||
|
|
||||||
# Make sure all
|
|
||||||
# if [ "$NUM_MONITORS_ACTIVE" -eq 1 ]; then
|
|
||||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
|
||||||
# exit
|
|
||||||
# fi
|
|
||||||
|
|
||||||
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r '.[] | select(.name == "HDMI-A-1") | .mirrorOf')
|
|
||||||
|
|
||||||
# # For dynamically toggling which monitor is active later via a keybind
|
|
||||||
# if [ "$NUM_MONITORS" -gt 1 ]; then # Handling multiple monitors
|
|
||||||
# if hyprctl monitors | cut --delimiter ' ' --fields 2 | grep --quiet ^$EXTERNAL_MONITOR; then
|
|
||||||
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
|
|
||||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
|
||||||
# hyprctl keyword monitor "$EXTERNAL_MONITOR, disable"
|
|
||||||
# else
|
|
||||||
# hyprctl keyword monitor $EXTERNAL_MONITOR,preferred,0x0,1
|
|
||||||
# move_all_workspaces_to_monitor $EXTERNAL_MONITOR
|
|
||||||
# hyprctl keyword monitor "$INTERNAL_MONITOR, disable"
|
|
||||||
# fi
|
|
||||||
# else # If the external monitor is disconnected without running this script first, it might become the case that no monitor is on - therefore turn on the laptop monitor!
|
|
||||||
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
|
|
||||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
|
||||||
# fi
|
|
||||||
|
|
||||||
echo setting:
|
|
||||||
echo $MIRROR_SETTING
|
echo $MIRROR_SETTING
|
||||||
if [ "$MIRROR_SETTING" = "none" ]; then
|
if [ "$MIRROR_SETTING" = "none" ]; then
|
||||||
echo "mirroring..."
|
echo "mirroring..."
|
||||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1, mirror, $INTERNAL_MONITOR"
|
hyprctl eval "hl.monitor({output=\"$EXTERNAL_MONITOR\", mode=\"preferred\", position=\"auto\", scale=\"auto\", mirror=\"$INTERNAL_MONITOR\"})"
|
||||||
else
|
else
|
||||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, disable" # shortly disable monitor so waybar recognizes the new monitor again # TODO: find better solution
|
# hyprctl keyword monitor "$EXTERNAL_MONITOR, disable" # shortly disable monitor so waybar recognizes the new monitor again # TODO: find better solution
|
||||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1"
|
hyprctl eval "hl.monitor({output=\"$EXTERNAL_MONITOR\", mode=\"preferred\", position=\"auto\", scale=\"auto\", mirror=\"\"})"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
{
|
{config, ...}: let
|
||||||
options,
|
palette = config.lib.stylix.colors;
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
|
|
||||||
in {
|
in {
|
||||||
|
stylix.targets.waybar.enable = false;
|
||||||
|
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# systemd.enable = true;
|
# systemd.enable = true;
|
||||||
|
|||||||
@@ -1,39 +1,3 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [wlogout];
|
home.packages = with pkgs; [wlogout];
|
||||||
|
|
||||||
# xdg.configFile."wlogout/style.css".text = ''
|
|
||||||
# * {
|
|
||||||
# all: unset;
|
|
||||||
# font-family: JetBrains Mono Nerd Font;
|
|
||||||
# }
|
|
||||||
|
|
||||||
# window {
|
|
||||||
# background-color: #${palette.base00};
|
|
||||||
# }
|
|
||||||
|
|
||||||
# button {
|
|
||||||
# color: #${palette.base01};
|
|
||||||
# font-size: 64px;
|
|
||||||
# background-color: rgba(0,0,0,0);
|
|
||||||
# outline-style: none;
|
|
||||||
# margin: 5px;
|
|
||||||
# }
|
|
||||||
|
|
||||||
# button:focus, button:active, button:hover {
|
|
||||||
# color: #${palette.base0D};
|
|
||||||
# transition: ease 0.4s;
|
|
||||||
# }
|
|
||||||
# '';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,86 +1,5 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [wofi];
|
home.packages = with pkgs; [wofi];
|
||||||
|
|
||||||
xdg.configFile."wofi/config".source = ./config;
|
xdg.configFile."wofi/config".source = ./config;
|
||||||
xdg.configFile."wofi/style.css".text = ''
|
|
||||||
window {
|
|
||||||
margin: 5px;
|
|
||||||
border: 5px solid #181926;
|
|
||||||
background-color: #${palette.base00};
|
|
||||||
border-radius: 15px;
|
|
||||||
font-family: "JetBrainsMono";
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input {
|
|
||||||
all: unset;
|
|
||||||
min-height: 36px;
|
|
||||||
padding: 4px 10px;
|
|
||||||
margin: 4px;
|
|
||||||
border: none;
|
|
||||||
color: #${palette.base05};
|
|
||||||
font-weight: bold;
|
|
||||||
background-color: #${palette.base01};
|
|
||||||
outline: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
margin: 10px;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inner-box {
|
|
||||||
margin: 4px;
|
|
||||||
padding: 10px;
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#outer-box {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 3px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
border: 5px solid #${palette.base01};
|
|
||||||
}
|
|
||||||
|
|
||||||
#scroll {
|
|
||||||
margin-top: 5px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text:selected {
|
|
||||||
color: #${palette.base01};
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry {
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:selected {
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
background: #${palette.base0D};
|
|
||||||
background-size: 400% 400%;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
{config, ...}: let
|
|
||||||
inherit (config.colorscheme) colors;
|
|
||||||
in {
|
|
||||||
programs.zathura = {
|
|
||||||
enable = true;
|
|
||||||
options = {
|
|
||||||
selection-clipboard = "clipboard";
|
|
||||||
# TODO fix
|
|
||||||
# font = "${config.fontProfiles.regular.name} ${toString config.fontProfiles.regular.size}";
|
|
||||||
# recolor = true;
|
|
||||||
# default-bg = "${colors.surface}";
|
|
||||||
# default-fg = "${colors.surface_bright}";
|
|
||||||
# statusbar-bg = "${colors.surface_container}";
|
|
||||||
# statusbar-fg = "${colors.on_surface_variant}";
|
|
||||||
# inputbar-bg = "${colors.surface}";
|
|
||||||
# inputbar-fg = "${colors.on_secondary}";
|
|
||||||
# notification-bg = "${colors.surface}";
|
|
||||||
# notification-fg = "${colors.on_secondary}";
|
|
||||||
# notification-error-bg = "${colors.error}";
|
|
||||||
# notification-error-fg = "${colors.on_error}";
|
|
||||||
# notification-warning-bg = "${colors.error}";
|
|
||||||
# notification-warning-fg = "${colors.on_error}";
|
|
||||||
# highlight-color = "${colors.tertiary}";
|
|
||||||
# highlight-active-color = "${colors.secondary}";
|
|
||||||
# completion-bg = "${colors.surface_bright}";
|
|
||||||
# completion-fg = "${colors.on_surface}";
|
|
||||||
# completions-highlight-bg = "${colors.secondary}";
|
|
||||||
# completions-highlight-fg = "${colors.on_secondary}";
|
|
||||||
# recolor-lightcolor = "${colors.surface}";
|
|
||||||
# recolor-darkcolor = "${colors.inverse_surface}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -22,9 +22,9 @@
|
|||||||
# Prevent screen from going blank (check these settings with `xset q`)
|
# Prevent screen from going blank (check these settings with `xset q`)
|
||||||
# And disable bell sound (b)
|
# And disable bell sound (b)
|
||||||
xsession.initExtra = ''
|
xsession.initExtra = ''
|
||||||
${pkgs.xorg.xset}/bin/xset s off
|
${pkgs.xset}/bin/xset s off
|
||||||
${pkgs.xorg.xset}/bin/xset -dpms
|
${pkgs.xset}/bin/xset -dpms
|
||||||
${pkgs.xorg.xset}/bin/xset b off
|
${pkgs.xset}/bin/xset b off
|
||||||
'';
|
'';
|
||||||
xsession.windowManager.i3 = {
|
xsession.windowManager.i3 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
fd
|
fd
|
||||||
stylua
|
stylua
|
||||||
black
|
black
|
||||||
nixfmt-rfc-style # nixfmt
|
nixfmt # nixfmt
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.nixvim = {
|
programs.nixvim = {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
usbutils # lsusb
|
usbutils # lsusb
|
||||||
wget
|
wget
|
||||||
wireguard-tools # wg-quick
|
wireguard-tools # wg-quick
|
||||||
xorg.xkill
|
xkill
|
||||||
zip
|
zip
|
||||||
dig
|
dig
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
imports = [../../gtk];
|
# imports = [./stylix.nix];
|
||||||
|
|
||||||
services.blueman-applet.enable = true;
|
services.blueman-applet.enable = true;
|
||||||
services.nextcloud-client.enable = true;
|
services.nextcloud-client.enable = true;
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
# kitty # Terminal, already available as feature
|
# kitty # Terminal, already available as feature
|
||||||
libnotify
|
libnotify
|
||||||
libreoffice
|
libreoffice
|
||||||
mate.engrampa
|
engrampa
|
||||||
nomacs # Image viewer
|
nomacs # Image viewer
|
||||||
kdePackages.okular # Pdf reader with many features, good for commenting documents
|
kdePackages.okular # Pdf reader with many features, good for commenting documents
|
||||||
pavucontrol
|
pavucontrol
|
||||||
@@ -53,10 +53,10 @@
|
|||||||
tor-browser
|
tor-browser
|
||||||
rusty-path-of-building # Path of Building for poe1 and poe2
|
rusty-path-of-building # Path of Building for poe1 and poe2
|
||||||
vlc
|
vlc
|
||||||
wineWowPackages.stable # 32-bit and 64-bit wine
|
wineWow64Packages.stable # 32-bit and 64-bit wine
|
||||||
winetricks
|
winetricks
|
||||||
xclip # x11 clipboard access from terminal
|
xclip # x11 clipboard access from terminal
|
||||||
xfce.mousepad # simple text editor
|
mousepad # simple text editor
|
||||||
xournalpp # Edit pdf files
|
xournalpp # Edit pdf files
|
||||||
zoom-us # Video conferencing
|
zoom-us # Video conferencing
|
||||||
zotero # Manage papers and other sources
|
zotero # Manage papers and other sources
|
||||||
|
|||||||
@@ -65,9 +65,13 @@
|
|||||||
sops
|
sops
|
||||||
pandoc # markdown preview
|
pandoc # markdown preview
|
||||||
docker-compose
|
docker-compose
|
||||||
|
mise
|
||||||
|
|
||||||
|
mise
|
||||||
|
|
||||||
## My scripts
|
## My scripts
|
||||||
frajul.deploy-to-pianopi
|
frajul.deploy-to-pianopi
|
||||||
|
frajul.smath-studio
|
||||||
# frajul.rtklib
|
# frajul.rtklib
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "matlab-rsp" ''
|
(pkgs.writeShellScriptBin "matlab-rsp" ''
|
||||||
|
|||||||
@@ -16,11 +16,8 @@
|
|||||||
xclip
|
xclip
|
||||||
];
|
];
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
y = "yy"; # Yazi shell wrapper (cd on quit)
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.enable = true;
|
programs.yazi.enable = true;
|
||||||
|
programs.yazi.shellWrapperName = "y";
|
||||||
programs.yazi.enableFishIntegration = true;
|
programs.yazi.enableFishIntegration = true;
|
||||||
programs.yazi.settings.manager = {
|
programs.yazi.settings.manager = {
|
||||||
sort_by = "mtime";
|
sort_by = "mtime";
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.file = {
|
# home.file = {
|
||||||
".config/starship.toml".source = ./starship.toml;
|
# ".config/starship.toml".source = ./starship.toml;
|
||||||
};
|
# };
|
||||||
|
|
||||||
home.packages = with pkgs; [starship];
|
home.packages = with pkgs; [starship];
|
||||||
|
|
||||||
|
|||||||
@@ -57,14 +57,4 @@
|
|||||||
|
|
||||||
sessionPath = ["$HOME/.local/bin"];
|
sessionPath = ["$HOME/.local/bin"];
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO: colorscheme
|
|
||||||
# colorscheme.mode = lib.mkOverride 1499 "dark";
|
|
||||||
# specialisation = {
|
|
||||||
# dark.configuration.colorscheme.mode = lib.mkOverride 1498 "dark";
|
|
||||||
# light.configuration.colorscheme.mode = lib.mkOverride 1498 "light";
|
|
||||||
# };
|
|
||||||
# home.file = {
|
|
||||||
# ".colorscheme.json".text = builtins.toJSON config.colorscheme;
|
|
||||||
# };
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,8 @@
|
|||||||
"text/calendar" = thunderbird;
|
"text/calendar" = thunderbird;
|
||||||
"application/x-extension-ics" = thunderbird;
|
"application/x-extension-ics" = thunderbird;
|
||||||
"x-scheme-handler/webcals" = thunderbird;
|
"x-scheme-handler/webcals" = thunderbird;
|
||||||
"application/zip" = mate.engrampa;
|
"application/zip" = engrampa;
|
||||||
"text/plain" = xfce.mousepad;
|
"text/plain" = mousepad;
|
||||||
"image/jpeg" = nomacs;
|
"image/jpeg" = nomacs;
|
||||||
"application/pdf" = evince;
|
"application/pdf" = evince;
|
||||||
"text/html" = firefox;
|
"text/html" = firefox;
|
||||||
|
|||||||
@@ -1,17 +1,14 @@
|
|||||||
# Only apply this to home-manager standalone
|
# Only apply this to home-manager standalone
|
||||||
{outputs, ...}: {
|
{
|
||||||
# Apply overlays
|
inputs,
|
||||||
nixpkgs = {
|
outputs,
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
pkgs,
|
||||||
config = {
|
...
|
||||||
allowUnfree = true;
|
}: {
|
||||||
allowUnfreePredicate = _: true; # TODO: what is this
|
imports = [inputs.stylix.homeModules.stylix];
|
||||||
permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
stylix.enable = true;
|
||||||
];
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||||
warn-dirty = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Expire old hm generations
|
# Expire old hm generations
|
||||||
hm-expire = {
|
hm-expire = {
|
||||||
@@ -27,6 +24,16 @@
|
|||||||
persistent = true;
|
persistent = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
# Apply overlays
|
||||||
|
overlays = builtins.attrValues outputs.overlays;
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
allowUnfreePredicate = _: true; # TODO: what is this
|
||||||
|
warn-dirty = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# Setup binary caches
|
# Setup binary caches
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
substituters = [
|
substituters = [
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
../features/emacs
|
../features/emacs
|
||||||
../features/nix-helper
|
../features/nix-helper
|
||||||
../features/qt-distrobox
|
../features/qt-distrobox
|
||||||
|
../features/tmux
|
||||||
];
|
];
|
||||||
|
|
||||||
hostName = "aspi";
|
hostName = "aspi";
|
||||||
|
|||||||
@@ -38,5 +38,5 @@ with pkgs; [
|
|||||||
|
|
||||||
devbox # reproducible dev envs based on nix
|
devbox # reproducible dev envs based on nix
|
||||||
|
|
||||||
mysql80
|
devenv
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"${pwd}/features-nixos/users/julian"
|
"${pwd}/features-nixos/users/julian"
|
||||||
"${pwd}/features-nixos/optional/binarycaches.nix"
|
"${pwd}/features-nixos/optional/binarycaches.nix"
|
||||||
|
|
||||||
"${pwd}/features-nixos/optional/remote-builder.nix"
|
# "${pwd}/features-nixos/optional/remote-builder.nix"
|
||||||
"${pwd}/features-nixos/optional/boot-efi.nix"
|
"${pwd}/features-nixos/optional/boot-efi.nix"
|
||||||
|
|
||||||
"${pwd}/features-nixos/optional/greetd.nix"
|
"${pwd}/features-nixos/optional/greetd.nix"
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
"${pwd}/features-nixos/optional/wireguard.nix"
|
"${pwd}/features-nixos/optional/wireguard.nix"
|
||||||
"${pwd}/features-nixos/optional/wireshark.nix"
|
"${pwd}/features-nixos/optional/wireshark.nix"
|
||||||
"${pwd}/features-nixos/optional/flatpak.nix"
|
"${pwd}/features-nixos/optional/flatpak.nix"
|
||||||
|
"${pwd}/features-nixos/optional/k9s"
|
||||||
|
|
||||||
"${pwd}/features-nixos/optional/avahi.nix"
|
"${pwd}/features-nixos/optional/avahi.nix"
|
||||||
];
|
];
|
||||||
@@ -42,7 +43,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
programs.hyprland.enable = true;
|
programs.hyprland.enable = true;
|
||||||
services.desktopManager.plasma6.enable = true;
|
|
||||||
|
|
||||||
services.blueman.enable = true;
|
services.blueman.enable = true;
|
||||||
services.upower.enable = true;
|
services.upower.enable = true;
|
||||||
|
|||||||
@@ -75,4 +75,9 @@
|
|||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
hardware.nvidia.open = false;
|
hardware.nvidia.open = false;
|
||||||
|
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+47
-176
@@ -4,18 +4,37 @@
|
|||||||
{
|
{
|
||||||
pwd,
|
pwd,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
inputs,
|
||||||
|
outputs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports =
|
||||||
./hardware-configuration.nix
|
[
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
|
||||||
"${pwd}/features-nixos/global/fish.nix" # fish for admin
|
./disko.nix
|
||||||
"${pwd}/features-nixos/global/locale.nix"
|
./hardware-configuration.nix
|
||||||
"${pwd}/features-nixos/global/nix.nix"
|
|
||||||
"${pwd}/features-nixos/global/sops.nix"
|
"${pwd}/features-nixos/global/fish.nix" # fish for admin
|
||||||
"${pwd}/features-nixos/global/root.nix"
|
"${pwd}/features-nixos/global/locale.nix"
|
||||||
];
|
"${pwd}/features-nixos/global/nix.nix"
|
||||||
|
"${pwd}/features-nixos/global/sops.nix"
|
||||||
|
"${pwd}/features-nixos/global/root.nix"
|
||||||
|
|
||||||
|
# "${pwd}/features-nixos/optional/hydra.nix"
|
||||||
|
# "${pwd}/features-nixos/optional/jenkins-agent.nix"
|
||||||
|
]
|
||||||
|
++ (builtins.attrValues outputs.nixosModules);
|
||||||
|
|
||||||
|
frajul.gitlab-runner = {
|
||||||
|
enable = false;
|
||||||
|
secretsFile = ./secrets.yaml;
|
||||||
|
};
|
||||||
|
frajul.gitea-runner = {
|
||||||
|
enable = true;
|
||||||
|
secretsFile = ./secrets.yaml;
|
||||||
|
};
|
||||||
|
|
||||||
networking.hostName = "builder";
|
networking.hostName = "builder";
|
||||||
system.stateVersion = "23.11";
|
system.stateVersion = "23.11";
|
||||||
@@ -66,22 +85,22 @@
|
|||||||
fallback = true;
|
fallback = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# system.autoUpgrade = {
|
system.autoUpgrade = {
|
||||||
# enable = true;
|
enable = true;
|
||||||
# flake = "git+https://gitlab.julian-mutter.de/julian/dotfiles";
|
flake = "git+https://gitlab.julian-mutter.de/julian/dotfiles";
|
||||||
# flags = [
|
flags = [
|
||||||
# "--recreate-lock-file" # update lock file
|
"--recreate-lock-file" # update lock file
|
||||||
# ];
|
];
|
||||||
# dates = "02:13";
|
dates = "02:13";
|
||||||
# };
|
};
|
||||||
|
|
||||||
# optimize store by hardlinking store files
|
# optimize store by hardlinking store files
|
||||||
nix.optimise.automatic = true;
|
nix.optimise.automatic = lib.mkForce true;
|
||||||
nix.optimise.dates = ["03:15"];
|
nix.optimise.dates = lib.mkForce ["03:15"];
|
||||||
|
|
||||||
# nix.gc.automatic = true;
|
nix.gc.automatic = lib.mkForce true;
|
||||||
# nix.gc.dates = "daily";
|
nix.gc.dates = lib.mkForce "daily";
|
||||||
# nix.gc.options = "--delete-old";
|
nix.gc.options = lib.mkForce "--delete-old";
|
||||||
|
|
||||||
# nix.settings.keep-derivations = false;
|
# nix.settings.keep-derivations = false;
|
||||||
# nix.settings.keep-outputs = true;
|
# nix.settings.keep-outputs = true;
|
||||||
@@ -101,55 +120,12 @@
|
|||||||
OOMScoreAdjust = 500;
|
OOMScoreAdjust = 500;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Ollama used by open-webui as llm backend
|
|
||||||
services.ollama = {
|
|
||||||
enable = true;
|
|
||||||
# acceleration = "rocm";
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.nextjs-ollama-llm-ui = {
|
|
||||||
enable = true;
|
|
||||||
hostname = "192.168.3.118";
|
|
||||||
port = 3001;
|
|
||||||
};
|
|
||||||
# services.open-webui = {
|
|
||||||
# enable = true;
|
|
||||||
# port = 8080;
|
|
||||||
# openFirewall = true;
|
|
||||||
# host = "builder.julian-mutter.de";
|
|
||||||
# };
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
3001 # ollama-ui
|
|
||||||
];
|
|
||||||
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# require public key authentication for better security
|
# require public key authentication for better security
|
||||||
settings.PasswordAuthentication = false;
|
settings.PasswordAuthentication = false;
|
||||||
settings.KbdInteractiveAuthentication = false;
|
settings.KbdInteractiveAuthentication = false;
|
||||||
settings.PermitRootLogin = "yes";
|
settings.PermitRootLogin = "yes";
|
||||||
# Add older algorithms for jenkins ssh-agents-plugin to be compatible
|
|
||||||
settings.Macs = [
|
|
||||||
"hmac-sha2-512-etm@openssh.com"
|
|
||||||
"hmac-sha2-256-etm@openssh.com"
|
|
||||||
"umac-128-etm@openssh.com"
|
|
||||||
"hmac-sha2-512"
|
|
||||||
"hmac-sha2-256"
|
|
||||||
"umac-128@openssh.com"
|
|
||||||
];
|
|
||||||
settings.KexAlgorithms = [
|
|
||||||
"diffie-hellman-group-exchange-sha1"
|
|
||||||
"diffie-hellman-group14-sha1"
|
|
||||||
"mlkem768x25519-sha256"
|
|
||||||
"sntrup761x25519-sha512"
|
|
||||||
"sntrup761x25519-sha512@openssh.com"
|
|
||||||
"curve25519-sha256"
|
|
||||||
"curve25519-sha256@libssh.org"
|
|
||||||
"diffie-hellman-group-exchange-sha256"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
users.users."root".openssh.authorizedKeys.keys = [
|
users.users."root".openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi"
|
||||||
@@ -163,20 +139,6 @@
|
|||||||
|
|
||||||
# security.pam.sshAgentAuth.enable = true; # enable sudo via ssh
|
# security.pam.sshAgentAuth.enable = true; # enable sudo via ssh
|
||||||
|
|
||||||
services.hydra = {
|
|
||||||
enable = true;
|
|
||||||
hydraURL = "http://hydra.julian-mutter.de"; # externally visible URL
|
|
||||||
port = 3000;
|
|
||||||
notificationSender = "hydra@julian-mutter.de"; # e-mail of hydra service
|
|
||||||
# a standalone hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines
|
|
||||||
# buildMachinesFiles = [ ];
|
|
||||||
# you will probably also want, otherwise *everything* will be built from scratch
|
|
||||||
useSubstitutes = true;
|
|
||||||
|
|
||||||
minimumDiskFree = 5; # in GB
|
|
||||||
minimumDiskFreeEvaluator = 4; # in GB
|
|
||||||
};
|
|
||||||
|
|
||||||
# add builder itpwd as build machine so system emulation is properly supported
|
# add builder itpwd as build machine so system emulation is properly supported
|
||||||
# nix.distributedBuilds = true;
|
# nix.distributedBuilds = true;
|
||||||
nix.buildMachines = [
|
nix.buildMachines = [
|
||||||
@@ -199,84 +161,30 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Uris allowed as flake inputs, otherwise hydra does not fetch them
|
networking.firewall.allowedTCPPorts = [
|
||||||
nix.settings.allowed-uris = [
|
80
|
||||||
"github:"
|
|
||||||
"gitlab:"
|
|
||||||
"git+https://github.com/hyprwm/Hyprland"
|
|
||||||
"https://github.com/hyprwm/Hyprland"
|
|
||||||
"https://github"
|
|
||||||
"https://gitlab"
|
|
||||||
"https://gitlab.julian-mutter.de"
|
|
||||||
"git+https://gitlab.julian-mutter.de"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
recommendedProxySettings = true;
|
recommendedProxySettings = true;
|
||||||
# recommendedTlsSettings = true;
|
|
||||||
# other Nginx options
|
|
||||||
virtualHosts."hydra.julian-mutter.de" = {
|
|
||||||
# enableACME = true;
|
|
||||||
# forceSSL = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://127.0.0.1:3000";
|
|
||||||
# proxyWebsockets = true; # needed if you need to use WebSocket
|
|
||||||
# extraConfig =
|
|
||||||
# # required when the target is also TLS server with multiple hosts
|
|
||||||
# "proxy_ssl_server_name on;" +
|
|
||||||
# # required when the server wants to use HTTP Authentication
|
|
||||||
# "proxy_pass_header Authorization;"
|
|
||||||
# ;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
# nix-serve
|
||||||
virtualHosts."binarycache.julian-mutter.de" = {
|
virtualHosts."binarycache.julian-mutter.de" = {
|
||||||
locations."/".proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
|
locations."/".proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# attic
|
||||||
clientMaxBodySize = "2G";
|
clientMaxBodySize = "2G";
|
||||||
virtualHosts."cache.julian-mutter.de" = {
|
virtualHosts."cache.julian-mutter.de" = {
|
||||||
locations."/".proxyPass = "http://127.0.0.1:8080";
|
locations."/".proxyPass = "http://127.0.0.1:8080";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# =========== Gitea actions ==========
|
|
||||||
services.gitea-actions-runner.instances."builder" = {
|
|
||||||
enable = true;
|
|
||||||
url = "https://gitlab.julian-mutter.de";
|
|
||||||
name = "builder";
|
|
||||||
tokenFile = config.sops.secrets."gitea_token".path;
|
|
||||||
labels = [
|
|
||||||
# provide a debian base with nodejs for actions
|
|
||||||
"debian-latest:docker://node:18-bullseye"
|
|
||||||
# fake the ubuntu name, because node provides no ubuntu builds
|
|
||||||
"ubuntu-latest:docker://node:18-bullseye"
|
|
||||||
# devenv
|
|
||||||
"devenv:docker://ghcr.io/cachix/devenv/devenv:latest"
|
|
||||||
# provide native execution on the host
|
|
||||||
"nixos:host"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
|
|
||||||
# TODO: podman fails with: "cannot resolve hostname"
|
|
||||||
# virtualisation.podman = {
|
|
||||||
# enable = true;
|
|
||||||
# dockerCompat = true;
|
|
||||||
# defaultNetwork.settings.dns_enabled = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
sops.secrets."gitea_token" = {
|
|
||||||
owner = config.users.users.nix.name;
|
|
||||||
sopsFile = ./secrets.yaml;
|
|
||||||
};
|
|
||||||
|
|
||||||
# =========== Binary Cache ==========
|
# =========== Binary Cache ==========
|
||||||
|
sops.secrets."nix_serve_key".sopsFile = ./secrets.yaml;
|
||||||
services.nix-serve = {
|
services.nix-serve = {
|
||||||
enable = true;
|
enable = true;
|
||||||
secretKeyFile = "/var/cache-priv-key.pem";
|
secretKeyFile = config.sops.secrets."nix_serve_key".path;
|
||||||
};
|
};
|
||||||
|
|
||||||
# =========== Binary Cache with attic ==========
|
# =========== Binary Cache with attic ==========
|
||||||
@@ -314,41 +222,4 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.gitlab-runner.enable = true;
|
|
||||||
# runner for everything else
|
|
||||||
#
|
|
||||||
sops.secrets."gitlab_runner_token".sopsFile = ./secrets.yaml;
|
|
||||||
services.gitlab-runner.services.default = {
|
|
||||||
# File should contain at least these two variables:
|
|
||||||
authenticationTokenConfigFile = config.sops.secrets."gitlab_runner_token".path;
|
|
||||||
dockerImage = "alpine:latest";
|
|
||||||
dockerVolumes = [
|
|
||||||
"/var/run/docker.sock:/var/run/docker.sock"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
### Jenkins node
|
|
||||||
users.users.jenkins = {
|
|
||||||
createHome = true;
|
|
||||||
home = "/var/lib/jenkins";
|
|
||||||
group = "jenkins";
|
|
||||||
isNormalUser = true;
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ36sQhVz3kUEi8754G7r3rboihhG4iqFK/UvQm6SING jenkins@home"
|
|
||||||
];
|
|
||||||
packages = with pkgs; [
|
|
||||||
git
|
|
||||||
devenv
|
|
||||||
];
|
|
||||||
extraGroups = [
|
|
||||||
"docker"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
users.groups.jenkins = {};
|
|
||||||
programs.java = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.jdk21; # Same as jenkins version on home
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Example to create a bios compatible gpt partition
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk.disk1 = {
|
||||||
|
device = lib.mkDefault "/dev/sda";
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
name = "boot";
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02";
|
||||||
|
};
|
||||||
|
esp = {
|
||||||
|
name = "ESP";
|
||||||
|
size = "500M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
name = "root";
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "lvm_pv";
|
||||||
|
vg = "pool";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lvm_vg = {
|
||||||
|
pool = {
|
||||||
|
type = "lvm_vg";
|
||||||
|
lvs = {
|
||||||
|
root = {
|
||||||
|
size = "100%FREE";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
mountOptions = [
|
||||||
|
"defaults"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -7,43 +7,13 @@
|
|||||||
"sd_mod"
|
"sd_mod"
|
||||||
"sr_mod"
|
"sr_mod"
|
||||||
];
|
];
|
||||||
# boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support
|
|
||||||
boot.kernelModules = [];
|
boot.kernelModules = [];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
||||||
# hardware.graphics = {
|
|
||||||
# enable = true;
|
|
||||||
# extraPackages = with pkgs; [
|
|
||||||
# rocmPackages.clr.icd
|
|
||||||
# linuxPackages.amdgpu-pro
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
|
|
||||||
# boot.kernelParams = [
|
|
||||||
# "radeon.si_support=0"
|
|
||||||
# "radeon.cik_support=1"
|
|
||||||
# "amdgpu.si_support=0"
|
|
||||||
# "amdgpu.cik_support=1"
|
|
||||||
# ];
|
|
||||||
# boot.extraModulePackages = with config.boot.kernelPackages; [ amdgpu-pro ];
|
|
||||||
# boot.blacklistedKernelModules = [ "radeon" ];
|
|
||||||
|
|
||||||
boot.loader.grub.enable = true;
|
boot.loader.grub.enable = true;
|
||||||
boot.loader.grub.device = "/dev/sda";
|
|
||||||
|
|
||||||
# Emulated systems used as alternative to cross-compiling
|
# Emulated systems used as alternative to cross-compiling
|
||||||
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
||||||
|
|||||||
+19
-18
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINgH+4xJMk4K5uBIq4hKwar4wt6GYCRE3Z2S4HETc4TK root@builder
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"${pwd}/features-nixos/users/wolfi"
|
"${pwd}/features-nixos/users/wolfi"
|
||||||
"${pwd}/features-nixos/optional/binarycaches.nix"
|
"${pwd}/features-nixos/optional/binarycaches.nix"
|
||||||
|
|
||||||
"${pwd}/features-nixos/optional/remote-builder.nix"
|
# "${pwd}/features-nixos/optional/remote-builder.nix"
|
||||||
"${pwd}/features-nixos/optional/boot-efi.nix"
|
"${pwd}/features-nixos/optional/boot-efi.nix"
|
||||||
|
|
||||||
"${pwd}/features-nixos/optional/greetd.nix"
|
"${pwd}/features-nixos/optional/greetd.nix"
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
"${pwd}/features-nixos/optional/podman.nix"
|
"${pwd}/features-nixos/optional/podman.nix"
|
||||||
"${pwd}/features-nixos/optional/wireshark.nix"
|
"${pwd}/features-nixos/optional/wireshark.nix"
|
||||||
"${pwd}/features-nixos/optional/flatpak.nix"
|
"${pwd}/features-nixos/optional/flatpak.nix"
|
||||||
|
"${pwd}/features-nixos/optional/k9s"
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "kardorf";
|
networking.hostName = "kardorf";
|
||||||
|
|||||||
@@ -3,4 +3,6 @@
|
|||||||
syncthing = import ./syncthing.nix;
|
syncthing = import ./syncthing.nix;
|
||||||
frajulAutoUpgrade = import ./frajul-auto-upgrade.nix;
|
frajulAutoUpgrade = import ./frajul-auto-upgrade.nix;
|
||||||
pianoLEDVisualizer = import ./piano-led-visualizer.nix;
|
pianoLEDVisualizer = import ./piano-led-visualizer.nix;
|
||||||
|
gitea-runner = import ./gitea-runner.nix;
|
||||||
|
gitlab-runner = import ./gitlab-runner.nix;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.frajul.gitea-runner;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
frajul.gitea-runner = {
|
||||||
|
enable = lib.mkEnableOption "gitea-runner";
|
||||||
|
secretsFile = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
description = "A sops encrpyted file containing a 'gitea_token' secret";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
|
sops.secrets."gitea_token" = {
|
||||||
|
owner = config.users.users.nix.name;
|
||||||
|
sopsFile = cfg.secretsFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gitea-actions-runner.instances."builder" = {
|
||||||
|
enable = true;
|
||||||
|
url = "https://gitlab.julian-mutter.de";
|
||||||
|
name = "builder";
|
||||||
|
tokenFile = config.sops.secrets."gitea_token".path;
|
||||||
|
labels = [
|
||||||
|
# fake the ubuntu name, because node provides no ubuntu builds
|
||||||
|
"ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
||||||
|
# my custom nix+devenv ci container
|
||||||
|
"nix-ci:docker://gitlab.julian-mutter.de/julian/nix-ci-container:latest"
|
||||||
|
# devenv
|
||||||
|
"devenv:docker://ghcr.io/cachix/devenv/devenv:latest"
|
||||||
|
# provide native execution on the host
|
||||||
|
"nixos:host"
|
||||||
|
];
|
||||||
|
# Packages are intjected into PATH for "nixos:host"
|
||||||
|
hostPackages = with pkgs; [
|
||||||
|
bash
|
||||||
|
coreutils
|
||||||
|
curl
|
||||||
|
gawk
|
||||||
|
gitMinimal
|
||||||
|
nodejs # Required by many standard actions (like actions/checkout)
|
||||||
|
docker
|
||||||
|
devenv
|
||||||
|
wget
|
||||||
|
nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.frajul.gitlab-runner;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
frajul.gitlab-runner = {
|
||||||
|
enable = lib.mkEnableOption "gitlab-runner";
|
||||||
|
secretsFile = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
description = "A sops encrpyted file containing a 'gitlab_runner_token' secret";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.gitlab-runner.enable = true;
|
||||||
|
|
||||||
|
sops.secrets."gitlab_runner_token".sopsFile = cfg.secretsFile;
|
||||||
|
services.gitlab-runner.services.default = {
|
||||||
|
# File should contain at least these two variables:
|
||||||
|
authenticationTokenConfigFile = config.sops.secrets."gitlab_runner_token".path;
|
||||||
|
dockerImage = "alpine:latest";
|
||||||
|
dockerVolumes = [
|
||||||
|
"/var/run/docker.sock:/var/run/docker.sock"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
wl-ocr = pkgs.callPackage ./wl-ocr {};
|
wl-ocr = pkgs.callPackage ./wl-ocr {};
|
||||||
rtklib = pkgs.qt6Packages.callPackage ./rtklib {};
|
rtklib = pkgs.qt6Packages.callPackage ./rtklib {};
|
||||||
typst-languagetool = pkgs.callPackage ./typst-languagetool {};
|
typst-languagetool = pkgs.callPackage ./typst-languagetool {};
|
||||||
|
smath-studio = pkgs.callPackage ./smath-studio.nix {};
|
||||||
|
|
||||||
# rpi-ws281x-python = pkgs.callPackage ./rpi-ws281x-python {};
|
# rpi-ws281x-python = pkgs.callPackage ./rpi-ws281x-python {};
|
||||||
# piano-led-visualizer = pkgs.callPackage ./piano-led-visualizer {};
|
# piano-led-visualizer = pkgs.callPackage ./piano-led-visualizer {};
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
element-desktop,
|
element-desktop,
|
||||||
telegram-desktop,
|
telegram-desktop,
|
||||||
thunderbird,
|
thunderbird,
|
||||||
discord, # TODO: discord not available for aarch64, this leads to flake evaluation for this arch fail.
|
# discord, # TODO: discord not available for aarch64, this leads to flake evaluation for this arch fail.
|
||||||
}:
|
}:
|
||||||
writeShellApplication {
|
writeShellApplication {
|
||||||
name = "open-messaging";
|
name = "open-messaging";
|
||||||
@@ -12,7 +12,7 @@ writeShellApplication {
|
|||||||
element-desktop
|
element-desktop
|
||||||
telegram-desktop
|
telegram-desktop
|
||||||
thunderbird
|
thunderbird
|
||||||
discord
|
# discord
|
||||||
];
|
];
|
||||||
|
|
||||||
text = ''
|
text = ''
|
||||||
@@ -21,7 +21,7 @@ writeShellApplication {
|
|||||||
element-desktop &
|
element-desktop &
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
Telegram &
|
Telegram &
|
||||||
sleep 0.1
|
# sleep 0.1
|
||||||
discord &
|
# discord &
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
appimageTools,
|
||||||
|
fetchurl,
|
||||||
|
libgdiplus,
|
||||||
|
}: let
|
||||||
|
pname = "smath-studio";
|
||||||
|
version = "1.3.0.9126";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://smath.com/en-US/files/Download/cqSek/SMathStudioDesktop.1_3_0_9126.x86_64.ubuntu-22_04.glibc2.35.AppImage";
|
||||||
|
hash = "sha256-4FpdFGPFaPDK6WWSJHVtxcC8auaNkGmHyUtbegij6cQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
appimageContents = appimageTools.extractType2 {
|
||||||
|
inherit pname version src;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
appimageTools.wrapType2 {
|
||||||
|
inherit pname version src;
|
||||||
|
|
||||||
|
extraPkgs = pkgs:
|
||||||
|
with pkgs; [
|
||||||
|
gtk2
|
||||||
|
];
|
||||||
|
|
||||||
|
profile = ''
|
||||||
|
export LD_PRELOAD="${libgdiplus}/lib/libgdiplus.so.0"
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraInstallCommands = ''
|
||||||
|
install -m 444 -D ${appimageContents}/*.desktop -t $out/share/applications
|
||||||
|
sed -i "s|^Exec=.*|Exec=smath-studio %U|" $out/share/applications/*.desktop
|
||||||
|
cp -r ${appimageContents}/usr/share/icons $out/share
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
writeShellApplication,
|
writeShellApplication,
|
||||||
xf86_input_wacom,
|
xf86_input_wacom,
|
||||||
xorg,
|
xwininfo,
|
||||||
|
xrandr,
|
||||||
xdotool,
|
xdotool,
|
||||||
bc,
|
bc,
|
||||||
}:
|
}:
|
||||||
@@ -10,8 +11,8 @@ writeShellApplication {
|
|||||||
|
|
||||||
runtimeInputs = [
|
runtimeInputs = [
|
||||||
xf86_input_wacom
|
xf86_input_wacom
|
||||||
xorg.xwininfo
|
xwininfo
|
||||||
xorg.xrandr
|
xrandr
|
||||||
xdotool
|
xdotool
|
||||||
bc
|
bc
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user