Moved modeules into shared

This commit is contained in:
Martin Berg Alstad 2025-04-14 23:30:50 +02:00
parent 3b6a3e5a66
commit 9611b8bb8d
Signed by: martials
GPG Key ID: 706F53DD087A91DE
51 changed files with 58 additions and 406 deletions

View File

@ -80,6 +80,7 @@
{ {
hostName = "desktop"; hostName = "desktop";
system = "x86_64-linux"; system = "x86_64-linux";
nvidia.enable = true;
} }
{ {
hostName = "thinkpad"; hostName = "thinkpad";
@ -88,7 +89,7 @@
{ {
hostName = "pi4"; hostName = "pi4";
system = "aarch64-linux"; system = "aarch64-linux";
enableWayland = false; wayland.enable = false;
} }
# TODO Homelab config # TODO Homelab config
]; ];
@ -114,8 +115,13 @@
password = "temp"; password = "temp";
}, },
version ? common.version, version ? common.version,
enableWayland ? true, wayland ? {
}: enable = true;
},
nvidia ? {
enable = false;
},
}@systemConfig: # TODO only pass in systemConfig
{ {
name = hostName; name = hostName;
@ -128,9 +134,7 @@
common common
theme theme
lib lib
hostName systemConfig
version
enableWayland
; ;
isDarwin = false; isDarwin = false;
}; };
@ -149,9 +153,7 @@
common common
theme theme
libHm libHm
hostName systemConfig
version
enableWayland
; ;
}; };
users.${user.name} = import ./hosts/${hostName}/home-manager; users.${user.name} = import ./hosts/${hostName}/home-manager;

View File

@ -1,17 +1,8 @@
{ lib, ... }:
{ {
imports = [ imports = [
./development (lib.custom.relativeToRoot "shared/modules")
./fonts.nix ./hardware-configuration.nix
./gaming
./gnome
./hardware
./locale.nix
./networking.nix
./nix-helper.nix
./hyprland
./sddm.nix
./security.nix
./shell.nix
./qt.nix
]; ];
} }

View File

@ -1,10 +1,6 @@
# 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, config,
lib, lib,
pkgs,
modulesPath, modulesPath,
... ...
}: }:

View File

@ -1,22 +0,0 @@
{ hostName, ... }:
{
networking = {
networkmanager.enable = true;
inherit hostName;
# wireless.enable = true; # Enables wireless support via wpa_supplicant.
};
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
programs.ssh.enableAskPassword = false;
services.tailscale.enable = true;
}

View File

@ -1,12 +0,0 @@
# Nix-Helper: github.com/viperML/nh
{
programs.nh = {
enable = true;
flake = ../.;
clean = {
enable = true;
dates = "weekly";
extraArgs = "--keep-since 30d";
};
};
}

View File

@ -1,19 +1,15 @@
{ pkgs, lib, ... }:
{ {
imports = [ imports = [
(lib.custom.relativeToRoot "shared/modules")
./battery.nix ./battery.nix
./bluetooth.nix ./bluetooth.nix
./development.nix ./hardware-configuration.nix
./fonts.nix
./gaming
./gnome
./hardware
./locale.nix
./networking.nix
./nix-helper.nix
./hyprland
./sddm.nix
./security.nix ./security.nix
./shell.nix ];
./qt.nix
environment.systemPackages = with pkgs; [
hyprsunset # Blue light filter
]; ];
} }

View File

@ -1,41 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
# IDEs
jetbrains.rust-rover
jetbrains.webstorm
jetbrains.rider
vscodium # TODO set up extensions
# Tools
dotnet-sdk_9
dotnet-aspnetcore_9
git
rustup
nodejs_22
pnpm
just
gcc # Required for C, Rust and others
# Language servers
nixd
nil
# Formatters
nixfmt-rfc-style
treefmt
nodePackages.prettier
shfmt
];
virtualisation.docker = {
enable = true;
storageDriver = "btrfs";
rootless = {
enable = true;
setSocketVariable = true;
};
};
services.ollama = {
enable = true;
};
}

View File

@ -1,19 +0,0 @@
{ pkgs, theme, ... }:
{
environment.systemPackages = with pkgs; [
font-awesome # Icons
];
fonts = {
fontconfig.enable = true;
packages = with pkgs; [
(nerdfonts.override { fonts = [ theme.nerdFont ]; })
jetbrains-mono
# The line below will replace the lines above in 25.05
# nerd-fonts.jetbrains-mono
font-awesome
];
};
}

