Compare commits
28 commits
31d1018267
...
fcd583a063
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcd583a063 | ||
| 7c41dfd9b3 | |||
| c7206aa602 | |||
| b7cbebdd05 | |||
| 1c35c527a5 | |||
| c690057add | |||
| 70baaaca0f | |||
| b202fe478d | |||
| ade2927e8b | |||
| bb6c9ea5d1 | |||
| ad8081bba3 | |||
| 79006c509b | |||
| 8975afd18d | |||
| 6df7d43e73 | |||
| e844d29eae | |||
| 8f7e8e3661 | |||
| 2d69565d91 | |||
| 4ba470cf5d | |||
| 757f60070f | |||
| e1d352d019 | |||
| 1167b979d9 | |||
| 52f70f8829 | |||
| f9e71005a4 | |||
| 7974ca628c | |||
| ded324e0f3 | |||
| 25ca3bb7cc | |||
| 6e6fa9c599 | |||
| 87f78bac52 |
18 changed files with 250 additions and 38 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -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
24
flake.lock
generated
|
|
@ -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": {
|
||||
|
|
|
|||
25
flake.nix
25
flake.nix
|
|
@ -44,20 +44,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}" ]; }
|
||||
|
|
@ -66,16 +58,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}" ]; }
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
17
roles/common/programs/micro.nix
Normal file
17
roles/common/programs/micro.nix
Normal 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
4
roles/desktop/default.nix
Executable file → Normal file
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
{
|
||||
imports = [
|
||||
./discord.nix
|
||||
./firefox.nix
|
||||
./services
|
||||
./programs
|
||||
];
|
||||
}
|
||||
|
|
|
|||
10
roles/desktop/programs/default.nix
Executable file
10
roles/desktop/programs/default.nix
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./discord.nix
|
||||
./firefox.nix
|
||||
./micro.nix
|
||||
./keepassxc.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -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
|
||||
];
|
||||
|
|
@ -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" ];
|
||||
69
roles/desktop/programs/keepassxc.nix
Normal file
69
roles/desktop/programs/keepassxc.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
21
roles/desktop/programs/micro.nix
Normal file
21
roles/desktop/programs/micro.nix
Normal 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 ];
|
||||
};
|
||||
};
|
||||
}
|
||||
7
roles/desktop/services/default.nix
Normal file
7
roles/desktop/services/default.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./ssh-agent.nix
|
||||
];
|
||||
}
|
||||
21
roles/desktop/services/ssh-agent.nix
Normal file
21
roles/desktop/services/ssh-agent.nix
Normal 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
8
roles/gaming/default.nix
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./steam.nix
|
||||
./mangohud.nix
|
||||
];
|
||||
}
|
||||
20
roles/gaming/mangohud.nix
Normal file
20
roles/gaming/mangohud.nix
Normal 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
11
roles/gaming/steam.nix
Normal 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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue