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
|
# Ignore build outputs from performing a nix-build or `nix build` command
|
||||||
result
|
result
|
||||||
result-*
|
result-*
|
||||||
|
|
||||||
|
# ---> Kate
|
||||||
|
# Ignore kate's swap files
|
||||||
|
*.kate-swp
|
||||||
|
|
|
||||||
24
flake.lock
generated
24
flake.lock
generated
|
|
@ -50,11 +50,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1687647343,
|
"lastModified": 1689134369,
|
||||||
"narHash": "sha256-1/o/i9KEFOBdlF9Cs04kBcqDFbYMt6W4SMqGa+QnnaI=",
|
"narHash": "sha256-0G9dutIvhS/WUr3Awcnqw71g8EVVvvkOhVDnDDbY4Fw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "0ee5ab611dc1fbb5180bd7d88d2aeb7841a4d179",
|
"rev": "e42fb59768f0305085abde0dd27ab5e0cc15420c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -70,11 +70,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1687163790,
|
"lastModified": 1687871164,
|
||||||
"narHash": "sha256-CmG/ZdswJrWM0CMgJiVyWfO6LqaI4SKEAx9IrnYDrpI=",
|
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "ac53777f52929bc82efcd2830bfc5aa60bcb4337",
|
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -101,11 +101,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1687379288,
|
"lastModified": 1689137672,
|
||||||
"narHash": "sha256-cSuwfiqYfeVyqzCRkU9AvLTysmEuSal8nh6CYr+xWog=",
|
"narHash": "sha256-QZoHxr0a73x6rQcAo5CiwYpysHbSnk7lAR8/16um7mM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ef0bc3976340dab9a4e087a0bcff661a8b2e87f3",
|
"rev": "98da3dd0de6660d4abed7bb74e748694bd803413",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -116,11 +116,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1686960236,
|
"lastModified": 1689098530,
|
||||||
"narHash": "sha256-AYCC9rXNLpUWzD9hm+askOfpliLEC9kwAo7ITJc4HIw=",
|
"narHash": "sha256-fxc/9f20wRyo/5ydkmZkX/Sh/ULa7RcT8h+cUv8p/44=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "04af42f3b31dba0ef742d254456dc4c14eedac86",
|
"rev": "f2406198ea0e4e37d4380d0e20336c575b8f8ef9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
25
flake.nix
25
flake.nix
|
|
@ -44,20 +44,12 @@ outputs = {nixpkgs, nixpkgs-unstable, agenix, home-manager, home-manager-unstabl
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
Archie = nixpkgs-unstable.lib.nixosSystem {
|
Archie = nixpkgs-unstable.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = import nixpkgs-unstable {
|
/*
|
||||||
system = "x86_64-linux";
|
I used to set up nixpkgs in the flake, but doing that made
|
||||||
config = { allowUnfree = true; }; # TODO: Find why this doesn't work
|
defining overlays in modules impossible (or at least I could
|
||||||
overlays =
|
not figure out how)
|
||||||
let
|
Also has nice side effect of making it easier to add new systems :3
|
||||||
discordOverlay = self: super: {
|
*/
|
||||||
discord = super.discord.override {
|
|
||||||
withOpenASAR = true;
|
|
||||||
withVencord = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
[ discordOverlay ];
|
|
||||||
};
|
|
||||||
modules = [
|
modules = [
|
||||||
# Needed for nix-index
|
# Needed for nix-index
|
||||||
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
||||||
|
|
@ -66,16 +58,13 @@ outputs = {nixpkgs, nixpkgs-unstable, agenix, home-manager, home-manager-unstabl
|
||||||
./roles/common
|
./roles/common
|
||||||
./roles/desktop
|
./roles/desktop
|
||||||
./roles/kde
|
./roles/kde
|
||||||
|
./roles/gaming
|
||||||
./machines/Archie
|
./machines/Archie
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
Everest = nixpkgs.lib.nixosSystem {
|
Everest = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = import nixpkgs {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
config = { allowUnfree = false; }; # TODO: Find why this doesn't work
|
|
||||||
};
|
|
||||||
modules = [
|
modules = [
|
||||||
# Needed for nix-index
|
# Needed for nix-index
|
||||||
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@
|
||||||
};
|
};
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest;
|
||||||
|
|
||||||
networking.hostName = "Archie"; # Define your hostname.
|
networking.hostName = "Archie"; # Define your hostname.
|
||||||
networking.networkmanager.enable = true; # Enable networking
|
networking.networkmanager.enable = true; # Enable networking
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
# Enabke support for the Xbox One wireless dongle
|
# Enabke support for the Xbox One wireless dongle
|
||||||
|
# Enable support for the Xbox One wireless dongle
|
||||||
hardware.xone.enable = true;
|
hardware.xone.enable = true;
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
|
|
@ -39,6 +40,19 @@
|
||||||
fsType = "vfat";
|
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 = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
imports = [
|
imports = [
|
||||||
./htop.nix
|
./htop.nix
|
||||||
./nix.nix
|
./nix.nix
|
||||||
|
./micro.nix
|
||||||
./nix-index.nix
|
./nix-index.nix
|
||||||
./command-not-found.nix
|
./command-not-found.nix
|
||||||
];
|
];
|
||||||
|
|
@ -11,7 +12,7 @@
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
speedtest-cli
|
speedtest-cli
|
||||||
bat
|
bat
|
||||||
micro
|
file
|
||||||
nvd
|
nvd
|
||||||
ncdu
|
ncdu
|
||||||
tree
|
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 = [
|
imports = [
|
||||||
./discord.nix
|
./services
|
||||||
./firefox.nix
|
./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, ... }:
|
{ 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
|
let
|
||||||
discordOverlay = self: super: {
|
discordOverlay = self: super: {
|
||||||
discord = super.discord.override {
|
discord = super.discord.override {
|
||||||
|
|
@ -12,7 +8,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
[ discordOverlay ]; */
|
{
|
||||||
|
nixpkgs.overlays = [ discordOverlay ];
|
||||||
users.users.toast.packages = with pkgs; [
|
users.users.toast.packages = with pkgs; [
|
||||||
discord
|
discord
|
||||||
];
|
];
|
||||||
|
|
@ -31,7 +31,28 @@
|
||||||
"Value" = true;
|
"Value" = true;
|
||||||
"Status" = "default";
|
"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" = {
|
"Permissions" = {
|
||||||
"Autoplay" = {
|
"Autoplay" = {
|
||||||
"Allow" = [ "https://www.youtube.com" ];
|
"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