Update kde-stuff with changes from main #5

Merged
Toast merged 27 commits from main into kde-stuff 2023-07-12 21:27:49 +02:00
18 changed files with 250 additions and 38 deletions

4
.gitignore vendored
View file

@ -2,3 +2,7 @@
# Ignore build outputs from performing a nix-build or `nix build` command
result
result-*
# ---> Kate
# Ignore kate's swap files
*.kate-swp

24
flake.lock generated
View file

@ -50,11 +50,11 @@
]
},
"locked": {
"lastModified": 1687647343,
"narHash": "sha256-1/o/i9KEFOBdlF9Cs04kBcqDFbYMt6W4SMqGa+QnnaI=",
"lastModified": 1689134369,
"narHash": "sha256-0G9dutIvhS/WUr3Awcnqw71g8EVVvvkOhVDnDDbY4Fw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0ee5ab611dc1fbb5180bd7d88d2aeb7841a4d179",
"rev": "e42fb59768f0305085abde0dd27ab5e0cc15420c",
"type": "github"
},
"original": {
@ -70,11 +70,11 @@
]
},
"locked": {
"lastModified": 1687163790,
"narHash": "sha256-CmG/ZdswJrWM0CMgJiVyWfO6LqaI4SKEAx9IrnYDrpI=",
"lastModified": 1687871164,
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ac53777f52929bc82efcd2830bfc5aa60bcb4337",
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
"type": "github"
},
"original": {
@ -101,11 +101,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1687379288,
"narHash": "sha256-cSuwfiqYfeVyqzCRkU9AvLTysmEuSal8nh6CYr+xWog=",
"lastModified": 1689137672,
"narHash": "sha256-QZoHxr0a73x6rQcAo5CiwYpysHbSnk7lAR8/16um7mM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ef0bc3976340dab9a4e087a0bcff661a8b2e87f3",
"rev": "98da3dd0de6660d4abed7bb74e748694bd803413",
"type": "github"
},
"original": {
@ -116,11 +116,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1686960236,
"narHash": "sha256-AYCC9rXNLpUWzD9hm+askOfpliLEC9kwAo7ITJc4HIw=",
"lastModified": 1689098530,
"narHash": "sha256-fxc/9f20wRyo/5ydkmZkX/Sh/ULa7RcT8h+cUv8p/44=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "04af42f3b31dba0ef742d254456dc4c14eedac86",
"rev": "f2406198ea0e4e37d4380d0e20336c575b8f8ef9",
"type": "github"
},
"original": {

View file

@ -43,20 +43,12 @@ outputs = {nixpkgs, nixpkgs-unstable, agenix, home-manager, home-manager-unstabl
nixosConfigurations = {
Archie = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux";
pkgs = import nixpkgs-unstable {
system = "x86_64-linux";
config = { allowUnfree = true; }; # TODO: Find why this doesn't work
overlays =
let
discordOverlay = self: super: {
discord = super.discord.override {
withOpenASAR = true;
withVencord = true;
};
};
in
[ discordOverlay ];
};
/*
I used to set up nixpkgs in the flake, but doing that made
defining overlays in modules impossible (or at least I could
not figure out how)
Also has nice side effect of making it easier to add new systems :3
*/
modules = [
# Needed for nix-index
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
@ -65,16 +57,13 @@ outputs = {nixpkgs, nixpkgs-unstable, agenix, home-manager, home-manager-unstabl
./roles/common
./roles/desktop
./roles/kde
./roles/gaming
./machines/Archie
];
};
Everest = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
pkgs = import nixpkgs {
system = "x86_64-linux";
config = { allowUnfree = false; }; # TODO: Find why this doesn't work
};
modules = [
# Needed for nix-index
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }

View file

@ -18,6 +18,8 @@
};
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest;
networking.hostName = "Archie"; # Define your hostname.
networking.networkmanager.enable = true; # Enable networking

View file

@ -9,6 +9,7 @@
];
# Enabke support for the Xbox One wireless dongle
# Enable support for the Xbox One wireless dongle
hardware.xone.enable = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
@ -39,6 +40,19 @@
fsType = "vfat";
};
/*
Mount the root subvolume of the SSD
This is helpful for getting things from
my old Arch install, as well as for running btdu
*/
fileSystems = {
"/mnt/ssd" = {
device = config.fileSystems."/".device;
fsType = config.fileSystems."/".fsType;
options = [ "subvolid=5" "ro" ];
};
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";

View file

@ -4,6 +4,7 @@
imports = [
./htop.nix
./nix.nix
./micro.nix
./nix-index.nix
./command-not-found.nix
];
@ -11,7 +12,7 @@
environment.systemPackages = with pkgs; [
speedtest-cli
bat
micro
file
nvd
ncdu
tree

View file

@ -0,0 +1,17 @@
{ config, pkgs, ... }:
{
home-manager = {
users.toast = { config, pkgs, ... }:
{
programs.micro = {
enable = true;
settings = {
clipboard = "terminal";
indentchar = "|";
softwrap = true;
};
};
};
};
}

4
roles/desktop/default.nix Executable file → Normal file
View file

@ -2,7 +2,7 @@
{
imports = [
./discord.nix
./firefox.nix
./services
./programs
];
}

View file

@ -0,0 +1,10 @@
{ ... }:
{
imports = [
./discord.nix
./firefox.nix
./micro.nix
./keepassxc.nix
];
}

View file

@ -1,9 +1,5 @@
{ config, pkgs, ... }:
{
# TODO: Find out why this does not do anything. If I put this
# on flake.nix it does work, so it's not completely wrong.
/* nixpkgs.overlays =
let
discordOverlay = self: super: {
discord = super.discord.override {
@ -12,7 +8,8 @@
};
};
in
[ discordOverlay ]; */
{
nixpkgs.overlays = [ discordOverlay ];
users.users.toast.packages = with pkgs; [
discord
];

View file

@ -31,7 +31,28 @@
"Value" = true;
"Status" = "default";
};
"dom.security.https_only_mode" = {
"Value" = true;
"Status" = "locked";
};
# Make firefox use the kde file picker
"widget.use-xdg-desktop-portal.file-picker" = {
"Value" = 1;
"Status" = "default";
};
/*
https://wiki.archlinux.org/title/Firefox#KDE_integration tells me to enable this,
but strangely enough doing so makes firefox ask to be set as the default browser
every time you start it up, so I'll disable it
*/
"widget.use-xdg-desktop-portal.mime-handler" = {
"Value" = 0;
"Status" = "default";
};
};
"PromptForDownloadLocation" = true;
# I use an external password manager, so the built in one just bothers me
"PasswordManagerEnabled" = false;
"Permissions" = {
"Autoplay" = {
"Allow" = [ "https://www.youtube.com" ];

View file

@ -0,0 +1,69 @@
{ config, pkgs, lib, ... }:
let
kpxcSettings = lib.generators.toINI {} {
# Not sure what changing this does, I'll leave it alone
General = {
ConfigVersion = 2;
MinimizeAfterUnlock = true;
};
GUI = {
ApplicationTheme = "classic";
MinimizeOnStartup = false;
MinimizeOnClose = true;
MinimizeToTray = true;
ShowTrayIcon = true;
# 0 is icons, 1 is text, 2 is text next to icons, 3 is text under icons, and 4 is follow style
ToolButtonStyle = 0; # Would choose 4 but it's too big for a small window
# monochrome-light, monochrome-dark or colorful
TrayIconAppearance = "monochrome-light";
};
SSHAgent.Enabled = true;
};
in
{
# I'm only using keepass on my user, so I'm installing it with home-manager
home-manager = {
/*
TODO: move home-manager settings into the common role
They are not keepass specific, so they really should
not be here. I'm too lazy to do it now tho :P
*/
backupFileExtension = "backup";
useGlobalPkgs = true;
extraSpecialArgs = { kpxcSettings = kpxcSettings; };
users.toast = { config, pkgs, kpxcSettings, ... }: {
home = {
stateVersion = "23.05";
packages = [ pkgs.keepassxc ];
# No module for KeePassXC config :(
file = {
".config/keepassxc/keepassxc.ini".text = kpxcSettings;
# For some reason the autostart .desktop is not the same as the regular one
".config/autostart/org.keepassxc.KeePassXC.desktop".text = ''
[Desktop Entry]
Name=KeePassXC
GenericName=Password Manager
Exec=keepassxc
TryExec=keepassxc
Icon=keepassxc
StartupWMClass=keepassxc
StartupNotify=true
Terminal=false
Type=Application
Version=1.0
Categories=Utility;Security;Qt;
MimeType=application/x-keepass2;
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=2
X-KDE-autostart-after=panel
X-LXQt-Need-Tray=true
'';
};
};
};
};
}

View file

@ -0,0 +1,21 @@
{ config, pkgs, lib, ... }:
{
home-manager = {
users.toast = { config, pkgs, ... }:
{
programs.micro = {
enable = true;
settings = {
# Use xclip/wl-clipboard for copying and pasting
clipboard = lib.mkForce "external";
};
};
/*
On a kde wayland session micro uses xsel or xclip instead of wl-clipboard
which doesn't work, so I only install wl-clipboard here to make micro use it
*/
home.packages = with pkgs; [ wl-clipboard ];
};
};
}

View file

@ -0,0 +1,7 @@
{ ... }:
{
imports = [
./ssh-agent.nix
];
}

View file

@ -0,0 +1,21 @@
{ config, pkgs, ... }:
{
programs.ssh.startAgent = true;
/*
Home assistant added an option that does this
https://github.com/nix-community/home-manager/commit/2d9210f25ed18d5d4e11e6b886de4027c0c51a94
but since I still need to fix home-manager's envvars not applying I'll stick to the NixOS one
*/
/*
TODO: fix SSH_AUTH_SOCK not being set in Plasma
Turns out the NixOS module also has issues :3
The env is set but only in bash, not in the DE, so
keepass can't pick it up. For now I'll just set it manually
*/
home-manager.users.toast.xdg.configFile."plasma-workspace/env/ssh-agent.sh".text = ''
if [[ -z "$SSH_AUTH_SOCK" ]]; then
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent
fi
'';
}

8
roles/gaming/default.nix Executable file
View file

@ -0,0 +1,8 @@
{ ... }:
{
imports = [
./steam.nix
./mangohud.nix
];
}

20
roles/gaming/mangohud.nix Normal file
View file

@ -0,0 +1,20 @@
{ config, ... }:
{
# This does the same as enableSessionWide does on the mangohud config
environment.sessionVariables = { MANGOHUD = "1"; MANGOHUD_DLSYM = "1"; };
home-manager.users.toast = { config, ... }:
{
programs.mangohud = {
enable = true;
# TODO: fix envvars set by home manager not applying for some reason
# This only works for Vulkan, openGL programs still need the mangohud wrapper
enableSessionWide = true;
settings = {
preset = 4;
no_display = true;
};
};
};
}

11
roles/gaming/steam.nix Normal file
View file

@ -0,0 +1,11 @@
{ config, pkgs, ... }:
{
programs.steam = {
enable = true;
# Doubt that I'll use it, but I'll enable it anyways
remotePlay.openFirewall = true;
};
# Some linux native games (rise of the tomb raider) use alsa for sound
services.pipewire.alsa.enable = true;
}