Compare commits

..

38 Commits

Author SHA1 Message Date
7da089daa3 [desktop] Add a waylandOnly option 2024-12-14 15:38:46 -08:00
8134d7cb33 [desktop] modrinth-nvidia for x11 only 2024-12-14 15:29:35 -08:00
24f1a64f3c [desktop] Add custom package modrinth-nvidia 2024-12-05 21:00:42 -08:00
19531074ca [desktop] Add modrinth-app 2024-12-05 19:59:46 -08:00
a30c130f21 [flake] update 2024-11-28 12:04:44 -08:00
e088ee2dc8 [desktop] Add protonup 2024-11-28 12:02:56 -08:00
366a7e2ea3 [plasma-manager] Dark theme 2024-11-28 12:02:37 -08:00
9116e44dfe [plasma-manager] Enable mouse acceleration 2024-11-14 14:43:16 -08:00
e3ef710bdb [default] Add some common utils 2024-11-12 08:01:49 -08:00
e1a804cfed [plasma-manager] Update comments 2024-11-10 10:29:17 -08:00
ec59936012 [defaults] Disable systemd emergency mode 2024-11-09 15:11:45 -08:00
844d17a855 [z790prors] Remove arch mount point
I had to boot into emergency mode and use systemd runtime masking:

```
systemd mask --runtime arch.mount
```

This allowed the system to boot so that I could remove this entry and
run nixos-rebuild
2024-11-09 15:09:04 -08:00
b19dc65c6d [emacs] Upgrade doom 2024-11-09 13:51:25 -08:00
6db2c78e0b [emacs] Disable auto nix lsp
Especially on underpowered devices, my monolithic nixos config grinds
everything to a halt. I'll just manually enable this when the context
makes sense.
2024-11-03 11:11:23 -08:00
475aafa33e [kde] Remove polonium
Polonium has been frustrating to use. I'm unsure how much of this I can
blame polonium vs kde vs plasma-manager vs nix, but
1. keyboard shortcuts aren't working
2. tiling keeps going in and out for various windows
3. seemingly kde startup time takes forever with it installed

The more I'm starting to understand KDE's native window management
functions, the more I'm thinking that's the right way to go. I'm going
to abandom polonium for now, perhaps with some future return.
2024-11-03 11:08:03 -08:00
09562f0af9 [flake] update 2024-11-03 11:01:07 -08:00
ae543d9628 Revert "[spotifyd] Update to lean in on pulseaudio"
This reverts commit b9097e91d5.
2024-11-03 09:50:08 -08:00
c7716d2bca Revert "[audio] Switch to pulseaudio"
This reverts commit abf8fe9ad2.
2024-11-03 09:49:09 -08:00
54cf339d52 [plasma-manager] Update desktop switching shortcuts 2024-11-03 09:41:04 -08:00
b9097e91d5 [spotifyd] Update to lean in on pulseaudio 2024-10-21 12:31:36 -07:00
abf8fe9ad2 [audio] Switch to pulseaudio
This is an attempt to get spotifyd running as a system user working
2024-10-21 12:31:36 -07:00
926b47f07f [flake] update 2024-10-21 08:43:05 -07:00
749ef988f1 [z790prors] Enable HDR in plasma 6.2 2024-10-21 08:42:46 -07:00
dfa91d327f [nix] Enable automatic gc 2024-10-21 08:42:26 -07:00
37c455d75e [plasma-manager] Some shortcut improvements 2024-10-21 08:42:02 -07:00
c0d7d934f3 [plasma-manager] Merge config from z790prors 2024-10-15 18:34:04 -07:00
cb91f69c49 [desktop] Add polonium 2024-10-15 18:25:12 -07:00
bc6378cb22 Setup kde wayland gamescope + nvidia settings 2024-10-15 18:25:12 -07:00
a13676311a [plasma-manager] Initial setup 2024-10-15 08:32:20 -07:00
ec57592715 [nixbook] Enable spotifyd 2024-10-15 08:17:07 -07:00
051c223eb7 [i3+sway] Add touchpad config 2024-10-10 17:15:26 -07:00
6030f6ea42 [z790prors] Enable BEES 2024-10-08 08:37:53 -07:00
df77fd5c74 [i3+sway] Fix terminal reference 2024-10-05 19:49:17 -07:00
458bcb4cdf [roles] Remove unused trusted public key 2024-10-05 19:12:49 -07:00
40e10bab34 [roles] Remove unused config option 2024-10-05 19:12:38 -07:00
3477a3480f [boxy] Fix wayland and user setup 2024-10-05 19:10:15 -07:00
d2ae7f8e11 [roles] Also make desktop opt-in 2024-10-05 19:09:58 -07:00
ff3a0a4738 [roles] No config change unless enabled 2024-10-05 18:17:42 -07:00
26 changed files with 408 additions and 354 deletions

47
flake.lock generated
View File

@@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728041527, "lastModified": 1732793095,
"narHash": "sha256-03liqiJtk9UP7YQHW4r8MduKCK242FQzud8iWvvlK+o=", "narHash": "sha256-6TrknJ8CpvSSF4gviQSeD+wyj3siRcMvdBKhOXkEMKU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "509dbf8d45606b618e9ec3bbe4e936b7c5bc6c1e", "rev": "2f7739d01080feb4549524e8f6927669b61c6ee3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -22,11 +22,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1727802920, "lastModified": 1732521221,
"narHash": "sha256-HP89HZOT0ReIbI7IJZJQoJgxvB2Tn28V6XS3MNKnfLs=", "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "27e30d177e57d912d614c88c622dcfdb2e6e6515", "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -36,19 +36,26 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable": { "plasma-manager": {
"inputs": {
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1725762081, "lastModified": 1732639391,
"narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=", "narHash": "sha256-kFtXjoCIqx9xe0ZryPXpqS6l/HVg71aNcuL8Y5e8+pI=",
"owner": "NixOS", "owner": "nix-community",
"repo": "nixpkgs", "repo": "plasma-manager",
"rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05", "rev": "06e3209d11797d9c741e25df06ab61048746bf93",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "nix-community",
"ref": "release-24.05", "repo": "plasma-manager",
"repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
@@ -56,6 +63,7 @@
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"plasma-manager": "plasma-manager",
"sops-nix": "sops-nix" "sops-nix": "sops-nix"
} }
}, },
@@ -63,15 +71,14 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ]
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1727423009, "lastModified": 1732575825,
"narHash": "sha256-+4B/dQm2EnORIk0k2wV3aHGaE0WXTBjColXjj7qWh10=", "narHash": "sha256-xtt95+c7OUMoqZf4OvA/7AemiH3aVuWHQbErYQoPwFk=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "127a96f49ddc377be6ba76964411bab11ae27803", "rev": "3433ea14fbd9e6671d0ff0dd45ed15ee4c156ffa",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -13,6 +13,12 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
}; };
outputs = { self, nixpkgs, ... } @ inputs: let outputs = { self, nixpkgs, ... } @ inputs: let
@@ -23,6 +29,7 @@
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.sharedModules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
} }
]; ];
in { in {
@@ -55,22 +62,12 @@
system = "x86_64-linux"; system = "x86_64-linux";
modules = baseModules ++ [ modules = baseModules ++ [
./machines/boxy/configuration.nix ./machines/boxy/configuration.nix
# inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
# { {
# home-manager.users.johno = import ./home/home-default.nix; home-manager.users.johno = import ./home/home-default.nix;
# home-manager.extraSpecialArgs.customPkgs = home-manager.extraSpecialArgs.customPkgs =
# nixpkgs.legacyPackages."${system}".callPackage ./packages {}; nixpkgs.legacyPackages."${system}".callPackage ./packages {};
# customPkgs = nixpkgs.legacyPackages."${system}".callPackage ./packages {}; }
# }
];
};
nixosConfigurations.k3s-nix = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./roles
inputs.sops-nix.nixosModules.sops
./machines/k3s-nix/configuration.nix
]; ];
}; };
}; };

View File

@@ -104,8 +104,9 @@
imports = [ imports = [
./modules/emacs ./modules/emacs
./modules/lutris
./modules/i3+sway ./modules/i3+sway
./modules/lutris
./modules/plasma-manager
]; ];
programs.bash.enable = true; programs.bash.enable = true;

View File

@@ -32,7 +32,7 @@ in {
source = fetchGit { source = fetchGit {
url = "https://github.com/doomemacs/doomemacs.git"; url = "https://github.com/doomemacs/doomemacs.git";
# When updating me, remember to run `doom sync` # When updating me, remember to run `doom sync`
rev = "5ad99220b86ae1bf421861dfad24492d768ac4d9"; rev = "f425f2ff3da584cfe2676f6b9cf1d81a690a75e5";
}; };
# We need to use recursive mode here or else doom fails to sync for # We need to use recursive mode here or else doom fails to sync for
# some reason related to the permissions on the synced path. I'm not # some reason related to the permissions on the synced path. I'm not

View File

@@ -149,7 +149,7 @@
;;lua ; one-based indices? one-based indices ;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c ;;nim ; python + lisp at the speed of c
(nix +tree-sitter +lsp) ; I hereby declare "nix geht mehr!" (nix +tree-sitter) ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel ;;ocaml ; an objective camel
(org +roam2) ; organize your plain life in plain text (org +roam2) ; organize your plain life in plain text
;;php ; perl's insecure younger brother ;;php ; perl's insecure younger brother

View File

@@ -6,13 +6,13 @@ let
cfg = config.home.i3_sway; cfg = config.home.i3_sway;
i3_cfg = config.xsession.windowManager.i3.config; i3_cfg = config.xsession.windowManager.i3.config;
shared_config = recursiveUpdate { shared_config = recursiveUpdate rec {
modifier = "Mod4"; modifier = "Mod4";
terminal = "kitty"; terminal = "kitty";
defaultWorkspace = "workspace number 1"; defaultWorkspace = "workspace number 1";
keybindings = { keybindings = {
"${shared_config.modifier}+Return" = "exec ${i3_cfg.terminal}"; "${shared_config.modifier}+Return" = "exec ${terminal}";
"${shared_config.modifier}+Shift+q" = "kill"; "${shared_config.modifier}+Shift+q" = "kill";
"${shared_config.modifier}+d" = "exec ${i3_cfg.menu}"; "${shared_config.modifier}+d" = "exec ${i3_cfg.menu}";
@@ -129,6 +129,13 @@ in {
"type:keyboard" = { "type:keyboard" = {
xkb_options = "caps:escape"; xkb_options = "caps:escape";
}; };
"type:touchpad" = {
tap = "enabled";
tap_button_map = "lrm";
drag = "enabled";
natural_scroll = "disabled";
dwt = "enabled";
};
}; };
}; };
in { in {

View File

@@ -0,0 +1,127 @@
{ config, lib, pkgs, ... }:
# The current KDE config can be output with the command:
# nix run github:nix-community/plasma-manager
#
# Plasma-manager options documentation
# https://nix-community.github.io/plasma-manager/options.xhtml
#
# TODO: (ambitious) Add Kmail support to plasma-manager
{
programs.plasma = {
enable = true;
overrideConfig = true;
hotkeys.commands."launch-konsole" = {
name = "Launch Konsole";
key = "Meta+Return";
command = "konsole";
};
shortcuts = {
kmix = {
"decrease_microphone_volume" = "Microphone Volume Down";
"decrease_volume" = "Volume Down";
"decrease_volume_small" = "Shift+Volume Down";
"increase_microphone_volume" = "Microphone Volume Up";
"increase_volume" = "Volume Up";
"increase_volume_small" = "Shift+Volume Up";
"mic_mute" = ["Microphone Mute" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Mute Microphone"];
"mute" = "Volume Mute";
};
mediacontrol = {
"mediavolumedown" = "none,,Media volume down";
"mediavolumeup" = "none,,Media volume up";
"nextmedia" = "Media Next";
"pausemedia" = "Media Pause";
"playmedia" = "none,,Play media playback";
"playpausemedia" = "Media Play";
"previousmedia" = "Media Previous";
"stopmedia" = "Media Stop";
};
ksmserver = {
"Lock Session" = ["Meta+Ctrl+Q" "Screensaver" "Screensaver,Lock Session"];
};
kwin = {
"Window Close" = "Meta+Shift+Q";
"Kill Window" = "Meta+Ctrl+Esc";
"Window Operations Menu" = "Alt+F3";
"Window Resize" = "Meta+R,,Resize Window";
"Overview" = "Meta+W";
"Grid View" = "Meta+G";
"Edit Tiles" = "Meta+T";
"Activate Window Demanding Attention" = "Meta+Ctrl+A";
"Show Desktop" = "Meta+D";
"Walk Through Windows" = "Alt+Tab";
"Walk Through Windows (Reverse)" = "Alt+Shift+Tab";
"Walk Through Windows of Current Application" = "Alt+`";
"Walk Through Windows of Current Application (Reverse)" = "Alt+~";
"Window Fullscreen" = "Meta+Shift+F,,Make Window Fullscreen";
"Window Quick Tile Bottom" = "Meta+Down";
"Window Quick Tile Left" = "Meta+Left";
"Window Quick Tile Right" = "Meta+Right";
"Window Quick Tile Top" = "Meta+Up";
"view_actual_size" = "Meta+0";
"view_zoom_in" = ["Meta++" "Meta+=,Meta++" "Meta+=,Zoom In"];
"view_zoom_out" = "Meta+-";
};
"org_kde_powerdevil"."Decrease Keyboard Brightness" = "Keyboard Brightness Down";
"org_kde_powerdevil"."Decrease Screen Brightness" = "Monitor Brightness Down";
"org_kde_powerdevil"."Decrease Screen Brightness Small" = "Shift+Monitor Brightness Down";
"org_kde_powerdevil"."Hibernate" = "Hibernate";
"org_kde_powerdevil"."Increase Keyboard Brightness" = "Keyboard Brightness Up";
"org_kde_powerdevil"."Increase Screen Brightness" = "Monitor Brightness Up";
"org_kde_powerdevil"."Increase Screen Brightness Small" = "Shift+Monitor Brightness Up";
"org_kde_powerdevil"."PowerDown" = "Power Down";
"org_kde_powerdevil"."PowerOff" = "Power Off";
"org_kde_powerdevil"."Sleep" = "Sleep";
"org_kde_powerdevil"."Toggle Keyboard Backlight" = "Keyboard Light On/Off";
"org_kde_powerdevil"."Turn Off Screen" = [ ];
"org_kde_powerdevil"."powerProfile" = ["Battery" "Meta+B,Battery" "Meta+B,Switch Power Profile"];
plasmashell = {
"activate application launcher" = ["Meta" "Alt+F1,Meta" "Alt+F1,Activate Application Launcher"];
"activate task manager entry 1" = "none,,";
"activate task manager entry 2" = "none,,";
"activate task manager entry 3" = "none,,";
"activate task manager entry 4" = "none,,";
"activate task manager entry 5" = "none,,";
"activate task manager entry 6" = "none,,";
"activate task manager entry 7" = "none,,";
"activate task manager entry 8" = "none,,";
"activate task manager entry 9" = "none,,";
"activate task manager entry 10" = "none,,";
"show activity switcher" = "none,,";
};
};
configFile = {
kwinrc.Desktops.Number = {
value = 10;
immutable = true;
};
kcminputrc.Libinput = {
AccelerationProfile = "adaptive";
PointerAcceleration = 0.5;
};
kcminputrc.Mouse = {
X11LibInputXAccelProfileFlat = false;
XLbInptAccelProfileFlat = false;
};
kdeglobals.KDE.LookAndFeelPackage = "org.kde.breezedark.desktop";
};
};
}

View File

@@ -17,8 +17,9 @@ with lib;
kodi = { kodi = {
enable = true; enable = true;
autologin = true; autologin = true;
wayland = false; wayland = true;
}; };
users.enable = true;
}; };
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
@@ -29,7 +30,7 @@ with lib;
hardware.graphics.enable = true; hardware.graphics.enable = true;
#services.displayManager.enable = mkForce false; services.displayManager.enable = mkForce false;
# This option defines the first version of NixOS you have installed on this particular machine, # This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.

View File

@@ -1,131 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
#boot.loader.systemd-boot.enable = true;
# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
#boot.loader.grub.device = "/dev/sda3";
boot.loader.grub.useOSProber = true;
boot.loader.grub.efiSupport = true;
boot.loader.grub.efiInstallAsRemovable = true;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
# Define on which hard drive you want to install Grub.
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
networking.hostName = "k3s-nix"; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
# time.timeZone = "Europe/Amsterdam";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
# services.xserver.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# hardware.pulseaudio.enable = true;
# OR
# services.pipewire = {
# enable = true;
# pulse.enable = true;
# };
# Enable touchpad support (enabled default in most desktopManager).
# services.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
# users.users.alice = {
# isNormalUser = true;
# extraGroups = [ "wheel" ]; # Enable sudo for the user.
# packages = with pkgs; [
# firefox
# tree
# ];
# };
# List packages installed in system profile. To search, run:
# $ nix search wget
# environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
# ];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "24.05"; # Did you read the comment?
}

View File

@@ -1,42 +0,0 @@
# 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, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/25d7ede1-7a1e-4fe8-beaa-cddb89253814";
fsType = "ext4";
};
fileSystems."/var" =
{ device = "/dev/disk/by-uuid/e1514fa7-b757-4c7c-8d7f-cbd49060eb15";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/1777-E690";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# 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.enp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View File

@@ -12,9 +12,13 @@
roles = { roles = {
audio.enable = true; audio.enable = true;
bluetooth.enable = true; bluetooth.enable = true;
desktop.enable = true; desktop = {
enable = true;
waylandOnly = true;
};
nfs-mounts.enable = true; nfs-mounts.enable = true;
printing.enable = true; printing.enable = true;
spotifyd.enable = true;
users = { users = {
enable = true; enable = true;
extraGroups = [ "video" ]; extraGroups = [ "video" ];

View File

@@ -15,6 +15,10 @@
"nvidia_uvm" "nvidia_uvm"
"nvidia_drm" "nvidia_drm"
]; ];
boot.kernelParams = [
"nvidia_drm.fbdev=1"
"nvidia_drm.modeset=1"
];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
@@ -29,6 +33,18 @@
open = false; open = false;
nvidiaSettings = true; nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.production; package = config.boot.kernelPackages.nvidiaPackages.production;
#package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
#version = "555.58";
#sha256_64bit = "sha256-bXvcXkg2kQZuCNKRZM5QoTaTjF4l2TtrsKUvyicj5ew=";
#sha256_aarch64 = lib.fakeSha256;
#openSha256 = lib.fakeSha256;
#settingsSha256 = "sha256-vWnrXlBCb3K5uVkDFmJDVq51wrCoqgPF03lSjZOuU8M=";
#persistencedSha256 = lib.fakeSha256;
#};
};
environment.sessionVariables = {
KWIN_DRM_ALLOW_NVIDIA_COLORSPACE = "1";
}; };
fileSystems."/" = fileSystems."/" =
@@ -41,13 +57,16 @@
fsType = "vfat"; fsType = "vfat";
}; };
fileSystems."/arch" =
{ device = "/dev/disk/by-label/endeavouros";
fsType = "btrfs";
};
swapDevices = [ ]; swapDevices = [ ];
services.beesd.filesystems = {
root = {
spec = "LABEL=nixos";
hashTableSizeMB = 4096;
verbosity = "crit";
};
};
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
nextcloudTalkDesktop = pkgs.callPackage ./nextcloud-talk-desktop {}; nextcloudTalkDesktop = pkgs.callPackage ./nextcloud-talk-desktop {};
modrinthNvidia = pkgs.callPackage ./modrinth-nvidia {};
} }

