Modularize nixos and home-manager packages
This commit is contained in:
parent
b0979afa53
commit
51d2c2aa7c
32 changed files with 713 additions and 482 deletions
24
README.md
24
README.md
|
|
@ -10,3 +10,27 @@
|
||||||
|
|
||||||
My personal configuration for NixOS/home-manager.
|
My personal configuration for NixOS/home-manager.
|
||||||
While not intended to be used by someone else, feel free to do so anyway or use it as a template for your configuration if you wish to.
|
While not intended to be used by someone else, feel free to do so anyway or use it as a template for your configuration if you wish to.
|
||||||
|
|
||||||
|
# Modules
|
||||||
|
|
||||||
|
This configuration features several modules that can be used as preconfigured "recipies".
|
||||||
|
These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system.
|
||||||
|
For package lists, please check the individual modules, as the lists can be long.
|
||||||
|
|
||||||
|
- base packages : A list of system packages to be installed by default
|
||||||
|
- home packages : A list of home packages to be installed by default
|
||||||
|
- media packages : A list of media packages to be installed by default
|
||||||
|
- coding packages : A list of coding packages to be installed by default
|
||||||
|
- acpid : Enables the acpid daemon
|
||||||
|
- bluetooth : Configures/enables bluetooth and installs tools for bluetooth
|
||||||
|
- drives : A drive configuration module
|
||||||
|
- flatpak : Installs and enables declarative flatpak
|
||||||
|
- gnome_services : Gnome services for minimal enviroments -> Window managers etc
|
||||||
|
- gpu : GPU settings (AMD)
|
||||||
|
- greetd : Enables and configures the greetd/regreet login manager with Hyprland
|
||||||
|
- kde_connect : Enables KDE connect and opens its ports
|
||||||
|
- layout : Modules to configure keyboard layout system wide
|
||||||
|
- piper : Installs and enables piper alongside its daemon
|
||||||
|
- printing : Enables and configures printing services
|
||||||
|
- virtualbox : Enables and configures virtualbox
|
||||||
|
- xone : Installs the xone driver
|
||||||
|
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
||||||
{ pkgs, config, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# is wrapped in if statement to enable when needed
|
|
||||||
../programs/gaming/default.nix
|
|
||||||
../programs/themes/stylix.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
openssl
|
|
||||||
dbus
|
|
||||||
glib
|
|
||||||
gtk4
|
|
||||||
gtk3
|
|
||||||
libadwaita
|
|
||||||
gtk-layer-shell
|
|
||||||
gtk4-layer-shell
|
|
||||||
direnv
|
|
||||||
dconf
|
|
||||||
gsettings-desktop-schemas
|
|
||||||
gnome.nixos-gsettings-overrides
|
|
||||||
bibata-cursors
|
|
||||||
xorg.xkbutils
|
|
||||||
libxkbcommon
|
|
||||||
icon-library
|
|
||||||
adwaita-icon-theme
|
|
||||||
hicolor-icon-theme
|
|
||||||
morewaita-icon-theme
|
|
||||||
kdePackages.breeze-icons
|
|
||||||
seahorse
|
|
||||||
upower
|
|
||||||
(lib.mkIf config.conf.streamdeck.enable (callPackage
|
|
||||||
../override/streamdeck.nix
|
|
||||||
{ }))
|
|
||||||
];
|
|
||||||
|
|
||||||
gtk.iconCache.enable = false;
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
cantarell-fonts
|
|
||||||
];
|
|
||||||
|
|
||||||
nix.settings.experimental-features = "nix-command flakes";
|
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
|
|
||||||
services.upower.enable = true;
|
|
||||||
services.printing.enable = true;
|
|
||||||
services.dbus.enable = true;
|
|
||||||
services.dbus.packages = with pkgs; [
|
|
||||||
gnome2.GConf
|
|
||||||
];
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.fish.enable = true;
|
|
||||||
programs.fish.promptInit = ''
|
|
||||||
${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
|
|
||||||
'';
|
|
||||||
programs.nix-ld.enable = true;
|
|
||||||
programs.nix-ld.libraries = with pkgs; [
|
|
||||||
jdk
|
|
||||||
zlib
|
|
||||||
];
|
|
||||||
programs.dconf.enable = true;
|
|
||||||
programs.direnv = {
|
|
||||||
package = pkgs.direnv;
|
|
||||||
silent = false;
|
|
||||||
loadInNixShell = true;
|
|
||||||
direnvrcExtra = "";
|
|
||||||
nix-direnv = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.nix-direnv;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.ssh.startAgent = true;
|
|
||||||
programs.gnupg.agent.enable = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
services = {
|
|
||||||
# needed for GNOME services outside of GNOME Desktop
|
|
||||||
dbus.packages = with pkgs; [
|
|
||||||
gcr
|
|
||||||
gnome.gnome-settings-daemon
|
|
||||||
];
|
|
||||||
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
gvfs.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -11,7 +11,10 @@ in
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
# Enable networking
|
# Enable networking
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
networking.hostName = config.conf.hostname;
|
||||||
|
|
||||||
services.flatpak.enable = true;
|
services.flatpak.enable = true;
|
||||||
|
|
||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
|
|
@ -23,25 +26,14 @@ in
|
||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
|
|
||||||
# Configure keymap in X11
|
nixpkgs.hostPlatform = lib.mkDefault config.conf.system;
|
||||||
services.xserver = {
|
nix.settings.auto-optimise-store = true;
|
||||||
xkb.layout = "us";
|
|
||||||
xkb.variant = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
services.printing.enable = true;
|
|
||||||
services.printing.browsing = true;
|
|
||||||
services.printing.drivers = [ pkgs.hplip ];
|
|
||||||
services.printing.startWhenNeeded = true; # optional
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
# Enable sound with pipewire.
|
||||||
hardware.pulseaudio.enable = false;
|
hardware.pulseaudio.enable = false;
|
||||||
|
hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
|
services.fstrim.enable = lib.mkDefault true;
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -65,8 +57,6 @@ in
|
||||||
"resume=\"PARTLABEL=SWAP\""
|
"resume=\"PARTLABEL=SWAP\""
|
||||||
] ++ config.conf.boot_params;
|
] ++ config.conf.boot_params;
|
||||||
|
|
||||||
networking.hostName = config.conf.hostname;
|
|
||||||
|
|
||||||
# allows user change later on
|
# allows user change later on
|
||||||
users.mutableUsers = true;
|
users.mutableUsers = true;
|
||||||
users.users.${username} = {
|
users.users.${username} = {
|
||||||
|
|
@ -82,8 +72,6 @@ in
|
||||||
password = "firstlogin";
|
password = "firstlogin";
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "unstable";
|
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" =
|
||||||
{
|
{
|
||||||
device = "/dev/disk/by-label/ROOT";
|
device = "/dev/disk/by-label/ROOT";
|
||||||
|
|
@ -115,10 +103,4 @@ in
|
||||||
|
|
||||||
swapDevices =
|
swapDevices =
|
||||||
[{ device = "/dev/disk/by-label/SWAP"; }];
|
[{ device = "/dev/disk/by-label/SWAP"; }];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault config.conf.system;
|
|
||||||
hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
services.fstrim.enable = lib.mkDefault true;
|
|
||||||
nix.settings.auto-optimise-store = true;
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./big_g.nix
|
|
||||||
./login_manager.nix
|
|
||||||
./env.nix
|
./env.nix
|
||||||
./xkb_layout.nix
|
./xkb_layout.nix
|
||||||
./base_packages.nix
|
|
||||||
./common_hardware.nix
|
./common_hardware.nix
|
||||||
|
./theme.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
{ pkgs
|
{ pkgs, config, ... }: {
|
||||||
, config
|
|
||||||
, ...
|
|
||||||
}: {
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";
|
GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}";
|
||||||
NEOVIDE_MAXIMIZED = "0";
|
NEOVIDE_MAXIMIZED = "0";
|
||||||
|
|
@ -13,7 +10,7 @@
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
NIXOS_OZONE_WL = "1";
|
NIXOS_OZONE_WL = "1";
|
||||||
GOPATH = "$HOME/.go";
|
GOPATH = "$HOME/.go";
|
||||||
FLAKE = "home/${config.conf.username}/gits/dotFiles/nix";
|
FLAKE = config.conf.nix_path;
|
||||||
# don't ask... marksman somehow requires this
|
# don't ask... marksman somehow requires this
|
||||||
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1;
|
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{ options, ... }: options.extra.extraHardwareConfig
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
{ lib
|
|
||||||
, config
|
|
||||||
, pkgs
|
|
||||||
, inputs
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
username = config.conf.username;
|
|
||||||
session = {
|
|
||||||
command = "${lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland} --config /etc/greetd/hyprgreet.conf";
|
|
||||||
user = username;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.xserver.displayManager.session = [
|
|
||||||
{
|
|
||||||
manage = "desktop";
|
|
||||||
name = "Hyprland";
|
|
||||||
start = ''
|
|
||||||
${lib.getExe pkgs.hyprland} & waitPID=$!
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# greetd display manager
|
|
||||||
programs.hyprland.enable = true;
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
terminal.vt = 1;
|
|
||||||
default_session = session;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.etc."greetd/environments".text = ''
|
|
||||||
Hyprland
|
|
||||||
'';
|
|
||||||
|
|
||||||
# should technically be the same, but this is configured instead in order to provide a decent out of the box login experience.
|
|
||||||
environment.etc."greetd/hyprgreet.conf".text = ''
|
|
||||||
exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
|
||||||
|
|
||||||
monitor=${config.conf.login_manager.monitor},${config.conf.login_manager.resolution},0x0,${config.conf.login_manager.scale}
|
|
||||||
monitor=_,disable
|
|
||||||
|
|
||||||
input {
|
|
||||||
force_no_accel = true
|
|
||||||
}
|
|
||||||
|
|
||||||
misc {
|
|
||||||
disable_splash_rendering = false
|
|
||||||
disable_hyprland_logo = false
|
|
||||||
}
|
|
||||||
|
|
||||||
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit
|
|
||||||
'';
|
|
||||||
|
|
||||||
# unlock GPG keyring on login
|
|
||||||
security.pam.services.greetd.enableGnomeKeyring = true;
|
|
||||||
}
|
|
||||||
8
base/theme.nix
Normal file
8
base/theme.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{ lib, config, ... }: {
|
||||||
|
# imports = lib.mkIf config.conf.default_base_packages.enable [
|
||||||
|
imports = [
|
||||||
|
# is wrapped in if statement to enable when needed
|
||||||
|
../programs/gaming/default.nix
|
||||||
|
../programs/themes/stylix.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -19,5 +19,3 @@ in
|
||||||
symbolsFile = "${layout}";
|
symbolsFile = "${layout}";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,5 +22,8 @@
|
||||||
amdgpu.enable = true;
|
amdgpu.enable = true;
|
||||||
kde_connect.enable = true;
|
kde_connect.enable = true;
|
||||||
xone.enable = true;
|
xone.enable = true;
|
||||||
|
greetd = {
|
||||||
|
resolution = "3440x1440@180";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,5 +27,8 @@
|
||||||
kde_connect.enable = true;
|
kde_connect.enable = true;
|
||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
acpid.enable = true;
|
acpid.enable = true;
|
||||||
|
greetd = {
|
||||||
|
resolution = "3440x1440@180";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,6 @@ in
|
||||||
# config variables
|
# config variables
|
||||||
conf = {
|
conf = {
|
||||||
monitor = "DP-1";
|
monitor = "DP-1";
|
||||||
login_manager = {
|
|
||||||
resolution = "3440x1440@180";
|
|
||||||
};
|
|
||||||
gaming = {
|
gaming = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
@ -22,7 +19,7 @@ in
|
||||||
monitor = [
|
monitor = [
|
||||||
# default
|
# default
|
||||||
"DP-2,2560x1440@165,0x0,1"
|
"DP-2,2560x1440@165,0x0,1"
|
||||||
"DP-1,3440x1440@180,2560x0,1,vrr,1"
|
"DP-1,3440x1440@180,2560x0,1,vrr,0"
|
||||||
"HDMI-A-1,1920x1200@60,6000x0,1"
|
"HDMI-A-1,1920x1200@60,6000x0,1"
|
||||||
"HDMI-A-1,transform,1"
|
"HDMI-A-1,transform,1"
|
||||||
|
|
||||||
|
|
@ -84,9 +81,13 @@ in
|
||||||
kde_connect.enable = true;
|
kde_connect.enable = true;
|
||||||
xone.enable = true;
|
xone.enable = true;
|
||||||
amdgpu.enable = true;
|
amdgpu.enable = true;
|
||||||
|
piper.enable = true;
|
||||||
vapi = {
|
vapi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
rocm.enable = true;
|
rocm.enable = true;
|
||||||
};
|
};
|
||||||
|
greetd = {
|
||||||
|
resolution = "3440x1440@180";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@
|
||||||
monitor = lib.mkOption {
|
monitor = lib.mkOption {
|
||||||
default = [ ];
|
default = [ ];
|
||||||
example = [
|
example = [
|
||||||
"DP-1,3440x1440@180,2560x0,1,vrr,1"
|
"DP-1,3440x1440@180,2560x0,1,vrr,0"
|
||||||
];
|
];
|
||||||
type = with lib.types; listOf str;
|
type = with lib.types; listOf str;
|
||||||
description = ''
|
description = ''
|
||||||
|
|
@ -187,34 +187,32 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
login_manager = {
|
nix_path = lib.mkOption {
|
||||||
monitor = lib.mkOption {
|
default = "/home${config.conf.username}/gits/dotFiles";
|
||||||
default = "${config.conf.monitor}";
|
example = "yourpath";
|
||||||
example = "eDP-1";
|
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
main monitor for the login screen.
|
The default path for your configuration.
|
||||||
By default the main monitor is used.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
scale = lib.mkOption {
|
|
||||||
default = "${config.conf.scale}";
|
kb_layout = lib.mkOption {
|
||||||
example = "1.5";
|
default = "dashie";
|
||||||
|
example = "us";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
Scale used by the monitor in the login screen.
|
The layout used in services.
|
||||||
By default the scale of the main monitor is used.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
resolution = lib.mkOption {
|
|
||||||
default = "auto";
|
system_state_version = lib.mkOption {
|
||||||
example = "3440x1440@180";
|
default = "unstable";
|
||||||
|
example = "24.05";
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = ''
|
description = ''
|
||||||
Resolution/refreshrate used by the monitor in the login screen.
|
System state version
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
colorscheme = lib.mkOption {
|
colorscheme = lib.mkOption {
|
||||||
default = {
|
default = {
|
||||||
|
|
@ -251,9 +249,15 @@
|
||||||
or a path to a custom yaml file.
|
or a path to a custom yaml file.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
conf.kernel = lib.mkIf (config.conf.gaming.enable && config.conf.gaming.kernel) pkgs.linuxPackages_xanmod_latest;
|
conf.kernel = lib.mkIf (config.conf.gaming.enable && config.conf.gaming.kernel) pkgs.linuxPackages_xanmod_latest;
|
||||||
};
|
} // (lib.optionalAttrs (options?system.stateVersion)
|
||||||
|
{
|
||||||
|
system.stateVersion = "unstable";
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
104
modules/programs/base_packages.nix
Normal file
104
modules/programs/base_packages.nix
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
{ config, lib, options, pkgs, ... }: {
|
||||||
|
options.mods = {
|
||||||
|
default_base_packages = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables default system packages.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
additional_packages = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ pkgs.openssl ];
|
||||||
|
type = with lib.types; listOf packages;
|
||||||
|
description = ''
|
||||||
|
Additional packages to install.
|
||||||
|
Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
config =
|
||||||
|
(lib.optionalAttrs (options?environment.systemPackages)
|
||||||
|
{
|
||||||
|
environment.systemPackages = config.mods.default_base_packages.additional_packages;
|
||||||
|
} // (lib.mkIf config.mods.default_base_packages.enable (
|
||||||
|
lib.optionalAttrs
|
||||||
|
(options?environment.systemPackages)
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
openssl
|
||||||
|
dbus
|
||||||
|
glib
|
||||||
|
gtk4
|
||||||
|
gtk3
|
||||||
|
libadwaita
|
||||||
|
gtk-layer-shell
|
||||||
|
gtk4-layer-shell
|
||||||
|
direnv
|
||||||
|
dconf
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
gnome.nixos-gsettings-overrides
|
||||||
|
bibata-cursors
|
||||||
|
xorg.xkbutils
|
||||||
|
libxkbcommon
|
||||||
|
icon-library
|
||||||
|
adwaita-icon-theme
|
||||||
|
hicolor-icon-theme
|
||||||
|
morewaita-icon-theme
|
||||||
|
kdePackages.breeze-icons
|
||||||
|
seahorse
|
||||||
|
upower
|
||||||
|
(lib.mkIf config.conf.streamdeck.enable (callPackage
|
||||||
|
../../override/streamdeck.nix
|
||||||
|
{ }))
|
||||||
|
];
|
||||||
|
|
||||||
|
gtk.iconCache.enable = false;
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
cantarell-fonts
|
||||||
|
];
|
||||||
|
|
||||||
|
nix.settings.experimental-features = "nix-command flakes";
|
||||||
|
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
|
services.upower.enable = true;
|
||||||
|
services.dbus.enable = true;
|
||||||
|
services.dbus.packages = with pkgs; [
|
||||||
|
gnome2.GConf
|
||||||
|
];
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fish.enable = true;
|
||||||
|
programs.fish.promptInit = ''
|
||||||
|
${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
|
||||||
|
'';
|
||||||
|
programs.nix-ld.enable = true;
|
||||||
|
programs.nix-ld.libraries = with pkgs; [
|
||||||
|
jdk
|
||||||
|
zlib
|
||||||
|
];
|
||||||
|
programs.direnv = {
|
||||||
|
package = pkgs.direnv;
|
||||||
|
silent = false;
|
||||||
|
loadInNixShell = true;
|
||||||
|
direnvrcExtra = "";
|
||||||
|
nix-direnv = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.nix-direnv;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.ssh.startAgent = true;
|
||||||
|
programs.gnupg.agent.enable = true;
|
||||||
|
})));
|
||||||
|
}
|
||||||
134
modules/programs/coding.nix
Normal file
134
modules/programs/coding.nix
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
{ lib, config, pkgs, options, ... }: {
|
||||||
|
options.mods = {
|
||||||
|
coding = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables coding packages.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
dashvim = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables dashvim package.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.mods.coding.enable (lib.optionalAttrs (options?home.packages) {
|
||||||
|
programs.dashvim = lib.mkIf config.mods.coding.dashvim {
|
||||||
|
enable = true;
|
||||||
|
colorscheme = config.conf.colorscheme;
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
#basics
|
||||||
|
gitui
|
||||||
|
gcc
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
tree-sitter
|
||||||
|
unzip
|
||||||
|
pkg-config
|
||||||
|
sqlite
|
||||||
|
plantuml
|
||||||
|
d-spy
|
||||||
|
|
||||||
|
# cpp
|
||||||
|
bear
|
||||||
|
clang-tools
|
||||||
|
|
||||||
|
#sql
|
||||||
|
nodePackages.sql-formatter
|
||||||
|
sqls
|
||||||
|
|
||||||
|
#assembly
|
||||||
|
asm-lsp
|
||||||
|
|
||||||
|
#yaml
|
||||||
|
yamlfmt
|
||||||
|
yamllint
|
||||||
|
yaml-language-server
|
||||||
|
|
||||||
|
#markdown
|
||||||
|
marksman
|
||||||
|
mdformat
|
||||||
|
|
||||||
|
#bash
|
||||||
|
bash-language-server
|
||||||
|
shfmt
|
||||||
|
|
||||||
|
#fsharp
|
||||||
|
fsharp
|
||||||
|
fsautocomplete
|
||||||
|
|
||||||
|
#haskell
|
||||||
|
haskellPackages.cabal-install
|
||||||
|
ghc
|
||||||
|
haskellPackages.haskell-language-server
|
||||||
|
|
||||||
|
#html
|
||||||
|
html-tidy
|
||||||
|
|
||||||
|
#json
|
||||||
|
jq
|
||||||
|
nodePackages.vscode-json-languageserver
|
||||||
|
|
||||||
|
#css
|
||||||
|
tailwindcss
|
||||||
|
tailwindcss-language-server
|
||||||
|
vscode-langservers-extracted
|
||||||
|
|
||||||
|
#editors
|
||||||
|
neovide
|
||||||
|
##fallback
|
||||||
|
vscodium
|
||||||
|
|
||||||
|
#rust
|
||||||
|
rustup
|
||||||
|
|
||||||
|
#python
|
||||||
|
python3
|
||||||
|
python312Packages.python-lsp-server
|
||||||
|
python312Packages.python-lsp-ruff
|
||||||
|
python312Packages.python-lsp-black
|
||||||
|
|
||||||
|
#ts/js
|
||||||
|
nodejs_20
|
||||||
|
deno
|
||||||
|
typescript
|
||||||
|
nodePackages.typescript-language-server
|
||||||
|
nodePackages.prettier
|
||||||
|
|
||||||
|
#go
|
||||||
|
go
|
||||||
|
gopls
|
||||||
|
|
||||||
|
#typst
|
||||||
|
typst
|
||||||
|
tinymist
|
||||||
|
ltex-ls
|
||||||
|
|
||||||
|
#java
|
||||||
|
gradle
|
||||||
|
maven
|
||||||
|
jdt-language-server
|
||||||
|
temurin-jre-bin
|
||||||
|
|
||||||
|
#.!
|
||||||
|
dotnet-sdk_8
|
||||||
|
omnisharp-roslyn
|
||||||
|
csharpier
|
||||||
|
netcoredbg
|
||||||
|
|
||||||
|
#zig
|
||||||
|
zig
|
||||||
|
zls
|
||||||
|
];
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -7,5 +7,14 @@
|
||||||
./drives.nix
|
./drives.nix
|
||||||
./bluetooth.nix
|
./bluetooth.nix
|
||||||
./acpid.nix
|
./acpid.nix
|
||||||
|
./piper.nix
|
||||||
|
./greetd.nix
|
||||||
|
./gnome_services.nix
|
||||||
|
./printing.nix
|
||||||
|
./layout.nix
|
||||||
|
./base_packages.nix
|
||||||
|
./home_packages.nix
|
||||||
|
./media.nix
|
||||||
|
./flatpak.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
31
modules/programs/flatpak.nix
Normal file
31
modules/programs/flatpak.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
{ lib, config, options, pkgs, ... }: {
|
||||||
|
options.mods.flatpak = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables the flatpak package manager";
|
||||||
|
};
|
||||||
|
additional_packages = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ ];
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
description = "Flatpak packages";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf config.mods.flatpak.enable
|
||||||
|
(lib.optionalAttrs (options?services.flatpak.remote)
|
||||||
|
{
|
||||||
|
services.flatpak.remotes = lib.mkOptionDefault [{
|
||||||
|
name = "flathub-stable";
|
||||||
|
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
||||||
|
}];
|
||||||
|
services.flatpak.uninstallUnmanaged = true;
|
||||||
|
} // lib.optionalAttrs (options?services.flatpak.packages) {
|
||||||
|
services.flatpak.packages = [
|
||||||
|
# fallback if necessary, but generally avoided as nix is superior :)
|
||||||
|
# default flatseal installation since flatpak permissions are totally not a broken idea
|
||||||
|
"com.github.tchx84.Flatseal"
|
||||||
|
] ++ config.mods.flatpak.additional_packages;
|
||||||
|
});
|
||||||
|
}
|
||||||
28
modules/programs/gnome_services.nix
Normal file
28
modules/programs/gnome_services.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{ lib, config, options, pkgs, ... }: {
|
||||||
|
|
||||||
|
options.mods = {
|
||||||
|
gnome_services.enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
example = false;
|
||||||
|
description = ''
|
||||||
|
Enables gnome services: keyring and settings daemon.
|
||||||
|
Note: Do not use these for environments which ship these functionalities by default: GNOME, KDE
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.mods.gnome_services.enable (lib.optionalAttrs (options?services.gnome.gnome-keyring) {
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
services = {
|
||||||
|
# needed for GNOME services outside of GNOME Desktop
|
||||||
|
dbus.packages = with pkgs; [
|
||||||
|
gcr
|
||||||
|
gnome.gnome-settings-daemon
|
||||||
|
];
|
||||||
|
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
|
gvfs.enable = true;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
99
modules/programs/greetd.nix
Normal file
99
modules/programs/greetd.nix
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
{ config, lib, inputs, pkgs, options, ... }: {
|
||||||
|
options.mods = {
|
||||||
|
greetd = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables the greetd login manager.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
monitor = lib.mkOption {
|
||||||
|
default = "${config.conf.monitor}";
|
||||||
|
example = "eDP-1";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
main monitor for the login screen.
|
||||||
|
By default the main monitor is used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
scale = lib.mkOption {
|
||||||
|
default = "${config.conf.scale}";
|
||||||
|
example = "1.5";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
Scale used by the monitor in the login screen.
|
||||||
|
By default the scale of the main monitor is used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
resolution = lib.mkOption {
|
||||||
|
default = "auto";
|
||||||
|
example = "3440x1440@180";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
Resolution/refreshrate used by the monitor in the login screen.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config =
|
||||||
|
let
|
||||||
|
username = config.conf.username;
|
||||||
|
session = {
|
||||||
|
command = "${lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland} --config /etc/greetd/hyprgreet.conf";
|
||||||
|
user = username;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.mkIf config.mods.greetd.enable
|
||||||
|
(lib.optionalAttrs (options?environment) {
|
||||||
|
services.xserver.displayManager.session = [
|
||||||
|
{
|
||||||
|
manage = "desktop";
|
||||||
|
name = "Hyprland";
|
||||||
|
start = ''
|
||||||
|
${lib.getExe pkgs.hyprland} & waitPID=$!
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# greetd display manager
|
||||||
|
programs.hyprland.enable = true;
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
terminal.vt = 1;
|
||||||
|
default_session = session;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc."greetd/environments".text = ''
|
||||||
|
Hyprland
|
||||||
|
'';
|
||||||
|
|
||||||
|
# should technically be the same, but this is configured instead in order to provide a decent out of the box login experience.
|
||||||
|
environment.etc."greetd/hyprgreet.conf".text = ''
|
||||||
|
exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||||
|
|
||||||
|
monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale}
|
||||||
|
monitor=_,disable
|
||||||
|
|
||||||
|
input {
|
||||||
|
kb_layout = ${config.mods.xkb.layout}
|
||||||
|
kb_variant = ${config.mods.xkb.variant}
|
||||||
|
force_no_accel = true
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
disable_splash_rendering = false
|
||||||
|
disable_hyprland_logo = false
|
||||||
|
}
|
||||||
|
|
||||||
|
exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit
|
||||||
|
'';
|
||||||
|
|
||||||
|
# unlock GPG keyring on login
|
||||||
|
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
93
modules/programs/home_packages.nix
Normal file
93
modules/programs/home_packages.nix
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
{ lib, options, config, pkgs, inputs, ... }: {
|
||||||
|
options.mods.home_packages = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Home manager packages";
|
||||||
|
};
|
||||||
|
additional_packages = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ pkgs.flatpak ];
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
Additional Home manager packages.
|
||||||
|
Will be installed regardless of default home manager packages are installed.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config =
|
||||||
|
let
|
||||||
|
callPackage = lib.callPackageWith pkgs;
|
||||||
|
in
|
||||||
|
(lib.optionalAttrs (options?home.packages)
|
||||||
|
{
|
||||||
|
home.packages = config.mods.home_packages.additional_packages;
|
||||||
|
} // (lib.mkIf config.mods.home_packages.enable (lib.optionalAttrs (options?home.packages) {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
keepassxc
|
||||||
|
nheko
|
||||||
|
nextcloud-client
|
||||||
|
xournalpp
|
||||||
|
vesktop
|
||||||
|
kitty
|
||||||
|
fish
|
||||||
|
ripgrep
|
||||||
|
rm-improved
|
||||||
|
bat
|
||||||
|
fd
|
||||||
|
lsd
|
||||||
|
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
|
||||||
|
noto-fonts
|
||||||
|
flatpak
|
||||||
|
networkmanager
|
||||||
|
zoxide
|
||||||
|
fastfetch
|
||||||
|
gnome-keyring
|
||||||
|
dbus
|
||||||
|
killall
|
||||||
|
adw-gtk3
|
||||||
|
qt5ct
|
||||||
|
qt6ct
|
||||||
|
gnutar
|
||||||
|
fishPlugins.tide
|
||||||
|
nix-index
|
||||||
|
libnotify
|
||||||
|
zenith
|
||||||
|
nh
|
||||||
|
amberol
|
||||||
|
pulseaudio
|
||||||
|
playerctl
|
||||||
|
ncspot
|
||||||
|
poppler_utils
|
||||||
|
brave
|
||||||
|
greetd.regreet
|
||||||
|
sops
|
||||||
|
flake-checker
|
||||||
|
ffmpeg
|
||||||
|
system-config-printer
|
||||||
|
brightnessctl
|
||||||
|
(callPackage
|
||||||
|
../../override/cambalache.nix
|
||||||
|
{ })
|
||||||
|
];
|
||||||
|
|
||||||
|
#my own programs
|
||||||
|
programs.oxicalc.enable = true;
|
||||||
|
programs.oxinoti.enable = true;
|
||||||
|
programs.oxidash.enable = true;
|
||||||
|
programs.oxishut.enable = true;
|
||||||
|
programs.oxipaste.enable = true;
|
||||||
|
programs.hyprdock.enable = true;
|
||||||
|
programs.ReSet.enable = true;
|
||||||
|
programs.ReSet.config.plugins = [
|
||||||
|
inputs.reset-plugins.packages."x86_64-linux".monitor
|
||||||
|
inputs.reset-plugins.packages."x86_64-linux".keyboard
|
||||||
|
];
|
||||||
|
programs.ReSet.config.plugin_config = {
|
||||||
|
Keyboard = {
|
||||||
|
path = "/home/${config.conf.username}/.config/reset/keyboard.conf";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})));
|
||||||
|
}
|
||||||
23
modules/programs/layout.nix
Normal file
23
modules/programs/layout.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{ lib, options, config, ... }: {
|
||||||
|
options.mods.xkb = {
|
||||||
|
layout = lib.mkOption {
|
||||||
|
default = "dashie";
|
||||||
|
example = "us";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Your layout";
|
||||||
|
};
|
||||||
|
variant = lib.mkOption {
|
||||||
|
default = "";
|
||||||
|
example = "";
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Your variant";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = (lib.optionalAttrs (options?services.xserver) {
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver = {
|
||||||
|
xkb.layout = "${config.mods.xkb.layout}";
|
||||||
|
xkb.variant = "${config.mods.xkb.variant}";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
56
modules/programs/media.nix
Normal file
56
modules/programs/media.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
{ lib, options, config, pkgs, ... }: {
|
||||||
|
options.mods.media_packages = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Default media packages";
|
||||||
|
};
|
||||||
|
additional_packages = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ pkgs.flatpak ];
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
Additional media packages.
|
||||||
|
Will be installed regardless of default media packages are installed.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config =
|
||||||
|
(lib.optionalAttrs (options?home.packages)
|
||||||
|
{
|
||||||
|
home.packages = config.mods.media_packages.additional_packages;
|
||||||
|
} // (lib.mkIf config.mods.media_packages.enable (lib.optionalAttrs (options?home.packages) {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# base audio
|
||||||
|
pipewire
|
||||||
|
wireplumber
|
||||||
|
# audio control
|
||||||
|
playerctl
|
||||||
|
# images
|
||||||
|
imv
|
||||||
|
# videos
|
||||||
|
mpv
|
||||||
|
# pdf
|
||||||
|
zathura
|
||||||
|
evince
|
||||||
|
libreoffice-fresh
|
||||||
|
onlyoffice-bin
|
||||||
|
pdftk
|
||||||
|
pdfpc
|
||||||
|
polylux2pdfpc
|
||||||
|
# spotify
|
||||||
|
# video editing
|
||||||
|
kdenlive
|
||||||
|
# image creation
|
||||||
|
inkscape
|
||||||
|
gimp
|
||||||
|
krita
|
||||||
|
yt-dlp
|
||||||
|
];
|
||||||
|
programs.obs-studio.enable = true;
|
||||||
|
programs.obs-studio.plugins = with pkgs; [
|
||||||
|
obs-studio-plugins.obs-vaapi
|
||||||
|
];
|
||||||
|
})));
|
||||||
|
}
|
||||||
19
modules/programs/piper.nix
Normal file
19
modules/programs/piper.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{ lib, config, options, pkgs, ... }: {
|
||||||
|
options.mods.piper = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables the piper program and its daemon";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf config.mods.piper.enable
|
||||||
|
(lib.optionalAttrs (options?services.ratbagd)
|
||||||
|
{
|
||||||
|
services.ratbagd.enable = true;
|
||||||
|
} // lib.optionalAttrs (options?home.packages) {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
piper
|
||||||
|
];
|
||||||
|
});
|
||||||
|
}
|
||||||
24
modules/programs/printing.nix
Normal file
24
modules/programs/printing.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{ lib, config, options, pkgs, ... }: {
|
||||||
|
options.mods.printing = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enables the piper program and its daemon";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf config.mods.printing.enable
|
||||||
|
(lib.optionalAttrs (options?services.printing)
|
||||||
|
{
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
services.printing.enable = true;
|
||||||
|
services.printing.browsing = true;
|
||||||
|
services.printing.drivers = [ pkgs.hplip ];
|
||||||
|
services.printing.startWhenNeeded = true; # optional
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -1,116 +0,0 @@
|
||||||
{ pkgs
|
|
||||||
, lib
|
|
||||||
, config
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
programs.dashvim = {
|
|
||||||
enable = true;
|
|
||||||
colorscheme = config.conf.colorscheme;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
#basics
|
|
||||||
gitui
|
|
||||||
gcc
|
|
||||||
meson
|
|
||||||
ninja
|
|
||||||
tree-sitter
|
|
||||||
unzip
|
|
||||||
pkg-config
|
|
||||||
sqlite
|
|
||||||
plantuml
|
|
||||||
d-spy
|
|
||||||
|
|
||||||
# cpp
|
|
||||||
bear
|
|
||||||
clang-tools
|
|
||||||
|
|
||||||
#sql
|
|
||||||
nodePackages.sql-formatter
|
|
||||||
sqls
|
|
||||||
|
|
||||||
#assembly
|
|
||||||
asm-lsp
|
|
||||||
|
|
||||||
#yaml
|
|
||||||
yamlfmt
|
|
||||||
yamllint
|
|
||||||
yaml-language-server
|
|
||||||
|
|
||||||
#markdown
|
|
||||||
marksman
|
|
||||||
mdformat
|
|
||||||
|
|
||||||
#bash
|
|
||||||
bash-language-server
|
|
||||||
shfmt
|
|
||||||
|
|
||||||
#fsharp
|
|
||||||
fsharp
|
|
||||||
fsautocomplete
|
|
||||||
|
|
||||||
#haskell
|
|
||||||
haskellPackages.cabal-install
|
|
||||||
ghc
|
|
||||||
haskellPackages.haskell-language-server
|
|
||||||
|
|
||||||
#html
|
|
||||||
html-tidy
|
|
||||||
|
|
||||||
#json
|
|
||||||
jq
|
|
||||||
nodePackages.vscode-json-languageserver
|
|
||||||
|
|
||||||
#css
|
|
||||||
tailwindcss
|
|
||||||
tailwindcss-language-server
|
|
||||||
vscode-langservers-extracted
|
|
||||||
|
|
||||||
#editors
|
|
||||||
neovide
|
|
||||||
##fallback
|
|
||||||
vscodium
|
|
||||||
|
|
||||||
#rust
|
|
||||||
rustup
|
|
||||||
|
|
||||||
#python
|
|
||||||
python3
|
|
||||||
python312Packages.python-lsp-server
|
|
||||||
python312Packages.python-lsp-ruff
|
|
||||||
python312Packages.python-lsp-black
|
|
||||||
|
|
||||||
#ts/js
|
|
||||||
nodejs_20
|
|
||||||
deno
|
|
||||||
typescript
|
|
||||||
nodePackages.typescript-language-server
|
|
||||||
nodePackages.prettier
|
|
||||||
|
|
||||||
#go
|
|
||||||
go
|
|
||||||
gopls
|
|
||||||
|
|
||||||
#typst
|
|
||||||
typst
|
|
||||||
tinymist
|
|
||||||
ltex-ls
|
|
||||||
|
|
||||||
#java
|
|
||||||
gradle
|
|
||||||
maven
|
|
||||||
jdt-language-server
|
|
||||||
temurin-jre-bin
|
|
||||||
|
|
||||||
#.!
|
|
||||||
dotnet-sdk_8
|
|
||||||
omnisharp-roslyn
|
|
||||||
csharpier
|
|
||||||
netcoredbg
|
|
||||||
|
|
||||||
#zig
|
|
||||||
zig
|
|
||||||
zls
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +1,5 @@
|
||||||
{ pkgs
|
{ config, ... }:
|
||||||
, inputs
|
|
||||||
, lib
|
|
||||||
, config
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
let
|
||||||
callPackage = lib.callPackageWith (pkgs);
|
|
||||||
username = config.conf.username;
|
username = config.conf.username;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
@ -16,68 +10,6 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
home.packages = with pkgs; [
|
|
||||||
vesktop
|
|
||||||
kitty
|
|
||||||
fish
|
|
||||||
ripgrep
|
|
||||||
rm-improved
|
|
||||||
bat
|
|
||||||
fd
|
|
||||||
lsd
|
|
||||||
(pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
|
|
||||||
noto-fonts
|
|
||||||
flatpak
|
|
||||||
networkmanager
|
|
||||||
zoxide
|
|
||||||
fastfetch
|
|
||||||
pkgs.gnome-keyring
|
|
||||||
dbus
|
|
||||||
killall
|
|
||||||
adw-gtk3
|
|
||||||
qt5ct
|
|
||||||
qt6ct
|
|
||||||
gnutar
|
|
||||||
fishPlugins.tide
|
|
||||||
nix-index
|
|
||||||
libnotify
|
|
||||||
zenith
|
|
||||||
nh
|
|
||||||
amberol
|
|
||||||
pulseaudio
|
|
||||||
playerctl
|
|
||||||
ncspot
|
|
||||||
poppler_utils
|
|
||||||
brave
|
|
||||||
greetd.regreet
|
|
||||||
sops
|
|
||||||
flake-checker
|
|
||||||
ffmpeg
|
|
||||||
system-config-printer
|
|
||||||
brightnessctl
|
|
||||||
(callPackage
|
|
||||||
../override/cambalache.nix
|
|
||||||
{ })
|
|
||||||
];
|
|
||||||
|
|
||||||
#my own programs
|
|
||||||
programs.oxicalc.enable = true;
|
|
||||||
programs.oxinoti.enable = true;
|
|
||||||
programs.oxidash.enable = true;
|
|
||||||
programs.oxishut.enable = true;
|
|
||||||
programs.oxipaste.enable = true;
|
|
||||||
programs.hyprdock.enable = true;
|
|
||||||
programs.ReSet.enable = true;
|
|
||||||
programs.ReSet.config.plugins = [
|
|
||||||
inputs.reset-plugins.packages."x86_64-linux".monitor
|
|
||||||
inputs.reset-plugins.packages."x86_64-linux".keyboard
|
|
||||||
];
|
|
||||||
programs.ReSet.config.plugin_config = {
|
|
||||||
Keyboard = {
|
|
||||||
path = "/home/${username}/.config/reset/keyboard.conf";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
home.username = username;
|
home.username = username;
|
||||||
|
|
@ -98,15 +30,6 @@ in
|
||||||
[Context]
|
[Context]
|
||||||
filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0
|
filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0
|
||||||
'';
|
'';
|
||||||
#
|
|
||||||
# dconf.settings = {
|
|
||||||
# "org/gnome/desktop/interface" = {
|
|
||||||
# gtk-theme = "adw-gtk3";
|
|
||||||
# cursor-theme = "Bibata-Modern-Classic";
|
|
||||||
# cursor-size = 24;
|
|
||||||
# icon-theme = "MoreWaita";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
programs.nix-index =
|
programs.nix-index =
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -33,12 +33,8 @@ in
|
||||||
home-manager.users.${config.conf.username} = {
|
home-manager.users.${config.conf.username} = {
|
||||||
imports = [
|
imports = [
|
||||||
./hyprland/default.nix
|
./hyprland/default.nix
|
||||||
./flatpak.nix
|
|
||||||
./common.nix
|
./common.nix
|
||||||
./coding.nix
|
|
||||||
./xdg.nix
|
./xdg.nix
|
||||||
./media.nix
|
|
||||||
./utils.nix
|
|
||||||
./oxi/default.nix
|
./oxi/default.nix
|
||||||
./themes/default.nix
|
./themes/default.nix
|
||||||
./individual_configs/default.nix
|
./individual_configs/default.nix
|
||||||
|
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
{ lib, ... }: {
|
|
||||||
|
|
||||||
services.flatpak.remotes = lib.mkOptionDefault [{
|
|
||||||
name = "flathub-stable";
|
|
||||||
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
|
||||||
}];
|
|
||||||
services.flatpak.uninstallUnmanaged = true;
|
|
||||||
services.flatpak.packages = [
|
|
||||||
# fallback if necessary, but generally avoided as nix is superior :)
|
|
||||||
"com.github.tchx84.Flatseal"
|
|
||||||
"io.github.Foldex.AdwSteamGtk"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -151,7 +151,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
input = {
|
input = {
|
||||||
#kb_layout = "dashie";
|
kb_layout = "{config.mods.xkb.layout}";
|
||||||
|
kb_variant = "{config.mods.xkb.variant}";
|
||||||
repeat_delay = 200;
|
repeat_delay = 200;
|
||||||
force_no_accel = true;
|
force_no_accel = true;
|
||||||
touchpad = {
|
touchpad = {
|
||||||
|
|
@ -168,11 +169,14 @@
|
||||||
disable_hyprland_logo = true;
|
disable_hyprland_logo = true;
|
||||||
swallow_regex = "^(.*)(kitty)(.*)$";
|
swallow_regex = "^(.*)(kitty)(.*)$";
|
||||||
initial_workspace_tracking = 1;
|
initial_workspace_tracking = 1;
|
||||||
|
no_direct_scanout = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
# conversion seems to be borked right now, i want a smooth bibata :(
|
# conversion seems to be borked right now, i want a smooth bibata :(
|
||||||
enable_hyprcursor = false;
|
enable_hyprcursor = false;
|
||||||
|
no_hardware_cursors = true;
|
||||||
|
no_break_fs_vrr = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
gestures = {
|
gestures = {
|
||||||
|
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# base audio
|
|
||||||
pipewire
|
|
||||||
wireplumber
|
|
||||||
# audio control
|
|
||||||
playerctl
|
|
||||||
# images
|
|
||||||
imv
|
|
||||||
# videos
|
|
||||||
mpv
|
|
||||||
# pdf
|
|
||||||
zathura
|
|
||||||
evince
|
|
||||||
libreoffice-fresh
|
|
||||||
onlyoffice-bin
|
|
||||||
pdftk
|
|
||||||
pdfpc
|
|
||||||
polylux2pdfpc
|
|
||||||
# spotify
|
|
||||||
# video editing
|
|
||||||
kdenlive
|
|
||||||
# image creation
|
|
||||||
inkscape
|
|
||||||
gimp
|
|
||||||
krita
|
|
||||||
yt-dlp
|
|
||||||
];
|
|
||||||
programs.obs-studio.enable = true;
|
|
||||||
programs.obs-studio.plugins = with pkgs; [
|
|
||||||
obs-studio-plugins.obs-vaapi
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{ pkgs
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
keepassxc
|
|
||||||
nheko
|
|
||||||
nextcloud-client
|
|
||||||
xournalpp
|
|
||||||
];
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue