Some lsp refactor. Made webdav finally work with some internet search

This commit is contained in:
2025-08-31 22:38:24 +02:00
parent b781a9f492
commit 85fbdb5795
14 changed files with 224 additions and 181 deletions

View File

@@ -1,2 +1,19 @@
# Documentation https://github.com/Mic92/sops-nix
# For example see here https://github.com/Mic92/dotfiles/blob/d6114726d859df36ccaa32891c4963ae5717ef7f/nixos/.sops.yaml
# Get the public host key with
# nix-shell -p ssh-to-age --run 'cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age'
# The user key should be in ~/.config/sops/age/keys.txt
keys: keys:
- &primary age1a2kpues0gayampkn9pn2czhk24r0yl4jnw84qg4gh5l72dflx95qkmyqzv - &jonas age1a2kpues0gayampkn9pn2czhk24r0yl4jnw84qg4gh5l72dflx95qkmyqzv
- &minoxy age1qddfn6apphafe4muvvv3vguxewa03ay2jlgqkng3uwwzfjw204dsfpt0uu
creation_rules:
- path_regex: secrets.yaml
key_groups:
- age:
- *jonas
- *minoxy

View File

@@ -1,52 +1,55 @@
{ {
description = "Main nixos system configuration management by Jonas Hahn"; description = "Main nixos system configuration management by Jonas Hahn";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-25.05"; nixpkgs.url = "nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
xremap-flake.url = "github:xremap/nix-flake?rev=8001f37b1ffe86e76b62f36afadee2f4acf90e70"; # One commit behind head
};
outputs = { self, nixpkgs, nixpkgs-unstable, sops-nix, home-manager, ... }@inputs: sops-nix = {
let url = "github:Mic92/sops-nix";
system = "x86_64-linux"; inputs.nixpkgs.follows = "nixpkgs";
};
overlay-unstable = final: prev: { home-manager = {
unstable = nixpkgs-unstable.legacyPackages.${prev.system}; url = "github:nix-community/home-manager/release-25.05";
}; inputs.nixpkgs.follows = "nixpkgs";
};
helperModules = [ xremap-flake.url =
({ config, pkgs, ... }: { "github:xremap/nix-flake?rev=8001f37b1ffe86e76b62f36afadee2f4acf90e70"; # One commit behind head
nixpkgs.overlays = [ overlay-unstable ]; };
})
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.jonas = import ./user/home.nix;
}
];
mkHost = name: path: outputs =
nixpkgs.lib.nixosSystem { { self, nixpkgs, nixpkgs-unstable, sops-nix, home-manager, ... }@inputs:
inherit system; let
specialArgs = { inherit inputs; }; system = "x86_64-linux";
modules = [ path ] ++ helperModules;
}; overlay-unstable = final: prev: {
in { unstable = nixpkgs-unstable.legacyPackages.${prev.system};
nixosConfigurations = { };
thinix = mkHost "thinix" ./hosts/thinix-thinkpad/configuration.nix;
nixyos = mkHost "nixyos" ./hosts/nixyos-asus/configuration.nix; helperModules = [
minoxy = mkHost "minoxy" ./hosts/minoxy-workstation/configuration.nix; ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })
}; home-manager.nixosModules.home-manager
}; {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.jonas = import ./user/home.nix;
}
];
mkHost = name: path:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [ path sops-nix.nixosModules.sops ] ++ helperModules;
};
in {
nixosConfigurations = {
thinix = mkHost "thinix" ./hosts/thinix-thinkpad/configuration.nix;
nixyos = mkHost "nixyos" ./hosts/nixyos-asus/configuration.nix;
minoxy = mkHost "minoxy" ./hosts/minoxy-workstation/configuration.nix;
};
};
} }

View File

@@ -6,7 +6,8 @@
./../../user/users.nix ./../../user/users.nix
./../../modules/common.nix ./../../modules/essential.nix
./../../modules/common/sops.nix
./../../modules/services/webdav.nix ./../../modules/services/webdav.nix

View File

@@ -6,7 +6,8 @@
./../../user/users.nix ./../../user/users.nix
./../../modules/common.nix ./../../modules/essential.nix
./../../modules/common/sops.nix
./../../modules/hardware/xremap.nix ./../../modules/hardware/xremap.nix
./../../modules/hardware/boot.nix ./../../modules/hardware/boot.nix