View File

@@ -0,0 +1,35 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation {
pname = "modrinth-nvidia";
version = "0.1.0";
src = null;
dontUnpack = true;
dontBuild = true;
dontConfigure = true;
nativeBuildInputs = [ pkgs.makeWrapper ];
installPhase = ''
mkdir -p $out/bin
# Copy the original binary
cp ${pkgs.modrinth-app}/bin/ModrinthApp $out/bin/modrinth-nvidia-real
chmod +x $out/bin/modrinth-nvidia-real
# Wrap the binary with makeWrapper, producing a new script at 'modrinth-nvidia'
makeWrapper $out/bin/modrinth-nvidia-real $out/bin/modrinth-nvidia \
--set WEBKIT_DISABLE_DMABUF_RENDERER 1 \
--set WEBKIT_DISABLE_COMPOSITING_MODE 1
mkdir -p $out/share/applications
cat > $out/share/applications/modrinth-nvidia.desktop <<EOF
[Desktop Entry]
Name=Modrinth (NVIDIA)
Comment=Launch Modrinth with environment variables tuned for NVIDIA systems
Exec=$out/bin/modrinth-nvidia
Icon=modrinth-app
Terminal=false
Type=Application
Categories=Game;
EOF
'';
}

View File

@@ -10,7 +10,7 @@ in
enable = mkEnableOption "Enable the audio role"; enable = mkEnableOption "Enable the audio role";
}; };
config = config = mkIf cfg.enable
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
paprefs paprefs

