Compare commits
93
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91c5379c9b | ||
|
|
3f685a78c3 | ||
|
|
30992acc2c | ||
|
|
2155d226ff | ||
|
|
7701d8e8c8 | ||
|
|
86be8033ce | ||
|
|
52c7509bb7 | ||
|
|
1786ba9062 | ||
|
|
eb7e5fd0cc | ||
|
|
af1c78bbe7 | ||
|
|
56dfe3b692 | ||
|
|
a5974585e2 | ||
|
|
e0c73eb642 | ||
|
|
0446de16a5 | ||
|
|
8b67f93967 | ||
|
|
bb53edd27b | ||
|
|
843fca49fe | ||
|
|
1aac2a487c | ||
|
|
3de7ac9f14 | ||
|
|
45c06680ce | ||
|
|
a8f4ad0a86 | ||
|
|
8e5fa83a3e | ||
|
|
71627c9e11 | ||
|
|
f9698ba7d3 | ||
|
|
95f4292270 | ||
|
|
4ce34f6031 | ||
|
|
ead5e73282 | ||
|
|
3c4d0bb61d | ||
|
|
561854558f | ||
|
|
134f9921e3 | ||
|
|
429bfa6a81 | ||
|
|
255ffad672 | ||
|
|
d5f0b24bbb | ||
|
|
bc63ba93ef | ||
|
|
d7727812ec | ||
|
|
d944de4611 | ||
|
|
2aeb811bdb | ||
|
|
d0dc9b12e5 | ||
|
|
f70623e865 | ||
|
|
a49524da88 | ||
|
|
d649aed4d6 | ||
|
|
3807472d1e | ||
|
|
1ed67f9cda | ||
|
|
6ab04b11d9 | ||
|
|
21069d519c | ||
|
|
013d308de8 | ||
|
|
b238cfe3f4 | ||
|
|
8d912625f5 | ||
|
|
861fad71f1 | ||
|
|
b847179625 | ||
|
|
e57d09e66b | ||
|
|
c49fe8e2d9 | ||
|
|
970bc466e3 | ||
|
|
949229f978 | ||
|
|
14a06588b6 | ||
|
|
da3e3d5f1b | ||
|
|
5e08f131c7 | ||
|
|
544f47abd0 | ||
|
|
af20072513 | ||
|
|
8759d71e1f | ||
|
|
3cc888b2a3 | ||
|
|
6cce8363f7 | ||
|
|
8340426ce2 | ||
|
|
58b2d7fda9 | ||
|
|
af77c702db | ||
|
|
5b56cfbf94 | ||
|
|
015f47f36a | ||
|
|
b4824d3b71 | ||
|
|
d5b711f10a | ||
|
|
4df37851d1 | ||
|
|
b6e2c6d0df | ||
|
|
121f79e048 | ||
|
|
e85156235c | ||
|
|
e89908b592 | ||
|
|
139402db48 | ||
|
|
0bbce5c85e | ||
|
|
3fd5c34aa1 | ||
|
|
a7df51dbb8 | ||
|
|
d89b8b51cc | ||
|
|
6c301d87fd | ||
|
|
4b6c84e63d | ||
|
|
59780f39d0 | ||
|
|
48d784a964 | ||
|
|
76ad137946 | ||
|
|
de081fe38f | ||
|
|
940ea05b3f | ||
|
|
107e86d533 | ||
|
|
db11705c44 | ||
|
|
6dca04621d | ||
|
|
00ef9ef193 | ||
|
|
d923423d52 | ||
|
|
9595f16689 | ||
|
|
77c9c87624 |
+1
-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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
@@ -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
|
||||||
@@ -23,4 +23,18 @@
|
|||||||
console.keyMap = "de";
|
console.keyMap = "de";
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
## Japanese input, env vars and servic start are configured in hyprland config
|
||||||
|
## Configure via program fcitx5-configuration
|
||||||
|
## There, add the mozc input for japanese
|
||||||
|
## This could also be done declaratively in this config, see: https://wiki.nixos.org/wiki/Fcitx5
|
||||||
|
i18n.inputMethod = {
|
||||||
|
enable = true;
|
||||||
|
type = "fcitx5";
|
||||||
|
fcitx5.addons = with pkgs; [
|
||||||
|
fcitx5-mozc
|
||||||
|
fcitx5-gtk # Ensures IME works in GTK applications
|
||||||
|
];
|
||||||
|
fcitx5.waylandFrontend = true; # compability with wayland
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,13 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [ inputs.stylix.nixosModules.stylix ];
|
imports = [ inputs.stylix.nixosModules.stylix ];
|
||||||
|
|
||||||
stylix.enable = true;
|
stylix.enable = true;
|
||||||
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||||
|
stylix.targets.gtksourceview.enable = false; # otherwise inkspace is recompiled every time
|
||||||
|
|
||||||
stylix.fonts = {
|
stylix.fonts = {
|
||||||
serif = {
|
serif = {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
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="
|
"noctalia.cachix.org-1:pCOR47nnMEo5thcxNDtzWpOxNFQsBRglJzxWPp3dkU4="
|
||||||
|
|||||||
@@ -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,7 @@
|
|||||||
|
# config to make solokey1 work for ssh
|
||||||
|
{...}: {
|
||||||
|
# services.pcscd.enable = true;
|
||||||
|
|
||||||
|
services.gnome.gcr-ssh-agent.enable = false;
|
||||||
|
programs.ssh.startAgent = true;
|
||||||
|
}
|
||||||
Generated
+815
-169
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,11 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vortix = {
|
||||||
|
url = "github:Harry-kp/vortix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-26.05";
|
url = "github:nix-community/home-manager/release-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ in {
|
|||||||
# neocmakelsp # cmake
|
# neocmakelsp # cmake
|
||||||
|
|
||||||
emacs-all-the-icons-fonts
|
emacs-all-the-icons-fonts
|
||||||
frajul.typst-languagetool
|
# frajul.typst-languagetool
|
||||||
ltex-ls-plus
|
ltex-ls-plus
|
||||||
|
|
||||||
(texlive.combine {
|
(texlive.combine {
|
||||||
|
|||||||
@@ -32,6 +32,30 @@ with lib; {
|
|||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.atuin = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
daemon.enable = true;
|
||||||
|
settings = {
|
||||||
|
auto_sync = false;
|
||||||
|
enter_accept = true; # execute directly on enter
|
||||||
|
ai = {
|
||||||
|
enabled = true;
|
||||||
|
capabilites = {
|
||||||
|
enable_file_tools = false;
|
||||||
|
enable_command_execution = false;
|
||||||
|
enable_history_output = false;
|
||||||
|
enable_history_search = true;
|
||||||
|
};
|
||||||
|
opening = {
|
||||||
|
# The context sent to the ai
|
||||||
|
send_cwd = false;
|
||||||
|
send_last_command = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -43,14 +67,28 @@ with lib; {
|
|||||||
cd $argv
|
cd $argv
|
||||||
'';
|
'';
|
||||||
run = ''
|
run = ''
|
||||||
nix run --impure nixpkgs#"$argv[1]" -- $argv[2..-1]
|
set -l channel nixpkgs
|
||||||
|
|
||||||
|
if test "$argv[1]" = -u; or test "$argv[1]" = --unstable
|
||||||
|
set channel github:NixOS/nixpkgs/nixpkgs-unstable
|
||||||
|
set -e argv[1]
|
||||||
|
end
|
||||||
|
nix run --impure $channel#"$argv[1]" -- $argv[2..-1]
|
||||||
'';
|
'';
|
||||||
shell = ''
|
shell = ''
|
||||||
set args
|
set -l channel nixpkgs
|
||||||
for arg in $argv
|
|
||||||
set args $args nixpkgs#$arg
|
if test "$argv[1]" = -u; or test "$argv[1]" = --unstable
|
||||||
|
set channel github:NixOS/nixpkgs/nixpkgs-unstable
|
||||||
|
set -e argv[1]
|
||||||
end
|
end
|
||||||
nix shell --impure $args
|
|
||||||
|
set -l packages
|
||||||
|
for arg in $argv
|
||||||
|
set -a packages $channel#$arg
|
||||||
|
end
|
||||||
|
|
||||||
|
nix shell --impure $packages
|
||||||
'';
|
'';
|
||||||
fish_user_key_bindings = ''
|
fish_user_key_bindings = ''
|
||||||
bind ctrl-space 'zi; commandline -f repaint'
|
bind ctrl-space 'zi; commandline -f repaint'
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
./waypipe.nix
|
./waypipe.nix
|
||||||
|
|
||||||
# ./hyprbars.nix
|
# ./hyprbars.nix
|
||||||
inputs.noctalia.homeModules.default
|
inputs.noctalia.homeModules.default # Use for latest version from inputs
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
@@ -39,6 +39,9 @@
|
|||||||
size = 24;
|
size = 24;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# noctalia-shell ipc call state all | jq .settings | xclip
|
||||||
|
# xdg.configFile."noctalia/settings.json".source = ./noctalia.json;
|
||||||
|
|
||||||
programs.noctalia = {
|
programs.noctalia = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# noctalia config export full > noctalia.toml
|
# noctalia config export full > noctalia.toml
|
||||||
@@ -56,8 +59,12 @@
|
|||||||
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" (
|
||||||
@@ -81,6 +88,7 @@
|
|||||||
MOZ_ENABLE_WAYLAND = 1;
|
MOZ_ENABLE_WAYLAND = 1;
|
||||||
QT_QPA_PLATFORM = "wayland";
|
QT_QPA_PLATFORM = "wayland";
|
||||||
LIBSEAT_BACKEND = "logind";
|
LIBSEAT_BACKEND = "logind";
|
||||||
|
NIXOS_OZONE_WL = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.network-manager-applet.enable = true;
|
services.network-manager-applet.enable = true;
|
||||||
@@ -103,6 +111,15 @@
|
|||||||
''
|
''
|
||||||
+ "-- Main config from `hyprland.lua`\n"
|
+ "-- Main config from `hyprland.lua`\n"
|
||||||
+ builtins.readFile ./hyprland.lua
|
+ builtins.readFile ./hyprland.lua
|
||||||
|
+ "-- Monitor config\n"
|
||||||
|
+ lib.concatStringsSep "\n" (
|
||||||
|
map (
|
||||||
|
monitor: "hl.monitor({ output = \"${monitor.name}\", mode = \"${toString monitor.width}x${toString monitor.height}@${toString monitor.refreshRate}\", position = \"${monitor.position}\", 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"
|
+ "-- Assign workspaces to monitors\n"
|
||||||
+ lib.concatStringsSep "\n" (
|
+ lib.concatStringsSep "\n" (
|
||||||
builtins.concatLists (
|
builtins.concatLists (
|
||||||
|
|||||||
@@ -1,16 +1,3 @@
|
|||||||
------------------
|
|
||||||
---- MONITORS ----
|
|
||||||
------------------
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/
|
|
||||||
hl.monitor({
|
|
||||||
output = "",
|
|
||||||
mode = "preferred",
|
|
||||||
position = "auto",
|
|
||||||
scale = "auto",
|
|
||||||
mirror = "",
|
|
||||||
})
|
|
||||||
|
|
||||||
-------------------
|
-------------------
|
||||||
---- AUTOSTART ----
|
---- AUTOSTART ----
|
||||||
-------------------
|
-------------------
|
||||||
@@ -18,8 +5,9 @@ hl.monitor({
|
|||||||
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
||||||
hl.on("hyprland.start", function()
|
hl.on("hyprland.start", function()
|
||||||
-- hl.exec_cmd("waybar")
|
-- hl.exec_cmd("waybar")
|
||||||
hl.exec_cmd("noctalia")
|
hl.exec_cmd("env QT_QPA_PLATFORMTHEME=qt5ct noctalia") -- env ensures noctalia works alongside kde
|
||||||
hl.exec_cmd("firefox")
|
hl.exec_cmd("firefox")
|
||||||
|
hl.exec_cmd("fcitx5 -d -r")
|
||||||
end)
|
end)
|
||||||
hl.on("config.reloaded", function()
|
hl.on("config.reloaded", function()
|
||||||
hl.exec_cmd("correct-workspace-locations")
|
hl.exec_cmd("correct-workspace-locations")
|
||||||
@@ -31,6 +19,10 @@ end)
|
|||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
||||||
hl.env("TERMINAL", terminal) -- e.g. for emacs
|
hl.env("TERMINAL", terminal) -- e.g. for emacs
|
||||||
|
-- Use fcitx for optional japanese input
|
||||||
|
hl.env("XMODIFIERS", "@im=fcitx")
|
||||||
|
hl.env("QT_IM_MODULE", "fcitx")
|
||||||
|
hl.env("SDL_IM_MODULE", "fcitx")
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
----- PERMISSIONS -----
|
----- PERMISSIONS -----
|
||||||
@@ -158,6 +150,13 @@ hl.bind(mainMod .. " + SHIFT + R", hl.dsp.exec_cmd("hyprctl reload"))
|
|||||||
hl.bind(mainMod .. " + PRINT", hl.dsp.exec_cmd("hyprshot-gui"))
|
hl.bind(mainMod .. " + PRINT", hl.dsp.exec_cmd("hyprshot-gui"))
|
||||||
hl.bind("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 .. " + P", hl.dsp.exec_cmd("toggle-screen-mirroring; correct-workspace-locations"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + P", function()
|
||||||
|
hl.device({
|
||||||
|
name = "wacom-one-by-wacom-m-pen",
|
||||||
|
output = hl.get_active_monitor().name
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
-- hyprctl eval 'hl.device({ name = "wacom-one-by-wacom-m-pen", output = hl.get_active_monitor().name })'
|
||||||
hl.bind(mainMod .. " + TAB", hl.dsp.exec_cmd("swaylock --daemonize"))
|
hl.bind(mainMod .. " + TAB", hl.dsp.exec_cmd("swaylock --daemonize"))
|
||||||
hl.bind(mainMod .. " + W", hl.dsp.exec_cmd("makoctl dismiss"))
|
hl.bind(mainMod .. " + W", hl.dsp.exec_cmd("makoctl dismiss"))
|
||||||
hl.bind(mainMod .. " + SHIFT + W", hl.dsp.exec_cmd("makoctl restore"))
|
hl.bind(mainMod .. " + SHIFT + W", hl.dsp.exec_cmd("makoctl restore"))
|
||||||
|
|||||||
@@ -1,4 +1,32 @@
|
|||||||
|
[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]
|
[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 = [
|
end = [
|
||||||
"cpu",
|
"cpu",
|
||||||
"ram",
|
"ram",
|
||||||
@@ -6,36 +34,189 @@ end = [
|
|||||||
"network_rx",
|
"network_rx",
|
||||||
"network_tx",
|
"network_tx",
|
||||||
"volume",
|
"volume",
|
||||||
"brightness",
|
|
||||||
"battery",
|
"battery",
|
||||||
"clock",
|
"clock",
|
||||||
|
"network",
|
||||||
"clipboard",
|
"clipboard",
|
||||||
"tray",
|
"tray"
|
||||||
"network"
|
|
||||||
]
|
]
|
||||||
center = []
|
font_weight = 500
|
||||||
|
layer = "top"
|
||||||
margin_edge = 0
|
margin_edge = 0
|
||||||
margin_ends = 0
|
margin_ends = 0
|
||||||
|
margin_opposite_edge = 0
|
||||||
|
padding = 14
|
||||||
|
panel_overlap = 1
|
||||||
position = "bottom"
|
position = "bottom"
|
||||||
radius = 0
|
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
|
shadow = false
|
||||||
|
show_on_workspace_switch = true
|
||||||
start = [ "workspaces" ]
|
start = [ "workspaces" ]
|
||||||
widget_spacing = 10
|
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]
|
[control_center]
|
||||||
hidden_tabs = []
|
hidden_tabs = []
|
||||||
sidebar = "full"
|
sidebar = "full"
|
||||||
sidebar_section = "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]
|
[desktop_widgets]
|
||||||
enabled = false
|
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]
|
[idle]
|
||||||
pre_action_fade_seconds = 0
|
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]
|
[location]
|
||||||
address = "Würzburg, Germany"
|
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]
|
[lockscreen_widgets]
|
||||||
enabled = false
|
enabled = false
|
||||||
@@ -52,6 +233,7 @@ widget_order = [ "lockscreen-login-box@HDMI-A-1", "lockscreen-login-box@eDP-1" ]
|
|||||||
box_width = 400.0
|
box_width = 400.0
|
||||||
cx = 960.0
|
cx = 960.0
|
||||||
cy = 961.0
|
cy = 961.0
|
||||||
|
enabled = true
|
||||||
output = "HDMI-A-1"
|
output = "HDMI-A-1"
|
||||||
rotation = 0.0
|
rotation = 0.0
|
||||||
type = "login_box"
|
type = "login_box"
|
||||||
@@ -72,6 +254,7 @@ widget_order = [ "lockscreen-login-box@HDMI-A-1", "lockscreen-login-box@eDP-1" ]
|
|||||||
box_width = 400.0
|
box_width = 400.0
|
||||||
cx = 960.0
|
cx = 960.0
|
||||||
cy = 961.0
|
cy = 961.0
|
||||||
|
enabled = true
|
||||||
output = "eDP-1"
|
output = "eDP-1"
|
||||||
rotation = 0.0
|
rotation = 0.0
|
||||||
type = "login_box"
|
type = "login_box"
|
||||||
@@ -87,75 +270,359 @@ widget_order = [ "lockscreen-login-box@HDMI-A-1", "lockscreen-login-box@eDP-1" ]
|
|||||||
show_login_button = true
|
show_login_button = true
|
||||||
show_password_hint = true
|
show_password_hint = true
|
||||||
|
|
||||||
|
[nightlight]
|
||||||
|
enabled = false
|
||||||
|
force = false
|
||||||
|
temperature_day = 6500
|
||||||
|
temperature_night = 4000
|
||||||
|
|
||||||
[notification]
|
[notification]
|
||||||
|
background_opacity = 0.97000002861022949
|
||||||
|
collapse_on_dismiss = true
|
||||||
enable_daemon = false
|
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]
|
[shell.animation]
|
||||||
enabled = false
|
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]
|
[shell.panel]
|
||||||
floating_offset = 13
|
borders = true
|
||||||
open_near_click_control_center = true
|
|
||||||
clipboard_placement = "attached"
|
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_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]]
|
[[shell.session.actions]]
|
||||||
action = "lock"
|
action = "lock"
|
||||||
|
command = ""
|
||||||
countdown_seconds = 0.0
|
countdown_seconds = 0.0
|
||||||
enabled = true
|
enabled = true
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
shortcut = "1"
|
shortcut = "1"
|
||||||
variant = "default"
|
variant = "default"
|
||||||
|
|
||||||
[[shell.session.actions]]
|
[[shell.session.actions]]
|
||||||
action = "logout"
|
action = "logout"
|
||||||
|
command = ""
|
||||||
countdown_seconds = 0.0
|
countdown_seconds = 0.0
|
||||||
enabled = true
|
enabled = true
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
shortcut = "2"
|
shortcut = "2"
|
||||||
variant = "default"
|
variant = "default"
|
||||||
|
|
||||||
[[shell.session.actions]]
|
[[shell.session.actions]]
|
||||||
action = "lock_and_suspend"
|
action = "lock_and_suspend"
|
||||||
|
command = ""
|
||||||
countdown_seconds = 0.0
|
countdown_seconds = 0.0
|
||||||
enabled = false
|
enabled = false
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
shortcut = "3"
|
shortcut = "3"
|
||||||
variant = "default"
|
variant = "default"
|
||||||
|
|
||||||
[[shell.session.actions]]
|
[[shell.session.actions]]
|
||||||
action = "reboot"
|
action = "reboot"
|
||||||
|
command = ""
|
||||||
countdown_seconds = 0.0
|
countdown_seconds = 0.0
|
||||||
enabled = true
|
enabled = true
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
shortcut = "4"
|
shortcut = "4"
|
||||||
variant = "default"
|
variant = "default"
|
||||||
|
|
||||||
[[shell.session.actions]]
|
[[shell.session.actions]]
|
||||||
action = "shutdown"
|
action = "shutdown"
|
||||||
|
command = ""
|
||||||
countdown_seconds = 0.0
|
countdown_seconds = 0.0
|
||||||
enabled = true
|
enabled = true
|
||||||
|
glyph = ""
|
||||||
|
label = ""
|
||||||
shortcut = "5"
|
shortcut = "5"
|
||||||
variant = "destructive"
|
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]
|
[theme]
|
||||||
builtin = "Catppuccin"
|
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]
|
[widget.clock]
|
||||||
format = "{:%a %d.%m. %H:%M:%S}"
|
format = "{:%a %d.%m. %H:%M:%S}"
|
||||||
|
type = "clock"
|
||||||
|
|
||||||
[widget.cpu]
|
[widget.cpu]
|
||||||
display = "text"
|
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]
|
[widget.network_rx]
|
||||||
display = "text"
|
display = "text"
|
||||||
|
stat = "net_rx"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
[widget.network_tx]
|
[widget.network_tx]
|
||||||
display = "text"
|
display = "text"
|
||||||
|
stat = "net_tx"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.output_volume]
|
||||||
|
device = "output"
|
||||||
|
type = "volume"
|
||||||
|
|
||||||
[widget.ram]
|
[widget.ram]
|
||||||
display = "text"
|
display = "text"
|
||||||
stat = "ram_pct"
|
stat = "ram_pct"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.spacer]
|
||||||
|
type = "spacer"
|
||||||
|
|
||||||
[widget.sysmon]
|
[widget.sysmon]
|
||||||
display = "text"
|
display = "text"
|
||||||
stat = "disk_pct"
|
stat = "disk_pct"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
|
[widget.temp]
|
||||||
|
stat = "cpu_temp"
|
||||||
|
type = "sysmon"
|
||||||
|
|
||||||
[widget.workspaces]
|
[widget.workspaces]
|
||||||
scale = 1.1
|
scale = 1.1000000000000001
|
||||||
|
type = "workspaces"
|
||||||
|
|||||||
@@ -2,11 +2,10 @@
|
|||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
# TODO: Detect these instead of hardcoding them
|
INTERNAL_MONITOR="@INTERNAL_MONITOR@"
|
||||||
INTERNAL_MONITOR="eDP-1"
|
EXTERNAL_MONITOR="@EXTERNAL_MONITOR@"
|
||||||
EXTERNAL_MONITOR="HDMI-A-1"
|
|
||||||
|
|
||||||
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r '.[] | select(.name == "HDMI-A-1") | .mirrorOf')
|
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r --arg EXTERNAL "$EXTERNAL_MONITOR" '.[] | select(.name == $EXTERNAL) | .mirrorOf')
|
||||||
|
|
||||||
echo "current setting: "
|
echo "current setting: "
|
||||||
echo $MIRROR_SETTING
|
echo $MIRROR_SETTING
|
||||||
|
|||||||
@@ -18,6 +18,11 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
(anki.withAddons [
|
||||||
|
ankiAddons.anki-connect
|
||||||
|
ankiAddons.passfail2
|
||||||
|
ankiAddons.review-heatmap
|
||||||
|
])
|
||||||
arandr
|
arandr
|
||||||
calibre # ebook manager and viewer
|
calibre # ebook manager and viewer
|
||||||
# digikam
|
# digikam
|
||||||
@@ -48,7 +53,7 @@
|
|||||||
qpdfview
|
qpdfview
|
||||||
# qutebrowser
|
# qutebrowser
|
||||||
# realvnc-vnc-viewer
|
# realvnc-vnc-viewer
|
||||||
# rpi-imager # make isos
|
rpi-imager # make isos
|
||||||
# rustdesk
|
# rustdesk
|
||||||
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
|
||||||
@@ -65,6 +70,9 @@
|
|||||||
networkmanager-openvpn
|
networkmanager-openvpn
|
||||||
keepassxc
|
keepassxc
|
||||||
|
|
||||||
|
unstable.joplin-desktop
|
||||||
|
unstable.libation
|
||||||
|
|
||||||
## My scripts
|
## My scripts
|
||||||
frajul.open-messaging
|
frajul.open-messaging
|
||||||
frajul.xwacomcalibrate
|
frajul.xwacomcalibrate
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
{pkgs, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
programs.opencode = {
|
programs.opencode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.unstable.opencode;
|
package = pkgs.unstable.opencode;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
inputs.vortix.packages.${pkgs.system}.default # tui for wireguard
|
||||||
|
|
||||||
|
worktrunk # interface for git worktrees
|
||||||
|
|
||||||
watchexec # Run command when any file in current dir changes
|
watchexec # Run command when any file in current dir changes
|
||||||
android-tools # adb
|
android-tools # adb
|
||||||
# shellcheck # Check bash scripts for common errors
|
# shellcheck # Check bash scripts for common errors
|
||||||
|
|||||||
+31
-21
@@ -26,34 +26,44 @@
|
|||||||
is-nixos = true;
|
is-nixos = true;
|
||||||
terminal = "alacritty";
|
terminal = "alacritty";
|
||||||
|
|
||||||
# --------- ---------
|
# ---------- -------- ---------
|
||||||
# | DVI-D-1 | | DVI-D-2 |
|
# | HDMI-A-1 | | DP-1 | | DVI-D-1 |
|
||||||
# --------- ---------
|
# ---------- -------- ---------
|
||||||
monitors = [
|
monitors = [
|
||||||
{
|
{
|
||||||
name = "DVI-D-1";
|
name = "HDMI-A-1";
|
||||||
width = 1680;
|
width = 1920;
|
||||||
height = 1050;
|
height = 1080;
|
||||||
|
position = "0x0";
|
||||||
workspaces = [
|
workspaces = [
|
||||||
"1"
|
|
||||||
"2"
|
|
||||||
"3"
|
|
||||||
"4"
|
|
||||||
"5"
|
|
||||||
];
|
|
||||||
primary = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "DVI-D-2";
|
|
||||||
width = 1680;
|
|
||||||
height = 1050;
|
|
||||||
workspaces = [
|
|
||||||
"6"
|
|
||||||
"7"
|
|
||||||
"8"
|
"8"
|
||||||
"9"
|
"9"
|
||||||
"10"
|
"10"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "DP-1";
|
||||||
|
width = 1680;
|
||||||
|
height = 1050;
|
||||||
|
position = "1920x0";
|
||||||
|
workspaces = [
|
||||||
|
"1"
|
||||||
|
"2"
|
||||||
|
"3"
|
||||||
|
"4"
|
||||||
|
];
|
||||||
|
primary = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "DVI-D-1";
|
||||||
|
width = 1680;
|
||||||
|
height = 1050;
|
||||||
|
position = "3600x0";
|
||||||
|
workspaces = [
|
||||||
|
"5"
|
||||||
|
"6"
|
||||||
|
"7"
|
||||||
|
];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
"${pwd}/features-nixos/optional/k9s"
|
"${pwd}/features-nixos/optional/k9s"
|
||||||
|
|
||||||
"${pwd}/features-nixos/optional/avahi.nix"
|
"${pwd}/features-nixos/optional/avahi.nix"
|
||||||
|
"${pwd}/features-nixos/optional/solokey.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "aspi";
|
networking.hostName = "aspi";
|
||||||
@@ -31,6 +32,9 @@
|
|||||||
|
|
||||||
# networking.firewall.checkReversePath = false; # Makes wg interface with all ips work
|
# networking.firewall.checkReversePath = false; # Makes wg interface with all ips work
|
||||||
|
|
||||||
|
programs.ausweisapp.enable = true;
|
||||||
|
programs.ausweisapp.openFirewall = true; # for pairing with smartphone
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
syncthing = {
|
syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
+41
-183
@@ -4,10 +4,16 @@
|
|||||||
{
|
{
|
||||||
pwd,
|
pwd,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
inputs,
|
||||||
|
outputs,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports =
|
||||||
|
[
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
|
||||||
|
./disko.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
"${pwd}/features-nixos/global/fish.nix" # fish for admin
|
"${pwd}/features-nixos/global/fish.nix" # fish for admin
|
||||||
@@ -15,7 +21,20 @@
|
|||||||
"${pwd}/features-nixos/global/nix.nix"
|
"${pwd}/features-nixos/global/nix.nix"
|
||||||
"${pwd}/features-nixos/global/sops.nix"
|
"${pwd}/features-nixos/global/sops.nix"
|
||||||
"${pwd}/features-nixos/global/root.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,97 +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 = [
|
|
||||||
# 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
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
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 ==========
|
||||||
@@ -327,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"];
|
||||||
|
|||||||
+15
-14
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,15 +26,22 @@
|
|||||||
"${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"
|
||||||
|
"${pwd}/features-nixos/optional/solokey.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "kardorf";
|
networking.hostName = "kardorf";
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
|
|
||||||
# Not using the drivers leads to way better results
|
programs.ausweisapp.enable = true;
|
||||||
# services.xserver.videoDrivers = [ "nvidia" ];
|
programs.ausweisapp.openFirewall = true; # for pairing with smartphone
|
||||||
|
|
||||||
networking.networkmanager.insertNameservers = ["192.168.3.252"];
|
modules = {
|
||||||
|
syncthing = {
|
||||||
|
enable = true;
|
||||||
|
overrideSettings = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs.kdeconnect.enable = true;
|
programs.kdeconnect.enable = true;
|
||||||
programs.steam.enable = true;
|
programs.steam.enable = true;
|
||||||
|
|||||||
@@ -1,89 +1,59 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
boot.initrd.availableKernelModules = [
|
imports = [
|
||||||
"ehci_pci"
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
"ahci"
|
|
||||||
"xhci_pci"
|
|
||||||
"usbhid"
|
|
||||||
"uas"
|
|
||||||
"usb_storage"
|
|
||||||
"sd_mod"
|
|
||||||
"sr_mod"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "sd_mod"];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [];
|
||||||
boot.kernelModules = ["kvm-intel"];
|
boot.kernelModules = ["kvm-intel"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/97a9342e-0be0-4193-9a25-03400fc7da94";
|
device = "/dev/disk/by-uuid/97a9342e-0be0-4193-9a25-03400fc7da94";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [
|
options = ["subvol=root"];
|
||||||
"subvol=root"
|
|
||||||
"compress=zstd"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/home" = {
|
|
||||||
device = "/dev/disk/by-uuid/97a9342e-0be0-4193-9a25-03400fc7da94";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [
|
|
||||||
"subvol=home"
|
|
||||||
"compress=zstd"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/nix" = {
|
fileSystems."/nix" = {
|
||||||
device = "/dev/disk/by-uuid/97a9342e-0be0-4193-9a25-03400fc7da94";
|
device = "/dev/disk/by-uuid/97a9342e-0be0-4193-9a25-03400fc7da94";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [
|
options = ["subvol=nix"];
|
||||||
"subvol=nix"
|
|
||||||
"compress=zstd"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/swap" = {
|
fileSystems."/swap" = {
|
||||||
device = "/dev/disk/by-uuid/97a9342e-0be0-4193-9a25-03400fc7da94";
|
device = "/dev/disk/by-uuid/97a9342e-0be0-4193-9a25-03400fc7da94";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [
|
options = ["subvol=swap"];
|
||||||
"subvol=swap"
|
};
|
||||||
"noatime"
|
|
||||||
];
|
fileSystems."/home" = {
|
||||||
|
device = "/dev/disk/by-uuid/97a9342e-0be0-4193-9a25-03400fc7da94";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=home"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
fileSystems."/boot/efi" = {
|
||||||
device = "/dev/disk/by-uuid/7D48-A59C";
|
device = "/dev/disk/by-uuid/7D48-A59C";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
|
options = ["fmask=0022" "dmask=0022"];
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [];
|
||||||
{
|
|
||||||
device = "/swap/swapfile";
|
|
||||||
size = 16 * 1024;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# 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.interfaces.docker0.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
# Use latest version of driver
|
|
||||||
# hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_470;
|
|
||||||
hardware.nvidia.modesetting.enable = true; # produces errors, display manager fails to start
|
|
||||||
|
|
||||||
hardware.nvidia.nvidiaSettings = true;
|
services.xserver.videoDrivers = ["nvidia"];
|
||||||
hardware.nvidia.open = false;
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
modesetting.enable = true;
|
||||||
|
open = false;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,17 +1,19 @@
|
|||||||
{
|
{
|
||||||
|
lib,
|
||||||
appimageTools,
|
appimageTools,
|
||||||
fetchurl,
|
fetchurl,
|
||||||
libgdiplus,
|
libgdiplus,
|
||||||
}: let
|
}: let
|
||||||
pname = "smath-studio";
|
pname = "smath-studio";
|
||||||
version = "1.3.0.9126";
|
version = "1.5.0.9678";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://smath.com/en-US/files/Download/cqSek/SMathStudioDesktop.1_3_0_9126.x86_64.ubuntu-22_04.glibc2.35.AppImage";
|
# The code after /Download/ changes per release
|
||||||
hash = "sha256-4FpdFGPFaPDK6WWSJHVtxcC8auaNkGmHyUtbegij6cQ=";
|
url = "https://smath.com/en-US/files/Download/c4zCE/SMathStudioDesktop.1_5_0_9678.x86_64.ubuntu-22_04.glibc2.35.AppImage";
|
||||||
|
hash = "sha256-6lnuRnhoH6E+jIZXSgb/Pz9wE9nVAbduDHrkKCKKH+Y=";
|
||||||
};
|
};
|
||||||
|
|
||||||
appimageContents = appimageTools.extractType2 {
|
appimageContents = appimageTools.extract {
|
||||||
inherit pname version src;
|
inherit pname version src;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
@@ -30,6 +32,22 @@ in
|
|||||||
extraInstallCommands = ''
|
extraInstallCommands = ''
|
||||||
install -m 444 -D ${appimageContents}/*.desktop -t $out/share/applications
|
install -m 444 -D ${appimageContents}/*.desktop -t $out/share/applications
|
||||||
sed -i "s|^Exec=.*|Exec=smath-studio %U|" $out/share/applications/*.desktop
|
sed -i "s|^Exec=.*|Exec=smath-studio %U|" $out/share/applications/*.desktop
|
||||||
cp -r ${appimageContents}/usr/share/icons $out/share
|
|
||||||
|
# Package icons into /apps directory
|
||||||
|
for icon in ${appimageContents}/usr/share/icons/hicolor/*/*.png; do
|
||||||
|
if [ -f "$icon" ]; then
|
||||||
|
size=$(basename $(dirname "$icon"))
|
||||||
|
install -m 444 -D "$icon" "$out/share/icons/hicolor/$size/apps/smath.png"
|
||||||
|
fi
|
||||||
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Tiny, powerful, free mathematical program with WYSIWYG editor and complete units of measurements support";
|
||||||
|
homepage = "https://smath.com/";
|
||||||
|
license = licenses.unfree; # SMath is freeware, but closed source
|
||||||
|
# maintainers = with maintainers; [frajul];
|
||||||
|
mainProgram = "smath-studio";
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user