View File

@@ -6,7 +6,8 @@
./../../user/users.nix ./../../user/users.nix
./../../modules/common.nix ./../../modules/essential.nix
./../../modules/common/sops.nix
./../../modules/hardware/xremap.nix ./../../modules/hardware/xremap.nix
./../../modules/hardware/boot.nix ./../../modules/hardware/boot.nix

8
modules/common/sops.nix Normal file
View File

@@ -0,0 +1,8 @@
{ ... }:
{
sops.defaultSopsFile = ./../../secrets.yaml;
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
sops.age.keyFile = "/var/lib/sops-nix/key.txt";
sops.age.generateKey = true;
}

View File

@@ -3,6 +3,7 @@
{ {
# Basic services # Basic services
services.locate.enable = true; services.locate.enable = true;
services.openssh.enable = true;
# Nix fun # Nix fun
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;

View File

@@ -1,26 +1,26 @@
{ config, ... }: { config, ... }:
{ {
hardware.graphics = { hardware.graphics = { enable = true; };
enable = true;
}; services.xserver.videoDrivers = [ "nvidia" ];
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = { hardware.nvidia = {
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = false; powerManagement.enable = false;
open = false; open = false;
nvidiaSettings = true; nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
}; };
# Cuda for blender long build times # Cuda for blender long build times
#environment.systemPackages = with pkgs; [ #environment.systemPackages = with pkgs; [
# (blender.override { # (blender.override {
# cudaSupport = true; # cudaSupport = true;
# }) # })
#]; #];
# This causes very long build times # This causes very long build times
#nixpkgs.config.cudaSupport = true; #nixpkgs.config.cudaSupport = true;
#hardware.enableAllFirmware = true; #hardware.enableAllFirmware = true;
} }

View File

@@ -1,39 +1,37 @@
{ inputs, ... }: { inputs, ... }:
{ {
imports = [ imports = [ inputs.xremap-flake.nixosModules.default ];
inputs.xremap-flake.nixosModules.default
];
services.xremap = { services.xremap = {
withHypr = true; withHypr = true;
userName = "jonas"; userName = "jonas";
config = { config = {
modmap = [ modmap = [
{ {
name = "Capslock to esc and ctrl"; name = "Capslock to esc and ctrl";
remap = { remap = {
"CAPSLOCK" = { "CAPSLOCK" = {
"alone" = "ESC"; "alone" = "ESC";
"held" = "CTRL_L"; "held" = "CTRL_L";
}; };
"ESC" = "CAPSLOCK"; "ESC" = "CAPSLOCK";
}; };
} }
{ {
name = "Switch super and alt"; name = "Switch super and alt";
remap = { remap = {
"SUPER_L" = { "SUPER_L" = {
"alone" = "ALT_L"; "alone" = "ALT_L";
"held" = "ALT_L"; "held" = "ALT_L";
}; };
"ALT_L" = { "ALT_L" = {
"alone" = "SUPER_L"; "alone" = "SUPER_L";
"held" = "SUPER_L"; "held" = "SUPER_L";
}; };
}; };
} }
]; ];
}; };
}; };
} }

View File

@@ -1,67 +1,65 @@
{ config, lib, ... }: { config, lib, ... }:
let let inherit (lib) mkOption types;
inherit (lib) mkOption types; in {
in
{
options.batMode = mkOption { options.batMode = mkOption {
type = types.enum [ "single" "double" ]; type = types.enum [ "single" "double" ];
default = "single"; default = "single";
}; };
config = { config = {
powerManagement.powertop.enable = true; powerManagement.powertop.enable = true;
services.upower = { services.upower = {
enable = true; enable = true;
# In accordance with the waybar battery colors # In accordance with the waybar battery colors
percentageLow = 30; percentageLow = 30;
percentageCritical = 20; percentageCritical = 20;
percentageAction = 10; percentageAction = 10;
criticalPowerAction = "PowerOff"; # This can destroy work criticalPowerAction = "PowerOff"; # This can destroy work
usePercentageForPolicy = true; usePercentageForPolicy = true;
}; };
services.tlp = if config.batMode == "single" then { services.tlp = if config.batMode == "single" then {
enable = true; enable = true;
settings = { settings = {
START_CHARGE_THRESH_BAT0 = 65; START_CHARGE_THRESH_BAT0 = 65;
STOP_CHARGE_THRESH_BAT0 = 85; STOP_CHARGE_THRESH_BAT0 = 85;
CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_MIN_PERF_ON_AC = 0; CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100; CPU_MAX_PERF_ON_AC = 100;
CPU_MIN_PERF_ON_BAT = 0; CPU_MIN_PERF_ON_BAT = 0;
CPU_MAX_PERF_ON_BAT = 65; CPU_MAX_PERF_ON_BAT = 65;
}; };
} else { } else {
enable = true; enable = true;
settings = { settings = {
CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_MIN_PERF_ON_AC = 0; CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100; CPU_MAX_PERF_ON_AC = 100;
CPU_MIN_PERF_ON_BAT = 0; CPU_MIN_PERF_ON_BAT = 0;
CPU_MAX_PERF_ON_BAT = 75; CPU_MAX_PERF_ON_BAT = 75;
# 0 is first # 0 is first
START_CHARGE_THRESH_BAT0 = 60; START_CHARGE_THRESH_BAT0 = 60;
STOP_CHARGE_THRESH_BAT0 = 85; STOP_CHARGE_THRESH_BAT0 = 85;
# 1 is second # 1 is second
START_CHARGE_THRESH_BAT1 = 60; START_CHARGE_THRESH_BAT1 = 60;
STOP_CHARGE_THRESH_BAT1 = 85; STOP_CHARGE_THRESH_BAT1 = 85;
}; };
}; };
}; };
} }

View File

@@ -1,9 +1,5 @@
{ ... }: { ... }:
{ {
networking = { networking = { networkmanager = { wifi.powersave = true; }; };
networkmanager = {
wifi.powersave = true;
};
};
} }

View File

@@ -1,11 +1,11 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
# Scanning over the network support # Scanning over the network support
hardware.sane.enable = true; hardware.sane.enable = true;
hardware.sane.extraBackends = [ pkgs.sane-airscan ]; hardware.sane.extraBackends = [ pkgs.sane-airscan ];
hardware.sane.disabledDefaultBackends = [ "escl" ]; hardware.sane.disabledDefaultBackends = [ "escl" ];
services.udev.packages = [ pkgs.sane-airscan ]; services.udev.packages = [ pkgs.sane-airscan ];
services.avahi.enable = true; services.avahi.enable = true;
services.avahi.nssmdns = true; services.avahi.nssmdns = true;
} }