View File

@@ -10,7 +10,7 @@ in
enable = mkEnableOption "Enable the bluetooth role"; enable = mkEnableOption "Enable the bluetooth role";
}; };
config = config = mkIf cfg.enable
{ {
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true; hardware.bluetooth.powerOnBoot = true;

View File

@@ -1,10 +1,7 @@
{ config, lib, pkgs, ... }: { lib, pkgs, ... }:
with lib; with lib;
let
cfg = config.roles;
in
{ {
imports = [ imports = [
./audio ./audio
@@ -19,10 +16,6 @@ in
./virtualisation ./virtualisation
]; ];
options.roles = {
enable = mkEnableOption "Enable roles";
};
config = { config = {
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
@@ -38,16 +31,25 @@ in
}; };
time.timeZone = "America/Los_Angeles"; time.timeZone = "America/Los_Angeles";
# Don't go to emergency mode if we aren't able to mount filesystems.
# This is silly if you have multiple hard drives or partitions
# configured on a machine and then one goes away intentionally or
# unintentionally. If the system is already booting, let it continue
# to try and boot.
systemd.enableEmergencyMode = false;
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
services.openssh.enable = true; services.openssh.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
git git
pciutils
vim
usbutils
]; ];
nix = { nix = {
package = pkgs.nixFlakes; package = pkgs.nix;
distributedBuilds = true; distributedBuilds = true;
buildMachines = [{ buildMachines = [{
hostName = "z790prors.oglehome"; hostName = "z790prors.oglehome";
@@ -65,9 +67,12 @@ in
substituters = [ substituters = [
"https://hyprland.cachix.org" "https://hyprland.cachix.org"
]; ];
trusted-public-keys = [ };
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
]; gc = {
automatic = true;
randomizedDelaySec = "14m";
options = "--delete-older-than 10d";
}; };
}; };

View File

@@ -5,12 +5,17 @@ with lib;
let let
cfg = config.roles.desktop; cfg = config.roles.desktop;
customPackages = pkgs.callPackage ../../packages {};
basePackages = with pkgs; [ basePackages = with pkgs; [
brightnessctl brightnessctl
mangohud # Should probably get refactored with steam/gamescope out to a gaming role
modrinth-app
protonup-qt
]; ];
x11BasePackages = with pkgs; [ x11BasePackages = with pkgs; [
customPackages.modrinthNvidia
]; ];
x11OnlyPackages = with pkgs; [ x11OnlyPackages = with pkgs; [
@@ -35,6 +40,10 @@ in
type = types.bool; type = types.bool;
default = false; default = false;
}; };
waylandOnly = mkOption {
type = types.bool;
default = false;
};
}; };
config = mkIf cfg.enable config = mkIf cfg.enable
@@ -71,10 +80,41 @@ in
programs.kdeconnect.enable = true; programs.kdeconnect.enable = true;
programs.java.enable = true; programs.java.enable = true;
programs.gamemode = {
enable = true;
};
programs.gamescope = {
enable = true;
#capSysNice = true;
args = [
#"--adaptive-sync"
#"--nested-refresh 165"
#"--backend wayland"
"--hdr-enabled"
"--hdr-itm-enable"
"--hdr-debug-force-output"
"--mangoapp"
"--rt"
"--steam"
#"--xwayland-count 2"
];
env = {
#PROTON_DISABLE_NVAPI = "1";
MANGOHUD = "1";
#MANGOHUD_CONFIG = "cpu_temp gpu_temp ram vram";
};
};
programs.steam = { programs.steam = {
enable = true; enable = true;
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
localNetworkGameTransfers.openFirewall = true; localNetworkGameTransfers.openFirewall = true;
gamescopeSession = {
enable = true;
};
extraCompatPackages = with pkgs; [
proton-ge-bin
];
#package = pkgs.steam.override { #package = pkgs.steam.override {
#withJava = true; #withJava = true;
#withPrimus = true; #withPrimus = true;
@@ -93,11 +133,10 @@ in
environment.systemPackages = with pkgs; mkMerge [ environment.systemPackages = with pkgs; mkMerge [
basePackages basePackages
x11BasePackages (mkIf (!cfg.waylandOnly) x11BasePackages)
(mkIf cfg.x11Only x11OnlyPackages) (mkIf cfg.x11Only x11OnlyPackages)
# TODO: Do we need a "wayland only" mode?
(mkIf (!cfg.x11Only) waylandBasePackages) (mkIf (!cfg.x11Only) waylandBasePackages)
(mkIf (!cfg.x11Only) waylandOnlyPackages) (mkIf (cfg.waylandOnly) waylandOnlyPackages)
]; ];
}; };

View File

@@ -1,33 +0,0 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.roles.k3s;
in
{
options.roles.k3s = {
enable = mkEnableOption "Enable the k3s role";
};
config =
{
networking.firewall.allowedTCPPorts = [
6443 # k3s: required so that pods can reach the API server (running on port 6443 by default)
2379 # k3s, etcd clients: required if using a "High Availability Embedded etcd" configuration
2380 # k3s, etcd peers: required if using a "High Availability Embedded etcd" configuration
];
networking.firewall.allowedUDPPorts = [
8472 # k3s, flannel: required if using multi-node for inter-node networking
];
services.k3s.enable = true;
services.k3s.role = "server";
sops.secrets.k3s_cluster_token = {};
services.k3s.tokenFile = "/run/secrets/k3s_cluster_token";
services.k3s.serverAddr = "https://10.0.0.222:6443";
services.k3s.extraFlags = toString [
# "--debug" # Optionally add additional args to k3s
];
services.k3s.gracefulNodeShutdown.enable = true;
};
}

View File

@@ -25,39 +25,47 @@ in
steam-library steam-library
youtube youtube
]); ]);
in { in mkIf cfg.enable
users.extraUsers.kodi.isNormalUser = true; {
users.extraUsers.kodi.isNormalUser = true;
networking.firewall = { networking.firewall = {
allowedTCPPorts = [ 8080 ]; allowedTCPPorts = [ 8080 ];
allowedUDPPorts = [ 8080 ]; allowedUDPPorts = [ 8080 ];
};
services = if cfg.autologin then mkMerge [
(mkIf cfg.wayland {
cage = mkIf cfg.wayland {
user = "kodi";
program = "${kodiPkg}/bin/kodi-standalone";
enable = true;
};
xserver = {
enable = false;
autorun = false;
};
})
(mkIf (!cfg.wayland) {
xserver = {
enable = true;
desktopManager.kodi = {
enable = true;
package = kodiPkg;
};
displayManager.lightdm = {
enable = true;
greeter.enable = false;
};
};
displayManager = {
autoLogin.enable = true;
autoLogin.user = "kodi";
defaultSession = "kodi";
sessionData.autologinSession = "kodi";
};
})
] else {};
}; };
services = mkIf cfg.autologin {
cage = mkIf cfg.wayland {
user = "kodi";
program = "${kodiPkg}/bin/kodi-standalone";
enable = true;
};
xserver = mkIf (!cfg.wayland) {
enable = true;
desktopManager.kodi = {
enable = true;
package = kodiPkg;
};
displayManager.lightdm = {
enable = true;
greeter.enable = false;
};
displayManager.sddm.enable = mkForce false;
};
displayManager = mkIf (!cfg.wayland) {
autoLogin.enable = true;
autoLogin.user = "kodi";
defaultSession = "kodi";
sessionData.autologinSession = "kodi";
};
};
};
} }