View File

@ -1,12 +0,0 @@
{ pkgs, ... }:
{
imports = [
./steam.nix
];
environment.systemPackages = with pkgs; [
heroic
wine
];
}

View File

@ -1,8 +0,0 @@
{
programs.steam = {
enable = true;
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
};
}

View File

@ -1,28 +0,0 @@
{ pkgs, ... }:
{
imports = [
./nautilus.nix
];
environment.systemPackages = with pkgs; [
# adw-gtk3
glib
adwaita-icon-theme
gnomeExtensions.appindicator
# gnome-extension-manager
loupe
gnome-calculator
gnome-disk-utility
gnome-clocks
papers # PDFReader
];
programs.dconf.enable = true; # Required for some gnome applications
services = {
gnome.gnome-keyring.enable = true;
gvfs.enable = true; # Gnome Virtual File-system. Required for various things in nautilus
udev.packages = with pkgs; [ gnome-settings-daemon ];
};
}

View File

@ -1,15 +0,0 @@
{ pkgs, ... }:
let
common = import ../../common.nix;
in
{
environment.systemPackages = with pkgs; [
nautilus
ffmpegthumbnailer # Thumbnails
];
programs.nautilus-open-any-terminal = {
enable = true;
terminal = common.default.terminal;
};
}

View File

@ -1,33 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
wireplumber
playerctl # Interaction with audioplayers and browsers
pavucontrol # GUI
spotify
];
hardware.pulseaudio.enable = false; # Will be moved to services in 25.05
security.rtkit.enable = true; # Enable RealtimeKit for audio purposes
services = {
pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
# Uncomment the following line if you want to use JACK applications
# jack.enable = true;
};
# pulseaudio.enable = false; # TODO uncommenct at 25.05
};
}

View File

@ -1,8 +0,0 @@
{
imports = [
./audio.nix
./graphics
./hardware-configuration.nix
./keyboard.nix
];
}

View File

@ -1,6 +0,0 @@
{
imports = [ ];
# Enable OpenGL
hardware.graphics.enable = true;
}

View File

@ -1,11 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
via
];
hardware.keyboard.qmk.enable = true;
services.udev.packages = with pkgs; [ via ];
}

View File

@ -1,25 +0,0 @@
# System configurations for Hyprland. For home configs, see ./home-manager/hyprland
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
xdg-desktop-portal-hyprland
hyprpolkitagent # Auth deamon providing modals for password auth
hyprshot # Screenshots
hyprsunset # Blue light filter
unstable.hyprsysteminfo
unstable.hyprland-qtutils
unstable.hyprland-qt-support
];
programs = {
hyprland = {
enable = true;
xwayland.enable = true;
withUWSM = true;
};
hyprlock.enable = true; # Lock screen
};
services.hypridle.enable = true; # Lock when unused
}

View File

@ -1,37 +0,0 @@
# TODO move locale config for hyprland here
let
utf-8 = "UTF-8";
en = "en_GB.${utf-8}";
nb = "nb_NO.${utf-8}";
common = import ../common.nix;
in
{
# Configure console keymap
console.keyMap = "uk";
# Select internationalisation properties.
i18n = {
defaultLocale = en;
supportedLocales = [
"${en}/${utf-8}"
"${nb}/${utf-8}"
];
extraLocaleSettings = {
LC_ADDRESS = nb;
LC_IDENTIFICATION = nb;
LC_MEASUREMENT = nb;
LC_MONETARY = nb;
LC_NAME = nb;
LC_NUMERIC = nb;
LC_PAPER = nb;
LC_TELEPHONE = nb;
LC_TIME = nb;
};
};
# Configure keymaps
services.xserver.xkb = common.keymaps;
# Set your time zone.
time.timeZone = "Europe/Oslo";
}

View File

@ -1,17 +0,0 @@
{ pkgs, ... }:
{
environment = {
sessionVariables = {
QT_QPA_PLATFORMTHEME = "qt6ct";
QT_QPA_PLATFORM = "wayland"; # Enable Wayland for QT
};
systemPackages = with pkgs.kdePackages; [
qtwayland
qtsvg
qt6ct
];
};
qt.enable = true;
}

View File