View File

@@ -1,20 +1,22 @@
{ inputs, ... }: { ... }:
{ {
imports = [ inputs.sops-nix.nixosModules.sops ];
# For web mounting # For web mounting
services.davfs2.enable = true; services.davfs2.enable = true;
# Maybe the failed encryption is due to the btrfs system please remove this in the future # Load the secret
sops = { sops = {
defaultSopsFile = ./../../secrets.yaml; secrets = {
age.keyFile = "/home/jonas/.config/sops/age/keys.txt"; webdav_authstring = {
secrets = { webdav_secret = { path = "/etc/davfs2/secrets"; }; }; mode = "0600";
path = "/etc/davfs2/secrets";
};
};
}; };
systemd.mounts = [{ systemd.mounts = [{
description = "WebDAV mount point"; description = "Webdav mount point";
after = [ "network-online.target" ];
wants = [ "network-online.target" ]; wants = [ "network-online.target" ];
what = "https://dav.hahn1.one"; what = "https://dav.hahn1.one";
where = "/mnt/webdav"; where = "/mnt/webdav";
@@ -22,4 +24,12 @@
options = "uid=1000,gid=1000,file_mode=0664,dir_mode=2775,_netdev"; options = "uid=1000,gid=1000,file_mode=0664,dir_mode=2775,_netdev";
mountConfig.TimeoutSec = "5s"; mountConfig.TimeoutSec = "5s";
}]; }];
# Is this too much power drain?
systemd.automounts = [{
description = "Webdav automount";
where = "/mnt/webdav";
wantedBy = [ "multi-user.target" ];
automountConfig = { TimeoutIdleSec = "2m"; };
}];
} }

View File

@@ -1,16 +1,25 @@
webdav_secret: ENC[AES256_GCM,data:OZyEFW/Aw2dPqZFvZoPWA/BBO7k/lzw0UVffuuEuNBTkjN+eHAxFZw==,iv:Y6kTyMb5wD5iJ1g6OHPiHGuu8qFjiduau0mjcS8KLjs=,tag:97OIL+aegLCMjlJM0SdJBg==,type:str] webdav_authstring: ENC[AES256_GCM,data:9Q9hEgwNjKs75/5KDok4DGQZ7EAJakcFYLLjehmVDzgdXJyv8D52oQ==,iv:dWGWgZXyw49zJqIbPdy4zpGzGk5H/m47DV08NB1w9go=,tag:PAVUDk8+6ZXlD8o8MHyD3Q==,type:str]
sops: sops:
age: age:
- recipient: age1a2kpues0gayampkn9pn2czhk24r0yl4jnw84qg4gh5l72dflx95qkmyqzv - recipient: age1a2kpues0gayampkn9pn2czhk24r0yl4jnw84qg4gh5l72dflx95qkmyqzv
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBncWNwT2F1ZkxhY3h4UFFs YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGV1BLWnpIWlVCMHRLRFJR
U2lpM3lXdVZqNDFiSTRTaDI4UFFDRk1QNUUwCnpvdjAzNFQ0dnJ5Wm52b1hBUUFL UXhBOGFNN2ZMd1JNVGhyOU12b1JaajNBYUh3CkZFNzR6NElhYldQbmtTTlpIK0sx
dzdHb0RwbU02Y3FzMkM2eFNPUzg2UGMKLS0tIDZrdXc1RFc5NUJNb0ZhclNuYUNX UUVZb3BqYWEwQUxiTklKeGJFYmxUaWcKLS0tIDExc1lqV3BITzA3ME9jM3FWU09V
dmFEc1hrR3czZTBzU2pLQ0ZUL3VPblEKRwy03xI+qiTMJsmG/pe/3WoB8c+vLtXo Q2p1UHVBNW54UnIydU5yM25OK0llRkUKnr2SftBM+rBFfakhoHL1UyVm9BIgmW05
kaYY18r3tICKfxQQyDWh3Gevo2+CGhblCcgJ3AnyWQBqIZwIudDuHw== ARXyD4DR2MF5pPRnE6s1avfocX4IObB0xNHeuOegXUYhKWlSkTztNw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-08-31T02:50:46Z" - recipient: age1qddfn6apphafe4muvvv3vguxewa03ay2jlgqkng3uwwzfjw204dsfpt0uu
mac: ENC[AES256_GCM,data:Gl7cLnEJ3TVL4gS4CAZQESJyzVWqm3aSLN/doLBHnAYL/Shu42ygJuuT+jKdFXo4tXKjYJuvw7gmuoVFx0L23lRpqUeU4b9fExmJX/ZVGZwJC3nreFCBqx8LWkF2cGtZJ1HObu97EzlKBxQ8c/QZZ/v3C4pAfwxNNiVavu8BUfg=,iv:qeKjETggLjtCNCyuM2z5WX4JGPcxcN99QBPQmK/a0NE=,tag:NwV56PeRGcxsdn46lre2Sg==,type:str] enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhQUlLNm5wdHc1Q3VFZFZQ
eEN2VzkycStHQUlMK1MrdElrYTFJN0VCUFgwCjlsT1BpZVNWdzBmeDdSbXpTbEtB
MEhXVTJ1czRSLzdXQ0l2bzlLMU53ak0KLS0tIG5yUHVQSDk3eTJTenBDNXhGYXk2
SnM5V2VDMmxiRExqeFZrcm01ME5FRlUKCq047F8LGPCAdcpLBr66O4FVAt9q7Ug6
o5Dpn6Mo5c08tdF2m88Q1fXMSXIpfdTJCffIjk82WiU4M3Ni/8Mmaw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-08-31T20:35:46Z"
mac: ENC[AES256_GCM,data:trZFOIIrxWXpj5+qL1fWGYWBKlnkU+SSqra+k1S7NW3LtSsmx1ZW/qRCSoiFIJeP+jWEQ32S95d53Kt2Fw0hta+7r/rMc9MOwmy4U/ML66p0bj7A57QZQ1sbi3fkEbCSRU3G0es215I8Db7zeyBXBSfqoukBekcs3GsESBDVhkQ=,iv:Z2CNOzLWB/DRPoekiwroU4aftEhm2hYzXx9Vzmz7EA0=,tag:0PsB6B2RHu6l0EZlaYkqKA==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.10.2