View File

@@ -16,15 +16,16 @@ in
}; };
}; };
config = { config = mkIf cfg.enable
fileSystems."/media" = { {
device = "10.0.0.43:/media"; fileSystems."/media" = {
fsType = "nfs"; device = "10.0.0.43:/media";
options = [ fsType = "nfs";
"defaults" options = [
"nofail" "defaults"
"softreval" "nofail"
]; "softreval"
];
};
}; };
};
} }

View File

@@ -2,18 +2,22 @@
with lib; with lib;
let
cfg = config.roles.printing;
in
{ {
options.roles.printing = { options.roles.printing = {
enable = mkEnableOption "Enable default printing setup"; enable = mkEnableOption "Enable default printing setup";
}; };
config = { config = mkIf cfg.enable
services.printing.enable = true; {
services.printing.enable = true;
services.avahi = { services.avahi = {
enable = true; enable = true;
nssmdns4 = true; nssmdns4 = true;
openFirewall = true; openFirewall = true;
};
}; };
};
} }

View File

@@ -10,30 +10,31 @@ in
enable = mkEnableOption "Enable the spotifyd role"; enable = mkEnableOption "Enable the spotifyd role";
}; };
config = { config = mkIf cfg.enable
roles.audio.enable = true; {
roles.audio.enable = true;
services.spotifyd = { services.spotifyd = {
enable = true; enable = true;
settings = { settings = {
global = { global = {
use_mpris = false; use_mpris = false;
backend = "alsa"; backend = "alsa";
device = "sysdefault"; device = "sysdefault";
bitrate = 320; bitrate = 320;
cache_path = ""; cache_path = "";
zeroconf_port = 1234; zeroconf_port = 1234;
autoplay = false; autoplay = false;
};
}; };
}; };
};
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
1234 1234
57621 57621
]; ];
networking.firewall.allowedUDPPorts = [ networking.firewall.allowedUDPPorts = [
5353 5353
]; ];
}; };
} }