@ -1,22 +0,0 @@
{ pkgs, theme, ... }:
let
flavor = theme.flavor;
in
{
environment.systemPackages = with pkgs; [
(catppuccin-sddm.override {
flavor = flavor;
font = theme.nerdFont;
fontSize = "9";
background = "${../wallpapers/catppuccin_high.png}";
loginBackground = true;
})
];
services.displayManager.sddm = {
enable = true;
theme = "catppuccin-${flavor}";
wayland.enable = true;
package = pkgs.kdePackages.sddm;
};
}

View File

@ -1,13 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
environment.systemPackages = with pkgs; [
gnupg
yubioath-flutter
];
programs.gnupg.agent.enable = true;
security = { security = {
pam = { pam = {
services = { services = {
@ -28,18 +21,7 @@
session include login session include login
session optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start session optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start
''; '';
login = { login.fprintAuth = false;
fprintAuth = false;
u2fAuth = false; # U2F and password
};
sudo.u2fAuth = true; # U2F or password
};
u2f = {
enable = true;
settings = {
cue = true; # Prompt: Please touch the device
interactive = false; # Prompt: Insert your U2F device, then press ENTER.
};
}; };
}; };
}; };
@ -60,9 +42,4 @@
# services.fprintd.package = pkgs.fprintd.override { # services.fprintd.package = pkgs.fprintd.override {
# libfprint = pkgs.libfprint-focaltech-2808-a658; # libfprint = pkgs.libfprint-focaltech-2808-a658;
# }; # };
services = {
pcscd.enable = true; # Required for Yubikey
udev.packages = with pkgs; [ yubikey-personalization ];
};
} }

View File

@ -1,19 +0,0 @@
# For Fish dotfiles, see: /home-manager/fish.nix
{ pkgs, ... }:
{
programs = {
bash = {
# Starts the OS using Bash, then starts fish if it's not running
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
fish.enable = true;
};
}

View File

@ -5,13 +5,13 @@ fmt:
treefmt --on-unmatched info treefmt --on-unmatched info
test *FLAGS: test *FLAGS:
just fmt
git add . git add .
just fmt
nh os test . {{FLAGS}} nh os test . {{FLAGS}}
switch *FLAGS: switch *FLAGS:
just fmt
git add . git add .
just fmt
nh os switch . {{FLAGS}} nh os switch . {{FLAGS}}
switch-now *FLAGS: switch-now *FLAGS:

View File

@ -24,6 +24,8 @@ rec {
username = "martin"; username = "martin";
root = ../.;
# This value determines the NixOS release from which the default # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions # settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave # on your system were taken. It's perfectly fine and recommended to leave

View File

@ -0,0 +1,17 @@
{
imports = [
./development
./fonts.nix
./gaming
./gnome
./hardware
./locale.nix
./networking.nix
./nix-helper.nix
./hyprland
./sddm.nix
./security.nix
./shell.nix
./qt.nix
];
}

View File

@ -2,7 +2,6 @@
imports = [ imports = [
./audio.nix ./audio.nix
./graphics ./graphics
./hardware-configuration.nix
./keyboard.nix ./keyboard.nix
]; ];
} }

View File

@ -1,6 +1,11 @@
{ pkgs, ... }:
{ {
pkgs,
lib,
systemConfig,
...
}:
lib.mkIf systemConfig.nvidia.enable {
boot.kernelParams = [ "nvidia.NVreg_PreserveVideoMemoryAllocations=1" ]; boot.kernelParams = [ "nvidia.NVreg_PreserveVideoMemoryAllocations=1" ];
# For hardware acceleration # For hardware acceleration

View File

@ -1,4 +1,4 @@
# System configurations for Hyprland. For home configs, see ./home-manager/hyprland # System configurations for Hyprland. For home configs, see ./shared/home-manager/hyprland
{ pkgs, ... }: { pkgs, ... }:
{ {

View File

@ -1,9 +1,9 @@
{ hostName, ... }: { systemConfig, ... }:
{ {
networking = { networking = {
networkmanager.enable = true; networkmanager.enable = true;
inherit hostName; hostName = systemConfig.hostName;
# wireless.enable = true; # Enables wireless support via wpa_supplicant. # wireless.enable = true; # Enables wireless support via wpa_supplicant.
}; };

View File

@ -1,8 +1,10 @@
# Nix-Helper: github.com/viperML/nh # Nix-Helper: github.com/viperML/nh
{ common, ... }:
{ {
programs.nh = { programs.nh = {
enable = true; enable = true;
flake = ../.; flake = common.root;
clean = { clean = {
enable = true; enable = true;
dates = "weekly"; dates = "weekly";