View File

@@ -21,7 +21,7 @@ in
kidsPackages = with pkgs; [ kidsPackages = with pkgs; [
firefox firefox
]; ];
in { in mkIf cfg.enable {
users.users.johno = { users.users.johno = {
isNormalUser = true; isNormalUser = true;
description = "John Ogle"; description = "John Ogle";

View File

@@ -2,13 +2,17 @@
with lib; with lib;
let
cfg = config.roles.virtualisation;
in
{ {
options.roles.virtualisation = { options.roles.virtualisation = {
enable = mkEnableOption "Enable virtualisation"; enable = mkEnableOption "Enable virtualisation";
}; };
config = { config = mkIf cfg.enable
virtualisation.libvirtd.enable = true; {
programs.virt-manager.enable = true; virtualisation.libvirtd.enable = true;
}; programs.virt-manager.enable = true;
};
} }

View File

@@ -8,7 +8,6 @@ example_number: ENC[AES256_GCM,data:jmLoVC+8YIlB2A==,iv:u9GztD/aE9UN5zWq3Am2nhYw
example_booleans: example_booleans:
- ENC[AES256_GCM,data:ZacILA==,iv:xo+7aFFQXzbJzKDY0mYTeFLf10AlnHkywDRAMHeprEM=,tag:F/OnJdqjrZP02sTLWLmnbg==,type:bool] - ENC[AES256_GCM,data:ZacILA==,iv:xo+7aFFQXzbJzKDY0mYTeFLf10AlnHkywDRAMHeprEM=,tag:F/OnJdqjrZP02sTLWLmnbg==,type:bool]
- ENC[AES256_GCM,data:NaFrvrs=,iv:kKDmGs9u/w5qrZ/379Jlx8AotUVADvH+eHwHCqykmkE=,tag:nD9TsmkXUm4ABaT1ABWmcg==,type:bool] - ENC[AES256_GCM,data:NaFrvrs=,iv:kKDmGs9u/w5qrZ/379Jlx8AotUVADvH+eHwHCqykmkE=,tag:nD9TsmkXUm4ABaT1ABWmcg==,type:bool]
k3s_cluster_token: ENC[AES256_GCM,data:JsfPOT6I1zViyfFkXchFSzCgsB0jRVj3ZxcHQ7GV7xMRfYWkquQcDYy5TWotWXl2YvUM8Fc2sbzHwsoq1kECS47AIbKO+Mz9Y7FbQnZHxTHDfbQTYmmkDGkHGDkBxWB+N1e1bdP5Dkuc3LlN,iv:PdOi6hOFXoaYVuBSuje0lYmUVCsW0f1lS5rL3quiDH8=,tag:3Tb+rLx7j7HE8BCDevfMxw==,type:str]
sops: sops:
kms: [] kms: []
gcp_kms: [] gcp_kms: []
@@ -42,8 +41,8 @@ sops:
aU1IQzdTMVhnbHhsNENwMG05dXhOU2MK8fEJea9sL5JLgltVlTI6mRDb+Tl83Iz7 aU1IQzdTMVhnbHhsNENwMG05dXhOU2MK8fEJea9sL5JLgltVlTI6mRDb+Tl83Iz7
4wPYvo68cn8vimXqSk45ldHRrNa3zhYai3CalQaGtDT3fkWGvSq0zQ== 4wPYvo68cn8vimXqSk45ldHRrNa3zhYai3CalQaGtDT3fkWGvSq0zQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-10-06T00:23:29Z" lastmodified: "2024-09-28T15:44:39Z"
mac: ENC[AES256_GCM,data:adzK7q2CJOcurpaZHmNDe8O9EqdCuwopmSS2ysFHDkJ8GtXdFQQBabwwlYz/zi0jIHBBUP4JIqnffg+rsM2R0fAvGMnIZvwbD9Yo6efiEK5kVgbwze6O9SaqOpgXr8R8zxsgm9gJWtjrAqwOdKTqb9tIN24cMKnhFr6UVXZen0U=,iv:MTTavZ9eq9ibWwBFiJ1OHRQswHXwLacc2PBMSztMZ+w=,tag:X8mz2hX1cTKdWPlEQTyzHA==,type:str] mac: ENC[AES256_GCM,data:YUi+AbS6DQTmrSyOXsbkZWfWaMyKGR8fYm/MHcxmqChi8hng+UWHBZjsLBe6ef/FLH3rnP6bhfwK8KYnVS6fHvHahoqIq/BHydTsqrclnSgRAGl8Lh0yuhwISNRvP1AuW5pd50sdQaS0uGOtzOCharI/pZ9H+cmt2SB5WOCdeLs=,iv:2nBG6it3tNSLSia8hGzCcesuK9QwzB9EzfjWegjQ2kw=,tag:RGGPAPw/rQKhWA2OqLjTJw==,type:str]
pgp: [] pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.9.0 version: 3.9.0